Resource Load Statistics: Add alternate classification method
[WebKit-https.git] / Source / WebCore / ChangeLog
index 4b0233b..5caa6ae 100644 (file)
+2017-02-21  John Wilander  <wilander@apple.com>
+
+        Resource Load Statistics: Add alternate classification method
+        https://bugs.webkit.org/show_bug.cgi?id=168347
+        <rdar://problem/30352793>
+
+        Reviewed by Alex Christensen.
+
+        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:
+
+2017-02-21  Alex Christensen  <achristensen@webkit.org>
+
+        Fix CMake build.
+
+        * PlatformMac.cmake:
+
+2017-02-21  Simon Fraser  <simon.fraser@apple.com>
+
+        Add Media Streams and Capture to features.json.
+
+        * features.json:
+
+2017-02-21  Jiewen Tan  <jiewen_tan@apple.com>
+
+        Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.
+
+        * features.json:
+
+2017-02-21  Romain Bellessort  <romain.bellessort@crf.canon.fr>
+
+        [Readable Streams API] Add ReadableStreamBYOBRequest view getter
+        https://bugs.webkit.org/show_bug.cgi?id=168652
+
+        Reviewed by Youenn Fablet.
+
+        Implemented getter for ReadableStreamBYOBRequest view attribute.
+        
+        Added 1 test checking that view length corresponds to autoAllocateChunkSize.
+        Also updated test expectations for W3C imported tests.
+
+        * Modules/streams/ReadableByteStreamInternals.js:
+        (isReadableStreamBYOBRequest): Added.
+        * Modules/streams/ReadableStreamBYOBRequest.js:
+        (view): Added.
+
+2017-02-21  Simon Fraser  <simon.fraser@apple.com>
+
+        Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.
+
+        * features.json:
+
+2017-02-21  Youenn Fablet  <youenn@apple.com>
+
+        [WebRTC] ICE candidates should be filtered according a policy
+        https://bugs.webkit.org/show_bug.cgi?id=168348
+
+        Reviewed by Alex Christensen.
+
+        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:
+
+2017-02-21  Jiewen Tan  <jiewen_tan@apple.com>
+
+        Unreviewed, update WebCrypto API feature status.
+
+        * features.json:
+
+2017-02-21  Simon Fraser  <simon.fraser@apple.com>
+
+        Fix the bad JSON.
+
+        * features.json:
+
+2017-02-21  Andreas Kling  <akling@apple.com>
+
+        [iOS] WebKit1 should use shared memory pressure handler code.
+        <https://webkit.org/b/168653>
+
+        Reviewed by Antti Koivisto.
+
+        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.
+
+2017-02-21  Anders Carlsson  <andersca@apple.com>
+
+        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):
+
+2017-02-21  Simon Fraser  <simon.fraser@apple.com>
+
+        Add Web Audio and Web MIDI to features.json.
+
+        * features.json:
+
+2017-02-21  Antti Koivisto  <antti@apple.com>
+
+        REGRESSION(r207669): Crash after mutating selector text
+        https://bugs.webkit.org/show_bug.cgi?id=168655
+        <rdar://problem/30632111>
+
+        Reviewed by Brent Fulgham.
+
+        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.
+
+2017-02-21  Jiewen Tan  <jiewen_tan@apple.com>
+
+        [WebCrypto] Add support for AES-CFB
+        https://bugs.webkit.org/show_bug.cgi?id=168344
+        <rdar://problem/20940221>
+
+        Reviewed by Brent Fulgham.
+
+        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.
+
+2017-02-21  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        Unreviewed, fix the ToT iOS build
+
+        Adopt updated UIKit SPI and remove calls to the deprecated version.
+
+        * platform/ios/WebItemProviderPasteboard.mm:
+        (-[WebItemProviderPasteboard setItems:]):
+
+2017-02-21  Per Arne Vollan  <pvollan@apple.com>
+
+        [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:
+
+2017-02-21  Jer Noble  <jer.noble@apple.com>
+
+        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):
+
+2017-02-21  Jer Noble  <jer.noble@apple.com>
+
+        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):
+
+2017-02-21  Jer Noble  <jer.noble@apple.com>
+
+        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):
+
+2017-02-21  Jer Noble  <jer.noble@apple.com>
+
+        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):
+
+2017-02-21  Jer Noble  <jer.noble@apple.com>
+
+        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):
+
+2017-02-21  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        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.
+
+2017-02-21  Alex Christensen  <achristensen@webkit.org>
+
+        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
+
+2017-02-20  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        Remove ENABLE_THREADED_COMPOSITOR build option
+        https://bugs.webkit.org/show_bug.cgi?id=168606
+
+        Reviewed by Michael Catanzaro.
+
+        * platform/TextureMapper.cmake:
+
+2017-02-20  Alex Christensen  <achristensen@webkit.org>
+
+        Fix some 32-bit builds after r212699
+
+        * platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:
+        (WebCore::RealtimeIncomingVideoSource::OnFrame):
+        Explicitly cast OSStatus to int for logging.
+
+2017-02-20  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Remove unnecessary PerformanceEntry virtual methods
+        https://bugs.webkit.org/show_bug.cgi?id=168633
+
+        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.
+
+2017-02-20  Youenn Fablet  <youenn@apple.com>
+
+        [WebRTC][Mac] Activate libwebrtc
+        https://bugs.webkit.org/show_bug.cgi?id=167293
+
+        Reviewed by Alex Christensen.
+
+        * Configurations/WebCore.xcconfig:
+        * Configurations/WebCoreTestSupport.xcconfig:
+
+2017-02-20  Joseph Pecoraro  <pecoraro@apple.com>
+
+        ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
+        https://bugs.webkit.org/show_bug.cgi?id=168356
+        <rdar://problem/30592486>
+
+        Reviewed by Ryosuke Niwa.
+
+        * 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.
+
+2017-02-20  Jer Noble  <jer.noble@apple.com>
+
+        Local audio-only stream will not trigger playback to begin
+        https://bugs.webkit.org/show_bug.cgi?id=168412
+
+        Reviewed by Youenn Fablet.
+
+        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):
+
+2017-02-20  Zalan Bujtas  <zalan@apple.com>
+
+        Simple line layout: Implement absoluteQuadsForRange.
+        https://bugs.webkit.org/show_bug.cgi?id=168613
+        <rdar://problem/30614618>
+
+        Reviewed by Simon Fraser.
+
+        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:
+
+2017-02-20  Ryan Haddad  <ryanhaddad@apple.com>
+
+        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
+
+2017-02-20  Sam Weinig  <sam@webkit.org>
+
+        [WebIDL] Add support for constructors that have variadic parameters
+        https://bugs.webkit.org/show_bug.cgi?id=168614
+
+        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.
+
+2017-02-20  John Wilander  <wilander@apple.com>
+
+        Resource Load Statistics: Add alternate classification method
+        https://bugs.webkit.org/show_bug.cgi?id=168347
+        <rdar://problem/30352793>
+
+        Reviewed by Alex Christensen.
+
+        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:
+
+2017-02-20  Anders Carlsson  <andersca@apple.com>
+
+        Use the new drag code path when dragging links
+        https://bugs.webkit.org/show_bug.cgi?id=168612
+
+        Reviewed by Tim Horton.
+
+        * 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.
+
+2017-02-20  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        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>
+
+        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):
+
+2017-02-20  Brent Fulgham  <bfulgham@apple.com>
+
+        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. 
+
+2017-02-17  Anders Carlsson  <andersca@apple.com>
+
+        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.
+
+        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.
+
+2017-02-20  Alex Christensen  <achristensen@webkit.org>
+
+        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 .
+
+2017-02-20  Romain Bellessort  <romain.bellessort@crf.canon.fr>
+
+        [Readable Streams API] Add ReadableByteStreamController byobRequest attribute
+        https://bugs.webkit.org/show_bug.cgi?id=168319
+
+        Reviewed by Youenn Fablet.
+
+        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.
+
+2017-02-20  Per Arne Vollan  <pvollan@apple.com>
+
+        [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.
+
+        * 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:
+
+2017-02-20  Jon Lee  <jonlee@apple.com>
+
+        Fix build error for iOS. Unreviewed.
+
+        * platform/graphics/GraphicsContext3D.cpp: Move stub function into !PLATFORM(COCOA) instead of !PLATFORM(MAC).
+
+2017-02-20  Jon Lee  <jonlee@apple.com>
+
+        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
+
+2017-02-20  Youenn Fablet  <youenn@apple.com>
+
+        [WebRTC] Fix some memory leaks in libwebrtc binding code
+        https://bugs.webkit.org/show_bug.cgi?id=168596
+
+        Reviewed by Eric Carlson.
+
+        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):
+
+2017-02-20  Alexey Proskuryakov  <ap@apple.com>
+
+        Clean up how WebKit exports _WebCreateFragment
+        https://bugs.webkit.org/show_bug.cgi?id=168579
+
+        Reviewed by Dan Bernstein.
+
+        * editing/Editor.h: Removed the declaration of _WebCreateFragment, SOFT_LINK doesn't need it.
+        * editing/cocoa/EditorCocoa.mm: Moved a FIXME comment here.
+
+2017-02-20  Ryan Haddad  <ryanhaddad@apple.com>
+
+        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
+
+2017-02-20  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        Remove code under USE(GRAPHICS_SURFACE)
+        https://bugs.webkit.org/show_bug.cgi?id=168592
+
+        Reviewed by Michael Catanzaro.
+
+        This was only used by EFL port.
+
+        * 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):
+
+2017-02-20  Dean Jackson  <dino@apple.com>
+
+        Add 'webglcontextchanged' WebGLContextEvent
+        https://bugs.webkit.org/show_bug.cgi?id=168595
+        <rdar://problem/30604254>
+
+        Reviewed by Antoine Quint.
+
+        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:
+
+2017-02-19  Dean Jackson  <dino@apple.com>
+
+        Activate/deactivate high performance GPU when requested
+        https://bugs.webkit.org/show_bug.cgi?id=168559
+        <rdar://problem/30592266>
+
+        Reviewed by Jon Lee.
+
+        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.
+
+2017-02-20  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        [css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
+        https://bugs.webkit.org/show_bug.cgi?id=167693
+
+        Reviewed by Sergio Villar Senin.
+
+        * 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):
+
+2017-02-20  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        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.
+
+        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.
+
+2017-02-19  Chris Dumez  <cdumez@apple.com>
+
+        onbeforeunload event return value coercion is not per-spec
+        https://bugs.webkit.org/show_bug.cgi?id=168382
+
+        Reviewed by Darin Adler.
+
+        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):
+
+2017-02-19  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [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):
+
+2017-02-18  Ryosuke Niwa  <rniwa@webkit.org>
+
+        REGRESSION(r212218): Assertion failures in and after parserRemoveChild
+        https://bugs.webkit.org/show_bug.cgi?id=168458
+
+        Reviewed by Antti Koivisto.
+
+        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.
+
+2017-02-19  Chris Dumez  <cdumez@apple.com>
+
+        <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.
+
+        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):
+
+2017-02-19  Commit Queue  <commit-queue@webkit.org>
+
+        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
+
+2017-02-19  Zalan Bujtas  <zalan@apple.com>
+
+        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):
+
+2017-02-19  Antti Koivisto  <antti@apple.com>
+
+        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:
+
+2017-02-18  Chris Dumez  <cdumez@apple.com>
+
+        <input type=range readonly> doesn't act per spec
+        https://bugs.webkit.org/show_bug.cgi?id=168422
+        <rdar://problem/30593189>
+
+        Reviewed by Ryosuke Niwa.
+
+        'readonly' attribute should not apply to <input type=range> as per the HTML
+        specification:
+        - https://html.spec.whatwg.org/#the-input-element:attr-input-readonly-3
+
+        Firefox and Edge already behave as per the specification.
+
+        No new tests, updated existing tests.
+
+        * html/RangeInputType.cpp:
+        (WebCore::RangeInputType::handleMouseDownEvent):
+        (WebCore::RangeInputType::handleTouchEvent):
+        (WebCore::RangeInputType::handleKeydownEvent):
+        * html/shadow/SliderThumbElement.cpp:
+        (WebCore::SliderThumbElement::defaultEventHandler):
+        (WebCore::SliderThumbElement::willRespondToMouseMoveEvents):
+        (WebCore::SliderThumbElement::willRespondToMouseClickEvents):
+
+2017-02-18  Chris Dumez  <cdumez@apple.com>
+
+        Recursive MessagePort.postMessage() calls causes tab to become unresponsive
+        https://bugs.webkit.org/show_bug.cgi?id=168548
+        <rdar://problem/29808005>
+
+        Reviewed by Darin Adler.
+
+        MessagePort::dispatchMessages() was getting messages one by one of the
+        channel's MessageQueue and firing the MessageEvent for each of them.
+        The issue is that we can get stuck in an infinite loop if the
+        MessageEvent handler posts a message on the same post.
+
+        To address the issue, we now takes all messages from the queue before
+        iterating over them to fire the event. This way, if new messages are
+        added to the queue in one of the MessageEvent handlers, they will not
+        be processed until the next event loop iteration, as is expected.
+
+        Test: fast/events/message-port-postMessage-recursive.html
+
+        * dom/MessagePort.cpp:
+        (WebCore::MessagePort::dispatchMessages):
+        * dom/MessagePortChannel.h:
+        (WebCore::MessagePortChannel::EventData::EventData):
+        * dom/default/PlatformMessagePortChannel.cpp:
+        (WebCore::MessagePortChannel::postMessageToRemote):
+        * dom/default/PlatformMessagePortChannel.h:
+        (WebCore::PlatformMessagePortChannel::MessagePortQueue::takeMessage):
+        (WebCore::PlatformMessagePortChannel::MessagePortQueue::takeAllMessages):
+        (WebCore::PlatformMessagePortChannel::MessagePortQueue::appendAndCheckEmpty):
+
+2017-02-18  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Remove COORDINATED_GRAPHICS_MULTIPROCESS
+        https://bugs.webkit.org/show_bug.cgi?id=168514
+
+        Reviewed by Darin Adler.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
+
+2017-02-17  Simon Fraser  <simon.fraser@apple.com>
+
+        Allow properties in CSSProperties.json that don't trigger code generation
+        https://bugs.webkit.org/show_bug.cgi?id=168535
+
+        Reviewed by Sam Weinig.
+        
+        In order to track the development of CSS properties that we have not yet implemented,
+        support '"skip-codegen" : true' in "codegen-properties".
+
+        Test by adding a few fill-related properties with this attribute.
+
+        * css/CSSProperties.json:
+        * css/makeprop.pl:
+        (isPropertyEnabled):
+        (addProperty):
+
+2017-02-17  Brian Burg  <bburg@apple.com>
+
+        Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
+        https://bugs.webkit.org/show_bug.cgi?id=168273
+        <rdar://problem/29949325>
+
+        Reviewed by Matt Baker.
+
+        Add the ability to dock Web Inspector to the left of the inspected view.
+        The frontend decides whether the Dock to Side button docks left or right
+        based on the current layout direction.
+
+        * inspector/InspectorFrontendClient.h:
+        * inspector/InspectorFrontendClientLocal.cpp:
+        (WebCore::InspectorFrontendClientLocal::setAttachedWindow):
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::requestSetDockSide):
+
+2017-02-16  Simon Fraser  <simon.fraser@apple.com>
+
+        Allow PlatformCALayers to specify that they want deep color backing store
+        https://bugs.webkit.org/show_bug.cgi?id=168495
+
+        Reviewed by Tim Horton.
+        
+        Currently capable iOS devices get deep color backing store by virtue of a supports
+        check in PlatformCALayerCocoa::PlatformCALayerCocoa(), and LegacyTileGridTile.
+
+        Future work will make layer contents format selection more complex, so express the need
+        for deep color on PlatformCALayer, and have the creators of PlatformCALayer (mainly the
+        flavors of GraphicsLayerCA) choose for them to support deep color. A bit of special-casing
+        is needed to propagte the state to TileControllers.
+        
+        The deep-colorness now propagates from PlatformCALayerRemote to RemoteLayerBackingStore,
+        instead of RemoteLayerBackingStore looking at the properties of the screen directly.
+
+        Remove PlatformCALayer::LayerTypeWebTiledLayer which was only used for the old CATiledLayers
+        that we no longer use.
+
+        An iphone7 test verifies that page tiles, normal layers and tiled layers get the deep
+        color state set on them.
+
+        Test: tiled-drawing/ios/iphone7/compositing-layers-deep-color.html
+
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::createPlatformCALayer):
+        (WebCore::GraphicsLayerCA::dumpAdditionalProperties):
+        * platform/graphics/ca/GraphicsLayerCA.h:
+        * platform/graphics/ca/PlatformCALayer.cpp:
+        (WebCore::PlatformCALayer::canHaveBackingStore):
+        (WebCore::operator<<):
+        * platform/graphics/ca/PlatformCALayer.h:
+        * platform/graphics/ca/TileController.cpp:
+        (WebCore::TileController::setZoomedOutContentsScale):
+        (WebCore::TileController::setAcceleratesDrawing):
+        (WebCore::TileController::setWantsDeepColorBackingStore):
+        (WebCore::TileController::createTileLayer):
+        * platform/graphics/ca/TileController.h:
+        * platform/graphics/ca/TileGrid.cpp:
+        (WebCore::TileGrid::updateTileLayerProperties):
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
+        (PlatformCALayerCocoa::PlatformCALayerCocoa):
+        (PlatformCALayerCocoa::commonInit):
+        (PlatformCALayerCocoa::wantsDeepColorBackingStore):
+        (PlatformCALayerCocoa::setWantsDeepColorBackingStore):
+        (layerContentsFormat):
+        (PlatformCALayerCocoa::updateContentsFormat):
+        * platform/graphics/ca/cocoa/WebTiledBackingLayer.h:
+        * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
+        (-[WebTiledBackingLayer setWantsDeepColorBackingStore:]):
+        (-[WebTiledBackingLayer wantsDeepColorBackingStore]):
+        * platform/graphics/ca/win/PlatformCALayerWin.cpp:
+        (PlatformCALayerWin::wantsDeepColorBackingStore):
+        (PlatformCALayerWin::setWantsDeepColorBackingStore):
+        (printLayer):
+        * platform/graphics/ca/win/PlatformCALayerWin.h:
+        * platform/spi/cocoa/QuartzCoreSPI.h:
+
+2017-02-17  Jer Noble  <jer.noble@apple.com>
+
+        Refactoring: Make sure to unprepare WebAudioSourceProviderAVFObjC when its owner is destroyed.
+        https://bugs.webkit.org/show_bug.cgi?id=168532
+
+        Reviewed by Youenn Fablet.
+
+        Because WebAudioSourceProviderAVFObjC has a back-pointer to the object which creted it, make
+        sure that back-pointer is invalidated once the creating object is destroyed by calling
+        WebAudioSOurceProviderAVFObjC::unprepare().
+
+        Drive-by Fix: In WebAudioSourceProviderAVFObjC::audioSamplesAvailable(), PlatformAudioData will
+        always be of the WebAudioBufferList type. If this ever becomes untrue, an invalid downcast will
+        be caught by downcast<>, so just remove the is<> check.
+
+        * platform/mediastream/mac/AVAudioCaptureSource.mm:
+        (WebCore::AVAudioCaptureSource::~AVAudioCaptureSource):
+        * platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
+        * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
+        (WebCore::MockRealtimeAudioSourceMac::~MockRealtimeAudioSourceMac):
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
+        (WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource):
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.h:
+        * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
+        (WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
+        (WebCore::WebAudioSourceProviderAVFObjC::setClient):
+        (WebCore::WebAudioSourceProviderAVFObjC::unprepare):
+        (WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):
+
+2017-02-17  Antoine Quint  <graouts@apple.com>
+
+        [Modern Media Controls] Improve handling of <video> with only audio tracks
+        https://bugs.webkit.org/show_bug.cgi?id=167836
+        <rdar://problem/30255812>
+
+        Reviewed by Dean Jackson.
+
+        We now check for the availability of video tracks before considering a <video>
+        element is displaying an actual video file and turning auto-hide on. We also
+        check that we have video tracks before enabling the fullscreen button. This
+        brings the behavior of a <video> pointing to a resource with no video tracks
+        to be the same as an <audio> element.
+
+        Test: media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html
+
+        * Modules/modern-media-controls/media/controls-visibility-support.js:
+        (ControlsVisibilitySupport.prototype.get tracksToMonitor):
+        (ControlsVisibilitySupport.prototype._updateControls):
+        (ControlsVisibilitySupport):
+        * Modules/modern-media-controls/media/fullscreen-support.js:
+        (FullscreenSupport.prototype.syncControl):
+        (FullscreenSupport):
+
+2017-02-17  Antoine Quint  <graouts@apple.com>
+
+        [Modern Media Controls] Toggle playback when clicking on the video on macOS
+        https://bugs.webkit.org/show_bug.cgi?id=168515
+        <rdar://problem/30577441>
+
+        Reviewed by Dean Jackson.
+
+        Listen to click events on the macOS media controls. Detect any clicks that were on the
+        background instead of the controls widgets themselves, and tell the delegate (MediaController)
+        about them.
+
+        Tests: media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause.html
+               media/modern-media-controls/media-controller/media-controller-click-on-video-background-to-dismiss-tracks-panel-should-not-toggle-playback.html
+               media/modern-media-controls/media-controller/media-controller-click-on-video-controls-should-not-pause.html
+
+        * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
+        (MacOSFullscreenMediaControls.prototype._handleMousedown):
+        * Modules/modern-media-controls/controls/macos-inline-media-controls.js:
+        (MacOSInlineMediaControls.prototype.handleEvent):
+        * Modules/modern-media-controls/controls/macos-media-controls.js:
+        (MacOSMediaControls.prototype.handleEvent):
+        (MacOSMediaControls):
+        * Modules/modern-media-controls/media/media-controller.js:
+        (MediaController.prototype.togglePlayback):
+        (MediaController.prototype.macOSControlsBackgroundWasClicked):
+        (MediaController.prototype._updateControlsIfNeeded):
+        * Modules/modern-media-controls/media/playback-support.js:
+        (PlaybackSupport.prototype.buttonWasPressed):
+
+2017-02-17  Jer Noble  <jer.noble@apple.com>
+
+        Refactoring: Remove AudioSourceObserverObjC and AudioCaptureSourceProviderObjC
+        https://bugs.webkit.org/show_bug.cgi?id=168520
+
+        Reviewed by Youenn Fablet.
+
+        Having AudioCaptureSourceProviderObjC as the type provided to WebAudioSourceProviderAVFObjC
+        (and only ever to WebAudioSourceProviderAVFObjC) makes it impossible for that class to add
+        an observer on RealtimeMediaSource, of which all classes inheriting from
+        WebAudioSourceProviderAVFObjC are subclasses. There is no need to treat
+        WebAudioSourceProviderAVFObjC as an "observer", since the only thing it will ever observe is
+        the object which created it and hold an explicit reference to it. So replace all instances
+        of the "observer" pattern with direct calls to the necessary (newly non-virtual) methods.
+        This allows WebAudioSourceProviderAVFObjC to register as an observer directly on
+        RealtimeMediaSource, to listen for audioSamplesAvailable() instead of process(), and remove
+        a lot of unnecessary conversion code and observer duplication.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/mediastream/RealtimeMediaSource.h:
+        (WebCore::RealtimeMediaSource::Observer::sourceStopped):
+        (WebCore::RealtimeMediaSource::Observer::sourceMutedChanged):
+        (WebCore::RealtimeMediaSource::Observer::sourceEnabledChanged):
+        (WebCore::RealtimeMediaSource::Observer::sourceSettingsChanged):
+        (WebCore::RealtimeMediaSource::Observer::preventSourceFromStopping):
+        * platform/mediastream/mac/AVAudioCaptureSource.h:
+        * platform/mediastream/mac/AVAudioCaptureSource.mm:
+        (WebCore::AVAudioCaptureSource::shutdownCaptureSession):
+        (WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
+        (WebCore::AVAudioCaptureSource::addObserver): Deleted.
+        (WebCore::AVAudioCaptureSource::removeObserver): Deleted.
+        (WebCore::AVAudioCaptureSource::start): Deleted.
+        * platform/mediastream/mac/AudioCaptureSourceProviderObjC.h: Removed.
+        * platform/mediastream/mac/AudioSourceObserverObjC.h: Removed.
+        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
+        * platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
+        * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
+        (WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
+        (WebCore::MockRealtimeAudioSourceMac::reconfigure):
+        (WebCore::MockRealtimeAudioSourceMac::audioSourceProvider):
+        (WebCore::MockRealtimeAudioSourceMac::addObserver): Deleted.
+        (WebCore::MockRealtimeAudioSourceMac::removeObserver): Deleted.
+        (WebCore::MockRealtimeAudioSourceMac::start): Deleted.
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
+        (WebCore::RealtimeIncomingAudioSource::audioSourceProvider):
+        (WebCore::RealtimeIncomingAudioSource::addObserver): Deleted.
+        (WebCore::RealtimeIncomingAudioSource::removeObserver): Deleted.
+        (WebCore::RealtimeIncomingAudioSource::start): Deleted.
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.h:
+        * platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
+        * platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
+        * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
+        * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
+        (WebCore::WebAudioSourceProviderAVFObjC::create):
+        (WebCore::WebAudioSourceProviderAVFObjC::WebAudioSourceProviderAVFObjC):
+        (WebCore::WebAudioSourceProviderAVFObjC::setClient):
+        (WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):
+        (WebCore::WebAudioSourceProviderAVFObjC::process): Deleted.
+
+2017-02-17  Antoine Quint  <graouts@apple.com>
+
+        REGRESSION: Subtitles menu in media controls allows multiple items to be selected
+        https://bugs.webkit.org/show_bug.cgi?id=168168
+        <rdar://problem/30488605>
+
+        Reviewed by Dean Jackson.
+
+        Ensure that only a single audio track and a single text track can be selected
+        in the tracks panel at any given point.
+
+        * Modules/modern-media-controls/media/tracks-support.js:
+        (TracksSupport.prototype.tracksPanelSelectionDidChange):
+        (TracksSupport.prototype._sortedTrackList):
+        (TracksSupport):
+
+2017-02-17  Jeremy Jones  <jeremyj@apple.com>
+
+        Invalidate WebAVSampleBufferStatusChangeListener when MediaPlayerPrivateMediaStreamAVFObjC is deallocated.
+        https://bugs.webkit.org/show_bug.cgi?id=168488
+
+        Reviewed by Jer Noble.
+
+        Fixes periodically crashing test: fast/mediastream/MediaStream-video-element-track-stop.html
+
+        WebAVSampleBufferStatusChangeListener has an unretained referecne to MediaPlayerPrivateMediaStreamAVFObjC
+        that must be invaldated when MediaPlayerPrivateMediaStreamAVFObjC is deallocated.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):
+
+2017-02-17  Antoine Quint  <graouts@apple.com>
+
+        [Modern Media Controls] Improve handling of live broadcast video
+        https://bugs.webkit.org/show_bug.cgi?id=168506
+        <rdar://problem/30432094>
+
+        Reviewed by Dean Jackson.
+
+        We improve the handling of live broadcast video by:
+        
+            - checking that we have a media source before deciding to show the controls
+              bar and start button
+            - support a mode where neither the status text nor the scrubber is visible
+              in case we're still waiting on sufficient data to determine the video
+              time and we haven't really started loading data yet
+            - not showing time labels when we have an infinite duration
+            - ensuring the status label is left-aligned
+
+        Test: media/modern-media-controls/status-label/status-label-text-align.html
+
+        * Modules/modern-media-controls/controls/macos-inline-media-controls.js:
+        (MacOSInlineMediaControls.prototype.layout):
+        * Modules/modern-media-controls/controls/status-label.css:
+        (.status-label):
+        * Modules/modern-media-controls/controls/status-label.js:
+        (StatusLabel.prototype.get enabled):
+        (StatusLabel.prototype.set enabled):
+        * Modules/modern-media-controls/media/controls-visibility-support.js:
+        (ControlsVisibilitySupport.prototype._updateControls):
+        (ControlsVisibilitySupport):
+        * Modules/modern-media-controls/media/status-support.js:
+        (StatusSupport.prototype.syncControl):
+        (StatusSupport):
+        * Modules/modern-media-controls/media/time-labels-support.js:
+        (TimeLabelsSupport.prototype.syncControl):
+        (TimeLabelsSupport):
+
+2017-02-17  Anders Carlsson  <andersca@apple.com>
+
+        Begin overhauling the pasteboard implementation
+        https://bugs.webkit.org/show_bug.cgi?id=168525
+
+        Reviewed by Tim Horton.
+
+        Add a new PasteboardWriterData object. This object will hold data that is going
+        to be written to the pasteboard at some point. Currently it only supports plain text.
+
+        Also add a Mac-only PasteboardWriter class which can convert a PasteboardWriterDataObject
+        into an object that conforms to NSPasteboardWriting.
+
+        The basic idea is that instead of doing a bunch of pasteboard operations,
+        we'll just package all the pasteboard data up into an object and ship it over to WebKit.
+
+        This code is currently unused but will be adopted by a new drag implementation (in an upcoming patch).
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/PasteboardWriterData.cpp: Added.
+        (WebCore::PasteboardWriterData::PasteboardWriterData):
+        (WebCore::PasteboardWriterData::~PasteboardWriterData):
+        (WebCore::PasteboardWriterData::isEmpty):
+        (WebCore::PasteboardWriterData::setPlainText):
+        * platform/PasteboardWriterData.h: Added.
+        * platform/mac/PasteboardWriter.h: Added.
+        * platform/mac/PasteboardWriter.mm: Added.
+        (WebCore::createPasteboardWriting):
+        * platform/spi/mac/NSPasteboardSPI.h: Added.
+
+2017-02-17  Per Arne Vollan  <pvollan@apple.com>
+
+        Apply SVG styles paint-order, stroke-linejoin, and stroke-linecap on DOM text.
+        https://bugs.webkit.org/show_bug.cgi?id=168044
+        rdar://problem/30165746
+
+        Reviewed by Simon Fraser.
+
+        This patch moves these styles out of svg, and sets the properties on video cues.
+
+        Tests: fast/css/parsing-paint-order.html
+               fast/css/parsing-stroke-linecap.html
+               fast/css/parsing-stroke-linejoin.html
+               fast/css/parsing-stroke-width.html
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::paintOrder):
+        (WebCore::ComputedStyleExtractor::propertyValue):
+        * css/CSSProperties.json:
+        * css/SVGCSSComputedStyleDeclaration.cpp:
+        (WebCore::ComputedStyleExtractor::svgPropertyValue):
+        (WebCore::paintOrder): Deleted.
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::isValidCueStyleProperty):
+        * page/CaptionUserPreferencesMediaAF.cpp:
+        (WebCore::CaptionUserPreferencesMediaAF::cssPropertyWithTextEdgeColor):
+        * rendering/style/RenderStyle.cpp:
+        (WebCore::RenderStyle::diff):
+        (WebCore::RenderStyle::paintTypesForPaintOrder):
+        * rendering/style/RenderStyle.h:
+        (WebCore::RenderStyle::setPaintOrder):
+        (WebCore::RenderStyle::paintOrder):
+        (WebCore::RenderStyle::initialPaintOrder):
+        (WebCore::RenderStyle::setCapStyle):
+        (WebCore::RenderStyle::capStyle):
+        (WebCore::RenderStyle::initialCapStyle):
+        (WebCore::RenderStyle::setJoinStyle):
+        (WebCore::RenderStyle::joinStyle):
+        (WebCore::RenderStyle::initialJoinStyle):
+        (WebCore::RenderStyle::strokeWidth):
+        (WebCore::RenderStyle::setStrokeWidth):
+        (WebCore::RenderStyle::hasVisibleStroke):
+        (WebCore::RenderStyle::setStrokeOpacity):
+        * rendering/style/SVGRenderStyle.cpp:
+        (WebCore::SVGRenderStyle::diff):
+        (WebCore::SVGRenderStyle::paintTypesForPaintOrder): Deleted.
+        * rendering/style/SVGRenderStyle.h:
+        (WebCore::SVGRenderStyle::initialBufferedRendering):
+        (WebCore::SVGRenderStyle::initialFillRule):
+        (WebCore::SVGRenderStyle::initialMaskType):
+        (WebCore::SVGRenderStyle::setBufferedRendering):
+        (WebCore::SVGRenderStyle::setFillRule):
+        (WebCore::SVGRenderStyle::setMaskType):
+        (WebCore::SVGRenderStyle::bufferedRendering):
+        (WebCore::SVGRenderStyle::fillRule):
+        (WebCore::SVGRenderStyle::strokeMiterLimit):
+        (WebCore::SVGRenderStyle::maskType):
+        (WebCore::SVGRenderStyle::hasStroke):
+        (WebCore::SVGRenderStyle::setBitDefaults):
+        (WebCore::SVGRenderStyle::InheritedFlags::operator==):
+        (WebCore::SVGRenderStyle::initialCapStyle): Deleted.
+        (WebCore::SVGRenderStyle::initialJoinStyle): Deleted.
+        (WebCore::SVGRenderStyle::initialPaintOrder): Deleted.
+        (WebCore::SVGRenderStyle::setCapStyle): Deleted.
+        (WebCore::SVGRenderStyle::setJoinStyle): Deleted.
+        (WebCore::SVGRenderStyle::setPaintOrder): Deleted.
+        (WebCore::SVGRenderStyle::capStyle): Deleted.
+        (WebCore::SVGRenderStyle::joinStyle): Deleted.
+        (WebCore::SVGRenderStyle::strokeWidth): Deleted.
+        (WebCore::SVGRenderStyle::paintOrder): Deleted.
+        (WebCore::SVGRenderStyle::hasVisibleStroke): Deleted.
+        (WebCore::SVGRenderStyle::setStrokeWidth): Deleted.
+        * rendering/style/SVGRenderStyleDefs.cpp:
+        (WebCore::StyleStrokeData::StyleStrokeData):
+        (WebCore::StyleStrokeData::operator==):
+        * rendering/style/SVGRenderStyleDefs.h:
+        * rendering/style/StyleRareInheritedData.cpp:
+        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
+        (WebCore::StyleRareInheritedData::operator==):
+        * rendering/style/StyleRareInheritedData.h:
+        * rendering/svg/RenderSVGEllipse.cpp:
+        (WebCore::RenderSVGEllipse::strokeShape):
+        * rendering/svg/RenderSVGPath.cpp:
+        (WebCore::RenderSVGPath::strokeShape):
+        (WebCore::RenderSVGPath::shapeDependentStrokeContains):
+        (WebCore::RenderSVGPath::shouldStrokeZeroLengthSubpath):
+        (WebCore::RenderSVGPath::zeroLengthLinecapPath):
+        * rendering/svg/RenderSVGRect.cpp:
+        (WebCore::RenderSVGRect::strokeShape):
+        * rendering/svg/RenderSVGShape.cpp:
+        (WebCore::RenderSVGShape::strokeShape):
+        (WebCore::RenderSVGShape::fillStrokeMarkers):
+        (WebCore::RenderSVGShape::strokeWidth):
+        (WebCore::RenderSVGShape::hasSmoothStroke):
+        * rendering/svg/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::strokeBoundingBox):
+        * rendering/svg/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::paint):
+        (WebCore::SVGInlineTextBox::paintDecoration):
+        * rendering/svg/SVGRenderSupport.cpp:
+        (WebCore::SVGRenderSupport::applyStrokeStyleToContext):
+        * rendering/svg/SVGRenderTreeAsText.cpp:
+        (WebCore::writeStyle):
+
+2017-02-17  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [SOUP] Handle Settings::allowsAnySSLCertificate() in SSL sockets
+        https://bugs.webkit.org/show_bug.cgi?id=168521
+
+        Reviewed by Michael Catanzaro.
+
+        When Settings::allowsAnySSLCertificate() is enabled, connect to accept-certificate signal of the GTlsConnection
+        to always accept the certificates.
+
+        Fixes: http/tests/websocket/tests/hybi/simple-wss.html
+
+        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
+        (WebCore::wssConnectionAcceptCertificateCallback):
+        (WebCore::wssSocketClientEventCallback):
+        (WebCore::SocketStreamHandleImpl::create):
+
+2017-02-17  Simon Fraser  <simon.fraser@apple.com>
+
+        Fixed elements bounce when rubber-banding at the bottom of the page
+        https://bugs.webkit.org/show_bug.cgi?id=168493
+        rdar://problem/30567713
+
+        Reviewed by Tim Horton.
+
+        FrameView::visibleDocumentRect() was computing a bad visible rect when bottom-rubber-banding,
+        by adding rubberBandBottom which is negative, rather than subtracting.
+
+        Log some more scrolling stuff.
+
+        Ironically, the existing test didn't test stick-to-viewport fixed position because
+        backgroundShouldExtendBeyondPage() is off by default in WTR, so clone it to a test
+        that sets this, to test both behaviors.
+
+        This also revealed that dynamic changes to backgroundShouldExtendBeyondPage() need
+        to be propagated to the scrolling tree, which is fixed in AsyncScrollingCoordinator::frameViewLayoutUpdated().
+
+        Test: fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::updateLayoutViewport):
+        (WebCore::FrameView::visibleDocumentRect):
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
+        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
+        (WebCore::ScrollingStateFrameScrollingNode::dumpProperties):
+        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
+        (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition):
+        * page/scrolling/mac/ScrollingCoordinatorMac.mm:
+        (WebCore::ScrollingCoordinatorMac::scheduleTreeStateCommit):
+        (WebCore::ScrollingCoordinatorMac::commitTreeState):
+
+2017-02-17  Simon Fraser  <simon.fraser@apple.com>
+
+        REGRESSION (209396): Apple Pay buttons do not render
+        https://bugs.webkit.org/show_bug.cgi?id=168523
+        rdar://problem/30451563
+
+        Reviewed by Geoffrey Garen.
+
+        The new CSS parser mistakenly converted -apple-pay-button values to
+        -webkit-pay-button, breaking -webkit-appearance: -apple-pay-button.
+
+        Fix by excluding "-apple-pay" prefixed values from the conversion.
+
+        Test: fast/css/appearance-apple-pay-button.html
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::isAppleLegacyCssValueKeyword):
+
+2017-02-17  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r212463.
+        https://bugs.webkit.org/show_bug.cgi?id=168526
+
+        Some crashes with GuardMalloc (Requested by anttik on
+        #webkit).
+
+        Reverted changeset:
+
+        "Execute pending scripts asynchronously after stylesheet loads
+        complete"
+        https://bugs.webkit.org/show_bug.cgi?id=168367
+        http://trac.webkit.org/changeset/212463
+
+2017-02-16  Brent Fulgham  <bfulgham@apple.com>
+
+        RenderView needs to be updated when FrameView changes
+        https://bugs.webkit.org/show_bug.cgi?id=168481
+        <rdar://problem/30339638>
+
+        Reviewed by Andreas Kling.
+
+        The state of the Document's RenderView can get out of sync with the Frame's FrameView.
+        We need a notification mechanism so that modifications to the Frame's view are properly
+        relayed to Document so that it can have a correct RenderView.
+
+        * dom/Document.cpp:
+        (WebCore::Document::didBecomeCurrentDocumentInView): Create an updated render tree (if
+        one does not already exist).
+        (WebCore::Document::destroyRenderTree): Remove an incorrect ASSERT. We may enter this
+        code when the Frame uses 'setView(nullptr)', which happens during certain  updates.
+        * dom/Document.h:
+        * page/Frame.cpp:
+        (WebCore::Frame::setView): Destroy the old render tree (if present) before switching to
+        the new view. Then notify the document that it is now the current document in the new view.
+
+2017-02-17  Enrique Ocaña González  <eocanha@igalia.com>
+
+        [GStreamer] Fast replay on video hide/unhide on platforms with limited video buffer pools
+        https://bugs.webkit.org/show_bug.cgi?id=168505
+
+        Reviewed by Žan Doberšek.
+
+        The WebKit code isn't consuming the video samples when the video layer is hidden,
+        so the buffers aren't being returned to the pool and starve the decoder when the
+        buffer pool runs out of buffers (on platforms using a buffer pool and a custom
+        allocator, such as OMX on the Raspberry Pi 2). When the video layer is restored,
+        the pipeline tries to catch up and the user sees the video "going fast forward".
+
+        The added code "consumes" (removes and unrefs) the buffer in that case. However,
+        the sample isn't completely removed because it still holds important info (eg:
+        caps) needed for the proper operation of the video element.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
+
+2017-02-17  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [SOUP] Stop removing the fragment identifier from resource requests
+        https://bugs.webkit.org/show_bug.cgi?id=168509
+
+        Reviewed by Sergio Villar Senin.
+
+        I don't know why, but have always removed the fragment identifier from the URL when creating the SoupURI that
+        is passed to libsoup. Maybe it was a bug in a very old version of libsoup, but it doesn't look necessary anymore
+        and it's causing several layout test failures.
+
+        Fixes: http/tests/svg/svg-use-external.html
+               imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html
+               imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html
+
+        * platform/network/soup/ResourceRequestSoup.cpp:
+        (WebCore::ResourceRequest::createSoupURI): Do not remove the fragment identifier from the URL.
+
+2017-02-16  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [JSC] Drop PassRefPtr from ArrayBuffer
+        https://bugs.webkit.org/show_bug.cgi?id=168455
+
+        Reviewed by Geoffrey Garen.
+
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::CloneDeserializer::readArrayBufferView):
+        * css/FontFace.cpp:
+        (WebCore::FontFace::create):
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):
+        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
+        (WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
+        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
+        (WebCore::CDMSessionAVFoundationObjC::generateKeyRequest):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
+
+2017-02-16  Simon Fraser  <simon.fraser@apple.com>
+
+        REGRESSION(r212439): Web Inspector Toolbar / Window appears broken
+        https://bugs.webkit.org/show_bug.cgi?id=168494
+
+        Reviewed by Joseph Pecoraro.
+
+        Missed one conversion from acceleratesDrawing to drawsAsynchronously, which
+        caused non-Whippet GrpahicsContext shadow drawing to happen unexpectedly.
+
+        * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
+        (-[WebTiledBackingLayer drawsAsynchronously]):
+        (-[WebTiledBackingLayer acceleratesDrawing]): Deleted.
+
+2017-02-16  Chris Dumez  <cdumez@apple.com>
+
+        <input>.labels is empty if type changes from text->hidden->checkbox
+        https://bugs.webkit.org/show_bug.cgi?id=168358
+
+        Reviewed by Ryosuke Niwa.
+
+        We were invalidating LabelsNodeLists on 'for' attribute change.
+        We now also invalidate them of 'type' attribute change since
+        HTMLInputElements whose type is 'hidden' do not support labels.
+
+        No new tests, updated existing test.
+
+        * dom/Document.h:
+        * dom/LiveNodeList.h:
+        (WebCore::shouldInvalidateTypeOnAttributeChange):
+        * html/LabelsNodeList.cpp:
+        (WebCore::LabelsNodeList::LabelsNodeList):
+
+2017-02-16  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Remove even more EFL from WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=168485
+
+        Reviewed by Alex Christensen.
+
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetAttributes):
+        (atkRole):
+        * css/StyleRule.cpp:
+        (WebCore::StyleRuleBase::copy):
+        * platform/ContextMenuItem.h:
+        * platform/graphics/OpenGLESShims.h:
+        * platform/graphics/PlatformDisplay.cpp:
+        (WebCore::PlatformDisplay::createPlatformDisplay):
+        * platform/graphics/PlatformDisplay.h:
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
+        (WebCore::Font::platformInit):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
+        * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
+        (WebCore::GraphicsLayerTextureMapper::setContentsToImage):
+        * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
+        * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:
+        * platform/network/soup/ResourceErrorSoup.cpp:
+        (WebCore::ResourceError::timeoutError):
+        * platform/network/soup/SoupNetworkSession.cpp:
+        (WebCore::SoupNetworkSession::setProxySettingsFromEnvironment): Deleted.
+        * platform/network/soup/SoupNetworkSession.h:
+
+2017-02-16  Daniel Bates  <dabates@apple.com>
+
+        Remove Chromium-specific code to call FrameLoaderClient::redirectDataToPlugin(nullptr)
+        https://bugs.webkit.org/show_bug.cgi?id=168417
+        <rdar://problem/30541748>
+
+        Reviewed by Brent Fulgham.
+
+        Remove Chromium-specific code that was added in r125500 to call FrameLoaderClient::redirectDataToPlugin(nullptr)
+        in PluginDocument::detachFromPluginElement(). Calling redirectDataToPlugin() with nullptr was used by the
+        Chromium port to signify that the plugin document was being destroyed so that they could tear down their
+        plugin widget. And PluginDocument::detachFromPluginElement() is the only place that calls redirectDataToPlugin()
+        passing nullptr. No other port made use of this machinery and the Chromium port has long since been removed
+        from the Open Source WebKit Project. We should remove this code.
+
+        * html/PluginDocument.cpp:
+        (WebCore::PluginDocumentParser::appendBytes): Pass the plugin widget by reference.
+        (WebCore::PluginDocument::detachFromPluginElement): Remove call to FrameLoaderClient::redirectDataToPlugin().
+        This call was only used by the Chromium port as means to be notified when the plugin document was being
+        destroyed. No other port made use of this notification or needed such a notification.
+        * loader/EmptyClients.cpp: Change argument of redirectDataToPlugin() from Widget* to Widget& to convey
+        that this function always takes a valid Widget. Also remove unnecessary argument name as the data type
+        of the argument and the name of the function sufficiently describes the purpose of the argument.
+        * loader/FrameLoaderClient.h: Ditto.
+
+2017-02-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        font-weight in @font-face can cause a font to be downloaded even when it's not used
+        https://bugs.webkit.org/show_bug.cgi?id=168114
+        <rdar://problem/30301317>
+
+        Reviewed by Darin Adler.
+
+        There were two problems with our font loading code.
+
+        When we are in the middle of a download, we will use a special interstitial font,
+        and this special font has a flag set which will cause it to be invisible when it is
+        drawn. However, when we start using this font during the load, we give it a
+        unicode-range of U+0-0 which means that it will never be used, and fallback will
+        happen to other weights immediately. 
+
+        The second problem with the font loading code is that this interstital font is just
+        Times. Times doesn't support every character, which means that if we are trying
+        to render some exotic character, we fall back to other weights. The solution here
+        is to use LastResort as the interstitial font, because it supports all characters.
+        Because its metrics are reasonable and we don't ever actually paint this
+        interstitial font, this choice is no worse than Times.
+
+        Tests: fast/text/font-style-download.html
+               fast/text/font-weight-download-2.html
+               fast/text/font-weight-download.html
+               fast/text/font-weight-fallback.html
+
+        * css/CSSFontFace.cpp:
+        (WebCore::CSSFontFace::font):
+        * css/CSSSegmentedFontFace.cpp:
+        (WebCore::appendFont):
+        (WebCore::CSSSegmentedFontFace::fontRanges):
+        (WebCore::appendFontWithInvalidUnicodeRangeIfLoading): Deleted.
+        * platform/graphics/Font.h:
+        (WebCore::Font::widthForGlyph):
+        * platform/graphics/FontCache.h:
+        * platform/graphics/freetype/FontCacheFreeType.cpp:
+        (WebCore::FontCache::lastResortFallbackFontForEveryCharacter):
+        * platform/graphics/mac/FontCacheMac.mm:
+        (WebCore::FontCache::lastResortFallbackFontForEveryCharacter):
+        * platform/graphics/win/FontCacheWin.cpp:
+        (WebCore::FontCache::lastResortFallbackFontForEveryCharacter):
+
+2017-02-16  Alex Christensen  <achristensen@webkit.org>
+
+        Remove EFL-specific files in Source.
+
+        Rubber-stamped by Anders Carlsson.
+
+        * editing/efl: Removed.
+        * page/efl: Removed.
+        * platform/audio/efl: Removed.
+        * platform/efl: Removed.
+        * platform/efl/DefaultTheme: Removed.
+        * platform/efl/DefaultTheme/widget: Removed.
+        * platform/efl/DefaultTheme/widget/button: Removed.
+        * platform/efl/DefaultTheme/widget/check: Removed.
+        * platform/efl/DefaultTheme/widget/combo: Removed.
+        * platform/efl/DefaultTheme/widget/entry: Removed.
+        * platform/efl/DefaultTheme/widget/progressbar: Removed.
+        * platform/efl/DefaultTheme/widget/radio: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar: Removed.
+        * platform/efl/DefaultTheme/widget/search: Removed.
+        * platform/efl/DefaultTheme/widget/search/cancel: Removed.
+        * platform/efl/DefaultTheme/widget/search/decoration: Removed.
+        * platform/efl/DefaultTheme/widget/search/field: Removed.
+        * platform/efl/DefaultTheme/widget/slider: Removed.
+        * platform/efl/DefaultTheme/widget/spinner: Removed.
+        * platform/gamepad/efl: Removed.
+        * platform/graphics/efl: Removed.
+        * platform/graphics/surfaces/efl: Removed.
+        * platform/network/efl: Removed.
+
+2017-02-16  Simon Fraser  <simon.fraser@apple.com>
+
+        Add WebUSB to features.json as a "Not Considering".
+
+        * features.json:
+
+2017-02-16  Alex Christensen  <achristensen@webkit.org>
+
+        Remove old URL parser
+        https://bugs.webkit.org/show_bug.cgi?id=168483
+
+        Reviewed by Tim Horton.
+
+        * platform/URL.cpp:
+        (WebCore::isSchemeFirstChar):
+        (WebCore::isSchemeChar):
+        (WebCore::URL::URL):
+        (WebCore::URL::setProtocol):
+        (WebCore::URL::setHost):
+        (WebCore::URL::removePort):
+        (WebCore::URL::setPort):
+        (WebCore::URL::setHostAndPort):
+        (WebCore::URL::setUser):
+        (WebCore::URL::setPass):
+        (WebCore::URL::setFragmentIdentifier):
+        (WebCore::URL::setQuery):
+        (WebCore::URL::setPath):
+        (WebCore::URL::serialize):
+        (WebCore::isUserInfoChar): Deleted.
+        (WebCore::isHostnameChar): Deleted.
+        (WebCore::isIPv6Char): Deleted.
+        (WebCore::isPathSegmentEndChar): Deleted.
+        (WebCore::appendASCII): Deleted.
+        (WebCore::findFirstOf): Deleted.
+        (WebCore::checkEncodedString): Deleted.
+        (WebCore::URL::init): Deleted.
+        (WebCore::appendEscapingBadChars): Deleted.
+        (WebCore::escapeAndAppendNonHierarchicalPart): Deleted.
+        (WebCore::copyPathRemovingDots): Deleted.
+        (WebCore::hasSlashDotOrDotDot): Deleted.
+        (WebCore::URL::parse): Deleted.
+        (WebCore::cannotBeABaseURL): Deleted.
+        (WebCore::isDefaultPortForScheme): Deleted.
+        (WebCore::hostPortIsEmptyButCredentialsArePresent): Deleted.
+        (WebCore::isNonFileHierarchicalScheme): Deleted.
+        (WebCore::isCanonicalHostnameLowercaseForScheme): Deleted.
+        (WebCore::findHostnamesInMailToURL): Deleted.
+        (WebCore::findHostnameInHierarchicalURL): Deleted.
+        (WebCore::encodeHostnames): Deleted.
+        (WebCore::encodeRelativeString): Deleted.
+        (WebCore::substituteBackslashes): Deleted.
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::URLParser):
+        (WebCore::URLParser::setEnabled): Deleted.
+        (WebCore::URLParser::enabled): Deleted.
+        * platform/URLParser.h:
+        * platform/cf/URLCF.cpp:
+        (WebCore::URL::URL):
+        * platform/mac/URLMac.mm:
+        (WebCore::URL::URL):
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Build fixes.
+
+        * page/gtk/EventHandlerGtk.cpp:
+        (WebCore::EventHandler::createDraggingDataTransfer):
+        * page/win/EventHandlerWin.cpp:
+        (WebCore::EventHandler::createDraggingDataTransfer):
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Remove EFL from WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=168477
+
+        Reviewed by Brian Burg.
+
+        * accessibility/AccessibilityList.cpp:
+        (WebCore::AccessibilityList::childHasPseudoVisibleListItemMarkers):
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::canSetValueAttribute):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::AccessibilityObject):
+        (WebCore::AccessibilityObject::textIteratorBehaviorForTextRange):
+        * accessibility/AccessibilityObject.h:
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
+        * accessibility/AccessibilityTableColumn.cpp:
+        (WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityTableHeaderContainer.cpp:
+        (WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored):
+        * crypto/CryptoKey.cpp:
+        * crypto/keys/CryptoKeyRSA.h:
+        * dom/Document.cpp:
+        (WebCore::Document::implicitClose):
+        * editing/Editor.cpp:
+        (WebCore::Editor::performCutOrCopy):
+        (WebCore::Editor::copyImage):
+        * editing/Editor.h:
+        * editing/FrameSelection.h:
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::requiresAcceleratedCompositingForWebGL):
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::port):
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::restoreScrollPositionAndViewState):
+        * loader/icon/IconDatabase.cpp:
+        (WebCore::IconDatabase::performURLImport):
+        * page/ContextMenuController.cpp:
+        (WebCore::ContextMenuController::contextMenuItemSelected):
+        (WebCore::ContextMenuController::populate):
+        (WebCore::ContextMenuController::checkOrEnableIfNeeded):
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::eventInvertsTabsToLinksClientCallResult):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout):
+        * platform/ContextMenuItem.h:
+        * platform/Cursor.h:
+        * platform/DragData.h:
+        * platform/DragImage.h:
+        * platform/FileSystem.h:
+        * platform/LocalizedStrings.h:
+        * platform/MIMETypeRegistry.cpp:
+        (WebCore::initializeSupportedImageMIMETypesForEncoding):
+        * platform/NotImplemented.h:
+        * platform/Pasteboard.h:
+        * platform/PlatformKeyboardEvent.h:
+        * platform/PlatformMouseEvent.h:
+        * platform/PlatformSpeechSynthesizer.h:
+        * platform/PlatformWheelEvent.h:
+        * platform/Widget.h:
+        * platform/graphics/ANGLEWebKitBridge.h:
+        * platform/graphics/BitmapImage.h:
+        * platform/graphics/GraphicsContext3D.h:
+        * platform/graphics/Icon.h:
+        * platform/graphics/Image.h:
+        (WebCore::Image::getEvasObject): Deleted.
+        * platform/graphics/IntPoint.h:
+        * platform/graphics/IntRect.h:
+        * platform/graphics/opengl/Extensions3DOpenGL.cpp:
+        (WebCore::Extensions3DOpenGL::createVertexArrayOES):
+        (WebCore::Extensions3DOpenGL::deleteVertexArrayOES):
+        (WebCore::Extensions3DOpenGL::isVertexArrayOES):
+        (WebCore::Extensions3DOpenGL::bindVertexArrayOES):
+        (WebCore::Extensions3DOpenGL::supportsExtension):
+        * platform/graphics/opengl/Extensions3DOpenGL.h:
+        * platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
+        * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
+        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
+        (WebCore::GraphicsContext3D::createForCurrentGLContext):
+        (WebCore::GraphicsContext3D::reshape):
+        (WebCore::GraphicsContext3D::createVertexArray):
+        (WebCore::GraphicsContext3D::deleteVertexArray):
+        (WebCore::GraphicsContext3D::isVertexArray):
+        (WebCore::GraphicsContext3D::bindVertexArray):
+        * platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
+        * platform/network/NetworkStateNotifier.h:
+        * platform/posix/FileSystemPOSIX.cpp:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::ensureRootLayer):
+        * rendering/RenderText.cpp:
+        (WebCore::RenderText::previousOffsetForBackwardDeletion):
+        * xml/XSLStyleSheetLibxslt.cpp:
+        * xml/XSLTExtensions.cpp:
+        * xml/XSLTProcessorLibxslt.cpp:
+        * xml/XSLTUnicodeSort.cpp:
+
+2017-02-16  Zalan Bujtas  <zalan@apple.com>
+
+        Simple line layout: Add forced line layout info to coverage print.
+        https://bugs.webkit.org/show_bug.cgi?id=168470
+
+        Reviewed by Simon Fraser.
+
+        This is about potential vs. actual coverage:
+
+        Simple line layout potential coverage: 65.05%
+        Simple line layout actual coverage: 46.60%
+        Forced line layout blocks: 4 content length: 57(18.45%)
+
+        Not testable.
+
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Rename DataTransfer functions to indicate whether they are for dragging or dropping
+        https://bugs.webkit.org/show_bug.cgi?id=168478
+
+        Reviewed by Tim Horton.
+
+        * dom/DataTransfer.cpp:
+        (WebCore::DataTransfer::createForDrag):
+        (WebCore::DataTransfer::createForDrop):
+        (WebCore::DataTransfer::createForDragAndDrop): Deleted.
+        * dom/DataTransfer.h:
+        * page/DragController.cpp:
+        (WebCore::DragController::dragExited):
+        (WebCore::DragController::performDragOperation):
+        (WebCore::DragController::tryDHTMLDrag):
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::createDraggingDataTransfer):
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Rename EventHandler::freeDataTransfer to invalidateDataTransfer
+        https://bugs.webkit.org/show_bug.cgi?id=168472
+
+        Reviewed by Tim Horton.
+
+        The code doesn't necessarily free the data transfer object, so rename the member function
+        to reflect that. Also, get rid of a goto.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::invalidateDataTransfer):
+        (WebCore::EventHandler::dragSourceEndedAt):
+        (WebCore::EventHandler::handleDrag):
+        (WebCore::EventHandler::freeDataTransfer): Deleted.
+        * page/EventHandler.h:
+
+2017-02-16  Alex Christensen  <achristensen@webkit.org>
+
+        Special URLs without a host are invalid
+        https://bugs.webkit.org/show_bug.cgi?id=168461
+
+        Reviewed by Tim Horton.
+
+        http://? should be invalid.  This matches Chrome and the spec and the intent of my implementation
+        of URLParser which already fails with urls like http:// and this was just an oversight.
+        Covered by newly passing web platform tests.  Updated API tests.
+
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::parse):
+
+2017-02-16  Zalan Bujtas  <zalan@apple.com>
+
+        Simple line layout: Add support for pagination.
+        https://bugs.webkit.org/show_bug.cgi?id=168355
+        <rdar://problem/30119769>
+
+        Reviewed by David Hyatt.
+
+        This patch adds basic support for paginated content including widows and orphans.
+
+        This is based on the normal line layout pagination logic. However there are 2 major
+        advantages here (and they allow us to have a much simpler logic):
+        1. all the lines are positioned by the time we start paginating them and
+        2. lines always have uniform heights. 
+
+        This is not enabled yet.
+
+        * rendering/RenderBlockFlow.h:
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::computeLineTopAndBottomWithOverflow):
+        (WebCore::SimpleLineLayout::computeLineBreakIndex):
+        (WebCore::SimpleLineLayout::setPageBreakForLine):
+        (WebCore::SimpleLineLayout::computeOffsetAfterLineBreak):
+        (WebCore::SimpleLineLayout::updateMinimumPageHeight):
+        (WebCore::SimpleLineLayout::adjustLinePositionsForPagination):
+        (WebCore::SimpleLineLayout::create):
+        (WebCore::SimpleLineLayout::Layout::create):
+        (WebCore::SimpleLineLayout::Layout::Layout):
+        * rendering/SimpleLineLayout.h:
+        (WebCore::SimpleLineLayout::Layout::isPaginated):
+        (WebCore::SimpleLineLayout::Layout::struts):
+        * rendering/SimpleLineLayoutFunctions.h:
+        (WebCore::SimpleLineLayout::computeFlowHeight):
+        * rendering/SimpleLineLayoutResolver.h:
+        (WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition):
+
+2017-02-11  Filip Pizlo  <fpizlo@apple.com>
+
+        The collector thread should only start when the mutator doesn't have heap access
+        https://bugs.webkit.org/show_bug.cgi?id=167737
+
+        Reviewed by Keith Miller.
+
+        Added new tests in JSTests and LayoutTests.
+        
+        The WebCore changes involve:
+        
+        - Refactoring around new header discipline.
+        
+        - Adding crazy GC APIs to window.internals to enable us to test the GC's runloop discipline.
+
+        * ForwardingHeaders/heap/GCFinalizationCallback.h: Added.
+        * ForwardingHeaders/heap/IncrementalSweeper.h: Added.
+        * ForwardingHeaders/heap/MachineStackMarker.h: Added.
+        * ForwardingHeaders/heap/RunningScope.h: Added.
+        * bindings/js/CommonVM.cpp:
+        * testing/Internals.cpp:
+        (WebCore::Internals::parserMetaData):
+        (WebCore::Internals::isReadableStreamDisturbed):
+        (WebCore::Internals::isGCRunning):
+        (WebCore::Internals::addGCFinalizationCallback):
+        (WebCore::Internals::stopSweeping):
+        (WebCore::Internals::startSweeping):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2017-02-16  Jiewen Tan  <jiewen_tan@apple.com>
+
+        [WebCrypto] remove toJSValueFromJsonWebKey from custom SubtleCrypto binding codes
+        https://bugs.webkit.org/show_bug.cgi?id=167026
+
+        Reviewed by Chris Dumez.
+
+        Covered by existing tests.
+
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::jsSubtleCryptoFunctionExportKeyPromise):
+        (WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
+        (WebCore::toJSValueFromJsonWebKey): Deleted.
+        * crypto/JsonWebKey.h:
+        * crypto/JsonWebKey.idl:
+        * crypto/RsaOtherPrimesInfo.idl:
+        Change std::optional<String> to String in order to use toJS<IDLDictionary<JsonWebKey>>.
+        * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
+        (WebCore::CryptoAlgorithmAES_CBC::importKey):
+        * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
+        (WebCore::CryptoAlgorithmAES_KW::importKey):
+        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
+        (WebCore::CryptoAlgorithmHMAC::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
+        (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
+        (WebCore::CryptoAlgorithmRSA_OAEP::importKey):
+        * crypto/keys/CryptoKeyAES.cpp:
+        (WebCore::CryptoKeyAES::importJwk):
+        Only check if key_ops contains all of the specified usages when key_ops field of jwk is present,
+        as per the specification: https://www.w3.org/TR/WebCryptoAPI/#aes-cbc-operations
+        * crypto/keys/CryptoKeyAES.h:
+        * crypto/keys/CryptoKeyHMAC.cpp:
+        (WebCore::CryptoKeyHMAC::importJwk):
+        * crypto/keys/CryptoKeyHMAC.h:
+        * crypto/keys/CryptoKeyRSA.cpp:
+        (WebCore::CryptoKeyRSA::importJwk):
+        Accommodate the change from std::optional<String> to String.
+        * crypto/mac/CryptoKeyRSAMac.cpp:
+        (WebCore::CryptoKeyRSA::create):
+        Add a null check for p.
+
+2017-02-16  Antti Koivisto  <antti@apple.com>
+
+        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:
+
 2017-02-16  Anders Carlsson  <andersca@apple.com>
 
         Set the DHTML drag image in the DHTML type check