WebKit-https.git
4 months ago[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
Hironori.Fujii@sony.com [Tue, 2 Apr 2019 01:08:38 +0000 (01:08 +0000)]
[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
https://bugs.webkit.org/show_bug.cgi?id=196436

Reviewed by Darin Adler.

The parameter was only for WebCore/ForwardingHeaders which was
removed in Bug 182347.

* Source/cmake/WebKitMacros.cmake: Remove unused EXTRA_DIRECTORIES parameter.

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

4 months agoRemove extra newline characters (Follow-up fix to r243707)
aakash_jain@apple.com [Tue, 2 Apr 2019 00:26:08 +0000 (00:26 +0000)]
Remove extra newline characters (Follow-up fix to r243707)

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

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

4 months agoWeb Inspector: Debugger: modernize serialization of breakpoints and the maps that...
drousso@apple.com [Tue, 2 Apr 2019 00:20:11 +0000 (00:20 +0000)]
Web Inspector: Debugger: modernize serialization of breakpoints and the maps that hold them
https://bugs.webkit.org/show_bug.cgi?id=196230
<rdar://problem/49236485>

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.breakpointsForSourceCode):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):

* UserInterface/Models/Breakpoint.js:
(WI.Breakpoint):
(WI.Breakpoint.fromJSON): Added.
(WI.Breakpoint.prototype.toJSON):
(WI.Breakpoint.prototype.set resolved):
(WI.Breakpoint.prototype.recreateAction):
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype._isSpecial): Added.
(WI.Breakpoint.set resolved.isSpecialBreakpoint): Deleted.
(WI.Breakpoint.serializeOptions): Deleted.

* UserInterface/Models/BreakpointAction.js:
(WI.BreakpointAction):
(WI.BreakpointAction.fromJSON): Added.
(WI.BreakpointAction.prototype.toProtocol): Added.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpointsForSourceCode):

* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WI.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):

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

4 months ago[WebKit2] Introduce a public version of WKWebsitePolicies
wenson_hsieh@apple.com [Tue, 2 Apr 2019 00:01:05 +0000 (00:01 +0000)]
[WebKit2] Introduce a public version of WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=195989
<rdar://problem/47228232>

Reviewed by Tim Horton.

Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public
header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as
_WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences
and make _WKWebsitePolicies a wrapper around WKWebpagePreferences.

No change in behavior.

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):

Wrap API::WebsitePolicies with WKWebpagePreferences.

* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]):
* UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
* UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm.

Introduce WKWebpagePreferences.

(+[WKWebpagePreferences defaultPreferences]):
(-[WKWebpagePreferences dealloc]):
(-[WKWebpagePreferences init]):
(-[WKWebpagePreferences _setContentBlockersEnabled:]):
(-[WKWebpagePreferences _contentBlockersEnabled]):
(-[WKWebpagePreferences _setAllowedAutoplayQuirks:]):
(-[WKWebpagePreferences _allowedAutoplayQuirks]):
(-[WKWebpagePreferences _setAutoplayPolicy:]):
(-[WKWebpagePreferences _autoplayPolicy]):
(-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
(-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
(-[WKWebpagePreferences _setPopUpPolicy:]):
(-[WKWebpagePreferences _popUpPolicy]):
(-[WKWebpagePreferences _customHeaderFields]):
(-[WKWebpagePreferences _setCustomHeaderFields:]):
(-[WKWebpagePreferences _websiteDataStore]):
(-[WKWebpagePreferences _setWebsiteDataStore:]):
(-[WKWebpagePreferences _setCustomUserAgent:]):
(-[WKWebpagePreferences _customUserAgent]):
(-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[WKWebpagePreferences _setCustomNavigatorPlatform:]):
(-[WKWebpagePreferences _customNavigatorPlatform]):
(-[WKWebpagePreferences _apiObject]):
* UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
* UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h.

Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on
WKWebpagePreferences.

* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to
WKWebpagePreferences.

(-[_WKWebsitePolicies init]):
(-[_WKWebsitePolicies webpagePreferences]):
(-[_WKWebsitePolicies setContentBlockersEnabled:]):
(-[_WKWebsitePolicies contentBlockersEnabled]):
(-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
(-[_WKWebsitePolicies allowedAutoplayQuirks]):
(-[_WKWebsitePolicies setAutoplayPolicy:]):
(-[_WKWebsitePolicies autoplayPolicy]):
(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):
(-[_WKWebsitePolicies setPopUpPolicy:]):
(-[_WKWebsitePolicies popUpPolicy]):
(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):
(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):
(-[_WKWebsitePolicies setCustomUserAgent:]):
(-[_WKWebsitePolicies customUserAgent]):
(-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
(-[_WKWebsitePolicies customNavigatorPlatform]):
(-[_WKWebsitePolicies description]):
(-[_WKWebsitePolicies _apiObject]):
(-[_WKWebsitePolicies dealloc]): Deleted.
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* WebKit.xcodeproj/project.pbxproj:

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

4 months agoWeb Inspector: DOMDebugger: disabling a breakpoint for a specific event listener...
drousso@apple.com [Mon, 1 Apr 2019 23:38:45 +0000 (23:38 +0000)]
Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI
https://bugs.webkit.org/show_bug.cgi?id=196453
<rdar://problem/49489318>

Reviewed by Joseph Pecoraro.

Allow breakpoints for specific event listeners to be disabled, rather than immeditately
removing/deleting them when they are about to become disabled. This preserves the existing
functionality, but now allows for the tree element to stay in the UI in a disabled state.

* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype.setBreakpointForEventListener):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
(WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added.
(WI.DOMManager.prototype._updateEventBreakpoint): Added.
(WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):

* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNodeBreakpoints):

* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement.prototype.ondelete):

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

4 months agoWeb Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
drousso@apple.com [Mon, 1 Apr 2019 22:41:28 +0000 (22:41 +0000)]
Web Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
https://bugs.webkit.org/show_bug.cgi?id=196320
<rdar://problem/49356686>

Reviewed by Joseph Pecoraro.

It was previously possible that the timing of a recording being started and the preview
image being loaded would not always be in the same order.

Utilize the existing `View.prototype.layout` mechanics to ensure that updates are coalesced
and that the changes are always applied in a particular order.

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refreshPreview): Added.
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype.refresh): Deleted.
(WI.CanvasContentView.prototype._recordingStarted): Deleted.
(WI.CanvasContentView.prototype._recordingProgress): Deleted.
(WI.CanvasContentView.prototype._recordingStopped): Deleted.
(WI.CanvasContentView.prototype._shaderProgramAdded): Deleted.
(WI.CanvasContentView.prototype._shaderProgramRemoved): Deleted.

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._refreshPreviews):

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

4 months agoWeb Inspector: DOMDebugger: breakpoints for attribute modifications still fire when...
drousso@apple.com [Mon, 1 Apr 2019 22:41:24 +0000 (22:41 +0000)]
Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=196456
<rdar://problem/49489747>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

LayoutTests:

* inspector/dom-debugger/dom-breakpoints.html:
* inspector/dom-debugger/dom-breakpoints-expected.txt:

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

4 months agoWeb Inspector: Canvas: add compatibility support for WebMetal
drousso@apple.com [Mon, 1 Apr 2019 22:38:29 +0000 (22:38 +0000)]
Web Inspector: Canvas: add compatibility support for WebMetal
https://bugs.webkit.org/show_bug.cgi?id=196412
<rdar://problem/49439417>

Reviewed by Joseph Pecoraro.

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:

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

4 months agoWeb Inspector: "Copy as HTML" appears twice when showing a context menu for a logged...
drousso@apple.com [Mon, 1 Apr 2019 22:35:50 +0000 (22:35 +0000)]
Web Inspector: "Copy as HTML" appears twice when showing a context menu for a logged node
https://bugs.webkit.org/show_bug.cgi?id=196271
<rdar://problem/49290676>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WI.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):

* Localizations/en.lproj/localizedStrings.js:

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

4 months ago[ews-app] Use API_KEY to accept results data
aakash_jain@apple.com [Mon, 1 Apr 2019 21:57:13 +0000 (21:57 +0000)]
[ews-app] Use API_KEY to accept results data
https://bugs.webkit.org/show_bug.cgi?id=196461

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-app/ews/views/results.py:
(Results.post): Validate EWS_API_KEY before accepting any data.
* BuildSlaveSupport/ews-build/events.py:
(Events.sendData): Send EWS_API_KEY if available along with event data.

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

4 months agoWeb Inspector: Debugger: breakpoints don't populate in inspector2 on first load
drousso@apple.com [Mon, 1 Apr 2019 21:50:02 +0000 (21:50 +0000)]
Web Inspector: Debugger: breakpoints don't populate in inspector2 on first load
https://bugs.webkit.org/show_bug.cgi?id=196063
<rdar://problem/49097787>

Reviewed by Joseph Pecoraro.

In the case that a breakpoint becomes resolved after the resource has finished loaded, there
won't be an already existing `TreeElement` for the breakpoint to replace.

This can realistically only happen if the IndexedDB lookup is super slow, or the resource is
extremely fast (e.g. a `data` url).

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.DebuggerSidebarPanel.prototype._addDebuggerObject): Deleted.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):

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

4 months ago[Win10] Look into platform specific layout test failures
pvollan@apple.com [Mon, 1 Apr 2019 21:27:01 +0000 (21:27 +0000)]
[Win10] Look into platform specific layout test failures
https://bugs.webkit.org/show_bug.cgi?id=196463

Unreviewed test gardening.

* platform/win/TestExpectations:

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

4 months agoUnable to copy and paste a PDF from Notes into Mail compose body
wenson_hsieh@apple.com [Mon, 1 Apr 2019 21:21:24 +0000 (21:21 +0000)]
Unable to copy and paste a PDF from Notes into Mail compose body
https://bugs.webkit.org/show_bug.cgi?id=196442
<rdar://problem/48573098>

Reviewed by Tim Horton.

Source/WebCore:

Refactor some logic for inserting attachment elements upon paste or drop. Currently, we only prefer inserting
content as attachment elements if the items are annotated with UIPreferredPresentationStyleAttachment. However,
many data sources around the system (both first and third party) have not adopted this API, which makes it
difficult to determine whether a given item provider should be treated as a file or not. In this bug in
particular, no preferred presentation style is set, so we fail to handle the paste command by inserting an
attachment element.

However, most apps around the system that write file or attachment-like data to the pasteboard will at least
offer a suggested name for the file, in the form of -[NSItemProvider suggestedName]. To address this, instead of
relying solely on the preferredPresentationStyle, additionally take a suggested name as an indicator that the
item is probably a file.

In fact, Pasteboard::fileContentState already has similar logic to check for either a suggested file name or
explicitly specified presentation style. We pull this out into a separate helper method on PasteboardItemInfo,
and use it for both Pasteboard::fileContentState and prefersAttachmentRepresentation.

Tests:  WKAttachmentTestsIOS.InsertPastedContactAsAttachment
        WKAttachmentTestsIOS.InsertPastedMapItemAsAttachment

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::mimeTypeFromContentType):

Work around <rdar://problem/49478229> by using the "text/vcard" MIME type to handle "public.vcard". CoreServices
currently maps "public.vcard" to "text/directory" when using UTTypeCopyPreferredTagWithClass, despite the SPI
-[NSURLFileTypeMappings MIMETypeForExtension:] returning "text/vcard" for a ".vcf" file.

* platform/PasteboardItemInfo.h:
(WebCore::PasteboardItemInfo::canBeTreatedAsAttachmentOrFile const):

Add a helper method to determine whether the PasteboardItemInfo prefers to be represented as inline data, or an
attachment, or neither. This differs slightly from the existing value of preferredPresentationStyle in that we
consider having a suggested file name as a strong indicator that the item should be treated as an attachment,
even if the presentation style is unspecified.

* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::fileContentState):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

* platform/ios/PasteboardIOS.mm:
(WebCore::prefersAttachmentRepresentation):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

Source/WebKit:

Relax the -canPerformAction: logic in the case of pasting an attachment. Consider an NSItemProvider to possibly
paste as an attachment if either it has a preferred presentation style of UIPreferredPresentationStyleAttachment
or has a style of UIPreferredPresentationStyleUnspecified, but has a suggested file name.

This allows for the "Paste" action to be shown in the callout menu when copying and pasting a non-text file.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):

Tools:

Add new API tests to exercise pasting CNContact and MKMapItem-backed item providers. Additionally, adjust an
existing test that pastes a PDF file as an attachment to not require UIPreferredPresentationStyleAttachment
to be specified on the item providers.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::mapItemForTesting):
(TestWebKitAPI::contactItemForTesting):

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

4 months agoMake UIWKDocumentContext rects per-character instead of per-word
timothy_horton@apple.com [Mon, 1 Apr 2019 21:08:31 +0000 (21:08 +0000)]
Make UIWKDocumentContext rects per-character instead of per-word
https://bugs.webkit.org/show_bug.cgi?id=196459

Reviewed by Wenson Hsieh.

Source/WebCore:

No new tests; adjusted expected results of WebKit.DocumentEditingContext.

* editing/TextIterator.cpp:
(WebCore::CharacterIterator::CharacterIterator):
* editing/TextIterator.h:
(WebCore::CharacterIterator::atEnd const):
(WebCore::CharacterIterator::text const):
Add WEBCORE_EXPORT to some things.
Introduce a CharacterIterator constructor that takes Positions, like one that TextIterator has.
Move initializers to the header.

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestDocumentEditingContext):
Switch to CharacterIterator instead of TextIterator directly, to get
per-character rects as the API requests.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(TEST):
Adjust test results due to switching to per-character rects.

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

4 months agoUIProcess crash when a prewarmed process is terminated
cdumez@apple.com [Mon, 1 Apr 2019 20:52:36 +0000 (20:52 +0000)]
UIProcess crash when a prewarmed process is terminated
https://bugs.webkit.org/show_bug.cgi?id=196451
<rdar://problem/49245471>

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
true after r243384. For example, prewarmed WebContent processe do not get a data store
until they actually get used.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _prewarmedProcessIdentifier]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::networkProcessIdentifier):
(WebKit::WebProcessPool::prewarmedProcessIdentifier):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::isReleaseLoggingAllowed const):
* UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

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

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

4 months agoaccessibility/Mac/async-increment-decrement-action.html is crashing and blaming other...
sroberts@apple.com [Mon, 1 Apr 2019 20:46:23 +0000 (20:46 +0000)]
accessibility/Mac/async-increment-decrement-action.html is crashing and blaming other tests on bots
https://bugs.webkit.org/show_bug.cgi?id=187391

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations to skip crashing test

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

4 months agoUpdate event region when toggling pointer-events:none
antti@apple.com [Mon, 1 Apr 2019 19:53:00 +0000 (19:53 +0000)]
Update event region when toggling pointer-events:none
https://bugs.webkit.org/show_bug.cgi?id=195902
<rdar://problem/48988384>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/event-region-pointer-events.html

Normally paint invalidation requests compositing configuration update whenever anything that would
affect event region changes. However mutating 'pointer-events' property does not cause paint invalidation.

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

Request compositing update explicitly from the containing layer.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::invalidateEventRegion):
* rendering/RenderLayer.h:

LayoutTests:

* fast/scrolling/ios/event-region-pointer-events-expected.txt: Added.
* fast/scrolling/ios/event-region-pointer-events.html: Added.

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

4 months ago[GTK][WPE] Add more websitedatastore directories to web process sandbox
commit-queue@webkit.org [Mon, 1 Apr 2019 19:51:09 +0000 (19:51 +0000)]
[GTK][WPE] Add more websitedatastore directories to web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=196447

Patch by Patrick Griffis <pgriffis@igalia.com> on 2019-04-01
Reviewed by Michael Catanzaro.

* UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
(WebKit::bubblewrapSpawn):
* UIProcess/glib/WebProcessProxyGLib.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):

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

4 months ago[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
aakash_jain@apple.com [Mon, 1 Apr 2019 19:48:22 +0000 (19:48 +0000)]
[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
https://bugs.webkit.org/show_bug.cgi?id=196449

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble.get_os_details): Method to get OS and Xcode details.
(StatusBubble._build_bubble): Moved the timestamp logic to common method.
(StatusBubble.get_build_timestamp): Method to get the timestamp to display for the build.

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

4 months ago[ews-build] Remove force schedulers from OpenSource EWS Buildbot
aakash_jain@apple.com [Mon, 1 Apr 2019 19:45:56 +0000 (19:45 +0000)]
[ews-build] Remove force schedulers from OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=196444

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/loadConfig.py: Remove ForceSchedulers.

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

4 months agoSupport "noreferrer" for window.open()
cdumez@apple.com [Mon, 1 Apr 2019 19:05:17 +0000 (19:05 +0000)]
Support "noreferrer" for window.open()
https://bugs.webkit.org/show_bug.cgi?id=194533

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer-expected.txt:

Source/WebCore:

Support "noreferrer" for window.open() as per:
- https://github.com/whatwg/html/pull/4331

Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html
       http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html

* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/WindowFeatures.cpp:
(WebCore::setWindowFeature):
* page/WindowFeatures.h:

LayoutTests:

Add equivalent test to imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html
but which relies on localStorage instead of BroadcastChannel so that it works with WebKit.

* http/wpt/html/browsers/the-window-object/support/noreferrer-target-webkit.html: Added.
* http/wpt/html/browsers/the-window-object/window-open-noopener-webkit-expected.txt: Added.
* http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html: Added.

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

4 months agoWeb Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
joepeck@webkit.org [Mon, 1 Apr 2019 18:54:36 +0000 (18:54 +0000)]
Web Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
https://bugs.webkit.org/show_bug.cgi?id=196421
<rdar://problem/49125703>

Reviewed by Devin Rousso.

- Low - Keep Below 3% to continue to encourage idle pages stay below 3%
  Might want to reduce to 2.5 or 2 after fixing bug 196419.

- High - Make Above 30% instead of 50% to encourage long running interactivity to stay below 30%
  Depends on interaction, but sustained (1-2min) at 30%+ will certainly impact battery.

- Very High - Make above 100% instead of 150%
  CPU Usage spikes around page load and is quite often still under 100% despite many threads.
  Drop this a bit as we dropped High down.

Reduce the size of the Medium section, and increase the High section
Having 70% of the chart be "Medium" is just too much Medium, and
we've now made it more possible to be in the High range.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get mediumEnergyThreshold):
(WI.CPUTimelineView.prototype.get highEnergyThreshold):
(WI.CPUTimelineView.prototype.get lowEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get mediumEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get highEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype._layoutEnergyChart):

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

4 months agoSVGMatrix.IDL methods do not conform to the specs
commit-queue@webkit.org [Mon, 1 Apr 2019 18:46:44 +0000 (18:46 +0000)]
SVGMatrix.IDL methods do not conform to the specs
https://bugs.webkit.org/show_bug.cgi?id=196263

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-01
Reviewed by Simon Fraser.

Source/WebCore:

I think there was a misconception about these functions. The specs link
is: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.

Notice that the specs does not state that the SVGMethod methods should
raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
only. Notice setting the attribute 'a' for example may raise this
exception. Therefore, I think the specs wanted to make these operations
read-only. None of the methods should raise the exception
NO_MODIFICATION_ALLOWED_ERR.

In fact the SVG code was doing the right thing. For example SVGMatrix::scale()
was calling SVGMatrixValue::scale() which was making a copy of itself,
applying the scale on the copy and then returning the copy. When
SVGMatrix::scale() receives the copy of the SVGMatrixValue it creates and
returns a new SVGMatrix object.

* WebCore.xcodeproj/project.pbxproj:
* svg/SVGMatrix.h:
(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):
(WebCore::SVGMatrix::a): Deleted.
(WebCore::SVGMatrix::b): Deleted.
(WebCore::SVGMatrix::c): Deleted.
(WebCore::SVGMatrix::d): Deleted.
(WebCore::SVGMatrix::e): Deleted.
(WebCore::SVGMatrix::f): Deleted.
(WebCore::SVGMatrix::multiply): Deleted.
(WebCore::SVGMatrix::inverse): Deleted.
(WebCore::SVGMatrix::translate): Deleted.
(WebCore::SVGMatrix::scale): Deleted.
(WebCore::SVGMatrix::scaleNonUniform): Deleted.
(WebCore::SVGMatrix::rotate): Deleted.
(WebCore::SVGMatrix::rotateFromVector): Deleted.
(WebCore::SVGMatrix::flipX): Deleted.
(WebCore::SVGMatrix::flipY): Deleted.
(WebCore::SVGMatrix::skewX): Deleted.
(WebCore::SVGMatrix::skewY): Deleted.
(WebCore::SVGMatrix::SVGMatrix): Deleted.
* svg/SVGMatrix.idl:
* svg/SVGMatrixValue.h: Removed.
* svg/SVGTransform.cpp:
(WebCore::SVGTransform::matrix):
* svg/SVGTransformDistance.cpp:
(WebCore::SVGTransformDistance::addToSVGTransform const):
* svg/SVGTransformValue.h:
(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::matrix):
(WebCore::SVGTransformValue::svgMatrix): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.
* svg/properties/SVGMatrixTearOff.h:
* svg/properties/SVGPropertyTearOff.h:
(WebCore::SVGPropertyTearOff::propertyReference const):

LayoutTests:

* svg/dom/SVGMatrix-expected.txt:
* svg/dom/SVGMatrix.html:
Clean this test. Make it test the case when valid arguments are passed to
the methods of the SVGMatrix. Make sure the methods are read-only. All
of them should be making a copy of the matrix, applying the transform and
returning the copy.

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

4 months ago[JSC] JSRunLoopTimer::Manager should be small
ysuzuki@apple.com [Mon, 1 Apr 2019 18:33:45 +0000 (18:33 +0000)]
[JSC] JSRunLoopTimer::Manager should be small
https://bugs.webkit.org/show_bug.cgi?id=196425

Reviewed by Darin Adler.

Using very large Key or Value in HashMap potentially bloats memory since HashMap pre-allocates large size of
memory ((sizeof(Key) + sizeof(Value)) * N) for its backing storage's array. Using std::unique_ptr<> for JSRunLoopTimer's
PerVMData to keep HashMap's backing store size small.

* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):
* runtime/JSRunLoopTimer.h:

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

4 months agoPlumb through a ScrollType value that indicates whether a scroll was a user or progra...
simon.fraser@apple.com [Mon, 1 Apr 2019 18:33:04 +0000 (18:33 +0000)]
Plumb through a ScrollType value that indicates whether a scroll was a user or programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=196424

Reviewed by Zalan Bujtas.

In preparation for fixing webkit.org/b/195584, we need to know if an overflow scroll
is programmatic, so plumb through an enum value. The functions touched by this patch are
only ever called for programmatic scrolls.

* dom/Element.cpp:
(WebCore::Element::scrollTo):
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):
* platform/ScrollTypes.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):
* rendering/RenderBox.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):
* rendering/RenderLayer.h:
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::setScrollLeft):
(WebCore::RenderListBox::setScrollTop):
* rendering/RenderListBox.h:
* rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):
* rendering/RenderTextControlSingleLine.h:

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

4 months ago[PlayStation] Add initialization for JSC shell for PlayStation port
stephan.szabo@sony.com [Mon, 1 Apr 2019 18:25:11 +0000 (18:25 +0000)]
[PlayStation] Add initialization for JSC shell for PlayStation port
https://bugs.webkit.org/show_bug.cgi?id=195411

Reviewed by Ross Kirsling.

.:

Add functions for doing the automatic libc, floating point
initializations, signing of binaries and libraries and
wrapping of libc functions on PlayStation port.

* Source/cmake/OptionsPlayStation.cmake:

Source/JavaScriptCore:

Add ps options

* shell/PlatformPlayStation.cmake: Added.
* shell/playstation/Initializer.cpp: Added.
(initializer):

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

4 months ago[macOS] Crash when loading Twitter with autoplay video enabled.
pvollan@apple.com [Mon, 1 Apr 2019 18:23:56 +0000 (18:23 +0000)]
[macOS] Crash when loading Twitter with autoplay video enabled.
https://bugs.webkit.org/show_bug.cgi?id=196446
<rdar://problem/49060359>

Reviewed by Brent Fulgham.

This is caused by a syscall violation.

* WebProcess/com.apple.WebProcess.sb.in:

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

4 months agoAdd SPI to canonicalize NSURLs with WTF::URL
commit-queue@webkit.org [Mon, 1 Apr 2019 18:21:01 +0000 (18:21 +0000)]
Add SPI to canonicalize NSURLs with WTF::URL
https://bugs.webkit.org/show_bug.cgi?id=196415
<rdar://problem/44980271>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-01
Reviewed by Darin Adler.

Source/WebKitLegacy/mac:

* Misc/WebNSURLExtras.h:
* Misc/WebNSURLExtras.mm:
(-[NSURL _webkit_canonicalize_with_wtf]):
_webkit_canonicalize is old and changing it causes strange bugs like rdar://problem/5315926
Instead, make a new version that uses WTF::URL to canonicalize an NSURL.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitLegacy/mac/URLCanonicalization.mm: Added.
(TestWebKitAPI::TEST):

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

4 months agoStop trying to support building JSC with clang 3.8
mcatanzaro@igalia.com [Mon, 1 Apr 2019 17:27:53 +0000 (17:27 +0000)]
Stop trying to support building JSC with clang 3.8
https://bugs.webkit.org/show_bug.cgi?id=195947
<rdar://problem/49069219>

Reviewed by Darin Adler.

It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
don't know how much effort it would be to make JSC work again, and it's making the code
Source/JavaScriptCore:

worse. Remove my hacks to support clang 3.8 from JSC.

* bindings/ScriptValue.cpp:
(Inspector::jsToInspectorValue):
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):
* bytecode/InstanceOfAccessCase.cpp:
(JSC::InstanceOfAccessCase::clone const):
* bytecode/IntrinsicGetterAccessCase.cpp:
(JSC::IntrinsicGetterAccessCase::clone const):
* bytecode/ModuleNamespaceAccessCase.cpp:
(JSC::ModuleNamespaceAccessCase::clone const):
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::clone const):

Source/WTF:

worse. Remove my hacks to support clang 3.8 from WTF.

* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocate):
* wtf/text/StringConcatenate.h:
(WTF::tryMakeStringFromAdapters):

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

4 months agostorage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac...
sroberts@apple.com [Mon, 1 Apr 2019 17:21:46 +0000 (17:21 +0000)]
storage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=196445

Unreviewed test gardening

* platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky test

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

4 months ago[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attac...
wenson_hsieh@apple.com [Mon, 1 Apr 2019 16:45:25 +0000 (16:45 +0000)]
[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements
https://bugs.webkit.org/show_bug.cgi?id=196435
Work towards <rdar://problem/48573098>

Reviewed by Darin Adler.

Refactor some existing codepaths on iOS for inserting VCard files as attachment elements. Instead of using a
separate readVirtualContactFile method for converting a vcard file or data into an attachment element (possibly
accompanied by a link), use the existing readFilePaths WebContentReader method.

To handle links which may accompany the attachment element, add a helper method in PasteboardIOS that reads a
titled URL prior to inserting an attachment element, in the case of pasting or dropping a VCF.

This means we no longer need to handle attachment reading in readPasteboardWebContentDataForType, so we can
simply bail before reading "public.vcard" here and defer to reading other data types.

Covered by existing API tests in WKAttachmentTests and DragAndDropTestsIOS.

* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentReader::readVirtualContactFile): Deleted.
* platform/Pasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::readURLAlongsideAttachmentIfNecessary):
(WebCore::prefersAttachmentRepresentation):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

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

4 months agoTrying to scroll the compose pane on gmail.com scrolls the message list behind
antti@apple.com [Mon, 1 Apr 2019 16:38:03 +0000 (16:38 +0000)]
Trying to scroll the compose pane on gmail.com scrolls the message list behind
https://bugs.webkit.org/show_bug.cgi?id=196426
<rdar://problem/49402667>

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/scrolling/ios/event-region-visibility-hidden.html

We fail to gather event region from desdendants of non-overflowing elements with 'visibility:hidden'.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Skip the subtree walk only if the current region covers the box already.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):

Remove the (wrong) optimization, we bail out quickly on first renderer if possible so this is not high value.

LayoutTests:

* fast/scrolling/ios/event-region-visibility-hidden-expected.txt: Added.
* fast/scrolling/ios/event-region-visibility-hidden.html: Added.

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

4 months agoChange expectation for imported/w3c/web-platform-tests/resize-observer/eventloop...
commit-queue@webkit.org [Mon, 1 Apr 2019 13:36:16 +0000 (13:36 +0000)]
Change expectation for imported/w3c/web-platform-tests/resize-observer/eventloop.html.
https://bugs.webkit.org/show_bug.cgi?id=196422

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-04-01
Reviewed by Frédéric Wang.

At current implement, notifyResizeObservers is not synchronized to requestAnimationFrame, so the test would be flaky.

* TestExpectations: eventloop.html is flaky because it depend on the order of requestAnimationFrame and ResizeObserver timer.

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

4 months ago[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
commit-queue@webkit.org [Mon, 1 Apr 2019 13:02:39 +0000 (13:02 +0000)]
[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
https://bugs.webkit.org/show_bug.cgi?id=196297

Patch by Patrick Griffis <pgriffis@igalia.com> on 2019-04-01
Reviewed by Michael Catanzaro.

More information can be found here: https://www.exploit-db.com/exploits/46594

Note that this sandbox never made it into production so does not
warrant any CVE specific to WebKit.

* UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
(WebKit::setupSeccomp):

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

4 months agoBe less strict about closing blocks in attribute and functional pseudo-element selectors.
emilio@crisal.io [Mon, 1 Apr 2019 12:50:44 +0000 (12:50 +0000)]
Be less strict about closing blocks in attribute and functional pseudo-element selectors.
https://bugs.webkit.org/show_bug.cgi?id=142167

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

* web-platform-tests/dom/nodes/selectors.js: Add tests for ::slotted

Source/WebCore:

This was also an issue for, e.g., "::slotted(foo", turns out.

This matches Chromium, Firefox, and the spec:

https://drafts.csswg.org/css-syntax/#parse-error:

> Certain points in the parsing algorithm are said to be parse errors. The error
> handling for parse errors is well-defined: user agents must either act as
> described below when encountering such problems, or must abort processing at
> the first error that they encounter for which they do not wish to apply the
> rules described below.

https://drafts.csswg.org/css-syntax/#consume-simple-block:

> <EOF-token>
>   This is a parse error. Return the block.

Tests: web-platform-tests/dom/nodes/selectors.js (and probably others)

* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumeAttribute):
(WebCore::CSSSelectorParser::consumePseudo):

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

4 months agoBuild failure after r243644 in GTK Linux 64-bit stable builds
commit-queue@webkit.org [Mon, 1 Apr 2019 09:47:08 +0000 (09:47 +0000)]
Build failure after r243644 in GTK Linux 64-bit stable builds
https://bugs.webkit.org/show_bug.cgi?id=196440

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2019-04-01
Reviewed by Philippe Normand.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):

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

4 months ago[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
zandobersek@gmail.com [Mon, 1 Apr 2019 09:07:04 +0000 (09:07 +0000)]
[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
https://bugs.webkit.org/show_bug.cgi?id=196441

Reviewed by Carlos Garcia Campos.

Don't cache the wpe_view_backend object that might not exist yet at the
time of EventSenderProxy constructor invocation, but instead retrieve
that object whenever it's required for event dispatching. This should
avoid crashes in this constructor now that it's invoked before any
PlatformWindow has been set up (as changed in r243496).

* WebKitTestRunner/EventSenderProxy.h:
* WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:
(WTR::viewBackend):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::prepareAndDispatchTouchEvent):

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

4 months ago[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if...
ysuzuki@apple.com [Mon, 1 Apr 2019 06:51:11 +0000 (06:51 +0000)]
[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
https://bugs.webkit.org/show_bug.cgi?id=196160

Reviewed by Saam Barati.

Source/JavaScriptCore:

"realloc" can be effective in terms of peak/current memory footprint when realloc succeeds because,

1. It does not allocate additional memory while expanding a vector
2. It does not deallocate an old memory, just reusing the current memory by expanding, so that memory footprint is tight even before scavenging

We found that we can "realloc" large butterflies in certain conditions are met because,

1. If it goes to LargeAllocation, this memory region is never reused until GC sweeps it.
2. Butterflies are owned by owner JSObjects, so we know the lifetime of Butterflies.

This patch attempts to use "realloc" onto butterflies if,

1. Butterflies are allocated in LargeAllocation kind
2. Concurrent collector is not active
3. Butterflies do not have property storage

The condition (2) is required to avoid deallocating butterflies while the concurrent collector looks into it. The condition (3) is
also required to avoid deallocating butterflies while the concurrent compiler looks into it.

We also change LargeAllocation mechanism to using "malloc" and "free" instead of "posix_memalign". This allows us to use "realloc"
safely in all the platforms. Since LargeAllocation uses alignment to distinguish LargeAllocation and MarkedBlock, we manually adjust
16B alignment by allocating 8B more memory in "malloc".

Speedometer2 and JetStream2 are neutral. RAMification shows about 1% progression (even in some of JIT tests).

* heap/AlignedMemoryAllocator.h:
* heap/CompleteSubspace.cpp:
(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual):
* heap/CompleteSubspace.h:
* heap/FastMallocAlignedMemoryAllocator.cpp:
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GigacageAlignedMemoryAllocator.cpp:
(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):
* heap/GigacageAlignedMemoryAllocator.h:
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):
* heap/IsoAlignedMemoryAllocator.h:
* heap/LargeAllocation.cpp:
(JSC::isAlignedForLargeAllocation):
(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::tryReallocate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::destroy):
* heap/LargeAllocation.h:
(JSC::LargeAllocation::indexInSpace):
(JSC::LargeAllocation::setIndexInSpace):
(JSC::LargeAllocation::basePointer const):
* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::prepareForConservativeScan):
* heap/WeakSet.h:
(JSC::WeakSet::isTriviallyDestructible const):
* runtime/Butterfly.h:
* runtime/ButterflyInlines.h:
(JSC::Butterfly::reallocArrayRightIfPossible):
* runtime/JSObject.cpp:
(JSC::JSObject::ensureLengthSlow):

Source/WTF:

* wtf/FastMalloc.h:
(WTF::FastMalloc::tryRealloc):
* wtf/Gigacage.cpp:
(Gigacage::tryRealloc):
* wtf/Gigacage.h:

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

4 months agoScroll position gets reset when overflow:scroll is inside grid
rego@igalia.com [Mon, 1 Apr 2019 06:42:31 +0000 (06:42 +0000)]
Scroll position gets reset when overflow:scroll is inside grid
https://bugs.webkit.org/show_bug.cgi?id=196337
<rdar://problem/49385784>

Reviewed by Simon Fraser.

Fix scroll position when there are changes inside a grid item with "overflow: scroll".

Source/WebCore:

Test: fast/css-grid-layout/grid-item-content-scroll-position.html

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutBlock): Use beginUpdateScrollInfoAfterLayoutTransaction()
and endAndCommitUpdateScrollInfoAfterLayoutTransaction().

LayoutTests:

* fast/css-grid-layout/grid-item-content-scroll-position-expected.txt: Added.
* fast/css-grid-layout/grid-item-content-scroll-position.html: Added.

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

4 months agoReduce the size of Node::deref by eliminating an explicit parentNode check
rniwa@webkit.org [Mon, 1 Apr 2019 02:03:14 +0000 (02:03 +0000)]
Reduce the size of Node::deref by eliminating an explicit parentNode check
https://bugs.webkit.org/show_bug.cgi?id=195776

Reviewed by Darin Adler.

Address post-commit review comments.

* dom/Document.cpp:
(WebCore::Document::removedLastRef):
* dom/Node.cpp:
(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):
* dom/Node.h:
(WebCore::Node::deref):
(WebCore::Node::setParentNode):

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

4 months ago[Win][WebKit] MiniBrowser should support high DPI display
Hironori.Fujii@sony.com [Mon, 1 Apr 2019 01:38:09 +0000 (01:38 +0000)]
[Win][WebKit] MiniBrowser should support high DPI display
https://bugs.webkit.org/show_bug.cgi?id=196391

Reviewed by Alex Christensen.

* MiniBrowser/win/WebKitBrowserWindow.cpp:
(WebKitBrowserWindow::WebKitBrowserWindow): Call resetZoom to set the page zoom factor.
(WebKitBrowserWindow::resetZoom): Changed the default page zoom factor from 1 to the device scale factor.
* MiniBrowser/win/stdafx.h: Define WEBCORE_EXPORT.

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

4 months ago[iOS] Crash when changing inputmode for certain types of focusable elements
wenson_hsieh@apple.com [Sun, 31 Mar 2019 20:01:44 +0000 (20:01 +0000)]
[iOS] Crash when changing inputmode for certain types of focusable elements
https://bugs.webkit.org/show_bug.cgi?id=196431
<rdar://problem/49454962>

Reviewed by Tim Horton.

Source/WebKit:

The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
is only set for certain types of elements that require user input (e.g. text fields, editable content, select
menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
focused element doesn't fall into one of the aforementioned categories.

To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
element. See below for more details.

Test: fast/forms/change-inputmode-crash.html

* WebProcess/WebPage/WebPage.cpp:
(WebKit::isTextFormControlOrEditableContent):

Clean up some existing logic by introducing a helper method for determining whether an element should
propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
of checking against the tag name.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::focusedElementDidChangeInputMode):

LayoutTests:

Add a layout test that exercises the edge case; see WebKit ChangeLogs for more details.

* fast/forms/change-inputmode-crash-expected.txt: Added.
* fast/forms/change-inputmode-crash.html: Added.

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

4 months agoRemove more i386 specific configurations
weinig@apple.com [Sun, 31 Mar 2019 19:29:56 +0000 (19:29 +0000)]
Remove more i386 specific configurations
https://bugs.webkit.org/show_bug.cgi?id=196430

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

* Configurations/ToolExecutable.xcconfig:
ARC can be enabled unconditionally now.

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKit:

* Configurations/BaseTarget.xcconfig:
WK_HAVE_CORE_PREDICTION can now be enabled unconditionally.

* Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
ENABLE_WEB_AUTHN_macosx and ENABLE_WEB_RTC_macosx can now be enabled unconditionally on macOS.

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

4 months ago[iOS] WebKit should consult the navigation response policy delegate before previewing...
aestes@apple.com [Sun, 31 Mar 2019 17:37:45 +0000 (17:37 +0000)]
[iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
https://bugs.webkit.org/show_bug.cgi?id=196433
<rdar://problem/49293305>

Reviewed by Tim Horton.

Source/WebCore:

When ResourceLoader would encounter a response with a MIME type that QuickLook supports, the
response would be implicitly allowed and a QuickLook preview would be generated. After
generating, the client's navigation response policy delegate would be notified of the
preview response, but not the underlying response. Notably, the preview response has a URL
scheme of "x-apple-ql-id", does not include any underlying HTTP headers, and usually has a
MIME type of "text/html" or "application/pdf" rather than the underlying response MIME type.

To allow clients to make better navigation response policy decisions, this patch changes the
above behavior for WKWebView clients that have linked against a version of WebKit that
includes this change. Rather than notifying the client's navigation response policy delegate
of the preview response, we notify the client of the underlying response. Only if the client
responds with a policy of "allow" will the QuickLook preview response be loaded (without
another call to the navigation response policy delegate).

Non-WKWebView clients and clients that have linked against a version of WebKit that does not
include this change will retain the original behavior.

Covered by existing layout tests and new and existing API tests.

* WebCore.xcodeproj/project.pbxproj:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::shouldCreatePreviewLoaderForResponse const):
(WebCore::SubresourceLoader::didReceiveResponse):
* loader/ios/PreviewLoader.h:
* loader/ios/PreviewLoader.mm:
(-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
(-[WebPreviewLoader _loadPreviewIfNeeded]):
(-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
(-[WebPreviewLoader connectionDidFinishLoading:]):
(-[WebPreviewLoader connection:didFailWithError:]):
(WebCore::PreviewLoader::create):
(WebCore::PreviewLoader::didReceiveResponse):
(-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): Deleted.
(WebCore::PreviewLoader::shouldCreateForMIMEType): Deleted.
* page/Settings.yaml:
* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::canShowMIMEType):
* platform/network/ios/PreviewConverter.h:
* platform/network/ios/PreviewConverter.mm:
(WebCore::PreviewConverter::supportsMIMEType):

Source/WebKit:

Added WKWebViewConfiguration SPI for setting the QuickLook navigation response policy
decision behavior. The configuration setting defaults to YES for clients linked on or after
this WebKit change and NO otherwise.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):
* Shared/WebPreferences.yaml:
* Shared/ios/QuickLookDocumentData.cpp:
(WebKit::QuickLookDocumentData::isEmpty const):
* Shared/ios/QuickLookDocumentData.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldDecidePolicyBeforeLoadingQuickLookPreview]):
(-[WKWebViewConfiguration _setShouldDecidePolicyBeforeLoadingQuickLookPreview:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/Cocoa/VersionChecks.h:
* WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:
(WebKit::WebPreviewLoaderClient::didReceiveDataArray):

Source/WTF:

* wtf/NeverDestroyed.h:
(WTF::NeverDestroyed::operator->):
(WTF::NeverDestroyed::operator-> const):

Tools:

Enhanced API test coverage to include all navigation response policy decisions in both
linked-before and linked-on-or-after modes. Also added new expectations for all tests.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/ios/PreviewConverter.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebCore/ios/PreviewLoader.cpp.
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:
(readFile):
(-[QuickLookDelegate initWithExpectedFileURL:responsePolicy:]):
(-[QuickLookDelegate initWithExpectedFileURL:previewMIMEType:responsePolicy:]):
(-[QuickLookDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[QuickLookDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
(-[QuickLookDelegate webView:didFailProvisionalNavigation:withError:]):
(-[QuickLookDelegate _webViewWebProcessDidCrash:]):
(-[QuickLookDelegate _downloadDidStart:]):
(-[QuickLookDelegate _download:didReceiveResponse:]):
(-[QuickLookDelegate _download:didReceiveData:]):
(-[QuickLookDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[QuickLookDelegate _downloadDidFinish:]):
(-[QuickLookDelegate _download:didFailWithError:]):
(-[QuickLookDelegate _downloadDidCancel:]):
(-[QuickLookDelegate verifyDownload]):
(runTest):
(runTestDecideBeforeLoading):
(runTestDecideAfterLoading):
(TEST):
(-[QuickLookAsyncDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookPasswordDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
(-[QuickLookFrameLoadDelegate webView:didFinishLoadForFrame:]):
(-[QuickLookNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:didFailProvisionalNavigation:withError:]): Deleted.
(-[QuickLookDecidePolicyDelegate _webViewWebProcessDidCrash:]): Deleted.
(-[QuickLookPasswordNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]): Deleted.

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

4 months agogl.readPixels with type gl.FLOAT does not work
dino@apple.com [Sat, 30 Mar 2019 22:07:21 +0000 (22:07 +0000)]
gl.readPixels with type gl.FLOAT does not work
https://bugs.webkit.org/show_bug.cgi?id=171432
<rdar://problem/31905150>

Reviewed by Antoine Quint.

Source/WebCore:

Our validation code was identifying readPixels of
type FLOAT as invalid, for three reasons:
- we didn't support the FLOAT type at all.
- we only allowed the combination of RGBA and
UNSIGNED_BYTE in WebGL 1 [*].
- if we had a framebuffer of format RGBA, we assumed
we could only read into a Uint8 ArrayBuffer.

[*] This bug isn't completely fixed, so I opened
https://bugs.webkit.org/show_bug.cgi?id=196418

Test: fast/canvas/webgl/readPixels-float.html

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::readPixels):
- flip the logic in a conditional that was clearly wrong yet
  thankfully had no impact.
- support type FLOAT when the relevant extension is enabled.
- allow FLOAT as a valid type (see new bug above)
- create a new macro for CHECK_COMPONENT_COUNT
- update the existing macros to not be case statements,
  so that we can put logic in the switch.

LayoutTests:

New test that exercises reading a framebuffer object
with a floating point texture attached.

* platform/ios/TestExpectations: Skip this test on iOS, where floating-point
FBOs are not supported.
* fast/canvas/webgl/readPixels-float-expected.txt: Added.
* fast/canvas/webgl/readPixels-float.html: Added.

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

4 months agoTry to fix Windows build.
antti@apple.com [Sat, 30 Mar 2019 17:50:37 +0000 (17:50 +0000)]
Try to fix Windows build.

* platform/graphics/RoundedRect.cpp:
(WebCore::approximateAsRegion):

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

4 months agoWeb Inspector: JSC Sampling Profiler thread not getting subtracted in CPU Usage Timeline
pecoraro@apple.com [Sat, 30 Mar 2019 16:38:17 +0000 (16:38 +0000)]
Web Inspector: JSC Sampling Profiler thread not getting subtracted in CPU Usage Timeline
https://bugs.webkit.org/show_bug.cgi?id=196419
<rdar://problem/49444023>

Reviewed by Devin Rousso.

* page/ResourceUsageThread.cpp:
(WebCore::ResourceUsageThread::addObserver):
We forgot to call the function that would setup platform state
allowing us to subtract out the sampling profiler thread.

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

4 months ago[ContentChangeObserver] Add iFrame elements to the list of "considered clickable...
zalan@apple.com [Sat, 30 Mar 2019 14:09:23 +0000 (14:09 +0000)]
[ContentChangeObserver] Add iFrame elements to the list of "considered clickable" elements.
https://bugs.webkit.org/show_bug.cgi?id=196410
<rdar://problem/49436828>

Reviewed by Simon Fraser.

Source/WebCore:

163.com constructs an iFrame to display the login pane on hover. This patch ensures that we take iFrames into account while observing for visible content change by considering iFrame elements "clickable".
(While iFrames don't necessarily have clickable content, we can't just sit and wait until they are fully loaded.)

Test: fast/events/touch/ios/content-observation/iframe-is-shown-on-hover.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

LayoutTests:

* fast/events/touch/ios/content-observation/iframe-is-shown-on-hover-expected.txt: Added.
* fast/events/touch/ios/content-observation/iframe-is-shown-on-hover.html: Added.

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

4 months ago[ContentChangeObserver] Subframe load should not reset content observation on the...
zalan@apple.com [Sat, 30 Mar 2019 13:47:42 +0000 (13:47 +0000)]
[ContentChangeObserver] Subframe load should not reset content observation on the mainframe
https://bugs.webkit.org/show_bug.cgi?id=196408
<rdar://problem/49436797>

Reviewed by Simon Fraser.

Source/WebKit:

Hover intent fails when an unrelated frame commits a load the same time.
cancelPotentialTapInFrame is called from didCommitLoad, but what we are looking for here is the user initiated cancel of a tap (cancelPotentialTap).
(If the current frame navigates away, willDetachPage takes care of canceling the observation.)

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::cancelPotentialTap):
(WebKit::WebPage::cancelPotentialTapInFrame):

LayoutTests:

* fast/events/touch/ios/content-observation/hover-while-loading-subframe-expected.txt: Added.
* fast/events/touch/ios/content-observation/hover-while-loading-subframe.html: Added.

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

4 months ago[CMake] add testdfg as target with build-jsc
dinfuehr@igalia.com [Sat, 30 Mar 2019 11:09:44 +0000 (11:09 +0000)]
[CMake] add testdfg as target with build-jsc
https://bugs.webkit.org/show_bug.cgi?id=196393

Reviewed by Saam Barati.

Added testdfg as one of the targets to build when
using CMake.

* Scripts/build-jsc:

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

4 months agoTry to fix Windows build.
antti@apple.com [Sat, 30 Mar 2019 09:19:37 +0000 (09:19 +0000)]
Try to fix Windows build.

* platform/graphics/Region.cpp:
* platform/graphics/RoundedRect.cpp:

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

4 months agoHit-testing of boxes over scrollers should account for border-radius
antti@apple.com [Sat, 30 Mar 2019 08:28:07 +0000 (08:28 +0000)]
Hit-testing of boxes over scrollers should account for border-radius
https://bugs.webkit.org/show_bug.cgi?id=195374
<rdar://problem/48649993>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/border-radious-event-region.html

* page/Frame.h:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const):

Testing support.

* platform/graphics/GraphicsLayerClient.h:
* platform/graphics/RoundedRect.cpp:
(WebCore::approximateAsRegion):

Add a function to approximate RoundedRects as Regions.
It cuts away rectangles from the corners following the corner shapes.
More rectangles are cut for larger radii.

* platform/graphics/RoundedRect.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Use the new interface to get rounded corners right.
In rectangle case this takes optimized paths.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerTreeAsText):
* testing/Internals.cpp:
(WebCore::toLayerTreeFlags):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* fast/scrolling/ios/border-radius-event-region-expected.txt: Added.
* fast/scrolling/ios/border-radius-event-region.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt:

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

4 months ago[ContentChangeObserver] Expand DOM timer observation to 350ms
zalan@apple.com [Sat, 30 Mar 2019 02:56:17 +0000 (02:56 +0000)]
[ContentChangeObserver] Expand DOM timer observation to 350ms
https://bugs.webkit.org/show_bug.cgi?id=196411
<rdar://problem/49391144>

Reviewed by Simon Fraser.

Source/WebCore:

imdb.com main page has 350ms hover intent timer to bring up the hover menus around the search bar.

Test: fast/events/touch/ios/content-observation/350ms-hover-intent.html

* page/ios/ContentChangeObserver.cpp:

LayoutTests:

* fast/events/touch/ios/content-observation/350ms-hover-intent-expected.txt: Added.
* fast/events/touch/ios/content-observation/350ms-hover-intent.html: Added.

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

4 months ago[JSC] JSWrapperMap should not use Objective-C Weak map (NSMapTable with NSPointerFunc...
ysuzuki@apple.com [Sat, 30 Mar 2019 01:30:16 +0000 (01:30 +0000)]
[JSC] JSWrapperMap should not use Objective-C Weak map (NSMapTable with NSPointerFunctionsWeakMemory) for m_cachedObjCWrappers
https://bugs.webkit.org/show_bug.cgi?id=196392

Reviewed by Saam Barati.

Weak representation in Objective-C is surprisingly costly in terms of memory. We can see that very easy program shows 10KB memory consumption due to
this weak wrapper map in JavaScriptCore.framework. But we do not need this weak map since Objective-C JSValue has a dealloc. We can unregister itself
from the map when it is deallocated without using Objective-C weak mechanism. And since Objective-C JSValue is tightly coupled to a specific JSContext,
and wrapper map is created per JSContext, JSValue wrapper and actual JavaScriptCore value is one-on-one, and [JSValue dealloc] knows which JSContext's
wrapper map holds itself.

1. We do not use Objective-C weak mechanism. We use WTF::HashSet instead. When JSValue is allocated, we register it to JSWrapperMap's HashSet. And unregister
   JSValue from this map when JSValue is deallocated.
2. We use HashSet<JSValue> (logically) instead of HashMap<JSValueRef, JSValue> to keep JSValueRef and JSValue relationship. We can achieve it because JSValue
   holds JSValueRef inside it.

* API/JSContext.mm:
(-[JSContext removeWrapper:]):
* API/JSContextInternal.h:
* API/JSValue.mm:
(-[JSValue dealloc]):
(-[JSValue initWithValue:inContext:]):
* API/JSWrapperMap.h:
* API/JSWrapperMap.mm:
(WrapperKey::hashTableDeletedValue):
(WrapperKey::WrapperKey):
(WrapperKey::isHashTableDeletedValue const):
(WrapperKey::Hash::hash):
(WrapperKey::Hash::equal):
(WrapperKey::Traits::isEmptyValue):
(WrapperKey::Translator::hash):
(WrapperKey::Translator::equal):
(WrapperKey::Translator::translate):
(-[JSWrapperMap initWithGlobalContextRef:]):
(-[JSWrapperMap dealloc]):
(-[JSWrapperMap objcWrapperForJSValueRef:inContext:]):
(-[JSWrapperMap removeWrapper:]):
* API/tests/testapi.mm:
(testObjectiveCAPIMain):

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

4 months agoMove WebResourceLoadStatisticsStore IPC calls from the UI process to the network...
wilander@apple.com [Sat, 30 Mar 2019 01:09:12 +0000 (01:09 +0000)]
Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
https://bugs.webkit.org/show_bug.cgi?id=196407
<rdar://problem/47859936>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html

This patch removes old code for the batching into "statistics updated" calls.
Since the move of Resource Load Statistics to the network process, all such
collection is done directly through dedicated calls to the network process.

The remaining functionality was renamed to make it more clear, i.e.
ResourceLoadObserver::notifyObserver() renamed to
ResourceLoadObserver::updateCentralStatisticsStore().

* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback):
(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
(WebCore::ResourceLoadObserver::setNotificationCallback): Deleted.
(WebCore::ResourceLoadObserver::ResourceLoadObserver): Deleted.
(WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded): Deleted.
(WebCore::ResourceLoadObserver::notifyObserver): Deleted.
* loader/ResourceLoadObserver.h:
* testing/Internals.cpp:
(WebCore::Internals::notifyResourceLoadObserver):

Source/WebKit:

The two WebResourceLoadStatisticsStore IPC endpoints were left behind when we
moved Resource Load Statistics from the UI process to the network process. One
of the endpoints is the message RequestStorageAccessUnderOpener which underpins
our compatibility fix for federated logins using popups. This patch redirects
these IPC calls to the network process and cleans up some assumptions around
them.

* CMakeLists.txt:
    Removed the old IPC receiver.
* DerivedSources.make:
    Removed the old IPC receiver.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestUpdate): Deleted.
    This is no longer needed since there is a dedicated update mechanism
    that actually sends the update.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
    Two new IPC receivers to pipe the calls to the network process.
(WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate): Deleted.
    NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated now serves
    this purpose.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* UIProcess/WebResourceLoadStatisticsStore.messages.in: Removed.
    Removed the old IPC receiver.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleResourceLoadStatisticsNotifyObserver):
    Function name update.
* WebProcess/WebProcess.cpp:
    Now calls IPC to the network process instead of the UI process.

LayoutTests:

* http/tests/storageAccess/deny-storage-access-under-opener-expected.txt:
* http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-expected.txt:
* http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-expected.txt: Added.
* http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html: Added.
* http/tests/storageAccess/resources/get-cookies.php:
* http/tests/storageAccess/resources/produce-user-gesture-set-cookie-and-report-back.html: Added.

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

4 months agoB3ReduceStrength should know that Mul distributes over Add and Sub
rmorisset@apple.com [Sat, 30 Mar 2019 00:21:38 +0000 (00:21 +0000)]
B3ReduceStrength should know that Mul distributes over Add and Sub
https://bugs.webkit.org/show_bug.cgi?id=196325

Reviewed by Michael Saboff.

In this patch I add the following patterns to B3ReduceStrength:
- Turn this: Integer Neg(Mul(value, c))
  Into this: Mul(value, -c), as long as -c does not overflow
- Turn these: Integer Mul(value, Neg(otherValue)) and Integer Mul(Neg(value), otherValue)
  Into this: Neg(Mul(value, otherValue))
- For Op==Add or Sub, turn any of these:
     Op(Mul(x1, x2), Mul(x1, x3))
     Op(Mul(x2, x1), Mul(x1, x3))
     Op(Mul(x1, x2), Mul(x3, x1))
     Op(Mul(x2, x1), Mul(x3, x1))
  Into this: Mul(x1, Op(x2, x3))

Also includes a trivial change: a similar reduction for the distributivity of BitAnd over BitOr/BitXor now
emits the arguments to BitAnd in the other order, to minimize the probability that we'll spend a full fixpoint step just to flip them.

* b3/B3ReduceStrength.cpp:
* b3/testb3.cpp:
(JSC::B3::testAddMulMulArgs):
(JSC::B3::testMulArgNegArg):
(JSC::B3::testMulNegArgArg):
(JSC::B3::testNegMulArgImm):
(JSC::B3::testSubMulMulArgs):
(JSC::B3::run):

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

4 months agoMake someWindow.frames, .self, .window always return someWindow
cdumez@apple.com [Sat, 30 Mar 2019 00:21:31 +0000 (00:21 +0000)]
Make someWindow.frames, .self, .window always return someWindow
https://bugs.webkit.org/show_bug.cgi?id=195406

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all its checks are passing.

* web-platform-tests/html/browsers/the-window-object/self-et-al.window-expected.txt:

Source/WebCore:

Make someWindow.frames, .self, .window always return someWindow. Previously, they
would return null when the window would lose its browsing context.

This aligns our behavior with Firefox and the HTML specification:
- https://github.com/whatwg/html/pull/4410

Chrome has also recently aligned with Firefox and the HTML specification here so
it makes sense for WebKit to follow.

No new tests, rebaselined existing tests.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::self const):
(WebCore::JSDOMWindow::window const):
(WebCore::JSDOMWindow::frames const):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::focus):
* page/DOMWindow.h:
* page/DOMWindow.idl:

LayoutTests:

Update / rebaseline existing test to reflect behavior change.

* fast/frames/detached-frame-property-expected.txt:
* fast/frames/detached-frame-property.html:

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

4 months ago[JSC] Remove distancing for LargeAllocation
ysuzuki@apple.com [Fri, 29 Mar 2019 23:33:31 +0000 (23:33 +0000)]
[JSC] Remove distancing for LargeAllocation
https://bugs.webkit.org/show_bug.cgi?id=196335

Reviewed by Saam Barati.

In r230226, we removed distancing feature from our GC. This patch removes remaining distancing thing in LargeAllocation.

* heap/HeapCell.h:
* heap/LargeAllocation.cpp:
(JSC::LargeAllocation::tryCreate):
* heap/MarkedBlock.h:

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

4 months agoDelete WebMetal implementation in favor of WebGPU
mmaxfield@apple.com [Fri, 29 Mar 2019 22:18:59 +0000 (22:18 +0000)]
Delete WebMetal implementation in favor of WebGPU
https://bugs.webkit.org/show_bug.cgi?id=195418

Reviewed by Dean Jackson.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:
* inspector/protocol/Canvas.json:
* inspector/scripts/codegen/generator.py:

Source/WebCore:

WebMetal was only ever intended to be a proof-of-concept, and was never intended to be shipped.
Now that our WebGPU implementation is achieving good functionality, we're hitting conflicts
because we have both implementations. We should delete the non-standard implementation in favor
of the standards-based implementation.

Deletes relevant tests.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Removed.
* bindings/js/JSWebMetalRenderingContextCustom.cpp: Removed.
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebMetalType): Deleted.
(WebCore::HTMLCanvasElement::createContextWebMetal): Deleted.
(WebCore::HTMLCanvasElement::getContextWebMetal): Deleted.
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isWebGPU const):
(WebCore::CanvasRenderingContext::isWebMetal const): Deleted.
* html/canvas/WebMetalBuffer.cpp: Removed.
* html/canvas/WebMetalBuffer.h: Removed.
* html/canvas/WebMetalBuffer.idl: Removed.
* html/canvas/WebMetalCommandBuffer.cpp: Removed.
* html/canvas/WebMetalCommandBuffer.h: Removed.
* html/canvas/WebMetalCommandBuffer.idl: Removed.
* html/canvas/WebMetalCommandQueue.cpp: Removed.
* html/canvas/WebMetalCommandQueue.h: Removed.
* html/canvas/WebMetalCommandQueue.idl: Removed.
* html/canvas/WebMetalComputeCommandEncoder.cpp: Removed.
* html/canvas/WebMetalComputeCommandEncoder.h: Removed.
* html/canvas/WebMetalComputeCommandEncoder.idl: Removed.
* html/canvas/WebMetalComputePipelineState.cpp: Removed.
* html/canvas/WebMetalComputePipelineState.h: Removed.
* html/canvas/WebMetalComputePipelineState.idl: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.cpp: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.h: Removed.
* html/canvas/WebMetalDepthStencilDescriptor.idl: Removed.
* html/canvas/WebMetalDepthStencilState.cpp: Removed.
* html/canvas/WebMetalDepthStencilState.h: Removed.
* html/canvas/WebMetalDepthStencilState.idl: Removed.
* html/canvas/WebMetalDrawable.cpp: Removed.
* html/canvas/WebMetalDrawable.h: Removed.
* html/canvas/WebMetalDrawable.idl: Removed.
* html/canvas/WebMetalEnums.cpp: Removed.
* html/canvas/WebMetalEnums.h: Removed.
* html/canvas/WebMetalEnums.idl: Removed.
* html/canvas/WebMetalFunction.cpp: Removed.
* html/canvas/WebMetalFunction.h: Removed.
* html/canvas/WebMetalFunction.idl: Removed.
* html/canvas/WebMetalLibrary.cpp: Removed.
* html/canvas/WebMetalLibrary.h: Removed.
* html/canvas/WebMetalLibrary.idl: Removed.
* html/canvas/WebMetalRenderCommandEncoder.cpp: Removed.
* html/canvas/WebMetalRenderCommandEncoder.h: Removed.
* html/canvas/WebMetalRenderCommandEncoder.idl: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPassDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPassDescriptor.h: Removed.
* html/canvas/WebMetalRenderPassDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Removed.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.cpp: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.h: Removed.
* html/canvas/WebMetalRenderPipelineDescriptor.idl: Removed.
* html/canvas/WebMetalRenderPipelineState.cpp: Removed.
* html/canvas/WebMetalRenderPipelineState.h: Removed.
* html/canvas/WebMetalRenderPipelineState.idl: Removed.
* html/canvas/WebMetalRenderingContext.cpp: Removed.
* html/canvas/WebMetalRenderingContext.h: Removed.
* html/canvas/WebMetalRenderingContext.idl: Removed.
* html/canvas/WebMetalSize.h: Removed.
* html/canvas/WebMetalSize.idl: Removed.
* html/canvas/WebMetalTexture.cpp: Removed.
* html/canvas/WebMetalTexture.h: Removed.
* html/canvas/WebMetalTexture.idl: Removed.
* html/canvas/WebMetalTextureDescriptor.cpp: Removed.
* html/canvas/WebMetalTextureDescriptor.h: Removed.
* html/canvas/WebMetalTextureDescriptor.idl: Removed.
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebMetalEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webMetalEnabled const): Deleted.
* platform/Logging.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
* platform/graphics/cocoa/WebMetalLayer.h: Removed.
* platform/graphics/cocoa/WebMetalLayer.mm: Removed.
* platform/graphics/gpu/legacy/GPULegacyBuffer.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyBuffer.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandBuffer.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandBuffer.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandQueue.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyCommandQueue.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputePipelineState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyComputePipelineState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDepthStencilState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDevice.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDevice.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyDrawable.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyDrawable.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyEnums.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyFunction.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyFunction.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyLibrary.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyLibrary.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.h: Removed.
* platform/graphics/gpu/legacy/GPULegacySize.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyTexture.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyTexture.h: Removed.
* platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.cpp: Removed.
* platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.h: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyBufferMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyCommandQueueMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyComputeCommandEncoderMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyComputePipelineStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDeviceMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyDrawableMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyFunctionMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyLibraryMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderCommandEncoderMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineStateMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyTextureDescriptorMetal.mm: Removed.
* platform/graphics/gpu/legacy/cocoa/GPULegacyTextureMetal.mm: Removed.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebMetalEnabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebInspectorUI:

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webMetalEnabled]): Deleted.
(-[WebPreferences setWebMetalEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/mac/GPUCommandQueue.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyBuffer.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyCommandQueue.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyDevice.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyFunction.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyLibrary.mm: Removed.
* TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h: Removed.
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebMetalEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

* fast/canvas/webmetal/webmetal-dispatch-expected.txt: Removed.
* fast/canvas/webmetal/webmetal-dispatch.html: Removed.
* fast/canvas/webmetal/webmetal-runtime-flag-expected.txt: Removed.
* fast/canvas/webmetal/webmetal-runtime-flag.html: Removed.
* inspector/canvas/create-context-webmetal-expected.txt: Removed.
* inspector/canvas/create-context-webmetal.html: Removed.
* inspector/canvas/resolveCanvasContext-webmetal-expected.txt: Removed.
* inspector/canvas/resolveCanvasContext-webmetal.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wpe/TestExpectations:

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

4 months agoAssertion failed in JSC::createError
tzagallo@apple.com [Fri, 29 Mar 2019 21:53:54 +0000 (21:53 +0000)]
Assertion failed in JSC::createError
https://bugs.webkit.org/show_bug.cgi?id=196305
<rdar://problem/49387382>

Reviewed by Saam Barati.

JSTests:

* stress/create-error-out-of-memory-rope-string-2.js: Added.
(assert):
(catch):

Source/JavaScriptCore:

JSC::createError assumes that `errorDescriptionForValue` will either
throw an exception or return a valid description string. However, that
is not true if the value is a rope string and we successfully resolve it,
but later fail to wrap the string in quotes with `tryMakeString`.

* runtime/ExceptionHelpers.cpp:
(JSC::createError):

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

4 months agoUpdate the CSS Text WPT test suite
jfernandez@igalia.com [Fri, 29 Mar 2019 21:52:53 +0000 (21:52 +0000)]
Update the CSS Text WPT test suite
https://bugs.webkit.org/show_bug.cgi?id=196397

Reviewed by Manuel Rego Casasnovas.

Updated several tests from the CSS Text test suite.

* resources/resource-files.json:
* web-platform-tests/css/css-text/META.yml:
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html:
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html:
* web-platform-tests/css/css-text/white-space/break-spaces-004.html:
* web-platform-tests/css/css-text/white-space/break-spaces-005.html:
* web-platform-tests/css/css-text/white-space/break-spaces-006.html:
* web-platform-tests/css/css-text/white-space/break-spaces-007.html:
* web-platform-tests/css/css-text/white-space/break-spaces-008.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-008.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-015.html:
* web-platform-tests/css/css-text/white-space/pre-wrap-016.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html:
* web-platform-tests/css/css-text/word-break/w3c-import.log:
* web-platform-tests/css/css-text/word-break/word-break-break-all-010.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-011.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-012.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-013.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-015.html:
* web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html: Added.

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

4 months agoWeb Inspector: add fast returns for instrumentation hooks that have no affect before...
drousso@apple.com [Fri, 29 Mar 2019 21:49:53 +0000 (21:49 +0000)]
Web Inspector: add fast returns for instrumentation hooks that have no affect before a frontend is connected
https://bugs.webkit.org/show_bug.cgi?id=196382
<rdar://problem/49403417>

Reviewed by Joseph Pecoraro.

Ensure that all instrumentation hooks use `FAST_RETURN_IF_NO_FRONTENDS` or check that
`developerExtrasEnabled`. There should be no activity to/from any inspector objects until
developer extras are enabled.

Source/JavaScriptCore:

* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::startTiming):
(Inspector::InspectorConsoleAgent::stopTiming):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::addConsoleMessage):

Source/WebCore:

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorld):
(WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSP):
(WebCore::InspectorInstrumentation::domContentLoadedEventFired):
(WebCore::InspectorInstrumentation::loadEventFired):
(WebCore::InspectorInstrumentation::frameDetachedFromParent):
(WebCore::InspectorInstrumentation::loaderDetachedFromFrame):
(WebCore::InspectorInstrumentation::frameStartedLoading):
(WebCore::InspectorInstrumentation::frameStoppedLoading):
(WebCore::InspectorInstrumentation::frameScheduledNavigation):
(WebCore::InspectorInstrumentation::frameClearedScheduledNavigation):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::frameWindowDiscardedImpl):
(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::didFailLoadingImpl):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::frameWindowDiscarded):

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

4 months agoWeb Inspector: Storage: some cookie column headers are not localized
drousso@apple.com [Fri, 29 Mar 2019 20:56:20 +0000 (20:56 +0000)]
Web Inspector: Storage: some cookie column headers are not localized
https://bugs.webkit.org/show_bug.cgi?id=196406
<rdar://problem/48467422>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.initialLayout):

* Localizations/en.lproj/localizedStrings.js:

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

4 months agoSet window.closed immediately when close() is invoked
cdumez@apple.com [Fri, 29 Mar 2019 20:46:57 +0000 (20:46 +0000)]
Set window.closed immediately when close() is invoked
https://bugs.webkit.org/show_bug.cgi?id=195409

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/html/browsers/the-window-object/close-method.window-expected.txt:
* web-platform-tests/html/browsers/the-window-object/closed-attribute.window-expected.txt:

Source/WebCore:

Window.closed should return true if it is closing:
- https://html.spec.whatwg.org/#dom-window-closed

Window.close() sets the 'is closing' flag to true synchronously, as per:
- https://html.spec.whatwg.org/#dom-window-close (step 3.1)

No new tests, rebaselined existing tests.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::closed const):

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

4 months ago[Simple line layout] Turn off inline boxtree generation for multiline content
zalan@apple.com [Fri, 29 Mar 2019 20:26:49 +0000 (20:26 +0000)]
[Simple line layout] Turn off inline boxtree generation for multiline content
https://bugs.webkit.org/show_bug.cgi?id=196404
<rdar://problem/49234033>

Reviewed by Simon Fraser.

Source/WebCore:

Currently simple line layout can't provide the correct line breaking context to the inline tree when the boxtree is
generated using the simple line runs. This patch limits the generation of such trees to single lines. Multiline content will
go through the "let's layout this content again" codepath.
This patch fixes disappearing content on Questar.

Test: fast/text/simple-line-layout-and-multiline-inlineboxtree.html

* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::canUseForLineBoxTree):

LayoutTests:

* fast/text/simple-line-layout-and-multiline-inlineboxtree-expected.html: Added.
* fast/text/simple-line-layout-and-multiline-inlineboxtree.html: Added.

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

4 months agoimported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a...
sroberts@apple.com [Fri, 29 Mar 2019 20:23:05 +0000 (20:23 +0000)]
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196403

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectations for flaky test

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

4 months ago[Web GPU] Replace unsigned longs in WebGPU with uint64_t
justin_fan@apple.com [Fri, 29 Mar 2019 20:18:38 +0000 (20:18 +0000)]
[Web GPU] Replace unsigned longs in WebGPU with uint64_t
https://bugs.webkit.org/show_bug.cgi?id=196401

Reviewed by Myles C. Maxfield.

Unsigned long is not guaranteed to be 64 bits on all platforms. In addition, rowPitch is updated
to u32 in the API and the implementation to match.

No new tests. No new behavior.

* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUBufferBinding.h:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
* Modules/webgpu/WebGPUCommandEncoder.h:
* Modules/webgpu/WebGPUCommandEncoder.idl:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
* Modules/webgpu/WebGPURenderPassEncoder.h:
* platform/graphics/gpu/GPUBindGroupLayout.h:
* platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::byteLength const):
* platform/graphics/gpu/GPUBufferBinding.h:
* platform/graphics/gpu/GPUBufferDescriptor.h:
* platform/graphics/gpu/GPUCommandBuffer.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
* platform/graphics/gpu/GPUVertexInputDescriptor.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::setSubData):
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):

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

4 months agoREGRESSION (r243523): Six form-related watchOS layout tests are timing out
cdumez@apple.com [Fri, 29 Mar 2019 20:11:54 +0000 (20:11 +0000)]
REGRESSION (r243523): Six form-related watchOS layout tests are timing out
https://bugs.webkit.org/show_bug.cgi?id=196405
<rdar://problem/49428130>

Reviewed by Wenson Hsieh.

Tools:

Add a shouldPresentPopovers=false WebKitTestRunner option to cause WKTR to swizzle
the popover presentation methods to be no-ops. Use this in the new test added in
r243523 so that we do not swizzle those methods for all tests. This is needed because
those WatchOS tests rely on the popover getting presented and interactive.

* WebKitTestRunner/TestController.cpp:
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:

* fast/forms/ios/file-upload-panel.html:

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

4 months agoREGRESSION (r243250): Text interactions are no longer suppressed when editing in...
wenson_hsieh@apple.com [Fri, 29 Mar 2019 20:09:02 +0000 (20:09 +0000)]
REGRESSION (r243250): Text interactions are no longer suppressed when editing in some websites
https://bugs.webkit.org/show_bug.cgi?id=196378
<rdar://problem/49231299>

Reviewed by Simon Fraser.

Source/WebCore:

Enabling async overflow scrolling by default in r243250 exposed an issue with hidden editable area detection
heuristics. Currently, an empty value for RenderLayer::selfClipRect is used to determine whether the layer
enclosing the editable element or form control is completely clipped by a parent (in other words, the clip rect
is empty). With async overflow scrolling, the enclosing layer of the editable element (as seen in the websites
affected by this bug) will now be a clipping root for painting, since it is composited. This means selfClipRect
returns a non-empty rect despite the layer being entirely clipped, which negates the heuristic.

To address this, we adjust the clipping heuristic to instead walk up the layer tree (crossing frame boundaries)
and look for enclosing ancestors with overflow clip. For each layer we find with an overflow clip, compute the
clip rect of the previous layer relative to the ancestor with overflow clip. If the clipping rect is empty, we
know that the layer is hidden.

This isn't a perfect strategy, since it may still report false negatives (reporting a layer as visible when it
is not) in some cases. One such edge case is a series of overflow hidden containers, nested in such a way that
each container is only partially clipped relative to its ancestor, but the deepest layer is completely clipped
relative to the topmost layer. However, this heuristic is relatively cheap (entailing a layer tree walk at
worst) and works for common use cases on the web without risking scenarios in which text selection that
shouldn't be suppressed ends up becoming suppressed.

Test: editing/selection/ios/hide-selection-in-textarea-with-transform.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparentOrFullyClippedRespectingParentFrames const):

LayoutTests:

Add a new layout test to exercise the scenario in which a transformed textarea is hidden inside an empty
overflow: hidden container.

* editing/selection/ios/hide-selection-in-textarea-with-transform-expected.txt: Added.
* editing/selection/ios/hide-selection-in-textarea-with-transform.html: Added.

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

4 months agoUnreviewed test gardening for imported/w3c/web-platform-tests/xhr/send-redirect-post...
achristensen@apple.com [Fri, 29 Mar 2019 20:00:58 +0000 (20:00 +0000)]
Unreviewed test gardening for imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm
https://bugs.webkit.org/show_bug.cgi?id=159724
<rdar://problem/48116418>

* TestExpectations:
* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:
This test asserts on Cocoa WebKitLegacy platforms.  A patch I uploaded to https://bugs.webkit.org/show_bug.cgi?id=159724 shows why we do not intend to fix this.
This test crashes on iOS12 and Mojave because of rdar://problem/28233746
This test should not crash anywhere else, but it is flaky in WebKit and Gecko. This is being taken care of in https://github.com/w3c/web-platform-tests/issues/8191
Updated test expectations to reflect the sad state of things.

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

4 months ago[Curl] Add Server Trust Evaluation Support.
commit-queue@webkit.org [Fri, 29 Mar 2019 19:03:16 +0000 (19:03 +0000)]
[Curl] Add Server Trust Evaluation Support.
https://bugs.webkit.org/show_bug.cgi?id=191646

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-03-29
Reviewed by Fujii Hironori.

Source/WebCore:

Tests: http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/mixedContent/insecure-websocket.html
       http/tests/ssl/upgrade-origin-usage.html

* platform/network/curl/AuthenticationChallenge.h:
* platform/network/curl/AuthenticationChallengeCurl.cpp:
(WebCore::AuthenticationChallenge::AuthenticationChallenge):
(WebCore::AuthenticationChallenge::protectionSpaceForPasswordBased):
(WebCore::AuthenticationChallenge::protectionSpaceForServerTrust):
(WebCore::AuthenticationChallenge::protectionSpaceFromHandle): Deleted.
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::disableServerTrustEvaluation):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setupTransfer):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::disableServerTrustEvaluation):

Source/WebKit:

Tests: http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/mixedContent/insecure-websocket.html
       http/tests/ssl/upgrade-origin-usage.html

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidFailWithError):
(WebKit::NetworkDataTaskCurl::tryServerTrustEvaluation):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
* NetworkProcess/curl/NetworkDataTaskCurl.h:

Tools:

Implemented MiniBrowser UI for asking if user trusts the server.

* MiniBrowser/win/Common.cpp:
(askServerTrustEvaluation):
(replaceString):
* MiniBrowser/win/Common.h:
* MiniBrowser/win/MiniBrowserLib.rc:
* MiniBrowser/win/MiniBrowserLibResource.h:
* MiniBrowser/win/WebKitBrowserWindow.cpp:
(createPEMString):
(WebKitBrowserWindow::didReceiveAuthenticationChallenge):
(WebKitBrowserWindow::canTrustServerCertificate):
* MiniBrowser/win/WebKitBrowserWindow.h:

LayoutTests:

* platform/wincairo-wk1/TestExpectations:
* platform/wincairo/TestExpectations:

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

4 months agoPasting a table from Confluence strip of table cell content
rniwa@webkit.org [Fri, 29 Mar 2019 18:39:51 +0000 (18:39 +0000)]
Pasting a table from Confluence strip of table cell content
https://bugs.webkit.org/show_bug.cgi?id=196390

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was ultimately caused by FrameView of the document we use to sanitize the pasteboard content
having 0px by 0px dimension. This caused div with `overflow-x: auto` surrounding a table to have
the height of 0px. Because StyledMarkupAccumulator::renderedTextRespectingRange uses TextIterator
to serialize a text node and this div was an ancestor of the text node, TextIterator::handleTextNode
ended up exiting early.

Fixed the bug by giving FrameView, which is used to sanitize the content, a dimension of 800px by 600px.

Using TextIteratorIgnoresStyleVisibility is not a great alternative since removing invisible content
during paste is an important privacy feature.

Test: editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html

* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):

LayoutTests:

Added a regression test.

* editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin-expected.txt: Added.
* editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html: Added.

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

4 months agofast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
sroberts@apple.com [Fri, 29 Mar 2019 18:36:35 +0000 (18:36 +0000)]
fast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196400

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months agoWebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow...
commit-queue@webkit.org [Fri, 29 Mar 2019 17:44:14 +0000 (17:44 +0000)]
WebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html
https://bugs.webkit.org/show_bug.cgi?id=196345

Patch by Antoine Quint <graouts@apple.com> on 2019-03-29
Reviewed by Dean Jackson.

An enum used within a WTF::OptionSet needs to have only power-of-two values that are larger than 0.

* platform/TouchAction.h:
* rendering/style/StyleRareNonInheritedData.h:

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

4 months agoHTMLInputElement::setEditingValue should not fail if renderer doesn't exist
mcatanzaro@igalia.com [Fri, 29 Mar 2019 16:11:02 +0000 (16:11 +0000)]
HTMLInputElement::setEditingValue should not fail if renderer doesn't exist
https://bugs.webkit.org/show_bug.cgi?id=195708

Reviewed by Wenson Hsieh.

Source/WebCore:

HTMLInputElement::setEditingValue currently returns early if the element's renderer() is
null. This is causing the Epiphany password manager to fail to remember passwords on
https://www.geico.com/ except for navigations through page cache.

This check was originally added to avoid some assertion, but I don't know which one, and
there's definitely not any assertion hit nowadays in this case. Probably there are more
guards checking if renderer() is null elsewhere in the code nowadays, closer to where it's
really needed.

Test: fast/forms/editing-value-null-renderer.html

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setEditingValue):

LayoutTests:

This is a copy of fast/forms/editing-value.html, except the form is not displayed. The input
value should still change.

* fast/forms/editing-value-null-renderer-expected.txt: Added.
* fast/forms/editing-value-null-renderer.html: Added.

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

4 months agoUnreviewed, rebaseline WPT test after r243638.
cdumez@apple.com [Fri, 29 Mar 2019 15:56:41 +0000 (15:56 +0000)]
Unreviewed, rebaseline WPT test after r243638.

LayoutTests/imported/w3c:

* web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window-expected.txt:

Source/WebCore:

* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:

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

4 months agoAll PointerEvent.isTrusted is always false.
graouts@webkit.org [Fri, 29 Mar 2019 15:54:02 +0000 (15:54 +0000)]
All PointerEvent.isTrusted is always false.
https://bugs.webkit.org/show_bug.cgi?id=196075
<rdar://problem/49158778>

Reviewed by Chris Dumez.

Source/WebCore:

Test: pointerevents/ios/pointer-events-is-trusted.html

The constructors we were using for some PointerEvent::create() methods were using initializers which are expected to be used with JS APIs
and thus generate untrusted events. We switch to using constructors using dedicated parameters which will set isTrusted to true.

* dom/PointerEvent.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::createPointerCancelEvent):
(WebCore::PointerEvent::PointerEvent):
(WebCore::m_isPrimary):
(WebCore::m_pointerType):
* dom/PointerEvent.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::cancelPointer):

LayoutTests:

Add tests to the macOS and iOS series of tests that check that isTrusted is indeed true. This uncovered a couple of issues with how some tests were written.

* pointerevents/ios/pointer-events-is-primary.html: Ensure we end both touches so that further tests run cleanly.
* pointerevents/ios/pointer-events-is-trusted-expected.txt: Added.
* pointerevents/ios/pointer-events-is-trusted.html: Added.
* pointerevents/mouse/pointer-event-basic-properties.html: Ensure we wait for the event to be handled before finishing the test.
* pointerevents/utils.js:
(prototype._handlePointerEvent):

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

4 months ago[GStreamer] imxvpudecoder detection and handling
philn@webkit.org [Fri, 29 Mar 2019 10:43:30 +0000 (10:43 +0000)]
[GStreamer] imxvpudecoder detection and handling
https://bugs.webkit.org/show_bug.cgi?id=196346

Reviewed by Xabier Rodriguez-Calvar.

When the imxvpudecoder is used, the texture sampling of the
directviv-uploaded texture returns an RGB value, so there's no need
to convert it. This patch also includes a refactoring of the
ImageRotation flag handling. The flag is now computed once only
and stored in an instance variable.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
(WebCore::texMapFlagFromOrientation): Deleted.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

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

4 months agoImplement ResizeObserver.
commit-queue@webkit.org [Fri, 29 Mar 2019 08:37:46 +0000 (08:37 +0000)]
Implement ResizeObserver.
https://bugs.webkit.org/show_bug.cgi?id=157743

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-03-29
Reviewed by Simon Fraser.

.:

Add ENABLE_RESIZE_OBSERVER.

* Source/cmake/WebKitFeatures.cmake:

LayoutTests/imported/w3c:

Set ResizeObserverEnabled for test runner and update expectations.

* web-platform-tests/interfaces/ResizeObserver.idl: Added.
* web-platform-tests/resize-observer/eventloop-expected.txt:
* web-platform-tests/resize-observer/eventloop.html:
* web-platform-tests/resize-observer/idlharness.window-expected.txt:
* web-platform-tests/resize-observer/idlharness.window.html:
* web-platform-tests/resize-observer/notify-expected.txt:
* web-platform-tests/resize-observer/notify.html:
* web-platform-tests/resize-observer/observe-expected.txt:
* web-platform-tests/resize-observer/observe.html:
* web-platform-tests/resize-observer/svg-expected.txt:
* web-platform-tests/resize-observer/svg.html:

Source/JavaScriptCore:

Add ENABLE_RESIZE_OBSERVER.

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Tests: resize-observer/modify-frametree-in-callback.html
       resize-observer/multi-frames.html
       resize-observer/observe-element-from-other-frame.html
       Imported from WPT by https://bugs.webkit.org/show_bug.cgi?id=193821

The data structure: Document has a ResizeObserver slot. ResizeObserver has a ResizeObservation slot.
ResizeObservation is related to one Element and the last reported size.
On the other hand, Element has a ResizeObservation slot.

At the beginning of willDisplayPage, it will check resize observations for current page if:
1. There is FrameView be layout and there are ResizeObservers in this page.
2. m_resizeObserverTimer has been started by observe() or hasSkippedResizeObservers().
During checkResizeObservations(), we'll gatherDocumentsNeedingResizeObservationCheck() first,
then notifyResizeObservers() for each document. During notifyResizeObservers(), it will gather
the m_activeObservations whose size changed and target element deeper than require depth.
The size changed shallower observations are skipped observations which will be delivered
in the next time. And an ErrorEvent will be reported.
After gathering, deliverResizeObservations create entries and invoke the callbacks with them.

The Element from other document could be observed.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getParserLocation const):
(WebCore::Document::addResizeObserver):
(WebCore::Document::removeResizeObserver):
(WebCore::Document::hasResizeObservers):
(WebCore::Document::gatherResizeObservations): Gather m_activeObservations at depth and return the shallowest depth.
(WebCore::Document::deliverResizeObservations): Deliver m_activeObservations, generate ResizeObserverEntries, and invoke the m_callbacks.
(WebCore::Document::hasSkippedResizeObservations const): To determine if Document has the size changed but not delivered observations.
(WebCore::Document::setHasSkippedResizeObservations):
(WebCore::Document::scheduleResizeObservations):
* dom/Document.h:
* dom/Element.cpp:
(WebCore::Element::~Element):
(WebCore::Element::disconnectFromResizeObservers):
(WebCore::Element::ensureResizeObserverData):
(WebCore::Element::resizeObserverData):
* dom/Element.h:
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::resizeObserverData):
(WebCore::ElementRareData::setResizeObserverData):
(WebCore::ElementRareData::useTypes const):
* page/FrameView.cpp:
(WebCore::FrameView::didLayout):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layoutTimerFired): We need to start a ResizeObserver timer here, because for WK1 this might not trigger flushCompositingChanges.
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::willDisplayPage):
(WebCore::Page::hasResizeObservers const):
(WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Gather the documents with resize observers.
(WebCore::Page::checkResizeObservations): Gather documents then notifyResizeObservers for each document.
(WebCore::Page::scheduleResizeObservations):
(WebCore::Page::notifyResizeObservers): Gather m_activeObservations and deliver them. Report ErrorEvent if it has skipped observations.
* page/Page.h:
(WebCore::Page::setNeedsCheckResizeObservations): Page needs to check ResizeObservations if FrameView layout or m_resizeObserverTimer has been started.
(WebCore::Page::needsCheckResizeObservations const):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::getParserLocationForConsoleMessage): Deleted.
* page/ResizeObservation.cpp: Added.
(WebCore::ResizeObservation::create):
(WebCore::ResizeObservation::ResizeObservation):
(WebCore::ResizeObservation::~ResizeObservation):
(WebCore::ResizeObservation::updateObservationSize):
(WebCore::ResizeObservation::computeObservedSize const):
(WebCore::ResizeObservation::computeTargetLocation const):
(WebCore::ResizeObservation::computeContentRect const):
(WebCore::ResizeObservation::elementSizeChanged const):
(WebCore::ResizeObservation::targetElementDepth const):
* page/ResizeObservation.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObservation::target const):
* page/ResizeObserver.cpp: Added.
(WebCore::ResizeObserver::create):
(WebCore::ResizeObserver::ResizeObserver):
(WebCore::ResizeObserver::~ResizeObserver):
(WebCore::ResizeObserver::scheduleObservations):
(WebCore::ResizeObserver::observe):
(WebCore::ResizeObserver::unobserve):
(WebCore::ResizeObserver::disconnect):
(WebCore::ResizeObserver::targetDestroyed):
(WebCore::ResizeObserver::gatherObservations):
(WebCore::ResizeObserver::deliverObservations):
(WebCore::ResizeObserver::removeTarget):
(WebCore::ResizeObserver::removeAllTargets):
(WebCore::ResizeObserver::removeObservation):
(WebCore::ResizeObserver::hasPendingActivity const):
(WebCore::ResizeObserver::activeDOMObjectName const):
(WebCore::ResizeObserver::canSuspendForDocumentSuspension const):
(WebCore::ResizeObserver::stop):
* page/ResizeObserver.h: Added.
(WebCore::ResizeObserver::hasObservations const):
(WebCore::ResizeObserver::hasActiveObservations const):
(WebCore::ResizeObserver::maxElementDepth):
(WebCore::ResizeObserver::hasSkippedObservations const):
(WebCore::ResizeObserver::setHasSkippedObservations):
* page/ResizeObserver.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverCallback.h: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverCallback.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/ResizeObserverEntry.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObserverEntry::create):
(WebCore::ResizeObserverEntry::target const):
(WebCore::ResizeObserverEntry::contentRect const):
(WebCore::ResizeObserverEntry::ResizeObserverEntry):
* page/ResizeObserverEntry.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
* page/Settings.yaml:

Source/WebCore/PAL:

Add ENABLE_RESIZE_OBSERVER.

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Add WebPreferences and FeatureDefines for ResizeObserver.

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences resizeObserverEnabled]):
(-[WebPreferences setResizeObserverEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
(-[WebView _flushCompositingChanges]): checkResizeObservations() in the begining.

Source/WebKitLegacy/win:

* Interfaces/IWebPreferencesPrivate.idl:
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::resizeObserverEnabled):
(WebPreferences::setResizeObserverEnabled):
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

Tools:

Support resizeObserverEnabled webPreferences.

* DumpRenderTree/TestOptions.cpp:
(TestOptions::TestOptions):
* DumpRenderTree/TestOptions.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):
* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Add tests for resize-observer of multiframe.

* resize-observer/modify-frametree-in-callback-expected.txt: Added.
* resize-observer/modify-frametree-in-callback.html: Added.
* resize-observer/multi-frames-expected.txt: Added.
* resize-observer/multi-frames.html: Added.
* resize-observer/observe-element-from-other-frame-expected.txt: Added.
* resize-observer/observe-element-from-other-frame.html: Added.
* resize-observer/resources/frame1.html: Added.
* resize-observer/resources/frame2.html: Added.
* resize-observer/resources/frame3.html: Added.
* resize-observer/resources/frame4.html: Added.
* resize-observer/resources/frameset1.html: Added.
* resize-observer/resources/frameset2.html: Added.
* resize-observer/resources/iframe1.html: Added.
* resize-observer/resources/resizeTestHelper.js: Added.
(ResizeTestHelper):
(ResizeTestHelper.prototype.get _currentStep):
(ResizeTestHelper.prototype._nextStep):
(ResizeTestHelper.prototype._handleNotification):
(ResizeTestHelper.prototype._handleTimeout):
(ResizeTestHelper.prototype._done):
(ResizeTestHelper.prototype.start):
(ResizeTestHelper.prototype.get rafCount):
(ResizeTestHelper.prototype._incrementRaf):
(ResizeTestHelper.prototype.startCountingRaf):

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

4 months ago[YARR] Precompute BMP / non-BMP status when constructing character classes
msaboff@apple.com [Fri, 29 Mar 2019 06:05:55 +0000 (06:05 +0000)]
[YARR] Precompute BMP / non-BMP status when constructing character classes
https://bugs.webkit.org/show_bug.cgi?id=196296

Reviewed by Keith Miller.

Changed CharacterClass::m_hasNonBMPCharacters into a character width bit field which
indicateis if the class includes characters from either BMP, non-BMP or both ranges.
This allows the recognizing code to eliminate checks for the width of a matched
characters when the class has only one width.  The character width is needed to
determine if we advance 1 or 2 character.  Also, the pre-computed width of character
classes that contains either all BMP or all non-BMP characters allows the parser to
use fixed widths for terms using those character classes.  Changed both the code gen
scripts and Yarr compiler to compute this bit field during the construction of
character classes.

For JIT'ed code of character classes that contain either all BMP or all non-BMP
characters, we can eliminate the generic check we were doing do compute how much
to advance after sucessfully matching a character in the class.

        Generic isBMP check      BMP only            non-BMP only
        --------------           --------------      --------------
        inc %r9d                 inc %r9d            add $0x2, %r9d
        cmp $0x10000, %eax
        jl isBMP
        cmp %edx, %esi
        jz atEndOfString
        inc %r9d
        inc %esi
 isBMP:

For character classes that contained non-BMP characters, we were always generating
the code in the left column.  The middle column is the code we generate for character
classes that contain only BMP characters.  The right column is the code we now
generate if the character class has only non-BMP characters.  In the fix width cases,
we can eliminate both the isBMP check as well as the atEndOfString check.  The
atEndOfstring check is eliminated since we know how many characters this character
class requires and that check can be factored out to the beginning of the current
alternative.  For character classes that contain both BMP and non-BMP characters,
we still generate the generic left column.

This change is a ~8% perf progression on UniPoker and a ~2% improvement on RexBench
as a whole.

* runtime/RegExp.cpp:
(JSC::RegExp::matchCompareWithInterpreter):
* runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::checkCharacterClassDontAdvanceInputForNonBMP):
(JSC::Yarr::Interpreter::matchCharacterClass):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::optimizeAlternative):
(JSC::Yarr::YarrGenerator::matchCharacterClass):
(JSC::Yarr::YarrGenerator::advanceIndexAfterCharacterClassTermMatch):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::hasNonBMPCharacters):
(JSC::Yarr::CharacterClassConstructor::characterWidths):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::anycharCreate):
* yarr/YarrPattern.h:
(JSC::Yarr::operator|):
(JSC::Yarr::operator&):
(JSC::Yarr::operator|=):
(JSC::Yarr::CharacterClass::CharacterClass):
(JSC::Yarr::CharacterClass::hasNonBMPCharacters):
(JSC::Yarr::CharacterClass::hasOneCharacterSize):
(JSC::Yarr::CharacterClass::hasOnlyNonBMPCharacters):
(JSC::Yarr::PatternTerm::invert const):
(JSC::Yarr::PatternTerm::invert): Deleted.
* yarr/create_regex_tables:
* yarr/generateYarrUnicodePropertyTables.py:

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

4 months agoUnreviewed build fix.
Hironori.Fujii@sony.com [Fri, 29 Mar 2019 05:18:47 +0000 (05:18 +0000)]
Unreviewed build fix.

* wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.

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

4 months agoCFDictionary encoder crashes on non-string keys.
timothy@apple.com [Fri, 29 Mar 2019 04:57:11 +0000 (04:57 +0000)]
CFDictionary encoder crashes on non-string keys.
https://bugs.webkit.org/show_bug.cgi?id=196388
rdar://problem/49339242

Reviewed by Ryosuke Niwa.

Allow non-string keys in CFDictionary encoding/decoding. Encode the correct
size for dictionaries and arrays when unknown keys or values are skipped.
Allow null array encoding and decoding like dictionary already allowed.

* Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode):
(IPC::decode):

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

4 months agoBackwardsGraph needs to consider back edges as the backward's root successor
sbarati@apple.com [Fri, 29 Mar 2019 04:42:42 +0000 (04:42 +0000)]
BackwardsGraph needs to consider back edges as the backward's root successor
https://bugs.webkit.org/show_bug.cgi?id=195991

Reviewed by Filip Pizlo.

JSTests:

* stress/map-b3-licm-infinite-loop.js: Added.

Source/JavaScriptCore:

* b3/testb3.cpp:
(JSC::B3::testInfiniteLoopDoesntCauseBadHoisting):
(JSC::B3::run):

Source/WTF:

Previously, our backwards graph analysis was slightly wrong. The idea of
backwards graph is that the root of the graph has edges to terminals in
the original graph. And then the original directed edges in the graph are flipped.

However, we weren't considering loops as a form of terminality. For example,
we wouldn't consider an infinite loop as a terminal. So there were no edges
from the root to a node in the infinite loop. This lead us to make mistakes
when we used backwards dominators to compute control flow equivalence.

This is better understood in an example:

```
preheader:
while (1) {
    if (!isCell(v))
        continue;
    load structure ID
    if (cond)
       continue;
    return
}
```

In the previous version of this algorithm, the only edge from the backwards
root would be to the block containing the return. This would lead us to
believe that the loading of the structureID backwards dominates the preheader,
leading us to believe it's control flow equivalent to preheader. This is
obviously wrong, since we can loop forever if "v" isn't a cell.

The solution here is to treat any backedge in the graph as a "terminal" node.
Since a backedge implies the existence of a loop.

In the above example, the backwards root now has an edge to both blocks with
"continue". This prevents us from falsely claiming that the return is control
flow equivalent with the preheader.

This patch uses DFS spanning trees to compute back edges. An edge
u->v is a back edge when u is a descendent of v in the DFS spanning
tree of the Graph.

* WTF.xcodeproj/project.pbxproj:
* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::BackwardsGraph):
* wtf/SpanningTree.h: Added.
(SpanningTree::SpanningTree):
(SpanningTree::isDescendent):

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

4 months agoSupport <object>.contentWindow
cdumez@apple.com [Fri, 29 Mar 2019 02:34:56 +0000 (02:34 +0000)]
Support <object>.contentWindow
https://bugs.webkit.org/show_bug.cgi?id=195562

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing or failing later on.

* web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-object-element/object-attributes-expected.txt:

Source/WebCore:

Support <object>.contentWindow as per:
- https://html.spec.whatwg.org/multipage/iframe-embed-object.html#dom-object-contentwindow

No new tests, updated / rebaselined existing tests.

* html/HTMLObjectElement.idl:

LayoutTests:

Update existing test to extend test coverage.

* fast/dom/HTMLObjectElement/object-as-frame-expected.txt:
* fast/dom/HTMLObjectElement/object-as-frame.html:

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

4 months agoFontFace constructor throws an exception when there is a name which starts with a...
mmaxfield@apple.com [Fri, 29 Mar 2019 02:26:47 +0000 (02:26 +0000)]
FontFace constructor throws an exception when there is a name which starts with a number
https://bugs.webkit.org/show_bug.cgi?id=196232
<rdar://problem/49293978>

Reviewed by Ryosuke Niwa.

Source/WebCore:

We were technically following the spec, but Chrome and Firefox are both consistent and it was making a website break.
This is just a short-term fix until the underlying https://bugs.webkit.org/show_bug.cgi?id=196381 is fixed.

Test: fast/text/font-face-family.html

* css/FontFace.cpp:
(WebCore::FontFace::setFamily):

LayoutTests:

* fast/text/font-face-family-expected.txt: Added.
* fast/text/font-face-family.html: Added.

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

4 months ago[Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
justin_fan@apple.com [Fri, 29 Mar 2019 02:19:37 +0000 (02:19 +0000)]
[Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
https://bugs.webkit.org/show_bug.cgi?id=194618
<rdar://problem/48055796>

Reviewed by Myles C. Maxfield.

WebIDL for "unsigned" on 64-bit is "unsigned long". Update Web GPU to match.

No new tests; no change in behavior.

* Modules/webgpu/GPUBindGroupLayoutBinding.h:
* Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp:
(WebCore::WHLSL::Metal::calculateVertexBufferIndex):
* Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h:
* Modules/webgpu/WebGPUBindGroupBinding.h:
* Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
(WebCore::validateBufferBindingType):
(WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUBufferBinding.h:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
* Modules/webgpu/WebGPURenderPassEncoder.h:
* platform/graphics/gpu/GPUBindGroupBinding.h:
* platform/graphics/gpu/GPUBindGroupLayout.h:
* platform/graphics/gpu/GPUBufferBinding.h:
* platform/graphics/gpu/GPUExtent3D.h:
* platform/graphics/gpu/GPULimits.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPUTextureDescriptor.h:
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):
(WebCore::GPURenderPassEncoder::draw):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetInputStateForPipelineDescriptor):
* platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::storageModeForPixelFormatAndSampleCount):

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

4 months agogetBoundingClientRect always returns empty rect on a collapsed range
rniwa@webkit.org [Fri, 29 Mar 2019 01:56:51 +0000 (01:56 +0000)]
getBoundingClientRect always returns empty rect on a collapsed range
https://bugs.webkit.org/show_bug.cgi?id=196380

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by Range::boundingRect merging rects via FloatRect::unite which ignores empty rects.
Use uniteIfNonZero instead to fix the bug. Note that we can't use uniteEvenIfEmpty because that would
set x, y to always 0, 0 as we would end up merging any rect with the initial empty rect.

Test: fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html

* dom/Range.cpp:
(WebCore::Range::boundingRect const):

LayoutTests:

Added a regression test.

* fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range-expected.txt: Added.
* fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html: Added.

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

4 months agoRe-sync web-platform-tests/html/browsers/the-window-object/ from upstream
cdumez@apple.com [Fri, 29 Mar 2019 01:43:31 +0000 (01:43 +0000)]
Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream
https://bugs.webkit.org/show_bug.cgi?id=196379

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream 3bfdeb8976fc.

* web-platform-tests/html/browsers/the-window-object/*: Updated.

LayoutTests:

* tests-options.json:

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

4 months agoOpcode.h(159,27): warning: adding 'unsigned int' to a string does not append to the...
Hironori.Fujii@sony.com [Fri, 29 Mar 2019 01:29:27 +0000 (01:29 +0000)]
Opcode.h(159,27): warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
https://bugs.webkit.org/show_bug.cgi?id=196343

Reviewed by Saam Barati.

Clang reports a compilation warning and recommend '&PADDING_STRING[PADDING_STRING_LENGTH]'
instead of 'PADDING_STRING + PADDING_STRING_LENGTH'.

* bytecode/Opcode.cpp:
(JSC::padOpcodeName): Moved padOpcodeName from Opcode.h because
this function is used only in Opcode.cpp. Changed macros
PADDING_STRING and PADDING_STRING_LENGTH to simple variables.
(JSC::compareOpcodePairIndices): Replaced pair with std::pair.
* bytecode/Opcode.h:
(JSC::padOpcodeName): Moved.

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

4 months agoResource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkP...
wilander@apple.com [Fri, 29 Mar 2019 01:15:59 +0000 (01:15 +0000)]
Resource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkProcess::deleteWebsiteDataForRegistrableDomains()
https://bugs.webkit.org/show_bug.cgi?id=196281
<rdar://problem/48938748>

Reviewed by Alex Christensen.

Source/WebKit:

The move of Resource Load Statistics to the network process requires that it
calls the UI process when clearing website data (previously the other way
around). This patch achieves that.

Specifically, NetworkProcess::deleteWebsiteDataForRegistrableDomains() now
filters its WebsiteDataTypes down to just the ones applicable for the UI
process and then calls DeleteWebsiteDataInUIProcessForRegistrableDomains over
IPC.

NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains() on
the UI process side makes use of the re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() function to get the relevant
data records and call WebsiteDataStore::removeData(). The re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() was removed as dead code in
https://trac.webkit.org/changeset/242056/webkit, then under the name
WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains(). The reason it
was dead code was the lack of IPC call that this patch adds.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
   Now calls DeleteWebsiteDataInUIProcessForRegistrableDomains over IPC if there
   are WebsiteDataTypes applicable to the UI process.
* NetworkProcess/NetworkProcess.h:
* Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
(WebKit::WebsiteData::filter):
    Convenience functions to manage process ownership of website data types.
* Shared/WebsiteData/WebsiteData.h:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsHasLocalStorage):
    Test infrastructure, called by the TestRunner.
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains):
    New function to be called from the network process.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::matches const):
    Now matches with WebCore::RegistrableDomain instead of a string.
(WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain const): Deleted.
    Replaced by WebsiteDataRecord::matches().
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataForRegistrableDomains):
    Re-introduced. It was removed as dead code in r242056.
(WebKit::computeNetworkProcessAccessTypeForDataRemoval):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
    Test infrastructure, called by the TestRunner.
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

This patch adds the function isStatisticsHasLocalStorage() to the
TestRunner. With it, the page can query the WebsiteDataStore in the
UI process to make sure that it sees LocalStorage.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::isStatisticsHasLocalStorage):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::isStatisticsHasLocalStorage):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

This test now covers LocalStorage too.

* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:

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

4 months agoAPI::Data::createWithoutCopying should do a null check before calling CFRelease
jiewen_tan@apple.com [Thu, 28 Mar 2019 23:47:00 +0000 (23:47 +0000)]
API::Data::createWithoutCopying should do a null check before calling CFRelease
https://bugs.webkit.org/show_bug.cgi?id=196276
<rdar://problem/48059859>

Reviewed by Alex Christensen.

Source/WebKit:

* Shared/Cocoa/APIDataCocoa.mm:
(API::Data::createWithoutCopying):

Tools:

Add an API test that will pass a nil to API::Data::createWithoutCopying via NavigationState::NavigationClient::webCryptoMasterKey.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/navigation-client-default-crypto.html:
* TestWebKitAPI/Tests/WebKitCocoa/WebCryptoMasterKey.mm: Added.
(-[WebCryptoMasterKeyNavigationDelegate _webCryptoMasterKeyForWebView:]):
(-[WebCryptoMasterKeyNavigationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::TEST):

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

4 months ago[iOS] Automatic focus of input field is flaky
pvollan@apple.com [Thu, 28 Mar 2019 23:30:52 +0000 (23:30 +0000)]
[iOS] Automatic focus of input field is flaky
https://bugs.webkit.org/show_bug.cgi?id=196302

Reviewed by Brent Fulgham.

Sometimes the status of whether a keyboard is connected can be incorrect, both in the UI process, and in
the WebContent process. Fix this by sending the keyboard status to the WebContent process as part of the
Web page creation parameters. Stop caching the keyboard status in the Web process proxy, and call
[UIKeyboard isInHardwareKeyboardMode] instead, since this method is swizzled in the test harness.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::setKeyboardIsAttached): Deleted.
(WebKit::WebProcessProxy::keyboardIsAttached const): Deleted.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::isInHardwareKeyboardMode):
(WebKit::WebPageProxy::applicationWillEnterForeground):
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:

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

4 months agoThe following layout tests are flaky failures
sroberts@apple.com [Thu, 28 Mar 2019 23:11:43 +0000 (23:11 +0000)]
The following layout tests are flaky failures
http/wpt/webauthn/public-key-credential-get-success-hid.https.html
http/wpt/webauthn/public-key-credential-create-success-hid.https.html
https://bugs.webkit.org/show_bug.cgi?id=194780
https://bugs.webkit.org/show_bug.cgi?id=196377

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failures

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

4 months agostorage/domstorage/localstorage/private-browsing-affects-storage.html is a flaky...
sroberts@apple.com [Thu, 28 Mar 2019 22:32:27 +0000 (22:32 +0000)]
storage/domstorage/localstorage/private-browsing-affects-storage.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196376

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months ago[Web GPU] Prototype compute pipeline with MSL
justin_fan@apple.com [Thu, 28 Mar 2019 22:13:22 +0000 (22:13 +0000)]
[Web GPU] Prototype compute pipeline with MSL
https://bugs.webkit.org/show_bug.cgi?id=196107
<rdar://problem/46289650>

Reviewed by Myles Maxfield.

Source/WebCore:

Add GPUComputePassEncoder, GPUComputePipeline, and GPUComputePipelineDescriptor.
Implement everything needed to prototype a compute pipeline in Web GPU using Metal shaders and bound resources.

Test: webgpu/compute-squares.html

Add files and symbols:
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

Misc fixes:
* Modules/webgpu/WHLSL/WHLSLNameResolver.h: Missing include.
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Missing include.
* Modules/webgpu/WebGPUPipelineStageDescriptor.cpp: Added. Move pipeline stage validation logic here.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const):
* Modules/webgpu/WebGPURenderPipeline.cpp: Remove unnecessary include.
* Modules/webgpu/WebGPURenderPipeline.h:
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp: Add missing inlcude.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const): Moved to WebGPUPipelineStageDescriptor.cpp.
* platform/graphics/gpu/GPUPipelineDescriptorBase.h: Add missing include.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Add missing include.
(WebCore::GPURenderPipeline::GPURenderPipeline): Remove unecessary ref of GPUPipelineLayout.
* platform/text/mac/TextEncodingRegistryMac.mm: Carbon.h was causing ambiguous reference build errors in this file.

Enable creating a GPUComputePassEncoder from a GPUCommandEncoder:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::beginRenderPass): No longer passing this WebGPUCommandEncoder to pass encoders.
(WebCore::WebGPUCommandEncoder::beginComputePass): Added.
* Modules/webgpu/WebGPUCommandEncoder.h:
* Modules/webgpu/WebGPUCommandEncoder.idl:

Add GPUComputePassEncoder:
* Modules/webgpu/WebGPUComputePassEncoder.cpp: Added.
(WebCore::WebGPUComputePassEncoder::create):
(WebCore::WebGPUComputePassEncoder::WebGPUComputePassEncoder):
(WebCore::WebGPUComputePassEncoder::setPipeline):
(WebCore::WebGPUComputePassEncoder::dispatch):
(WebCore::WebGPUComputePassEncoder::passEncoder):
(WebCore::WebGPUComputePassEncoder::passEncoder const):
* Modules/webgpu/WebGPUComputePassEncoder.h: Added.
* Modules/webgpu/WebGPUComputePassEncoder.idl: Added.
* platform/graphics/gpu/GPUComputePassEncoder.h: Added.
(WebCore::GPUComputePassEncoder::~GPUComputePassEncoder):
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Added.
(WebCore::GPUComputePassEncoder::tryCreate):
(WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
(WebCore::GPUComputePassEncoder::setPipeline):
(WebCore::GPUComputePassEncoder::dispatch): Use a default calculation for threadsPerThreadgroup while MSL is still an accepted shader format.
(WebCore::GPUComputePassEncoder::platformPassEncoder const):
(WebCore::GPUComputePassEncoder::useResource):
(WebCore::GPUComputePassEncoder::setComputeBuffer):

Add GPUComputePipeline:
* Modules/webgpu/WebGPUComputePipeline.cpp: Added.
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
* Modules/webgpu/WebGPUComputePipeline.h: Added.
(WebCore::WebGPUComputePipeline::computePipeline const):
* Modules/webgpu/WebGPUComputePipeline.idl: Added.
* Modules/webgpu/WebGPUComputePipelineDescriptor.cpp: Added.
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
* Modules/webgpu/WebGPUComputePipelineDescriptor.h: Added.
* Modules/webgpu/WebGPUComputePipelineDescriptor.idl: Added.
* platform/graphics/gpu/GPUComputePipeline.h: Added.
(WebCore::GPUComputePipeline::platformComputePipeline const):
* platform/graphics/gpu/GPUComputePipelineDescriptor.h: Added.
(WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Added.
(WebCore::tryCreateMtlComputeFunction):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):

Enable creating a GPUComputePipeline from a GPUDevice:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createComputePipeline const):
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateComputePipeline const):
* platform/graphics/gpu/GPUDevice.h:

No longer unnecessarily ref the WebGPUCommandEncoder when creating pass encoder:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup):
(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder): Deleted.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Deleted.
* Modules/webgpu/WebGPUProgrammablePassEncoder.h:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setPipeline):
(WebCore::WebGPURenderPassEncoder::passEncoder):
(WebCore::WebGPURenderPassEncoder::passEncoder const):
* Modules/webgpu/WebGPURenderPassEncoder.h:

Updates to GPUBindGroup and *setBindGroup for compute function arguments:
* platform/graphics/gpu/GPUBindGroup.h:
(WebCore::GPUBindGroup::vertexArgsBuffer const):
(WebCore::GPUBindGroup::fragmentArgsBuffer const):
(WebCore::GPUBindGroup::computeArgsBuffer const):
(WebCore::GPUBindGroup::vertexArgsBuffer): Deleted. Const-qualified.
(WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsMTLSamplerState): Now just returns the MTLSamplerState to reduce reference churning.
(WebCore::GPUBindGroup::tryCreate):
(WebCore::GPUBindGroup::GPUBindGroup):
(WebCore::tryGetResourceAsSampler): Renamed to tryGetResourceAsMTLSamplerState.

Updates to GPUProgrammablePassEncoder and GPURenderPassEncoder:
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
(WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
(WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
(WebCore::GPUProgrammablePassEncoder::setComputeBuffer): Added.
* platform/graphics/gpu/GPURenderPassEncoder.h:
(WebCore::GPURenderPassEncoder::~GPURenderPassEncoder):
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Remove unecessary include.
(WebCore::GPUProgrammablePassEncoder::endPass): No longer virtual. Delegates shared behavior for derived classes.
(WebCore::GPUProgrammablePassEncoder::setBindGroup):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::platformPassEncoder const):
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::GPURenderPassEncoder::draw):
(WebCore::GPURenderPassEncoder::useResource): These private overrides are called only by base after checking for encoder existence.
(WebCore::GPURenderPassEncoder::setVertexBuffer): Ditto.
(WebCore::GPURenderPassEncoder::setFragmentBuffer): Ditto.
(WebCore::GPURenderPassEncoder::endPass): Deleted. Now handled by base class.

LayoutTests:

Add a basic test to create, execute, and verify the results of a Web GPU compute pipeline.

* webgpu/compute-squares-expected.txt: Added.
* webgpu/compute-squares.html: Added.
* webgpu/whlsl.html: Update some function names to match API changes.

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

4 months agoCodeBlock::jettison() should disallow repatching its own calls
tzagallo@apple.com [Thu, 28 Mar 2019 22:05:34 +0000 (22:05 +0000)]
CodeBlock::jettison() should disallow repatching its own calls
https://bugs.webkit.org/show_bug.cgi?id=196359
<rdar://problem/48973663>

Reviewed by Saam Barati.

JSTests:

* stress/call-link-info-osrexit-repatch.js: Added.
(foo):

Source/JavaScriptCore:

CodeBlock::jettison() calls CommonData::invalidate, which replaces the `hlt`
instruction with the jump to OSR exit. However, if the `hlt` was immediately
followed by a call to the CodeBlock being jettisoned, we would write over the
OSR exit address while unlinking all the incoming CallLinkInfos later in
CodeBlock::jettison().

Change it so that we set a flag, `clearedByJettison`, in all the CallLinkInfos
owned by the CodeBlock being jettisoned. If the flag is set, we will avoid
repatching the call during unlinking. This is safe because this call will never
be reachable again after the CodeBlock is jettisoned.

* bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::setCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::setCodeBlock):
(JSC::CallLinkInfo::clearCodeBlock):
* bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::clearedByJettison):
(JSC::CallLinkInfo::setClearedByJettison):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::jettison):
* jit/Repatch.cpp:
(JSC::revertCall):

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

4 months agoFixed typing error I made in https://trac.webkit.org/changeset/243612/webkit
sroberts@apple.com [Thu, 28 Mar 2019 22:03:40 +0000 (22:03 +0000)]
Fixed typing error I made in https://trac.webkit.org/changeset/243612/webkit
https://bugs.webkit.org/show_bug.cgi?id=196357

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Fixing error in test expectations file

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

4 months ago[JSC] imports-oom.js intermittently fails
ysuzuki@apple.com [Thu, 28 Mar 2019 21:45:53 +0000 (21:45 +0000)]
[JSC] imports-oom.js intermittently fails
https://bugs.webkit.org/show_bug.cgi?id=196373

Reviewed by Saam Barati.

imports-oom.js ensures that a wasm module compilation / instantiation throws an OOM error instead of crashing when compiling / instantiating their entry points
with extremely low executable memory amount. And this test expects we at least once successfully compile, instantiate, and execute a wasm module to test that
wasm implementation is always throwing an OOM error. However, maybe due to wasm changes, the amount of executable memory consumed by wasm compilation is changed,
and now we may encounter an OOM error at the first compilation. Since imports-oom.js randomize the amount of executable memory used by the generated wasm module,
imports-oom.js intermittently fails when it first generates large wasm module which cannot be compiled.

This patch reduces the maxParams from 32 to 8 to reduce the size of randomly generated wasm module. Since we repeatedly generate wasm modules, this test soon encounter
an expected OOM error. But this avoids the situation that we get an OOM error when we compile a first wasm module.

* wasm/lowExecutableMemory/imports-oom.js:

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

4 months agoFix font family for WebKit.org
jond@apple.com [Thu, 28 Mar 2019 21:30:41 +0000 (21:30 +0000)]
Fix font family for WebKit.org
https://bugs.webkit.org/show_bug.cgi?id=196311

Reviewed by Myles C. Maxfield.

* wp-content/themes/webkit/header.php: Added SF Mono loading
* wp-content/themes/webkit/style.css:
(html): Use Text font by default
(h1,): Use Display font for large headings
(.nextrouter-copy): Use Display font for routers

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

4 months agoIDBRequest::dispatchEvent should check nullability of m_transaction before operations...
jiewen_tan@apple.com [Thu, 28 Mar 2019 21:26:38 +0000 (21:26 +0000)]
IDBRequest::dispatchEvent should check nullability of m_transaction before operations that rely on it to be non null
https://bugs.webkit.org/show_bug.cgi?id=196319
<rdar://problem/49355279>

Reviewed by Alex Christensen.

The test that triggers this crash is on Bug 196276.

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::dispatchEvent):

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