WebKit-https.git
13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months 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

13 months agoREGRESSION (r223192): Remove invalid `path` for Modules/geolocation/ios folder
ddkilzer@apple.com [Mon, 20 Aug 2018 20:04:08 +0000 (20:04 +0000)]
REGRESSION (r223192): Remove invalid `path` for Modules/geolocation/ios folder

* WebCore.xcodeproj/project.pbxproj: Remove invalid `path`
setting for WebCore/Modules/geolocation/ios folder. This was
found while working on a script for Bug 188754: Tool to fix
folders that should map to directories in Xcode project files.

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

13 months agoREGRESSION (r235015): Xcode changes `mainGroup` name when updating WebCore project...
ddkilzer@apple.com [Mon, 20 Aug 2018 19:51:03 +0000 (19:51 +0000)]
REGRESSION (r235015): Xcode changes `mainGroup` name when updating WebCore project file

* WebCore.xcodeproj/project.pbxproj:
- Change `name` to "WebCore" within the group used by
  `mainGroup` so Xcode won't keep changing its value back to
  "WebKit".

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

13 months agoUpdate webkit-webgl-test-harness.js to provide more info on failing and partially...
commit-queue@webkit.org [Mon, 20 Aug 2018 19:29:11 +0000 (19:29 +0000)]
Update webkit-webgl-test-harness.js to provide more info on failing and partially passing tests
https://bugs.webkit.org/show_bug.cgi?id=188628

Patch by Justin Fan <justin_fan@apple.com> on 2018-08-20
Reviewed by Alexey Proskuryakov.

Slightly augment the test-harness for the WebGL 2 conformance suite; failing test results now report
failure messagees and the number of individual reported failures and passes from the wrapped Khronos test.
Allow us to track when incremental conformance improvements or regressions occur within the breadth of a
single conformance test.

* webgl/2.0.0/conformance2/glsl3/attrib-location-length-limits-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-define-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
* webgl/2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop-expected.txt:
* webgl/2.0.0/conformance2/glsl3/uniform-location-length-limits-expected.txt:
* webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
* webgl/2.0.0/resources/webkit-webgl-test-harness.js:
(window.webglTestHarness.reportResults):
(window.webglTestHarness.notifyFinished):

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

13 months agoAdded Thomas Denney to contributors.json.
commit-queue@webkit.org [Mon, 20 Aug 2018 19:22:26 +0000 (19:22 +0000)]
Added Thomas Denney to contributors.json.
https://bugs.webkit.org/show_bug.cgi?id=188525

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

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

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

13 months agoFix the iOSMac build with unified sources
timothy_horton@apple.com [Mon, 20 Aug 2018 19:15:11 +0000 (19:15 +0000)]
Fix the iOSMac build with unified sources

* Shared/mac/ArgumentCodersMac.mm:
* Shared/mac/ChildProcessMac.mm:
* Shared/mac/NativeWebKeyboardEventMac.mm:

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

13 months agoUIWebView crashes while attempting to play youtube video on phone
commit-queue@webkit.org [Mon, 20 Aug 2018 18:38:05 +0000 (18:38 +0000)]
UIWebView crashes while attempting to play youtube video on phone
https://bugs.webkit.org/show_bug.cgi?id=188351
rdar://problem/42489664

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

Test will be incorporated with fix for 188749, which will test both fixes.

VideoFullscreenControllerContext must remove unretained reference to it from m_playbackModel during cleanup.

* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::didCleanupFullscreen):

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

13 months ago[MediaStream] Move capture device monitoring to WebKit
eric.carlson@apple.com [Mon, 20 Aug 2018 18:10:22 +0000 (18:10 +0000)]
[MediaStream] Move capture device monitoring to WebKit
https://bugs.webkit.org/show_bug.cgi?id=188521
<rdar://problem/43251787>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, updated fast/mediastream/device-change-event-2.html for the changes.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::MediaDevices): Device change listener is added in addEventListener.
(WebCore::MediaDevices::stop): Device change listener is on the user media controller.
(WebCore::MediaDevices::addEventListener): Add the device change listener only once the first
event handler is added.
* Modules/mediastream/MediaDevices.h:

* Modules/mediastream/UserMediaClient.h:
* Modules/mediastream/UserMediaController.h:
(WebCore::UserMediaController::addDeviceChangeObserver): Pass through to the client.
(WebCore::UserMediaController::removeDeviceChangeObserver): Ditto.

* platform/mediastream/CaptureDeviceManager.cpp:
(CaptureDeviceManager::deviceChanged): Notify RealtimeMediaSourceCenter.
(nextObserverToken): Deleted.
(CaptureDeviceManager::addCaptureDeviceChangedObserver): Deleted.
(CaptureDeviceManager::removeCaptureDeviceChangedObserver): Deleted.
* platform/mediastream/CaptureDeviceManager.h:

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::setDevicesChangedObserver):
(WebCore::RealtimeMediaSourceCenter::captureDevicesChanged):
(WebCore::observerMap): Deleted.
(WebCore::RealtimeMediaSourceCenter::addDevicesChangedObserver): Deleted.
(WebCore::RealtimeMediaSourceCenter::removeDevicesChangedObserver): Deleted.
* platform/mediastream/RealtimeMediaSourceCenter.h:

* platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
(WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices): Call base class.

* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::deviceConnected): Ditto.
(WebCore::AVCaptureDeviceManager::deviceDisconnected): Ditto.

* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::deviceHasInputStreams): Drive-by fix, check the number of buffers to see if the
device has input streams.
(WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices): Use new bool parameter
added to refreshAudioCaptureDevices so we won't trigger a device change event on the first scan.
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices): Add param.
(WebCore::CoreAudioCaptureDeviceManager::devicesChanged): Use new param.
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:

* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockRealtimeMediaSourceCenter::setDevices): Don't need to call captureDevicesChanged,
it is done in the UI process.
(WebCore::MockRealtimeMediaSourceCenter::addDevice): Ditto.
(WebCore::MockRealtimeMediaSourceCenter::removeDevice): Ditto.

* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setPageIsFocusedAndActive): New, used by updated test.
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): Notify as appropriate.
(WebKit::UserMediaPermissionRequestManagerProxy::viewIsBecomingVisible): Change name from
viewIsBecomingVisible. Call captureDevicesChanged if a change happened when not visible.
(WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired): Clear m_pendingDeviceChangeEvent.
(WebKit::UserMediaPermissionRequestManagerProxy::processPregrantedRequests): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:

* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::UserMediaProcessManager): Initialize timer.
(WebKit::UserMediaProcessManager::captureDevicesChanged): New, notify each manager.
(WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices): Cache the device list and
register device change listener the first time it is called.
* UIProcess/UserMediaProcessManager.h:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::viewIsBecomingVisible):
(WebKit::WebPageProxy::beginMonitoringCaptureDevices):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::addDeviceChangeObserver): Add listener, tell page
to start monitoring device changes.
(WebKit::UserMediaPermissionRequestManager::removeDeviceChangeObserver): Remove listener.
(WebKit::UserMediaPermissionRequestManager::captureDevicesChanged): Call listeners.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

* WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
(WebKit::WebUserMediaClient::addDeviceChangeObserver):
(WebKit::WebUserMediaClient::removeDeviceChangeObserver):
* WebProcess/WebCoreSupport/WebUserMediaClient.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::captureDevicesChanged):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::addMockMediaDevice):
(WebKit::WebProcess::clearMockMediaDevices):
(WebKit::WebProcess::removeMockMediaDevice):
(WebKit::WebProcess::resetMockMediaDevices):
(WebKit::WebProcess::captureDevicesChanged):
* WebProcess/WebProcess.h:

LayoutTests:

* fast/mediastream/device-change-event-2-expected.txt: Updated.
* fast/mediastream/device-change-event-2.html: Updated.

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

13 months ago[GTK] Sort inspector GResource manifest to ensure reproducible builds
commit-queue@webkit.org [Mon, 20 Aug 2018 16:49:10 +0000 (16:49 +0000)]
[GTK] Sort inspector GResource manifest to ensure reproducible builds
https://bugs.webkit.org/show_bug.cgi?id=188738

Patch by Bernhard M. Wiedemann <bwiedemann@suse.de> on 2018-08-20
Reviewed by Michael Catanzaro.

* glib/generate-inspector-gresource-manifest.py:
(get_filenames): sort list of input files

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

13 months ago[iOS] Paste is missing from callout bar when pasteboard only contains custom data
wenson_hsieh@apple.com [Mon, 20 Aug 2018 16:43:30 +0000 (16:43 +0000)]
[iOS] Paste is missing from callout bar when pasteboard only contains custom data
https://bugs.webkit.org/show_bug.cgi?id=184271
<rdar://problem/39256708>

Reviewed by Andy Estes.

This API test is failing when run against older macOS builds, where custom pasteboard
data is not enabled by default.

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

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

13 months agoAdd WPE Debug configuration to the flakiness dashboard
csaavedra@igalia.com [Mon, 20 Aug 2018 13:31:30 +0000 (13:31 +0000)]
Add WPE Debug configuration to the flakiness dashboard
https://bugs.webkit.org/show_bug.cgi?id=188743

Reviewed by Michael Catanzaro.

* TestResultServer/static-dashboards/builders.jsonp:
* TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:

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

13 months agoThrow an exception if window.open() gets passed a URL that cannot be parsed
commit-queue@webkit.org [Mon, 20 Aug 2018 11:47:38 +0000 (11:47 +0000)]
Throw an exception if window.open() gets passed a URL that cannot be parsed
https://bugs.webkit.org/show_bug.cgi?id=171656

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-20
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/url/failure-expected.txt:

Source/WebCore:

Throw a SyntaxError exception when an invalid url gets passed into window.open().

Tests: imported/w3c/web-platform-tests/url/failure.html
       fast/dom/Window/open-invalid-url.html

* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::open):
(WebCore::DOMWindow::showModalDialog):
* page/DOMWindow.h:
* page/DOMWindow.idl:
* testing/Internals.cpp:
(WebCore::Internals::openDummyInspectorFrontend):

LayoutTests:

* fast/dom/Window/open-invalid-url-expected.txt:
* fast/dom/Window/open-invalid-url.html:

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

13 months agoUnreviewed. Fix GTK/WPE cookie API tests after r234396.
carlosgc@webkit.org [Mon, 20 Aug 2018 10:37:17 +0000 (10:37 +0000)]
Unreviewed. Fix GTK/WPE cookie API tests after r234396.

* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::displayNameForCookieHostName): Bring back the check to handle localhost as an
special case for non cocoa ports.

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

13 months ago[SOUP] Check length before calling soup_message_body_append_buffer.
Ms2ger@igalia.com [Mon, 20 Aug 2018 09:29:01 +0000 (09:29 +0000)]
[SOUP] Check length before calling soup_message_body_append_buffer.
https://bugs.webkit.org/show_bug.cgi?id=176803

Reviewed by Carlos Garcia Campos.

Source/WebCore:

The function has a precondition that the buffer is non-empty.

Test: http/tests/local/blob/send-hybrid-blob-using-open-panel.html

* platform/network/soup/ResourceRequestSoup.cpp:
(WebCore::appendEncodedBlobItemToSoupMessageBody):
(WebCore::ResourceRequest::updateSoupMessageBody const):

LayoutTests:

* platform/gtk/TestExpectations: Enable test.

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

13 months agoRelax Request constructor around referrers
commit-queue@webkit.org [Mon, 20 Aug 2018 08:42:51 +0000 (08:42 +0000)]
Relax Request constructor around referrers
https://bugs.webkit.org/show_bug.cgi?id=168649

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-20
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/policies/referrer-origin-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-service-worker.https-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
* web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt:

Source/WebCore:

Implement remaining part of fetch change
https://github.com/whatwg/fetch/pull/377, i.e.
if "parsedReferrer’s origin is not same origin with origin",
then set request’s referrer to "client", instead of
throwing an exception [1].

WebKit's new behavior matches that of Chrome and Firefox.

Testing is covered by existing wpt tests.

[1] Step 15.3.3 of https://fetch.spec.whatwg.org/#main-fetch

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

LayoutTests:

* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt:

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

13 months ago[GLIB] Add API to throw exceptions using printf formatted strings
carlosgc@webkit.org [Mon, 20 Aug 2018 07:00:36 +0000 (07:00 +0000)]
[GLIB] Add API to throw exceptions using printf formatted strings
https://bugs.webkit.org/show_bug.cgi?id=188698

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Add jsc_context_throw_printf() and jsc_context_throw_with_name_printf(). Also add new public constructors of
JSCException using printf formatted string.

* API/glib/JSCContext.cpp:
(jsc_context_throw_printf):
(jsc_context_throw_with_name_printf):
* API/glib/JSCContext.h:
* API/glib/JSCException.cpp:
(jsc_exception_new_printf):
(jsc_exception_new_vprintf):
(jsc_exception_new_with_name_printf):
(jsc_exception_new_with_name_vprintf):
* API/glib/JSCException.h:
* API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

Add cases to test the new API.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(createFormattedError):
(createCustomFormattedError):
(testJSCExceptions):

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

13 months ago[GLIB] Complete the JSCException API
carlosgc@webkit.org [Mon, 20 Aug 2018 06:57:12 +0000 (06:57 +0000)]
[GLIB] Complete the JSCException API
https://bugs.webkit.org/show_bug.cgi?id=188695

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Add more API to JSCException:
 - New function to get the column number
 - New function get exception as string (toString())
 - Add the possibility to create exceptions with a custom error name.
 - New function to get the exception error name
 - New function to get the exception backtrace.
 - New convenience function to report a exception by returning a formatted string with all the exception
   details, to be shown as a user error message.

* API/glib/JSCContext.cpp:
(jsc_context_throw_with_name):
* API/glib/JSCContext.h:
* API/glib/JSCException.cpp:
(jscExceptionEnsureProperties):
(jsc_exception_new):
(jsc_exception_new_with_name):
(jsc_exception_get_name):
(jsc_exception_get_column_number):
(jsc_exception_get_back_trace_string):
(jsc_exception_to_string):
(jsc_exception_report):
* API/glib/JSCException.h:
* API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

Add cases to test the new API.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(testJSCCheckSyntax):
(createCustomError):
(testJSCExceptions):

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

13 months ago[Cocoa] Update uses of wrapper template functions in WebKit for clarity, simplicity...
darin@apple.com [Mon, 20 Aug 2018 00:53:34 +0000 (00:53 +0000)]
[Cocoa] Update uses of wrapper template functions in WebKit for clarity, simplicity, better ARC readiness
https://bugs.webkit.org/show_bug.cgi?id=188735

Reviewed by Dan Bernstein.

Because of argument-dependent lookup, there should never be a reason to call
the wrapper function as WebKit::wrapper or API::wrapper unless there is a need
to resolve a name conflict, so removed the explicit namespacing.

* UIProcess/API/C/mac/WKPagePrivateMac.mm:
(WKPageLoadURLRequestReturningNavigation): Removed explicit null check and
leakRef/autorelease pair, both done by the wrapper template function now.

* UIProcess/API/Cocoa/WKBackForwardList.mm:
(toWKBackForwardListItem): Deleted.
(-[WKBackForwardList currentItem]): Use wrapper instead of toWKBackForwardListItem.
(-[WKBackForwardList backItem]): Ditto.
(-[WKBackForwardList forwardItem]): Ditto.
(-[WKBackForwardList itemAtIndex:]): Ditto.
(-[WKBackForwardList backList]): Removed leakRef/autorelease pair.
(-[WKBackForwardList forwardList]): Ditto.

* UIProcess/API/Cocoa/WKContentRuleListStore.mm:
(+[WKContentRuleListStore defaultStore]): Removed explicit WebKit namespace.
(+[WKContentRuleListStore storeWithURL:]): Fixed a storage leak by removing leakRef,
which was not balanced. This is not a copy or create function, so it should not
return an object that requires a release to balance it.
(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:releasesArgument:]):
Removed explicit WebKit namespace and unneeded get().
(-[WKContentRuleListStore lookUpContentRuleListForIdentifier:completionHandler:]):
Removed explicit WebKit namespace.
(+[WKContentRuleListStore defaultStoreWithLegacyFilename]): Ditto.
(+[WKContentRuleListStore storeWithURLAndLegacyFilename:]): Fixed storage leak,
as above in storeWithURL.

* UIProcess/API/Cocoa/WKFrameInfo.mm:
(-[WKFrameInfo _handle]): Removed explicit WebKit namespace.
* UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
(WKHTTPCookieStoreObserver::cookiesDidChange): Ditto.

* UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction sourceFrame]): Removed explicit null check, now done by
the wrapper template function.
(-[WKNavigationAction targetFrame]): Ditto.
(-[WKNavigationAction _userInitiatedAction]): Ditto.
(-[WKNavigationAction _mainFrameNavigation]): Ditto.

* UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
(-[WKOpenPanelParameters _acceptedMIMETypes]): Removed leakRef/autorelease pair,
now done by the wrapper template function.
(-[WKOpenPanelParameters _acceptedFileExtensions]): Ditto.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences copyWithZone:]): Use retain instead of leakRef; slightly clearer
for when we convert to ARC.
(+[WKPreferences _experimentalFeatures]): Removed leakRef/autorelease pair,
now done by the wrapper template function.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _configuration]): Fixed a storage leak by removing leakRef,
which was not balanced. This is not a copy or create function, so it should not
return an object that requires a release to balance it.

* UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
Replaced inline wrapper function with WrapperTraits structure template specialization.

* UIProcess/API/Cocoa/WKUserScript.mm:
(-[WKUserScript _userContentWorld]): Removed explicit API namespace.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView loadRequest:]): Removed explicit null check and
leakRef/autorelease pair, both done by the wrapper template function now.
(-[WKWebView loadFileURL:allowingReadAccessToURL:]): Ditto.
(-[WKWebView loadData:MIMEType:characterEncodingName:baseURL:]): Ditto.
(-[WKWebView goToBackForwardListItem:]): Ditto.
(-[WKWebView goBack]): Ditto.
(-[WKWebView goForward]): Ditto.
(-[WKWebView reload]): Ditto.
(-[WKWebView reloadFromOrigin]): Ditto.
(-[WKWebView _didInsertAttachment:withSource:]): Removed leakRef/autorelease pairs,
now done by the wrapper template function.
(-[WKWebView _didRemoveAttachment:]): Ditto.
(-[WKWebView _loadData:MIMEType:characterEncodingName:baseURL:userData:]): Removed
explicit null check and leakRef/autorelease pair, both done by the wrapper template
function now.
(-[WKWebView _loadRequest:shouldOpenExternalURLs:]): Ditto.
(-[WKWebView _reloadWithoutContentBlockers]): Ditto.
(-[WKWebView _reloadExpiredOnly]): Ditto.
(-[WKWebView _sessionStateData]): Removed explicit leakRef/autorelease pair, done
by the wrapper template function now. Also, the old version explicitly dereferenced
and would not work when the result of encodeLegacySessionState was null. Decided
not to add a call to releaseNonNull to preserve that possibly-incorrect optimization,
instead allowing the wrapper function to generate code to handle the null case.
(-[WKWebView _sessionState]): Use the Objective-C autorelease instead of adoptNS
and RetainPtr's autorelease.
(-[WKWebView _sessionStateWithFilter:]): Ditto.
(-[WKWebView _restoreSessionState:andNavigate:]): Removed explicit null check and
leakRef/autorelease pair, both done by the wrapper template function now.
(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
Removed explicit leakRef/autorelease pair, done by the wrapper template function now.
(-[WKWebView _diagnosticLoggingDelegate]): Replaced a leakRef/autorelease pair with
use of RetainPtr's autorelease.
(-[WKWebView _findDelegate]): Ditto.

* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _applicationManifest]): Removed explicit null check,
done by the wrapper template function now.

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore defaultDataStore]): Removed explicit WebKit namespace
and unneeded call to get().
(+[WKWebsiteDataStore nonPersistentDataStore]): Removed explicit WebKit namespace
and leakRef/autorelease pair, done by the wrapper template function now.
(-[WKWebsiteDataStore httpCookieStore]): Removed explicit WebKit namespace.

* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
Removed explicit leakRef/autorelease pair, done by the wrapper template function now.
* UIProcess/API/Cocoa/_WKGeolocationPosition.mm:
(WebKit::wrapper): Ditto.

* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration copyWithZone:]): Use retain instead of leakRef;
slightly clearer for when we convert to ARC.

* UIProcess/API/Cocoa/_WKUserContentWorld.mm:
(+[_WKUserContentWorld worldWithName:]): Removed explicit leakRef/autorelease pair,
done by the wrapper template function now.

* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies websiteDataStore]): Removed explicit null check, done by
the wrapper template function now.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::didChangeBackForwardList): Removed
explicit null check, done by the wrapper template function now.
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): Ditto.
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation): Ditto.
(WebKit::NavigationState::NavigationClient::didReceiveServerRedirectForProvisionalNavigation): Ditto.
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError): Ditto.
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError): Ditto.
(WebKit::NavigationState::NavigationClient::didCommitNavigation): Ditto.
(WebKit::NavigationState::NavigationClient::didFinishDocumentLoad): Ditto.
(WebKit::NavigationState::NavigationClient::didFinishNavigation): Ditto.
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError): Ditto.
(WebKit::NavigationState::NavigationClient::didSameDocumentNavigation): Ditto.

* UIProcess/Cocoa/SessionStateCoding.mm:
(WebKit::encodeSessionState): Removed explicit leakRef/autorelease pair, done
by the wrapper template function now. Also, the old version explicitly dereferenced
and would not work when the result of encodeLegacySessionState was null. Decided
not to add a call to releaseNonNull to preserve that possibly-incorrect optimization,
instead allowing the wrapper function to generate code to handle the null case.

* UIProcess/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController configuration]): Removed explicit WebKit namespace.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
(+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): Removed explicit null check,
done by the wrapper template function now.
(-[WKWebProcessPlugInFrame hitTest:]): Removed explicit leakRef/autorelease pair, done
by the wrapper template function now. Also, the old version explicitly dereferenced
and would not work when the result of hitTest was null. Decided not to add a call to
releaseNonNull to preserve that possibly-incorrect optimization, instead allowing the
wrapper function to generate code to handle the null case.
(-[WKWebProcessPlugInFrame childFrames]): Removed explicit leakRef/autorelease pair,
done by the wrapper template function now.
(-[WKWebProcessPlugInFrame handle]): Ditto.
(-[WKWebProcessPlugInFrame _parentFrame]): Removed explicit null check, done by the
wrapper template function now.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:
(-[WKWebProcessPlugInHitTestResult nodeHandle]): Removed explicit null check and
leakRef/autorelease pair, both done by the wrapper template function now.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(+[WKWebProcessPlugInNodeHandle nodeHandleWithJSValue:inContext:]): Ditto.
(-[WKWebProcessPlugInNodeHandle htmlIFrameElementContentFrame]): Ditto.
(-[WKWebProcessPlugInNodeHandle HTMLTableCellElementCellAbove]): Ditto.
(-[WKWebProcessPlugInNodeHandle frame]): Ditto.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
(+[WKWebProcessPlugInRangeHandle rangeHandleWithJSValue:inContext:]): Ditto.
(-[WKWebProcessPlugInRangeHandle frame]): Ditto.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
(+[WKWebProcessPlugInScriptWorld world]): Ditto.
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController mainFrame]): Ditto.
(+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]): Ditto.

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

13 months agoUnreviewed, rolling out r234852.
commit-queue@webkit.org [Mon, 20 Aug 2018 00:24:47 +0000 (00:24 +0000)]
Unreviewed, rolling out r234852.
https://bugs.webkit.org/show_bug.cgi?id=188736

Workaround is not correct (Requested by yusukesuzuki on
#webkit).

Reverted changeset:

"[JSC] Should not rotate constant with 64"
https://bugs.webkit.org/show_bug.cgi?id=188556
https://trac.webkit.org/changeset/234852

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

13 months agoShrink size of WebCore::Event further by reordering members
yusukesuzuki@slowstart.org [Sun, 19 Aug 2018 23:59:12 +0000 (23:59 +0000)]
Shrink size of WebCore::Event further by reordering members
https://bugs.webkit.org/show_bug.cgi?id=188734

Reviewed by Daniel Bates.

Since WebCore::Event is ref-counted class, it has 4bytes m_refCount at the head of the class.
So placing 4bytes just after that before placing 8bytes aligned member (like pointers in 64bit
platforms) can save the size of WebCore::Event further.
This patch reorders members of WebCore::Event to shrink the size from 80bytes to 72bytes.

No behavior change.

* dom/Event.cpp:
(WebCore::Event::Event):
* dom/Event.h:

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

13 months ago[Cocoa] Consolidate inline "wrapper" functions in WebKit API into function templates...
darin@apple.com [Sun, 19 Aug 2018 22:54:24 +0000 (22:54 +0000)]
[Cocoa] Consolidate inline "wrapper" functions in WebKit API into function templates and WrapperTraits
https://bugs.webkit.org/show_bug.cgi?id=188733

Reviewed by Sam Weinig.

Replaced all the different functions named "wrapper" that were all boilerplate doing Objective-C
casts with WrapperTraits specializations. The only thing about this that was at all tricky was
the loose mixing of the WebKit namespace, the API namespace, and the global namespace. My choice
for this first step was to put WrapperTraits into the WebKit namespace and to put the wrapper
function into both the WebKit and API namespaces with "using". This turned out pretty clean: did
not have to touch any of the code calling wrapper just to make things work, although we can now
clean up by changing call sites to get rid of unnecessary explicit use of leakRef and autorelease.
Doing this will make ARC conversion practical and easy, which is the motivation behind pursuing
this set of changes.

* Shared/Cocoa/WKObject.h: Tweaked style of the ObjectStorage structure template,
using a class name instead of "T". Added WrapperTraits structure template, checkedObjCCast
function template, and multiple wrapper functions templates that take a variety of pointer,
reference, smart pointer, and smart reference types, and return the wrapper for each one,
handling object lifetime appropriately.

* Shared/API/Cocoa/_WKFrameHandleInternal.h:
* Shared/API/Cocoa/_WKHitTestResultInternal.h:
* Shared/Cocoa/WKNSArray.h:
* Shared/Cocoa/WKNSData.h:
* Shared/Cocoa/WKNSDictionary.h:
* Shared/Cocoa/WKNSError.h:
* Shared/Cocoa/WKNSNumber.h:
* Shared/Cocoa/WKNSString.h:
* Shared/Cocoa/WKNSURL.h:
* Shared/Cocoa/WKNSURLRequest.h:
* UIProcess/API/Cocoa/WKBackForwardListInternal.h:
* UIProcess/API/Cocoa/WKBackForwardListItemInternal.h:
* UIProcess/API/Cocoa/WKBrowsingContextGroupInternal.h:
* UIProcess/API/Cocoa/WKConnectionInternal.h:
* UIProcess/API/Cocoa/WKContentRuleListInternal.h:
* UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h:
* UIProcess/API/Cocoa/WKFrameInfoInternal.h:
* UIProcess/API/Cocoa/WKHTTPCookieStoreInternal.h:
* UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h:
* UIProcess/API/Cocoa/WKNavigationActionInternal.h:
* UIProcess/API/Cocoa/WKNavigationDataInternal.h:
* UIProcess/API/Cocoa/WKNavigationInternal.h:
* UIProcess/API/Cocoa/WKNavigationResponseInternal.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h:
* UIProcess/API/Cocoa/WKPreferencesInternal.h:
* UIProcess/API/Cocoa/WKProcessPoolInternal.h:
* UIProcess/API/Cocoa/WKSecurityOriginInternal.h:
* UIProcess/API/Cocoa/WKUserContentControllerInternal.h:
* UIProcess/API/Cocoa/WKUserScriptInternal.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
* UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h:
* UIProcess/API/Cocoa/WKWindowFeaturesInternal.h:
* UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:
* UIProcess/API/Cocoa/_WKAttachmentInternal.h:
* UIProcess/API/Cocoa/_WKAutomationSessionInternal.h:
* UIProcess/API/Cocoa/_WKExperimentalFeatureInternal.h:
* UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfigurationInternal.h:
* UIProcess/API/Cocoa/_WKUserContentWorldInternal.h:
* UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h:
* UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h:
* UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h:
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
* UIProcess/Cocoa/DownloadClient.mm:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroupInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandleInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
Replaced inline wrapper functions with WrapperTraits structure template
specializations. This is always in the WebKit namespace, unlike the functions,
which were in a mix of namespaces. Also deleted some unneeded "#pragma once".

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

13 months ago[WTF] Add WTF::unalignedLoad and WTF::unalignedStore
yusukesuzuki@slowstart.org [Sun, 19 Aug 2018 22:50:05 +0000 (22:50 +0000)]
[WTF] Add WTF::unalignedLoad and WTF::unalignedStore
https://bugs.webkit.org/show_bug.cgi?id=188716

Reviewed by Darin Adler.

Source/JavaScriptCore:

Use WTF::unalignedLoad and WTF::unalignedStore to avoid undefined behavior.
The compiler can emit appropriate mov operations in x86 even if we use these
helper functions.

* assembler/AssemblerBuffer.h:
(JSC::AssemblerBuffer::LocalWriter::putIntegralUnchecked):
(JSC::AssemblerBuffer::putIntegral):
(JSC::AssemblerBuffer::putIntegralUnchecked):
* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::readCallTarget):
* assembler/X86Assembler.h:
(JSC::X86Assembler::linkJump):
(JSC::X86Assembler::readPointer):
(JSC::X86Assembler::replaceWithHlt):
(JSC::X86Assembler::replaceWithJump):
(JSC::X86Assembler::setPointer):
(JSC::X86Assembler::setInt32):
(JSC::X86Assembler::setInt8):
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::getOpcodeID): Embedded opcode may be misaligned. Actually UBSan detects misaligned accesses here.

Source/WTF:

While some CPUs allow unaligned accesses to memory, doing it in C++ with `reinterpret_cast<>` is
undefined behavior. This patch adds WTF::{unalignedLoad,unalignedStore} helper functions, which
can load from and store to the pointer in an unaligned manner.
Actual implementation uses `memcpy`. This can be optimized to direct unaligned access operations
in supported CPUs like x86. Even though a CPU does not support unaligned accesses, memcpy is still
safe and the compiler emits appropriate code.

We name these functions `unalignedLoad` and `unalignedStore` instead of `loadUnaligned` and `storeUnaligned`
in order to align them to `atomicLoad` and `atomicStore`.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/UnalignedAccess.h: Added.
(WTF::unalignedLoad):
(WTF::unalignedStore):
* wtf/text/StringCommon.h:
(WTF::equal):
(WTF::loadUnaligned): Deleted.

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

13 months agoREGRESSION (r234396): Leak of CFURLRef in WebKit::NetworkProcess::deleteHSTSCacheForH...
ddkilzer@apple.com [Sun, 19 Aug 2018 15:16:50 +0000 (15:16 +0000)]
REGRESSION (r234396): Leak of CFURLRef in WebKit::NetworkProcess::deleteHSTSCacheForHostNames()
<https://webkit.org/b/188725>

Reviewed by Dan Bernstein.

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::deleteHSTSCacheForHostNames): Use
adoptCF() to prevent a leak.

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

13 months agoLet Xcode have its way with the WebCore project
ddkilzer@apple.com [Sun, 19 Aug 2018 03:28:59 +0000 (03:28 +0000)]
Let Xcode have its way with the WebCore project

* WebCore.xcodeproj/project.pbxproj:
- Let Xcode sort recently added resources by unique ID.
- Manually change the `mainGroup` name from "WebKit" to
  "WebCore".  There's no need to do this other than to make the
  inside of the proverbial cabinet match the outside.  It's been
  this way since the project file was committed in r9857.

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

13 months ago[IntersectionObserver] Fire an initial dummy notification
ajuma@chromium.org [Sat, 18 Aug 2018 23:45:07 +0000 (23:45 +0000)]
[IntersectionObserver] Fire an initial dummy notification
https://bugs.webkit.org/show_bug.cgi?id=188670

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests now that an initial notification is fired.

* web-platform-tests/intersection-observer/bounding-box-expected.txt:
* web-platform-tests/intersection-observer/client-rect-expected.txt:
* web-platform-tests/intersection-observer/containing-block-expected.txt:
* web-platform-tests/intersection-observer/cross-origin-iframe-expected.txt:
* web-platform-tests/intersection-observer/disconnect-expected.txt:
* web-platform-tests/intersection-observer/display-none-expected.txt:
* web-platform-tests/intersection-observer/edge-inclusive-intersection-expected.txt:
* web-platform-tests/intersection-observer/iframe-no-root-expected.txt:
* web-platform-tests/intersection-observer/inline-client-rect-expected.txt:
* web-platform-tests/intersection-observer/isIntersecting-change-events-expected.txt:
* web-platform-tests/intersection-observer/multiple-targets-expected.txt:
* web-platform-tests/intersection-observer/multiple-thresholds-expected.txt:
* web-platform-tests/intersection-observer/observer-without-js-reference-expected.txt:
* web-platform-tests/intersection-observer/remove-element-expected.txt:
* web-platform-tests/intersection-observer/root-margin-expected.txt:
* web-platform-tests/intersection-observer/same-document-no-root-expected.txt:
* web-platform-tests/intersection-observer/same-document-root-expected.txt:
* web-platform-tests/intersection-observer/same-document-zero-size-target-expected.txt:
* web-platform-tests/intersection-observer/shadow-content-expected.txt:
* web-platform-tests/intersection-observer/text-target-expected.txt:
* web-platform-tests/intersection-observer/timestamp-expected.txt:
* web-platform-tests/intersection-observer/unclipped-root-expected.txt:
* web-platform-tests/intersection-observer/zero-area-element-hidden-expected.txt:
* web-platform-tests/intersection-observer/zero-area-element-visible-expected.txt:

Source/WebCore:

Add logic to track ongoing intersection observations. Create an IntersectionObserverRegistration
and fire a single dummy notification for each one.

Test: intersection-observer/root-element-moved.html
Also tested by existing tests in imported/w3c/web-platform-tests/intersection-observer.

* dom/Document.cpp:
(WebCore::Document::~Document):
(WebCore::Document::addIntersectionObserver):
(WebCore::Document::removeIntersectionObserver):
(WebCore::Document::updateIntersectionObservations):
(WebCore::Document::notifyIntersectionObserversTimerFired):
* dom/Document.h:
(WebCore::Document::numberOfIntersectionObservers const):
* dom/Element.cpp:
(WebCore::Element::didMoveToNewDocument):
(WebCore::Element::disconnectFromIntersectionObservers):
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::create):
(WebCore::IntersectionObserver::IntersectionObserver):
(WebCore::IntersectionObserver::~IntersectionObserver):
(WebCore::IntersectionObserver::observe):
(WebCore::IntersectionObserver::unobserve):
(WebCore::IntersectionObserver::disconnect):
(WebCore::IntersectionObserver::takeRecords):
(WebCore::IntersectionObserver::targetDestroyed):
(WebCore::IntersectionObserver::removeTargetRegistration):
(WebCore::IntersectionObserver::removeAllTargets):
(WebCore::IntersectionObserver::rootDestroyed):
(WebCore::IntersectionObserver::appendQueuedEntry):
(WebCore::IntersectionObserver::notify):
* page/IntersectionObserver.h:
(WebCore::IntersectionObserver::trackingDocument):
(WebCore::IntersectionObserver:: const):
(WebCore::IntersectionObserver::hasObservationTargets const):
* page/IntersectionObserver.idl:
* testing/Internals.cpp:
(WebCore::Internals::numberOfIntersectionObservers const):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* intersection-observer/root-element-deleted.html: Add additional assertions.
* intersection-observer/root-element-moved-expected.txt: Added.
* intersection-observer/root-element-moved.html: Added.

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

13 months ago[watchOS] NetworkProximityManager should use WTF_MAKE_FAST_ALLOCATED
aestes@apple.com [Sat, 18 Aug 2018 23:32:11 +0000 (23:32 +0000)]
[watchOS] NetworkProximityManager should use WTF_MAKE_FAST_ALLOCATED
https://bugs.webkit.org/show_bug.cgi?id=188723

Reviewed by Sam Weinig.

* NetworkProcess/watchos/NetworkProximityManager.h:

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

13 months ago[watchOS] Add more assertions to NetworkProximityAssertion
aestes@apple.com [Sat, 18 Aug 2018 23:20:51 +0000 (23:20 +0000)]
[watchOS] Add more assertions to NetworkProximityAssertion
https://bugs.webkit.org/show_bug.cgi?id=188721

Reviewed by Wenson Hsieh.

* NetworkProcess/watchos/NetworkProximityAssertion.mm:
(WebKit::NetworkProximityAssertion::hold):
(WebKit::NetworkProximityAssertion::release):
(WebKit::NetworkProximityAssertion::releaseTimerFired):

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

13 months ago[iOS] Paste is missing from callout bar when pasteboard only contains custom data
wenson_hsieh@apple.com [Sat, 18 Aug 2018 22:59:20 +0000 (22:59 +0000)]
[iOS] Paste is missing from callout bar when pasteboard only contains custom data
https://bugs.webkit.org/show_bug.cgi?id=184271
<rdar://problem/39256708>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Export a couple of WebCore functions for use in WebKit.

* dom/Document.h:
* platform/Pasteboard.h:

Source/WebKit:

Currently, the "paste:" selector action cannot be performed during editing if the pasteboard only contains
custom pasteboard data. This is because logic in -[WKContentView canPerformActionForWebView:withSender:] only
checks against a list of pasteboard types which does not include the type identifier for custom pasteboard data.
To fix this, we allow pasting only in the case where none of the other type identifiers exist in the pasteboard,
as long as the custom pasteboard data type identifier is present, and the custom pasteboard data's origin
matches the origin of the focused frame's document.

Test: PasteMixedContent.CopyAndPasteWithCustomPasteboardDataOnly

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

Add a originIdentifierForPasteboard field, and add support for encoding it when propagating EditorState via IPC.

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

If none of the conventional pasteboard type identifiers for rich or plain text editing are present, check to see
if we have custom pasteboard data; if so, only allow pasting if the custom pasteboard data's origin matches that
of the focused frame's document origin.

Additionally refactor a bit of logic by pulling out `_page->editorState()` into a separate local variable, used
throughout the rest of the method.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::editorState const):

Send the focused frame's document origin to the UI process via EditorState.

Tools:

Add a new API test to verify that on both iOS and macOS, copied custom pasteboard data can only be pasted in a
matching origin. Additionally verify that on iOS, the web view is capable of performing the "paste:" selector.

* TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:
(TestWebKitAPI::TEST):
(imagePath): Deleted.
(writeTypesAndDataToPasteboard): Deleted.
(setUpWebView): Deleted.
(markupString): Deleted.

Make this test file no longer exclusive to macOS.

* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView synchronouslyLoadHTMLString:baseURL:]):

Tweak this helper to also take in a `baseURL`. Defaults to using the TestWebKitAPI bundle resource URL.

(-[TestWKWebView synchronouslyLoadHTMLString:]):

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

13 months agoAdjust CMAKE_MODULE_LINKER_FLAGS for asan
mcatanzaro@igalia.com [Sat, 18 Aug 2018 15:00:12 +0000 (15:00 +0000)]
Adjust CMAKE_MODULE_LINKER_FLAGS for asan
https://bugs.webkit.org/show_bug.cgi?id=188699

Reviewed by Konstantin Tokarev.

* Source/cmake/WebKitCompilerFlags.cmake:

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

13 months agoPack booleans in Event into a bitfield
rniwa@webkit.org [Sat, 18 Aug 2018 06:47:22 +0000 (06:47 +0000)]
Pack booleans in Event into a bitfield
https://bugs.webkit.org/show_bug.cgi?id=188713

Reviewed by Daniel Bates.

Use bitfields for booleans in Event class.

* dom/Event.cpp:
(WebCore::Event::Event):
* dom/Event.h:
(WebCore::Event::IsComposed): Added.
(WebCore::Event): Packed booleans into a bitfield.

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

13 months agointersectionOfPastValuesAtHead must filter values after they've observed an invalidat...
sbarati@apple.com [Sat, 18 Aug 2018 02:05:09 +0000 (02:05 +0000)]
intersectionOfPastValuesAtHead must filter values after they've observed an invalidation point
https://bugs.webkit.org/show_bug.cgi?id=188707
<rdar://problem/43015442>

Reviewed by Mark Lam.

JSTests:

* stress/cfa-expected-values-must-set-clobbered-to-false.js: Added.
(foo):
(let.comp.valueOf):
(result):

Source/JavaScriptCore:

We use the values in intersectionOfPastValuesAtHead to verify that it is safe to
OSR enter at the head of a block. We verify it's safe to OSR enter by checking
that each incoming value is compatible with its corresponding AbstractValue.

The bug is that we were sometimes filtering the intersectionOfPastValuesAtHead
with abstract values that were clobbererd. This meant that the value we're
verifying with at OSR entry effectively has an infinite structure set because
it's clobbered. So, imagine we have code like this:
```
---> We OSR enter here, and we're clobbered here
InvalidationPoint
GetByOffset(@base)
```

The abstract value for @base inside intersectionOfPastValuesAtHead has a
clobberred structure set, so we'd allow an incoming object with any
structure. However, this is wrong because the invalidation point is no
longer fulfilling its promise that it filters the structure that @base has.

We fix this by filtering the AbstractValues in intersectionOfPastValuesAtHead
as if the incoming value may be live past an InvalidationPoint.
This places a stricter requirement that to safely OSR enter at any basic
block, all incoming values must be compatible as if they lived past
the execution of an invalidation point.

* dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::run):

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

13 months agoStart bringing up Unified Sources in WebKit2
timothy_horton@apple.com [Sat, 18 Aug 2018 01:31:15 +0000 (01:31 +0000)]
Start bringing up Unified Sources in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=188703

Reviewed by Simon Fraser.

* Configurations/BaseTarget.xcconfig:
Add SRCROOT to the include path, so unified sources can find the source files.

* Shared/APIWebArchive.mm:
(API::releaseWebArchiveData):
(API::WebArchive::data):
(API::releaseCFData): Deleted.
* Shared/APIWebArchiveResource.mm:
(API::releaseWebArchiveResourceData):
(API::WebArchiveResource::data):
(API::releaseCFData): Deleted.
Disambiguate two static methods by renaming them.

* Shared/cf/ArgumentCodersCF.cpp:
Leave a comment about the bizarreness of this file.

* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::decode):
* Shared/WebPlatformTouchPoint.cpp:
* Shared/WebPopupItem.cpp:
(WebKit::WebPopupItem::WebPopupItem):
(WebKit::WebPopupItem::decode):
* Shared/WebPreferencesStore.cpp:
* Shared/WebRenderLayer.cpp:
(WebKit::WebRenderLayer::create):
(WebKit::WebRenderLayer::createArrayFromLayerList):
(WebKit::WebRenderLayer::WebRenderLayer):
* Shared/gtk/WebEventFactory.cpp:
* Shared/mac/WebCoreArgumentCodersMac.mm:
* Shared/mac/WebEventFactory.mm:
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):
* Shared/mac/WebMemorySampler.mac.mm:
(WebKit::WebMemorySampler::sampleWebKit const):
* UIProcess/API/APIAutomationSessionClient.h:
(API::AutomationSessionClient::sessionIdentifier const):
(API::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::ensureBackingStore):
(WebKit::RemoteLayerBackingStore::setNeedsDisplay):
(WebKit::RemoteLayerBackingStore::backingStoreSize const):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::drawInContext):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::setRootLayerID):
(WebKit::RemoteLayerTreeTransaction::setDestroyedLayerIDs):
(WebKit::RemoteLayerTreeTransaction::setLayerIDsWithNewlyUnreachableBackingStore):
(WebKit::dumpChangedLayers):
(WebKit::RemoteLayerTreeTransaction::description const):
* Shared/WebPlatformTouchPoint.cpp:
(WebKit::WebPlatformTouchPoint::WebPlatformTouchPoint):
Get rid of lots of `using namespace`.

* Sources.txt: Added.
* SourcesCocoa.txt: Added.
* WebKit.xcodeproj/project.pbxproj:
Set up unified sources.
Right now, we only unify Platform/ and Shared/[^API].

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

13 months ago[Datalist][iOS] Display suggestions for input[type=color]
akeerthi@apple.com [Sat, 18 Aug 2018 00:43:23 +0000 (00:43 +0000)]
[Datalist][iOS] Display suggestions for input[type=color]
https://bugs.webkit.org/show_bug.cgi?id=188669

Reviewed by Tim Horton.

Source/WebCore:

Expose suggestedColors() in HTMLInputElement in order to allow the UIProcess to
access the list of suggested colors from a <datalist> element.

* html/ColorInputType.cpp:
(WebCore::ColorInputType::suggestedColors const):
* html/ColorInputType.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::suggestedColors const):
* html/HTMLInputElement.h:
* html/InputType.cpp:
(WebCore::InputType::suggestedColors const):
* html/InputType.h:
* platform/ColorChooserClient.h:

Source/WebKit:

An input[type=color] element that has an associated datalist element should
display the color values provided on iOS. Similar to macOS, we now support 1-12
suggested colors, that will be displayed at the top of the color picker.

Also ensured that we get rounded corners on both sides of a color swatch if it is
the only one in its row.

* Shared/AssistedNodeInformation.cpp: Added suggestedColors field.
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h:
* UIProcess/ios/forms/WKFormColorPicker.mm:
(+[WKColorPicker defaultTopColorMatrix]):
(-[WKColorPicker initWithView:]): Use the list of suggestedColors if it exists.
(-[WKColorPicker drawSelectionIndicatorForColorButton:]):
* WebProcess/WebCoreSupport/WebColorChooser.cpp:
(WebKit::WebColorChooser::WebColorChooser):
(WebKit::WebColorChooser::reattachColorChooser):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getAssistedNodeInformation):

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

13 months agoResource Load Statistics: Add layout test for web workers importing cross-site scripts
wilander@apple.com [Sat, 18 Aug 2018 00:25:01 +0000 (00:25 +0000)]
Resource Load Statistics: Add layout test for web workers importing cross-site scripts
https://bugs.webkit.org/show_bug.cgi?id=188706
<rdar://problem/43437050>

Reviewed by Alex Christensen.

* http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-expected.txt: Added.
* http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import.html: Added.
* http/tests/resourceLoadStatistics/resources/iframe-report-back-loaded.html:
    Fixed typo in URL.
* http/tests/resourceLoadStatistics/resources/script-revealing-cookies.php: Added.
* http/tests/resourceLoadStatistics/resources/worker-importing-localhost-script.js: Added.

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

13 months agoClean up CSSSelectorList after r234825
commit-queue@webkit.org [Sat, 18 Aug 2018 00:20:18 +0000 (00:20 +0000)]
Clean up CSSSelectorList after r234825
https://bugs.webkit.org/show_bug.cgi?id=188566

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-17
Reviewed by Megan Gardner.

This is responding to Darin's feedback in https://bugs.webkit.org/show_bug.cgi?id=188539

* css/CSSSelectorList.cpp:
(WebCore::CSSSelectorList::operator=): Deleted.
* css/CSSSelectorList.h:
(WebCore::CSSSelectorList::CSSSelectorList):
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parsePageSelector):
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumeComplexSelectorList):
(WebCore::CSSSelectorParser::consumeCompoundSelectorList):

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

13 months agoUnreviewed, rolling out r234991.
ryanhaddad@apple.com [Sat, 18 Aug 2018 00:11:49 +0000 (00:11 +0000)]
Unreviewed, rolling out r234991.

Caused an assertion failure on the bots.

Reverted changeset:

"Pass webPageID and webFrameID to NetworkLoad for speculative
loads"
https://bugs.webkit.org/show_bug.cgi?id=188682
https://trac.webkit.org/changeset/234991

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

13 months agoRemove Adobe SSO exception now that StorageAccess API is available
bfulgham@apple.com [Sat, 18 Aug 2018 00:09:32 +0000 (00:09 +0000)]
Remove Adobe SSO exception now that StorageAccess API is available
https://bugs.webkit.org/show_bug.cgi?id=188710
<rdar://problem/35056707>

Reviewed by Alex Christensen.

Remove custom quirk now that proper API exists to allow the same functions.

* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logSubresourceLoading): Remove unneeded quirk.
(WebCore::resourceNeedsSSOQuirk): Deleted.

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

13 months agoReplace canBubble and cancelable booleans in Event by enum classes
rniwa@webkit.org [Sat, 18 Aug 2018 00:00:25 +0000 (00:00 +0000)]
Replace canBubble and cancelable booleans in Event by enum classes
https://bugs.webkit.org/show_bug.cgi?id=188692
<rdar://problem/43411944>

Rubber-stamped by Alex Christensen.

Make these enum classes uint8_t.

* dom/Event.h:

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

13 months agoAdd some plumbing for safe browsing
achristensen@apple.com [Fri, 17 Aug 2018 23:24:37 +0000 (23:24 +0000)]
Add some plumbing for safe browsing
https://bugs.webkit.org/show_bug.cgi?id=188709

Reviewed by Tim Horton.

Source/WebCore:

No change in behavior.  Just passing around unused booleans.
We will need this for a way to load a page even though safe browsing says it's unsafe.

* WebCore.xcodeproj/project.pbxproj:
* loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoadRequest.h:
(WebCore::FrameLoadRequest::setShouldSkipSafeBrowsingCheck):
(WebCore::FrameLoadRequest::shouldSkipSafeBrowsingCheck):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadArchive):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadWithNavigationAction):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::shouldReloadToHandleUnreachableURL):
(WebCore::FrameLoader::reloadWithOverrideEncoding):
(WebCore::FrameLoader::reload):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::FrameLoader::loadDifferentDocumentItem):
* loader/FrameLoader.h:
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::loadWithNavigationAction):
* loader/FrameLoaderClient.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* loader/PolicyChecker.h:
* loader/ShouldSkipSafeBrowsingCheck.h: Added.

Source/WebKit:

Also adding a URL to SafeBrowsingResult because we'll need it.
Also adding a bool to LoadParameters because we will need to do special things
when loading the safe browsing warning, like adding a way to skip the safe browsing check.

* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):
* Shared/LoadParameters.h:
* UIProcess/Cocoa/SafeBrowsingResultCocoa.mm:
(WebKit::SafeBrowsingResult::SafeBrowsingResult):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::beginSafeBrowsingCheck):
* UIProcess/SafeBrowsingResult.h:
(WebKit::SafeBrowsingResult::url const):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Source/WebKitLegacy/win:

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebCoreSupport/WebFrameLoaderClient.h:

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

14 months agoAdd back --wtf-only to run-api-tests
jbedard@apple.com [Fri, 17 Aug 2018 21:43:31 +0000 (21:43 +0000)]
Add back --wtf-only to run-api-tests
https://bugs.webkit.org/show_bug.cgi?id=187893
<rdar://problem/42483983>

Reviewed by Aakash Jain.

When doing WTF development, it is not necessary to build or run all of the API
tests. Generally, if a user has specified a specific binary (or binaries) that
they are interested in testing, it is not necessary to check all API test binaries.

* Scripts/webkitpy/api_tests/manager.py:
(Manager._collect_tests): Only use the binaries matching the program arguments
when collecting tests.
(Manager._binaries_for_arguments): Generate a list of binaries which match the
program arguments.
(Manager.run): Pass a list binaries to check.
* Scripts/webkitpy/api_tests/run_api_tests.py:
(parse_args):
* Scripts/webkitpy/port/base.py:
(Port.check_api_test_build): If the caller specifies which API test binaries it
requires, only check the ones specified.
(Port.path_to_api_test_binaries): Allow the caller to only build the WTF API tests.
(Port._build_api_tests): Allow the caller to only build the WTF API tests.
* Scripts/webkitpy/port/win.py:
(WinPort.path_to_api_test_binaries):

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

14 months agoMarked inspector/dom-debugger/event-breakpoint-with-navigation.html as flaky.
drousso@apple.com [Fri, 17 Aug 2018 21:28:31 +0000 (21:28 +0000)]
Marked inspector/dom-debugger/event-breakpoint-with-navigation.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=188708

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

14 months agoReplace canBubble and cancelable booleans in Event by enum classes
rniwa@webkit.org [Fri, 17 Aug 2018 21:24:40 +0000 (21:24 +0000)]
Replace canBubble and cancelable booleans in Event by enum classes
https://bugs.webkit.org/show_bug.cgi?id=188692

Reviewed by Alex Christensen.

Source/WebCore:

Replaced booleans indicating whether an event can bubble and an event is cancelable
by two enum classes: CanBubble and IsCancelable.

No new tests since there should be no behavioral changes.

* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
(WebCore::WebKitPlaybackTargetAvailabilityEvent::WebKitPlaybackTargetAvailabilityEvent):
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
(WebCore::ApplePayPaymentAuthorizedEvent::ApplePayPaymentAuthorizedEvent):
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp:
(WebCore::ApplePayPaymentMethodSelectedEvent::ApplePayPaymentMethodSelectedEvent):
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::didCancelPaymentSession):
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
(WebCore::ApplePayShippingContactSelectedEvent::ApplePayShippingContactSelectedEvent):
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:
(WebCore::ApplePayShippingMethodSelectedEvent::ApplePayShippingMethodSelectedEvent):
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
(WebCore::ApplePayValidateMerchantEvent::ApplePayValidateMerchantEvent):
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::updateKeyStatuses):
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp:
(WebCore::WebKitMediaKeyMessageEvent::WebKitMediaKeyMessageEvent):
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp:
(WebCore::WebKitMediaKeyNeededEvent::WebKitMediaKeyNeededEvent):
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
(WebCore::WebKitMediaKeySession::addKeyTimerFired):
(WebCore::WebKitMediaKeySession::sendError):
* Modules/gamepad/GamepadEvent.cpp:
(WebCore::GamepadEvent::GamepadEvent):
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::connectionToServerLost):
* Modules/indexeddb/IDBOpenDBRequest.cpp:
(WebCore::IDBOpenDBRequest::onError):
(WebCore::IDBOpenDBRequest::fireSuccessAfterVersionChangeCommit):
(WebCore::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion):
(WebCore::IDBOpenDBRequest::onSuccess):
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::onError):
(WebCore::IDBRequest::onSuccess):
* Modules/indexeddb/IDBRequestCompletionEvent.cpp:
(WebCore::IDBRequestCompletionEvent::IDBRequestCompletionEvent):
* Modules/indexeddb/IDBRequestCompletionEvent.h:
(WebCore::IDBRequestCompletionEvent::create):
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::fireOnComplete):
(WebCore::IDBTransaction::fireOnAbort):
* Modules/indexeddb/IDBVersionChangeEvent.cpp:
(WebCore::IDBVersionChangeEvent::IDBVersionChangeEvent):
* Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::skipToNextTrack):
(WebCore::MediaSession::skipToPreviousTrack):
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::scheduleEvent):
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::scheduleEvent):
* Modules/mediasource/SourceBufferList.cpp:
(WebCore::SourceBufferList::scheduleEvent):
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::scheduledEventTimerFired):
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::internalAddTrack):
(WebCore::MediaStream::internalRemoveTrack):
* Modules/mediastream/MediaStreamEvent.cpp:
(WebCore::MediaStreamEvent::create):
(WebCore::MediaStreamEvent::MediaStreamEvent):
* Modules/mediastream/MediaStreamEvent.h:
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::trackEnded):
(WebCore::MediaStreamTrack::trackMutedChanged):
* Modules/mediastream/MediaStreamTrackEvent.cpp:
(WebCore::MediaStreamTrackEvent::create):
(WebCore::MediaStreamTrackEvent::MediaStreamTrackEvent):
* Modules/mediastream/MediaStreamTrackEvent.h:
* Modules/mediastream/OverconstrainedErrorEvent.h:
(WebCore::OverconstrainedErrorEvent::create):
(WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent):
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::fireICECandidateEvent):
(WebCore::PeerConnectionBackend::doneGatheringCandidates):
(WebCore::PeerConnectionBackend::updateSignalingState):
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
(WebCore::RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent):
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::didChangeReadyState):
(WebCore::RTCDataChannel::didDetectError):
(WebCore::RTCDataChannel::bufferedAmountIsDecreasing):
* Modules/mediastream/RTCDataChannelEvent.cpp:
(WebCore::RTCDataChannelEvent::create):
(WebCore::RTCDataChannelEvent::RTCDataChannelEvent):
* Modules/mediastream/RTCDataChannelEvent.h:
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::updateIceGatheringState):
(WebCore::RTCPeerConnection::updateIceConnectionState):
(WebCore::RTCPeerConnection::updateConnectionState):
(WebCore::RTCPeerConnection::scheduleNegotiationNeededEvent):
* Modules/mediastream/RTCPeerConnectionIceEvent.cpp:
(WebCore::RTCPeerConnectionIceEvent::create):
(WebCore::RTCPeerConnectionIceEvent::RTCPeerConnectionIceEvent):
* Modules/mediastream/RTCPeerConnectionIceEvent.h:
* Modules/mediastream/RTCTrackEvent.cpp:
(WebCore::RTCTrackEvent::create):
(WebCore::RTCTrackEvent::RTCTrackEvent):
* Modules/mediastream/RTCTrackEvent.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addRemoteStream):
(WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):
(WebCore::LibWebRTCMediaEndpoint::addDataChannel):
* Modules/notifications/Notification.cpp:
(WebCore::Notification::dispatchShowEvent):
(WebCore::Notification::dispatchClickEvent):
(WebCore::Notification::dispatchCloseEvent):
(WebCore::Notification::dispatchErrorEvent):
* Modules/paymentrequest/MerchantValidationEvent.cpp:
(WebCore::MerchantValidationEvent::MerchantValidationEvent):
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
(WebCore::PaymentRequestUpdateEvent::PaymentRequestUpdateEvent):
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::QuickTimePluginReplacement::postEvent):
* Modules/speech/SpeechSynthesisEvent.cpp:
(WebCore::SpeechSynthesisEvent::SpeechSynthesisEvent):
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::setState):
* Modules/webaudio/AudioProcessingEvent.cpp:
(WebCore::AudioProcessingEvent::AudioProcessingEvent):
* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::finish):
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
(WebCore::OfflineAudioCompletionEvent::OfflineAudioCompletionEvent):
* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::CloseEvent):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::didConnect):
(WebCore::WebSocket::dispatchOrQueueErrorEvent):
* Modules/webvr/VRDisplayEvent.cpp:
(WebCore::VRDisplayEvent::VRDisplayEvent):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::dispatchAccessibilityEventWithType const):
* accessibility/AccessibleSetValueEvent.cpp:
(WebCore::AccessibleSetValueEvent::AccessibleSetValueEvent):
* animation/AnimationPlaybackEvent.cpp:
(WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent):
* dom/AbortSignal.cpp:
(WebCore::AbortSignal::abort):
* dom/AnimationEvent.cpp:
(WebCore::AnimationEvent::AnimationEvent):
* dom/BeforeLoadEvent.h:
* dom/BeforeTextInsertedEvent.cpp:
(WebCore::BeforeTextInsertedEvent::BeforeTextInsertedEvent):
* dom/BeforeUnloadEvent.cpp:
(WebCore::BeforeUnloadEvent::BeforeUnloadEvent):
* dom/CharacterData.cpp:
(WebCore::CharacterData::dispatchModifiedEvent):
* dom/CompositionEvent.cpp:
(WebCore::CompositionEvent::CompositionEvent):
* dom/ContainerNode.cpp:
(WebCore::dispatchChildInsertionEvents):
(WebCore::dispatchChildRemovalEvents):
* dom/DeviceMotionEvent.cpp:
(WebCore::DeviceMotionEvent::DeviceMotionEvent):
* dom/DeviceOrientationEvent.cpp:
(WebCore::DeviceOrientationEvent::DeviceOrientationEvent):
* dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::visibilityStateChanged):
(WebCore::Document::finishedParsing):
(WebCore::Document::dispatchFullScreenChangeOrErrorEvent):
(WebCore::Document::orientationChanged):
* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::enqueueOrDispatchScrollEvent):
(WebCore::DocumentEventQueue::enqueueScrollEvent):
(WebCore::DocumentEventQueue::enqueueResizeEvent):
* dom/DocumentEventQueue.h:
* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent):
(WebCore::Element::dispatchFocusInEvent):
(WebCore::Element::dispatchFocusOutEvent):
(WebCore::Element::dispatchFocusEvent):
(WebCore::Element::dispatchBlurEvent):
(WebCore::Element::dispatchWebKitImageReadyEventForTesting):
* dom/ErrorEvent.cpp:
(WebCore::ErrorEvent::ErrorEvent):
* dom/Event.cpp:
(WebCore::Event::Event):
(WebCore::Event::create):
* dom/Event.h:
* dom/FocusEvent.cpp:
(WebCore::FocusEvent::FocusEvent):
* dom/FocusEvent.h:
* dom/HashChangeEvent.h:
* dom/InputEvent.cpp:
(WebCore::InputEvent::create):
(WebCore::InputEvent::InputEvent):
* dom/InputEvent.h:
* dom/KeyboardEvent.cpp:
(WebCore::KeyboardEvent::KeyboardEvent):
* dom/MessageEvent.cpp:
(WebCore::MessageEvent::MessageEvent):
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::MouseRelatedEvent):
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.cpp:
(WebCore::MutationEvent::MutationEvent):
* dom/MutationEvent.h:
* dom/Node.cpp:
(WebCore::Node::dispatchSubtreeModifiedEvent):
(WebCore::Node::dispatchDOMActivateEvent):
(WebCore::Node::dispatchInputEvent):
* dom/OverflowEvent.cpp:
(WebCore::OverflowEvent::OverflowEvent):
* dom/PageTransitionEvent.cpp:
(WebCore::PageTransitionEvent::PageTransitionEvent):
* dom/PopStateEvent.cpp:
(WebCore::PopStateEvent::PopStateEvent):
* dom/ProgressEvent.cpp:
(WebCore::ProgressEvent::ProgressEvent):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::dispatchErrorEvent):
* dom/SecurityPolicyViolationEvent.h:
* dom/SimulatedClick.cpp:
* dom/TextEvent.cpp:
(WebCore::TextEvent::TextEvent):
* dom/TransitionEvent.cpp:
(WebCore::TransitionEvent::TransitionEvent):
* dom/UIEvent.cpp:
(WebCore::UIEvent::UIEvent):
* dom/UIEvent.h:
(WebCore::UIEvent::create):
* dom/UIEventWithKeyState.h:
(WebCore::UIEventWithKeyState::UIEventWithKeyState):
* dom/WebKitAnimationEvent.cpp:
(WebCore::WebKitAnimationEvent::WebKitAnimationEvent):
* dom/WebKitTransitionEvent.cpp:
(WebCore::WebKitTransitionEvent::WebKitTransitionEvent):
* dom/WheelEvent.cpp:
(WebCore::WheelEvent::WheelEvent):
* editing/Editor.cpp:
(WebCore::dispatchBeforeInputEvent):
(WebCore::dispatchBeforeInputEvents):
(WebCore::Editor::willApplyEditing const):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance):
(WebCore::FrameSelection::selectAll):
(WebCore::FrameSelection::dispatchSelectStart):
* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::dispatchPendingEvent):
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::dispatchChangeEvent):
(WebCore::HTMLFormControlElement::checkValidity):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::prepareForSubmission):
(WebCore::HTMLFormElement::reset):
* html/HTMLImageLoader.cpp:
(WebCore::HTMLImageLoader::dispatchLoadEvent):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::onSearch):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::dispatchPendingEvent):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::scheduleEvent):
(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::updateActiveTextTrackCues):
(WebCore::HTMLMediaElement::layoutSizeChanged):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::checkSnapshotStatus):
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::dispatchLoadEvent):
* html/HTMLSlotElement.cpp:
(WebCore::HTMLSlotElement::dispatchSlotChangeEvent):
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::errorEventTimerFired):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::dispatchPendingEvent):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::selectionChanged):
* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::didCompleteLoad):
* html/MediaController.cpp:
(WebCore::MediaController::scheduleEvent):
* html/canvas/WebGLContextEvent.cpp:
(WebCore::WebGLContextEvent::WebGLContextEvent):
* html/canvas/WebGLContextEvent.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::dispatchContextLostEvent):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent):
* html/parser/HTMLScriptRunner.cpp:
(WebCore::createScriptLoadEvent):
* html/track/TrackEvent.cpp:
(WebCore::TrackEvent::TrackEvent):
* html/track/TrackEvent.h:
* html/track/TrackListBase.cpp:
(WebCore::TrackListBase::scheduleTrackEvent):
(WebCore::TrackListBase::scheduleChangeEvent):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchUnloadEvents):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::dispatchPendingErrorEvent):
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::createApplicationCacheEvent):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchAllPendingUnloadEvents):
(WebCore::DOMWindow::languagesChanged):
(WebCore::DOMWindow::dispatchLoadEvent):
* page/EventHandler.cpp:
(WebCore::dispatchSelectStart):
(WebCore::EventHandler::dispatchDragEvent):
* page/EventSource.cpp:
(WebCore::EventSource::scheduleReconnect):
(WebCore::EventSource::didReceiveResponse):
(WebCore::EventSource::abortConnectionAttempt):
* page/FocusController.cpp:
(WebCore::dispatchEventsOnWindowAndFocusedElement):
(WebCore::FocusController::setFocusedFrame):
* page/FrameView.cpp:
(WebCore::FrameView::sendResizeEventIfNeeded):
* page/Page.cpp:
(WebCore::networkStateChanged):
* page/Performance.cpp:
(WebCore::Performance::resourceTimingBufferFullTimerFired):
* page/PointerLockController.cpp:
(WebCore::PointerLockController::enqueueEvent):
* page/VisualViewport.cpp:
(WebCore::VisualViewport::enqueueResizeEvent):
(WebCore::VisualViewport::enqueueScrollEvent):
* storage/StorageEvent.cpp:
(WebCore::StorageEvent::StorageEvent):
* svg/SVGElement.cpp:
(WebCore::SVGElement::sendSVGLoadEventIfPossible):
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::dispatchLoadEvent):
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::notifyFinished):
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::dispatchPendingEvent):
* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::notifyNetworkStateChange):
* workers/service/ExtendableEvent.cpp:
(WebCore::ExtendableEvent::ExtendableEvent):
* workers/service/ExtendableEvent.h:
* workers/service/ExtendableMessageEvent.cpp:
(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::scheduleTaskToUpdateState):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::scheduleTaskToFireControllerChangeEvent):
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::scheduleTaskToFireUpdateFoundEvent):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::notifyNetworkStateChange):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::callReadyStateChangeListener):

Source/WebKit:

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

Source/WebKitLegacy/ios:

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

Source/WebKitLegacy/mac:

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

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

14 months ago[Xcode] Fix up file reference paths in Source/WebKit/NetworkProcess
aestes@apple.com [Fri, 17 Aug 2018 20:27:21 +0000 (20:27 +0000)]
[Xcode] Fix up file reference paths in Source/WebKit/NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=188700

Rubber-stamped by Dan Bernstein.

* WebKit.xcodeproj/project.pbxproj:

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

14 months agoModernize results.html
simon.fraser@apple.com [Fri, 17 Aug 2018 18:56:45 +0000 (18:56 +0000)]
Modernize results.html
https://bugs.webkit.org/show_bug.cgi?id=188690

Reviewed by Alexey Proskuryakov.

results.html, which is used to show layout test results, had some very old-school
HTML string building to create the tables of test results, making it hard to hack on.

Modernize it, using ES6 classes for the major actors, and using DOM API to build most
of the content.

The page is functionally the same (other than the addition of a missing 'History" column header).

* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

14 months agoPass webPageID and webFrameID to NetworkLoad for speculative loads
achristensen@apple.com [Fri, 17 Aug 2018 18:11:23 +0000 (18:11 +0000)]
Pass webPageID and webFrameID to NetworkLoad for speculative loads
https://bugs.webkit.org/show_bug.cgi?id=188682

Reviewed by Youenn Fablet.

This also removes an authentication shortcut I introduced in r234941

* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

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

14 months agoSimplify server trust authentication flow
achristensen@apple.com [Fri, 17 Aug 2018 18:10:41 +0000 (18:10 +0000)]
Simplify server trust authentication flow
https://bugs.webkit.org/show_bug.cgi?id=188684

Reviewed by Youenn Fablet.

We unnecessarily had the allowsSpecificHTTPSCertificateForHost check at two different abstraction levels.

* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::didReceiveChallenge):
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::allowsSpecificHTTPSCertificateForHost): Deleted.
* NetworkProcess/NetworkSession.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

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

14 months agoFix API tests after r234985
achristensen@apple.com [Fri, 17 Aug 2018 18:09:39 +0000 (18:09 +0000)]
Fix API tests after r234985
https://bugs.webkit.org/show_bug.cgi?id=188679

* UIProcess/API/C/WKPage.cpp:
(encodingOf):
(dataFrom):
The encoding of null strings had changed, which is no big deal because there's no data in that encoding,
but switching it back fixes the tests.

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

14 months agoREGRESSION (234743) Timeouts in TestWebKitAPI.PreferredAudioBufferSize.AudioWithWebAu...
jer.noble@apple.com [Fri, 17 Aug 2018 17:27:42 +0000 (17:27 +0000)]
REGRESSION (234743) Timeouts in TestWebKitAPI.PreferredAudioBufferSize.AudioWithWebAudio and TestWebKitAPI.PreferredAudioBufferSize.WebAudio
https://bugs.webkit.org/show_bug.cgi?id=188470
<rdar://problem/43144969>

Reviewed by Alex Christensen.

On a loaded server, the WebContent process may send the "playing" message before the
UIProcess has a chance to register a listener for that message. Restructure the tests
so that the listener is registered before the page is loaded.

* TestWebKitAPI/Tests/WebKitCocoa/PreferredAudioBufferSize.mm:
(PreferredAudioBufferSize::runPlayingTestWithPageNamed):
(TEST_F):

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

14 months agoReplace WebPageProxy::loadAlternateHTMLString with loadAlternateHTML
achristensen@apple.com [Fri, 17 Aug 2018 16:41:03 +0000 (16:41 +0000)]
Replace WebPageProxy::loadAlternateHTMLString with loadAlternateHTML
https://bugs.webkit.org/show_bug.cgi?id=188679

Reviewed by Carlos Garcia Campos.

* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):
* Shared/LoadParameters.h:
* UIProcess/API/C/WKPage.cpp:
(encodingOf):
(dataFrom):
(loadString):
(WKPageLoadAlternateHTMLString):
(WKPageLoadAlternateHTMLStringWithUserData):
* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadAlternateHTMLString): Deleted.
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadAlternateHTMLString):

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

14 months ago[JSC] Add GPRReg::InvalidGPRReg and FPRReg::InvalidFPRReg
yusukesuzuki@slowstart.org [Fri, 17 Aug 2018 15:26:19 +0000 (15:26 +0000)]
[JSC] Add GPRReg::InvalidGPRReg and FPRReg::InvalidFPRReg
https://bugs.webkit.org/show_bug.cgi?id=188589

Patch by Yusuke Suzuki  <yusukesuzuki@slowstart.org> and Fujii Hironori <Hironori.Fujii@sony.com> on 2018-08-17
Reviewed by Mark Lam.
And reviewed by Yusuke Suzuki for Hironori's change.

Source/JavaScriptCore:

Since GPRReg(RegisterID) and FPRReg(FPRegisterID) do not include -1 in their enum values,
UBSan dumps bunch of warnings "runtime error: load of value 4294967295, which is not a valid value for type 'RegisterID'".

- We add InvalidGPRReg and InvalidFPRReg to enum values of GPRReg and FPRReg to suppress the above warnings.
- We make GPRReg and FPRReg int8_t enums.
- We replace `#define InvalidGPRReg ((JSC::GPRReg)-1)` to `static constexpr GPRReg InvalidGPRReg { GPRReg::InvalidGPRReg };`.
- We add operator+/- definition for RegisterIDs as a MSVC workaround. MSVC fails to resolve operator+ and operator-
  if `enum : int8_t` is used instead of `enum`.

* assembler/ARM64Assembler.h:
* assembler/ARMAssembler.h:
* assembler/ARMv7Assembler.h:
* assembler/MIPSAssembler.h:
* assembler/MacroAssembler.h:
* assembler/X86Assembler.h:
* jit/CCallHelpers.h:
(JSC::CCallHelpers::clampArrayToSize):
* jit/FPRInfo.h:
* jit/GPRInfo.h:
(JSC::JSValueRegs::JSValueRegs):
(JSC::JSValueRegs::tagGPR const):
(JSC::JSValueRegs::payloadGPR const):
(JSC::JSValueSource::JSValueSource):
(JSC::JSValueSource::unboxedCell):
(JSC::JSValueSource::operator bool const):
(JSC::JSValueSource::base const):
(JSC::JSValueSource::tagGPR const):
(JSC::JSValueSource::payloadGPR const):
(JSC::JSValueSource::hasKnownTag const):

Source/WebCore:

* cssjit/FunctionCall.h:
(WebCore::FunctionCall::FunctionCall):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::modulo):
* html/HTMLKeygenElement.cpp:
Remove `using namespace WebCore` not to introduce `operator+/-` which makes the resolution of `operator+/-` for RegisterID ambiguous.

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

14 months ago[GStreamer] reduce position queries frequency
philn@webkit.org [Fri, 17 Aug 2018 14:07:33 +0000 (14:07 +0000)]
[GStreamer] reduce position queries frequency
https://bugs.webkit.org/show_bug.cgi?id=188645

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

There is no need to perform dozens of position queries per second.
One every 300ms is enough.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

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

14 months ago[SOUP] Handle OAuth authentication after r234912
mcatanzaro@igalia.com [Fri, 17 Aug 2018 13:19:19 +0000 (13:19 +0000)]
[SOUP] Handle OAuth authentication after r234912
https://bugs.webkit.org/show_bug.cgi?id=188651

Reviewed by Carlos Garcia Campos.

Update this switch to consider the new OAuth enum value added in r234912. I suppose OAuth is
used for HTTP Auth now. It will be a one-time compatibility break as passwords previously
stored with type "Unknown" will no longer be accessible.

* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::authTypeFromProtectionSpaceAuthenticationScheme):

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

14 months agoUnreviewed, rolling out r234259.
mcatanzaro@igalia.com [Fri, 17 Aug 2018 13:15:42 +0000 (13:15 +0000)]
Unreviewed, rolling out r234259.

Caused excessive CPU usage

Reverted changeset:

"[GTK][WPE] Improve the way request displayRefresh
notifications"
https://bugs.webkit.org/show_bug.cgi?id=188005
https://trac.webkit.org/changeset/234259

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

14 months agoWTF's internal std::optional implementation should release assert on all bad accesses
ddkilzer@apple.com [Fri, 17 Aug 2018 13:04:17 +0000 (13:04 +0000)]
WTF's internal std::optional implementation should release assert on all bad accesses
<https://webkit.org/b/187669>

Reviewed by Ryosuke Niwa.

* wtf/Assertions.h:
(RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT): Add macro definitions.
* wtf/Optional.h:
(std::optional::operator -> const):
(std::optional::operator ->):
(std::optional::operator * const):
(std::optional::operator *):
(std::optional::value const):
(std::optional::value):
(std::optional<T::operator-> const):
(std::optional<T::operator* const):
(std::optional<T::value const):
- Change ASSERT_UNDER_CONSTEXPR_CONTEXT() macros to
  RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT() macros.

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

14 months ago[GTK] Never return an uninitialized ImageGStreamer object.
Ms2ger@igalia.com [Fri, 17 Aug 2018 09:59:40 +0000 (09:59 +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@234979 268f45cc-cd09-0410-ab3c-d52691b4dbfc