WebKit-https.git
2 years agoMake EncryptedMediaAPIEnabled an experimental feature
jer.noble@apple.com [Wed, 2 May 2018 20:22:16 +0000 (20:22 +0000)]
Make EncryptedMediaAPIEnabled an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=185212

Reviewed by Eric Carlson.

* Shared/WebPreferences.yaml:

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

2 years ago[GTK] Generate a JSC bundle on the 64 and 32 bit release bots and upload it to webkit...
clopez@igalia.com [Wed, 2 May 2018 20:07:58 +0000 (20:07 +0000)]
[GTK] Generate a JSC bundle on the 64 and 32 bit release bots and upload it to webkitgtk.org (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=184699

Unreviewed follow-up fix after r231230.

* Scripts/generate-jsc-bundle:
(generate_wrapper_script): Quote the arguments passed to jsc.

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

2 years agoLayout Test http/wpt/service-workers/header-filtering.https.html is a flaky failure
youenn@apple.com [Wed, 2 May 2018 19:53:38 +0000 (19:53 +0000)]
Layout Test http/wpt/service-workers/header-filtering.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=184469
<rdar://problem/39428226>

Reviewed by Chris Dumez.

Ensure that the message posted for the loading of the initial iframe is actually received before doing further tests.

* http/wpt/service-workers/header-filtering.https.html:
* platform/mac-wk2/TestExpectations:

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

2 years agoAdjust sandbox profile in simulator mode.
pvollan@apple.com [Wed, 2 May 2018 19:29:30 +0000 (19:29 +0000)]
Adjust sandbox profile in simulator mode.
https://bugs.webkit.org/show_bug.cgi?id=185172
<rdar://problem/39876860>

Reviewed by Brent Fulgham.

Fix some sandbox violations.

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

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

2 years agoWeb Inspector: opt out of process swap on navigation if a Web Inspector frontend...
bburg@apple.com [Wed, 2 May 2018 19:17:49 +0000 (19:17 +0000)]
Web Inspector: opt out of process swap on navigation if a Web Inspector frontend is connected
https://bugs.webkit.org/show_bug.cgi?id=184861
<rdar://problem/39153768>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Notify the client of the current connection count whenever a frontend connects or disconnects.

Covered by new API test.

* inspector/InspectorClient.h:
(WebCore::InspectorClient::frontendCountChanged):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::connectFrontend):
(WebCore::InspectorController::disconnectFrontend):
(WebCore::InspectorController::disconnectAllFrontends):
* inspector/InspectorController.h:

Source/WebKit:

We need to track how many frontends are attached to the web page (both local and remote).
InspectorController propagates this out to WebKit via InspectorClient. This is then
kept in UIProcess as a member of WebPageProxy. When making a decision whether to use a
new process for a navigation, return early with "no" if any frontends are open for the
page being navigated.

* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::didChangeInspectorFrontendCount):
(WebKit::WebPageProxy::inspectorFrontendCount const):
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::frontendCountChanged):
* WebProcess/WebCoreSupport/WebInspectorClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::inspectorFrontendCountChanged):
* WebProcess/WebPage/WebPage.h:

Tools:

Add a new test that checks whether a new process is used for navigation when
an Inspector is shown. Also check that the behavior reverts to normal after
the Inspector has been closed.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

2 years agotest262/Runner.pm: save summary to file
commit-queue@webkit.org [Wed, 2 May 2018 19:08:33 +0000 (19:08 +0000)]
test262/Runner.pm: save summary to file
https://bugs.webkit.org/show_bug.cgi?id=185200

Patch by Valerie R Young <valerie@bocoup.com> on 2018-05-02
Reviewed by Michael Saboff.

.:

* .gitignore:

Tools:

* Scripts/test262/Runner.pm:
(processCLI):
(main):
(summarizeResults):

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

2 years agoFollow-up build fix for r231223
jbedard@apple.com [Wed, 2 May 2018 18:54:27 +0000 (18:54 +0000)]
Follow-up build fix for r231223
https://bugs.webkit.org/show_bug.cgi?id=185159
<rdar://problem/39891074>

Unreviewed build fix.

We should be consistent about when we include <optional> vs define our own.

* wtf/Optional.h:

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

2 years agoJSC should be able to cache custom setter calls on the prototype chain
fpizlo@apple.com [Wed, 2 May 2018 18:51:16 +0000 (18:51 +0000)]
JSC should be able to cache custom setter calls on the prototype chain
https://bugs.webkit.org/show_bug.cgi?id=185174

Reviewed by Saam Barati.

We broke custom-setter-on-the-prototype-chain caching when we fixed a bug involving the conditionSet.isEmpty()
condition being used to determine if we have an alternateBase. The fix in r222671 incorrectly tried to add
impossible-to-validate conditions to the conditionSet by calling generateConditionsForPrototypePropertyHit() instead
of generateConditionsForPrototypePropertyHitCustom(). The problem is that the former function will always fail for
custom accessors because it won't find the custom property in the structure.

The fix is to add a virtual hasAlternateBase() function and use that instead of conditionSet.isEmpty().

This is a 4x speed-up on assign-custom-setter.js.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::hasAlternateBase const):
(JSC::AccessCase::alternateBase const):
(JSC::AccessCase::generateImpl):
* bytecode/AccessCase.h:
(JSC::AccessCase::alternateBase const): Deleted.
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::hasAlternateBase const):
(JSC::GetterSetterAccessCase::alternateBase const):
* bytecode/GetterSetterAccessCase.h:
* bytecode/ObjectPropertyConditionSet.cpp:
(JSC::generateConditionsForPrototypePropertyHitCustom):
* bytecode/ObjectPropertyConditionSet.h:
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):

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

2 years ago[GStreamer] Remove unneeded include of gstgldisplay_wayland.h after r228866 and r229022
clopez@igalia.com [Wed, 2 May 2018 18:44:10 +0000 (18:44 +0000)]
[GStreamer] Remove unneeded include of gstgldisplay_wayland.h after r228866 and r229022
https://bugs.webkit.org/show_bug.cgi?id=185207

Reviewed by Michael Catanzaro.

Remove unneeded include of gstgldisplay_wayland.h

No new tests, no change in behaviour.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

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

2 years agodocument.open() event listener removal is not immediate
cdumez@apple.com [Wed, 2 May 2018 18:39:20 +0000 (18:39 +0000)]
document.open() event listener removal is not immediate
https://bugs.webkit.org/show_bug.cgi?id=185191

Reviewed by Darin Adler.

Source/WebCore:

We need to make sure we set the 'wasremoved' flag on RegisteredEventListeners
whenever they get removed from the EventListenerMap. We were doing so correctly
in EventListenerMap:remove() but not EventListenerMap::clear(). This patch
updates clear() accordingly.

The reason we need to set this flag is that RegisteredEventListeners is RefCounted
and EventTarget::fireEventListeners() may be currently running and calling
each listener one by one, holding a reference to all listener of a given event.

Test: fast/dom/Document/document-open-removes-all-listeners.html

* dom/EventListenerMap.cpp:
(WebCore::EventListenerMap::clear):

LayoutTests:

Add layout test coverage.

* fast/dom/Document/document-open-removes-all-listeners-expected.txt: Added.
* fast/dom/Document/document-open-removes-all-listeners.html: Added.

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

2 years agoAdopt -destinationWindowToExitFullScreenForWindow:
jer.noble@apple.com [Wed, 2 May 2018 18:37:27 +0000 (18:37 +0000)]
Adopt -destinationWindowToExitFullScreenForWindow:
https://bugs.webkit.org/show_bug.cgi?id=185204
<rdar://problem/22486621>

Reviewed by Eric Carlson.

* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController destinationWindowToExitFullScreenForWindow:]):

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

2 years agoDisable Media capture rules in sandbox for simulator.
pvollan@apple.com [Wed, 2 May 2018 18:35:01 +0000 (18:35 +0000)]
Disable Media capture rules in sandbox for simulator.
https://bugs.webkit.org/show_bug.cgi?id=185206
<rdar://problem/39910015>

Reviewed by Eric Carlson.

These rules are not relevant in this case.

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

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

2 years agoUse WeakPtr in GridCell
zalan@apple.com [Wed, 2 May 2018 18:18:10 +0000 (18:18 +0000)]
Use WeakPtr in GridCell
https://bugs.webkit.org/show_bug.cgi?id=185180
<rdar://problem/39432165>

Reviewed by Antti Koivisto.

Since GridCell does not own the renderers, it should
construct weak pointers.

Unable to create a reliably reproducible test case.

* rendering/Grid.cpp:
(WebCore::Grid::insert):
(WebCore::GridIterator::nextGridItem):
* rendering/Grid.h:
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::firstLineBaseline const):

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

2 years ago[iOS] Provide audio route information when invoking AirPlay picker
eric.carlson@apple.com [Wed, 2 May 2018 17:51:45 +0000 (17:51 +0000)]
[iOS] Provide audio route information when invoking AirPlay picker
https://bugs.webkit.org/show_bug.cgi?id=185199
<rdar://problem/39853103>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, this requires a specific hardware setup.

* dom/Document.cpp:
(WebCore::Document::showPlaybackTargetPicker): Pass route sharing policy and routing context UID.
* dom/Document.h:

* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::showPlaybackTargetPicker): Ditto.

* loader/EmptyClients.h:
* page/ChromeClient.h:

* page/Page.cpp:
(WebCore::Page::showPlaybackTargetPicker): Ditto.
* page/Page.h:

* platform/audio/AudioSession.cpp:
(WebCore::AudioSession::routeSharingPolicy const): Empty implementation for non-iOS ports.
(WebCore::routingContextUID const): Ditto.
* platform/audio/AudioSession.h:

* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::routeSharingPolicy const): Return the route sharing policy.
(WebCore::AudioSession::routingContextUID const): Return the route context UID.

Source/WebCore/PAL:

* pal/spi/mac/AVFoundationSPI.h: Add additional AVAudioSession SPI.

Source/WebKit:

* Scripts/webkit/messages.py:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showPlaybackTargetPicker):  Pass route sharing policy and routing context UID.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]): Take same.
(-[WKContentView _showPlaybackTargetPicker:fromRect:]): Deleted.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::showPlaybackTargetPicker): Pass route sharing policy and routing context UID.

* UIProcess/ios/forms/WKAirPlayRoutePicker.h:
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Take same.
(-[WKAirPlayRoutePicker showFromView:]): Deleted.

* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::showPlaybackTargetPicker):

Source/WebKitLegacy/ios:

* WebCoreSupport/WebChromeClientIOS.h:
* WebCoreSupport/WebChromeClientIOS.mm:
(WebChromeClientIOS::showPlaybackTargetPicker): Pass route sharing policy and routing context UID.

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

2 years agoDraw SystemPreview badge to specification on iOS
dino@apple.com [Wed, 2 May 2018 17:36:59 +0000 (17:36 +0000)]
Draw SystemPreview badge to specification on iOS
https://bugs.webkit.org/show_bug.cgi?id=185203
<rdar://problem/39908855>

Reviewed by Tim Horton.

Use CoreImage to render a badge with a blurred background,
at particular sizes.

This will be tested internally while we're getting artwork
from WebKitAdditions.

* Configurations/WebCore.xcconfig: Link against CoreImage.
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintSystemPreviewBadge): New function
in the iOS platform RenderTheme that draws the system preview.

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

2 years ago[MIPS] Implement and16 and store16 for MacroAssemblerMIPS
commit-queue@webkit.org [Wed, 2 May 2018 17:19:12 +0000 (17:19 +0000)]
[MIPS] Implement and16 and store16 for MacroAssemblerMIPS
https://bugs.webkit.org/show_bug.cgi?id=185195

Patch by Dominik Infuehr <dinfuehr@igalia.com> on 2018-05-02
Reviewed by Mark Lam.

This implements the given function for MIPS, such that it builds again.

* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::and16):
(JSC::MacroAssemblerMIPS::store16):

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

2 years agoGet the WebKit.framework bundle by asking for WKWebView
jer.noble@apple.com [Wed, 2 May 2018 17:14:10 +0000 (17:14 +0000)]
Get the WebKit.framework bundle by asking for WKWebView
https://bugs.webkit.org/show_bug.cgi?id=185175

Reviewed by Tim Horton.

* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::initializeSandbox):
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::initializeSandbox):
* StorageProcess/mac/StorageProcessMac.mm:
(WebKit::StorageProcess::initializeSandbox):

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

2 years agoExpose "$262.agent.monotonicNow()" for use in testing Atomic operation timeouts
commit-queue@webkit.org [Wed, 2 May 2018 17:05:50 +0000 (17:05 +0000)]
Expose "$262.agent.monotonicNow()" for use in testing Atomic operation timeouts
https://bugs.webkit.org/show_bug.cgi?id=185043

Patch by Rick Waldron <waldron.rick@gmail.com> on 2018-05-02
Reviewed by Filip Pizlo.

* jsc.cpp:
(GlobalObject::finishCreation):
(functionDollarAgentMonotonicNow):

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

2 years ago[ARM] Implement and16 and store16 for MacroAssemblerARMv7
commit-queue@webkit.org [Wed, 2 May 2018 16:49:57 +0000 (16:49 +0000)]
[ARM] Implement and16 and store16 for MacroAssemblerARMv7
https://bugs.webkit.org/show_bug.cgi?id=185196

Patch by Dominik Infuehr <dinfuehr@igalia.com> on 2018-05-02
Reviewed by Mark Lam.

This implements and16 and store16 for MacroAssemblerARMv7 such that JSC builds again.

* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::and16):
(JSC::MacroAssemblerARMv7::store16):

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

2 years agoSource/WebCore:
bfulgham@apple.com [Wed, 2 May 2018 16:49:04 +0000 (16:49 +0000)]
Source/WebCore:
Prevent Debug ASSERT when changing forms
https://bugs.webkit.org/show_bug.cgi?id=185173
<rdar://problem/39738669>

Reviewed by Ryosuke Niwa.

Form submission could trigger a debug assertion during validation when
a form is changed during an input submission. Fix this by cleaning up
the event handling logic and make it more consistent with modern WebKit
coding style.

Test: fast/forms/form-submission-crash-3.html

* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::defaultEventHandler): Make sure layout runs before
attempting to perform event handling.
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::reportValidity): Ditto.
(WebCore::HTMLFormElement::validateInteractively): Remove call to perform layout here,
since we expect this to happen earlier in the layout pass. Add an assertion that the
tree is not dirty.
* html/ImageInputType.cpp:
(WebCore::ImageInputType::handleDOMActivateEvent): Make sure layout runs before
attempting to perform event handling.
* html/SubmitInputType.cpp:
(WebCore::SubmitInputType::handleDOMActivateEvent): Ditto.

LayoutTests:
Prevent assertion when changing forms
https://bugs.webkit.org/show_bug.cgi?id=185173
<rdar://problem/39738669>

Reviewed by Ryosuke Niwa.

* fast/forms/form-submission-crash-3-expected.txt: Added.
* fast/forms/form-submission-crash-3.html: Added.

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

2 years agoCannot gather srflx or relay ICE candidates on IPv6 network (ICE agent hangs?)
youenn@apple.com [Wed, 2 May 2018 16:42:10 +0000 (16:42 +0000)]
Cannot gather srflx or relay ICE candidates on IPv6 network (ICE agent hangs?)
https://bugs.webkit.org/show_bug.cgi?id=181009
<rdar://problem/36144555>

Reviewed by Eric Carlson.

On iOS/IPv6 networks, STUN servers name resolution returns a zero IPv6 IP address.
No error is raised which leads to sending STUN requests with that IP address.
Once the request times out, the ICE candidate gathering finishes with host candidates only.

This patch makes WebRTC DNS resolver to send only IPv4 resolved addresses.
STUN is used for NAT traversal which is for IPv4 addresses.
Not sending IPv6 addresses allows terminating ICE candidate gathering sooner.

Manually tested on iOS with IPv4/IPv6 and IPv6 networks.

* NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:
(WebKit::resolvedName):

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

2 years agoCacheStorage::Engine should keep a list of initialization callback
youenn@apple.com [Wed, 2 May 2018 16:41:55 +0000 (16:41 +0000)]
CacheStorage::Engine should keep a list of initialization callback
https://bugs.webkit.org/show_bug.cgi?id=185184
<rdar://problem/38875651>

Reviewed by Antti Koivisto.

Source/WebKit:

Keep each initialize callback in a Vector so as to compute the salt only once.
Call all callbacks then in a loop.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::~Engine):
(WebKit::CacheStorage::Engine::initialize):
* NetworkProcess/cache/CacheStorageEngine.h:

LayoutTests:

* http/wpt/cache-storage/a-cache-open.https-expected.txt: Added.
* http/wpt/cache-storage/a-cache-open.https.html: Added.

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

2 years agoUnreviewed; address review comments made before landing r231231.
jer.noble@apple.com [Wed, 2 May 2018 16:13:38 +0000 (16:13 +0000)]
Unreviewed; address review comments made before landing r231231.

* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::volume const):

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

2 years agoEnable HAVE_AVKIT for the MINIMAL_SIMULATOR
jer.noble@apple.com [Wed, 2 May 2018 15:51:22 +0000 (15:51 +0000)]
Enable HAVE_AVKIT for the MINIMAL_SIMULATOR
https://bugs.webkit.org/show_bug.cgi?id=185183

Reviewed by Daniel Bates.

* wtf/Platform.h:

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

2 years agoPipe volume through PlaybackSessionManager/Proxy.
jer.noble@apple.com [Wed, 2 May 2018 15:50:33 +0000 (15:50 +0000)]
Pipe volume through PlaybackSessionManager/Proxy.
https://bugs.webkit.org/show_bug.cgi?id=185182

Reviewed by Eric Carlson.

Source/WebCore:

Add support for the volume property to PlaybackSessionModel, and all its clients.

* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModelClient::volumeChanged):
* platform/cocoa/PlaybackSessionModelMediaElement.h:
* platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::updateForEventName):
(WebCore::PlaybackSessionModelMediaElement::setVolume):
(WebCore::PlaybackSessionModelMediaElement::volume const):
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::volumeChanged):
* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController volume]):
(-[WebAVPlayerController setVolume:]):
(-[WebAVPlayerController volumeChanged:]):
(-[WebAVPlayerController resetMediaState]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::volumeChanged):
(VideoFullscreenControllerContext::volume const):
(VideoFullscreenControllerContext::setVolume):

Source/WebKit:

* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionModelContext::setVolume):
(WebKit::PlaybackSessionModelContext::volumeChanged):
(WebKit::PlaybackSessionManagerProxy::volumeChanged):
(WebKit::PlaybackSessionManagerProxy::setVolume):
* WebProcess/cocoa/PlaybackSessionManager.h:
* WebProcess/cocoa/PlaybackSessionManager.messages.in:
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionInterfaceContext::volumeChanged):
(WebKit::PlaybackSessionManager::volumeChanged):
(WebKit::PlaybackSessionManager::setVolume):

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

2 years ago[GTK] Generate a JSC bundle on the 64 and 32 bit release bots and upload it to webkit...
clopez@igalia.com [Wed, 2 May 2018 12:00:37 +0000 (12:00 +0000)]
[GTK] Generate a JSC bundle on the 64 and 32 bit release bots and upload it to webkitgtk.org
https://bugs.webkit.org/show_bug.cgi?id=184699

Reviewed by Gustavo Noronha Silva.

This adds a new step for the GTK 64-bit release build bot and the
GTK 32-bit release build&test bot.

This step will be run as one of the lasts ones (after the product
is built) and will execute the script generate-jsc-bundle.
This script will take care of creating a JSC bundle and uploading
it to a server defined on a configuration file that has to be
deployed on the bots with the required server data and credentials
for this upload.

In this case, the built products should then be accessible at
<https://webkitgtk.org/jsc-built-products>. But the implementation
is not tied to any specific server. All the details about where
to upload the file is done in configuration file that is kept
private on each bot outside of the WebKit source tree.

The script also supports generating a JSC bundle locally and not
uploading it anywhere. This is the default mode of running.
The remote upload will only be activated if a --remote-config-file
parameter is passed (which is done from the buildbot config)

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/factories.py:
(BuildFactory):
(BuildFactory.__init__):
(TestFactory):
(TestFactory.__init__):
(BuildAndGenerateJSCBundleFactory):
(BuildAndNonLayoutTestAndGenerateJSCBundleFactory):
* BuildSlaveSupport/build.webkit.org-config/steps.py:
(GenerateJSCBundle):
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
* Scripts/generate-jsc-bundle: Added.
(ldd_get_libs_and_interpreter):
(generate_readme):
(generate_wrapper_script):
(copy_and_remove_rpath):
(createJSCBundle):
(sha256sum):
(uploadJSCBundle):
(main):

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

2 years agoemitCodeToGetArgumentsArrayLength should not crash on PhantomNewArrayWithSpread
rmorisset@apple.com [Wed, 2 May 2018 11:21:28 +0000 (11:21 +0000)]
emitCodeToGetArgumentsArrayLength should not crash on PhantomNewArrayWithSpread
https://bugs.webkit.org/show_bug.cgi?id=183172

Reviewed by Filip Pizlo.

JSTests:

* stress/length-of-new-array-with-spread.js: Added.
(foo):
(bar):
(baz):

Source/JavaScriptCore:

DFGArgumentsEliminationPhase.cpp currently believes that allocations of NewArrayWithSpread can be deleted if they are only used by GetArrayLength,
but when it then calls emitCodeToGetArgumentsArrayLength, the latter has no idea what to do with GetArrayLength.

I fix the problem by teaching emitCodeToGetArgumentsArrayLength how to deal with GetArrayLength.
Because this requires emitting an Add that can overflow and thus exit, we also tell DFGArgumentsEliminationPhase to give up on eliminating
a NewArrayWithSpread when it is used by a GetArrayLength that is not allowed to exit.

* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGArgumentsUtilities.cpp:
(JSC::DFG::emitCodeToGetArgumentsArrayLength):

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

2 years agoUpdate document-create-touch.html expectations for r231114
Ms2ger@igalia.com [Wed, 2 May 2018 11:06:50 +0000 (11:06 +0000)]
Update document-create-touch.html expectations for r231114
https://bugs.webkit.org/show_bug.cgi?id=185193

Unreviewed test gardening.

* fast/events/touch/document-create-touch-expected.txt:
* fast/events/touch/document-create-touch.html:

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

2 years agoUnreviewed, stackPointer signature is different from declaration
utatane.tea@gmail.com [Wed, 2 May 2018 10:06:05 +0000 (10:06 +0000)]
Unreviewed, stackPointer signature is different from declaration
https://bugs.webkit.org/show_bug.cgi?id=184790

* runtime/MachineContext.h:
(JSC::MachineContext::stackPointer):

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

2 years agoUnreviewed, fix build in WinCairo
utatane.tea@gmail.com [Wed, 2 May 2018 06:26:35 +0000 (06:26 +0000)]
Unreviewed, fix build in WinCairo
https://bugs.webkit.org/show_bug.cgi?id=185169

* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::instantiateStreaming):
* bindings/js/JSDOMWindowBase.h:

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

2 years agoWrite a script that detects chart changes by using v3 API.
dewei_zhu@apple.com [Wed, 2 May 2018 06:16:16 +0000 (06:16 +0000)]
Write a script that detects chart changes by using v3 API.
https://bugs.webkit.org/show_bug.cgi?id=184419

Reviewed by Ryosuke Niwa.

Added a script that detects chart changes and schedule confirming analysis task.

* browser-tests/async-task-tests.js: Added a unit test for 'AsyncTask'.
* browser-tests/index.html: Added import for 'AsyncTask' for testing.
* public/shared/statistics.js: Make 'findRangesForChangeDetectionsWithWelchsTTest' defaults to 0.99 one sided possibility.
(Statistics.new.this.findRangesForChangeDetectionsWithWelchsTTest):
* public/v3/async-task.js:
(AsyncTask.isAvailable): Helper function to determine whether AsyncTask is available or not as 'Worker' is
not available in nodejs.
(AsyncTask):
* public/v3/models/bug.js: Export as a module.
* public/v3/models/measurement-set.js:
(MeasurementSet.prototype._invokeSegmentationAlgorithm): Added a check to avoid using AsyncTask when running in NodeJs.
(MeasurementSet):
* server-tests/resources/common-operations.js: Added a helper function to assert certain exception is thrown.
(async.assertThrows):
* tools/js/measurement-set-analyzer.js: Added 'MeasurementSetAnalyzer' module for analyzing measurement set.
(MeasurementSetAnalyzer):
(MeasurementSetAnalyzer.prototype.async.analyzeOnce):
(MeasurementSetAnalyzer.measurementSetListForAnalysis):
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet):
* tools/js/v3-models.js: Added import for 'Bug' object.
* tools/run-analysis.js: Added this script to detect measurement set changes.
(main):
(async.analysisLoop):
* unit-tests/measurement-set-analyzer-tests.js: Added unit tests for 'MeasurementSetAnalyzer'.
* unit-tests/resources/mock-v3-models.js: Reset 'MeasurementSet._set' every time.
Update mock platform to include lastModifiedByMetric information.
(MockModels.inject):

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

2 years ago[JSC] Add SameValue DFG node
utatane.tea@gmail.com [Wed, 2 May 2018 05:51:33 +0000 (05:51 +0000)]
[JSC] Add SameValue DFG node
https://bugs.webkit.org/show_bug.cgi?id=185065

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/object-is.js: Added.
(incognito):
(sameValue):
(test1):
(test2):
(test3):
(test4):
(test5):
(test6):
* stress/object-is.js: Added.
(shouldBe):
(is1):
(is2):
(is3):
(is4):
(is5):
(is6):
(is7):
(is8):
(is9):
(is10):
(is11):
(is12):
(is13):
(is14):
(is15):

Source/JavaScriptCore:

This patch adds Object.is handling in DFG and FTL. Object.is is converted to SameValue DFG node.
And DFG fixup phase attempts to convert SameValue node to CompareStrictEq with type filter edges
if possible. Since SameValue(Untyped, Untyped) and SameValue(Double, Double) have different semantics
from CompareStrictEq, we do not convert SameValue to CompareStrictEq for them. DFG and FTL have
implementations for these SameValue nodes.

This old MacroAssemblerX86Common::compareDouble was dead code since the derived class, "MacroAssembler"
has a generalized compareDouble, which just uses branchDouble. Since this was not used, this function
was broken. This patch fixes issues and move compareDouble to MacroAssemblerX86Common, and remove a
generalized compareDouble for x86 arch to use this specialized efficient version instead. The fixes are
correctly using set32 to zero-extending the result, and setting the initial value of `dest` register
correctly for DoubleEqual and DoubleNotEqualOrUnordered cases.

Added microbenchmark shows performance improvement.

    object-is           651.0053+-38.8204    ^    241.3467+-15.8753       ^ definitely 2.6974x faster

* assembler/MacroAssembler.h:
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::compareDouble):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::compareDouble): Deleted.
* assembler/testmasm.cpp:
(JSC::doubleOperands):
(JSC::testCompareDouble):
(JSC::run):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupCompareStrictEqAndSameValue):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileSameValue):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGValidate.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileSameValue):
* runtime/Intrinsic.cpp:
(JSC::intrinsicName):
* runtime/Intrinsic.h:
* runtime/ObjectConstructor.cpp:

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

2 years agoUse default std::optional if it is provided
utatane.tea@gmail.com [Wed, 2 May 2018 04:32:33 +0000 (04:32 +0000)]
Use default std::optional if it is provided
https://bugs.webkit.org/show_bug.cgi?id=185159

Reviewed by JF Bastien.

Source/WebCore:

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::iceServersFromConfiguration):
(WebCore::RTCPeerConnection::setConfiguration):
* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseSystemColor):
* css/parser/CSSParser.h:
* dom/DatasetDOMStringMap.cpp:
(WebCore::DatasetDOMStringMap::item const):
(WebCore::DatasetDOMStringMap::namedItem const):
(WebCore:: const): Deleted.
* dom/DatasetDOMStringMap.h:
* dom/Element.cpp:
(WebCore::Element::insertAdjacentHTML):
* dom/Element.h:
* inspector/DOMEditor.cpp:
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::getPostData):
(): Deleted.
* platform/network/curl/CurlFormDataStream.h:
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMFactory::keysForSessionWithID const):
(WebCore::MockCDMInstance::updateLicense):
(WebCore:: const): Deleted.
* testing/MockCDMFactory.h:

Source/WebKit:

* Shared/SandboxExtension.h:
(WebKit::SandboxExtension::Handle::decode):
* Shared/TouchBarMenuItemData.cpp:
(WebKit::TouchBarMenuItemData::decode):

Source/WTF:

Now C++17 flag is enabled. It means that any standard libraries can use <optional> internally.
If we define std::optional regardless of the existence of the standard library's <optional>,
it causes compile errors. For example, in GCC 7 (specifically GCC 7.3.0) environment,
<optional> is included in <unordered_map>.
We do not define std::optional in WebKit side if <optional> is offered.

And we also remove std::optional<T&> use since this is not accepted in C++17. Use
std::optional<std::reference_wrapper<T>> instead.

* wtf/Expected.h:
constexpr does not mean const in C++17.

* wtf/Optional.h:
Do not define std::optional if <optional> is provided.

(WTF::valueOrCompute):

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

2 years agoPSON: Make WebKitTestRunner work with process swap on navigation turned on
rniwa@webkit.org [Wed, 2 May 2018 04:05:41 +0000 (04:05 +0000)]
PSON: Make WebKitTestRunner work with process swap on navigation turned on
https://bugs.webkit.org/show_bug.cgi?id=185111

Reviewed by Chris Dumez.

Add the basic support for running layout tests with process-swap-on-navigation turned on.

First, move m_whatToDump, m_dumpPixels, m_waitToDump, and m_dumpFrameLoadCallbacks from WebContent process
to UI process so that calls to waitUntilDone, dumpAsText, etc... persist across process swaps.

In addition, initialize the injected bundle inside a new WebContent process when the first page is created.
This instantiates objects such as TestRunner, GCController, etc... in the new process. The initialization
can't be done in InjectedBundle::beginTesting because some steps in InjectedBundle::initialize require
the current PageGroup and Page objects. We avoid clearing databases and app cache in this case.

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didCreatePage): Send "Initialization" message to UI process. This message returns
all the dictionary values usually present in "BeginTest" message from UI process as well as "ResumeTesting"
boolean which is set when this process was created as a result of a process swap on navgation. Invoke
beginTesting with BegingTestingMode::Resume when this boolean is set.
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::beginTesting): Don't clear database, app cache, etc... when initializing an injected
bundle after a process swap on navigation.
* WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::dump):
(WTR::InjectedBundlePage::frameDidChangeLocation):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::TestRunner):
(WTR::TestRunner::shouldDumpPixels const): Added.
(WTR::TestRunner::setDumpPixels): Added.
(WTR::TestRunner::dumpAsText):
(WTR::TestRunner::whatToDump const): Added.
(WTR::TestRunner::setWhatToDump): Added.
(WTR::TestRunner::waitUntilDone):
(WTR::TestRunner::setWaitUntilDone): Added.
(WTR::TestRunner::shouldWaitUntilDone): Added.
(WTR::TestRunner::notifyDone):
(WTR::TestRunner::forceImmediateCompletion):
(WTR::TestRunner::setShouldDumpFrameLoadCallbacks): Added.
(WTR::TestRunner::shouldDumpFrameLoadCallbacks): Added.
(WTR::TestRunner::setAudioResult):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::dumpChildFramesAsText):
(WTR::TestRunner::dumpDOMAsWebArchive):
(WTR::TestRunner::setShouldDumpFrameLoadCallbacks): Moved to cpp.
(WTR::TestRunner::whatToDump const): Moved to cpp.
(WTR::TestRunner::shouldDumpMainFrameScrollPosition const):
(WTR::TestRunner::shouldDumpPixels const): Moved to cpp.
(WTR::TestRunner::shouldDumpFrameLoadCallbacks const): Moved to cpp.
(WTR::TestRunner::waitToDump const): Renamed to shouldWaitUntilDone and moved to cpp.
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::TestInvocation): Initialize m_dumpFrameLoadCallbacks here.
(WTR::TestInvocation::shouldLogFrameLoadDelegates const): Deleted.
(WTR::TestInvocation::createTestSettingsDictionary): Extracted from invoke().
(WTR::TestInvocation::invoke): Sets m_startedTesting to true immediately afte sending "BeginTest" message.
m_startedTesting is later used in didReceiveSynchronousMessageFromInjectedBundle to detect whether a given
"Initialization" message is sent from a regular WebContent process (m_startedTesting is false) or the one
started as a result of a process swap on navigation (m_startedTesting is true).
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): Added a bunch of new messgaes to
support initializing the injected bundle in a process swapped after navigation and set/get messages for
the states which must persist across process swaps within a test.
* WebKitTestRunner/TestInvocation.h:
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* Tools/WebKitTestRunner/WhatToDump.h:
(WTR::WhatToDump): Added.

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

2 years agoAdd release assertions in CFNetwork's SocketStreamHandleImpl to help debug a threadin...
cdumez@apple.com [Wed, 2 May 2018 03:33:55 +0000 (03:33 +0000)]
Add release assertions in CFNetwork's SocketStreamHandleImpl to help debug a threading issue
https://bugs.webkit.org/show_bug.cgi?id=185181

Reviewed by Geoffrey Garen.

Add release assertions in CFNetwork's SocketStreamHandleImpl to help debug a threading issue
on iOS WebKitLegacy (Bug 185073). It appears readStreamCallback() can get called on the UIThread,
which should not be possible if scheduleStreams() was called on the WebThread, as it is supposed
to. The new release assertion in scheduleStreams() should tell us if somebody is calling it from
the UIthread instead of the WebThread on iOS WebKitLegacy.

* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::scheduleStreams):
(WebCore::SocketStreamHandleImpl::readStreamCallback):

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

2 years agoUnreviewed, remove an unused variable in RuntimeEnabledFeatures.h
wenson_hsieh@apple.com [Wed, 2 May 2018 00:01:49 +0000 (00:01 +0000)]
Unreviewed, remove an unused variable in RuntimeEnabledFeatures.h

* page/RuntimeEnabledFeatures.h:

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

2 years agoAuto save the results for Test262
commit-queue@webkit.org [Tue, 1 May 2018 23:38:40 +0000 (23:38 +0000)]
Auto save the results for Test262
https://bugs.webkit.org/show_bug.cgi?id=184926

Patch by Leo Balter <leonardo.balter@gmail.com> on 2018-05-01
Reviewed by Michael Saboff.
Tools:

* Scripts/test262/Runner.pm:
(processCLI):
(main):
(parseError):
(processResult):
(summarizeResults):
* Scripts/test262/config.yaml: Renamed from Tools/Scripts/test262/test262-config.yaml.

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

2 years agoWeb Inspector: Canvas tab: determine hasVisibleEffect for all actions immediately...
webkit@devinrousso.com [Tue, 1 May 2018 23:37:59 +0000 (23:37 +0000)]
Web Inspector: Canvas tab: determine hasVisibleEffect for all actions immediately after recording is added
https://bugs.webkit.org/show_bug.cgi?id=182995

Reviewed by Matt Baker.

Source/WebInspectorUI:

Previously, we'd swizzle the entirety of the `WI.Recording` in one, which would usually
freeze the UI, especially for larger recordings. This patch uses `WI.YieldableTask` to split
the work and allow the rest of the UI to still be usable while `WI.Recording` are processing.
Additionally, since we no longer have to worry about hangs, we can do more work upfront,
such as calculating `hasVisibleEffect` and the current state of 2D canvases.

These changes require that all uses of `WI.Recording` call `process()` before attempting to
use any `frames`/`actions`/`initialState`, as they will have their original payload values
and will have not been swizzled or applied.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.process):
(WI.Recording.prototype.createContext): Added.
(WI.Recording.prototype.async yieldableTaskWillProcessItem): Added.
(WI.Recording.prototype.async yieldableTaskDidFinish): Added.

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.process): Added.
(WI.RecordingAction.prototype.async swizzle): Added.
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.set state): Deleted.
(WI.RecordingAction.prototype.swizzle): Deleted.
(WI.RecordingAction.prototype.apply.getContent): Deleted.
(WI.RecordingAction.prototype.async _swizzle): Deleted.
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):

* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner):

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype.onattach):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged): Deleted.

* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._generateContentCanvas2D): Added.
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Added.
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._updateProcessProgress): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Added.
(WI.RecordingContentView.supportsCanvasPathDebugging): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvas2D): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvasWebGL): Deleted.

* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):

* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.supportsCanvasPathDebugging):

LayoutTests:

* inspector/canvas/resources/recording-utilities.js:

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

2 years agoProduction build error in Migrate Header phase when WK_ALTERNATE_FRAMEWORKS_DIR is...
jer.noble@apple.com [Tue, 1 May 2018 22:19:46 +0000 (22:19 +0000)]
Production build error in Migrate Header phase when WK_ALTERNATE_FRAMEWORKS_DIR is set to non-empty value
https://bugs.webkit.org/show_bug.cgi?id=185171

Reviewed by Timothy Hatcher.

* Configurations/BaseTarget.xcconfig:

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

2 years agoFix build error after r231194
gskachkov@gmail.com [Tue, 1 May 2018 21:27:06 +0000 (21:27 +0000)]
Fix build error after r231194
https://bugs.webkit.org/show_bug.cgi?id=185169

Reviewed by JF Bastien.

Prevent compile error in iOS Simulator debug build
by tagging function

* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):

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

2 years agowebkitpy: SIGKILL right after SIGTERM causes orphaned processes with 'xcrun simctl...
jbedard@apple.com [Tue, 1 May 2018 20:53:34 +0000 (20:53 +0000)]
webkitpy: SIGKILL right after SIGTERM causes orphaned processes with 'xcrun simctl spawn'
https://bugs.webkit.org/show_bug.cgi?id=185164

Reviewed by David Kilzer.

* Scripts/webkitpy/common/system/executive.py:
(Executive.kill_process): First attempt will always send a SIGTERM, all subsequent attempts will
send a SIGKILL. A SIGKILL with not be sent if the process is not running to avoid orphaning childen.

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

2 years agoREGRESSION (r230919): API test WebKit.AutoLayoutIntegration is a flaky failure
cdumez@apple.com [Tue, 1 May 2018 20:40:22 +0000 (20:40 +0000)]
REGRESSION (r230919): API test WebKit.AutoLayoutIntegration is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=184918
<rdar://problem/39705516>

Reviewed by Wenson Hsieh.

Make sure provisional load has started before calling beginLayoutAtMinimumWidth
on the AutoLayoutWKWebView to restore pre-r230919 behavior. The load now starts
asynchronously because we ask the client if it is OK to do the load and the policy
delegates are asynchronous nowadays.

* TestWebKitAPI/Tests/WebKitCocoa/AutoLayoutIntegration.mm:
(-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]):
* TestWebKitAPI/cocoa/TestNavigationDelegate.h:
* TestWebKitAPI/cocoa/TestNavigationDelegate.mm:
(-[TestNavigationDelegate webView:didStartProvisionalNavigation:]):
(-[TestNavigationDelegate waitForDidStartProvisionalNavigation]):
(-[WKWebView _test_waitForDidStartProvisionalNavigation]):

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

2 years agoProtect against changes to CoreMedia function signatures
jer.noble@apple.com [Tue, 1 May 2018 20:37:31 +0000 (20:37 +0000)]
Protect against changes to CoreMedia function signatures
https://bugs.webkit.org/show_bug.cgi?id=185167

Reviewed by Eric Carlson.

* pal/cf/CoreMediaSoftLink.cpp:
* pal/cf/CoreMediaSoftLink.h:

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

2 years ago[WinCairo] Align buildbot test stages with AppleWin.
ross.kirsling@sony.com [Tue, 1 May 2018 19:57:28 +0000 (19:57 +0000)]
[WinCairo] Align buildbot test stages with AppleWin.
https://bugs.webkit.org/show_bug.cgi?id=185094

Reviewed by Brent Fulgham.

* BuildSlaveSupport/build.webkit.org-config/factories.py:
(TestFactory.__init__):
Do run API tests, don't run dashboard tests.

* BuildSlaveSupport/build.webkit.org-config/steps.py:
(RunUnitTests):
Call run-api-tests with Python, not Perl (bugfix for r230998).

* Scripts/webkitpy/port/win.py:
(WinPort.environment_for_api_tests):
Retrieve necessary Windows environment variables.

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

2 years agoUse correct runloop type in the WebContent process.
pvollan@apple.com [Tue, 1 May 2018 19:57:17 +0000 (19:57 +0000)]
Use correct runloop type in the WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=185140

Reviewed by Brent Fulgham.

Use WK_MACOS_* machinery to determine runloop type for the WebContent process.

* Configurations/WebContentService.xcconfig:

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

2 years agoB3::demoteValues should be able to handle patchpoint terminals
fpizlo@apple.com [Tue, 1 May 2018 19:55:59 +0000 (19:55 +0000)]
B3::demoteValues should be able to handle patchpoint terminals
https://bugs.webkit.org/show_bug.cgi?id=185151

Reviewed by Saam Barati.

If we try to demote a patchpoint terminal then prior to this change we would append a Set to
the basic block that the patchpoint terminated. That's wrong because then the terminal is no
longer the last thing in the block.

Air encounters this problem in spilling and solves it by doing a fixup afterwards. We can't
really do that because demotion happens as a prerequisite to other transformations.

One solution might have been to make demoteValues insert a basic block whenever it encounters
this problem. But that would break clients that do CFG analysis before demoteValues and use
the results of the CFG analysis after demoteValues. Taildup does this. Fortunately, taildup
also runs breakCriticalEdges. Probably anyone using demoteValues will use breakCriticalEdges,
so it's not bad to introduce that requirement.

So, this patch solves the problem by ensuring that breakCriticalEdges treats any patchpoint
terminal as if it had multiple successors. This means that a patchpoint terminal's successors
will only have it as their predecessor. Then, demoteValues just prepends the Set to the
successors of the patchpoint terminal.

This was probably asymptomatic. It's hard to write a JS test that triggers this, so I added
a unit test in testb3.

* b3/B3BreakCriticalEdges.cpp:
(JSC::B3::breakCriticalEdges):
* b3/B3BreakCriticalEdges.h:
* b3/B3FixSSA.cpp:
(JSC::B3::demoteValues):
(JSC::B3::fixSSA):
* b3/B3FixSSA.h:
* b3/B3Value.cpp:
(JSC::B3::Value::foldIdentity const):
(JSC::B3::Value::performSubstitution):
* b3/B3Value.h:
* b3/testb3.cpp:
(JSC::B3::testDemotePatchpointTerminal):
(JSC::B3::run):

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

2 years agoUnreviewed test gardening, correct a typo in the iOS TestExpectation file.
ryanhaddad@apple.com [Tue, 1 May 2018 19:45:34 +0000 (19:45 +0000)]
Unreviewed test gardening, correct a typo in the iOS TestExpectation file.

* platform/ios/TestExpectations:

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

2 years agoRebaseline tests after r231165.
ryanhaddad@apple.com [Tue, 1 May 2018 19:45:31 +0000 (19:45 +0000)]
Rebaseline tests after r231165.
https://bugs.webkit.org/show_bug.cgi?id=185166

Unreviewed test gardening.

* animations/font-variations/font-variation-settings-expected.txt:
* animations/font-variations/font-variation-settings-order-expected.txt:
* animations/font-variations/font-variation-settings-order.html:
* animations/font-variations/font-variation-settings.html:
* legacy-animation-engine/animations/font-variations/font-variation-settings-expected.txt:
* legacy-animation-engine/animations/font-variations/font-variation-settings-order-expected.txt:
* legacy-animation-engine/animations/font-variations/font-variation-settings-order.html:
* legacy-animation-engine/animations/font-variations/font-variation-settings.html:
* platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt: Added.
* platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt: Added.
* platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt: Added.

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

2 years ago[MediaStream] remove WK1 support
eric.carlson@apple.com [Tue, 1 May 2018 17:27:13 +0000 (17:27 +0000)]
[MediaStream] remove WK1 support
https://bugs.webkit.org/show_bug.cgi?id=185136

Reviewed by Youenn Fablet.

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebUserMediaClient.h: Removed.
* WebCoreSupport/WebUserMediaClient.mm: Removed.
* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _preferencesChanged:]):
(-[WebView _setUserMediaClient:]): Deleted.
(-[WebView _userMediaClient]): Deleted.
* WebView/WebViewData.h:
* WebView/WebViewPrivate.h:

Tools:

* DumpRenderTree/mac/UIDelegate.mm:
(-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Deleted.

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

2 years ago[WKTR] Move navigation policy for response decision from InjectedBundle to UIProcess
cdumez@apple.com [Tue, 1 May 2018 17:09:06 +0000 (17:09 +0000)]
[WKTR] Move navigation policy for response decision from InjectedBundle to UIProcess
https://bugs.webkit.org/show_bug.cgi?id=185157

Reviewed by Geoffrey Garen.

Move navigation policy for response decision from InjectedBundle to UIProcess. This is a more
common configuration and should therefore be the configuration we test by default.

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::decidePolicyForResponse):

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

2 years agoUse CheckedArithmetic for length computation in JSArray::unshiftCountWithAnyIndexingType
rmorisset@apple.com [Tue, 1 May 2018 16:03:54 +0000 (16:03 +0000)]
Use CheckedArithmetic for length computation in JSArray::unshiftCountWithAnyIndexingType
https://bugs.webkit.org/show_bug.cgi?id=184772
<rdar://problem/39146327>

Reviewed by Filip Pizlo.

Related to https://bugs.webkit.org/show_bug.cgi?id=183657 (<rdar://problem/38464399), where a check was missing.
This patch now makes sure that the check correctly detects if there is an integer overflow.

* runtime/JSArray.cpp:
(JSC::JSArray::unshiftCountWithAnyIndexingType):

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

2 years agoCorrectly detect string overflow when using the 'Function' constructor
rmorisset@apple.com [Tue, 1 May 2018 16:01:25 +0000 (16:01 +0000)]
Correctly detect string overflow when using the 'Function' constructor
https://bugs.webkit.org/show_bug.cgi?id=184883
<rdar://problem/36320331>

Reviewed by Filip Pizlo.

JSTests:

I put this regression test in the 'slowMicrobenchmarks' directory because it takes nearly 30s to run, and I am not sure where else to put it.

* slowMicrobenchmarks/function-constructor-with-huge-strings.js: Added.
(catch):

Source/JavaScriptCore:

The 'Function' constructor creates a string containing the source code of the new function through repeated string concatenation.
Because there was no way for the string concatenation routines in WTF to return an error, they just crashed in that case.

I added new tryAppend methods alongside the old append methods, that return a boolean (true means success, false means an overflow happened).
In this way, it becomes possible for the Function constructor to just throw a proper JS exception when asked to create a string > 4GB.
I made new methods instead of just adapting the existing ones (and reverted such a change on appendQuotedJSONString) so that callers that rely on the old behaviour (a hard CRASH() on overflow) don't silently start failing.

* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/JSONObject.cpp:
(JSC::Stringifier::appendStringifiedValue):

Source/WTF:

I added new tryAppend methods alongside the old append methods in StringBuilder, that return a boolean (true means success, false means an overflow happened).
I made new methods instead of just adapting the existing ones (and reverted such a change on appendQuotedJSONString) so that callers that rely on the old behaviour (a hard CRASH() on overflow) don't silently start failing.

* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::allocateBufferUpConvert):
(WTF::StringBuilder::tryAllocateBufferUpConvert):
(WTF::StringBuilder::appendUninitialized):
(WTF::StringBuilder::append):
(WTF::StringBuilder::tryAppend):
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::tryAppend):
(WTF::StringBuilder::append):
(WTF::StringBuilder::tryAppendLiteral):
* wtf/text/StringBuilderJSON.cpp:
(WTF::StringBuilder::appendQuotedJSONString):
(WTF::StringBuilder::tryAppendQuotedJSONString):

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

2 years agoIntlObject.cpp::removeUnicodeLocaleExtension() should not touch locales that end...
rmorisset@apple.com [Tue, 1 May 2018 15:47:29 +0000 (15:47 +0000)]
IntlObject.cpp::removeUnicodeLocaleExtension() should not touch locales that end in '-u'
https://bugs.webkit.org/show_bug.cgi?id=185162

Reviewed by Filip Pizlo.

JSTests:

* stress/incomplete-unicode-locale.js: Added.
(catch):

Source/JavaScriptCore:

* runtime/IntlObject.cpp:
(JSC::removeUnicodeLocaleExtension):

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

2 years agoAdd SetCallee as DFG-Operation
commit-queue@webkit.org [Tue, 1 May 2018 15:42:11 +0000 (15:42 +0000)]
Add SetCallee as DFG-Operation
https://bugs.webkit.org/show_bug.cgi?id=184582

Patch by Dominik Infuehr <dinfuehr@igalia.com> on 2018-05-01
Reviewed by Filip Pizlo.

JSTests:

Added test that runs into infinite loop without updating the callee and
therefore emitting SetCallee in DFG for recursive tail calls.

* stress/closure-recursive-tail-call-infinite-loop.js: Added.
(Foo):
(second):
(first):
(return.closure):
(createClosure):

Source/JavaScriptCore:

For recursive tail calls not only the argument count can change but also the
callee. Add SetCallee to DFG that sets the callee slot in the current call frame.
Also update the callee when optimizing a recursive tail call.
Enable recursive tail call optimization also for closures.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleRecursiveTailCall):
(JSC::DFG::ByteCodeParser::handleCallVariant):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGMayExit.cpp:
* dfg/DFGNodeType.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileSetCallee):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileSetCallee):

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

2 years agoWebAssembly: add support for stream APIs - JavaScript API
gskachkov@gmail.com [Tue, 1 May 2018 08:47:56 +0000 (08:47 +0000)]
WebAssembly: add support for stream APIs - JavaScript API
https://bugs.webkit.org/show_bug.cgi?id=183442

Reviewed by Yusuke Suzuki and JF Bastien.

* Source/cmake/WebKitFeatures.cmake:

LayoutTests/imported/w3c:

* web-platform-tests/wasm/resources/incrementer.no_mime_type.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wasm.headers: Added.
* web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm.headers: Added.
* web-platform-tests/wasm/wasm_stream_compile_test-expected.txt: Added.
* web-platform-tests/wasm/wasm_stream_compile_test.html: Added.
* web-platform-tests/wasm/wasm_stream_instantiate_test-expected.txt: Added.
* web-platform-tests/wasm/wasm_stream_instantiate_test.html: Added.

Source/JavaScriptCore:

Add WebAssembly stream API. Current patch only add functions
WebAssembly.compileStreaming and WebAssembly.instantiateStreaming but,
does not add streaming way of the implementation. So in current version it
only wait for load whole module, than start to parse.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* builtins/BuiltinNames.h:
* builtins/WebAssemblyPrototype.js: Copied from Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h.
(compileStreaming):
(instantiateStreaming):
* jsc.cpp:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSGlobalObject.h:
* runtime/Options.h:
* runtime/PromiseDeferredTimer.cpp:
(JSC::PromiseDeferredTimer::hasPendingPromise):
(JSC::PromiseDeferredTimer::hasDependancyInPendingPromise):
* runtime/PromiseDeferredTimer.h:
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::webAssemblyCompileFunc):
(JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):
(JSC::WebAssemblyPrototype::create):
(JSC::WebAssemblyPrototype::finishCreation):
* wasm/js/WebAssemblyPrototype.h:

Source/WebCore:

Add WebAssembly streaming API to WebCore.

* Configurations/FeatureDefines.xcconfig:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::tryAllocate):
(WebCore::isResponseCorrect):
(WebCore::handleResponseOnStreamingAction):
(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSRemoteDOMWindowBase.cpp:
* bindings/js/JSWorkerGlobalScopeBase.cpp:

Source/WebCore/PAL:

Add WEBASSEMBLY_STREAMING_API feature flag

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Add WEBASSEMBLY_STREAMING_API feature flag

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

Add WEBASSEMBLY_STREAMINNG_API feature flag

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
Oleksandrs-MacBook-Pro:WebKit developer$ Tools/Scripts/commit-log-editor --print-log ChangeLog LayoutTests/ChangeLog  LayoutTests/imported/w3c/ChangeLog Source/JavaScriptCore/ChangeLog Source/WebCore/ChangeLog Source/WebCore/PAL/ChangeLog Source/WebKit/ChangeLog Source/WebKitLegacy/mac/ChangeLog Tools/ChangeLog
WebAssembly: add support for stream APIs - JavaScript API
https://bugs.webkit.org/show_bug.cgi?id=183442

Reviewed by Yusuke Suzuki and JF Bastien.

* Source/cmake/WebKitFeatures.cmake:

LayoutTests/imported/w3c:

* web-platform-tests/wasm/resources/incrementer.no_mime_type.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wasm.headers: Added.
* web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm: Added.
* web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm.headers: Added.
* web-platform-tests/wasm/wasm_stream_compile_test-expected.txt: Added.
* web-platform-tests/wasm/wasm_stream_compile_test.html: Added.
* web-platform-tests/wasm/wasm_stream_instantiate_test-expected.txt: Added.
* web-platform-tests/wasm/wasm_stream_instantiate_test.html: Added.

Source/JavaScriptCore:

Add WebAssembly stream API. Current patch only add functions
WebAssembly.compileStreaming and WebAssembly.instantiateStreaming but,
does not add streaming way of the implementation. So in current version it
only wait for load whole module, than start to parse.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* builtins/BuiltinNames.h:
* builtins/WebAssemblyPrototype.js: Copied from Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h.
(compileStreaming):
(instantiateStreaming):
* jsc.cpp:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSGlobalObject.h:
* runtime/Options.h:
* runtime/PromiseDeferredTimer.cpp:
(JSC::PromiseDeferredTimer::hasPendingPromise):
(JSC::PromiseDeferredTimer::hasDependancyInPendingPromise):
* runtime/PromiseDeferredTimer.h:
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::webAssemblyCompileFunc):
(JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):
(JSC::WebAssemblyPrototype::create):
(JSC::WebAssemblyPrototype::finishCreation):
* wasm/js/WebAssemblyPrototype.h:

Source/WebCore:

Add WebAssembly streaming API to WebCore.

* Configurations/FeatureDefines.xcconfig:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::tryAllocate):
(WebCore::isResponseCorrect):
(WebCore::handleResponseOnStreamingAction):
(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSRemoteDOMWindowBase.cpp:
* bindings/js/JSWorkerGlobalScopeBase.cpp:

Source/WebCore/PAL:

Add WEBASSEMBLY_STREAMING_API feature flag

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Add WEBASSEMBLY_STREAMING_API feature flag

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

Add WEBASSEMBLY_STREAMINNG_API feature flag

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:

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

2 years agoToString constant folds without preserving checks, causing us to break assumptions...
sbarati@apple.com [Tue, 1 May 2018 06:04:33 +0000 (06:04 +0000)]
ToString constant folds without preserving checks, causing us to break assumptions that the code would OSR exit
https://bugs.webkit.org/show_bug.cgi?id=185149
<rdar://problem/39455917>

Reviewed by Filip Pizlo.

JSTests:

* stress/keep-checks-when-converting-to-lazy-js-constant-in-strength-reduction.js: Added.

Source/JavaScriptCore:

The bug was that we were deleting checks that we shouldn't have deleted.
This patch makes a helper inside strength reduction that converts to
a LazyJSConstant while maintaining checks, and switches users of the
node API inside strength reduction to instead call the helper function.

This patch also fixes a potential bug where StringReplace and
StringReplaceRegExp may not preserve all their checks.

* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
(JSC::DFG::StrengthReductionPhase::convertToLazyJSValue):

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

2 years agoUse correct runloop type in the WebContent process.
pvollan@apple.com [Tue, 1 May 2018 02:22:02 +0000 (02:22 +0000)]
Use correct runloop type in the WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=185140
<rdar://problem/39585037>

Reviewed by Brent Fulgham.

The macOS target version should be used to determine the runloop type.

* Configurations/WebContentService.xcconfig:

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

2 years agoUnreviewed test gardening
jiewen_tan@apple.com [Tue, 1 May 2018 01:31:00 +0000 (01:31 +0000)]
Unreviewed test gardening

Update test expectations since the crash reported on Bug 177828 is no longer reproducible.

* platform/mac-wk2/TestExpectations:

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

2 years agoEliminate WebProcessShim.dylib
msaboff@apple.com [Tue, 1 May 2018 01:19:16 +0000 (01:19 +0000)]
Eliminate WebProcessShim.dylib
https://bugs.webkit.org/show_bug.cgi?id=185147

Reviewed by Ryosuke Niwa.

* Configurations/WebContentService.xcconfig:
* Configurations/WebProcessShim.xcconfig: Removed.
* WebKit.xcodeproj/project.pbxproj:

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

2 years agoRemove unused mac/CookieStorageShimLibrary
msaboff@apple.com [Tue, 1 May 2018 00:42:31 +0000 (00:42 +0000)]
Remove unused mac/CookieStorageShimLibrary
https://bugs.webkit.org/show_bug.cgi?id=185146

Reviewed by Alex Christensen.

* Shared/mac/CookieStorageShimLibrary.cpp: Removed.
* Shared/mac/CookieStorageShimLibrary.h: Removed.
* WebKit.xcodeproj/project.pbxproj:

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

2 years agoAdd tests for selection in content editable
megan_gardner@apple.com [Tue, 1 May 2018 00:35:16 +0000 (00:35 +0000)]
Add tests for selection in content editable
https://bugs.webkit.org/show_bug.cgi?id=185144

Reviewed by Wenson Hsieh.

Tests that should cover selection in content editable, both with and without a keyboard present. Also fixing two tests that had errors.

* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text.html: Added.
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-left-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-left-to-change-selected-text.html: Added.
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text.html: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-down-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-down-to-change-selected-text.html: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-left-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-left-to-change-selected-text.html: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-right-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-right-to-change-selected-text.html: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-up-to-change-selected-text-expected.txt: Added.
* fast/events/touch/ios/long-press-on-editable-content-then-drag-up-to-change-selected-text.html: Added.
* fast/events/touch/ios/long-press-then-drag-right-to-change-selected-text.html:
* fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:

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

2 years agoImprove the performance of FontCascadeDescription's effectiveFamilies
mmaxfield@apple.com [Tue, 1 May 2018 00:23:24 +0000 (00:23 +0000)]
Improve the performance of FontCascadeDescription's effectiveFamilies
https://bugs.webkit.org/show_bug.cgi?id=184720
PerformanceTests:

Reviewed by Simon Fraser.

This performance test calls SystemFontDatabase::systemFontCascadeList() around 2,000,000 times (before
this patch is applied), which is roughly equivalent to the page we found the performance problem on.
The calling pattern is roughly equivalent in this test.

* Layout/system-ui.html: Added.

Source/WebCore:

<rdar://problem/38970927>

Reviewed by Simon Fraser.

The page that had the performance problem renders many different Chinese characters in system-ui
with only a small number of individual fonts. It turns out we were calling into the system-ui
machinery for each character in order to opportunistically start loading data URLs (see also:
https://bugs.webkit.org/show_bug.cgi?id=175845). These data URLS will never represent the system
font, so we don't need to invoke the system-ui machinery at all.

This patch makes a 92x performance improvement on the associated performance test. This test is
designed to test Chinese text rendered with system-ui.

Performance test: Layout/system-ui.html

* platform/graphics/FontCascadeFonts.cpp:
(WebCore::opportunisticallyStartFontDataURLLoading):

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

2 years agoLICM shouldn't hoist nodes if hoisted nodes exited in that code block
fpizlo@apple.com [Tue, 1 May 2018 00:04:44 +0000 (00:04 +0000)]
LICM shouldn't hoist nodes if hoisted nodes exited in that code block
https://bugs.webkit.org/show_bug.cgi?id=185126

Reviewed by Saam Barati.

JSTests:

I found this bug by accident when I was writing this test for something else.

This change also speeds up other benchmarks of this case that we already had. They are all called
the licm-dragons tests.

* microbenchmarks/licm-dragons-two-structures.js: Added.
(foo):

Source/JavaScriptCore:

This change is just restoring functionality that we've already had for a while. It had been
accidentally broken due to an unrelated CodeBlock refactoring.

* dfg/DFGLICMPhase.cpp:
(JSC::DFG::LICMPhase::attemptHoist):

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

2 years agoCreating a custom analysis task after fetching all analysis tasks fail
rniwa@webkit.org [Mon, 30 Apr 2018 23:56:21 +0000 (23:56 +0000)]
Creating a custom analysis task after fetching all analysis tasks fail
https://bugs.webkit.org/show_bug.cgi?id=184641

Reviewed by Saam Barati.

The bug was caused by AnalysisTask._fetchSubset not fetching the analysis task when all analysis tasks
had previously been fetched (AnlaysisTask._fetchAllPromise is set) even when noCache is set to true.
Fixed it by ignornig _fetchAllPromise when noCache is set to true.

This patch also adds noCache argument to AnalysisTask.fetchById and reverts the inadvertent change in
r226836 to always set noCache to true in this function.

* public/v3/models/analysis-task.js:
(AnalysisTask.fetchById): Added noCache argument instead of always specifying true, and modernized the code.
(AnalysisTask._fetchSubset): Fixed the bug. See above description.
* public/v3/models/test-group.js:
(TestGroup.createWithTask): Set noCache to true when calling AnalysisTask.fetchById here.
* unit-tests/analysis-task-tests.js: Added test cases for AnalysisTask.fetchById, including a test
to make sure it doesn't fetch the specified analysis task when noCache is set to false and all analysis
tasks had previously been fetched for the aforementioned revert of the inadvertent change in r226836.
(sampleAnalysisTasks): Renamed from sampleAnalysisTasks as the result contains multiple analysis tasks.
* unit-tests/test-groups-tests.js: Added a test case for TestGroup.createWithTask

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

2 years agoREGRESSION(r230960): Browser tests under TimeSeriesChart fetchMeasurementSets all...
rniwa@webkit.org [Mon, 30 Apr 2018 23:43:45 +0000 (23:43 +0000)]
REGRESSION(r230960): Browser tests under TimeSeriesChart fetchMeasurementSets all fail
https://bugs.webkit.org/show_bug.cgi?id=185125

Reviewed by Saam Barati.

The bug was caused by mock-remote-api.js always loading PrivilegedAPI using require, which doesn't work in a browser.
Fixed the bug by explicitly requiring the right kind of PrivilegedAPI in each unit test instead.

* unit-tests/analysis-task-tests.js:
* unit-tests/buildbot-syncer-tests.js:
* unit-tests/commit-log-tests.js:
* unit-tests/commit-set-range-bisector-tests.js:
* unit-tests/commit-set-tests.js:
* unit-tests/measurement-set-tests.js:
* unit-tests/privileged-api-tests.js:
* unit-tests/resources/mock-remote-api.js:
(MockRemoteAPI.inject): Take PrivilegedAPI instead of the type string. Also fixed a bug that _token wasn't unset
after each unit test, and superfluous initializations of originalRemoteAPI and originalPrivilegedAPI.
* unit-tests/test-groups-tests.js:

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

2 years ago<img src=mp4> does not display on ios despite Accept: video/* advertisement
jer.noble@apple.com [Mon, 30 Apr 2018 23:42:22 +0000 (23:42 +0000)]
<img src=mp4> does not display on ios despite Accept: video/* advertisement
https://bugs.webkit.org/show_bug.cgi?id=185029
<rdar://problem/39771989>

Reviewed by Eric Carlson.

Source/WebCore:

Returning "NO" from resourceLoader:shouldWaitForLoadingOfResource: signals that the load failed,
even if the resource request is successfully fulfilled prior to the return. Always return YES in
the case that loading succeeded.

* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(-[WebCoreSharedBufferResourceLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):

LayoutTests:

* platform/ios/TestExpectations:

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

2 years agoREGRESSION(r230914) Selecting text on this apple.com page makes it vanish
zalan@apple.com [Mon, 30 Apr 2018 23:16:42 +0000 (23:16 +0000)]
REGRESSION(r230914) Selecting text on this apple.com page makes it vanish
https://bugs.webkit.org/show_bug.cgi?id=185142
<rdar://problem/39821446>

Reviewed by Simon Fraser.

Source/WebCore:

Set the overflow rect on the inline textbox when needed.

Test: fast/text/simple-line-layout-selection-with-overflow.html

* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::initializeInlineTextBox):
(WebCore::SimpleLineLayout::generateLineBoxTree):
(WebCore::SimpleLineLayout::initializeInlineBox): Deleted.

LayoutTests:

* fast/text/simple-line-layout-selection-with-overflow-expected.html: Added.
* fast/text/simple-line-layout-selection-with-overflow.html: Added.

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

2 years agoApply PtrTags to the MetaAllocator and friends.
mark.lam@apple.com [Mon, 30 Apr 2018 22:29:21 +0000 (22:29 +0000)]
Apply PtrTags to the MetaAllocator and friends.
https://bugs.webkit.org/show_bug.cgi?id=185110
<rdar://problem/39533895>

Reviewed by Saam Barati.

Source/JavaScriptCore:

1. LinkBuffer now takes a MacroAssemblerCodePtr instead of a void* pointer.
2. Apply pointer tagging to the boundary pointers of the FixedExecutableMemoryPool,
   and add a sanity check to verify that allocated code buffers are within those
   bounds.

* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::finalizeCodeWithoutDisassemblyImpl):
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::debugAddress):
(JSC::LinkBuffer::code):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* bytecode/InlineAccess.cpp:
(JSC::linkCodeInline):
(JSC::InlineAccess::rewireStubAsJump):
* dfg/DFGJITCode.cpp:
(JSC::DFG::JITCode::findPC):
* ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::findPC):
* jit/ExecutableAllocator.cpp:
(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):
(JSC::ExecutableAllocator::allocate):
* jit/ExecutableAllocator.h:
(JSC::isJITPC):
(JSC::performJITMemcpy):
* jit/JIT.cpp:
(JSC::JIT::link):
* jit/JITMathIC.h:
(JSC::isProfileEmpty):
* runtime/JSCPtrTag.h:
* wasm/WasmCallee.cpp:
(JSC::Wasm::Callee::Callee):
* wasm/WasmFaultSignalHandler.cpp:
(JSC::Wasm::trapHandler):

Source/WTF:

1. Introduce a MetaAllocatorPtr smart pointer to do pointer tagging.
2. Use MetaAllocatorPtr in MetaAllocator and MetaAllocatorHandle.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocatorHandle::dump const):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::findAndRemoveFreeSpace):
(WTF::MetaAllocator::addFreeSpaceFromReleasedHandle):
(WTF::MetaAllocator::addFreshFreeSpace):
(WTF::MetaAllocator::debugFreeSpaceSize):
(WTF::MetaAllocator::addFreeSpace):
(WTF::MetaAllocator::allocFreeSpaceNode):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::FreeSpaceNode::FreeSpaceNode):
(WTF::MetaAllocator::FreeSpaceNode::sizeInBytes):
(WTF::MetaAllocator::FreeSpaceNode::key):
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::start const):
(WTF::MetaAllocatorHandle::end const):
(WTF::MetaAllocatorHandle::startAsInteger const):
(WTF::MetaAllocatorHandle::endAsInteger const):
(WTF::MetaAllocatorHandle::sizeInBytes const):
(WTF::MetaAllocatorHandle::containsIntegerAddress const):
(WTF::MetaAllocatorHandle::key):
* wtf/MetaAllocatorPtr.h: Added.
(WTF::MetaAllocatorPtr::MetaAllocatorPtr):
(WTF::MetaAllocatorPtr:: const):
(WTF::MetaAllocatorPtr::operator bool const):
(WTF::MetaAllocatorPtr::operator! const):
(WTF::MetaAllocatorPtr::operator== const):
(WTF::MetaAllocatorPtr::operator!= const):
(WTF::MetaAllocatorPtr::operator+ const):
(WTF::MetaAllocatorPtr::operator- const):
(WTF::MetaAllocatorPtr::operator+=):
(WTF::MetaAllocatorPtr::operator-=):
(WTF::MetaAllocatorPtr::isEmptyValue const):
(WTF::MetaAllocatorPtr::isDeletedValue const):
(WTF::MetaAllocatorPtr::hash const):
(WTF::MetaAllocatorPtr::emptyValue):
(WTF::MetaAllocatorPtr::deletedValue):
(WTF::MetaAllocatorPtrHash::hash):
(WTF::MetaAllocatorPtrHash::equal):
* wtf/PtrTag.h:

Tools:

Update the test to match MetaAllocator changes in WTF.

* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
(WTF::tagForPtr):
(WTF::ptrTagName):

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

2 years agoAdd WKUIDelegatePrivate equivalent of WKPageContextMenuClient getContextMenuFromPropo...
commit-queue@webkit.org [Mon, 30 Apr 2018 22:21:42 +0000 (22:21 +0000)]
Add WKUIDelegatePrivate equivalent of WKPageContextMenuClient getContextMenuFromProposedMenuAsync
https://bugs.webkit.org/show_bug.cgi?id=180955

Patch by Alex Christensen <achristensen@webkit.org> on 2018-04-30
Reviewed by Andy Estes.

Source/WebKit:

* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::menuFromProposedMenu):
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):

Tools:

* TestWebKitAPI/Tests/WebKit/mac/ContextMenuImgWithVideo.mm:
(-[ContextMenuImgWithVideoDelegate _webView:contextMenu:forElement:]):
(-[ContextMenuImgWithVideoDelegate _webView:getContextMenuFromProposedMenu:forElement:userInfo:completionHandler:]):

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

2 years agoMove the MayBePrototype JSCell header bit to InlineTypeFlags
keith_miller@apple.com [Mon, 30 Apr 2018 22:13:10 +0000 (22:13 +0000)]
Move the MayBePrototype JSCell header bit to InlineTypeFlags
https://bugs.webkit.org/show_bug.cgi?id=185143

Reviewed by Mark Lam.

* runtime/IndexingType.h:
* runtime/JSCellInlines.h:
(JSC::JSCell::setStructure):
(JSC::JSCell::mayBePrototype const):
(JSC::JSCell::didBecomePrototype):
* runtime/JSTypeInfo.h:
(JSC::TypeInfo::mayBePrototype):
(JSC::TypeInfo::mergeInlineTypeFlags):

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

2 years agoRemove unneeded exception check from String.fromCharCode
keith_miller@apple.com [Mon, 30 Apr 2018 21:38:26 +0000 (21:38 +0000)]
Remove unneeded exception check from String.fromCharCode
https://bugs.webkit.org/show_bug.cgi?id=185083

Reviewed by Mark Lam.

* runtime/StringConstructor.cpp:
(JSC::stringFromCharCode):

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

2 years agoUse some C++17 features
jfbastien@apple.com [Mon, 30 Apr 2018 21:17:59 +0000 (21:17 +0000)]
Use some C++17 features
https://bugs.webkit.org/show_bug.cgi?id=185135

Reviewed by Alex Christensen.

.:

As discussed here [0] let's move WebKit to a subset of C++17. We
now require GCC 6 [1] which means that, according to [2] we can
use the following C++17 language features (I removed some
uninteresting ones):

 - New auto rules for direct-list-initialization
 - static_assert with no message
 - typename in a template template parameter
 - Nested namespace definition
 - Attributes for namespaces and enumerators
 - u8 character literals
 - Allow constant evaluation for all non-type template arguments
 - Fold Expressions
 - Unary fold expressions and empty parameter packs
 - __has_include in preprocessor conditional
 - Differing begin and end types in range-based for
 - Improving std::pair and std::tuple

Consult the Tony Tables [3] to see before / after examples.

Of course we can use any library feature if we're willing to
import them to WTF (and they don't require language support).

  [0]: https://lists.webkit.org/pipermail/webkit-dev/2018-March/029922.html
  [1]: https://trac.webkit.org/changeset/231152/webkit
  [2]: https://en.cppreference.com/w/cpp/compiler_support
  [3]: https://github.com/tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md

* Source/cmake/WebKitCompilerFlags.cmake:

Source/WebCore:

As discussed here [0] let's move WebKit to a subset of C++17. We
now require GCC 6 [1] which means that, according to [2] we can
use the following C++17 language features (I removed some
uninteresting ones):

 - New auto rules for direct-list-initialization
 - static_assert with no message
 - typename in a template template parameter
 - Nested namespace definition
 - Attributes for namespaces and enumerators
 - u8 character literals
 - Allow constant evaluation for all non-type template arguments
 - Fold Expressions
 - Unary fold expressions and empty parameter packs
 - __has_include in preprocessor conditional
 - Differing begin and end types in range-based for
 - Improving std::pair and std::tuple

Consult the Tony Tables [3] to see before / after examples.

Of course we can use any library feature if we're willing to
import them to WTF (and they don't require language support).

  [0]: https://lists.webkit.org/pipermail/webkit-dev/2018-March/029922.html
  [1]: https://trac.webkit.org/changeset/231152/webkit
  [2]: https://en.cppreference.com/w/cpp/compiler_support
  [3]: https://github.com/tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md

* DerivedSources.make:
* platform/URLParser.cpp: work around an odd GCC 6 bug with class
  static value as a template parameter.
(WebCore::URLParser::percentDecode):
(WebCore::URLParser::domainToASCII):
(WebCore::URLParser::hasForbiddenHostCodePoint):
(WebCore::URLParser::parseHostAndPort):
* platform/URLParser.h:

Source/WebKit:

As discussed here [0] let's move WebKit to a subset of C++17. We
now require GCC 6 [1] which means that, according to [2] we can
use the following C++17 language features (I removed some
uninteresting ones):

 - New auto rules for direct-list-initialization
 - static_assert with no message
 - typename in a template template parameter
 - Nested namespace definition
 - Attributes for namespaces and enumerators
 - u8 character literals
 - Allow constant evaluation for all non-type template arguments
 - Fold Expressions
 - Unary fold expressions and empty parameter packs
 - __has_include in preprocessor conditional
 - Differing begin and end types in range-based for
 - Improving std::pair and std::tuple

Consult the Tony Tables [3] to see before / after examples.

Of course we can use any library feature if we're willing to
import them to WTF (and they don't require language support).

  [0]: https://lists.webkit.org/pipermail/webkit-dev/2018-March/029922.html
  [1]: https://trac.webkit.org/changeset/231152/webkit
  [2]: https://en.cppreference.com/w/cpp/compiler_support
  [3]: https://github.com/tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md

* Configurations/Base.xcconfig:
* DerivedSources.make:
* PlatformMac.cmake:

Source/WebKitLegacy:

* PlatformMac.cmake:

Source/WebKitLegacy/mac:

* Configurations/WebKitLegacy.xcconfig:

Source/WTF:

* wtf/StdLibExtras.h: libstdc++ doesn't say it's C++17 when it
defines std::conjunction. Use the feature test macro instead.

Tools:

* DumpRenderTree/PlatformMac.cmake:
* gtk/ycm_extra_conf.py:
(FlagsForFile):

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

2 years agoMeasurementSet._constructUrl should construct absolute url.
dewei_zhu@apple.com [Mon, 30 Apr 2018 21:06:05 +0000 (21:06 +0000)]
MeasurementSet._constructUrl should construct absolute url.
https://bugs.webkit.org/show_bug.cgi?id=185137

Reviewed by Ryosuke Niwa.

MeasurementSet._constructUrl should not construct an url with relative path.

* public/v3/models/measurement-set.js: Should use '/api/measurement-set...' and '/data/measurement-set-...'
for uncached and cached fetching.
* unit-tests/measurement-set-tests.js: Updated unit tests.
(const.set MeasurementSet):

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

2 years ago[Extra zoom mode] Respect the existing shrink-to-fit attribute instead of using min...
wenson_hsieh@apple.com [Mon, 30 Apr 2018 20:56:39 +0000 (20:56 +0000)]
[Extra zoom mode] Respect the existing shrink-to-fit attribute instead of using min-device-width
https://bugs.webkit.org/show_bug.cgi?id=185132
<rdar://problem/39834562>

Reviewed by Tim Horton.

Source/WebCore:

Removes the `min-device-width` attribute added in r231095. Instead, we key this behavior off of the
`shrink-to-fit` attribute introduced for multitasking on iPad, such that `shrink-to-fit=no` achieves the same
behavior as `min-device-width=0` in extra zoom mode. See comments below for more detail.

Adjusted an existing layout test: fast/viewport/extrazoom/viewport-change-min-device-width.html.

* dom/ViewportArguments.cpp:
(WebCore::setViewportFeature):
(WebCore::operator<<):
* dom/ViewportArguments.h:

Removes the `minDeviceWidth` viewport argument.

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setMinDeviceWidthEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::minDeviceWidthEnabled const): Deleted.

Removes the runtime switch for `min-device-width`.

* page/ViewportConfiguration.cpp:
(WebCore::platformDeviceWidthOverride):

Hard-code the override device width in extra zoom mode.

(WebCore::ViewportConfiguration::shouldOverrideDeviceWidthAndShrinkToFit const):

In extra zoom mode, override the device width only if shrink-to-fit has not been expliticly disabled, and the
device width is less than the override device width.

(WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const):
(WebCore::ViewportConfiguration::shouldIgnoreScalingConstraintsRegardlessOfContentSize const):
(WebCore::ViewportConfiguration::updateConfiguration):
(WebCore::ViewportConfiguration::updateMinimumLayoutSize):

Do not override the minimum layout size if `shrink-to-fit` has been explicitly explicitly disabled, or if the
device width is greater than the override device width.

(WebCore::computedMinDeviceWidth): Deleted.
(WebCore::ViewportConfiguration::shouldOverrideDeviceWidthWithMinDeviceWidth const): Deleted.
* page/ViewportConfiguration.h:

Source/WebKit:

Remove the experimental feature for `min-device-width`.

* Shared/WebPreferences.yaml:

LayoutTests:

Modifies an existing layout test to try out different values of `shrink-to-fit` instead of using the
`min-device-width` attribute. This test now begins with the default viewport configuration, then explicitly
disables `shrink-to-fit` by setting the attribute to a few different values (which should all achieve the same
effect), and lastly explicitly re-enables `shrink-to-fit` by setting the attribute value to several values that
should behave the same as `shrink-to-fit=yes`.

* fast/viewport/extrazoom/viewport-change-min-device-width.html:

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

2 years agoMandate H264 hardware encoder for Mac in libwebrtc
youenn@apple.com [Mon, 30 Apr 2018 20:28:22 +0000 (20:28 +0000)]
Mandate H264 hardware encoder for Mac in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=184835

Reviewed by Eric Carlson.

Tested manually through console traces that hardware VCP encoder code path is actually used instead of software VCP encoder code path.

* Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm:
(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):
* WebKit/0001-Update-RTCVideoEncoderH264.mm-for-WebKit.patch: Added to cover this change and changes made in bug 184668 and 183961.

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

2 years agoMove StructureIsImmortal to out of line flags.
keith_miller@apple.com [Mon, 30 Apr 2018 20:22:08 +0000 (20:22 +0000)]
Move StructureIsImmortal to out of line flags.
https://bugs.webkit.org/show_bug.cgi?id=185101

Reviewed by Saam Barati.

This will free up a bit in the inline flags where we can move the
isPrototype bit to. This will, in turn, free a bit for use in
implementing copy on write butterflies.

Also, this patch removes an assertion from Structure::typeInfo()
that inadvertently makes the function invalid to call while
cleaning up the vm.

* heap/HeapCellType.cpp:
(JSC::DefaultDestroyFunc::operator() const):
* runtime/JSCell.h:
* runtime/JSCellInlines.h:
(JSC::JSCell::callDestructor): Deleted.
* runtime/JSTypeInfo.h:
(JSC::TypeInfo::hasStaticPropertyTable):
(JSC::TypeInfo::structureIsImmortal const):
* runtime/Structure.h:

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

2 years agoSerialize font-variation-settings with double-quotes per spec
commit-queue@webkit.org [Mon, 30 Apr 2018 19:56:28 +0000 (19:56 +0000)]
Serialize font-variation-settings with double-quotes per spec
https://bugs.webkit.org/show_bug.cgi?id=182542

Patch by Chris Nardi <cnardi@chromium.org> on 2018-04-30
Reviewed by Myles C. Maxfield.

Source/WebCore:

According to the CSSOM spec [1], all strings should be serialized with double-quotes.
The axis name in font-variation-settings was previously serialized with single-quotes;
change this to double-quotes to match the spec and non-WebKit browsers.

[1]: https://drafts.csswg.org/cssom/#common-serializing-idioms

Updated fast/text/variations/getComputedStyle.html to test the change.

* css/CSSFontVariationValue.cpp:
(WebCore::CSSFontVariationValue::customCSSText const):

LayoutTests:

Updated test to verify double-quotes are used.

* fast/text/variations/getComputedStyle-expected.txt:
* fast/text/variations/getComputedStyle.html:

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

2 years agoInclude breadcrumb for tracking resource loading into CFNetwork
krollin@apple.com [Mon, 30 Apr 2018 19:31:50 +0000 (19:31 +0000)]
Include breadcrumb for tracking resource loading into CFNetwork
https://bugs.webkit.org/show_bug.cgi?id=184837
rdar://problem/39575411

Reviewed by Brent Fulgham.

When starting the network-based loading of a resource, log the
description provided by NetworkDataTask. On Cocoa, this is implemented
to return the description property in NSURLSessionTask. This
information better allows us to track a resource load through the
WebContent process, the Networking process, and the Cocoa networking
layers.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::description const):
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::description const):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::description const):

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

2 years agoFix bad use of RunLoop::main().dispatch() in MessagePort::dispatchMessages()
cdumez@apple.com [Mon, 30 Apr 2018 19:13:33 +0000 (19:13 +0000)]
Fix bad use of RunLoop::main().dispatch() in MessagePort::dispatchMessages()
https://bugs.webkit.org/show_bug.cgi?id=185134

Reviewed by Geoffrey Garen.

Fix bad use of RunLoop::main().dispatch() in MessagePort::dispatchMessages(). This code runs on iOS WebKitLegacy
and it is therefore unsafe to use RunLoop::main() here. We want to use callOnMainThread() instead to run code on
the WebThread.

* dom/MessagePort.cpp:
(WebCore::MessagePort::dispatchMessages):

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

2 years ago[JSC] Remove arity fixup check if the number of parameters is 1
utatane.tea@gmail.com [Mon, 30 Apr 2018 18:02:08 +0000 (18:02 +0000)]
[JSC] Remove arity fixup check if the number of parameters is 1
https://bugs.webkit.org/show_bug.cgi?id=183984

Reviewed by Mark Lam.

If the number of parameters is one (|this|), we never hit arity fixup check.
We do not need to emit arity fixup check code.

* dfg/DFGDriver.cpp:
(JSC::DFG::compileImpl):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGJITCompiler.h:
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* jit/JIT.cpp:
(JSC::JIT::compileWithoutLinking):

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

2 years agoMake color-filter affect caret-color
simon.fraser@apple.com [Mon, 30 Apr 2018 17:51:51 +0000 (17:51 +0000)]
Make color-filter affect caret-color
https://bugs.webkit.org/show_bug.cgi?id=185129
rdar://problem/39829066

Reviewed by Tim Horton.
Source/WebCore:

Transform the colors used to compare the caret color with the background through
color-filter (since we want contrasting colors after filters are applied), and
transform caret-color itself.

Test: css3/color-filters/color-filter-caret-color.html

* editing/FrameSelection.cpp:
(WebCore::CaretBase::paintCaret const):

LayoutTests:

* css3/color-filters/color-filter-caret-color-expected.html: Added.
* css3/color-filters/color-filter-caret-color.html: Added.

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

2 years agoUse WordLock instead of std::mutex for Threading
utatane.tea@gmail.com [Mon, 30 Apr 2018 17:30:26 +0000 (17:30 +0000)]
Use WordLock instead of std::mutex for Threading
https://bugs.webkit.org/show_bug.cgi?id=185121

Reviewed by Geoffrey Garen.

Source/bmalloc:

Add constexpr to explicitly describe that bmalloc::Mutex constructor is constexpr.

* bmalloc/Mutex.h:

Source/JavaScriptCore:

ThreadGroup starts using WordLock.

* heap/MachineStackMarker.h:
(JSC::MachineThreads::getLock):

Source/WTF:

Before r231151, WordLock depends on ThreadSpecific. It means that our Threading implementation
cannot use this lock since Threading primitives could touch these locks after ThreadSpecific
for that WordLock is destroyed.

Now WordLock is changed not to use ThreadSpecific. So it does not depend on our Threading
mechanism and our Threading can start using WordLock internally.

This patch changes WTF::Thread and WTF::ThreadGroup to use WordLock instead of std::mutex.

And add constexpr to explicitly describe that Lock, Condition, and WordLock constructors are constexpr.

* wtf/Condition.h:
* wtf/Lock.h:
* wtf/ThreadGroup.h:
(WTF::ThreadGroup::getLock):
* wtf/Threading.cpp:
(WTF::Thread::didExit):
(WTF::Thread::addToThreadGroup):
(WTF::Thread::removeFromThreadGroup):
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::Thread::changePriority):
(WTF::Thread::waitForCompletion):
(WTF::Thread::detach):
(WTF::Thread::signal):
(WTF::Thread::establishPlatformSpecificHandle):
* wtf/ThreadingWin.cpp:
(WTF::Thread::changePriority):
(WTF::Thread::waitForCompletion):
(WTF::Thread::detach):
(WTF::Thread::establishPlatformSpecificHandle):
(WTF::Thread::initializeTLSKey):
(WTF::Thread::currentDying):
(WTF::Thread::get):
(WTF::Thread::initializeTLS):
(WTF::Thread::destructTLS):
(WTF::threadMapMutex): Deleted.
* wtf/WordLock.h:

Tools:

* TestWebKitAPI/Tests/WTF/Signals.cpp:
(TEST):

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

2 years ago[iOS] Try to unlock PDF documents before printing them
aestes@apple.com [Mon, 30 Apr 2018 16:16:40 +0000 (16:16 +0000)]
[iOS] Try to unlock PDF documents before printing them
https://bugs.webkit.org/show_bug.cgi?id=185084
<rdar://problem/39356622>

Reviewed by Dan Bernstein.

* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView pdfHostViewController:documentDidUnlockWithPassword:]):

Stored the password that successfully unlocked the current PDF document.

(-[WKPDFView _wk_printedDocument]):

Used the stored password to unlock the CGPDFDocument we create for printing.

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

2 years ago[GTK] Webkit should spoof as Safari on a Mac when on Chase.com
mcatanzaro@igalia.com [Mon, 30 Apr 2018 15:16:14 +0000 (15:16 +0000)]
[GTK] Webkit should spoof as Safari on a Mac when on Chase.com
https://bugs.webkit.org/show_bug.cgi?id=185103

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Send a fake user agent to chase.com to make it work.

* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::UserAgentQuirks::stringForQuirk): Also, remove this stale comment.

Tools:

* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
(TestWebKitAPI::TEST):

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

2 years agoMake color-filter affect <attachment>
simon.fraser@apple.com [Mon, 30 Apr 2018 05:24:11 +0000 (05:24 +0000)]
Make color-filter affect <attachment>
https://bugs.webkit.org/show_bug.cgi?id=185122
rdar://problem/39818763

Reviewed by Tim Horton.

Convert the colors used to render <attachment> through color-filter, except
for those parts that render over the icon (like the progress bar).

Not easily testable.

* rendering/RenderThemeMac.mm:
(WebCore::titleTextColorForAttachment):
(WebCore::AttachmentLayout::layOutTitle):
(WebCore::AttachmentLayout::layOutSubtitle):
(WebCore::paintAttachmentIconBackground):
(WebCore::paintAttachmentTitleBackground):
(WebCore::paintAttachmentPlaceholderBorder):

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

2 years agoB3 should run tail duplication at the bitter end
fpizlo@apple.com [Sun, 29 Apr 2018 23:41:55 +0000 (23:41 +0000)]
B3 should run tail duplication at the bitter end
https://bugs.webkit.org/show_bug.cgi?id=185123

Reviewed by Geoffrey Garen.

Also added an option to disable taildup. This appears to be a 1% AsmBench speed-up. It's neutral
everywhere else.

The goal of this change is to allow us to run path specialization after switch lowering but
before tail duplication.

* b3/B3Generate.cpp:
(JSC::B3::generateToAir):
* runtime/Options.h:

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

2 years agoFix color-filter to apply to SVG colors
simon.fraser@apple.com [Sun, 29 Apr 2018 17:30:35 +0000 (17:30 +0000)]
Fix color-filter to apply to SVG colors
https://bugs.webkit.org/show_bug.cgi?id=185113
rdar://problem/39665082

Reviewed by Dean Jackson.
Source/WebCore:

Convert SVG colors through color-filter operations for the places in SVG
that use color, namely fill and stroke, gradients, lighting colors and
drop-shadow.

Test: css3/color-filters/svg/color-filter-inline-svg.html

* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::RenderSVGResourceGradient::applyResource):
* rendering/svg/RenderSVGResourceGradient.h:
* rendering/svg/RenderSVGResourceLinearGradient.cpp:
(WebCore::RenderSVGResourceLinearGradient::buildGradient const):
* rendering/svg/RenderSVGResourceLinearGradient.h:
* rendering/svg/RenderSVGResourceRadialGradient.cpp:
(WebCore::RenderSVGResourceRadialGradient::buildGradient const):
* rendering/svg/RenderSVGResourceRadialGradient.h:
* rendering/svg/RenderSVGResourceSolidColor.cpp:
(WebCore::RenderSVGResourceSolidColor::applyResource):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::setFilterEffectAttribute):
(WebCore::SVGFEDiffuseLightingElement::build):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::build):
* svg/SVGFEFloodElement.cpp:
(WebCore::SVGFEFloodElement::build):
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::setFilterEffectAttribute):
(WebCore::SVGFESpecularLightingElement::build):

LayoutTests:

* css3/color-filters/svg/color-filter-inline-svg-expected.html: Added.
* css3/color-filters/svg/color-filter-inline-svg.html: Added.

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

2 years ago[CMake] Require GCC 6
mcatanzaro@igalia.com [Sun, 29 Apr 2018 17:29:56 +0000 (17:29 +0000)]
[CMake] Require GCC 6
https://bugs.webkit.org/show_bug.cgi?id=184985

Reviewed by Alex Christensen.

.:

Require it.

* CMakeLists.txt:

Source/WebCore:

Remove a GCC 5 fallback path. This seems to be the only such fallback path in WebKit.

* platform/graphics/FourCC.h:
(WebCore::FourCC::FourCC):

Source/WTF:

Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
don't like having the same check in two different places.

* wtf/Compiler.h:

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

2 years agoWordLock doesn't need per-thread data
ggaren@apple.com [Sun, 29 Apr 2018 17:29:13 +0000 (17:29 +0000)]
WordLock doesn't need per-thread data
https://bugs.webkit.org/show_bug.cgi?id=185119

Reviewed by Yusuke Suzuki.

The stack is per-thread data, so we can stack-allocate our ThreadData.

This eliminates malloc() and high-level WTF threading primitives from
WordLock, making WordLock more portable to non-WTF code, including
bmalloc.

(NOTE: This patch makes the bug fixed in r231148 100% reproducible.)

* wtf/WordLock.cpp:
(WTF::WordLock::lockSlow): Allocate ThreadData on the stack.

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

2 years ago[LFC] Implement Display::Box functions
zalan@apple.com [Sun, 29 Apr 2018 16:09:38 +0000 (16:09 +0000)]
[LFC] Implement Display::Box functions
https://bugs.webkit.org/show_bug.cgi?id=185116

Reviewed by Antti Koivisto.

* layout/displaytree/DisplayBox.cpp:
(WebCore::Display::Box::Box):
(WebCore::Display::Box::~Box):
(WebCore::Display::Box::marginBox const):
(WebCore::Display::Box::borderBox const):
(WebCore::Display::Box::paddingBox const):
(WebCore::Display::Box::contentBox const):
* layout/displaytree/DisplayBox.h:
(WebCore::Display::Box::rect const):
(WebCore::Display::Box::top const):
(WebCore::Display::Box::left const):
(WebCore::Display::Box::bottom const):
(WebCore::Display::Box::right const):
(WebCore::Display::Box::topLeft const):
(WebCore::Display::Box::bottomRight const):
(WebCore::Display::Box::size const):
(WebCore::Display::Box::width const):
(WebCore::Display::Box::height const):
(WebCore::Display::Box::marginTop const):
(WebCore::Display::Box::marginLeft const):
(WebCore::Display::Box::marginBottom const):
(WebCore::Display::Box::marginRight const):
(WebCore::Display::Box::parent const):
(WebCore::Display::Box::nextSibling const):
(WebCore::Display::Box::previousSibling const):
(WebCore::Display::Box::firstChild const):
(WebCore::Display::Box::lastChild const):
(WebCore::Display::Box::setRect):
(WebCore::Display::Box::setTopLeft):
(WebCore::Display::Box::setTop):
(WebCore::Display::Box::setLeft):
(WebCore::Display::Box::setSize):
(WebCore::Display::Box::setWidth):
(WebCore::Display::Box::setHeight):
(WebCore::Display::Box::setMarginTop):
(WebCore::Display::Box::setMarginLeft):
(WebCore::Display::Box::setMarginBottom):
(WebCore::Display::Box::setMarginRight):
(WebCore::Display::Box::setBorderTop):
(WebCore::Display::Box::setBorderLeft):
(WebCore::Display::Box::setBorderBottom):
(WebCore::Display::Box::setBorderRight):
(WebCore::Display::Box::setPaddingTop):
(WebCore::Display::Box::setPaddingLeft):
(WebCore::Display::Box::setPaddingBottom):
(WebCore::Display::Box::setPaddingRight):
(WebCore::Display::Box::setParent):
(WebCore::Display::Box::setNextSibling):
(WebCore::Display::Box::setPreviousSibling):
(WebCore::Display::Box::setFirstChild):
(WebCore::Display::Box::setLastChild):

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

2 years agoMake RestrictedHTTPResponseAccess flag true by default
youenn@apple.com [Sun, 29 Apr 2018 15:32:51 +0000 (15:32 +0000)]
Make RestrictedHTTPResponseAccess flag true by default
https://bugs.webkit.org/show_bug.cgi?id=185089

Reviewed by Geoffrey Garen.

* page/RuntimeEnabledFeatures.h:

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

2 years agoFixed a very unlikely race condition in WTF::WordLock
ggaren@apple.com [Sun, 29 Apr 2018 15:23:52 +0000 (15:23 +0000)]
Fixed a very unlikely race condition in WTF::WordLock
https://bugs.webkit.org/show_bug.cgi?id=185117

Reviewed by Saam Barati.

The race goes like this:

Thread L is in lockSlowCase() and thread U is in unlockSlowCase();

- U acquires queueHead->parkingLock.
- U sets queueHead->shouldPark = false
- U releases queueHead->parkingLock.
- L spuriously wakes up from queueHead->parkingLock.wait()
- L acquires queueHead->parkingLock.
- L notices that queueHead->shouldPark = false, and acquires the WordLock
- L finishes all its work and exits, freeing queueHead
- U notifies queueHead->parkingLock (after free) and crashes or deadlocks

These conditions are currently so unlikely that I don't know how to test
them. I noticed this race because I changed WordLock's allocation pattern
to allow queueHead to be freed more often, and I crashed / deadlocked 100%.

Shout out to <http://en.cppreference.com/w/cpp/thread/condition_variable/notify_one>
for explaining this.

* benchmarks/ToyLocks.h: Fixed build.

* wtf/WordLock.cpp:
(WTF::WordLock::unlockSlow): Hold the lock a little longer to avoid
this race.

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

2 years agoUnreviewed, rolling out r231137.
commit-queue@webkit.org [Sun, 29 Apr 2018 13:33:25 +0000 (13:33 +0000)]
Unreviewed, rolling out r231137.
https://bugs.webkit.org/show_bug.cgi?id=185118

It is breaking Test262 language/expressions/multiplication
/order-of-evaluation.js (Requested by caiolima on #webkit).

Reverted changeset:

"[ESNext][BigInt] Implement support for "*" operation"
https://bugs.webkit.org/show_bug.cgi?id=183721
https://trac.webkit.org/changeset/231137

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

2 years ago[Cocoa] Set HTTPOnly flag when converting Cookie to NSHTTPCookie
commit-queue@webkit.org [Sun, 29 Apr 2018 05:26:40 +0000 (05:26 +0000)]
[Cocoa] Set HTTPOnly flag when converting Cookie to NSHTTPCookie
https://bugs.webkit.org/show_bug.cgi?id=185052

Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-28
Reviewed by Geoffrey Garen.

Source/WebCore:

Set HTTPOnly for NSHTTPCookie when it's converted from Cookie, so the WebKit APIs could
create NSHTTPCookie with correct HTTPOnly flag. Also, reverted the change made to operator
function because we want the Cookie class to act as a wrapper for NSHTTPCookie and leverage
its equal function.

Modified API test: WebKit.WKHTTPCookieStoreHttpOnly

* platform/network/cocoa/CookieCocoa.mm:
(WebCore::Cookie::operator NSHTTPCookie * const):
(WebCore::Cookie::operator== const):
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::deleteCookie):

Tools:

Modified API test to provide correct test cases for HTTPOnly flag.

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

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

2 years agoWe don't model regexp effects properly
sbarati@apple.com [Sun, 29 Apr 2018 01:17:06 +0000 (01:17 +0000)]
We don't model regexp effects properly
https://bugs.webkit.org/show_bug.cgi?id=185059
<rdar://problem/39736150>

Reviewed by Filip Pizlo.

JSTests:

* stress/regexp-exec-test-effectful-last-index.js: Added.
(assert):
(foo):
(i.regexLastIndex.toString):
(bar):

Source/JavaScriptCore:

RegExp exec/test can do arbitrary effects when toNumbering the lastIndex if
the regexp is global.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):

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

2 years ago[iOS] Present an action sheet when long-pressing on PDF links
aestes@apple.com [Sun, 29 Apr 2018 00:51:35 +0000 (00:51 +0000)]
[iOS] Present an action sheet when long-pressing on PDF links
https://bugs.webkit.org/show_bug.cgi?id=185093
<rdar://problem/39356651>

Reviewed by Dan Bernstein.

* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView dealloc]):

Called -[WKActionSheetAssistant cleanupSheet].

(-[WKPDFView web_setContentProviderData:suggestedFilename:]):

Created a WKActionSheetAssistant with the host view as the assistant view and
ourselves as the delegate.

(-[WKPDFView _URLWithPageIndex:]):

Added. Creates a URL to the current page with a page number fragment appended.

(-[WKPDFView _goToURL:atLocation:]):

Added. Navigates to a URL with a synthetic mouse click at a location in host view
coordinates.

(-[WKPDFView pdfHostViewController:goToURL:]):
(-[WKPDFView pdfHostViewController:goToPageIndex:withViewFrustum:]):

Called -_goToURL:atLocation:. Used -_URLWithPageIndex: to construct an NSURL from
a page index.

(-[WKPDFView _showActionSheetForURL:atLocation:]):

Added. Populates _positionInformation with a URL and location and calls
-[WKActionSheetAssistant showLinkSheet].

(-[WKPDFView pdfHostViewController:didLongPressURL:atLocation:]):
(-[WKPDFView pdfHostViewController:didLongPressPageIndex:atLocation:]):

Called -_showActionSheetForURL:atLocation:. Used -_URLWithPageIndex: to construct
an NSURL from a page index.

(-[WKPDFView positionInformationForActionSheetAssistant:]):

Returned _positionInformation.

(-[WKPDFView actionSheetAssistant:performAction:]):

Populated the pasteboard with plain text and URL representations of
_positionInformation.url.

(-[WKPDFView actionSheetAssistant:openElementAtLocation:]):

Called -_goToURL:atLocation.

(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):

Created a UIWKSelectionAssistant and called -showShareSheetFor:fromRect:.

(-[WKPDFView actionSheetAssistant:shouldIncludeAppLinkActionsForElement:]):

Returned API::UIClient::shouldIncludeAppLinkActionsForElement().

(-[WKPDFView actionSheetAssistant:decideActionsForElement:defaultActions:]):

Returned API::UIClient::actionsForElement()l

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

2 years agoToken misspelled "tocken" in error message string
commit-queue@webkit.org [Sat, 28 Apr 2018 23:32:27 +0000 (23:32 +0000)]
Token misspelled "tocken" in error message string
https://bugs.webkit.org/show_bug.cgi?id=185030

Patch by Rick Waldron <waldron.rick@gmail.com> on 2018-04-28
Reviewed by Saam Barati.

JSTests:

* ChakraCore/test/Basics/IdsWithEscapes.baseline-jsc: Fix typo "tocken" => "token"
* stress/destructuring-assignment-syntax.js: Fix typo "tocken" => "token"
* stress/error-messages-for-in-operator-should-not-crash.js: Fix typo "tocken" => "token"
* stress/reserved-word-with-escape.js: Fix typo "tocken" => "token"
(testSyntaxError.String.raw.v):
(String.raw.SyntaxError.Cannot.use.the.keyword.string_appeared_here.as.a.name):
(testSyntaxError.String.raw.a):

Source/JavaScriptCore:

* parser/Parser.cpp: Fix typo "tocken" => "token" in SyntaxError message string
(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::didFinishParsing):
(JSC::Parser<LexerType>::parseSourceElements):
(JSC::Parser<LexerType>::parseAsyncGeneratorFunctionSourceElements):
(JSC::Parser<LexerType>::parseVariableDeclaration):
(JSC::Parser<LexerType>::parseWhileStatement):
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::createBindingPattern):
(JSC::Parser<LexerType>::parseArrowFunctionSingleExpressionBodySourceElements):
(JSC::Parser<LexerType>::parseObjectRestElement):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseBreakStatement):
(JSC::Parser<LexerType>::parseContinueStatement):
(JSC::Parser<LexerType>::parseThrowStatement):
(JSC::Parser<LexerType>::parseWithStatement):
(JSC::Parser<LexerType>::parseSwitchStatement):
(JSC::Parser<LexerType>::parseSwitchClauses):
(JSC::Parser<LexerType>::parseTryStatement):
(JSC::Parser<LexerType>::parseBlockStatement):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
(JSC::Parser<LexerType>::parseExpressionStatement):
(JSC::Parser<LexerType>::parseIfStatement):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseConditionalExpression):
(JSC::Parser<LexerType>::parseBinaryExpression):
(JSC::Parser<LexerType>::parseObjectLiteral):
(JSC::Parser<LexerType>::parseStrictObjectLiteral):
(JSC::Parser<LexerType>::parseArrayLiteral):
(JSC::Parser<LexerType>::parseArguments):
(JSC::Parser<LexerType>::parseMemberExpression):
(JSC::operatorString):
(JSC::Parser<LexerType>::parseUnaryExpression):
(JSC::Parser<LexerType>::printUnexpectedTokenText):

Tools:

* Scripts/test262/test262-expectations.yaml: Fix typo "tocken" => "token"

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

2 years ago[LFC] Add LayoutTreeBuilder class to generate the layout tree
zalan@apple.com [Sat, 28 Apr 2018 23:13:04 +0000 (23:13 +0000)]
[LFC] Add LayoutTreeBuilder class to generate the layout tree
https://bugs.webkit.org/show_bug.cgi?id=185108

Reviewed by Antti Koivisto.

This is for testing purposes.

* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingState.cpp:
(WebCore::Layout::FormattingState::~FormattingState):
* layout/FormattingState.h:
* layout/LayoutContext.h:
* layout/blockformatting/BlockFormattingState.cpp:
(WebCore::Layout::BlockFormattingState::~BlockFormattingState):
* layout/blockformatting/BlockFormattingState.h:
* layout/inlineformatting/InlineFormattingState.cpp:
(WebCore::Layout::InlineFormattingState::~InlineFormattingState):
* layout/inlineformatting/InlineFormattingState.h:
* layout/layouttree/LayoutBlockContainer.h:
* layout/layouttree/LayoutBox.h:
* layout/layouttree/LayoutContainer.h:
* layout/layouttree/LayoutInlineContainer.h:
* layout/layouttree/LayoutTreeBuilder.cpp: Added.
(WebCore::Layout::TreeBuilder::createLayoutTree):
(WebCore::Layout::TreeBuilder::createSubTree):
(WebCore::Layout::outputLayoutBox):
(WebCore::Layout::outputLayoutTree):
(WebCore::Layout::TreeBuilder::showLayoutTree):
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* layout/layouttree/LayoutTreeBuilder.h: Copied from Source/WebCore/layout/layouttree/LayoutBlockContainer.h.
* page/mac/PageMac.mm:
(WebCore::Page::platformInitialize):

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

2 years ago[LFC] Implement BlockMarginCollapse functions.
zalan@apple.com [Sat, 28 Apr 2018 23:12:31 +0000 (23:12 +0000)]
[LFC] Implement BlockMarginCollapse functions.
https://bugs.webkit.org/show_bug.cgi?id=185036

Reviewed by Antti Koivisto.

* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::marginValue):
(WebCore::Layout::BlockMarginCollapse::BlockMarginCollapse):
(WebCore::Layout::BlockMarginCollapse::marginTop const):
(WebCore::Layout::BlockMarginCollapse::marginBottom const):
(WebCore::Layout::BlockMarginCollapse::isMarginTopCollapsedWithSibling const):
(WebCore::Layout::BlockMarginCollapse::isMarginBottomCollapsedWithSibling const):
(WebCore::Layout::BlockMarginCollapse::isMarginTopCollapsedWithParent const):
(WebCore::Layout::BlockMarginCollapse::isMarginBottomCollapsedWithParent const):
(WebCore::Layout::BlockMarginCollapse::nonCollapsedMarginTop const):
(WebCore::Layout::BlockMarginCollapse::nonCollapsedMarginBottom const):
(WebCore::Layout::BlockMarginCollapse::collapsedMarginTopFromFirstChild const):
(WebCore::Layout::BlockMarginCollapse::collapsedMarginBottomFromLastChild const):
(WebCore::Layout::BlockMarginCollapse::hasAdjoiningMarginTopAndBottom const):
* layout/blockformatting/BlockMarginCollapse.h:
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::style const):

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

2 years ago[iOS] Allow com.apple.WebKit.Networking to look up com.apple.wifi.manager
aestes@apple.com [Sat, 28 Apr 2018 23:10:36 +0000 (23:10 +0000)]
[iOS] Allow com.apple.WebKit.Networking to look up com.apple.wifi.manager
https://bugs.webkit.org/show_bug.cgi?id=185114
<rdar://problem/39808763>

Reviewed by Wenson Hsieh.

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

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