WebKit-https.git
3 years agoClarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.
simon.fraser@apple.com [Tue, 21 Feb 2017 21:47:40 +0000 (21:47 +0000)]
Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.

* features.json:

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

3 years ago[WebRTC][Mac] Network process sandbox does not allow WebRTC networking
commit-queue@webkit.org [Tue, 21 Feb 2017 21:30:56 +0000 (21:30 +0000)]
[WebRTC][Mac] Network process sandbox does not allow WebRTC networking
https://bugs.webkit.org/show_bug.cgi?id=168594

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Brent Fulgham.

UIProcess was passing a boolean to know whether WebRTC networking is allowed or not to the network process.
This boolean was known to late for the sandbox to be relaxed.
A sandbox extension is now used instead to relax the sandbox.

* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::initializeSandbox):
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

3 years ago[WebRTC] ICE candidates should be filtered according a policy
commit-queue@webkit.org [Tue, 21 Feb 2017 21:29:01 +0000 (21:29 +0000)]
[WebRTC] ICE candidates should be filtered according a policy
https://bugs.webkit.org/show_bug.cgi?id=168348

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Alex Christensen.

Source/WebCore:

Covered by manual tests. Should be covered in the future by layout tests with dedicated internals API.

Adding support for ICE candidate filtering at RTCPeerConnection level.
If ICE candidate filtering is on (by default), host candidates are stored and not sent immediately.
Reflexive candidates are purged from raddr information to not leak the host IP address.

Stored candidates may be advertised to the JS layer if RTCController is notified of a change of filtering policy.
To implement that, PeerConnectionBackend stores all filtered out candidates and RTCPeerConnection register
themselves to RTCController to get notifications of filtering policy changes.

Making RTCPeerConnection use setPendingActivity throughout its lifetime.
This ensures it does not get collected until the page is off or close() is called on the object.

Adding support for enumerating or not all interfaces at libwebrtc level.
This choice is done at creation of the peer connection.

* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::enableICECandidateFiltering):
(WebCore::PeerConnectionBackend::disableICECandidateFiltering):
(WebCore::filterICECandidate):
(WebCore::PeerConnectionBackend::newICECandidate):
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCController.cpp: Added.
(WebCore::RTCController::remove):
(WebCore::RTCController::add):
(WebCore::RTCController::disableICECandidateFiltering):
(WebCore::RTCController::enableICECandidateFiltering):
* Modules/mediastream/RTCController.h: Added.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::create):
(WebCore::RTCPeerConnection::close):
(WebCore::RTCPeerConnection::rtcController):
(WebCore::RTCPeerConnection::registerToController):
(WebCore::RTCPeerConnection::unregisterFromController):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):
* WebCore.xcodeproj/project.pbxproj:
* page/Page.h:
(WebCore::Page::rtcController):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::createPeerConnection):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit2:

Adding the possibility for the UI process to control the ICE candidate filtering and whether libwebrtc can
enumerate all interfaces or not.

Disabling ICE candidate filtering for the moment.
Enabling to enumerate all interfaces for the moment.

In the future, ICE candidate filtering should be tied to getUserMedia.
Interface enumeration should be disabled with the default configuration.
We should do that once we have sufficient testing in various network infrastructures.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::disableICECandidateFiltering):
(WebKit::WebPage::enableICECandidateFiltering):
(WebKit::WebPage::disableEnumeratingAllNetworkInterfaces):
(WebKit::WebPage::enableEnumeratingAllNetworkInterfaces):
* WebProcess/WebPage/WebPage.messages.in:

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

3 years agoUnreviewed, update WebCrypto API feature status.
jiewen_tan@apple.com [Tue, 21 Feb 2017 21:20:30 +0000 (21:20 +0000)]
Unreviewed, update WebCrypto API feature status.

* features.json:

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

3 years agoFix the bad JSON.
simon.fraser@apple.com [Tue, 21 Feb 2017 21:15:17 +0000 (21:15 +0000)]
Fix the bad JSON.

* features.json:

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

3 years ago[iOS] WebKit1 should use shared memory pressure handler code.
akling@apple.com [Tue, 21 Feb 2017 21:04:50 +0000 (21:04 +0000)]
[iOS] WebKit1 should use shared memory pressure handler code.
<https://webkit.org/b/168653>

Reviewed by Antti Koivisto.

Source/WebCore:

Remove iOS WebKit1 specific members and code from MemoryPressureHandler in favor
of using the same code that iOS WebKit2 and macOS WebKit uses.

* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::platformReleaseMemory): Add two cleanup calls that were only in the iOS WebView code.
* platform/MemoryPressureHandler.h:
(WebCore::MemoryPressureHandler::m_releaseMemoryBlock): Deleted.
* platform/cocoa/MemoryPressureHandlerCocoa.mm:
(WebCore::respondToMemoryPressureCallback): Deleted.
(WebCore::MemoryPressureHandler::installMemoryReleaseBlock): Deleted.
(WebCore::MemoryPressureHandler::setReceivedMemoryPressure): Deleted.
(WebCore::MemoryPressureHandler::clearMemoryPressure): Deleted.
(WebCore::MemoryPressureHandler::shouldWaitForMemoryClearMessage): Deleted.
(WebCore::MemoryPressureHandler::respondToMemoryPressureIfNeeded): Deleted.

Source/WebKit/ios:

* Misc/WebUIKitSupport.mm:
(WebKitInitialize): Don't unconditionally install a memory warning handler just
because the framework is loaded.

Source/WebKit/mac:

Register a WebThread-aware memory callback with the shared MemoryPressureHandler
and get rid of the old iOS WebKit1 specific implementation. Some of it was even
dead code since MobileSafari has been using WebKit2 for quite a while.

* WebView/WebView.h:
* WebView/WebView.mm:
(WebInstallMemoryPressureHandler):
(+[WebView _handleMemoryWarning]): Deleted.
(+[WebView registerForMemoryNotifications]): Deleted.
(+[WebView releaseFastMallocMemoryOnCurrentThread]): Deleted.
(+[WebView garbageCollectNow]): Deleted.
(+[WebView purgeInactiveFontData]): Deleted.
(+[WebView drainLayerPool]): Deleted.
(+[WebView discardAllCompiledCode]): Deleted.
(+[WebView _clearMemoryPressure]): Deleted.
(+[WebView _shouldWaitForMemoryClearMessage]): Deleted.
* WebView/WebViewPrivate.h:

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

3 years agowebkitpy: Refactor Device class
jbedard@apple.com [Tue, 21 Feb 2017 21:03:55 +0000 (21:03 +0000)]
webkitpy: Refactor Device class
https://bugs.webkit.org/show_bug.cgi?id=168332

Reviewed by Alexey Proskuryakov.

Separate the more specific SimulatedDevice from the abstract
idea of a device.

* Scripts/webkitpy/xcode/device.py: Added.
(Device):  Base device class.
(Device.__init__): Initialize _host, name and udid.
(Device.install_app): Function declaration.
(Device.launch_app): Ditto.
(Device.__eq__): Compare two devices by udid.
(Device.__ne__): Ditto.
(Device.__repr__): Return device name and udid in formatted string.
* Scripts/webkitpy/xcode/simulated_device.py: Copied from Tools/Scripts/webkitpy/xcode/simulator.py.
(SimulatedDevice):
(SimulatedDevice.__init__): Call Device.__init__ first.
(SimulatedDevice.delete): Device -> SimulatedDevice.
(SimulatedDevice.reset): Ditto.
(SimulatedDevice.__eq__): Moved to device.py.
(SimulatedDevice.__ne__): Ditto.
(SimulatedDevice.__repr__): Call Device __repr__ first.
(DeviceType): Kept in Scripts/webkitpy/xcode/simulator.py.
(Runtime): Kept in Scripts/webkitpy/xcode/simulator.py.
(Device): Renamed SimulatedDevice.
(Simulator): Kept in Scripts/webkitpy/xcode/simulator.py.
* Scripts/webkitpy/xcode/simulator.py:
(Simulator): Define Simulator.Device class as None.
(Simulator.__init__): Import SimulatedDevice as Simulator.Device.
(Simulator.delete_device): Use Simulator.Device.
(Simulator.reset_device): Ditto.
(Simulator._parse_devices): Ditto.
(Simulator.lookup_or_create_device): Make
(Device): Moved to simulated_device as SimulatedDevice.

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

3 years agoFix two failing WebKit legacy tests
andersca@apple.com [Tue, 21 Feb 2017 20:15:11 +0000 (20:15 +0000)]
Fix two failing WebKit legacy tests
https://bugs.webkit.org/show_bug.cgi?id=168667

Reviewed by Tim Horton.

Handle the NSPasteboardTypeString type.

* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::read):
(WebCore::addHTMLClipboardTypesForCocoaType):

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

3 years agoAdd Web Audio and Web MIDI to features.json.
simon.fraser@apple.com [Tue, 21 Feb 2017 20:12:24 +0000 (20:12 +0000)]
Add Web Audio and Web MIDI to features.json.

* features.json:

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

3 years agoREGRESSION(r207669): Crash after mutating selector text
antti@apple.com [Tue, 21 Feb 2017 20:06:48 +0000 (20:06 +0000)]
REGRESSION(r207669): Crash after mutating selector text
https://bugs.webkit.org/show_bug.cgi?id=168655
<rdar://problem/30632111>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: fast/css/selector-text-mutation-crash.html

* style/StyleScope.cpp:
(WebCore::Style::Scope::scheduleUpdate):

Clear the style resolver immediately if style sheet content changes. The resolver may
have data structures that point to the old sheet contents.

The resolver would get wiped anyway when the scheduled update actually occurs.

LayoutTests:

* fast/css/selector-text-mutation-crash-expected.txt: Added.
* fast/css/selector-text-mutation-crash.html: Added.

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

3 years ago[WebCrypto] Add support for AES-CFB
jiewen_tan@apple.com [Tue, 21 Feb 2017 20:04:44 +0000 (20:04 +0000)]
[WebCrypto] Add support for AES-CFB
https://bugs.webkit.org/show_bug.cgi?id=168344
<rdar://problem/20940221>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch adds support for AES-CFB. Operations of AES-CFB include: encrypt, decrypt, generateKey,
importKey, exportKey, wrapKey, and unwrapKey. This implementation follows a slightly old version
of WebCryptoAPI spec: https://www.w3.org/TR/2014/CR-WebCryptoAPI-20141211/#aes-cfb.

Tests: crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters.html
       crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters.html
       crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public.html
       crypto/subtle/aes-cfb-generate-export-key-jwk-length-128.html
       crypto/subtle/aes-cfb-generate-export-key-jwk-length-192.html
       crypto/subtle/aes-cfb-generate-export-key-jwk-length-256.html
       crypto/subtle/aes-cfb-generate-export-raw-key.html
       crypto/subtle/aes-cfb-generate-key-encrypt-decrypt.html
       crypto/subtle/aes-cfb-generate-key.html
       crypto/subtle/aes-cfb-import-jwk-key-length-128.html
       crypto/subtle/aes-cfb-import-jwk-key-length-192.html
       crypto/subtle/aes-cfb-import-jwk-key-length-256.html
       crypto/subtle/aes-cfb-import-key-decrypt.html
       crypto/subtle/aes-cfb-import-key-encrypt.html
       crypto/subtle/aes-cfb-import-key-unwrap-jwk-key.html
       crypto/subtle/aes-cfb-import-key-unwrap-raw-key.html
       crypto/subtle/aes-cfb-import-key-wrap-jwk-key.html
       crypto/subtle/aes-cfb-import-key-wrap-raw-key.html
       crypto/subtle/aes-cfb-import-raw-key.html
       crypto/workers/subtle/aes-cfb-import-key-decrypt.html
       crypto/workers/subtle/aes-cfb-import-key-encrypt.html
       crypto/workers/subtle/aes-cfb-import-key-unwrap-key.html
       crypto/workers/subtle/aes-cfb-import-key-wrap-key.html

* CMakeLists.txt:
* DerivedSources.make:
* PlatformGTK.cmake:
* PlatformMac.cmake:
* WebCore.xcodeproj/project.pbxproj:
Add CryptoAlgorithmAES_CFB.cpp,
change AesCbcParams.idl to AesCbcCfbParams.idl.
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::normalizeCryptoAlgorithmParameters):
Add support for AES-CFB.
* crypto/CryptoAlgorithm.h:
Include <wtf/Variant.h>.
* crypto/CryptoAlgorithmParameters.h:
Add support for AES-CFB.
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
(WebCore::CryptoAlgorithmAES_CBC::encrypt):
(WebCore::CryptoAlgorithmAES_CBC::decrypt):
Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams.
* crypto/algorithms/CryptoAlgorithmAES_CFB.cpp: Added.
(WebCore::usagesAreInvalidForCryptoAlgorithmAES_CFB):
(WebCore::CryptoAlgorithmAES_CFB::create):
(WebCore::CryptoAlgorithmAES_CFB::identifier):
(WebCore::CryptoAlgorithmAES_CFB::encrypt):
(WebCore::CryptoAlgorithmAES_CFB::decrypt):
(WebCore::CryptoAlgorithmAES_CFB::generateKey):
(WebCore::CryptoAlgorithmAES_CFB::importKey):
(WebCore::CryptoAlgorithmAES_CFB::exportKey):
* crypto/algorithms/CryptoAlgorithmAES_CFB.h: Added.
* crypto/gnutls/CryptoAlgorithmAES_CFBGnuTLS.cpp: Added.
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
Add dummy support of AES_CFB for GTK+.
* crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:
(WebCore::transformAES_CBC):
Drop conditional PLATFORM(COCOA).
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams.
* crypto/mac/CryptoAlgorithmAES_CFBMac.cpp: Added.
(WebCore::transformAES_CFB):
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
* crypto/mac/CryptoAlgorithmRegistryMac.cpp:
(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
Add support for AES-CFB.
* crypto/parameters/AesCbcCfbParams.idl: Renamed from Source/WebCore/crypto/parameters/AesCbcParams.idl.
* crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h: Renamed from Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h.
Since dictionaries AesCbcParams and AesCfbParams are essentially the same, I combine them together in our implementations.

LayoutTests:

* crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-decrypt-malformed-parameters-expected.txt.
* crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-decrypt-malformed-parameters.html.
* crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-encrypt-malformed-parameters-expected.txt.
* crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-encrypt-malformed-parameters.html.
* crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-import-key-uwrap-jwk-rsa-key-public-expected.txt.
* crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-import-key-uwrap-jwk-rsa-key-public.html.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-128-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-128.html: Added.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-192-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-192.html: Added.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-256-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-export-key-jwk-length-256.html: Added.
* crypto/subtle/aes-cfb-generate-export-raw-key-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-export-raw-key.html: Added.
* crypto/subtle/aes-cfb-generate-key-encrypt-decrypt-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-key-encrypt-decrypt.html: Added.
* crypto/subtle/aes-cfb-generate-key-expected.txt: Added.
* crypto/subtle/aes-cfb-generate-key.html: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-128-expected.txt: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-128.html: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-192-expected.txt: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-192.html: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-256-expected.txt: Added.
* crypto/subtle/aes-cfb-import-jwk-key-length-256.html: Added.
* crypto/subtle/aes-cfb-import-key-decrypt-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-decrypt.html: Added.
* crypto/subtle/aes-cfb-import-key-encrypt-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-encrypt.html: Added.
* crypto/subtle/aes-cfb-import-key-unwrap-jwk-key-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-unwrap-jwk-key.html: Added.
* crypto/subtle/aes-cfb-import-key-unwrap-raw-key-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-unwrap-raw-key.html: Added.
* crypto/subtle/aes-cfb-import-key-wrap-jwk-key-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-wrap-jwk-key.html: Added.
* crypto/subtle/aes-cfb-import-key-wrap-raw-key-expected.txt: Added.
* crypto/subtle/aes-cfb-import-key-wrap-raw-key.html: Added.
* crypto/subtle/aes-cfb-import-raw-key-expected.txt: Added.
* crypto/subtle/aes-cfb-import-raw-key.html: Added.
* crypto/subtle/aes-generate-key-malformed-parameters-expected.txt:
* crypto/subtle/aes-generate-key-malformed-parameters.html:
* crypto/subtle/aes-import-key-malformed-parameters-expected.txt:
* crypto/subtle/aes-import-key-malformed-parameters.html:
* crypto/workers/subtle/aes-cfb-import-key-decrypt-expected.txt: Added.
* crypto/workers/subtle/aes-cfb-import-key-decrypt.html: Added.
* crypto/workers/subtle/aes-cfb-import-key-encrypt-expected.txt: Added.
* crypto/workers/subtle/aes-cfb-import-key-encrypt.html: Added.
* crypto/workers/subtle/aes-cfb-import-key-unwrap-key-expected.txt: Added.
* crypto/workers/subtle/aes-cfb-import-key-unwrap-key.html: Added.
* crypto/workers/subtle/aes-cfb-import-key-wrap-key-expected.txt: Added.
* crypto/workers/subtle/aes-cfb-import-key-wrap-key.html: Added.
* crypto/workers/subtle/resources/aes-cfb-import-key-decrypt.js: Added.
* crypto/workers/subtle/resources/aes-cfb-import-key-encrypt.js: Added.
* crypto/workers/subtle/resources/aes-cfb-import-key-unwrap-key.js: Added.
* crypto/workers/subtle/resources/aes-cfb-import-key-wrap-key.js: Added.

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

3 years agoFix cmake build
jfbastien@apple.com [Tue, 21 Feb 2017 20:00:52 +0000 (20:00 +0000)]
Fix cmake build
https://bugs.webkit.org/show_bug.cgi?id=168665

Reviewed by Mark Lam.

It was broken by r212555 and r212681.

Source/WebKit:

* PlatformMac.cmake:

Tools:

* DumpRenderTree/PlatformMac.cmake:

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

3 years agoUnreviewed, fix the ToT iOS build
wenson_hsieh@apple.com [Tue, 21 Feb 2017 20:00:34 +0000 (20:00 +0000)]
Unreviewed, fix the ToT iOS build

Adopt updated UIKit SPI and remove calls to the deprecated version.

* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard setItems:]):

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

3 years ago[WebRTC] NetworkRTCMonitor should ensure clearing its manager only once
commit-queue@webkit.org [Tue, 21 Feb 2017 19:34:50 +0000 (19:34 +0000)]
[WebRTC] NetworkRTCMonitor should ensure clearing its manager only once
https://bugs.webkit.org/show_bug.cgi?id=168661

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Alex Christensen.

Making sure NetworkRTCMonitor manager is cleared only once.
ALso ensuring that manager does not get destroyed as part of NetworkRTCMonitor destructor.
The manager needs to be destroyed in the RTC network thread.

* NetworkProcess/webrtc/NetworkRTCMonitor.cpp:
(WebKit::NetworkRTCMonitor::~NetworkRTCMonitor):
(WebKit::NetworkRTCMonitor::stopUpdating):
* NetworkProcess/webrtc/NetworkRTCMonitor.h:

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

3 years ago[WebRTC][Mac][WebKit2] Revise sandbox to limit connections to UDP and TCP
bfulgham@apple.com [Tue, 21 Feb 2017 19:29:10 +0000 (19:29 +0000)]
[WebRTC][Mac][WebKit2] Revise sandbox to limit connections to UDP and TCP
https://bugs.webkit.org/show_bug.cgi?id=168664
<rdar://problem/30600587>

Reviewed by Youenn Fablet.

Add filters to the WebRTC rule to limit network traffic to UDP and TCP.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

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

3 years ago[Win] WebView is not painting in accelerated compositing mode.
pvollan@apple.com [Tue, 21 Feb 2017 19:21:31 +0000 (19:21 +0000)]
[Win] WebView is not painting in accelerated compositing mode.
https://bugs.webkit.org/show_bug.cgi?id=168654

Reviewed by Brent Fulgham.

Initializing the uncommitted layer change flags to CoverageRectChanged in GraphicsLayerCA,
stops WebView painting in accelerated mode.

Covered by existing tests.

* platform/graphics/ca/GraphicsLayerCA.h:

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

3 years agoImprove bot watcher's dashboard performance
ap@apple.com [Tue, 21 Feb 2017 19:11:27 +0000 (19:11 +0000)]
Improve bot watcher's dashboard performance
https://bugs.webkit.org/show_bug.cgi?id=168624
<rdar://problem/30190109>

Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:
There was an unnecessary linear complexity algorithm in indexOfRevision().

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

3 years agoMake logging in high-priority audio threads less expensive
jer.noble@apple.com [Tue, 21 Feb 2017 18:45:10 +0000 (18:45 +0000)]
Make logging in high-priority audio threads less expensive
https://bugs.webkit.org/show_bug.cgi?id=168639

Reviewed by Jon Lee.

Logging from inside a high-priority audio thread will make a number of calls to malloc, block, and
therefore cause audio glitches. Make this logging less expensive by dispatching to the main thread
before creating and outputting the log string.

* WebCore.xcodeproj/project.pbxproj:
* platform/audio/mac/AudioSampleDataSource.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp.
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):

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

3 years agoCheck what LocalStorage data exists in deleteDatabasesModifiedSince() before attempti...
ryanhaddad@apple.com [Tue, 21 Feb 2017 18:36:00 +0000 (18:36 +0000)]
Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
https://bugs.webkit.org/show_bug.cgi?id=168659
rdar://problem/22781730

Patch by Maureen Daum <mdaum@apple.com> on 2017-02-21
Reviewed by Brady Eidson.

Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
It is possible that another process has caused information to be added to LocalStorage
after we created this LocalStorageDatabaseTracker instance, so we should update our
internal state by checking the contents of StorageTracker.db and the other local
storage files so we know what databases actually exist. By calling importOriginIdentifiers()
at the start of deleteDatabasesModifiedSince(), m_origins will now have the up-to-date
list of origins LocalStorage contains data for.

* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):

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

3 years agoGive the Mock audio input a "hum" to make drop-outs more detectable
jer.noble@apple.com [Tue, 21 Feb 2017 18:28:47 +0000 (18:28 +0000)]
Give the Mock audio input a "hum" to make drop-outs more detectable
https://bugs.webkit.org/show_bug.cgi?id=168641

Reviewed by Eric Carlson.

Add two helper functions to generate waveforms: addHum() and writeHum(). Use these methods
to create a bip-bop audio buffer which can be used to "blit" a portion the waveform into the
destination buffer during rendering. The background hum must be seamless across multiple
pull operations, so add the hum sound during rendering.

To ensure the waveform buffer is created, initialize the sampleRate to zero, then call
applySampleRate() with the desired default rate, 44.1kHz.

* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::writeHum):
(WebCore::addHum):
(WebCore::MockRealtimeAudioSource::create):
(WebCore::MockRealtimeAudioSourceMac::render):
(WebCore::MockRealtimeAudioSourceMac::applySampleRate):

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

3 years agoReduce platform ifdefs in WebKit2 custom protocols implementation
commit-queue@webkit.org [Tue, 21 Feb 2017 18:24:51 +0000 (18:24 +0000)]
Reduce platform ifdefs in WebKit2 custom protocols implementation
https://bugs.webkit.org/show_bug.cgi?id=165028

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-21
Reviewed by Darin Adler.

Make mac implementation use the APICustomProtocolManagerClient to share more code with the soup based ports.

* CMakeLists.txt: Add CustomProtocolManagerProxy.cpp.
* PlatformEfl.cmake: Remove CustomProtocolManagerProxySoup.cpp.
* PlatformGTK.cmake: Ditto.
* PlatformMac.cmake: Remove CustomProtocolManagerProxyMac.mm.
* UIProcess/API/APICustomProtocolManagerClient.h:
(API::CustomProtocolManagerClient::startLoading): Make it void, since we were always returning true and the
returned value was ignored.
* UIProcess/API/efl/ewk_url_scheme_request.cpp:
(EwkUrlSchemeRequest::finish): Update to new CustomProtocolManagerProxy API.
* UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp:
* UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
(webkitURISchemeRequestReadCallback): Ditto.
* UIProcess/Cocoa/CustomProtocolManagerClient.h: Added.
* UIProcess/Cocoa/CustomProtocolManagerClient.mm: Added.
(-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:]):
(-[WKCustomProtocolLoader dealloc]):
(-[WKCustomProtocolLoader connection:didFailWithError:]):
(-[WKCustomProtocolLoader connection:didReceiveResponse:]):
(-[WKCustomProtocolLoader connection:didReceiveData:]):
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
(-[WKCustomProtocolLoader connectionDidFinishLoading:]):
(WebKit::CustomProtocolManagerClient::startLoading):
(WebKit::CustomProtocolManagerClient::stopLoading):
(WebKit::CustomProtocolManagerClient::invalidate):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize): Set the CustomProtocolManagerClient.
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.
* UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.cpp: Added.
(WebKit::CustomProtocolManagerProxy::startLoading):
(WebKit::CustomProtocolManagerProxy::processDidClose):
(WebKit::CustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::CustomProtocolManagerProxy::didReceiveResponse):
* UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::globalURLSchemesWithCustomProtocolHandlers): Just moved here to use it from ensureNetworkProcess().
(WebKit::WebProcessPool::WebProcessPool): Remove soup ifdefs.
(WebKit::WebProcessPool::setCustomProtocolManagerClient): Moved from the soup implementation.
(WebKit::WebProcessPool::ensureNetworkProcess): Initialize custom protocols parameters.
(WebKit::WebProcessPool::registerSchemeForCustomProtocol): Register the protocol if not already registered globally.
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Remove soup ifdefs.
* UIProcess/WebProcessPool.h: Remove soup ifdefs.
* UIProcess/efl/RequestManagerClientEfl.cpp:
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.
* WebKit2.xcodeproj/project.pbxproj:

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

3 years agoWeb Inspector: RTL: console scope bar's unread message indicator is misaligned
bburg@apple.com [Tue, 21 Feb 2017 18:20:07 +0000 (18:20 +0000)]
Web Inspector: RTL: console scope bar's unread message indicator is misaligned
https://bugs.webkit.org/show_bug.cgi?id=168625

Reviewed by Matt Baker.

* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li.unread::before):
(body[dir=ltr] .log-scope-bar > li.unread::before):
(body[dir=rtl] .log-scope-bar > li.unread::before):

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

3 years agoRemove unused files.
commit-queue@webkit.org [Tue, 21 Feb 2017 18:12:20 +0000 (18:12 +0000)]
Remove unused files.
https://bugs.webkit.org/show_bug.cgi?id=168656.

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-02-21
Reviewed by Csaba Osztrogonác.

Remove files which became unused after removal of EFL port.

* UIProcess/CoordinatedGraphics/PageViewportController.cpp: Removed.
* UIProcess/CoordinatedGraphics/PageViewportController.h: Removed.
* UIProcess/PageViewportControllerClient.h: Removed.

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

3 years agoUnreviewed, rolling out r212712.
ryanhaddad@apple.com [Tue, 21 Feb 2017 18:00:43 +0000 (18:00 +0000)]
Unreviewed, rolling out r212712.

This change broke the CLoop build.

Reverted changeset:

"JSModuleNamespace object should have IC"
https://bugs.webkit.org/show_bug.cgi?id=160590
http://trac.webkit.org/changeset/212712

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

3 years agoMake TrackPrivateBase ThreadSafeRefCounted, so that it can be retained in non-main...
jer.noble@apple.com [Tue, 21 Feb 2017 17:25:02 +0000 (17:25 +0000)]
Make TrackPrivateBase ThreadSafeRefCounted, so that it can be retained in non-main threads
https://bugs.webkit.org/show_bug.cgi?id=168642

Reviewed by Eric Carlson.

AudioTrackPrivateMediaStreamCocoa has two entry points from background threads:
audioSamplesAvailable() and render(). Protect against being destroyed mid-execution by
retaining this for the duration of those methods.

* platform/graphics/TrackPrivateBase.h:
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
(WebCore::AudioTrackPrivateMediaStreamCocoa::render):

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

3 years agoPulling too quickly from an AudioSampleDataSource should increase the pre-buffer...
jer.noble@apple.com [Tue, 21 Feb 2017 17:24:34 +0000 (17:24 +0000)]
Pulling too quickly from an AudioSampleDataSource should increase the pre-buffer amount
https://bugs.webkit.org/show_bug.cgi?id=168645

Reviewed by Eric Carlson.

If a pull operation runs past the end of the buffered range of a CARingBuffer, the underrun
is zero-filled, causing an audible glitch.  In this case, bias m_outputSampleOffset by the
amount of the underrun, which should keep the underrun from reoccurring.

* platform/audio/mac/AudioSampleDataSource.cpp:
(WebCore::AudioSampleDataSource::pullSamplesInternal):

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

3 years agoAudioSampleBufferList::zeroABL() takes a byte-count, not a sample-count.
jer.noble@apple.com [Tue, 21 Feb 2017 17:19:10 +0000 (17:19 +0000)]
AudioSampleBufferList::zeroABL() takes a byte-count, not a sample-count.
https://bugs.webkit.org/show_bug.cgi?id=168635

Reviewed by Jon Lee.

* platform/audio/mac/AudioSampleDataSource.cpp:
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks):

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

3 years ago[WebRTC] LibWebRTCSocket::SendTo message should have a correct SocketAddress
commit-queue@webkit.org [Tue, 21 Feb 2017 16:27:35 +0000 (16:27 +0000)]
[WebRTC] LibWebRTCSocket::SendTo message should have a correct SocketAddress
https://bugs.webkit.org/show_bug.cgi?id=168636

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

* WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
(WebKit::LibWebRTCSocket::SendTo): Ensuring address remains valid during SendTo message lifetime.

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

3 years agoJSModuleNamespace object should have IC
utatane.tea@gmail.com [Tue, 21 Feb 2017 10:38:58 +0000 (10:38 +0000)]
JSModuleNamespace object should have IC
https://bugs.webkit.org/show_bug.cgi?id=160590

Reviewed by Saam Barati.

JSTests:

* modules/module-assert-access-binding.js: Added.
* modules/module-assert-access-namespace.js: Added.
* modules/namespace-empty.js: Added.
(from.string_appeared_here.access):
(i.shouldThrow):
* stress/module-namespace-access-change.js: Added.
(shouldBe):
(access):
(import.string_appeared_here.then):
* stress/module-namespace-access-non-constant.js: Added.
(shouldBe):
(import.string_appeared_here.then):
* stress/module-namespace-access-poly.js: Added.
(shouldBe):
(access):
(import.string_appeared_here.then):
* stress/module-namespace-access-transitive-exports.js: Added.
(shouldBe):
(import.string_appeared_here.then):
* stress/module-namespace-access.js: Added.
(shouldBe):
(import.string_appeared_here.then):
* stress/resources/module-namespace-access-transitive-exports-2.js: Added.
(export.cocoa):
(export.change):
* stress/resources/module-namespace-access-transitive-exports.js: Added.
* stress/resources/module-namespace-access.js: Added.
(export.cocoa):
(export.change):

Source/JavaScriptCore:

This patch optimizes accesses to module namespace objects.

1. Cache the resolutions for module namespace objects.

    When constructing the module namespace object, we already resolves all the exports.
    The module namespace object caches this result and leverage it in the later access in
    getOwnPropertySlot. This avoids resolving bindings through resolveExport.

2. Introduce ModuleNamespaceLoad IC.

    This patch adds new IC for module namespace objects. The mechanism is simple, getOwnPropertySlot
    tells us about module namespace object resolution. The IC first checks whether the given object
    is an expected module namespace object. If this check succeeds, we load the value from the module
    environment.

3. Introduce DFG/FTL optimization.

    After exploiting module namespace object accesses in (2), DFG can recognize this in ByteCodeParser.
    DFG will convert it to CheckCell with the namespace object and GetClosureVar from the cached environment.
    At that time, we have a chance to fold it to the constant.

This optimization improves the performance of accessing to module namespace objects.

Before
    $ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-namespace.js
    ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m   0.43s user 0.03s system 101% cpu 0.451 total
    $ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-binding.js
    ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m   0.08s user 0.02s system 103% cpu 0.104 total

After
    $ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-namespace.js
    ../../WebKitBuild/module-ic/Release/bin/jsc -m   0.11s user 0.01s system 106% cpu 0.109 total
    $ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.js
    ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.j  0.08s user 0.02s system 102% cpu 0.105 total

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/AccessCase.cpp:
(JSC::AccessCase::create):
(JSC::AccessCase::guardedByStructureCheck):
(JSC::AccessCase::canReplace):
(JSC::AccessCase::visitWeak):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):
* bytecode/AccessCase.h:
* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::GetByIdStatus):
(JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByIdStatus::makesCalls):
(JSC::GetByIdStatus::dump):
* bytecode/GetByIdStatus.h:
(JSC::GetByIdStatus::isModuleNamespace):
(JSC::GetByIdStatus::takesSlowPath):
(JSC::GetByIdStatus::moduleNamespaceObject):
(JSC::GetByIdStatus::moduleEnvironment):
(JSC::GetByIdStatus::scopeOffset):
* bytecode/ModuleNamespaceAccessCase.cpp: Added.
(JSC::ModuleNamespaceAccessCase::ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::create):
(JSC::ModuleNamespaceAccessCase::~ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::clone):
(JSC::ModuleNamespaceAccessCase::emit):
* bytecode/ModuleNamespaceAccessCase.h: Added.
(JSC::ModuleNamespaceAccessCase::moduleNamespaceObject):
(JSC::ModuleNamespaceAccessCase::moduleEnvironment):
(JSC::ModuleNamespaceAccessCase::scopeOffset):
* bytecode/PolymorphicAccess.cpp:
(WTF::printInternal):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleModuleNamespaceLoad):
(JSC::DFG::ByteCodeParser::handleGetById):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::loadValue):
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
* runtime/AbstractModuleRecord.cpp:
(JSC::AbstractModuleRecord::getModuleNamespace):
* runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildren):
(JSC::getValue):
(JSC::JSModuleNamespaceObject::getOwnPropertySlot):
(JSC::JSModuleNamespaceObject::getOwnPropertyNames):
* runtime/JSModuleNamespaceObject.h:
(JSC::isJSModuleNamespaceObject):
(JSC::JSModuleNamespaceObject::create): Deleted.
(JSC::JSModuleNamespaceObject::createStructure): Deleted.
(JSC::JSModuleNamespaceObject::moduleRecord): Deleted.
* runtime/JSModuleRecord.h:
(JSC::JSModuleRecord::moduleEnvironment): Deleted.
* runtime/PropertySlot.h:
(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::domJIT):
(JSC::PropertySlot::moduleNamespaceSlot):
(JSC::PropertySlot::setValueModuleNamespace):
(JSC::PropertySlot::setCacheableCustom):

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

3 years agoREGRESSION(r212681): Crash when dragging links without a drag image
carlosgc@webkit.org [Tue, 21 Feb 2017 10:37:31 +0000 (10:37 +0000)]
REGRESSION(r212681): Crash when dragging links without a drag image
https://bugs.webkit.org/show_bug.cgi?id=168648

Reviewed by Tim Horton.

This happens in GTK+ port, because we don't use a drag image for links.

Fixes: editing/pasteboard/drop-link.html
       editing/pasteboard/drop-text-without-selection.html
       editing/pasteboard/files-during-page-drags.html
       fast/events/content-changed-during-drop.html
       fast/events/drag-and-drop-link-fast-multiple-times-does-not-crash.html
       fast/events/drag-and-drop-link-into-focused-contenteditable.html
       fast/events/drag-and-drop-link.html
       fast/events/drag-in-frames.html
       fast/events/drag-parent-node.html
       fast/events/shift-drag-selection-on-link-triggers-drag-n-drop.html

* page/DragController.cpp:
(WebCore::DragController::startDrag): Do not try to use drag image and its size when createDragImageForLink
returns nullptr.

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

3 years agoASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialize...
utatane.tea@gmail.com [Tue, 21 Feb 2017 09:07:41 +0000 (09:07 +0000)]
ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings
https://bugs.webkit.org/show_bug.cgi?id=168605

Reviewed by Saam Barati.

JSTests:

* modules/module-namespace-is-frozen.js: Added.
(from.string_appeared_here.shouldThrow):
(export.b):
* modules/module-namespace-is-sealed.js: Added.
(from.string_appeared_here.shouldThrow):
(export.b):

Source/JavaScriptCore:

We should check exception state after calling getOwnPropertyDescriptor() since it can throw errors.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):

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

3 years agoUnreviewed, rolling out r212699.
achristensen@apple.com [Tue, 21 Feb 2017 08:19:34 +0000 (08:19 +0000)]
Unreviewed, rolling out r212699.

Internal build not ready

Reverted changeset:

"[WebRTC][Mac] Activate libwebrtc"
https://bugs.webkit.org/show_bug.cgi?id=167293
http://trac.webkit.org/changeset/212699

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

3 years agoRemove ENABLE_THREADED_COMPOSITOR build option
carlosgc@webkit.org [Tue, 21 Feb 2017 07:12:17 +0000 (07:12 +0000)]
Remove ENABLE_THREADED_COMPOSITOR build option
https://bugs.webkit.org/show_bug.cgi?id=168606

Reviewed by Michael Catanzaro.

.:

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

* platform/TextureMapper.cmake:

Source/WebKit2:

Now that we have AC mode on demand with the threaded compositor there's no reason to keep the old AC code.

* PlatformGTK.cmake:
* WebProcess/WebPage/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::create):
* WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: Removed.
* WebProcess/WebPage/gtk/LayerTreeHostGtk.h: Removed.

Tools:

* Scripts/webkitperl/FeatureList.pm:

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

3 years agoWeb Inspector: Tooltip for "Show console tab" should read "Show Console tab"
commit-queue@webkit.org [Tue, 21 Feb 2017 06:37:30 +0000 (06:37 +0000)]
Web Inspector: Tooltip for "Show console tab" should read "Show Console tab"
https://bugs.webkit.org/show_bug.cgi?id=168630
<rdar://problem/30621662>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-20
Reviewed by Brian Burg.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):

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

3 years agoFix some 32-bit builds after r212699
achristensen@apple.com [Tue, 21 Feb 2017 06:37:06 +0000 (06:37 +0000)]
Fix some 32-bit builds after r212699

* platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::OnFrame):
Explicitly cast OSStatus to int for logging.

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

3 years agoRemove unnecessary PerformanceEntry virtual methods
commit-queue@webkit.org [Tue, 21 Feb 2017 05:51:36 +0000 (05:51 +0000)]
Remove unnecessary PerformanceEntry virtual methods
https://bugs.webkit.org/show_bug.cgi?id=168633

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-20
Reviewed by Ryosuke Niwa.

* page/PerformanceEntry.h:
(WebCore::PerformanceEntry::isResource):
(WebCore::PerformanceEntry::isMark):
(WebCore::PerformanceEntry::isMeasure):
Implement based on the Type.

* page/PerformanceMark.h:
* page/PerformanceMeasure.h:
* page/PerformanceResourceTiming.h:
Remove virtual overrides.

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

3 years ago[WebRTC][Mac] Activate libwebrtc
achristensen@apple.com [Tue, 21 Feb 2017 05:50:06 +0000 (05:50 +0000)]
[WebRTC][Mac] Activate libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167293
LayoutTests/imported/w3c:

<rdar://problem/30401864>

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-20
Reviewed by Alex Christensen.

* web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
* web-platform-tests/webrtc/no-media-call-expected.txt:
* web-platform-tests/webrtc/promises-call-expected.txt:

Source/ThirdParty/libwebrtc:

<rdar://problem/30401864>

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

Doing some clean-up.

* Configurations/libwebrtc.xcconfig:
* Source/webrtc/base/checks.h:
* libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

* Configurations/WebCore.xcconfig:
* Configurations/WebCoreTestSupport.xcconfig:

Source/WebKit2:

<rdar://problem/30401864>

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

Activating PeerConnection runtime flag based on successful loading of libwebrtc.dylib.

* Configurations/WebKit.xcconfig:
* Shared/WebPreferencesDefinitions.h:
* UIProcess/WebPreferences.cpp:
(WebKit::checkWebRTCAvailability):

Source/WTF:

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

* wtf/Platform.h:

Tools:

<rdar://problem/30401864>

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

Fixing paths to allow loading libwebrtc.dylib successfully.

* Scripts/build-webkit:
* Scripts/webkitdirs.pm:
(setupMacWebKitEnvironment):
(setupIOSWebKitEnvironment):

LayoutTests:

<rdar://problem/30401864>

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Alex Christensen.

* TestExpectations:
* fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt:
* fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt:
* fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:
* fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt:
* platform/gtk/TestExpectations:
* platform/gtk/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt: Added.
* platform/gtk/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt.
* platform/gtk/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt.
* platform/gtk/fast/mediastream/RTCPeerConnection-closed-state-expected.txt: Added.
* platform/gtk/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt.
* platform/gtk/fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event-expected.txt: Added.
* platform/gtk/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt.
* platform/gtk/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
* platform/gtk/fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt: Added.
* platform/gtk/fast/mediastream/RTCRtpSender-replaceTrack-expected.txt: Added.
* platform/gtk/fast/mediastream/no-media-call-expected.txt: Added.
* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk1/TestExpectations:

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

3 years agoASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
commit-queue@webkit.org [Tue, 21 Feb 2017 05:02:32 +0000 (05:02 +0000)]
ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
https://bugs.webkit.org/show_bug.cgi?id=168356
<rdar://problem/30592486>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-20
Reviewed by Ryosuke Niwa.

Source/WebCore:

* page/DOMWindow.cpp:
(WebCore::DOMWindow::removeAllEventListeners):
Remove Performance object EventListeners.

* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeAllEventListeners):
(WebCore::WorkerGlobalScope::performance):
* workers/WorkerGlobalScope.h:
Remove Performance object EventListeners.
Also clear Performance early in destruction since its ContextDestructionObserver
destruction makes checks about the WorkerThread.

LayoutTests:

* TestExpectations:
Unskip tests now that they no longer trigger assertions.

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

3 years agoStop exporting interface WebCoreScrollView on iOS
aakash_jain@apple.com [Tue, 21 Feb 2017 04:44:17 +0000 (04:44 +0000)]
Stop exporting interface WebCoreScrollView on iOS
https://bugs.webkit.org/show_bug.cgi?id=168536

Reviewed by Dan Bernstein.

* WebKit.exp: Moved symbol for WebCoreScrollView interface to mac specific file.
* WebKit.mac.exp: Ditto.
* WebView/WebHTMLView.mm: WebCoreScrollView shouldn't be defined for iOS platform.

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

3 years agoLocal audio-only stream will not trigger playback to begin
jer.noble@apple.com [Tue, 21 Feb 2017 02:35:35 +0000 (02:35 +0000)]
Local audio-only stream will not trigger playback to begin
https://bugs.webkit.org/show_bug.cgi?id=168412

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/local-audio-playing-event.html

With video-bearing streams, the first video sample emitted from the stream causes the
readyState to move from HAVE_NOTHING to HAVE_ENOUGH_DATA. Wire up this same behavior for
audio-bearing streams. Add a MediaStreamTrackPrivate::Observer callback method
audioSamplesAvailable(), which gets passed up to MediaPlayerPrivateMediaStreamAVFObjC.
Because this callback may be (and probably will be) called on a background thread, run the
updateReadyState() task in a scheduledDeferredTask().

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioSamplesAvailable):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks):
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
* platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::Observer::audioSamplesAvailable):

LayoutTests:

* fast/mediastream/local-audio-playing-event-expected.txt: Added.
* fast/mediastream/local-audio-playing-event.html: Added.

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

3 years agoWeb Inspector: RTL: back/forward navigation buttons should not be flipped
bburg@apple.com [Tue, 21 Feb 2017 02:32:38 +0000 (02:32 +0000)]
Web Inspector: RTL: back/forward navigation buttons should not be flipped
https://bugs.webkit.org/show_bug.cgi?id=168275
<rdar://problem/30506897>

Reviewed by Matt Baker.

The leading button is always "back" and the trailing button is always "forward", but
in RTL the icons are swapped so that it still looks like '< >' from left-to-right.

Rename the two arrows in the SVG to "left" and "right" arrows, and use them appropriately
in ContentBrowser for back-forward icons based on the layout direction.

* UserInterface/Images/BackForwardArrows.svg:
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser):
* UserInterface/Views/FindBanner.css:
(.find-banner > button.segmented.left > .glyph):
(.find-banner > button.segmented.left:active:not(:disabled) > .glyph):
(.find-banner > button.segmented.right > .glyph):
(.find-banner > button.segmented.right:active:not(:disabled) > .glyph):

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

3 years agoExclude various mac-specific header files from iOS build
aakash_jain@apple.com [Tue, 21 Feb 2017 02:23:39 +0000 (02:23 +0000)]
Exclude various mac-specific header files from iOS build
https://bugs.webkit.org/show_bug.cgi?id=168621

Reviewed by Dan Bernstein.

* Configurations/WebKitLegacy.xcconfig:

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

3 years agoSimple line layout: Implement absoluteQuadsForRange.
zalan@apple.com [Tue, 21 Feb 2017 02:12:04 +0000 (02:12 +0000)]
Simple line layout: Implement absoluteQuadsForRange.
https://bugs.webkit.org/show_bug.cgi?id=168613
<rdar://problem/30614618>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that the commonly used Range::getClientRects calls do not
throw us off of the simple line layout path.

Test: fast/dom/Range/simple-line-layout-getclientrects.html

* rendering/RenderText.cpp:
(WebCore::RenderText::absoluteQuadsForRange):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::collectAbsoluteQuadsForRange): Special case empty ranges with multiple empty runs.
* rendering/SimpleLineLayoutFunctions.h:
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets):
* rendering/SimpleLineLayoutResolver.h:

LayoutTests:

* fast/dom/Range/simple-line-layout-getclientrects-expected.html: Added.
* fast/dom/Range/simple-line-layout-getclientrects.html: Added.

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

3 years ago[Re-landing] CachedCall should let GC know to keep its arguments alive.
mark.lam@apple.com [Tue, 21 Feb 2017 01:51:05 +0000 (01:51 +0000)]
[Re-landing] CachedCall should let GC know to keep its arguments alive.
https://bugs.webkit.org/show_bug.cgi?id=168567
<rdar://problem/30475767>

Reviewed by Saam Barati.

Source/JavaScriptCore:

We fix this by having CachedCall use a MarkedArgumentBuffer to store its
arguments instead of a Vector.

Also declared CachedCall, MarkedArgumentBuffer, and ProtoCallFrame as
WTF_FORBID_HEAP_ALLOCATION because they rely on being stack allocated for
correctness.

Update: the original patch has a bug in MarkedArgumentBuffer::expandCapacity()
where it was copying and calling addMarkSet() on values in m_buffer beyond m_size
(up to m_capacity).  As a result, depending on the pre-existing values in
m_inlineBuffer, this may result in a computed Heap pointer that is wrong, and
subsequently, manifest as a crash.  This is likely to be the cause of the PLT
regression.

I don't have a new test for this fix because the issue relies on sufficiently bad
values randomly showing up in m_inlineBuffer when we do an ensureCapacity() which
calls expandCapacity().

* interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
(JSC::CachedCall::call):
(JSC::CachedCall::clearArguments):
(JSC::CachedCall::appendArgument):
(JSC::CachedCall::setArgument): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::emptyList):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::prepareForRepeatCall):
* interpreter/Interpreter.h:
* interpreter/ProtoCallFrame.h:
* runtime/ArgList.cpp:
(JSC::MarkedArgumentBuffer::slowEnsureCapacity):
(JSC::MarkedArgumentBuffer::expandCapacity):
(JSC::MarkedArgumentBuffer::slowAppend):
* runtime/ArgList.h:
(JSC::MarkedArgumentBuffer::append):
(JSC::MarkedArgumentBuffer::ensureCapacity):
* runtime/StringPrototype.cpp:
(JSC::replaceUsingRegExpSearch):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
a class declared with it is malloced.

While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
being embedded in another class that is heap allocated, it does at minimum
document the intent and gives the users of this class a chance to do the
right thing.

* WTF.xcodeproj/project.pbxproj:
* wtf/ForbidHeapAllocation.h: Added.

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

3 years agoUnreviewed, rolling out r212685.
ryanhaddad@apple.com [Tue, 21 Feb 2017 01:48:10 +0000 (01:48 +0000)]
Unreviewed, rolling out r212685.

This change broke the 32-bit Sierra build.

Reverted changeset:

"Resource Load Statistics: Add alternate classification
method"
https://bugs.webkit.org/show_bug.cgi?id=168347
http://trac.webkit.org/changeset/212685

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

3 years ago[WebIDL] Add support for constructors that have variadic parameters
commit-queue@webkit.org [Tue, 21 Feb 2017 01:44:42 +0000 (01:44 +0000)]
[WebIDL] Add support for constructors that have variadic parameters
https://bugs.webkit.org/show_bug.cgi?id=168614

Patch by Sam Weinig <sam@webkit.org> on 2017-02-20
Reviewed by Alex Christensen.

In preparation of removing some more custom bindings, move the constructor calling
code over to using GenerateParametersCheck completely. This required
- Removing special case of NamedConstructors automatically getting a Document passed
  to them. The three named constructors that expected this have been updated to add
  the required attributes.
- Add a version of the GenerateCallWith prologue for constructors.
- Remove now unnecessary argumentCount return value from GenerateParametersCheck.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateCallWithUsingReferences):
(GenerateCallWithUsingPointers):
(GenerateConstructorCallWithUsingPointers):
(GenerateCallWith):
(GenerateParametersCheck):
(GenerateConstructorDefinition):

* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
Update results for more consistent placement of ScriptExecutionContext and Document
accessors, add UNLIKELY to context checks, and remove automatic Document passing
for NamedConstructors.

* html/HTMLAudioElement.idl:
* html/HTMLImageElement.idl:
* html/HTMLOptionElement.idl:
Add ConstructorCallWith=Document.

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

3 years agoWeb Inspector: RTL: hierarchical path components need spacing and icon adjustments
bburg@apple.com [Tue, 21 Feb 2017 01:22:31 +0000 (01:22 +0000)]
Web Inspector: RTL: hierarchical path components need spacing and icon adjustments
https://bugs.webkit.org/show_bug.cgi?id=168581

Reviewed by Matt Baker.

Flip a bunch of padding, margin, and offsets. Flip the chevron using a CSS transform.

* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component):
(.hierarchical-path-component > .icon):
(.hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=ltr] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=rtl] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(.hierarchical-path-component > .selector-arrows):
(.hierarchical-path-component > select):
(body[dir=ltr] .hierarchical-path-component > select):
(body[dir=rtl] .hierarchical-path-component > select):
(.hierarchical-path-component > .separator):
(body[dir=ltr] .hierarchical-path-component > .separator):
(body[dir=rtl] .hierarchical-path-component > .separator):
(.hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only):
(body[dir=rtl] .hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only > select):
(body[dir=rtl] .hierarchical-path-component.text-only > select):

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

3 years agoAdd mac-wk1 baseline for fast/canvas/webgl/context-creation-attributes.html
ryanhaddad@apple.com [Tue, 21 Feb 2017 00:35:08 +0000 (00:35 +0000)]
Add mac-wk1 baseline for fast/canvas/webgl/context-creation-attributes.html
https://bugs.webkit.org/show_bug.cgi?id=168623

Unreviewed test gardening.

* platform/mac-wk1/fast/canvas/webgl/context-creation-attributes-expected.txt: Added.

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

3 years agoResource Load Statistics: Add alternate classification method
wilander@apple.com [Tue, 21 Feb 2017 00:34:37 +0000 (00:34 +0000)]
Resource Load Statistics: Add alternate classification method
https://bugs.webkit.org/show_bug.cgi?id=168347
<rdar://problem/30352793>

Reviewed by Alex Christensen.

Source/WebCore:

This patch only adds test infrastructure in WebCore.

Tests: http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html
       http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html
       http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html
       http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html
       http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html
       http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html
       http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html
       http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html

* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setSubframeUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUniqueRedirectTo):
* loader/ResourceLoadObserver.h:

Source/WebKit2:

This patch adds a CorePrediction-based classifier to the WebResourceLoadStatisticsStore.
The CorePrediction framework is introduced as a dependency for macOS and iOS. The patch
also adds functions to support layout tests of the feature.

* Configurations/BaseTarget.xcconfig:
* Configurations/WebKit.xcconfig:
    Added dependency on CorePrediction.
* Platform/classifier: Added.
* Platform/classifier/ResourceLoadStatisticsClassifier.h: Added.
    Pulls in the Cocoa-specific classifier for Cocoa-based platforms.
(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):
* Platform/classifier/ResourceLoadStatisticsClassifierBase.cpp: Added.
(WebKit::ResourceLoadStatisticsClassifierBase::hasPrevalentResourceCharacteristics):
    Shared classifier logic.
(WebKit::ResourceLoadStatisticsClassifierBase::classifyWithVectorThreshold):
    Fallback classifier for when we don't have CorePrediction.
* Platform/classifier/ResourceLoadStatisticsClassifierBase.h: Added.
(WebKit::ResourceLoadStatisticsClassifierBase::ResourceLoadStatisticsClassifierBase):
(WebKit::ResourceLoadStatisticsClassifierBase::~ResourceLoadStatisticsClassifierBase):
* Platform/classifier/cocoa: Added.
* Platform/classifier/cocoa/CorePredictionSPI.h: Added.
    Includes CorePrediction if available, otherwise declares needed symbols.
    Always redeclares the functions so we'll get a build error if
    CorePrediction changes.
* Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Added.
(WebKit::ResourceLoadStatisticsClassifier::classify):
(WebKit::ResourceLoadStatisticsClassifier::storagePath):
(WebKit::ResourceLoadStatisticsClassifier::shouldUseCorePrediction):
    The new classifier for Cocoa platforms.
* Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Added.
(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):
* PlatformGTK.cmake:
   Added Platform/classifier directory and ResourceLoadStatisticsClassifierBase.cpp.
* PlatformMac.cmake:
   Added Platform/classifier and Platform/classifier/cocoa directories, and
   source files ResourceLoadStatisticsClassifierBase.cpp and
   ResourceLoadStatisticsClassifierCocoa.cpp
* Resources/ResourceLoadStatistics: Added.
* Resources/ResourceLoadStatistics/corePrediction_model: Added.
    Model file to load into CorePrediction.
* UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
(WKResourceLoadStatisticsManagerSetSubframeUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUniqueRedirectTo):
    Test infrastructure.
* UIProcess/API/C/WKResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):
    Test infrastructure.
* UIProcess/WebResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
    Renamed m_storagePath to m_statisticsStoragePath for clarity.
(WebKit::WebResourceLoadStatisticsStore::classifyResource):
    Now calls the classifier through its ResourceLoadStatisticsClassifier
    member variable.
(WebKit::WebResourceLoadStatisticsStore::persistentStoragePath):
    Renamed m_storagePath to m_statisticsStoragePath for clarity.
(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
    Renamed m_storagePath to m_statisticsStoragePath for clarity.
(WebKit::WebResourceLoadStatisticsStore::hasPrevalentResourceCharacteristics): Deleted.
* UIProcess/WebResourceLoadStatisticsStore.h:
* WebKit2.xcodeproj/project.pbxproj:
    Added the new classifier source files under Platform/classifier and the
    corePrediction_model file under Resources/ResourceLoadStatistics.

Source/WTF:

* wtf/Platform.h:
    Added support for HAVE(CORE_PREDICTION).

Tools:

Added three testRunner functions to facilitate layout tests:
- setStatisticsSubframeUnderTopFrameOrigin()
- setStatisticsSubresourceUnderTopFrameOrigin()
- setStatisticsSubresourceUniqueRedirectTo()

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

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework/CorePrediction.tbd: Added.
    Stubs for private framework.

LayoutTests:

* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Added.
* platform/gtk/TestExpectations:
    The whole http/tests/loading/resourceLoadStatistics marked as crashing based on
    Carlos Garcia Campos's assessment in https://bugs.webkit.org/show_bug.cgi?id=168171.
* platform/wk2/TestExpectations:
    The above tests are only valid for WebKit2. Marked as [ Pass ].

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

3 years agoUse the new drag code path when dragging links
andersca@apple.com [Tue, 21 Feb 2017 00:08:34 +0000 (00:08 +0000)]
Use the new drag code path when dragging links
https://bugs.webkit.org/show_bug.cgi?id=168612

Reviewed by Tim Horton.

Source/WebCore:

* editing/Editor.cpp:
(WebCore::Editor::copyURL):
Use userVisibleString instead of fillInUserVisibleForm.

(WebCore::Editor::pasteboardWriterURL):
New function that returns a PasteboardWriterData::URL for a given URL + title.

* editing/Editor.h:
Add new members.

* editing/mac/EditorMac.mm:
(WebCore::Editor::userVisibleString):
(WebCore::Editor::fillInUserVisibleForm): Deleted.
Add a getter instead of a function that fills in a struct member.

* page/DragController.cpp:
(WebCore::DragController::startDrag):
Add the new DragItem code path when dragging links.

* platform/PasteboardWriterData.cpp:
(WebCore::PasteboardWriterData::isEmpty):
Check for m_url as well.

(WebCore::PasteboardWriterData::setURL):
Set m_url.

* platform/PasteboardWriterData.h:
Add new members.

* platform/mac/PasteboardWriter.mm:
(WebCore::toUTI):
New helper function that returns an UTI from a pasteboard type.

(WebCore::createPasteboardWriter):
Handle converting URLs to the various pasteboard types.

Tools:

If a type is not dynamic, just use the static UTI.

* DumpRenderTree/mac/DumpRenderTreePasteboard.mm:
(-[LocalPasteboard writeObjects:]):

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

3 years agoLayoutTest fast/multicol/column-span-parent-continuation-crash.html is a flaky timeout
ap@apple.com [Mon, 20 Feb 2017 22:29:01 +0000 (22:29 +0000)]
LayoutTest fast/multicol/column-span-parent-continuation-crash.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=168341

Reviewed by Daniel Bates.

* fast/multicol/column-span-parent-continuation-crash.html: Make sure that the
document is fully parsed before the test runs. I'm not sure if the zero delay
is still needed, but it doesn't hurt.

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

3 years agoUnreviewed, rolling out r212653.
ryanhaddad@apple.com [Mon, 20 Feb 2017 21:27:32 +0000 (21:27 +0000)]
Unreviewed, rolling out r212653.

This rebaseline was incorrect.

Reverted changeset:

"Rebaseline fast/canvas/webgl/context-creation-attributes.html
after r212650."
http://trac.webkit.org/changeset/212653

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

3 years agoRemove debug flag from flaky test streams/pipe-to.html.
ryanhaddad@apple.com [Mon, 20 Feb 2017 21:24:56 +0000 (21:24 +0000)]
Remove debug flag from flaky test streams/pipe-to.html.
https://bugs.webkit.org/show_bug.cgi?id=165874

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 years agoAdd plumbing to the UI process for TextIndicatorData when computing the drag image
wenson_hsieh@apple.com [Mon, 20 Feb 2017 21:21:18 +0000 (21:21 +0000)]
Add plumbing to the UI process for TextIndicatorData when computing the drag image
https://bugs.webkit.org/show_bug.cgi?id=168583
Work towards <rdar://problem/30313681>

Source/WebCore:

Reviewed by Tim Horton.

Adds some additional arguments to drag image creation functions to allow platforms to specify TextIndicatorData
for a link or selection-based DragImage. This TextIndicatorData is an optional member of the DragImage, and is
propagated to the UI process via SetDragImage in the WebDragClient.

Additionally renames hasDataInteractionAtPosition to hasSelectionAtPosition to better reflect its purpose.

No new tests, since there is no behavior change.

* page/DragController.cpp:
(WebCore::DragController::startDrag):
* page/Page.cpp:
(WebCore::Page::hasSelectionAtPosition):
(WebCore::Page::hasDataInteractionAtPosition): Deleted.
* page/Page.h:
* platform/DragImage.cpp:
(WebCore::createDragImageForSelection):
(WebCore::createDragImageForLink):
(WebCore::DragImage::operator=):
* platform/DragImage.h:
* platform/gtk/DragImageGtk.cpp:
(WebCore::createDragImageForLink):
* platform/mac/DragImageMac.mm:
(WebCore::createDragImageForLink):
* platform/win/DragImageWin.cpp:
(WebCore::createDragImageForLink):

Source/WebKit/mac:

Accounts for changes in WebCore -- see Source/WebCore/ChangeLog for more details.

Reviewed by Tim Horton.

* WebView/WebHTMLView.mm:
(-[WebHTMLView _selectionDraggingImage]):
(-[WebHTMLView selectionImageForcingBlackText:selectionImageForcingBlackText:]):

Source/WebKit2:

Reviewed by Tim Horton.

Changes the SetDragImage IPC message to send TextIndicatorData over to the UI process. Also changes the boolean
isLink parameter to be a DragSourceAction instead, leaving it up to the receiving end (in the UI process) to
special case links.

Additionally, renames hasDataInteractionAtPosition to hasSelectionAtPosition to better reflect its purpose.

These changes are only infrastructural should not alter any behaviors.

* Shared/ios/InteractionInformationAtPosition.h:
* Shared/ios/InteractionInformationAtPosition.mm:
(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _simulateDataInteractionGestureRecognized]):
(-[WKWebView _simulateDataInteractionEntered:]):
(-[WKWebView _simulateDataInteractionUpdated:]):
(-[WKWebView _simulateDataInteractionPerformOperation:]):
(-[WKWebView _simulateDataInteractionEnded:]):
(-[WKWebView _simulateDataInteractionSessionDidEnd:withOperation:]):
(-[WKWebView _simulateFailedDataInteractionWithIndex:]):
(-[WKWebView _simulateWillBeginDataInteractionWithIndex:withSession:]):
(-[WKWebView _simulatedItemsForDataInteractionWithIndex:]):
* UIProcess/API/Cocoa/_WKTestingDelegate.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::setDragImage):
(WebKit::PageClientImpl::startDataInteractionWithImage):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsInDataInteractionContent:]):
(-[WKContentView _dataInteractionGestureRecognizer]):
(-[WKContentView pointIsInAssistedNode:]):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::setDragImage):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setDragImage):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::startDrag):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):

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

3 years agoNullptr dereferences when stopping a load
bfulgham@apple.com [Mon, 20 Feb 2017 20:57:58 +0000 (20:57 +0000)]
Nullptr dereferences when stopping a load
https://bugs.webkit.org/show_bug.cgi?id=168608
<rdar://problem/29852056>

Reviewed by Ryosuke Niwa.

Don't attempt to notify a detached frame's load client that the load is
stopped.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::stopLoading): Check for null frame loader and
bypass dereferencing it.

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

3 years agoDon’t set NSURLSessionConfiguration’s _sourceApplicationAuditTokenData if _sourceAppl...
commit-queue@webkit.org [Mon, 20 Feb 2017 20:37:10 +0000 (20:37 +0000)]
Don’t set NSURLSessionConfiguration’s _sourceApplicationAuditTokenData if _sourceApplicationBundleIdentifier is also set.
https://bugs.webkit.org/show_bug.cgi?id=168607

rdar://problem/30239618

Patch by David Quesada <david_quesada@apple.com> on 2017-02-20
Reviewed by Geoffrey Garen.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
If the process pool configuration sets a source application bundle identifier, don't give the NSURLSession configuration
the audit token from the UI process, as it may be associated with an application with a conflicting bundle identifier.

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

3 years agoUnreviewed, rolling out r212618.
commit-queue@webkit.org [Mon, 20 Feb 2017 20:30:43 +0000 (20:30 +0000)]
Unreviewed, rolling out r212618.
https://bugs.webkit.org/show_bug.cgi?id=168609

"Appears to cause PLT regression" (Requested by mlam on
#webkit).

Reverted changeset:

"CachedCall should let GC know to keep its arguments alive."
https://bugs.webkit.org/show_bug.cgi?id=168567
http://trac.webkit.org/changeset/212618

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

3 years agoAdd a new drag code path and use it for dragging plain text
andersca@apple.com [Mon, 20 Feb 2017 19:32:56 +0000 (19:32 +0000)]
Add a new drag code path and use it for dragging plain text
https://bugs.webkit.org/show_bug.cgi?id=168534

Reviewed by Geoffrey Garen.

Source/WebCore:

The new code path is currently only used for plain text selection dragging.

* WebCore.xcodeproj/project.pbxproj:
* page/DragClient.h:
(WebCore::DragClient::useLegacyDragClient):
Add a new member function. This currently returns true everywhere except legacy WebKit on Mac.

(WebCore::DragClient::beginDrag):
Add new empty member function.

* page/DragController.cpp:
(WebCore::dragImageAnchorPointForSelectionDrag):
Helper function that returns the anchor point for a selection drag image.

(WebCore::DragController::startDrag):
If we can use the new code path, set up a drag item with an image and pasteboard data.

(WebCore::DragController::beginDrag):
New function that calls out to the client.

* page/DragController.h:
Add new members.

* platform/DragItem.h:
Add a new class - it's essentially a tuple of a drag image, an anchor point and the pasteboard data the item represents.

* platform/mac/PasteboardWriter.h:
Rename createPasteboardWriting to createPasteboardWriter.

* platform/mac/PasteboardWriter.mm:
(WebCore::createPasteboardWriter):
Use the UTI pasteboard type.

Source/WebKit/mac:

* WebCoreSupport/WebDragClient.h:
Add new members.

* WebCoreSupport/WebDragClient.mm:
(WebDragClient::useLegacyDragClient):
Return false here.

(WebDragClient::beginDrag):
New client member function. Create an NSDraggingItem and use it to begin a dragging session.

* WebView/WebHTMLView.mm:
(-[WebHTMLView draggingSession:sourceOperationMaskForDraggingContext:]):
Get the source operation mask from WebCore.

(-[WebHTMLView draggingSession:endedAtPoint:operation:]):
Send a fake mouse up event.

* WebView/WebHTMLViewInternal.h:
Declare that WebHTMLView conforms to NSDraggingSource.

Tools:

Update the testing infrastructure to handle NSDraggingSession.

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/mac/DumpRenderTreePasteboard.mm: Renamed from Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m.
(-[LocalPasteboard writeObjects:]):
Implement this in terms of the legacy pasteboard API.

* DumpRenderTree/mac/EventSendingController.mm:
(drt_WebHTMLView_beginDraggingSessionWithItemsEventSource):
(+[EventSendingController initialize]):
Swizzle the drag method instead of adding a delegate method (like the old code does).

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

3 years agoWeb Inspector: RTL: adjust positioning of scope bar items with multiple values
bburg@apple.com [Mon, 20 Feb 2017 19:14:51 +0000 (19:14 +0000)]
Web Inspector: RTL: adjust positioning of scope bar items with multiple values
https://bugs.webkit.org/show_bug.cgi?id=168575

Reviewed by Matt Baker.

Mirror the leading margin as necessary. Adjust the <select> positioning
so that the popup is really close to the scope bar item's position.

* UserInterface/Views/ScopeBar.css:
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):
(.scope-bar > li.multiple > .arrows):
(body[dir=ltr] .scope-bar > li.multiple > .arrows):
(body[dir=rtl] .scope-bar > li.multiple > .arrows):

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

3 years agoFix libwebrtc build after r212644.
achristensen@apple.com [Mon, 20 Feb 2017 18:39:27 +0000 (18:39 +0000)]
Fix libwebrtc build after r212644.
https://bugs.webkit.org/show_bug.cgi?id=168596

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):
m_endpoint changed from a c++ reference to a WTF::Ref, so we need to use operator -> instead of .

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

3 years agoList of WebCore symbols to re-export from WebKitLegacy should be built automatically
ap@apple.com [Mon, 20 Feb 2017 18:32:37 +0000 (18:32 +0000)]
List of WebCore symbols to re-export from WebKitLegacy should be built automatically
https://bugs.webkit.org/show_bug.cgi?id=168342
rdar://problem/26182266

Reviewed by Tim Horton.

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj: Append ReexportedWebCoreSymbols_${CURRENT_ARCH}.exp
to WebKitLegacy.generated.exp if it exists. Added it to build phase inputs for
dependency tracking.

Source/WebKit/ios:

* WebKit.iOS.exp: Removed manually added symbols.

Source/WebKit/mac:

* MigrateHeaders.make: On iOS only, process re-exported headers to build a list of
symbols to re-export.

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

3 years agoWeb Inspector: RTL: sidebar expand/collapse icons need to be flipped
bburg@apple.com [Mon, 20 Feb 2017 18:22:56 +0000 (18:22 +0000)]
Web Inspector: RTL: sidebar expand/collapse icons need to be flipped
https://bugs.webkit.org/show_bug.cgi?id=168276
<rdar://problem/30506999>

Reviewed by Matt Baker.

The sidebars themselves are already flipped due to the layout direction change, but the
icons have a directional design and need to be manually flipped based on the layout direction.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):

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

3 years ago[Readable Streams API] Add ReadableByteStreamController byobRequest attribute
commit-queue@webkit.org [Mon, 20 Feb 2017 18:18:06 +0000 (18:18 +0000)]
[Readable Streams API] Add ReadableByteStreamController byobRequest attribute
https://bugs.webkit.org/show_bug.cgi?id=168319

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-02-20
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated expectations for imported w3c tests (new type of error is now obtained).

* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Added ReadableByteStreamController byobRequest attribute.

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

* CMakeLists.txt: Added new files.
* DerivedSources.cpp: Added new files.
* DerivedSources.make: Added new files.
* Modules/streams/ReadableByteStreamController.idl: Added byobRequest support.
* Modules/streams/ReadableByteStreamController.js: Added byobRequest support.
* Modules/streams/ReadableByteStreamInternals.js:
(privateInitializeReadableStreamBYOBRequest): Added constructor.
* Modules/streams/ReadableStreamBYOBRequest.idl: Added.
* Modules/streams/ReadableStreamBYOBRequest.js: Added.
(respond): Not implemented yet.
(respondWithNewView): Not implemented yet.
(view): Not implemented yet.
* WebCore.xcodeproj/project.pbxproj: Added new files.
* bindings/js/JSDOMGlobalObject.cpp: Added ReadableStreamBYOBRequest support.
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::visitChildren):
* bindings/js/JSReadableStreamPrivateConstructors.cpp: Added ReadableStreamBYOBRequest support.
(WebCore::constructJSReadableByteStreamController):
(WebCore::constructJSReadableStreamBYOBRequest):
(WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable):
(WebCore::createReadableStreamBYOBRequestPrivateConstructor):
* bindings/js/JSReadableStreamPrivateConstructors.h: Added ReadableStreamBYOBRequest support.
* bindings/js/WebCoreBuiltinNames.h: Added ReadableStreamBYOBRequest support.

LayoutTests:

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

* streams/readable-byte-stream-controller.js: Updated with byobRequest attribute test.
* streams/readable-stream-byob-request-expected.txt: Added.
* streams/readable-stream-byob-request.html: Added.
* streams/readable-stream-byob-request.js: Added to cover tests related to ReadableStreamBYOBRequest.

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

3 years agoUnreviewed, rolling out r212632.
ryanhaddad@apple.com [Mon, 20 Feb 2017 18:16:46 +0000 (18:16 +0000)]
Unreviewed, rolling out r212632.

This change appears to have caused API test failures.

Reverted changeset:

"Reduce platform ifdefs in WebKit2 custom protocols
implementation"
https://bugs.webkit.org/show_bug.cgi?id=165028
http://trac.webkit.org/changeset/212632

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

3 years agoStop exporting WebPluginController from WebKit
aakash_jain@apple.com [Mon, 20 Feb 2017 18:14:58 +0000 (18:14 +0000)]
Stop exporting WebPluginController from WebKit
https://bugs.webkit.org/show_bug.cgi?id=168603

Reviewed by Alexey Proskuryakov.

* WebKit.iOS.exp:

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

3 years agoRebaseline fast/canvas/webgl/context-creation-attributes.html after r212650.
ryanhaddad@apple.com [Mon, 20 Feb 2017 18:00:58 +0000 (18:00 +0000)]
Rebaseline fast/canvas/webgl/context-creation-attributes.html after r212650.

Unreviewed test gardening.

* fast/canvas/webgl/context-creation-attributes-expected.txt:

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

3 years ago[Win] Custom scale factor is not applied in all cases.
pvollan@apple.com [Mon, 20 Feb 2017 18:00:23 +0000 (18:00 +0000)]
[Win] Custom scale factor is not applied in all cases.
https://bugs.webkit.org/show_bug.cgi?id=168117

Reviewed by Brent Fulgham.

We should not call the function deviceScaleFactorForWindow directly, since this
will return the system scale factor, and ignore the custom scale factor.

Source/WebCore:

* platform/graphics/ca/win/CACFLayerTreeHost.h:
* platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp:
(WebCore::WKCACFViewLayerTreeHost::initializeContext):
(WebCore::WKCACFViewLayerTreeHost::resize):
(WebCore::WKCACFViewLayerTreeHost::setScaleFactor):
* platform/graphics/ca/win/WKCACFViewLayerTreeHost.h:
* platform/win/GDIUtilities.h:
(WebCore::makeScaledPoint):
* platform/win/PlatformMouseEventWin.cpp:
(WebCore::positionForEvent):
* platform/win/PopupMenuWin.cpp:
(WebCore::PopupMenuWin::show):
(WebCore::PopupMenuWin::wndProc):
* platform/win/PopupMenuWin.h:

Source/WebKit/win:

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

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

3 years agoFix build error for iOS. Unreviewed.
jonlee@apple.com [Mon, 20 Feb 2017 17:54:53 +0000 (17:54 +0000)]
Fix build error for iOS. Unreviewed.

* platform/graphics/GraphicsContext3D.cpp: Move stub function into !PLATFORM(COCOA) instead of !PLATFORM(MAC).

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

3 years agoUnreviewed, rolling out r212639.
jonlee@apple.com [Mon, 20 Feb 2017 17:52:57 +0000 (17:52 +0000)]
Unreviewed, rolling out r212639.

Have a fix for the linker error on iOS.

Reverted changeset:

"Unreviewed, rolling out r212637."
https://bugs.webkit.org/show_bug.cgi?id=168595
http://trac.webkit.org/changeset/212639

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

3 years ago[WebRTC] Fix some memory leaks in libwebrtc binding code
commit-queue@webkit.org [Mon, 20 Feb 2017 17:24:12 +0000 (17:24 +0000)]
[WebRTC] Fix some memory leaks in libwebrtc binding code
https://bugs.webkit.org/show_bug.cgi?id=168596

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Eric Carlson.

Source/WebCore:

Covered by manual testing.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::create):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::PeerConnectionFactoryAndThreads::OnMessage):

Source/WebKit2:

* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::OnMessage):

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

3 years agoStop exporting DOMTokenList from WebKit
aakash_jain@apple.com [Mon, 20 Feb 2017 17:24:06 +0000 (17:24 +0000)]
Stop exporting DOMTokenList from WebKit
https://bugs.webkit.org/show_bug.cgi?id=168544

Reviewed by Alexey Proskuryakov.

* WebKit.exp:

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

3 years agoClean up how WebKit exports _WebCreateFragment
ap@apple.com [Mon, 20 Feb 2017 17:22:56 +0000 (17:22 +0000)]
Clean up how WebKit exports _WebCreateFragment
https://bugs.webkit.org/show_bug.cgi?id=168579

Reviewed by Dan Bernstein.

Source/WebCore:

* editing/Editor.h: Removed the declaration of _WebCreateFragment, SOFT_LINK doesn't need it.
* editing/cocoa/EditorCocoa.mm: Moved a FIXME comment here.

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj: Added WebCreateFragmentInternal.h.

Source/WebKit/mac:

* WebCoreSupport/WebCreateFragmentInternal.h: Added a private header.
* WebCoreSupport/WebEditorClient.mm: Include the new header that declares _WebCreateFragment.

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

3 years agoStop exporting DOMNodeFilter
aakash_jain@apple.com [Mon, 20 Feb 2017 17:20:04 +0000 (17:20 +0000)]
Stop exporting DOMNodeFilter
https://bugs.webkit.org/show_bug.cgi?id=168542

Reviewed by Alexey Proskuryakov.

* WebKit.exp:

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

3 years agoBytecodeGenerator should not iterate its m_controlFlowScopeStack using a pointer...
mark.lam@apple.com [Mon, 20 Feb 2017 17:18:27 +0000 (17:18 +0000)]
BytecodeGenerator should not iterate its m_controlFlowScopeStack using a pointer bump.
https://bugs.webkit.org/show_bug.cgi?id=168585

Reviewed by Yusuke Suzuki.

This is because m_controlFlowScopeStack is a SegmentedVector, and entries for
consecutive indices in the vector are not guaranteed to be consecutive in memory
layout.  Instead, we should be using indexing instead.

This issue was detected by the marathon.js test from
https://bugs.webkit.org/show_bug.cgi?id=168580.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):

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

3 years agoUnreviewed, rolling out r212637.
ryanhaddad@apple.com [Mon, 20 Feb 2017 17:12:06 +0000 (17:12 +0000)]
Unreviewed, rolling out r212637.

This change broke iOS builds.

Reverted changeset:

"Add 'webglcontextchanged' WebGLContextEvent"
https://bugs.webkit.org/show_bug.cgi?id=168595
http://trac.webkit.org/changeset/212637

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

3 years agoRemove code under USE(GRAPHICS_SURFACE)
commit-queue@webkit.org [Mon, 20 Feb 2017 16:52:46 +0000 (16:52 +0000)]
Remove code under USE(GRAPHICS_SURFACE)
https://bugs.webkit.org/show_bug.cgi?id=168592

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-20
Reviewed by Michael Catanzaro.

This was only used by EFL port.

Source/WebCore:

* platform/TextureMapper.cmake:
* platform/graphics/opengl/GLPlatformSurface.cpp: Removed.
* platform/graphics/surfaces/GLTransportSurface.cpp: Removed.
* platform/graphics/surfaces/GLTransportSurface.h: Removed.
* platform/graphics/surfaces/GraphicsSurface.cpp: Removed.
* platform/graphics/surfaces/GraphicsSurface.h: Removed.
* platform/graphics/surfaces/GraphicsSurfaceToken.h: Removed.
* platform/graphics/surfaces/egl/EGLConfigSelector.cpp: Removed.
* platform/graphics/surfaces/egl/EGLConfigSelector.h: Removed.
* platform/graphics/surfaces/egl/EGLContext.cpp: Removed.
* platform/graphics/surfaces/egl/EGLContext.h: Removed.
* platform/graphics/surfaces/egl/EGLHelper.cpp: Removed.
* platform/graphics/surfaces/egl/EGLHelper.h: Removed.
* platform/graphics/surfaces/egl/EGLSurface.cpp: Removed.
* platform/graphics/surfaces/egl/EGLSurface.h: Removed.
* platform/graphics/surfaces/egl/EGLXSurface.cpp: Removed.
* platform/graphics/surfaces/egl/EGLXSurface.h: Removed.
* platform/graphics/surfaces/glx/GLXConfigSelector.h: Removed.
* platform/graphics/surfaces/glx/GLXContext.cpp: Removed.
* platform/graphics/surfaces/glx/GLXContext.h: Removed.
* platform/graphics/surfaces/glx/GLXSurface.cpp: Removed.
* platform/graphics/surfaces/glx/GLXSurface.h: Removed.
* platform/graphics/surfaces/glx/X11Helper.cpp: Removed.
* platform/graphics/surfaces/glx/X11Helper.h: Removed.
* platform/graphics/texmap/TextureMapperBackingStore.cpp:
* platform/graphics/texmap/TextureMapperBackingStore.h:
* platform/graphics/texmap/TextureMapperPlatformLayer.h:
(WebCore::TextureMapperPlatformLayer::setClient):
* platform/graphics/texmap/TextureMapperSurfaceBackingStore.cpp: Removed.
* platform/graphics/texmap/TextureMapperSurfaceBackingStore.h: Removed.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

Source/WebKit2:

* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::encode):
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::decode):
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded):
(WebKit::CoordinatedGraphicsScene::deleteLayer):
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:
(WebKit::WebCoordinatedSurface::Handle::encode):
(WebKit::WebCoordinatedSurface::Handle::decode):
(WebKit::WebCoordinatedSurface::create):
(WebKit::WebCoordinatedSurface::createGraphicsContext):
(WebKit::WebCoordinatedSurface::createHandle):
(WebKit::WebCoordinatedSurface::copyToTexture):
* Shared/CoordinatedGraphics/WebCoordinatedSurface.h:

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

3 years agoAdd 'webglcontextchanged' WebGLContextEvent
dino@apple.com [Mon, 20 Feb 2017 15:47:23 +0000 (15:47 +0000)]
Add 'webglcontextchanged' WebGLContextEvent
https://bugs.webkit.org/show_bug.cgi?id=168595
<rdar://problem/30604254>

Reviewed by Antoine Quint.

Source/WebCore:

Add a new event that is dispatched when the GraphicsContext3D
notices that the active GPU has changed.

Test: fast/canvas/webgl/webglcontextchangedevent.html

* dom/EventNames.h: Add 'webglcontextchanged'.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Dispatch the new event.
(WebCore::WebGLRenderingContextBase::simulateContextChanged): Tell the GraphicsContext3D to
pretend there was a GPU switch. This is called from Internals for testing.
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.idl: Export the interface so Internals can see it.

* platform/graphics/GraphicsContext3D.cpp:
(WebCore::GraphicsContext3D::simulateContextChanged): Tell the GraphicsContext3DManager
that it should pretend a GPU change has happened, which causes it to notify all the
active contexts.
* platform/graphics/GraphicsContext3D.h:

* platform/graphics/mac/GraphicsContext3DMac.mm:
(WebCore::GraphicsContext3DManager::updateAllContexts): Tell the GraphicsContext3Ds
to tell their WebGLRenderingContexts to dispatch an event.
(WebCore::GraphicsContext3D::simulateContextChanged): Fake the display change.
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::dispatchContextChangedNotification): Tell the WebGLRenderingContext
that a change has occurred, and that it should dispatch an event. This is a layering
violation which will need to be fixed (although with other communication from GC3D back
to WebGL).
* testing/Internals.cpp:
(WebCore::Internals::simulateWebGLContextChanged):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Add a new webglcontextchanged event. This test only
runs on Cocoa platforms at the moment, because it
needs GraphicsContext3D to keep track of all
active contexts in order to dispatch events.

* fast/canvas/webgl/webglcontextchangedevent-expected.txt: Added.
* fast/canvas/webgl/webglcontextchangedevent.html: Added.
* platform/gtk/TestExpectations:
* platform/win/TestExpectations:

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

3 years agoUnreviewed, add CSS Grid Layout examples for a blog post.
rego@igalia.com [Mon, 20 Feb 2017 15:30:24 +0000 (15:30 +0000)]
Unreviewed, add CSS Grid Layout examples for a blog post.

* demos/css-grid/index.html: Added.
* demos/css-grid/responsive-grid.html: Added.

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

3 years agoUnreviewed GTK+ gardening. Fix tests reporting missing results.
carlosgc@webkit.org [Mon, 20 Feb 2017 12:30:35 +0000 (12:30 +0000)]
Unreviewed GTK+ gardening. Fix tests reporting missing results.

* media/media-session-restrictions-expected.txt: Renamed from LayoutTests/platform/mac/media/media-session-restrictions-expected.txt.
* platform/gtk/TestExpectations:

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

3 years agoActivate/deactivate high performance GPU when requested
dino@apple.com [Mon, 20 Feb 2017 12:28:17 +0000 (12:28 +0000)]
Activate/deactivate high performance GPU when requested
https://bugs.webkit.org/show_bug.cgi?id=168559
<rdar://problem/30592266>

Reviewed by Jon Lee.

Source/WebCore:

Respect the high-performance powerPreference for WebGL, by managing an
object that enables the high-performance GPU. If a WebGL context wants
high-performance, and it is visible, then a manager class in GraphicsContext3D
creates and retains the object, causing all the WebGL contexts to move GPUs.
If all the high-performance contexts are not visible, such as in a background tab,
then the manager will release the object, allowing the GPU to power down.

The swapping back from the high-performance GPU happens on a timer, to make
sure we don't churn between GPUs if the user is swapping between a lot of tabs,
or windows.

Unfortunately testing this change properly requires hardware with
multiple GPUs. I plan to write an API test that fakes most of the
system interaction, such as occluding the page. An API test might
also be able to verify if the system has more than one GPU. Otherwise
I'll have to plumb everything through Internals.

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::isHighPerformanceContext): Helper to detect if the GraphicsContext3D actually
used high-performance mode.
(WebCore::WebGLRenderingContextBase::create): Add logging if we are
actually overriding a high-performance request.
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): If we are high-performance,
then register for activity state changes.
(WebCore::WebGLRenderingContextBase::addActivityStateChangeObserverIfNecessary):
(WebCore::WebGLRenderingContextBase::removeActivityStateChangeObserver):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D): Call removeActivityStateChangeObserver
as the GC3D is destroyed.
(WebCore::WebGLRenderingContextBase::maybeRestoreContext): If the context was
restored successfully, and came back in high-performance, then we need
to listen for activity state changes as usual.
(WebCore::WebGLRenderingContextBase::activityStateDidChange): If we changed visibility,
tell the GC3D.
* html/canvas/WebGLRenderingContextBase.h: Class inherits ActivityStateChangeObserver.

* page/Settings.in: No longer force low-power everywhere.

* platform/graphics/GraphicsContext3D.cpp:
(WebCore::GraphicsContext3D::setContextVisibility): Empty implementation for non-Mac.
* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::powerPreferenceUsedForCreation): Tells clients what power preference
was actually used during creation (e.g. a single GPU system will use default, even if
they requested high-performance).

* platform/graphics/mac/GraphicsContext3DMac.mm:
(WebCore::GraphicsContext3DManager::GraphicsContext3DManager): Helper class to
look after all GraphicsContext3Ds.
(WebCore::GraphicsContext3DManager::hasTooManyContexts): We have a limit on the
number of contexts we can keep alive at any one time.
(WebCore::manager): Helper to return the static instance.
(WebCore::displayWasReconfigured): Send a message to all the contexts.
(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::GraphicsContext3DManager::addContextRequiringHighPerformance):
(WebCore::GraphicsContext3DManager::removeContextRequiringHighPerformance):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState): Check if the number
of contexts requiring high-performance means we need to enable/disable that GPU.
(WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired): Releases our
object that keeps the high-performance GPU on.
(WebCore::GraphicsContext3DManager::recycleContextIfNecessary): Get rid of the first (oldest)
context. This code was in GC3D proper, but it made more sense here in the helper.
(WebCore::setPixelFormat): All contexts are created muxable now.
(WebCore::GraphicsContext3D::create): Use the manager.
(WebCore::GraphicsContext3D::GraphicsContext3D): Ditto.
(WebCore::GraphicsContext3D::~GraphicsContext3D): Add logging.
(WebCore::GraphicsContext3D::checkGPUStatusIfNecessary): Better logging.
(WebCore::GraphicsContext3D::updateCGLContext):
(WebCore::GraphicsContext3D::setContextVisibility): This is the responder to the
ActivityStateChanges in the WebGLRenderingContext.
(WebCore::activeContexts): Deleted.
(WebCore::addActiveContext): Deleted.
(WebCore::removeActiveContext): Deleted.

LayoutTests:

We no longer force low-power, so the WebGL canvas creation attributes now
return the value that was passed in.

* fast/canvas/webgl/context-creation-attributes-expected.txt:

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

3 years agoReduce platform ifdefs in WebKit2 custom protocols implementation
commit-queue@webkit.org [Mon, 20 Feb 2017 12:28:00 +0000 (12:28 +0000)]
Reduce platform ifdefs in WebKit2 custom protocols implementation
https://bugs.webkit.org/show_bug.cgi?id=165028

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-20
Reviewed by Darin Adler.

Make mac implementation use the APICustomProtocolManagerClient to share more code with the soup based ports.

* CMakeLists.txt: Add CustomProtocolManagerProxy.cpp.
* PlatformEfl.cmake: Remove CustomProtocolManagerProxySoup.cpp.
* PlatformGTK.cmake: Ditto.
* PlatformMac.cmake: Remove CustomProtocolManagerProxyMac.mm.
* UIProcess/API/APICustomProtocolManagerClient.h:
(API::CustomProtocolManagerClient::startLoading): Make it void, since we were always returning true and the
returned value was ignored.
* UIProcess/API/efl/ewk_url_scheme_request.cpp:
(EwkUrlSchemeRequest::finish): Update to new CustomProtocolManagerProxy API.
* UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp:
* UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
(webkitURISchemeRequestReadCallback): Ditto.
* UIProcess/Cocoa/CustomProtocolManagerClient.h: Added.
* UIProcess/Cocoa/CustomProtocolManagerClient.mm: Added.
(-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:]):
(-[WKCustomProtocolLoader dealloc]):
(-[WKCustomProtocolLoader connection:didFailWithError:]):
(-[WKCustomProtocolLoader connection:didReceiveResponse:]):
(-[WKCustomProtocolLoader connection:didReceiveData:]):
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
(-[WKCustomProtocolLoader connectionDidFinishLoading:]):
(WebKit::CustomProtocolManagerClient::startLoading):
(WebKit::CustomProtocolManagerClient::stopLoading):
(WebKit::CustomProtocolManagerClient::invalidate):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize): Set the CustomProtocolManagerClient.
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.
* UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.cpp: Added.
(WebKit::CustomProtocolManagerProxy::startLoading):
(WebKit::CustomProtocolManagerProxy::processDidClose):
(WebKit::CustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::CustomProtocolManagerProxy::didReceiveResponse):
* UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::globalURLSchemesWithCustomProtocolHandlers): Just moved here to use it from ensureNetworkProcess().
(WebKit::WebProcessPool::WebProcessPool): Remove soup ifdefs.
(WebKit::WebProcessPool::setCustomProtocolManagerClient): Moved from the soup implementation.
(WebKit::WebProcessPool::ensureNetworkProcess): Initialize custom protocols parameters.
(WebKit::WebProcessPool::registerSchemeForCustomProtocol): Register the protocol if not already registered globally.
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Remove soup ifdefs.
* UIProcess/WebProcessPool.h: Remove soup ifdefs.
* UIProcess/efl/RequestManagerClientEfl.cpp:
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.
* WebKit2.xcodeproj/project.pbxproj:

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

3 years agoHandle EINTR during webkitpy server process select()
commit-queue@webkit.org [Mon, 20 Feb 2017 12:23:13 +0000 (12:23 +0000)]
Handle EINTR during webkitpy server process select()
https://bugs.webkit.org/show_bug.cgi?id=168361

Patch by Florian Bruhin <git@the-compiler.org> on 2017-02-20
Reviewed by Michael Catanzaro.

Otherwise, on my machine, resizing the terminal run-webkit-tests is running in
makes it die.

* Scripts/webkitpy/port/server_process.py:
(ServerProcess._wait_for_data_and_update_buffers_using_select):

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

3 years agoUnreviewed. Fix GTK+ test /webkit2/WebKitWebView/default-menu.
carlosgc@webkit.org [Mon, 20 Feb 2017 10:03:09 +0000 (10:03 +0000)]
Unreviewed. Fix GTK+ test /webkit2/WebKitWebView/default-menu.

It can happen that the window onload event is dispatched after the load finished is received in the UI
process. Move the script to select the text to the body instead of using a window onload handler.

* TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:
(testContextMenuDefaultMenu):

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

3 years ago[css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
rego@igalia.com [Mon, 20 Feb 2017 10:01:22 +0000 (10:01 +0000)]
[css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
https://bugs.webkit.org/show_bug.cgi?id=167693

Reviewed by Sergio Villar Senin.

.:

CSS Grid Layout has been enabled by default in r211415,
and Safari 10.1 is shipping it.
It seems like a good moment to remove the compilation flag.

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

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForGridPosition):
(WebCore::isLayoutDependent):
(WebCore::resolveJustifySelfAuto):
(WebCore::isImplicitlyInheritedGridOrFlexProperty):
(WebCore::valueForContentPositionAndDistributionWithOverflowAlignment):
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSGridAutoRepeatValue.cpp:
* css/CSSGridAutoRepeatValue.h:
* css/CSSGridLineNamesValue.cpp:
* css/CSSGridLineNamesValue.h:
* css/CSSGridTemplateAreasValue.cpp:
* css/CSSGridTemplateAreasValue.h:
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSProperties.json:
* css/CSSValue.cpp:
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
* css/CSSValue.h:
(WebCore::CSSValue::isContentDistributionValue):
(WebCore::CSSValue::isGridLineNamesValue):
* css/CSSValueKeywords.in:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertGridAutoFlow):
(WebCore::StyleBuilderConverter::convertContentAlignmentData):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueGridTemplateRows):
* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue):
* css/StyleResolver.cpp:
(WebCore::equivalentBlockDisplay):
* css/StyleResolver.h:
* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::isSimpleLengthPropertyID):
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):
* css/parser/CSSParserMode.h:
(WebCore::CSSParserContextHash::hash):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeGridAutoFlow):
(WebCore::consumeGridTemplateAreas):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeGridShorthand):
(WebCore::CSSPropertyParser::parseShorthand):
* dom/Document.cpp:
* dom/Document.h:
* dom/Position.cpp:
(WebCore::Position::isCandidate):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::isCSSGridLayoutEnabled):
* rendering/Grid.cpp:
* rendering/Grid.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::getFirstLetter):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::~RenderBox):
(WebCore::RenderBox::styleDidChange):
(WebCore::RenderBox::clearExtraInlineAndBlockOffests):
(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):
(WebCore::RenderBox::computeLogicalWidthInRegion):
(WebCore::RenderBox::sizesLogicalWidthToFitContent):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned):
(WebCore::RenderBox::computePositionedLogicalWidth):
(WebCore::RenderBox::computePositionedLogicalHeight):
(WebCore::RenderBox::createsNewFormattingContext):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasDefiniteLogicalHeight):
* rendering/RenderBox.h:
(WebCore::RenderBox::isGridItem):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::createFor):
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::alignChildren):
* rendering/RenderGrid.cpp:
* rendering/RenderGrid.h:
* rendering/RenderObject.h:
(WebCore::RenderObject::isRenderGrid):
* rendering/style/GridArea.h:
* rendering/style/GridLength.h:
* rendering/style/GridPosition.h:
* rendering/style/GridPositionsResolver.cpp:
* rendering/style/GridPositionsResolver.h:
* rendering/style/GridTrackSize.h:
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::isCSSGridLayoutEnabled):
(WebCore::RenderStyle::changeRequiresLayout):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::gridItemRowEnd):
(WebCore::RenderStyle::setGridRowGap):
(WebCore::RenderStyle::initialGridItemRowEnd):
(WebCore::RenderStyle::isDisplayReplacedType):
(WebCore::RenderStyle::isDisplayGridBox):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleGridData.cpp:
* rendering/style/StyleGridData.h:
* rendering/style/StyleGridItemData.cpp:
* rendering/style/StyleGridItemData.h:
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
* rendering/style/StyleRareNonInheritedData.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setCSSGridLayoutEnabled):

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/Tests/WebCore/CSSParser.cpp:
(TestWebKitAPI::computeNumberOfTracks):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/GridPosition.cpp:
(TestWebKitAPI::TEST):

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

3 years agoUnreviewed GTK+ gardening. Mark fast/events/message-port-postMessage-recursive.html...
carlosgc@webkit.org [Mon, 20 Feb 2017 09:13:52 +0000 (09:13 +0000)]
Unreviewed GTK+ gardening. Mark fast/events/message-port-postMessage-recursive.html as timing out.

* platform/gtk/TestExpectations:

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

3 years agoUnreviewed, rolling out r212622.
carlosgc@webkit.org [Mon, 20 Feb 2017 09:09:23 +0000 (09:09 +0000)]
Unreviewed, rolling out r212622.

Caused several test failures

Reverted changeset:

"[GTK] Test fast/events/message-port-postMessage-
recursive.html times out"
https://bugs.webkit.org/show_bug.cgi?id=168570
http://trac.webkit.org/changeset/212622

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

3 years agoREGRESSION(r212345): [GTK] ASSERT(cookieChangeCallbackMap().contains(jar)) failed...
carlosgc@webkit.org [Mon, 20 Feb 2017 08:30:50 +0000 (08:30 +0000)]
REGRESSION(r212345): [GTK] ASSERT(cookieChangeCallbackMap().contains(jar)) failed in WebCore::stopObservingCookieChanges:54
https://bugs.webkit.org/show_bug.cgi?id=168375

Reviewed by Alex Christensen.

Source/WebCore:

Simplify the way cookie storage is handled in NetworkStorageSessionSoup. Now we always keep a reference to the
cookie jar, no matter if we have a session or not, that is always kept in sync with the one actually used by the
session. We always connect to the changed signal of the current cookie jar and notify the observer if it has been
set.

* platform/network/NetworkStorageSession.h:
* platform/network/soup/CookieStorageSoup.cpp:
(WebCore::startObservingCookieChanges): Remove this implementation and add an ASSERT to ensure we don't use this anymore.
(WebCore::stopObservingCookieChanges): Ditto.
(WebCore::cookieChangeCallbackMap): Deleted.
(WebCore::soupCookiesChanged): Deleted.
* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::NetworkStorageSession): Initialize the cookie storage.
(WebCore::NetworkStorageSession::~NetworkStorageSession): Disconnect the changed signal.
(WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession): Always pass the current cookie storage.
(WebCore::NetworkStorageSession::cookiesDidChange): Notify the observer.
(WebCore::NetworkStorageSession::cookieStorage): Return the current cookie storage.
(WebCore::NetworkStorageSession::setCookieStorage): Update the current cookie storage and update the session if
needed too. We always have a valid cookie storage so if nullptr is given we create a new one.
(WebCore::NetworkStorageSession::setCookieObserverHandler): Set a cookie observer handler.

Source/WebKit2:

Simplify the cookies change notification. The current approach of the UI process telling the network process
when to start and stop observing cookie changes is quite fragile and error prone. In the GTK+ port we always
observe cookies, so our cookie manager always calls start in the constructor and stop in the destructor.
Everything would be a lot simpler if the network process always monitored cookies.

* NetworkProcess/soup/NetworkSessionSoup.cpp:
(WebKit::NetworkSessionSoup::NetworkSessionSoup): Set cookies observer handler for the session.
(WebKit::NetworkSessionSoup::~NetworkSessionSoup): Remove the cookies observer handler.
* UIProcess/API/gtk/WebKitCookieManager.cpp:
(_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate): Remove the cookies observer callback.
(webkit_cookie_manager_class_init): Remove dispose implementation that is no longer needed.
(webkitCookieManagerCreate): Set the cookies observer callback.
(webkit_cookie_manager_set_persistent_storage): Remove code to start/stop observing cookies when the jar
changes, the network process deals with that now.
(webkitCookieManagerDispose): Deleted.
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::startObservingCookieChanges): Remove the optional callback method in favor of an
explicit method to the set the callback that doesn't send the StartObservingCookieChanges message to the network
process.
(WebKit::WebCookieManagerProxy::stopObservingCookieChanges): Do not change the callback map here.
(WebKit::WebCookieManagerProxy::setCookieObserverCallback): Add the callback to the map or remove the session if
nullptr is given.
* UIProcess/WebCookieManagerProxy.h:
* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::notifyCookiesDidChange): Send CookiesDidChange message to the UI process.
(WebKit::WebCookieManager::startObservingCookieChanges): Use notifyCookiesDidChange().
* WebProcess/Cookies/WebCookieManager.h:
* WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Set the policy on all sessions. Code moved from
WebFrameNetworkingContext since it doesn't belong there.
(WebKit::WebCookieManager::setCookiePersistentStorage): Use new method to set the cookie storage in the
NetworkStorageSession.
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Deleted.
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:

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

3 years agoonbeforeunload event return value coercion is not per-spec
cdumez@apple.com [Mon, 20 Feb 2017 06:36:04 +0000 (06:36 +0000)]
onbeforeunload event return value coercion is not per-spec
https://bugs.webkit.org/show_bug.cgi?id=168382

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import test coverage from web-platform-tests. We were failing half the checks
before this patch.

* resources/resource-files.json:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt: Added.
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log:

Source/WebCore:

Update handling of value returned by onbeforeunload event listeners
to match Firefox and the specification:
- https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 4)

Namely, the following changes were made:
- Only set the event's returnValue attribute to the returned value if the attribute
  value is the empty string (so as to not override the attribute value if it has
  explicitly been set by JS).
- Cancel the event when the return value is not null by calling preventDefault().

Additionally, the following changes were made:
- Ask the user to confirm the navigation if the event was canceled, not just if the
  returnValue attribute was set to a non-empty string.
as per:
- https://html.spec.whatwg.org/#prompt-to-unload-a-document (step 8)

Tests: fast/events/before-unload-return-string-conversion.html
       imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html

* bindings/js/JSEventListener.cpp:
(WebCore::handleBeforeUnloadEventReturnValue):
(WebCore::JSEventListener::handleEvent):
* loader/FrameLoader.cpp:
(WebCore::shouldAskForNavigationConfirmation):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

LayoutTests:

Add test case to check that the value returned by a beforeunload event handler
is already converted to a string, even if the returnValue attribute is also
set on the BeforeUnloadEvent. The existing code did not handle this properly
and it has been fixed in this patch.

* fast/events/before-unload-return-string-conversion-expected.txt: Added.
* fast/events/before-unload-return-string-conversion.html: Added.
* fast/events/resources/before-unload-return-string-conversion-frame.html: Added.

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

3 years agoUnreviewed, rolling out r212472.
commit-queue@webkit.org [Mon, 20 Feb 2017 06:34:15 +0000 (06:34 +0000)]
Unreviewed, rolling out r212472.
https://bugs.webkit.org/show_bug.cgi?id=168584

Broke CLoop builds when r212466 was rolled out in r212616
(Requested by rniwa on #webkit).

Reverted changeset:

"Unreviewed, fix cloop build."
http://trac.webkit.org/changeset/212472

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

3 years ago[SOUP] Call SoupNetworkSession::setShouldIgnoreTLSErrors when testRunner.setAllowsAny...
carlosgc@webkit.org [Mon, 20 Feb 2017 06:30:52 +0000 (06:30 +0000)]
[SOUP] Call SoupNetworkSession::setShouldIgnoreTLSErrors when testRunner.setAllowsAnySSLCertificate() is called
https://bugs.webkit.org/show_bug.cgi?id=168571

Reviewed by Michael Catanzaro.

Fixes: http/tests/ssl/upgrade-origin-usage.html

* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setAllowsAnySSLCertificate):

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

3 years ago[GTK] Test fast/events/message-port-postMessage-recursive.html times out
carlosgc@webkit.org [Mon, 20 Feb 2017 06:29:10 +0000 (06:29 +0000)]
[GTK] Test fast/events/message-port-postMessage-recursive.html times out
https://bugs.webkit.org/show_bug.cgi?id=168570

Reviewed by Michael Catanzaro.

This has recently been added and the patch is good. It's just revealing a problem with our timers. The test is
posting a message recursively, and also starts a timeout timer to finish the test. The timeout timer is never
fired for us, because WebCore timers have lower priority than the one used by
postMessage. ScriptExecutionContext uses Document::postTask, that uses scheduleOnMainThread, that uses
RunLoop::dispatch(). We are not setting any priority for the timer used by RunLoop::dispatch, so it's using the
default. RunLoop::dispatch is normally used to schedule tasks between threads, or just to ensure something is
run in a different run loop iteration, but in general nothing urgent as a graphics redraw or something like
that. It's quite common to use g_idle_add to schedule tasks between threads, so I think it makes sense to use
G_PRIORITY_DEFAULT_IDLE for the RunLoop timer.

* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::RunLoop):

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

3 years agoREGRESSION(r212218): Assertion failures in and after parserRemoveChild
rniwa@webkit.org [Mon, 20 Feb 2017 06:22:02 +0000 (06:22 +0000)]
REGRESSION(r212218): Assertion failures in and after parserRemoveChild
https://bugs.webkit.org/show_bug.cgi?id=168458

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by parserRemoveChild not preceeding to remove oldChild even when
oldChild had been inserted elsewhere during unload evnets of the disconnected frames.
Fixed the bug by checking this condition and exiting early.

Also fixed various callers of parserRemoveChild to not call parserAppendChild when
the removed node had already been inserted elsewhere by scripts.

Tests: fast/parser/adoption-agency-unload-iframe-3.html
       fast/parser/adoption-agency-unload-iframe-4.html
       fast/parser/xml-error-unload-iframe.html

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::parserRemoveChild): Exit early when the node had been
inserted elsewhere while firing unload events. Also moved the call to
notifyRemovePendingSheetIfNeeded outside NoEventDispatchAssertion since it can
synchrnously fire a focus event.
(WebCore::ContainerNode::parserAppendChild): Moved adoptNode call to inside
NoEventDispatchAssertion since adoptNode call here should never mutate DOM.
* html/parser/HTMLConstructionSite.cpp:
(WebCore::executeReparentTask): Added an early exit when the node had already been
inserted elsewhere.
(WebCore::executeInsertAlreadyParsedChildTask): Ditto.
* xml/XMLErrors.cpp:
(WebCore::XMLErrors::insertErrorMessageBlock): Ditto.
* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::end): Fixed a crash unveiled by one of the test cases.
Exit early when insertErrorMessageBlock detached the parser (by author scripts).
(WebCore::XMLDocumentParser::finish): Keep the parser alive until we exit.

LayoutTests:

Add tests to make sure parserAppendChild aren't called when a node removed by parserRemoveChild
had already been been inserted elsewhere by scripts.

* fast/parser/adoption-agency-unload-iframe-3-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-3.html: Added.
* fast/parser/adoption-agency-unload-iframe-4-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-4.html: Added.
* fast/parser/xml-error-unload-iframe-expected.txt: Added.
* fast/parser/xml-error-unload-iframe.html: Added.

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

3 years agofunctionTestWasmModuleFunctions() should use a MarkedArgumentBuffer for storing args...
mark.lam@apple.com [Mon, 20 Feb 2017 03:59:19 +0000 (03:59 +0000)]
functionTestWasmModuleFunctions() should use a MarkedArgumentBuffer for storing args instead of a Vector.
https://bugs.webkit.org/show_bug.cgi?id=168574

Reviewed by Filip Pizlo.

* jsc.cpp:
(callWasmFunction):
(functionTestWasmModuleFunctions):
* runtime/ArgList.h:

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

3 years ago[WK2] Support termination of unresponsive WebContent processes that are in the background
cdumez@apple.com [Mon, 20 Feb 2017 02:38:43 +0000 (02:38 +0000)]
[WK2] Support termination of unresponsive WebContent processes that are in the background
https://bugs.webkit.org/show_bug.cgi?id=168479
<rdar://problem/30558745>

Reviewed by Antti Koivisto.

Support termination of unresponsive WebContent processes that are in the background.
This protects us against cases where a background tab is unresponsive and has high CPU
usage, thus draining the battery without the user knowing about it (e.g.
<rdar://problem/29808005>).

The feature works as follows:
- If a WebProcessProxy has pages but none of them are visible, then it will check
  regularly if its associated WebContent process is still responsive.
- Every time we find that the WebContent process is responsive, we exponentially
  back off the timer to avoid waking up the process too often. The timer initially
  uses a 20 seconds interval and can back off up to 8 hours.
- If the WebContent process is unresponsive, then we terminate it. No notification
  is shown to the user and the termination is not immediately observable since the
  tab is not visible and its title remains. The tab is not immediately reloaded
  so as to avoid getting back into a bad state in the background (and have a
  yo-yo effect).
- If the user switches to a tab that was previously killed for being unresponsive
  while in the background, we will then reload the tab in a fresh WebContent
  process. The crash banner will only be shown if the tab has ever been visible.
  If it wasn't ever visible (e.g. session restore case), then it will look as if
  the tab loads for the first time when the user switches to it.

The functionality is disabled by default and can be enabled by the client via the new
WKContextSetUnresponsiveBackgroundProcessesTerminationEnabled() private API.

* CMakeLists.txt:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextSetUnresponsiveBackgroundProcessesTerminationEnabled):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/UnresponsiveWebProcessTerminator.cpp: Added.
(WebKit::UnresponsiveWebProcessTerminator::UnresponsiveWebProcessTerminator):
(WebKit::UnresponsiveWebProcessTerminator::updateState):
(WebKit::pagesCopy):
(WebKit::UnresponsiveWebProcessTerminator::timerFired):
* UIProcess/UnresponsiveWebProcessTerminator.h: Added.
(WebKit::UnresponsiveWebProcessTerminator::shouldBeActive):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::reloadAfterBeingKilledInBackground):
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::terminateProcess):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_backgroundResponsivenessTimer):
(WebKit::WebProcessProxy::createWebPage):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::updateBackgroundResponsivenessTimer):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::visiblePageCount):
* WebKit2.xcodeproj/project.pbxproj:

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

3 years agoCachedCall should let GC know to keep its arguments alive.
mark.lam@apple.com [Mon, 20 Feb 2017 01:46:04 +0000 (01:46 +0000)]
CachedCall should let GC know to keep its arguments alive.
https://bugs.webkit.org/show_bug.cgi?id=168567
<rdar://problem/30475767>

Reviewed by Saam Barati.

Source/JavaScriptCore:

We fix this by having CachedCall use a MarkedArgumentBuffer to store its
arguments instead of a Vector.

Also declared CachedCall, MarkedArgumentBuffer, and ProtoCallFrame as
WTF_FORBID_HEAP_ALLOCATION because they rely on being stack allocated for
correctness.

* interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
(JSC::CachedCall::call):
(JSC::CachedCall::clearArguments):
(JSC::CachedCall::appendArgument):
(JSC::CachedCall::setArgument): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::emptyList):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::prepareForRepeatCall):
* interpreter/Interpreter.h:
* interpreter/ProtoCallFrame.h:
* runtime/ArgList.cpp:
(JSC::MarkedArgumentBuffer::expandCapacity):
* runtime/ArgList.h:
(JSC::MarkedArgumentBuffer::ensureCapacity):
* runtime/StringPrototype.cpp:
(JSC::replaceUsingRegExpSearch):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
a class declared with it is malloced.

While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
being embedded in another class that is heap allocated, it does at minimum
document the intent and gives the users of this class a chance to do the
right thing.

* WTF.xcodeproj/project.pbxproj:
* wtf/ForbidHeapAllocation.h: Added.

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

3 years ago<input type=color readonly> doesn't act per spec
cdumez@apple.com [Mon, 20 Feb 2017 00:46:27 +0000 (00:46 +0000)]
<input type=color readonly> doesn't act per spec
https://bugs.webkit.org/show_bug.cgi?id=168421
<rdar://problem/30593185>

Reviewed by Ryosuke Niwa.

Source/WebCore:

The 'readonly' attribute should not apply to <input type=color> as per the
HTML specification:
- https://html.spec.whatwg.org/#the-input-element:attr-input-readonly-3

Chrome / Firefox and Edge already behave as per the specification.

Tests: fast/forms/color/input-color-disabled.html
       fast/forms/color/input-color-readonly.html

* html/ColorInputType.cpp:
(WebCore::ColorInputType::handleDOMActivateEvent):
(WebCore::ColorInputType::didChooseColor):

LayoutTests:

Add layout test coverage.

* fast/forms/color/input-color-disabled-expected.txt: Added.
* fast/forms/color/input-color-disabled.html: Added.
* fast/forms/color/input-color-readonly-expected.txt: Added.
* fast/forms/color/input-color-readonly.html: Added.

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

3 years agoUnreviewed, rolling out r212466.
commit-queue@webkit.org [Sun, 19 Feb 2017 22:07:58 +0000 (22:07 +0000)]
Unreviewed, rolling out r212466.
https://bugs.webkit.org/show_bug.cgi?id=168577

causes crashes on AArch64 on linux, maybe it's causing crashes
on iOS too (Requested by pizlo on #webkit).

Reverted changeset:

"The collector thread should only start when the mutator
doesn't have heap access"
https://bugs.webkit.org/show_bug.cgi?id=167737
http://trac.webkit.org/changeset/212466

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

3 years agoSimple line layout: Implement positionForPoint.
zalan@apple.com [Sun, 19 Feb 2017 16:24:20 +0000 (16:24 +0000)]
Simple line layout: Implement positionForPoint.
https://bugs.webkit.org/show_bug.cgi?id=168565
<rdar://problem/30593370>

Reviewed by Antti Koivisto.

With this patch, now we don't need to switch over to line box tree anymore when positionForPoint()
is called on a single RenderText content (which is the majority of the simple line content).
This patch also adds a new positionForPoint method which returns a Position object instead of VisiblePosition.
Some of the positionForPoint() callsites are only interested in the Position object so constructing a VisiblePosition
(which could potentially kick off a layout) is a waste. At this point the non-simple line layout codepath still constructs
a VisiblePosition and that should be addresses as part of webkit.org/b/168566.

Covered by existing tests.

* dom/Document.cpp:
(WebCore::Document::caretRangeFromPoint):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::positionForPoint):
* rendering/RenderBlockFlow.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::positionForPoint):
* rendering/RenderObject.h:
* rendering/RenderText.cpp:
(WebCore::RenderText::positionForPoint):
* rendering/RenderText.h:
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::positionForPoint):
* rendering/SimpleLineLayoutFunctions.h:
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::runForPoint):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Run::logicalLeft):
(WebCore::SimpleLineLayout::RunResolver::Run::logicalRight):

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

3 years agoExecute pending scripts asynchronously after stylesheet loads complete
antti@apple.com [Sun, 19 Feb 2017 12:12:07 +0000 (12:12 +0000)]
Execute pending scripts asynchronously after stylesheet loads complete
https://bugs.webkit.org/show_bug.cgi?id=168367
rdar://problem/30561379

Reviewed by Andreas Kling.

The current synchronous execution is fragile and creates various problems.

* css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::checkLoaded):
* dom/ContainerNode.cpp:
(WebCore::ContainerNode::takeAllChildrenFrom):
(WebCore::ContainerNode::notifyChildInserted):
(WebCore::ContainerNode::removeChild):
(WebCore::ContainerNode::parserRemoveChild):
(WebCore::ContainerNode::removeChildren):

    Remove various places where we would trigger delayed synchronous execution.

* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::recalcStyle):

    Trigger scroll to anchor at the end of style resolution instead of when style sheet load completes.

(WebCore::Document::didRemoveAllPendingStylesheet):

    Call asynchronous script execution function.

* dom/Document.h:
(WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet): Deleted.
(WebCore::Document::notifyRemovePendingSheetIfNeeded): Deleted.
* dom/ScriptableDocumentParser.cpp:
(WebCore::ScriptableDocumentParser::ScriptableDocumentParser):
(WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheetsSoon):
(WebCore::ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired):

    Add a timer for executing pending scripts.

(WebCore::ScriptableDocumentParser::detach):
* dom/ScriptableDocumentParser.h:
(WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheets):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::removedFrom):
(WebCore::HTMLLinkElement::removePendingSheet):
* html/HTMLLinkElement.h:
* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::detach):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::isLoadingInAPISense):

    Stay in loading state if we have a pending script. This matches existing behavior.

* style/StyleScope.cpp:
(WebCore::Style::Scope::removePendingSheet):
* style/StyleScope.h:

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

3 years agoUnreviewed GTK+ gardening. Rebaseline fast/visual-viewport/rubberbanding-viewport...
carlosgc@webkit.org [Sun, 19 Feb 2017 11:54:36 +0000 (11:54 +0000)]
Unreviewed GTK+ gardening. Rebaseline fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html again.

This matches what bots expect now.

* platform/gtk/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt:

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