Resource Load Statistics: Add alternate classification method
[WebKit-https.git] / Source / WebCore / ChangeLog
index fc66240..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