WebKit-https.git
2 years ago[Attachment Support] Support dragging attachment elements out as files on macOS
wenson_hsieh@apple.com [Wed, 22 Aug 2018 21:35:02 +0000 (21:35 +0000)]
[Attachment Support] Support dragging attachment elements out as files on macOS
https://bugs.webkit.org/show_bug.cgi?id=181294
<rdar://problem/36298801>

Reviewed by Tim Horton.

Source/WebCore:

Serialize a dragged attachment element as a web archive on macOS. This allows us to move attachment elements
around a document by dragging, without performing a file upload upon every drop. Ideally, we should do this on
iOS as well, but this currently causes attachment data to go missing; further investigation to fix this for iOS
is tracked in <https://bugs.webkit.org/show_bug.cgi?id=181514>.

Tests:  WKAttachmentTestsMac.DragAttachmentAsFilePromise
        WKAttachmentTests.MoveAttachmentElementAsIconByDragging

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):

Source/WebKit:

Add support for dragging attachment elements on macOS by writing promised files to drag pasteboard. See changes
below for more details.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView filePromiseProvider:fileNameForType:]):
(-[WKWebView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKWebView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKWebView draggingSession:endedAtPoint:operation:]):
* UIProcess/API/mac/WKView.mm:
(-[WKView filePromiseProvider:fileNameForType:]):
(-[WKView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKView draggingSession:endedAtPoint:operation:]):

Plumb NSFilePromiseProviderDelegate and NSDraggingSource method implementations to WebViewImpl.

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(-[WKPromisedAttachmentContext initWithAttachmentInfo:]):
(-[WKPromisedAttachmentContext blobURL]):
(-[WKPromisedAttachmentContext filename]):
(-[WKPromisedAttachmentContext attachmentIdentifier]):

Add an object that contains the information needed to deliver a dragged attachment element's data via
NSFilePromiseProvider. This is stored as the userInfo of the NSFilePromiseProvider created upon drag start.

(WebKit::WebViewImpl::draggedImage):
(WebKit::WebViewImpl::sendDragEndToPage):

Add a helper method to handle cleanup after the dragging has finished, and call it from -draggedImage:… and
-draggingSessionEnded:…. The latter is only triggered in the where -beginDraggingSessionWithItems:… is used,
which currently only happens when dragging attachment elements.

(WebKit::WebViewImpl::fileNameForFilePromiseProvider):
(WebKit::webKitUnknownError):
(WebKit::WebViewImpl::writeToURLForFilePromiseProvider):

Deliver either NSFileWrapper data to the destination URL (in the case where an attachment identifier is known
and the corresponding API::Attachment is backed by a file wrapper), or save the contents of the blob URL to the
destination.

(WebKit::WebViewImpl::dragSourceOperationMask):
(WebKit::WebViewImpl::draggingSessionEnded):
(WebKit::WebViewImpl::startDrag):

Tools:

Add DragAndDropSimulator support for intercepting calls to -beginDraggingSessionWithitems:event:source:. This
enables us to write API tests for macOS that exercise the attachment SPI in combination with dragging attachment
elements.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[TestWKWebView attachmentElementMidPoint]):

Add a helper method local to this test suite that grabs the midpoint (in client coordinates) or the first
attachment element in the document.

(TestWebKitAPI::TEST):

Add a new API test to verify that dragging an attachment element on macOS produces file providers which may be
used to write attachment data to a path on disk. Additionally, refactor an existing API test,
MoveAttachmentElementAsIconByDragging, so that it runs on both iOS and macOS, to test the ability to move
attachment elements around in a document by using drag and drop.

* TestWebKitAPI/cocoa/DragAndDropSimulator.h:
* TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:
(-[DragAndDropTestWKWebView beginDraggingSessionWithItems:event:source:]):
(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator dealloc]):
(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator beginDraggingSessionInWebView:withItems:source:]):

Begin a drag session and kick off the -continueDragSession loop. Unlike -performDragInWebView:…, which spins
the main runloop until dragging ends, this version returns execution to the web view and schedules dragging
updates asynchronously. This matches AppKit behavior.

(-[DragAndDropSimulator continueDragSession]):

Increment the dragging progress amount, send a drag update to the web view, and continue scheduling calls to
itself until the progress reaches 1.

(-[DragAndDropSimulator performDragInWebView:atLocation:withImage:pasteboard:source:]):
(-[DragAndDropSimulator initializeDraggingInfo:dragImage:source:]):

Pull out common logic for creating a new TestDraggingInfo after starting a drag.

(-[DragAndDropSimulator insertedAttachments]):
(-[DragAndDropSimulator removedAttachments]):
(-[DragAndDropSimulator draggingSession]):
(-[DragAndDropSimulator receivePromisedFiles]):

Helper method to save promised files written to the pasteboard after a drag to the temporary directory. These
files are tracked by DragAndDropSimulator and automatically cleaned up after the test finishes.

(-[DragAndDropSimulator endDataTransfer]):

Add a method stub on macOS, so that MoveAttachmentElementAsIconByDragging can be made cross-platform.

(-[DragAndDropSimulator _webView:didInsertAttachment:withSource:]):
(-[DragAndDropSimulator _webView:didRemoveAttachment:]):

Implement method stubs to keep track of inserted or removed attachments while simulating a drag.

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

2 years ago[iOS] Add support for the inputmode attribute
akeerthi@apple.com [Wed, 22 Aug 2018 21:22:13 +0000 (21:22 +0000)]
[iOS] Add support for the inputmode attribute
https://bugs.webkit.org/show_bug.cgi?id=183621

Reviewed by Tim Horton.

Source/WebCore:

Added the inputmode attribute to the HTMLInputElement and HTMLTextAreaElement IDL
files. The possible values for the attribute are specified in InputModeNames.

Test: fast/forms/inputmode-attribute.html

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLAttributeNames.in:
* html/HTMLInputElement.idl:
* html/HTMLTextAreaElement.idl:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::inputMode const):
(WebCore::HTMLTextFormControlElement::setInputMode):
* html/HTMLTextFormControlElement.h:
* html/InputModeNames.cpp: Added.
(WebCore::InputModeNames::text):
(WebCore::InputModeNames::tel):
(WebCore::InputModeNames::url):
(WebCore::InputModeNames::email):
(WebCore::InputModeNames::numeric):
(WebCore::InputModeNames::decimal):
(WebCore::InputModeNames::search):
* html/InputModeNames.h: Added.

Source/WebKit:

The inputmode attribute specifies which input mechanism would be most helpful for
users entering content in textfield inputs and textareas. This patch adds support
for seven values: text, tel, url, email, numeric, decimal and search.

On iOS, we can specify UIKeyboardTypes that best match the supplied inputmode.
- text: UIKeyboardTypeDefault
- tel: UIKeyboardTypePhonePad
- url: UIKeyboardTypeURL
- email: UIKeyboardTypeEmailAddress
- numeric: UIKeyboardTypeNumbersAndPunctuation
- decimal: UIKeyboardTypeDecimalPad
- search: UIKeyboardTypeWebSearch

In the case that the inputmode attribute is not specified, we fall back to using
our existing heuristic to determine what kind of keyboard to show for textfields.

* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h: Added inputMode field.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView textInputTraits]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::inputModeForElement):
(WebKit::WebPage::getAssistedNodeInformation):

Tools:

Added an API test to verify that the correct UIKeyboardType is set depending on
the type, inputmode, and pattern specified for an input field.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/ios/UIKitSPI.h:

LayoutTests:

Added test to verify behavior when getting and setting the inputmode attribute.

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

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

2 years agoWKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
jeffm@apple.com [Wed, 22 Aug 2018 21:08:38 +0000 (21:08 +0000)]
WKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
https://bugs.webkit.org/show_bug.cgi?id=188764

Reviewed by Alex Christensen.

Add a new private WKNavigationDelegate method that takes a completion handler so clients can return
a custom unavailability description in addition to the policy. Change WebPageProxy::findPlugin() to
send a delayed reply and API::LoaderClient::pluginLoadPolicy()/API::NavigationClient::decidePolicyForPluginLoad()
to take a completion handler to support this.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::pluginLoadPolicy):
Changed to take a completion handler. The default implementation doesn't return a custom
unavailability description.

* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
Ditto.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
Changed pluginLoadPolicy() to take a completion handler.

(WKPageSetPageNavigationClient):
Changed decidePolicyForPluginLoad() to take a completion handler.

* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
Add alternate version of -decidePolicyForPluginLoadWithCurrentPolicy: that allows clients to return
the unavailibility description.

* UIProcess/Cocoa/NavigationState.h:
Add flag for new delegate method.
Changed decidePolicyForPluginLoad() to take a completion handler.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
Calculate flag for new delegate method.

(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
Changed to take a completion handler.
Prefer new delegate method, if available.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
Changed to send a delayed reply.
Refactored some code into a lambda so it can be shared when using m_navigationClient->decidePolicyForPluginLoad().
Removed unneeded UNUSED_PARAM() macros.

* UIProcess/WebPageProxy.h:
Changed findPlugin() to send a delayed reply.

* UIProcess/WebPageProxy.messages.in:
Ditto.

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

2 years agoFix API test on Sierra after r235139
achristensen@apple.com [Wed, 22 Aug 2018 20:46:41 +0000 (20:46 +0000)]
Fix API test on Sierra after r235139
https://bugs.webkit.org/show_bug.cgi?id=188810

* TestWebKitAPI/Tests/mac/LimitTitleSize.mm:
(TEST):

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

2 years agohttps://bugs.webkit.org/show_bug.cgi?id=188859
msaboff@apple.com [Wed, 22 Aug 2018 20:42:17 +0000 (20:42 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=188859
Eliminate dead code operationThrowDivideError() and operationThrowOutOfBoundsAccessError()

Rubber-stamped by Saam Barati.

Deleted these two functions.

* jit/JITOperations.cpp:
* jit/JITOperations.h:

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

2 years agoLog more often during AirPlay state changes
eric.carlson@apple.com [Wed, 22 Aug 2018 20:40:22 +0000 (20:40 +0000)]
Log more often during AirPlay state changes
https://bugs.webkit.org/show_bug.cgi?id=188854

Always log some infrequent but important AirPlay state changes to make debugging easier.

Reviewed by Jer Noble.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Low always.
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Ditto.
(WebCore::HTMLMediaElement::setWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget): Ditto.

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

2 years ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 20:31:47 +0000 (20:31 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

2 years agoDon't use WTF_CPU_MIPS when building for mips64
berto@igalia.com [Wed, 22 Aug 2018 20:27:22 +0000 (20:27 +0000)]
Don't use WTF_CPU_MIPS when building for mips64
https://bugs.webkit.org/show_bug.cgi?id=188858

Reviewed by Michael Catanzaro.

* CMakeLists.txt: Use WTF_CPU_MIPS64 for this architecture.

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

2 years agoMake ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
wilander@apple.com [Wed, 22 Aug 2018 20:07:17 +0000 (20:07 +0000)]
Make ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
https://bugs.webkit.org/show_bug.cgi?id=188856

Unreviewed test gardening.

* TestExpectations:
    Skipped test since it's only valid on WK2 platforms.
* http/tests/websocket/connection-refusal-in-frame-resource-load-statistics-expected.txt: Added.
* http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html: Renamed from LayoutTests/http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html.
* http/tests/websocket/construct-in-detached-frame-resource-load-statistics-expected.txt: Removed.
* http/tests/websocket/resources/construct-in-detached-frame-resource-load-statistics.html: Removed.
* http/tests/websocket/resources/localhost-websocket-connect.html: Added.
* platform/wk2/TestExpectations:
    Marked test as [ Pass ].

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

2 years ago[iOS] Rebaseline table tests
ryanhaddad@apple.com [Wed, 22 Aug 2018 20:02:31 +0000 (20:02 +0000)]
[iOS] Rebaseline table tests
https://bugs.webkit.org/show_bug.cgi?id=188833

Unreviewed test gardening.

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

2 years agoFocus navigation order in slot fallback contents is wrong
rniwa@webkit.org [Wed, 22 Aug 2018 19:59:24 +0000 (19:59 +0000)]
Focus navigation order in slot fallback contents is wrong
https://bugs.webkit.org/show_bug.cgi?id=178001
<rdar://problem/42842997>

Reviewed by Antti Koivisto.

Source/WebCore:

The bug here is that when a slot uses its fallback content, the fallback content's focus order doesn't get
grouped by that of the slot. Consider the following DOM tree:

- ShadowRoot
    - div tabindex = 2
    - slot tabindex = 1
        - span tabindex = 3

In this example, the sequential focus navigation should be slot, span, then div. Even though span has tabindex
order of 3, which is lower than that of div, the fallback content of the slot should be grouped together
before the focus moves out of the slot content.

In WebKit, this concept of grouping elements for the sequential focus navigation ordering is implemeneted
as FocusNavigationScope. Both ShadowRoot and HTMLSlotElement are treated as a focus scope owner but we had
a bug that a slot element which uses its fallback content was not treated as a focus scope owner.

This patch addresses the bug by treating a slot wich uses its fallback content as a focus scope owner.

Test: fast/shadow-dom/focus-navigation-across-slots.html

* page/FocusController.cpp:
(WebCore::isFocusScopeOwner): Treat a slot elment hs a focus scope owner regardless of whether it has assigned
nodes or not.
(WebCore::FocusNavigationScope::SlotKind): Added.
(WebCore::FocusNavigationScope::m_slotKind): Added.
(WebCore::FocusNavigationScope::parentInScope const): Return null if `node` is a child of the slot element for
which this FocusNavigationScope is created (i.e. `node` is slot's fallback content).
(WebCore::FocusNavigationScope::firstNodeInScope const): Return the first child node when this
FocusNavigationScope is for a slot element using its fallback content.
(WebCore::FocusNavigationScope::lastNodeInScope const): Ditto for the last child.
(WebCore::FocusNavigationScope::FocusNavigationScope):
(WebCore::FocusNavigationScope::scopeOf): The scope of a child of a slot element which uses its fallback content
is its slot element (i.e. the current node is a fallback content). We can't simply check the current node is
a slot element which uses a fallback content since the scope of a slot element is the parent scope. e.g. its
tree scope like ShadowRoot or Document inside which this slot element appears.
(WebCore::FocusNavigationScope::scopeOwnedByScopeOwner): Create the appropriate FocusNavigationScope based on
whether the slot element has assigned or it uses its fallback content.

LayoutTests:

Updated the sequential focus navigation test for shadow DOM and its expectation.

New test passes in Firefox & Chrome other than the fact both browsers fail to focus a slot elemennt.

* fast/shadow-dom/focus-navigation-across-slots-expected.txt:
* fast/shadow-dom/focus-navigation-across-slots.html:

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

2 years agoMove files in WebCore project to match Xcode folder structure
ddkilzer@apple.com [Wed, 22 Aug 2018 19:33:46 +0000 (19:33 +0000)]
Move files in WebCore project to match Xcode folder structure
<https://webkit.org/b/188851>

Reviewed by Tim Horton.

Source/WebCore:

* Scripts/LocalizableStrings.pm: Renamed from Source/WebCore/LocalizableStrings.pm.
* Scripts/extract-localizable-strings.pl: Renamed from Source/WebCore/extract-localizable-strings.pl.
* WebCore.xcodeproj/project.pbxproj: Update to match new location of files.
* platform/audio/cocoa/WebAudioBufferList.cpp: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.cpp.
* platform/audio/cocoa/WebAudioBufferList.h: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.h.
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaSampleAVFObjC.h.
* platform/ios/wak/WAKViewInternal.h: Renamed from Source/WebCore/platform/WAKViewInternal.h.
  Also fix 3 webkit-style warnings.

Tools:

* Scripts/extract-localizable-strings:
* Scripts/update-webkit-localizable-strings:
- Update to match new location of extract-localizable-strings.pl.

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

2 years agoMake data-view-access.js run less time to prevent timeouts on 32-bit
sbarati@apple.com [Wed, 22 Aug 2018 18:53:27 +0000 (18:53 +0000)]
Make data-view-access.js run less time to prevent timeouts on 32-bit

* microbenchmarks/data-view-accesses.js:

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

2 years agoWeb Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
drousso@apple.com [Wed, 22 Aug 2018 17:56:44 +0000 (17:56 +0000)]
Web Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
https://bugs.webkit.org/show_bug.cgi?id=188803
<rdar://problem/43572838>

Reviewed by Matt Baker.

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

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

2 years agoVersioning.
kocsen_chung@apple.com [Wed, 22 Aug 2018 17:51:01 +0000 (17:51 +0000)]
Versioning.

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

2 years ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 17:29:18 +0000 (17:29 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

2 years ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 17:19:30 +0000 (17:19 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

2 years agoTry removing defaultSessionParameters from NetworkProcessCreationParameters
sihui_liu@apple.com [Wed, 22 Aug 2018 17:17:34 +0000 (17:17 +0000)]
Try removing defaultSessionParameters from NetworkProcessCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=188831

Reviewed by Alex Christensen.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):

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

2 years ago[LFC][Floating] Move files to a dedicated directory.
zalan@apple.com [Wed, 22 Aug 2018 17:10:34 +0000 (17:10 +0000)]
[LFC][Floating] Move files to a dedicated directory.
https://bugs.webkit.org/show_bug.cgi?id=188846

Reviewed by Simon Fraser.

layout/Float* -> layout/floats

* WebCore.xcodeproj/project.pbxproj:
* layout/floatformatting/FloatingContext.cpp: Renamed from Source/WebCore/layout/FloatingContext.cpp.
(WebCore::Layout::FloatingPair::isEmpty const):
(WebCore::Layout::FloatingPair::verticalPosition const):
(WebCore::Layout::Iterator::operator* const):
(WebCore::Layout::begin):
(WebCore::Layout::end):
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingContext::initialVerticalPosition const):
(WebCore::Layout::FloatingContext::alignWithContainingBlock const):
(WebCore::Layout::FloatingContext::alignWithFloatings const):
(WebCore::Layout::FloatingContext::toContainingBlock const):
(WebCore::Layout::FloatingPair::FloatingPair):
(WebCore::Layout::FloatingPair::left const):
(WebCore::Layout::FloatingPair::right const):
(WebCore::Layout::FloatingPair::intersects const):
(WebCore::Layout::FloatingPair::operator == const):
(WebCore::Layout::FloatingPair::bottom const):
(WebCore::Layout::Iterator::Iterator):
(WebCore::Layout::previousFloatingIndex):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):
(WebCore::Layout::Iterator::operator== const):
(WebCore::Layout::Iterator::operator!= const):
* layout/floatformatting/FloatingContext.h: Renamed from Source/WebCore/layout/FloatingContext.h.
(WebCore::Layout::FloatingContext::floatingState const):
(WebCore::Layout::FloatingContext::layoutContext const):
* layout/floatformatting/FloatingState.cpp: Renamed from Source/WebCore/layout/FloatingState.cpp.
(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::belongsToThisFloatingContext):
(WebCore::Layout::FloatingState::remove):
(WebCore::Layout::FloatingState::append):
(WebCore::Layout::FloatingState::bottom const):
* layout/floatformatting/FloatingState.h: Renamed from Source/WebCore/layout/FloatingState.h.
(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::isEmpty const):
(WebCore::Layout::FloatingState::FloatItem::layoutBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlock const):
(WebCore::Layout::FloatingState::FloatItem::displayBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlockDisplayBox const):
(WebCore::Layout::FloatingState::floats const):
(WebCore::Layout::FloatingState::last const):
(WebCore::Layout::FloatingState::layoutContext const):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):

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

2 years agoThe DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of...
mark.lam@apple.com [Wed, 22 Aug 2018 16:55:19 +0000 (16:55 +0000)]
The DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of both branch directions.
https://bugs.webkit.org/show_bug.cgi?id=188298
<rdar://problem/42888427>

Reviewed by Saam Barati.

JSTests:

* stress/bug-188298.js: Added.

Source/JavaScriptCore:

In the event that both targets of a Branch is the same block, then even if we'll
always take one path of the branch, the other target is not unreachable because
it is the same target as the one in the taken path.  Hence, it should not be
jettisoned.

* JavaScriptCore.xcodeproj/project.pbxproj:
- Added DFGCFG.h which is in use and should have been added to the project.
* dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):

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

2 years agoUse unified build for WebProcess
timothy_horton@apple.com [Wed, 22 Aug 2018 16:54:14 +0000 (16:54 +0000)]
Use unified build for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=185015

Reviewed by Alex Christensen.

* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
* WebProcess/Databases/WebDatabaseProvider.cpp:
* WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
* WebProcess/FullScreen/WebFullScreenManager.cpp:
* WebProcess/Gamepad/WebGamepadProvider.cpp:
* WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
* WebProcess/Geolocation/WebGeolocationManager.cpp:
* WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectEventListener.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
* WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
* WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
* WebProcess/Network/NetworkProcessConnection.cpp:
* WebProcess/Network/WebLoaderStrategy.cpp:
* WebProcess/Network/WebResourceLoader.cpp:
* WebProcess/Network/WebSocketProvider.cpp:
* WebProcess/Network/WebSocketStream.cpp:
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
* WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
* WebProcess/Network/webrtc/LibWebRTCResolver.h:
* WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
* WebProcess/Network/webrtc/LibWebRTCSocket.h:
* WebProcess/Network/webrtc/WebMDNSRegister.cpp:
* WebProcess/Network/webrtc/WebRTCMonitor.cpp:
* WebProcess/Network/webrtc/WebRTCMonitor.h:
* WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
* WebProcess/Plugins/Netscape/NetscapePluginNone.cpp:
* WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
* WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
* WebProcess/Plugins/Plugin.cpp:
* WebProcess/Plugins/PluginProcessConnection.cpp:
* WebProcess/Plugins/PluginProxy.cpp:
* WebProcess/Plugins/PluginView.cpp:
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
* WebProcess/Storage/WebSWClientConnection.cpp:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
* WebProcess/Storage/WebSWOriginTable.cpp:
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
* WebProcess/UserContent/WebUserContentController.cpp:
* WebProcess/WebConnectionToUIProcess.cpp:
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebColorChooser.cpp:
* WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
* WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp:
* WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
* WebProcess/WebCoreSupport/WebDragClient.cpp:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
* WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebPopupMenu.cpp:
* WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
* WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp:
* WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
* WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
* WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
* WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:
* WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
* WebProcess/WebCoreSupport/mac/WebPopupMenuMac.mm:
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
* WebProcess/WebCoreSupport/win/WebContextMenuClientWin.cpp:
* WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp:
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
* WebProcess/WebPage/DrawingArea.cpp:
* WebProcess/WebPage/EventDispatcher.cpp:
* WebProcess/WebPage/FindController.cpp:
* WebProcess/WebPage/LayerTreeHost.cpp:
* WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
* WebProcess/WebPage/RemoteWebInspectorUI.cpp:
* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
* WebProcess/WebPage/VisitedLinkTableController.cpp:
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
* WebProcess/WebPage/WebContextMenu.cpp:
* WebProcess/WebPage/WebDocumentLoader.cpp:
* WebProcess/WebPage/WebFrame.cpp:
* WebProcess/WebPage/WebInspector.cpp:
* WebProcess/WebPage/WebInspectorUI.cpp:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPageOverlay.cpp:
* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
* WebProcess/WebPage/ios/FindControllerIOS.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/WebPage/mac/DrawingAreaMac.cpp:
* WebProcess/WebPage/mac/PageBannerMac.mm:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
* WebProcess/WebPage/win/WebPageWin.cpp:
* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
* WebProcess/WebProcess.cpp:
* WebProcess/WebStorage/StorageAreaImpl.cpp:
* WebProcess/WebStorage/StorageAreaMap.cpp:
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
* WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
* WebProcess/cocoa/PlaybackSessionManager.mm:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
* WebProcess/cocoa/VideoFullscreenManager.mm:
* WebProcess/cocoa/WebProcessCocoa.mm:
* WebProcess/win/WebProcessMainWin.cpp:
* WebProcess/win/WebProcessWin.cpp:
* WebProcess/wpe/WebProcessMainWPE.cpp:

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

2 years agoCleanup: Add type alias for spell document tag
dbates@webkit.org [Wed, 22 Aug 2018 16:46:22 +0000 (16:46 +0000)]
Cleanup: Add type alias for spell document tag
https://bugs.webkit.org/show_bug.cgi?id=188817

Reviewed by Simon Fraser.

* UIProcess/TextChecker.h:
* UIProcess/TextCheckerCompletion.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::spellDocumentTag):
* UIProcess/WebPageProxy.h: Also addressed FIXME comment and modernized the code to use a std::optional
while I am here.
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::spellDocumentTagMap):
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::textCheckerFor):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
* UIProcess/win/TextCheckerWin.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/wpe/TextCheckerWPE.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):

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

2 years agoFetch: Stop checking Request.integrity's value in no-cors mode
commit-queue@webkit.org [Wed, 22 Aug 2018 16:24:39 +0000 (16:24 +0000)]
Fetch: Stop checking Request.integrity's value in no-cors mode
https://bugs.webkit.org/show_bug.cgi?id=188802

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-22
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Update integrity.html expected result.

* web-platform-tests/fetch/api/basic/integrity-expected.txt:

Source/WebCore:

Remove this check since it was removed from the spec.

Behavior matches Chrome and Firefox.

Test: http/tests/subresource-integrity/sri-fetch.js:

* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeOptions):

LayoutTests:

Unskip fetch/api/basic/integrity.html and adjust sri-fetch.js.

* TestExpectations:
* http/tests/subresource-integrity/sri-fetch.js:

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

2 years agoMark MediaStream Recording API as under consideration
youenn@apple.com [Wed, 22 Aug 2018 15:59:06 +0000 (15:59 +0000)]
Mark MediaStream Recording API as under consideration
https://bugs.webkit.org/show_bug.cgi?id=188822

Reviewed by Jon Lee.

* features.json:

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

2 years ago[GTK][WPE] Unreviewed test gardening
Ms2ger@igalia.com [Wed, 22 Aug 2018 15:21:16 +0000 (15:21 +0000)]
[GTK][WPE] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=188845

Unreviewed test gardening.

* platform/gtk/TestExpectations: Note failing tests.
* platform/wpe/TestExpectations: Note failing tests.

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

2 years ago[GTK] Never return an uninitialized ImageGStreamer object.
Ms2ger@igalia.com [Wed, 22 Aug 2018 14:47:03 +0000 (14:47 +0000)]
[GTK] Never return an uninitialized ImageGStreamer object.
https://bugs.webkit.org/show_bug.cgi?id=188305

Reviewed by Philippe Normand.

The single caller was already checking for a null return value, so
make that check actually do something. Also remove the null-check on
the return value of image(), which asserted that it would never return
null.

Test: fast/canvas/canvas-createPattern-video-loading.html

* platform/graphics/gstreamer/ImageGStreamer.h:
(WebCore::ImageGStreamer::createImage): Return null if m_image wasn't created.
(WebCore::ImageGStreamer::image): Return a reference.
(WebCore::ImageGStreamer::rect): Always assert that m_image is present.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint): Update for new signature.

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

2 years agoAdd changes missing from r234925.
zalan@apple.com [Wed, 22 Aug 2018 14:27:43 +0000 (14:27 +0000)]
Add changes missing from r234925.

* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::isMarginTopCollapsedWithParent):
(WebCore::Layout::isMarginBottomCollapsedThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent):

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

2 years agoUse OptionSet for NetworkCache::Storage::TraverseFlags
antti@apple.com [Wed, 22 Aug 2018 14:19:48 +0000 (14:19 +0000)]
Use OptionSet for NetworkCache::Storage::TraverseFlags
https://bugs.webkit.org/show_bug.cgi?id=188837

Reviewed by Anders Carlsson.

Type safe flags.

* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::readRecordsList):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation):
(WebKit::NetworkCache::Storage::traverse):
* NetworkProcess/cache/NetworkCacheStorage.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManager::activityStateDidChange):

Also use OptionSet<>::containsAll() in a few places.

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

2 years ago[GTK] imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackqualit...
Ms2ger@igalia.com [Wed, 22 Aug 2018 14:13:29 +0000 (14:13 +0000)]
[GTK] imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187591

Unreviewed test gardening.

Re-enable mediasource-getvideoplaybackquality.html.

The crash was fixed in r233981, and the failure in r234981-r234983.

* platform/gtk/TestExpectations:

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

2 years agoREGRESSION(r234330): [GTK] svg/as-image/svg-image-with-data-uri-background.html is...
Ms2ger@igalia.com [Wed, 22 Aug 2018 12:47:09 +0000 (12:47 +0000)]
REGRESSION(r234330): [GTK] svg/as-image/svg-image-with-data-uri-background.html is failing
https://bugs.webkit.org/show_bug.cgi?id=188220

Unreviewed test gardening.

* platform/gtk/TestExpectations: Re-enable svg/as-image/svg-image-with-data-uri-background.html.

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

2 years ago[WPE] pkg-config files should require libwpe
carlosgc@webkit.org [Wed, 22 Aug 2018 12:29:52 +0000 (12:29 +0000)]
[WPE] pkg-config files should require libwpe
https://bugs.webkit.org/show_bug.cgi?id=188835

Reviewed by Žan Doberšek.

* wpe/wpe-web-extension.pc.in:
* wpe/wpe-webkit.pc.in:

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

2 years ago[CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
zandobersek@gmail.com [Wed, 22 Aug 2018 12:14:14 +0000 (12:14 +0000)]
[CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
https://bugs.webkit.org/show_bug.cgi?id=188693

Reviewed by Carlos Garcia Campos.

.:

* Source/cmake/OptionsGTK.cmake: Enable USE_NICOSIA alongside
USE_COORDINATED_GRAPHICS and USE_COORDINATED_GRAPHICS_THREADED.
* Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebCore:

Populate Nicosia::CompositionLayer with additional LayerState member
objects. For now we're using pending, staging and committed states,
though it might be possible to narrow down these to just two.

Pending state contains state that will be moved to staging during the
final steps of the next layer flush. flushState() method accumulates all
state changes in the staging state, and also allows the caller to
additionally perform flushing operations that are specific to backing
store, image backing or content layer containers.

commitState() method moves staging state over into the committed state,
again allowing user to pass a functor that receives the just-committed
state and apply it to their composition engine.

Changes in state objects are done under a thread-safe lock. This might
not be completely necessary at this point, but will be useful when
additonal layer state updates will be coming from e.g. the scrolling
thread. It might also make sense to tie in this lock use with the
Nicosia::Scene lock in the future.

Nicosia::ContentLayerTextureMapperImpl is modified slightly to allow
determining during flushes whether an update is pending. This is
necessary for a special case in ThreadedCompositor where content (i.e.
platform) layers like WebGL or video require an additional level of
scene update coordination. This complete special case has to go through
another review to see whether it's still necessary. Ideally we would be
able to remove it.

CoordinatedGraphicsLayer is finally switched over to using
Nicosia layer objects for state updates of any kind. This patch only
adds all the necessary bits, but doesn't yet remove any of the existing
code (but rather disables it temporarily, before it's removed).

Updating of simple state values is already in place. For backing stores,
the flushCompositingStateForThisLayerOnly() method now takes care of
preparing the backing store object if necessary as per layer state,
while the updateContentBuffers() method is switched to operate with
TiledBackingStore objects now kept on the BackingStoreTextureMapperImpl
instance associated with that backing store. Helper methods like
adjustContentsScale() and createBackingStore(), only called from the
updateContentBuffers() method, are removed and the code there inlined.

For image-backed layers, the update is now done directly in
the flushCompositingStateForThisLayerOnly() method, if necessary. The
helper syncImageBacking() method is commented out in order to prevent
double-painting of image buffers for now, but all this (along with the
CoordinatedImageBacking logic in CompositingCoordinator) will be removed
later.

For layers backed by platform layer objects, integration is relatively
simple. setContentsToPlatformLayer() is changed to properly handle any
passed-in platform layer object, and updatePlatformLayer() invokes the
swapBuffersIfNeeded() method on the ContentLayerTextureMapperImpl object
during each flush, if necessary.

In order to ensure any Nicosia-specific state update properly triggers
a composition update, m_nicosia.performLayerUpdate is added and flipped
to true during the flush in case of any state change. This then triggers
a layer sync in the CompositingCoordinator object when the
syncPendingStateChangesIncludingSubLayers() method is called. While no
old-style layer state update is provided, it causes the necessary
synchronization step that properly picks up the Nicosia-provided state
changes. Once the old-style layer state tracking is removed, this method
of update triggering will have to be updated as well.

* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::flushState):
(Nicosia::CompositionLayer::commitState):
(Nicosia::CompositionLayer::accessCommitted):
* platform/graphics/nicosia/NicosiaScene.h:
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:
(Nicosia::ContentLayerTextureMapperImpl::flushUpdate):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::adjustContentsScale): Deleted.
(WebCore::CoordinatedGraphicsLayer::createBackingStore): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

Source/WebKit:

Switch CoordinatedGraphicsScene to utilizing Nicosia::CompositionLayer
objects for state updates of the TextureMapper layer tree.

CoordinatedGraphicsScene::paintToCurrentGLContext() now calls
updateSceneState() at the beginning. This is a new method that manages
all updates for a given Nicosia::Scene instance. Any removed layers
have their composition-side state cleaned up, and the current set of
layers is then iterated to ensure and update the corresponding
TextureMapperLayer objects.

Layers with any backing (painted backing store, platform-layer or image
content) are temporarly stored for updating outside of mutex-controlled
scene update. Performing all other state updates outside of this mutex
area will be investigated at a later point.

We then iterate over vectors for each layer backing, gathering any
affected CoordinatedBackingStore or TextureMapperPlatformLayerProxy
objects that we have to update.

This drops a bunch of member variables and helper methods off the
CoordinatedGraphicsScene class. The applyStateChanges() method will be
further simplified in the future. coordinateUpdateCompletionWithClient
logic in ThreadedCompositor should be checked to see whether it still
addresses any real-life problem, because at the moment it imposes a few
additional operations in terms of scene updates that we could really do
without. This will be checked later and removed if possible.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::applyStateChanges):
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::compositionLayerImpl):
(WebKit::contentLayerImpl):
(WebKit::backingStoreImpl):
(WebKit::imageBackingImpl):
(WebKit::texmapLayer):
(WebKit::updateBackingStore):
(WebKit::updateImageBacking):
(WebKit::removeLayer):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::updateSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerChildrenIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerFiltersIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerState): Deleted.
(WebKit::CoordinatedGraphicsScene::getLayerByIDIfExists): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setRootLayerID): Deleted.
(WebKit::CoordinatedGraphicsScene::prepareContentBackingStore): Deleted.
(WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::resetBackingStoreSizeToLayerSize): Deleted.
(WebKit::CoordinatedGraphicsScene::createTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::syncImageBackings): Deleted.
(WebKit::CoordinatedGraphicsScene::createImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::updateImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::clearImageBackingContents): Deleted.
(WebKit::CoordinatedGraphicsScene::removeImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerAnimationsIfNeeded): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
(WebKit::CoordinatedGraphicsScene::layerByID): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::renderLayerTree):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):

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

2 years agoRemove stale file references in WebCore Xcode project
ddkilzer@apple.com [Wed, 22 Aug 2018 10:37:12 +0000 (10:37 +0000)]
Remove stale file references in WebCore Xcode project

I manually removed these using Xcode and verified that there was
a commit that removed the original files.

Found by tool created for Bug 188754: Tool to fix folders that
should map to directories in Xcode project files.

* WebCore.xcodeproj/project.pbxproj:
(dom/DOMExceptions.in): Removed in r219741.
(Modules/modern-media-controls/start-button.js):
(Modules/modern-media-controls/volume-slider.css):
(Modules/modern-media-controls/icon-button.css):
(Modules/modern-media-controls/volume-slider.js):
(Modules/modern-media-controls/macos-media-controls.js):
(Modules/modern-media-controls/ios-inline-media-controls.css):
(Modules/modern-media-controls/scrubber.css):
(Modules/modern-media-controls/start-button.css):
(Modules/modern-media-controls/scrubber.js):
(Modules/modern-media-controls/icon-button.js):
(Modules/modern-media-controls/macos-compact-inline-media-controls.css):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/iOS/start@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/iOS/pause@2x.png):
(Modules/modern-media-controls/images/iOS/play@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@2x.png):
(Modules/modern-media-controls/images/iOS/start@3x.png):
(Modules/modern-media-controls/images/iOS/airplay@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@3x.png):
(Modules/modern-media-controls/images/iOS/slider-thumb@2x.png):
(Modules/modern-media-controls/images/iOS/airplay@2x.png):
(Modules/modern-media-controls/images/iOS/pause@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/iOS/pause@1x.png):
(Modules/modern-media-controls/images/iOS/start@2x.png):
(Modules/modern-media-controls/images/iOS/play@2x.png):
(Modules/modern-media-controls/images/iOS/pip-in@1x.png):
(Modules/modern-media-controls/images/iOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@1x.png):
(Modules/modern-media-controls/images/macOS/rewind@1x.png):
(Modules/modern-media-controls/images/macOS/play@2x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@2x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@2x.png):
(Modules/modern-media-controls/images/macOS/start@2x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/airplay@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/macOS/airplay@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@2x.png):
(Modules/modern-media-controls/images/macOS/rewind@2x.png):
(Modules/modern-media-controls/images/macOS/play-compact@1x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@2x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@1x.png):
(Modules/modern-media-controls/images/macOS/start@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/forward@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@2x.png):
(Modules/modern-media-controls/images/macOS/pause@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@1x.png):
(Modules/modern-media-controls/images/macOS/play-compact@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@2x.png):
(Modules/modern-media-controls/images/macOS/forward@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@1x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@1x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@1x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@2x.png):
(Modules/modern-media-controls/media/time-labels-support.js):
- Removed in r217823.
(Modules/webvr/VRDisplayCapabilities.cpp): Removed in r229089.
(Modules/webvr/VRFieldOfView.cpp): Removed in r228819.
(rendering/svg/RenderSVGAllInOne.cpp): Removed in r234655.

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

2 years agoUnreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.
carlosgc@webkit.org [Wed, 22 Aug 2018 07:13:03 +0000 (07:13 +0000)]
Unreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.

The script was removed in r235151.

* UserInterface/Main.html:

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

2 years agoDo not try to update the compositing policy when not in accelerated compositing mode
carlosgc@webkit.org [Wed, 22 Aug 2018 07:01:16 +0000 (07:01 +0000)]
Do not try to update the compositing policy when not in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=188787

Reviewed by Simon Fraser.

RenderLayerCompositor::updateCompositingPolicy() is called very often (called from
RenderLayerCompositor::cacheAcceleratedCompositingFlags()) and it uses WTF::memoryFootprint() to decide the
current compositing policy. Getting the memory footprint is an expensive operation in Linux (and I suspect other
non-cocoa ports too), causing an excessive CPU usage. This caused the WPE and GTK+ unit test
/webkit/WebKitWebContext/uri-scheme to start timing out in the bots, because the test expects things to happen
fast and that's no longer the case. We could reduce the CPU usage a lot by not trying to update the policy when
not in accelerated compositing mode. We will need a solution for the accelerated compositing mode, though.

Fixes WPE/GTK+ unit test /webkit/WebKitWebContext/uri-scheme.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingPolicy): Return early when not in accelerated compositing mode.

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

2 years ago[JSC] HeapUtil should care about pointer overflow
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 05:05:08 +0000 (05:05 +0000)]
[JSC] HeapUtil should care about pointer overflow
https://bugs.webkit.org/show_bug.cgi?id=188740

Reviewed by Saam Barati.

`pointer - sizeof(IndexingHeader) - 1` causes an undefined behavior if a pointer overflows.
For example, if `pointer` is nullptr, it causes pointer overflow. Instead of calculating this
with `char*` pointer, we cast it to `uintptr_t` temporarily. This issue is found by UBSan.

* heap/HeapUtil.h:
(JSC::HeapUtil::findGCObjectPointersForMarking):

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

2 years ago[JSC] Should not rotate constant with 64
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 05:02:56 +0000 (05:02 +0000)]
[JSC] Should not rotate constant with 64
https://bugs.webkit.org/show_bug.cgi?id=188556

Reviewed by Saam Barati.

To defend against JIT splaying, we rotate a constant with a randomly generated seed.
But if a seed becomes 64 or 0, the following code performs `value << 64` or `value >> 64`
where value's type is uint64_t, and they cause undefined behaviors (UBs). This patch limits
the seed in the range of [1, 63] not to generate code causing UBs. This is found by UBSan.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::generateRotationSeed):
(JSC::MacroAssembler::rotationBlindConstant):

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

2 years agoSupport "name" option for dedicated workers
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 04:58:26 +0000 (04:58 +0000)]
Support "name" option for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=188779

Reviewed by Joseph Pecoraro.

LayoutTests/imported/w3c:

* web-platform-tests/workers/interfaces.worker-expected.txt:
* web-platform-tests/workers/name-property-expected.txt:

Source/WebCore:

This patch adds `new Worker(url, { name: "Worker Name" })` option support[1].
This name can be accessible from `self.name` of DedicatedWorkerGlobalScope.
It is useful for debugging dedicated workers if the inspector can show the
names of the workers. This enhancement is tracked by [2].

[1]: https://github.com/whatwg/html/issues/2477
[2]: https://bugs.webkit.org/show_bug.cgi?id=164678

Tests: http/wpt/workers/name-property-enhanced.html
       http/wpt/workers/name-property-no-name.html

* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
Hold `name` member.

* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerGlobalScope.idl:
Add `name` attribute.

* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
* workers/DedicatedWorkerThread.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
* workers/Worker.idl:
Add WorkerOptions for dedicated worker creation.

* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
Isolate copy the given `name` to pass the worker thread.

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):
* workers/WorkerThread.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
* workers/service/context/ServiceWorkerThread.h:

LayoutTests:

* http/wpt/workers/name-property-enhanced-expected.txt: Added.
* http/wpt/workers/name-property-enhanced.html: Added.
* http/wpt/workers/name-property-no-name-expected.txt: Added.
* http/wpt/workers/name-property-no-name.html: Added.
* http/wpt/workers/support/name.js: Added.
(test):
* http/wpt/workers/support/no-name.js: Added.
(test):

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

2 years agoReplace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
rniwa@webkit.org [Wed, 22 Aug 2018 04:41:06 +0000 (04:41 +0000)]
Replace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
https://bugs.webkit.org/show_bug.cgi?id=188777

Reviewed by Simon Fraser.

Source/WebCore:

Replaced boolean arguments and instance variables for modifier keys (ctrl, alt, shift, and meta keys) in
UIEventWithKeyState with OptionSet<Modifier> and isSimulated boolean in MouseRelatedEvent with IsSimulated
enum class.

Also made movementDelta always compiled instead of only when ENABLE(POINTER_LOCK) to simplify the code.

No new tests since there should be no observable behavioral change.

* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent):
* dom/KeyboardEvent.cpp:
(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent): Call setModifierKeys.
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::initMouseEvent): Ditto.
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::MouseRelatedEvent): Added a new variant which takes the minimum arguments
for gesture & touch events. In those events, detail is always set to 0, movementDelta is always set to 0,0,
and they are never simulated.
* dom/MouseRelatedEvent.h:
(WebCore::MouseRelatedEvent::IsSimulated): Added.
* dom/SimulatedClick.cpp:
(WebCore::SimulatedMouseEvent::SimulatedMouseEvent): Get OptionSet<Modifier> out of the underlying event
instead of manually setting each key state. This code now preserves the state of caps lock and alt-graph
keys but this is not observable because we have yet to implement getModifierState on MouseEvent.
(WebCore::SimulatedMouseEvent::modifiersFromUnderlyingEvent): Added.
* dom/TouchEvent.cpp:
(WebCore::TouchEvent::TouchEvent):
* dom/TouchEvent.h:
* dom/UIEventWithKeyState.h:
(WebCore::UIEventWithKeyState::Modifier): Alias to PlatformEvent::Modifier.
(WebCore::UIEventWithKeyState::ctrlKey const): Updated to use m_modifiers.
(WebCore::UIEventWithKeyState::shiftKey const): Ditto.
(WebCore::UIEventWithKeyState::altKey const): Ditto.
(WebCore::UIEventWithKeyState::metaKey const): Ditto.
(WebCore::UIEventWithKeyState::altGraphKey const): Ditto.
(WebCore::UIEventWithKeyState::capsLockKey const): Ditto.
(WebCore::UIEventWithKeyState::modifierKeys): Added.
(WebCore::UIEventWithKeyState::UIEventWithKeyState): Now takes OptionSet<Modifier>.
(WebCore::UIEventWithKeyState::setModifierKeys): Added. Used by init*Event functions in subclasses. Note that
these functions preseve the states of alt-graph and caps lock keys to match the existing behaviors in this
cleanup patch but they don't match behaviors of Chrome or Firefox.
(WebCore::UIEventWithKeyState::modifiersFromInitializer): Added.
* dom/WheelEvent.cpp:
(WebCore::WheelEvent::WheelEvent): Simulated::No corresponds to the last boolean being false.
* page/EventHandler.cpp:
(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::handleTouchEvent):
* platform/PlatformEvent.h:
(WebCore::PlatformEvent::Modifier): Added AltGraphKey.
* platform/mac/PlatformEventFactoryMac.h:
(WebCore::modifiersForEvent): Exported to be used in [WebPDFView PDFViewWillClickOnLink:withURL:].
* platform/mac/PlatformEventFactoryMac.mm:
(WebCore::modifiersForEvent):
* testing/Internals.cpp:
(WebCore::Internals::accessKeyModifiers const):

Source/WebKit:

Added two FIXMEs.

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

Source/WebKitLegacy/ios:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

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

Source/WebKitLegacy/mac:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

Use modifiersForEvent to convert [nsEvent modifierFlags] to OptionSet<Modifier>.

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

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

2 years agoRoll out r235139 and r235146
achristensen@apple.com [Wed, 22 Aug 2018 03:51:52 +0000 (03:51 +0000)]
Roll out r235139 and r235146
https://bugs.webkit.org/show_bug.cgi?id=188805

Source/WebKit:

It turns out shouldKeepCurrentBackForwardListItemInList has one use left.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
* UIProcess/WebPageProxy.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp:

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

2 years ago[Attachment Support] Remove _WKAttachments and notify the UI client upon mainframe...
wenson_hsieh@apple.com [Wed, 22 Aug 2018 03:21:56 +0000 (03:21 +0000)]
[Attachment Support] Remove _WKAttachments and notify the UI client upon mainframe navigation
https://bugs.webkit.org/show_bug.cgi?id=188715
<rdar://problem/43541790>

Reviewed by Tim Horton.

Source/WebCore:

Rename didInsertAttachment to didInsertAttachmentWithIdentifier. See WebKit ChangeLog for more detail.

Tests:  WKAttachmentTests.InvalidateAttachmentsAfterMainFrameNavigation
        WKAttachmentTests.InvalidateAttachmentsAfterWebProcessTermination

* editing/Editor.cpp:
(WebCore::Editor::notifyClientOfAttachmentUpdates):
* page/EditorClient.h:
(WebCore::EditorClient::didInsertAttachmentWithIdentifier):
(WebCore::EditorClient::didRemoveAttachmentWithIdentifier):
(WebCore::EditorClient::didInsertAttachment): Deleted.
(WebCore::EditorClient::didRemoveAttachment): Deleted.

Source/WebKit:

Adds logic for invalidating Attachment objects upon mainframe navigation, or upon web content process
termination. An invalid Attachment's wrapper may still be retained by a UI client; however, calls to -info and
other SPI methods will either return nil or immediately invoke their completion handlers with a nil result and
an NSError. See changes below for more detail.

This patch also takes some extra measures to avoid sending redundant or unexpected removal updates to the UI
client upon invalidating all Attachments.

See Tools changes for new API tests.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::invalidate):
* UIProcess/API/APIAttachment.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didRemoveAttachment:]):

Refactor these methods to take references to the API::Attachment that is being inserted or removed, rather than
take attachment identifiers. This allows us to keep logic for setting the InsertionState of Attachment objects
in WebPageProxy, rather than in platform code.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachment info]):

If the attachment object is invalid, return nil.

(-[_WKAttachment setDisplayOptions:completion:]):
(-[_WKAttachment setFileWrapper:contentType:completion:]):

If the attachment object is invalid, immediately invoke the completion block with an error.

(-[_WKAttachment isConnected]):

Add a new readonly property for a client to easily determine whether a _WKAttachment is connected to the
document, without having to maintain the current set of connected attachment objects by observing insertion and
removal callbacks.

* UIProcess/Cocoa/PageClientImplCocoa.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::didInsertAttachment):
(WebKit::PageClientImplCocoa::didRemoveAttachment):

Make these take API::Attachment&s rather than identifier strings.

* UIProcess/PageClient.h:
(WebKit::PageClient::didInsertAttachment):
(WebKit::PageClient::didRemoveAttachment):

Also make these take API::Attachment&s rather than identifier strings.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::invalidateAllAttachments):

Introduce a helper function that invalidates all Attachments and notifies the UI client if needed. This is
invoked upon mainframe navigation, and when the web content process terminates.

(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::didInsertAttachmentWithIdentifier):
(WebKit::WebPageProxy::didRemoveAttachmentWithIdentifier):
(WebKit::WebPageProxy::didInsertAttachment):
(WebKit::WebPageProxy::didRemoveAttachment):

Keep track of whether we've notified the UI client that an Attachment has been inserted into the document. This
allows us to send removal updates to the UI client only for Attachments that are currently in the document, from
the perspective of the UI client, and allows us to avoid sending extra removal updates in
invalidateAllAttachments for Attachments that either have already been removed, or Attachments which we haven't
inserted yet.

* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::didInsertAttachmentWithIdentifier):
(WebKit::WebEditorClient::didRemoveAttachmentWithIdentifier):
(WebKit::WebEditorClient::didInsertAttachment): Deleted.
(WebKit::WebEditorClient::didRemoveAttachment): Deleted.
* WebProcess/WebCoreSupport/WebEditorClient.h:

Rename did{Insert|Remove}Attachment to did{Insert|Remove}AttachmentWithIdentifier.

Tools:

Adds API tests to exercises cases where (1) the UI client is notified of attachment removal upon mainframe
navigation, and (2) the UI client is notified of attachment removal upon web content process termination.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::ObserveAttachmentUpdatesForScope::expectAttachmentUpdates):
(TestWebKitAPI::TEST):

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

2 years agoUnreviewed, rolling out r235128.
ryanhaddad@apple.com [Wed, 22 Aug 2018 02:22:41 +0000 (02:22 +0000)]
Unreviewed, rolling out r235128.

The test added with this change is frequently failing.

Reverted changeset:

"Support "name" option for dedicated workers"
https://bugs.webkit.org/show_bug.cgi?id=188779
https://trac.webkit.org/changeset/235128

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

2 years agoUnreviewed macOS Mojave build fix after r235125.
rniwa@webkit.org [Wed, 22 Aug 2018 02:04:00 +0000 (02:04 +0000)]
Unreviewed macOS Mojave build fix after r235125.

* pal/spi/cg/CoreGraphicsSPI.h:

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

2 years agoChange Selection modification to not snap the grabber when selecting above or below...
megan_gardner@apple.com [Wed, 22 Aug 2018 01:41:50 +0000 (01:41 +0000)]
Change Selection modification to not snap the grabber when selecting above or below the selection anchor
https://bugs.webkit.org/show_bug.cgi?id=188826

Reviewed by Tim Horton.

Selecting single lines is sometimes difficult because we currently snap selections to single
characters if we move past the position of the other anchor in our selection. This patch changes
this behaviour to reflect the behaviour in the rest of this system, which snaps the selection
to the position on the line of the other anchor, rather than snapping it all the way a single
Source/WebKit:

character.

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

LayoutTests:

character. This updates the tests to reflect this new behaviour.

* fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text.html:
* fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:

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

2 years agoUnreviewed, rolling out r235107.
commit-queue@webkit.org [Wed, 22 Aug 2018 01:24:52 +0000 (01:24 +0000)]
Unreviewed, rolling out r235107.
https://bugs.webkit.org/show_bug.cgi?id=188832

"It revealed bugs in Blob code as well as regressed JS
performance tests" (Requested by saamyjoon on #webkit).

Reverted changeset:

"JSRunLoopTimer may run part of a member function after it's
destroyed"
https://bugs.webkit.org/show_bug.cgi?id=188426
https://trac.webkit.org/changeset/235107

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

2 years agoWeb Inspector: Remove TreeOutlineDataGridSynchronizer
mattbaker@apple.com [Wed, 22 Aug 2018 01:08:47 +0000 (01:08 +0000)]
Web Inspector: Remove TreeOutlineDataGridSynchronizer
https://bugs.webkit.org/show_bug.cgi?id=188449
<rdar://problem/43107980>

Reviewed by Devin Rousso.

* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView.prototype.layout):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
(WI.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid):
(WI.TimelineDataGrid.prototype.reset):
(WI.TimelineDataGrid.prototype.shown):
(WI.TimelineDataGrid.prototype.addRowInSortOrder):
(WI.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WI.TimelineDataGrid.prototype._sort):
(WI.TimelineDataGrid.prototype.treeElementForDataGridNode): Deleted.
(WI.TimelineDataGrid.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/TreeOutlineDataGridSynchronizer.js: Removed.

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

2 years agoCleanup: Remove unused file-local static variable from TextCheckerIOS.mm
dbates@webkit.org [Wed, 22 Aug 2018 00:49:32 +0000 (00:49 +0000)]
Cleanup: Remove unused file-local static variable from TextCheckerIOS.mm
https://bugs.webkit.org/show_bug.cgi?id=188818

Reviewed by Wenson Hsieh.

* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::isSmartInsertDeleteEnabled):

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

2 years ago[iOS][WK2] Misspelled words are not underlined
dbates@webkit.org [Wed, 22 Aug 2018 00:45:55 +0000 (00:45 +0000)]
[iOS][WK2] Misspelled words are not underlined
https://bugs.webkit.org/show_bug.cgi?id=188800
<rdar://problem/34811332>

Reviewed by Wenson Hsieh.

Implement enough of TextChecker for iOS to compute the list of misspelled words in a
paragraph and advertise support for continuous spell checking. The WebCore editing
machinery queries TextChecker for the list of the misspelled words, creating document
markers that demarcate the misspelled words. When we paint a line of text we paint
the spelling correction dots under each misspelled word.

On iOS we make use of UITextChecker to perform spell checking of a string. We maintain
a side table that maps a "spell document tag" to a UITextChecker* to conform to the
shape of the TextChecker interface.

* Platform/spi/ios/UIKitSPI.h: Forward declare some SPI.
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::mutableState): Added.
(WebKit::TextChecker::state): Turns around and returns mutableState().
(WebKit::TextChecker::isContinuousSpellCheckingAllowed): Returns true if we are building
with USE(UNIFIED_TEXT_CHECKING). Otherwise, do what we do now.
(WebKit::TextChecker::setContinuousSpellCheckingEnabled): Update state.
(WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged): Ditto.
(WebKit::spellDocumentTagMap): Returns HashMap that maps a "spell document tag" (int64_t) to
a RetainPtr<UITextChecker>>.
(WebKit::TextChecker::uniqueSpellDocumentTag): Generates a unique identifier for the page
this text checker is associated with.
(WebKit::TextChecker::closeSpellDocumentWithTag): Removes the entry for the specified identifier
from the HashMap.
(WebKit::textCheckerFor): Query the HashMap for the UITextChecker for the specified spell
document tag, if it exists. Otherwise, create a new UITextChecker and add a new map entry
that associates it with the specified spell document tag.
(WebKit::TextChecker::checkTextOfParagraph): Spell check the specified string and return a list
that represents the misspelled words.
(WebKit::TextChecker::checkSpellingOfString): Added a comment to explain that iOS does not implement
this function and instead implements checkTextOfParagraph().
(WebKit::TextChecker::checkGrammarOfString): Ditto.

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

2 years agoTransition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNa...
achristensen@apple.com [Tue, 21 Aug 2018 23:59:03 +0000 (23:59 +0000)]
Transition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188821

Reviewed by Simon Fraser.

Source/WebKit:

Add some more values to WKPageRenderingProgressEvents which were already supported by _WKRenderingProgressEvents and WKLayoutMilestones.

* UIProcess/API/C/WKPageRenderingProgressEvents.h:
* UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
(pageRenderingProgressEvents):

Tools:

* TestWebKitAPI/Tests/WebKit/ResizeReversePaginatedWebView.cpp:
(TestWebKitAPI::didLayout):
(TestWebKitAPI::TEST):

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

2 years agoWeb Inspector: ⌘G does not while find banner is focused
commit-queue@webkit.org [Tue, 21 Aug 2018 23:58:21 +0000 (23:58 +0000)]
Web Inspector: ⌘G does not while find banner is focused
https://bugs.webkit.org/show_bug.cgi?id=188815
<rdar://problem/43577158>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-08-21
Reviewed by Matt Baker.

* UserInterface/Base/Main.js:
Allow an <input> element to be the current focus element, which is what will
our global KeyboardShortcut handlers will interact with. Also make sure
that showing the find banner for the first time still focuses it.

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

2 years agoFix API tests after r235139
achristensen@apple.com [Tue, 21 Aug 2018 23:50:29 +0000 (23:50 +0000)]
Fix API tests after r235139
https://bugs.webkit.org/show_bug.cgi?id=188805

Apparently the call to didChangeBackForwardList with no changes was observable.  We should rename, but I'm restoring existing behavior for now.

* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::goToItem):

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

2 years agoStorage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccess...
wilander@apple.com [Tue, 21 Aug 2018 23:32:32 +0000 (23:32 +0000)]
Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
https://bugs.webkit.org/show_bug.cgi?id=188783
<rdar://problem/43559215>

Reviewed by Alex Christensen.

* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
    Now sends the eTLD+1 for the top frame and sub frame.

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

2 years ago[WHLSL] Call expressions shouldn't have type arguments
mmaxfield@apple.com [Tue, 21 Aug 2018 23:28:35 +0000 (23:28 +0000)]
[WHLSL] Call expressions shouldn't have type arguments
https://bugs.webkit.org/show_bug.cgi?id=188770

Reviewed by Filip Pizlo.

Call expressions only had type arguments for casts, becuase native types can have type arguments.
However, instead of putting those type arguments on the CallExpression, we should parse the casted
type as a real type and not as an identifier, which puts the type arguments in the TypeRef.

Test: casts

* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression):
(CallExpression.prototype.get name):
(CallExpression.resolve):
(CallExpression.prototype.get typeArguments): Deleted.
(CallExpression.prototype.becomeCast): Deleted.
* WebGPUShadingLanguageRI/NameResolver.js:
(NameResolver.prototype.visitCallExpression):
* WebGPUShadingLanguageRI/Parse.js:
(parseConstexpr):
(parseTypeDef):
(parseLeftOperatorCall):
(parseCallExpression.let.parseArguments):
(parsePossiblePrefix):
(parsePossibleRelationalEquality):
(parseLeftLogicalExpression):
(parseIfStatement):
(parseWhile):
(parseFor):
(parseDo):
* WebGPUShadingLanguageRI/RemoveTypeArguments.js:
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitCallExpression):

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

2 years agoUse VisiblePosition to calculate selection ranges
megan_gardner@apple.com [Tue, 21 Aug 2018 22:41:11 +0000 (22:41 +0000)]
Use VisiblePosition to calculate selection ranges
https://bugs.webkit.org/show_bug.cgi?id=188767
<rdar://problem/43577166>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Exposing comparePositions.

* editing/Editing.h:

Source/WebKit:

Switches to using VisiblePosition, instead of Position. This code used to use VisiblePosiiton,
but it has been changed a lot lately, and using Position causes issues with next and previous
when trying to snap a selection. VisiblePosition gives us the correct information, and does not
result in collapsed ranges.

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

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

2 years agoWeb Inspector: REGRESSION(r235095): duplicate actions existing in WI.CanvasSidebarPanel
drousso@apple.com [Tue, 21 Aug 2018 22:08:18 +0000 (22:08 +0000)]
Web Inspector: REGRESSION(r235095): duplicate actions existing in WI.CanvasSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=188808

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Check that the `WI.RecordingAction` is not already represented in the `WI.TreeOutline`
before adding it.

* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress):
Drive-by: vertically center the <progress> shown for `WI.RecordingFrame` during processing.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235142 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: Canvas: provide default icon for all actions
drousso@apple.com [Tue, 21 Aug 2018 21:22:58 +0000 (21:22 +0000)]
Web Inspector: Canvas: provide default icon for all actions
https://bugs.webkit.org/show_bug.cgi?id=188807

Reviewed by Matt Baker.

* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .icon):
(.item.action.initial-state > .icon): Deleted.

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

2 years agoTranslate WebKit.LimitTitleSize API test into ObjC
achristensen@apple.com [Tue, 21 Aug 2018 21:17:25 +0000 (21:17 +0000)]
Translate WebKit.LimitTitleSize API test into ObjC
https://bugs.webkit.org/show_bug.cgi?id=188810

Reviewed by Andy Estes.

It uses WKPageLoaderClient.didReceiveTitleForFrame which has been replaced by KVO.
I'm translating the test into ObjC rather than introducing a new callback to WKPageNavigationClient.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/LimitTitleSize.cpp: Removed.
* TestWebKitAPI/Tests/mac/LimitTitleSize.mm:
(TEST):
(-[LimitTitleSizeTestObserver observeValueForKeyPath:ofObject:change:context:]):
(TestWebKitAPI::TEST): Deleted.

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

2 years agoRemove unused shouldKeepCurrentBackForwardListItemInList check
achristensen@apple.com [Tue, 21 Aug 2018 21:14:36 +0000 (21:14 +0000)]
Remove unused shouldKeepCurrentBackForwardListItemInList check
https://bugs.webkit.org/show_bug.cgi?id=188805

Reviewed by Andy Estes.

Source/WebKit:

The check was only done in WKPageLoaderClient, and nobody implements the check.
It was not needed to put in WKPageNavigationClient or WKNavigationDelegate, so let's remove it!
This removes the unused ability to go back and remove the current back/forward list item.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::didChangeBackForwardList):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList): Deleted.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList): Deleted.
* UIProcess/WebPageProxy.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp: Removed.

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

2 years agoTransition more API tests from WKPageLoaderClient to WKPageNavigationClient
achristensen@apple.com [Tue, 21 Aug 2018 21:11:50 +0000 (21:11 +0000)]
Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188813

Reviewed by Andy Estes.

* TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayout.cpp:
(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):
* TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutForImages.cpp:
(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):

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

2 years ago[Attachment Support] Augment _WKAttachment SPI to handle NSFileWrappers in addition...
wenson_hsieh@apple.com [Tue, 21 Aug 2018 21:10:34 +0000 (21:10 +0000)]
[Attachment Support] Augment _WKAttachment SPI to handle NSFileWrappers in addition to NSData
https://bugs.webkit.org/show_bug.cgi?id=188496
<rdar://problem/43216836>

Reviewed by Tim Horton.

Source/WebCore:

Refactors logic around HTMLAttachmentElement and pasteboard reading helpers, in support of moving the data
backing for attachment elements to the client layer, instead of keeping it in the attachment element's File.
Augmented existing API tests in WKAttachmentTests, and also added a new API test (see Tools for more detail).

* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::didInsertAttachmentElement):

Notify the client layer when a newly inserted attachment element's identifier has been updated to avoid
colliding with the identifier of an existing attachment element. This can happen if, for instance, one or more
attachments are copied and pasted within the same document.

* editing/Editor.cpp:
(WebCore::Editor::registerAttachmentIdentifier):
(WebCore::Editor::cloneAttachmentData):

Add new helper functions to notify the client when the attachment identifier to data mapping needs to be
updated. This can happen in three ways: (1) an attachment is created with raw data, or (2) an attachment is
created with a file path, or (3) the unique identifier for an attachment element has been reassigned. These
correspond to the two versions of `registerAttachmentIdentifier`, and `cloneAttachmentData`, respectively.

(WebCore::EditorClient::supportsClientSideAttachmentData const):

Add a new EditorClient hook to determine whether client-side attachment data management is supported. Currently,
this only returns true for WebKit2. If this flag is set to true, we register attachment identifiers and don't
create a new File object for the attachment element; otherwise, fall back to creating and setting a File for the
new attachment element.

(WebCore::Editor::insertAttachment):
(WebCore::Editor::insertAttachmentFromFile): Deleted.

Adjust logic when inserting an attachment; we now only need to update the attributes of the attachment element
with metadata from the client layer.

* editing/Editor.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::supportsClientSideAttachmentData):
(WebCore::createFragmentForImageAttachment):

Notify the client when creating an attachment element from image data on the pasteboard.

(WebCore::replaceRichContentWithAttachments):

Refactor this helper function to no longer connect attachment elements to File objects created from
subresources. Instead, just update each attachment element's attributes using information about the subresource,
and then notify the client about the new attachment data and attachment identifier.

(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):

Plumb the current WebContentReader's Frame& to each of these helpers, so that it can call out to the client.

(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentMarkupReader::readWebArchive):
(WebCore::WebContentReader::readImage):
(WebCore::WebContentReader::readFilePaths):

Notify the client when creating an attachment from the path of a dropped file.

* html/AttachmentTypes.h:

Remove AttachmentInfo. This is no longer necessary because we don't need to request attachment data from the web
process anymore.

* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::ensureUniqueIdentifier):

Add a helper function on the attachment element to create and return a unique identifier if needed.

(WebCore::HTMLAttachmentElement::updateAttributes):

Add a helper method to update the displayed element attributes (type, title and subtitle) or an attachment.

(WebCore::AttachmentDataReader::create): Deleted.
(WebCore::AttachmentDataReader::AttachmentDataReader): Deleted.

Remove AttachmentDataReader. This helper class was only used to load attachment data when requesting attachment
information in the client, but this is now obviated by moving attachment data to the client layer.

(WebCore::HTMLAttachmentElement::updateFileWithData): Deleted.
(WebCore::HTMLAttachmentElement::requestInfo): Deleted.
(WebCore::HTMLAttachmentElement::destroyReader): Deleted.
(WebCore::AttachmentDataReader::~AttachmentDataReader): Deleted.
(WebCore::AttachmentDataReader::didFinishLoading): Deleted.
(WebCore::AttachmentDataReader::didFail): Deleted.
(WebCore::AttachmentDataReader::invokeCallbackAndFinishReading): Deleted.
* html/HTMLAttachmentElement.h:
* page/DragClient.h:
* page/DragController.cpp:
(WebCore::DragController::startDrag):
(WebCore::DragController::doSystemDrag):
(WebCore::DragController::promisedAttachmentInfo):

Allow dragging an attachment (even if it does not have a file) as long as it has a unique identifier and a
content type.

(WebCore::DragController::promisedBlobInfo): Deleted.
* page/DragController.h:
* page/EditorClient.h:
(WebCore::EditorClient::registerAttachmentIdentifier):
(WebCore::EditorClient::cloneAttachmentData):
* platform/DragItem.h:
(WebCore::DragItem::encode const):
(WebCore::DragItem::decode):
* platform/PromisedAttachmentInfo.h: Renamed from Source/WebCore/platform/PromisedBlobInfo.h.

Add an attachment identifier to PromisedBlobInfo. Additionally, rename PromisedBlobInfo to
PromisedAttachmentInfo, since it is currently exclusively used to attachment element data to the pasteboard.
In the future, this could be renamed to something more general (e.g. PromisedPasteboardData), should we use this
mechanism to write data from other sources to the pasteboard.

(WebCore::PromisedAttachmentInfo::operator bool const):

Source/WebKit:

Adjusts WebKit's attachment editing SPI with the following modifications:
•   Deprecate `-_insertAttachmentWithFilename:contentType:data:options:completion:` in favor of
    `-_insertAttachmentWithFileWrapper:contentType:options:completion:`.
•   Deprecate `-requestInfo:` and in favor of just `-info`.
•   Add a `-fileWrapper` property to `_WKAttachmentInfo` that returns an `NSFileWrapper`.
•   Remove some SPI methods that would otherwise be deprecated, but are not even necessary, since they're no
    longer even used by Mail.

To make this possible, we refactor where and how attachment data is tracked. Currently, the data is stored in
the network process, and made accessible to the web process via blob URLs stored in the File object in the
attachment element. As such, requests from the UI process for attachment data would first be routed through the
web process to network process and back.

Instead, we now keep the relevant attachment data (in the form of NSFileWrapper on Cocoa platforms) in the UI
process, on API::Attachment. We additionally keep a map of attachment identifiers to API::Attachments, which
allows us to propagate the same _WKAttachment wrapper object to the SPI client for each uniquely identified
attachment element. This also has the benefit of allowing us to remove the asynchronous version of `-requestInfo:`
and replace it with just an `info` property.

Changes are covered by new and existing API tests.

* PlatformMac.cmake:

Remove APIAttachment.cpp, now that APIAttachment.cpp is listed in Sources.txt.

* Scripts/webkit/messages.py:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):

Guard _WKAttachment creation with ENABLE_ATTACHMENT_ELEMENT.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PromisedAttachmentInfo>::encode):
(IPC::ArgumentCoder<PromisedAttachmentInfo>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode): Deleted.
(IPC::ArgumentCoder<PromisedBlobInfo>::decode): Deleted.
(IPC::ArgumentCoder<AttachmentInfo>::encode): Deleted.
(IPC::ArgumentCoder<AttachmentInfo>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:

Continue removing encoding support for WebCore::AttachmentInfo. Additionally, rename PromisedBlobInfo to
PromisedAttachmentInfo.

* Sources.txt:
* SourcesCocoa.txt:

Move APIAttachment.cpp from the SourcesCocoa.txt to the platform-agnostic Sources.txt.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::updateAttributes):

Rename setDataAndContentType to just updateAttributes; instead of sending data, only send the information needed
to update the presentational attributes of the attachment element.

(API::Attachment::requestInfo): Deleted.

Just call the completion handler with the result of `self.info`.

(API::Attachment::setDataAndContentType): Deleted.
* UIProcess/API/APIAttachment.h:

Add additional attributes: a content type, a file path, and (on Cocoa platforms) an NSFileWrapper.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

Remove -_webView:didInsertAttachment:, since this is unused by any client currently, and is superceded by
-_webView:didInsertAttachment:withSource:.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didRemoveAttachment:]):

Look up the API::Attachment corresponding to the identifier, and send its wrapper object to the client.

(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):

Add a way to insert an attachment using NSFileWrapper, and reimplement _insertAttachmentWithFilename: using it.

* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachmentInfo initWithFileWrapper:filePath:contentType:]):
(-[_WKAttachmentInfo data]):
(-[_WKAttachmentInfo name]):
(isDeclaredOrDynamicTypeIdentifier):
(-[_WKAttachmentInfo _typeIdentifierFromPathExtension]):
(-[_WKAttachmentInfo contentType]):
(-[_WKAttachmentInfo mimeType]):
(-[_WKAttachmentInfo utiType]):
(-[_WKAttachmentInfo fileWrapper]):
(-[_WKAttachment info]):
(-[_WKAttachment requestInfo:]):

Add a property on _WKAttachment to retrieve a _WKAttachmentInfo (a snapshot of the current state of the
attachment, along with the NSFileWrapper). Reimplement requestInfo using this property.

(-[_WKAttachment setFileWrapper:contentType:completion:]):
(-[_WKAttachment setData:newContentType:newFilename:completion:]):

Reimplemented by calling -setFileWrapper:contentType:completion: with an NSFileWrapper created using the given
data. Additionally, create and associate the unique identifier with an API::Attachment right away.

(-[_WKAttachment uniqueIdentifier]):
(-[_WKAttachment description]):
(-[_WKAttachmentInfo initWithInfo:]): Deleted.
(-[_WKAttachmentInfo fileLoadingError]): Deleted.
(-[_WKAttachment isEqual:]): Deleted.
(-[_WKAttachment hash]): Deleted.

There's no longer any point to implementing these methods, since the SPI client is now guaranteed a unique
mapping of _WKAttachments to attachment elements in the document.

* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::didInsertAttachment):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::platformCloneAttachment):

Extend the behavior of registering new attachment data on Cocoa platforms by additionally creating and setting
NSFileWrappers on the API::Attachment.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetStateAfterProcessExited):

Clear out the map of attachment identifiers to API::Attachments when the web content process is terminated.

(WebKit::WebPageProxy::attachmentForIdentifier const):

Helper function to look up an API::Attachment for the given attachment identifier. Returns null if the
attachment is not found, or the attachment identifier is invalid.

(WebKit::WebPageProxy::insertAttachment):
(WebKit::WebPageProxy::updateAttachmentAttributes):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromData):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromFilePath):
(WebKit::WebPageProxy::cloneAttachmentData):
(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::platformCloneAttachment):
(WebKit::WebPageProxy::didInsertAttachment):

Create an entry in the attachment identifier to API::Attachment map when an attachment is inserted, if one does
not already exist. An attachment mapping would not exist only in the case where an attachment element was
created via bindings; in this case, the client wouldn't have access to an NSFileWrapper containing the contents
of the file; in the future, this can be improved by adding a mechanism to register an attachment element with
this data, but for now, this is unnecessary for Mail's purposes.

(WebKit::WebPageProxy::didRemoveAttachment):
(WebKit::WebPageProxy::ensureAttachment):

Ensures an attachment identifier to API::Attachment mapping.

(WebKit::WebPageProxy::attachmentInfoCallback): Deleted.
(WebKit::WebPageProxy::requestAttachmentInfo): Deleted.
(WebKit::WebPageProxy::setAttachmentDataAndContentType): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startDrag:item:]):
(-[WKContentView _prepareToDragPromisedAttachment:]):
(-[WKContentView _prepareToDragPromisedBlob:]): Deleted.

Reimplement the way promised attachment data is delivered to the destination when an attachment element is
dragged. Instead of relying on the blob URL of the File on the attachment element, first try to find an API
Attachment object corresponding to the unique identifier of the dragged attachment, and use its NSFileWrapper to
deliver promised data to the destination file URL. The blob URL codepath still exists in the case where script
specifies the dragged attachment's File.

* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::registerAttachmentIdentifier):
(WebKit::WebEditorClient::cloneAttachmentData):
* WebProcess/WebCoreSupport/WebEditorClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::updateAttachmentAttributes):
(WebKit::WebPage::requestAttachmentInfo): Deleted.
(WebKit::WebPage::setAttachmentDataAndContentType): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

More renaming and IPC message plumbing.

Source/WebKitLegacy/win:

Adjust for changing PromisedAttachmentInfo.h to forward declare WebCore::SharedBuffer rather than include the
header directly.

* WebCoreSupport/WebDragClient.cpp:

Tools:

Adjusts existing attachment API tests. See below for more detail.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[TestWKWebView synchronouslyInsertAttachmentWithFileWrapper:contentType:]):
(-[TestWKWebView synchronouslyInsertAttachmentWithFilename:contentType:data:]):
(-[_WKAttachment synchronouslySetData:newContentType:newFilename:error:]):
(-[_WKAttachment synchronouslySetFileWrapper:newContentType:error:]):

Move off of deprecated attachment SPI, and add new helper functions to synchronously insert a new attachment or
update an existing attachment with a file wrapper.

(-[_WKAttachment expectRequestedDataToBe:]):
(TestWebKitAPI::TEST):

Add a new test to verify that file-URL-backed NSFileWrappers can be used to insert and update attachment data.
Also augment an existing test to check that an attachment element which has been copied and pasted within the
same document has a different _WKAttachment wrapper object than its duplicate, but both _WKAttachments are
backed by the same NSFileWrapper that was originally used to insert the attachment.

Additionally, add another macOS test to verify that dropping promised files in an attachment-element-enabled
editable area inserts attachment elements into the document and notifies the UI client with the inserted
attachment data.

(-[_WKAttachment synchronouslyRequestInfo:]): Deleted.
(-[_WKAttachment synchronouslyRequestData:]): Deleted.
* TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
(-[DragAndDropSimulator _webView:didInsertAttachment:withSource:]):

Move off of -_webView:didInsertAttachment:.

(-[DragAndDropSimulator _webView:didInsertAttachment:]): Deleted.

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

2 years agosort-Xcode-project-file: top-level files and folders are sorted unintentionally when...
ddkilzer@apple.com [Tue, 21 Aug 2018 21:08:23 +0000 (21:08 +0000)]
sort-Xcode-project-file: top-level files and folders are sorted unintentionally when `mainGroup` has no name
<https://webkit.org/b/188755>

Reviewed by Andy Estes.

* Scripts/sort-Xcode-project-file: Fix regular expression to
make `mainGroup` name optional.

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

2 years agoUpdate some libwebrtc third party libraries as per libwebrtc 984f1a80c0c
youenn@apple.com [Tue, 21 Aug 2018 21:04:35 +0000 (21:04 +0000)]
Update some libwebrtc third party libraries as per libwebrtc 984f1a80c0c
https://bugs.webkit.org/show_bug.cgi?id=188751

Patch by Youenn Fablet <youenn@apple.com> on 2018-08-21
Reviewed by Eric Carlson.

Added rnnoise and abseil which will be used by latest libwebrtc.
Updated libyuv as it is also required by latest libwebrtc.

* Source/third_party/abseil-cpp: Added.
* Source/third_party/libyuv: Refreshed.
* Source/third_party/rnnoise: Added.

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

2 years agoWeb Inspector: Rulers.svg is missing
commit-queue@webkit.org [Tue, 21 Aug 2018 21:00:30 +0000 (21:00 +0000)]
Web Inspector: Rulers.svg is missing
https://bugs.webkit.org/show_bug.cgi?id=188806
<rdar://problem/43574273>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-08-21
Reviewed by Devin Rousso.

* UserInterface/Images/Rulers.svg: Added.

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

2 years agoIncrement NetworkCache::Storage::lastStableVersion after r233742
achristensen@apple.com [Tue, 21 Aug 2018 20:38:40 +0000 (20:38 +0000)]
Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

* NetworkProcess/cache/NetworkCacheStorage.h:

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

2 years agoRemove experimental affiliated domain code now that StorageAccess API is available
bfulgham@apple.com [Tue, 21 Aug 2018 20:37:27 +0000 (20:37 +0000)]
Remove experimental affiliated domain code now that StorageAccess API is available
https://bugs.webkit.org/show_bug.cgi?id=188756
<rdar://problem/43527848>

Reviewed by Alex Christensen.

In Bug 174661 we added a compatibility quirk to support wsj.com authentication. This quirk is no longer needed,
since the StorageAccess API provides the necessary tools to do this type of interaction without needing global
cross-site access.

Source/WebCore:

* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::areDomainsAssociated): Deleted.
(WebCore::shouldEnableSiteSpecificQuirks): Deleted.
* loader/ResourceLoadStatistics.cpp:
(WebCore::ResourceLoadStatistics::areDomainsAssociated): Deleted.
* loader/ResourceLoadStatistics.h:

Source/WebKit:

* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
* UIProcess/ResourceLoadStatisticsMemoryStore.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
(WebKit::areDomainsAssociated): Deleted.

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

2 years agoUnreviewed, add myself to committers list.
andy@vanwagoner.family [Tue, 21 Aug 2018 19:39:13 +0000 (19:39 +0000)]
Unreviewed, add myself to committers list.

* Scripts/webkitpy/common/config/contributors.json:

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

2 years agoAllow creating WeakPtrs to const objects
antti@apple.com [Tue, 21 Aug 2018 19:09:31 +0000 (19:09 +0000)]
Allow creating WeakPtrs to const objects
https://bugs.webkit.org/show_bug.cgi?id=188785

Reviewed by Geoffrey Garen.

Source/WebCore:

Remove some unneeded const_casts.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::MediaQueryEvaluator):
(WebCore::MediaQueryEvaluator::evaluate const):
* css/MediaQueryEvaluator.h:
* rendering/FloatingObjects.cpp:
(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FloatingObjects::FloatingObjects):
* rendering/FloatingObjects.h:
(WebCore::FloatingObjects::renderer const):

Source/WTF:

const Foo foo;
WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);

* wtf/WeakPtr.h:
(WTF::WeakPtrFactory::createWeakPtr const):

Add a separate factory function for const T.
The underlying WeakReference is kept non-const in all cases.

Tools:

* TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
(TestWebKitAPI::Base::weakPtrFactory const):
(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::weakPtrFactory): Deleted.

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

2 years agoSupport "name" option for dedicated workers
yusukesuzuki@slowstart.org [Tue, 21 Aug 2018 18:40:03 +0000 (18:40 +0000)]
Support "name" option for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=188779

Reviewed by Joseph Pecoraro.

LayoutTests/imported/w3c:

* web-platform-tests/workers/interfaces.worker-expected.txt:
* web-platform-tests/workers/name-property-expected.txt:

Source/WebCore:

This patch adds `new Worker(url, { name: "Worker Name" })` option support[1].
This name can be accessible from `self.name` of DedicatedWorkerGlobalScope.
It is useful for debugging dedicated workers if the inspector can show the
names of the workers. This enhancement is tracked by [2].

[1]: https://github.com/whatwg/html/issues/2477
[2]: https://bugs.webkit.org/show_bug.cgi?id=164678

* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
Hold `name` member.

* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerGlobalScope.idl:
Add `name` attribute.

* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
* workers/DedicatedWorkerThread.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
* workers/Worker.idl:
Add WorkerOptions for dedicated worker creation.

* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
Isolate copy the given `name` to pass the worker thread.

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):
* workers/WorkerThread.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
* workers/service/context/ServiceWorkerThread.h:

LayoutTests:

* http/wpt/workers/name-property-enhanced-expected.txt: Added.
* http/wpt/workers/name-property-enhanced.html: Added.
* http/wpt/workers/support/name.js: Added.
(test):
* http/wpt/workers/support/no-name.js: Added.
(test):

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

2 years agoAdd _WKWebsiteDataStoreConfiguration. sourceApplicationBundleIdentifier and sourceApp...
commit-queue@webkit.org [Tue, 21 Aug 2018 18:12:35 +0000 (18:12 +0000)]
Add _WKWebsiteDataStoreConfiguration. sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
https://bugs.webkit.org/show_bug.cgi?id=188748

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-21
Reviewed by Ryosuke Niwa.

* NetworkProcess/NetworkSessionCreationParameters.h:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::privateSessionParameters):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration setSourceApplicationBundleIdentifier:]):
(-[_WKWebsiteDataStoreConfiguration sourceApplicationBundleIdentifier]):
(-[_WKWebsiteDataStoreConfiguration sourceApplicationSecondaryIdentifier]):
(-[_WKWebsiteDataStoreConfiguration setSourceApplicationSecondaryIdentifier:]):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.h:

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

2 years agoREGRESSION(r234993): Test results page ignores TestExpectations, shows 1800 failures
simon.fraser@apple.com [Tue, 21 Aug 2018 18:08:25 +0000 (18:08 +0000)]
REGRESSION(r234993): Test results page ignores TestExpectations, shows 1800 failures
https://bugs.webkit.org/show_bug.cgi?id=188795

Reviewed by Tim Horton.

A MISSING result would trigger a code path that hit appendActualOnlyLinks() which had
a JS error, causing all expected results to be visible. Fix with a change to full_results.json
which tests the change.

* fast/harness/full_results.json:
* fast/harness/results.html:

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

2 years ago[WebGL] Contexts are not updated when display configuration changed.
pvollan@apple.com [Tue, 21 Aug 2018 18:04:48 +0000 (18:04 +0000)]
[WebGL] Contexts are not updated when display configuration changed.
https://bugs.webkit.org/show_bug.cgi?id=188750

Reviewed by Brent Fulgham.

Source/WebCore:

Calling CGDisplayRegisterReconfigurationCallback in GraphicsContext3DManager::addContext
returns kCGErrorSuccess when WindowServer access is blocked in the WebContent process,
but the callback function is never called. We should register the callback function in
the UI process, and send a message to the WebContent process when the display
configuration changed.

Test: fast/canvas/webgl/context-update-on-display-configuration.html

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/GraphicsContext3DManager.cpp:
(WebCore::GraphicsContext3DManager::displayWasReconfigured):
(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::displayWasReconfigured): Deleted.
* platform/graphics/GraphicsContext3DManager.h:

Source/WebKit:

Calling CGDisplayRegisterReconfigurationCallback in GraphicsContext3DManager::addContext
returns kCGErrorSuccess when WindowServer access is blocked in the WebContent process,
but the callback function is never called. We should register the callback function in
the UI process, and send a message to the WebContent process when the display
configuration changed.

* Sources.txt:
* UIProcess/API/C/WKMockDisplay.cpp: Added.
(WKSendDisplayConfigurationChangedMessageForTesting):
* UIProcess/API/C/WKMockDisplay.h: Added.
* UIProcess/WebProcessPool.cpp:
(WebKit::displayReconfigurationCallBack):
(WebKit::WebProcessPool::sendDisplayConfigurationChangedMessageForTesting):
* UIProcess/WebProcessPool.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::displayConfigurationChanged):

Tools:

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

LayoutTests:

* TestExpectations:
* fast/canvas/webgl/context-update-on-display-configuration-expected.txt: Added.
* fast/canvas/webgl/context-update-on-display-configuration.html: Added.
* platform/mac-wk2/TestExpectations:

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

2 years agoMake ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
wilander@apple.com [Tue, 21 Aug 2018 18:02:33 +0000 (18:02 +0000)]
Make ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
https://bugs.webkit.org/show_bug.cgi?id=188757
<rdar://problem/38713390>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
    Now logs even when a frame doesn't exist.
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::shouldLog const):
    Now takes boolean 'usesEphemeralSession' instead of a page to support logging when there is no page.
(WebCore::ResourceLoadObserver::logSubresourceLoading):
    Changed to send a boolean to ResourceLoadObserver::shouldLog().
(WebCore::ResourceLoadObserver::logWebSocketLoading):
    Changed to:
    - receive the main frame's URL and a boolean for ephemeral sessions instead of the Frame.
    - send a boolean to ResourceLoadObserver::shouldLog().
    - No longer call areDomainsAssociated(). It is being removed in https://bugs.webkit.org/show_bug.cgi?id=188756.
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
    Changed to send a boolean to ResourceLoadObserver::shouldLog().
* loader/ResourceLoadObserver.h:

Source/WebKit:

These changes are test infrastructure to support the new WebKitTestRunner
function isStatisticsRegisteredAsSubresourceUnder().

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubresourceUnder const):
* UIProcess/ResourceLoadStatisticsMemoryStore.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
* UIProcess/WebResourceLoadStatisticsStore.h:

Tools:

These changes add the new WebKitTestRunner function
isStatisticsRegisteredAsSubresourceUnder().

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

LayoutTests:

* TestExpectations:
    Skipped the new test case since it is only supported on WebKit2.
* http/tests/websocket/construct-in-detached-frame-resource-load-statistics-expected.txt: Added.
* http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html: Added.
* http/tests/websocket/resources/construct-in-detached-frame-resource-load-statistics.html: Added.
* platform/wk2/TestExpectations:
    Marked the new test case as [ Pass ].

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

2 years agoTransition more API tests from WKPageLoaderClient to WKPageNavigationClient
achristensen@apple.com [Tue, 21 Aug 2018 17:31:44 +0000 (17:31 +0000)]
Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188797

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKit/AboutBlankLoad.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/EphemeralSessionPushStateNoHistoryCallback.cpp:
(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/FailedLoad.cpp:
(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/FrameMIMETypeHTML.cpp:
(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/FrameMIMETypePNG.cpp:
(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/LayoutMilestonesWithAllContentInFrame.cpp:
(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didLayout): Deleted.
* TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFrames.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didLayout): Deleted.
* TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:
(TestWebKitAPI::State::State):
(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::decidePolicyForNavigationAction):
(TestWebKitAPI::decidePolicyForResponse):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::decidePolicyForNewWindowAction): Deleted.
* TestWebKitAPI/Tests/WebKit/PageLoadDidChangeLocationWithinPageForFrame.cpp:
(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/PrivateBrowsingPushStateNoHistoryCallback.cpp:
(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:
(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/WKBundleFileHandle.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/RestoreStateAfterTermination.mm:
(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm:
(WebKit2_CommandBackForwardTestWKView::SetUp):
(WebKit2_CommandBackForwardTestWKView::didFinishLoadForFrame): Deleted.

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

2 years agoDisallow navigations when page cache updates the current document of the frame
dbates@webkit.org [Tue, 21 Aug 2018 16:50:20 +0000 (16:50 +0000)]
Disallow navigations when page cache updates the current document of the frame
https://bugs.webkit.org/show_bug.cgi?id=188422

Reviewed by Ryosuke Niwa.

Source/WebCore:

Make use of NavigationDisabler to disallow navigations when associating the cached
document back with its frame (i.e. calling Frame::setDocument()).

When we associate a cached document with its frame we will construct its render tree
and run post style resolution callbacks that can do anything, including performing
a frame load. Until page restoration is comnplete the frame tree is in a transient
state that makes reasoning about it difficult and error prone. We should not allow
navigations in this state.

Test: fast/history/go-back-to-object-subframe.html

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open):

LayoutTests:

Add a test case that ensures that we do not hit the assertion ASSERT(ownerFrame || m_frame.isMainFrame())
in FrameLoader::addExtraFieldsToRequest() when navigating back to a page that loads a nested
page, whose URL contains a fragment, via an HTML object element. This assertion fails if
navigations are allowed when restoring a page from the page cache.

This change does not prevent navigations initiated from a pageshow event handler.

* fast/history/go-back-to-object-subframe-expected.txt: Added.
* fast/history/go-back-to-object-subframe.html: Added.

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

2 years agoReplace TextCheckingTypeMask with OptionSet
dbates@webkit.org [Tue, 21 Aug 2018 16:47:43 +0000 (16:47 +0000)]
Replace TextCheckingTypeMask with OptionSet
https://bugs.webkit.org/show_bug.cgi?id=188678

Reviewed by Antti Koivisto.

Source/WebCore:

Replaces TextCheckingTypeMask with an OptionSet to improve type safety and code clarity. Additionally
change the values of TextCheckingType such that all the enumerators fit within an uint8_t.

* PlatformMac.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::hasMisspelling const):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXAttributeStringSetSpelling):
* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):
* editing/Editor.cpp:
(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::isAutomaticTextReplacementType):
(WebCore::Editor::markAndReplaceFor): For now, change a local variable from const to non-const to work
around the following MSVC compiler bug: <https://developercommunity.visualstudio.com/content/problem/316713/msvc-cant-compile-webkits-optionsetcontainsany.html>.
(WebCore::Editor::markMisspellingsAndBadGrammar):
(WebCore::Editor::updateMarkersForWordsAffectedByEditing):
(WebCore::Editor::editorUIUpdateTimerFired):
(WebCore::Editor::resolveTextCheckingTypeMask):
* editing/Editor.h:
* editing/SpellChecker.cpp:
(WebCore::SpellCheckRequest::SpellCheckRequest):
(WebCore::SpellCheckRequest::create):
(WebCore::SpellChecker::didCheckSucceed):
* editing/SpellChecker.h:
* editing/TextCheckingHelper.cpp:
(WebCore::findGrammaticalErrors):
(WebCore::findMisspellings):
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
(WebCore::checkTextOfParagraph):
* editing/TextCheckingHelper.h:
* loader/EmptyClients.cpp:
* platform/text/TextCheckerClient.h:
* platform/text/TextChecking.h: Remove TextCheckingTypeMask. Reorganized the fields of TextCheckingRequestData
to coallesce padding and move it to the end of class. Also used default initializer syntax and defaulted (= default)
the default constructor of TextCheckingRequestData, removing the need for a user-defined default constructor.
(WebCore::TextCheckingRequestData::TextCheckingRequestData):
(WebCore::TextCheckingRequestData::text const): Changed return type from String to const String&
to avoid unnecessary ref-count churn for callers that do not need to take a shared ownership in
this string.
(WebCore::TextCheckingRequestData::checkingTypes const): Renamed; formerly named mask.
(WebCore::TextCheckingRequestData::mask const): Deleted.
* platform/text/mac/TextCheckingMac.mm: Added.
(WebCore::nsTextCheckingTypes):
* testing/Internals.cpp:
(WebCore::Internals::handleAcceptedCandidate):

Source/WebKit:

* Scripts/webkit/messages.py: Add WebCore::TextCheckingType to the special case map so that
the generator knows what header has the definition for this type.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<TextCheckingRequestData>::encode):
(IPC::ArgumentCoder<TextCheckingRequestData>::decode):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::coreTextCheckingType):
(WebKit::textCheckingResultFromNSTextCheckingResult):
* UIProcess/TextChecker.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::checkTextOfParagraph):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::requestCheckingOfString):
(WebKit::TextChecker::checkTextOfParagraph): Also simplified return expressions.
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/win/TextCheckerWin.cpp:
(WebKit::TextChecker::checkTextOfParagraph):
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(WebKit::WebEditorClient::checkTextOfParagraph):
* WebProcess/WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/mac:

Currently we have code in WebEditorClient::checkTextOfParagraph() that incorrectly assumes
that the enumerators of TextCheckingType have a one-to-one correspondence with NSTextCheckingType.
(This is not the case because there is not corresponding NSTextCheckingType for TextCheckingTypeShowCorrectionPanel).
We now explicitly convert from OptionSet<TextCheckingType> to NSTextCheckingTypes.

* WebCoreSupport/WebEditorClient.h:
* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::checkTextOfParagraph):
(WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(core): Fix up code style nits; compare resultType on the right-hand side instead of the
left as this is more readable and unncessary now that modern compilers like Clang have
diagnostics to catch accidental assignments when equality was intended.
(WebEditorClient::didCheckSucceed):
* WebView/WebView.mm:
(coreTextCheckingType):
(textCheckingResultFromNSTextCheckingResult):

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

2 years ago[iOS][WK1] Support toggling continuous spell checking from tests
dbates@webkit.org [Tue, 21 Aug 2018 16:37:04 +0000 (16:37 +0000)]
[iOS][WK1] Support toggling continuous spell checking from tests
https://bugs.webkit.org/show_bug.cgi?id=188763

Reviewed by Simon Fraser.

Source/WebKitLegacy/mac:

Move some more code out from under a !PLATFORM(IOS)-guard so as to support toggling continuous
spell checking from tests in iOS WebKit Legacy.

* WebCoreSupport/WebEditorClient.h:
(WebEditorClient::toggleContinuousSpellChecking): Deleted.
* WebCoreSupport/WebEditorClient.mm:
* WebView/WebView.h:
* WebView/WebView.mm:
(-[WebView toggleContinuousSpellChecking:]):
(-[WebView toggleSmartInsertDelete:]):

LayoutTests:

Fix up some spelling tests so that they enable continuous spell checking and unskip them,
with the exception of fast/writing-mode/english-rl-text-with-spelling-marker.html, now
that they pass.

Mark the test fast/writing-mode/english-rl-text-with-spelling-marker.html as an image-only
failure. See <https://bugs.webkit.org/show_bug.cgi?id=188762> for more details.

* editing/spelling/spelling-marker-includes-hyphen-expected.html:
* editing/spelling/spelling-marker-includes-hyphen.html:
* editing/spelling/spelling-markers-in-overlapping-lines-expected.html:
* editing/spelling/spelling-markers-in-overlapping-lines-large-font-expected.html:
* editing/spelling/spelling-markers-in-overlapping-lines-large-font.html:
* editing/spelling/spelling-markers-in-overlapping-lines.html:
* fast/writing-mode/english-bt-text-with-spelling-marker-expected.html:
* fast/writing-mode/english-bt-text-with-spelling-marker.html:
* fast/writing-mode/english-rl-text-with-spelling-marker-expected.html:
* fast/writing-mode/english-rl-text-with-spelling-marker.html:
* platform/ios/TestExpectations:

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

2 years agoUnreviewed. Update OptionsWPE.cmake and NEWS for 2.21.91 release.
aperez@igalia.com [Tue, 21 Aug 2018 16:33:51 +0000 (16:33 +0000)]
Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.91 release.

.:

* Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

* wpe/NEWS: Add release notes for the 2.21.91 release.

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

2 years agoReplace WKPageLoaderClient with WKPageNavigationClient in many API tests
achristensen@apple.com [Tue, 21 Aug 2018 16:16:54 +0000 (16:16 +0000)]
Replace WKPageLoaderClient with WKPageNavigationClient in many API tests
https://bugs.webkit.org/show_bug.cgi?id=188771

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKit/CloseThenTerminate.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/CookieManager.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/DeferredViewInWindowStateChange.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/DidNotHandleKeyDown.cpp:
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/EventModifiers.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/Find.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/FindMatches.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/ForceRepaint.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/FrameHandle.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/Geolocation.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/HitTestResultNodeHandle.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/InjectedBundleBasic.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/LimitTitleSize.cpp:
(TestWebKitAPI::didFinishLoadForFrame):
* TestWebKitAPI/Tests/WebKit/LoadAlternateHTMLStringWithNonDirectoryURL.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::loadAlternateHTMLString):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/LoadCanceledNoServerRedirectCallback.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/LoadPageOnCrash.cpp:
(TestWebKitAPI::WebKit2CrashLoader::WebKit2CrashLoader):
(TestWebKitAPI::didFinishLoad):
* TestWebKitAPI/Tests/WebKit/MenuTypesForMouseEvents.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/MouseMoveAfterCrash.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:
(TestWebKitAPI::didFinishLoadForFrame):
* TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/PendingAPIRequestURL.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/ResizeWindowAfterCrash.cpp:
(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/RestoreSessionState.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/RestoreSessionStateContainingFormData.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/ScrollPinningBehaviors.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishDocumentLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/SpacebarScrolling.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/StopLoadingDuringDidFailProvisionalLoad.cpp:
(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/TerminateTwice.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp:
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishNavigation):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/UserMessage.cpp:
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishNavigation):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WKPageConfiguration.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WKPageCopySessionStateWithFiltering.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WKPageGetScaleFactorNotZero.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WKPageIsPlayingAudio.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setUpClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WKThumbnailView.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/WebArchive.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/AttributedSubstringForProposedRangeWithImage.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/CustomBundleParameter.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/EditorCommands.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/GetPIDAfterAbortedProcessLaunch.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKit/mac/InjectedBundleAppleEvent.cpp:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm:
(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/PictureInPictureDelegate.mm:
(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.
* TestWebKitAPI/Tests/mac/FirstResponderScrollingPosition.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
* TestWebKitAPI/mac/WebKitAgnosticTest.mm:
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

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

2 years ago[WPE] Update to use libwpe-1.0.0 and WPEBackend-fdo-1.0.0
aperez@igalia.com [Tue, 21 Aug 2018 14:25:44 +0000 (14:25 +0000)]
[WPE] Update to use libwpe-1.0.0 and WPEBackend-fdo-1.0.0
https://bugs.webkit.org/show_bug.cgi?id=188782

Reviewed by Michael Catanzaro.

Make the build depend on wpe-0.2, and change the Flatpak and JHBuild development
environments to use version 1.0.0 of libwpe and WPEBackend-fdo.

.:

* Source/cmake/FindWPE.cmake: Renamed from Source/cmake/FindWPEBackend.cmake and changed
to check for libwpe-0.2.
* Source/cmake/OptionsWPE.cmake: Adapt to the rename to FindWPE.cmake.

Tools:

* flatpak/org.webkit.WPE.yaml: Update to use libwpe and WPEBackend-fdo version 1.0.0 from
release tarballs, and removed the (now unneeded) Lua and LuaJIT modules.
* wpe/jhbuild.modules: Ditto.

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

2 years agoDon't place "using namespace XXX;" in global space for unified source builds
Hironori.Fujii@sony.com [Tue, 21 Aug 2018 13:55:13 +0000 (13:55 +0000)]
Don't place "using namespace XXX;" in global space for unified source builds
https://bugs.webkit.org/show_bug.cgi?id=188739

Reviewed by Yusuke Suzuki.

No new tests (No behavior change).

* html/track/AudioTrackList.cpp:
* html/track/TextTrackList.cpp:
* html/track/VideoTrackList.cpp:
* page/SecurityOriginData.cpp:
* page/TextIndicator.cpp:
* platform/geoclue/GeolocationProviderGeoclue.cpp:
* platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
* platform/graphics/win/FullScreenController.cpp:
* platform/mediastream/CaptureDeviceManager.cpp:
* platform/mock/MediaPlaybackTargetPickerMock.cpp:
* svg/animation/SMILTime.cpp:
* testing/js/WebCoreTestSupport.cpp:
* xml/XPathParser.cpp:

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

2 years ago[Flatpak] Update to GNOME master runtime
mcatanzaro@igalia.com [Tue, 21 Aug 2018 13:53:31 +0000 (13:53 +0000)]
[Flatpak] Update to GNOME master runtime
https://bugs.webkit.org/show_bug.cgi?id=188731

Reviewed by Philippe Normand.

The 3.28 runtime is pretty stale at this point. We could wait a couple weeks for the 3.30
runtime, but I don't think there's any need to stick with the stable runtime when we have
the ability to pin to a particular version of the master runtime. There are also several
advantages to switching to the master runtime.

* flatpak/files/httpd-autogen.sh: Removed.
* flatpak/flatpakutils.py:
(WebkitFlatpak.clean_args):
* flatpak/org.webkit.GTK.yaml:
* flatpak/org.webkit.WebKit.yaml:
* flatpak/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch: Removed.
* flatpak/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch: Removed.

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

2 years ago[Linux] Cache the memory footprint and only update it after 1 second
carlosgc@webkit.org [Tue, 21 Aug 2018 13:27:42 +0000 (13:27 +0000)]
[Linux] Cache the memory footprint and only update it after 1 second
https://bugs.webkit.org/show_bug.cgi?id=188791

Reviewed by Yusuke Suzuki.

Getting the memory footprint is an expensive operation in Linux. When called multiple times, the CPU usage is
too much (see bug #188787). We could cache the result for at least 1 second to ensure we don't call it more than
once per second.

* wtf/linux/MemoryFootprintLinux.cpp:
(WTF::forEachLine):
(WTF::computeMemoryFootprint):
(WTF::memoryFootprint):

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

2 years ago[GStreamer] Warn early about incomplete MSE track switching support
philn@webkit.org [Tue, 21 Aug 2018 13:20:44 +0000 (13:20 +0000)]
[GStreamer] Warn early about incomplete MSE track switching support
https://bugs.webkit.org/show_bug.cgi?id=188653

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

The proper track switching support shall be fixed at some point by:
https://bugs.webkit.org/show_bug.cgi?id=182531.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::updateTracks): Remove redundant test.
(WebCore::MediaPlayerPrivateGStreamer::enableTrack): Exit early if
this method is called by the MSE player.

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

2 years agoUnreviewed, rolling out r234981.
commit-queue@webkit.org [Tue, 21 Aug 2018 13:10:54 +0000 (13:10 +0000)]
Unreviewed, rolling out r234981.
https://bugs.webkit.org/show_bug.cgi?id=188793

It was not the main cause of the high CPU usage in the end
(Requested by KaL on #webkit).

Reverted changeset:

"Unreviewed, rolling out r234259."
https://bugs.webkit.org/show_bug.cgi?id=188005
https://trac.webkit.org/changeset/234981

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

2 years ago[GStreamer][MSE] Generic main thread notification support
philn@webkit.org [Tue, 21 Aug 2018 09:07:33 +0000 (09:07 +0000)]
[GStreamer][MSE] Generic main thread notification support
https://bugs.webkit.org/show_bug.cgi?id=188647

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

Using GstBus for main thread notifications has the side effect of "leaking" the
application messages to the media player, leading to CPU cycles wasting.

No new tests, existing MSE tests cover this change.

* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webkit_media_src_init):
(webKitMediaSrcFinalize):
(webKitMediaSrcSetMediaPlayerPrivate):
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:

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

2 years ago[GStreamer][MSE] Remove parsers from playback pipeline
philn@webkit.org [Tue, 21 Aug 2018 08:49:13 +0000 (08:49 +0000)]
[GStreamer][MSE] Remove parsers from playback pipeline
https://bugs.webkit.org/show_bug.cgi?id=188646

Patch by Philippe Normand <philn@igalia.com> on 2018-08-16
Reviewed by Xabier Rodriguez-Calvar.

Decodebin already includes parsers in front of the decoders.

No new tests, existing MSE tests cover this change.

* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::addSourceBuffer):
(WebCore::PlaybackPipeline::attachTrack):
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcLinkSourcePad):
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:

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

2 years agoUnreviewed, rolling out r234979.
commit-queue@webkit.org [Tue, 21 Aug 2018 08:39:23 +0000 (08:39 +0000)]
Unreviewed, rolling out r234979.
https://bugs.webkit.org/show_bug.cgi?id=188780

broke ubuntu LTS build (Requested by philn on #webkit).

Reverted changeset:

"[GTK] Never return an uninitialized ImageGStreamer object."
https://bugs.webkit.org/show_bug.cgi?id=188305
https://trac.webkit.org/changeset/234979

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

2 years agoJSRunLoopTimer may run part of a member function after it's destroyed
sbarati@apple.com [Tue, 21 Aug 2018 07:27:26 +0000 (07:27 +0000)]
JSRunLoopTimer may run part of a member function after it's destroyed
https://bugs.webkit.org/show_bug.cgi?id=188426

Reviewed by Mark Lam.

Source/JavaScriptCore:

When I was reading the JSRunLoopTimer code, I noticed that it is possible
to end up running timer code after the class had been destroyed.

The issue I spotted was in this function:
```
void JSRunLoopTimer::timerDidFire()
{
    JSLock* apiLock = m_apiLock.get();
    if (!apiLock) {
        // Likely a buggy usage: the timer fired while JSRunLoopTimer was being destroyed.
        return;
    }
    // HERE
    std::lock_guard<JSLock> lock(*apiLock);
    RefPtr<VM> vm = apiLock->vm();
    if (!vm) {
        // The VM has been destroyed, so we should just give up.
        return;
    }

    doWork();
}
```

Look at the comment 'HERE'. Let's say that the timer callback thread gets context
switched before grabbing the API lock. Then, some other thread destroys the VM.
And let's say that the VM owns (perhaps transitively) this timer. Then, the
timer would run code and access member variables after it was destroyed.

This patch fixes this issue by introducing a new timer manager class.
This class manages timers on a per VM basis. When a timer is scheduled,
this class refs the timer. It also calls the timer callback while actively
maintaining a +1 ref to it. So, it's no longer possible to call the timer
callback after the timer has been destroyed. However, calling a timer callback
can still race with the VM being destroyed. We continue to detect this case and
bail out of the callback early.

This patch also removes a lot of duplicate code between GCActivityCallback
and JSRunLoopTimer.

* heap/EdenGCActivityCallback.cpp:
(JSC::EdenGCActivityCallback::doCollection):
(JSC::EdenGCActivityCallback::lastGCLength):
(JSC::EdenGCActivityCallback::deathRate):
* heap/EdenGCActivityCallback.h:
* heap/FullGCActivityCallback.cpp:
(JSC::FullGCActivityCallback::doCollection):
(JSC::FullGCActivityCallback::lastGCLength):
(JSC::FullGCActivityCallback::deathRate):
* heap/FullGCActivityCallback.h:
* heap/GCActivityCallback.cpp:
(JSC::GCActivityCallback::doWork):
(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::didAllocate):
(JSC::GCActivityCallback::willCollect):
(JSC::GCActivityCallback::cancel):
(JSC::GCActivityCallback::cancelTimer): Deleted.
(JSC::GCActivityCallback::nextFireTime): Deleted.
* heap/GCActivityCallback.h:
* heap/Heap.cpp:
(JSC::Heap::reportAbandonedObjectGraph):
(JSC::Heap::notifyIncrementalSweeper):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didAllocate):
* heap/IncrementalSweeper.cpp:
(JSC::IncrementalSweeper::scheduleTimer):
(JSC::IncrementalSweeper::doWork):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock):
(JSC::IncrementalSweeper::startSweeping):
(JSC::IncrementalSweeper::stopSweeping):
* heap/IncrementalSweeper.h:
* heap/StopIfNecessaryTimer.cpp:
(JSC::StopIfNecessaryTimer::doWork):
(JSC::StopIfNecessaryTimer::scheduleSoon):
* heap/StopIfNecessaryTimer.h:
* runtime/JSRunLoopTimer.cpp:
(JSC::epochTime):
(JSC::JSRunLoopTimer::Manager::timerDidFireCallback):
(JSC::JSRunLoopTimer::Manager::PerVMData::setRunLoop):
(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):
(JSC::JSRunLoopTimer::Manager::PerVMData::~PerVMData):
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::shared):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::unregisterVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):
(JSC::JSRunLoopTimer::timerDidFire):
(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::timeUntilFire):
(JSC::JSRunLoopTimer::setTimeUntilFire):
(JSC::JSRunLoopTimer::cancelTimer):
(JSC::JSRunLoopTimer::setRunLoop): Deleted.
(JSC::JSRunLoopTimer::timerDidFireCallback): Deleted.
(JSC::JSRunLoopTimer::scheduleTimer): Deleted.
* runtime/JSRunLoopTimer.h:
(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):
* runtime/PromiseDeferredTimer.cpp:
(JSC::PromiseDeferredTimer::doWork):
(JSC::PromiseDeferredTimer::runRunLoop):
(JSC::PromiseDeferredTimer::addPendingPromise):
(JSC::PromiseDeferredTimer::hasPendingPromise):
(JSC::PromiseDeferredTimer::hasDependancyInPendingPromise):
(JSC::PromiseDeferredTimer::cancelPendingPromise):
(JSC::PromiseDeferredTimer::scheduleWorkSoon):
* runtime/PromiseDeferredTimer.h:
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setRunLoop):
(JSC::VM::registerRunLoopTimer): Deleted.
(JSC::VM::unregisterRunLoopTimer): Deleted.
* runtime/VM.h:
(JSC::VM::runLoop const):
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):

Source/WebCore:

* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::ResourceUsageThread::platformThreadBody):
* page/linux/ResourceUsageThreadLinux.cpp:
(WebCore::ResourceUsageThread::platformThreadBody):

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

2 years agoInline DataView accesses into DFG/FTL
sbarati@apple.com [Tue, 21 Aug 2018 06:05:21 +0000 (06:05 +0000)]
Inline DataView accesses into DFG/FTL
https://bugs.webkit.org/show_bug.cgi?id=188573
<rdar://problem/43286746>

Reviewed by Michael Saboff.

JSTests:

* microbenchmarks/data-view-accesses-2.js: Added.
(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):
(test):
* microbenchmarks/data-view-accesses.js: Added.
(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):
* stress/dataview-jit-bounds-checks.js: Added.
(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):
* stress/dataview-jit-get.js: Added.
(assert):
(test1.bigEndian):
(test1.littleEndian):
(test1.biEndian):
(test1):
(test2.bigEndian):
(test2.littleEndian):
(test2.biEndian):
(test2):
(test3.bigEndian):
(test3.littleEndian):
(test3.biEndian):
(test3):
(test4.bigEndian):
(test4.littleEndian):
(test4.biEndian):
(test4):
(test5.bigEndian):
(test5.littleEndian):
(test5.biEndian):
(test5):
(test6.bigEndian):
(test6.littleEndian):
(test6.biEndian):
(test6):
(test7.load):
(test7):
(test8.load):
(test8):
* stress/dataview-jit-neuter.js: Added.
(assert):
(test.load):
(test):
(test2.load):
(test2):
* stress/dataview-jit-set.js: Added.
(assert):
(isLittleEndian):
(readByte):
(readHex):
(test.storeLittleEndian):
(test.storeBigEndian):
(test.store):
(test):
(test2.storeLittleEndian):
(test2.storeBigEndian):
(test2.store):
(test2):
(test3.storeLittleEndian):
(test3.storeBigEndian):
(test3.store):
(test3):
(test4.storeLittleEndian):
(test4.storeBigEndian):
(test4.store):
(test4):
(test5.storeLittleEndian):
(test5.storeBigEndian):
(test5.store):
(test5):
(test6.storeLittleEndian):
(test6.storeBigEndian):
(test6.store):
(test6):
(test7.store):
(test7):
(test8.store):
(test8):
* stress/dataview-jit-unaligned-accesses.js: Added.
(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):

Source/JavaScriptCore:

This patch teaches the DFG/FTL to inline DataView accesses. The approach is
straight forward. We inline the various get*/set* operations as intrinsics.

This patch takes the most obvious approach for now. We OSR exit when:
- An isLittleEndian argument is provided, and is not a boolean.
- The index isn't an integer.
- The |this| isn't a DataView.
- We do an OOB access (or see a neutered array)

To implement this change in a performant way, this patch teaches the macro
assembler how to emit byte swap operations. The semantics of the added functions
are byteSwap + zero extend. This means for the 16bit byte swaps, we need
to actually emit zero extend instructions. For the 32/64bit byte swaps,
the instructions already have these semantics.

This patch is just a lightweight initial implementation. There are some easy
extensions we can do in future changes:
- Teach B3 how to byte swap: https://bugs.webkit.org/show_bug.cgi?id=188759
- CSE DataViewGet* nodes: https://bugs.webkit.org/show_bug.cgi?id=188768

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::byteSwap16):
(JSC::MacroAssemblerARM64::byteSwap32):
(JSC::MacroAssemblerARM64::byteSwap64):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::byteSwap32):
(JSC::MacroAssemblerX86Common::byteSwap16):
(JSC::MacroAssemblerX86Common::byteSwap64):
* assembler/X86Assembler.h:
(JSC::X86Assembler::bswapl_r):
(JSC::X86Assembler::bswapq_r):
(JSC::X86Assembler::shiftInstruction16):
(JSC::X86Assembler::rolw_i8r):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):
* assembler/testmasm.cpp:
(JSC::testByteSwap):
(JSC::run):
* bytecode/DataFormat.h:
* bytecode/SpeculatedType.cpp:
(JSC::dumpSpeculation):
(JSC::speculationFromClassInfo):
(JSC::speculationFromJSType):
(JSC::speculationFromString):
* bytecode/SpeculatedType.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::dataViewData):
* dfg/DFGNodeType.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::speculateDataViewObject):
(JSC::DFG::SpeculativeJIT::speculate):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGUseKind.cpp:
(WTF::printInternal):
* dfg/DFGUseKind.h:
(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::byteSwap32):
(JSC::FTL::DFG::LowerDFGToB3::byteSwap64):
(JSC::FTL::DFG::LowerDFGToB3::emitCodeBasedOnEndiannessBranch):
(JSC::FTL::DFG::LowerDFGToB3::compileDataViewGet):
(JSC::FTL::DFG::LowerDFGToB3::compileDataViewSet):
(JSC::FTL::DFG::LowerDFGToB3::lowDataViewObject):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateDataViewObject):
* runtime/Intrinsic.cpp:
(JSC::intrinsicName):
* runtime/Intrinsic.h:
* runtime/JSDataViewPrototype.cpp:

Source/WTF:

* wtf/TriState.h:

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

2 years agoUnreviewed WinCairo port test gardening
Hironori.Fujii@sony.com [Tue, 21 Aug 2018 04:44:00 +0000 (04:44 +0000)]
Unreviewed WinCairo port test gardening

* platform/wincairo/TestExpectations: Marked some http tests flaky.

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

2 years ago[YARR] Extend size of fixed characters bulk matching in 64bit platform
yusukesuzuki@slowstart.org [Tue, 21 Aug 2018 03:29:32 +0000 (03:29 +0000)]
[YARR] Extend size of fixed characters bulk matching in 64bit platform
https://bugs.webkit.org/show_bug.cgi?id=181989

Patch by Yusuke Suzuki <utatane.tea@gmail.com> on 2018-08-20
Reviewed by Michael Saboff.

JSTests:

* stress/characters-regexp-ignore-case.js: Added.
(shouldBe):
(testH):
(testHe):
(testHel):
(testHell):
(testHello):
(testHelloW):
(testHelloWo):
(testHelloWor):
(testHelloWorl):
(testHelloWorld):
* stress/characters-regexp.js: Added.
(shouldBe):
(testH):
(testHe):
(testHel):
(testHell):
(testHello):
(testHelloW):
(testHelloWo):
(testHelloWor):
(testHelloWorl):
(testHelloWorld):

Source/JavaScriptCore:

This patch extends bulk matching style for fixed-sized characters.
In 64bit environment, the GPR can hold up to 8 characters. This change
reduces the code size since we can fuse multiple `mov` operations into one.

* assembler/LinkBuffer.h:
* runtime/Options.h:
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::compile):

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

2 years agoWeb Inspector: allow breakpoints to be set for specific event listeners
drousso@apple.com [Tue, 21 Aug 2018 02:15:28 +0000 (02:15 +0000)]
Web Inspector: allow breakpoints to be set for specific event listeners
https://bugs.webkit.org/show_bug.cgi?id=183138

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/DOM.json:
Add `setBreakpointForEventListener` and `removeBreakpointForEventListener`, each of which
takes an `eventListenerId` and toggles whether that specific usage of that event listener
should have a breakpoint and pause before running.

Source/WebCore:

Test: inspector/dom/breakpoint-for-event-listener.html

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::setEventListenerDisabled):
(WebCore::InspectorDOMAgent::setBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::removeBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):
(WebCore::InspectorDOMAgent::isEventListenerDisabled):
(WebCore::InspectorDOMAgent::hasBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::idForEventListener): Added.
Rework the event listener data structure to be based on ID instead of `EventListener`, since
it is possible to have the same `EventListener` be used for multiple events.

* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent): Added.
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded):
For DOM events, also check to see if there is a matching event listener specific breakpoint
set via the DOMAgent, and break on it if one is found.

* inspector/InspectorInstrumentation.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::willHandleEventImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::pauseOnNativeEventIfNeeded):
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
Split off `pauseOnNativeEventIfNeeded` to only handle non-DOM events, since all DOM events
would already only go through `willHandleEvent`.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload): Added.
(WI.EventBreakpoint.prototype.get eventListener): Added.

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

* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.get eventBreakpoints): Added.
(WI.DOMTreeManager.prototype._setDocument):
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
(WI.DOMTreeManager.prototype.setBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.removeBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.breakpointForEventListenerId): Added.

* UserInterface/Controllers/EventBreakpointTreeController.js:
(WI.EventBreakpointTreeController):

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

* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleRow):
(WI.EventListenerSectionGroup.prototype._createBreakpointToggleRow): Added.

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

LayoutTests:

* inspector/dom/breakpoint-for-event-listener-expected.txt: Added.
* inspector/dom/breakpoint-for-event-listener.html: Added.

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

2 years agoFix the LLInt so that btjs shows vmEntryToJavaScript instead of llintPCRangeStart...
mark.lam@apple.com [Tue, 21 Aug 2018 01:13:51 +0000 (01:13 +0000)]
Fix the LLInt so that btjs shows vmEntryToJavaScript instead of llintPCRangeStart for the entry frame.
https://bugs.webkit.org/show_bug.cgi?id=188769

Reviewed by Michael Saboff.

* llint/LowLevelInterpreter.asm:
- Just put an unused instruction between llintPCRangeStart and vmEntryToJavaScript
  so that libunwind doesn't get confused by the 2 labels pointing to the same
  code address.

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

2 years agoUse unified build for NetworkProcess
mcatanzaro@igalia.com [Tue, 21 Aug 2018 00:50:06 +0000 (00:50 +0000)]
Use unified build for NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=185011

Reviewed by Alex Christensen.

* NetworkProcess/Cookies/WebCookieManager.cpp:
* NetworkProcess/Downloads/Download.cpp:
* NetworkProcess/Downloads/DownloadManager.cpp:
* NetworkProcess/Downloads/PendingDownload.cpp:
* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkContentRuleListManager.cpp:
* NetworkProcess/NetworkDataTask.cpp:
* NetworkProcess/NetworkDataTaskBlob.cpp:
* NetworkProcess/NetworkLoadChecker.cpp:
* NetworkProcess/NetworkProcess.cpp:
* NetworkProcess/NetworkProcessPlatformStrategies.cpp:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/NetworkSession.cpp:
* NetworkProcess/NetworkSocketStream.cpp:
* NetworkProcess/PingLoad.cpp:
* NetworkProcess/cache/CacheStorageEngine.cpp:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
* NetworkProcess/cache/NetworkCache.cpp:
* NetworkProcess/capture/NetworkCaptureEvent.cpp:
* NetworkProcess/capture/NetworkCaptureManager.cpp:
* NetworkProcess/capture/NetworkCaptureRecorder.cpp:
* NetworkProcess/capture/NetworkCaptureReplayer.cpp:
* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
* NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::platformCancelNetworkLoad):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:didBecomeInvalidWithError:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]):
Fix the build with unified sources.

* Sources.txt: Un-@no-unify NetworkProcess/*.
* SourcesCocoa.txt: Un-@no-unify NetworkProcess/*.

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

2 years agoWebKitTestRunner: Add watchOS entitlements
jbedard@apple.com [Mon, 20 Aug 2018 23:10:21 +0000 (23:10 +0000)]
WebKitTestRunner: Add watchOS entitlements
https://bugs.webkit.org/show_bug.cgi?id=188758

Reviewed by Tim Horton.

watchOS needs an additional entitlement to open up a socket for on-device testing.

* WebKitTestRunner/Configurations/WebKitTestRunnerApp-watchOS.entitlements: Added.
* WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig:
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:

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

2 years ago[CMake] Sync unified build with Cocoa ports
mcatanzaro@igalia.com [Mon, 20 Aug 2018 22:59:23 +0000 (22:59 +0000)]
[CMake] Sync unified build with Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=188732

Reviewed by Tim Horton.

Source/WebCore:

For iOS, disambiguate between ::WebEvent declared in PlatformKeyboardEvent.h and
WebCore::WebEvent declared in WebEvent.h. It's expected that we'll have to deal with random
issues like this when modifying unrelated source files in higher-level projects, since any
change to the sources list changes which files get bundled together, and headers from
lower-level projects that were not included before may now be included together.

* platform/PlatformKeyboardEvent.h:
(WebCore::PlatformKeyboardEvent::event const):

Source/WebKit:

Sync unified build with Cocoa ports. This enables unified build for WebKit/Platform and
WebKit/Shared.

Lots of files need to be moved around since the existing Sources.txt was not copied from
CMakeLists.txt. This replaces the Sources.txt with the sources list from CMakeList.txt.
Files that are not built for Cocoa are moved to SourcesGTK.txt, SourcesWPE.txt, and
PlatformWin.cmake. Files that are built only on Cocoa are moved to SourcesCocoa.txt. There's
plenty of room to determine if many of these files really need to be platform-specific in
the future, but let's not change that now.

Unfortunately, several files under Shared and PluginProcess need to be un-unified to be
usable for GTK's WebKitPluginProcess2. I've never managed to understand why, but it won't
link otherwise. Fortunately, this only affects a few files (listed in
PluginProcessGTK2_SOURCES), only a couple dozen of which are cross-platform.

* CMakeLists.txt:
* PlatformWin.cmake:
* Sources.txt:
* SourcesCocoa.txt:
* SourcesGTK.txt:
* SourcesWPE.txt:

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

2 years ago[WHLSL] Remove generics from the interpreter
commit-queue@webkit.org [Mon, 20 Aug 2018 22:52:44 +0000 (22:52 +0000)]
[WHLSL] Remove generics from the interpreter
https://bugs.webkit.org/show_bug.cgi?id=187988

Patch by Thomas Denney <tdenney@apple.com> on 2018-08-20
Reviewed by Myles C. Maxfield.

This patch completely removes generic and protocol support from WHLSL
whilst adding back any features that were originally implemented with
generics.

Many of the changes in this patch just remove occurrences of type
arguments and type parameters --- although there are some cases where
they have been deliberately left in --- as well as removing tests only
relevant to those features. These changes are not listed below.

* WebGPUShadingLanguageRI/All.js: Add/remove JS dependencies
* WebGPUShadingLanguageRI/AutoWrapper.js:
(AutoWrapper.prototype.visitConstexprTypeParameter): Deleted.
* WebGPUShadingLanguageRI/BuiltinVectorCasts.js: Added. The built-in
vectors have many constructors for different scalar and vector types.
These were originally implemented with generics.
* WebGPUShadingLanguageRI/BuiltinVectorEqualityOperator.js: Adds the
equality operator for built-in vectors, again this was removed with
generics.
* WebGPUShadingLanguageRI/BuiltinVectorGetter.js: Added, as above.
Built-in vectors only support the getter and setter, and not the ander.
* WebGPUShadingLanguageRI/BuiltinVectorIndexGetter.js: Added.
* WebGPUShadingLanguageRI/BuiltinVectorIndexSetter.js: Added.
* WebGPUShadingLanguageRI/BuiltinVectorSetter.js: Added.
* WebGPUShadingLanguageRI/CallExpression.js: Adds support for
instantiating functions which cannot be discovered earlier in
preparation because their types are absent (specifically support for the
operator &[] for array references and the length operator for array
references). Previously support for these was implemented with generics.
(CallExpression.resolve):
(CallExpression.prototype.resolve):
(CallExpression.prototype._resolveByInstantiation):
(CallExpression.prototype._resolveToOperatorAnderIndexer):
(CallExpression.prototype._resolveToOperatorLength):
(CallExpression.prototype.resolveToOverload):
(CallExpression.prototype.becomeCast):
(CallExpression.prototype.toString):
(CallExpression):
* WebGPUShadingLanguageRI/CallExpressionTypeArgumentResolver.js: Added.
We support syntax like vector<int, 2>(a, b) for constructing vectors;
this new preparation step resolves them to specific constructors.
* WebGPUShadingLanguageRI/CallFunction.js:
* WebGPUShadingLanguageRI/Checker.js:
* WebGPUShadingLanguageRI/ConstexprFolder.js:
* WebGPUShadingLanguageRI/CreateLiteralType.js:
* WebGPUShadingLanguageRI/ExpressionFinder.js:
* WebGPUShadingLanguageRI/FlattenProtocolExtends.js: Removed.
* WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:
* WebGPUShadingLanguageRI/Func.js:
* WebGPUShadingLanguageRI/FuncDef.js:
* WebGPUShadingLanguageRI/FuncInstantiator.js: Deleted.
* WebGPUShadingLanguageRI/InferTypesForCall.js: Removed usage of type arguments.
* WebGPUShadingLanguageRI/Inline.js: Remove use of FuncInstantiator.
* WebGPUShadingLanguageRI/Inliner.js: Ditto.
* WebGPUShadingLanguageRI/Intrinsics.js:
* WebGPUShadingLanguageRI/Lexer.js:
* WebGPUShadingLanguageRI/LiteralTypeChecker.js:
* WebGPUShadingLanguageRI/NameContext.js:
(NameContext.prototype.add):
(NameContext.prototype.get let):
(NameContext.underlyingThings.prototype.else):
(NameContext.prototype.resolveFuncOverload):
* WebGPUShadingLanguageRI/NameFinder.js:
* WebGPUShadingLanguageRI/NameResolver.js:
(NameResolver.prototype.visitFunc):
(NameResolver.prototype.visitFuncDef):
(NameResolver.prototype.visitTypeDef):
(NameResolver.prototype.visitStructType):
(NameResolver.prototype.visitTypeRef):
(NameResolver.prototype.visitCallExpression):
(NameResolver.prototype.visitVectorType):
(NameResolver):
(NameResolver.prototype._visitTypeParametersAndBuildNameContext): Deleted.
(NameResolver.prototype.visitProtocolDecl): Deleted.
* WebGPUShadingLanguageRI/NativeFunc.js:
(NativeFunc):
* WebGPUShadingLanguageRI/NativeFuncInstance.js: Deleted.
* WebGPUShadingLanguageRI/NativeType.js:
(NativeType):
(NativeType.prototype.get name):
(NativeType.prototype.toString):
(NativeType.prototype.get typeParameters): Deleted.
(NativeType.prototype.instantiate): Deleted.
* WebGPUShadingLanguageRI/Node.js:
(Node.prototype.commit):
(Node):
(Node.prototype.substitute): Deleted.
(Node.prototype.substituteToUnification): Deleted.
* WebGPUShadingLanguageRI/OperatorAnderIndex.js: Added, previously
implemented with generics.
* WebGPUShadingLanguageRI/OperatorArrayRefLength.js: Ditto.
* WebGPUShadingLanguageRI/OperatorBool.js: Ditto.
* WebGPUShadingLanguageRI/Parse.js: Removed everything related to
generics and protocols.
* WebGPUShadingLanguageRI/Prepare.js: Added new stages.
* WebGPUShadingLanguageRI/Program.js:
(Program):
(Program.prototype.get types):
(Program.prototype.add):
(Program.prototype.get protocols): Deleted.
* WebGPUShadingLanguageRI/ProtocolDecl.js: Removed.
* WebGPUShadingLanguageRI/ProtocolRef.js: Removed.
* WebGPUShadingLanguageRI/RecursiveTypeChecker.js:
* WebGPUShadingLanguageRI/ResolveCallExpressionsWithTypeArguments.js: Added.
* WebGPUShadingLanguageRI/ResolveNames.js:
* WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
* WebGPUShadingLanguageRI/ResolveTypeDefs.js:
(resolveTypeDefsInProtocols): Deleted.
* WebGPUShadingLanguageRI/Rewriter.js: Changes for new classes.
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/SPIRVCodegen.js:
* WebGPUShadingLanguageRI/StandardLibrary.js: Replace old generic features.
* WebGPUShadingLanguageRI/StatementCloner.js: Changes for new classes.
(StructLayoutBuilder):
* WebGPUShadingLanguageRI/StructType.js:
* WebGPUShadingLanguageRI/SwizzleOp.js:
(SwizzleOp):
(SwizzleOp.prototype.get baseTypeName):
(SwizzleOp.prototype.toString):
(SwizzleOp.functions.):
(SwizzleOp.functions):
(SwizzleOp.prototype.instantiateImplementation):
(SwizzleOp.allSwizzleOperators.): Deleted.
(SwizzleOp.allSwizzleOperators): Deleted.
* WebGPUShadingLanguageRI/SynthesizeArrayOperatorLength.js: Added,
previously implemented with generics.
* WebGPUShadingLanguageRI/SynthesizeCopyConstructorOperator.js: Ditto.
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js: Ditto.
* WebGPUShadingLanguageRI/SynthesizeEnumFunctions.js: Ditto.
* WebGPUShadingLanguageRI/SynthesizeOperatorBool.js: Ditto.
* WebGPUShadingLanguageRI/SynthesizeStructAccessors.js:
(synthesizeStructAccessors.setupImplementationData):
(synthesizeStructAccessors.createFieldType):
(synthesizeStructAccessors.createTypeRef):
(synthesizeStructAccessors.setupAnder):
(synthesizeStructAccessors):
(synthesizeStructAccessors.createTypeParameters): Deleted.
(synthesizeStructAccessors.): Deleted.
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js: Removed redundant tests and added new
tests for changed language features.
* WebGPUShadingLanguageRI/Type.js:
* WebGPUShadingLanguageRI/TypeDef.js:
* WebGPUShadingLanguageRI/TypeDefResolver.js:
* WebGPUShadingLanguageRI/TypeParameterRewriter.js: Removed.
* WebGPUShadingLanguageRI/TypeRef.js:
* WebGPUShadingLanguageRI/TypeVariable.js: Removed.
* WebGPUShadingLanguageRI/UnificationContext.js:
* WebGPUShadingLanguageRI/VectorType.js: Added.
* WebGPUShadingLanguageRI/Visitor.js: Changes for new classes.
* WebGPUShadingLanguageRI/WSL.md: Removed description of
generics/protocols.
* WebGPUShadingLanguageRI/WrapChecker.js:
(WrapChecker):
(WrapChecker.visitConstexprTypeParameter): Deleted.
(WrapChecker.prototype.visitFuncParameter): Deleted.
(WrapChecker.prototype.visitTypeVariable): Deleted.
* WebGPUShadingLanguageRI/index.html:

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

2 years agoWeb Inspector: Canvas tab: allow recording processing to be stopped midway
drousso@apple.com [Mon, 20 Aug 2018 21:31:55 +0000 (21:31 +0000)]
Web Inspector: Canvas tab: allow recording processing to be stopped midway
https://bugs.webkit.org/show_bug.cgi?id=185152

Reviewed by Joseph Pecoraro.

Previously, `WI.Recording` used a `WI.YieldableTask` to process every action in such a way
as to not block the UI. The downside to this approach was that it used a message view to
indicate the progress of this process, and prevented the user from viewing the `WI.Recording`
until that process was completed.

This patch changes `WI.Recording` to instead use `async/await` and fire events whenever a
`WI.RecordingAction` (and `WI.RecordingFrame`) finished processing, allowing it to be added
to the recording `WI.TreeOutline` and selected by the user. Additionally, a pause/resume
button is added to the `WI.CanvasSidebarPanel` so the user has greater control over what
how much of the `WI.Recording` they want to process.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Base/Utilities.js:
(Promise.delay)
Utility function for promisifying `setTimeout`.

* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.get processing): Added.
(WI.Recording.prototype.get ready): Added.
(WI.Recording.prototype.startProcessing): Added.
(WI.Recording.prototype.stopProcessing): Added.
(WI.Recording.prototype.async._process): Added.
(WI.Recording.prototype.process): Deleted.
(WI.Recording.prototype.async.yieldableTaskWillProcessItem): Deleted.
(WI.Recording.prototype.async.yieldableTaskDidFinish): Deleted.

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.get ready): Added.
(WI.RecordingAction.prototype.async.swizzle):
(WI.RecordingAction.prototype.apply):

* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged.createPauseButton): Added.
(WI.CanvasSidebarPanel.prototype._recordingChanged.createResumeButton): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingFrameTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingActionTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingStartProcessingFrame): Added.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:matches(:focus, .force-focus) .item.processing.selected .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle::before): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options > .indeterminate-progress-spinner): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner): Deleted.

* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._handleRecordingProcessedAction): Added.
(WI.RecordingContentView.prototype._updateProcessProgress): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > header > .slider-container > .slider-value): Added.

* UserInterface/Views/FolderTreeElement.js:
(WI.FolderTreeElement):

* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.get statusElement): Added.
(WI.GeneralTreeElement.prototype._updateTitleElements):

* UserInterface/Views/RecordingContentView.js:
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
Drive-by: `WI.Collection` doesn't have a `values()` accessor for the underlying `Set`.
* UserInterface/Views/RecordingNavigationSidebarPanel.css: Removed.
* UserInterface/Views/RecordingNavigationSidebarPanel.js: Removed.
These files are no longer used since they were "merged" into `WI.CanvasSidebarPanel`.

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

2 years agoEnable ios media tests that were blocked on user gesture.
commit-queue@webkit.org [Mon, 20 Aug 2018 21:09:26 +0000 (21:09 +0000)]
Enable ios media tests that were blocked on user gesture.
https://bugs.webkit.org/show_bug.cgi?id=188753

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-08-20
Reviewed by Jer Noble.

Enable tests that now work on ios because there is now a way to simulate user gesture.

* platform/ios/TestExpectations:

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

2 years agoWeb Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
webkit@devinrousso.com [Mon, 20 Aug 2018 20:30:50 +0000 (20:30 +0000)]
Web Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
https://bugs.webkit.org/show_bug.cgi?id=183650

Reviewed by Joseph Pecoraro.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._shaderProgramAdded):
(WI.CanvasContentView.prototype._shaderProgramRemoved):
(WI.CanvasContentView.prototype._updateViewRelatedItems):
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
(WI.CanvasContentView.prototype._addRecording): Deleted.
(WI.CanvasContentView.prototype._handleRecordingSelectElementChange): Deleted.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > :matches(.view-shader, .view-recording)):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > img + img):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-shader):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-recording):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings > select): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus): Deleted.
Create two image buttons in the bottom left corner of each canvas tile that appear when the
canvas has associated shaders and/or recordings. Clicking each image button will function
similar to path components, in that if there is only one shader/recording, it is immediately
selected, whereas if there are multiple a dropdown is shown.

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Drive-by: ensure that the selected recording action is properly updated when first loading a
recording and when scrubbing through one.

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