A track source should be unmuted whenever reenabled after setDirection changes
[WebKit-https.git] / Source / WebCore / ChangeLog
index a94b5ee..ae955ea 100644 (file)
@@ -1,3 +1,908 @@
+2019-01-18  Youenn Fablet  <youenn@apple.com>
+
+        A track source should be unmuted whenever reenabled after setDirection changes
+        https://bugs.webkit.org/show_bug.cgi?id=193554
+        <rdar://problem/47366196>
+
+        Reviewed by Eric Carlson.
+
+        Ensure that track gets unmuted after being fired as part of track event.
+        Test is triggering some existing issues with MediaPlayerPrivateMediaStreamAVFObjC.
+        Given the enqueuing of samples happens in a different frame than the thread used to update media stream and the active video track,
+        some enqueued samples might not be from the right active video track or there might be no active video track.
+
+        Test: webrtc/video-setDirection.html
+
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::fireTrackEvent):
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestNotificationWhenReadyForVideoData):
+
+2019-01-18  Charlie Turner  <cturner@igalia.com>
+
+        [GStreamer][EME][ClearKey] Request keys from CDMInstance rather than passing via bus messages
+        https://bugs.webkit.org/show_bug.cgi?id=192229
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Covered by existing tests.
+
+        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
+        (WebCore::parseLicenseFormat): There is a defect in some C++11
+        compiles where they will copy this return value since the type
+        doesn't exactly match. Force a move with WTFMove.
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerBase::dispatchDecryptionKey):
+        Deleted. No longer used by anything.
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: Ditto.
+        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
+        Rename these methods to avoid "namespacing names".
+        (webkit_media_clear_key_decrypt_class_init):
+        (finalize):
+        (handleKeyResponse): This is a temporary fix, we need some more
+        reorganisation to be full driven by CDMInstance APIs for decryption.
+        (findAndSetKey):
+        (decrypt):
+        (webKitMediaClearKeyDecryptorFinalize): Deleted.
+        (webKitMediaClearKeyDecryptorHandleKeyResponse): Deleted.
+        (webKitMediaClearKeyDecryptorFindAndSetKey): Deleted.
+        (webKitMediaClearKeyDecryptorDecrypt): Deleted.
+        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: Ditto.
+        (webkit_media_common_encryption_decrypt_class_init):
+        (finalize):
+        (transformCaps):
+        (transformInPlace):
+        (isCDMInstanceAvailable):
+        (sinkEventHandler):
+        (queryHandler):
+        (changeState):
+        (setContext):
+        (webKitMediaCommonEncryptionDecryptorFinalize): Deleted.
+        (webkitMediaCommonEncryptionDecryptTransformCaps): Deleted.
+        (webkitMediaCommonEncryptionDecryptTransformInPlace): Deleted.
+        (webkitMediaCommonEncryptionDecryptIsCDMInstanceAvailable): Deleted.
+        (webkitMediaCommonEncryptionDecryptSinkEventHandler): Deleted.
+        (webkitMediaCommonEncryptionDecryptorQueryHandler): Deleted.
+        (webKitMediaCommonEncryptionDecryptorChangeState): Deleted.
+        (webKitMediaCommonEncryptionDecryptorSetContext): Deleted.
+        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:
+        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithLocalInstance):
+        Deleted. No longer passing key information over bus messages.
+        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
+
+2019-01-18  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC][MarginCollapsing] Collapsing through should not ignore floats.
+        https://bugs.webkit.org/show_bug.cgi?id=193564
+
+        Reviewed by Antti Koivisto.
+
+        Float boxes prevent collapsing through.
+
+        Test: fast/block/float/float-in-descendant-formatting-context.html
+
+        * layout/blockformatting/BlockMarginCollapse.cpp:
+        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
+
+2019-01-18  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC] Do not skip float boxes that are not part of the current formatting context when computing bottom.
+        https://bugs.webkit.org/show_bug.cgi?id=193562
+
+        Reviewed by Antti Koivisto.
+
+        The current floating context's (float) boxes could belong to descendant formatting contexts.
+        We need to include them as well when computing height (bottom) (we essentially need to skip ancestor floats only).
+
+        <div id=container style="overflow: hidden"><div>foo<div style="float: left">bar</div></div></div>
+        While computing the height for "container", the float box needs to be taken into account even though
+        it is part of another (descendant) formatting context (the inline formatting context established by its parent div).
+
+        * layout/floats/FloatingState.cpp:
+        (WebCore::Layout::FloatingState::bottom const):
+        * layout/floats/FloatingState.h:
+        (WebCore::Layout::FloatingState::FloatItem::isDescendantOfFormattingRoot const):
+        (WebCore::Layout::FloatingState::FloatItem::inFormattingContext const): Deleted.
+
+2019-01-18  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC] Check for inflow children while computing height for block formatting context roots.
+        https://bugs.webkit.org/show_bug.cgi?id=193555
+
+        Reviewed by Antti Koivisto.
+
+        This patch also extends areEssentiallyEqual to 0.125px to be able to match (essentially equal) inline runs. 
+
+        * layout/FormattingContextGeometry.cpp:
+        (WebCore::Layout::contentHeightForFormattingContextRoot):
+        * layout/Verification.cpp:
+        (WebCore::Layout::areEssentiallyEqual):
+        * page/FrameViewLayoutContext.cpp:
+        (WebCore::layoutUsingFormattingContext):
+
+2019-01-18  Yacine Bandou  <yacine.bandou@softathome.com>
+
+        [WebAudio] Release the AudioDestination when uninitializing DefaultAudioDestinationNode
+        https://bugs.webkit.org/show_bug.cgi?id=192590
+
+        Reviewed by Philippe Normand.
+
+        When we uninitialize DefaultAudioDestinationNode, the AudioDestination is stopped but not destroyed.
+
+        On some platforms the resources are allocated and released with the AudioDestination, thus when we uninitialize
+        DefaultAudioDestinationNode we don't release resources because the AudioDestination is not destroyed.
+
+        * Modules/webaudio/DefaultAudioDestinationNode.cpp:
+        (WebCore::DefaultAudioDestinationNode::uninitialize):
+
+2019-01-18  Yacine Bandou  <yacine.bandou@softathome.com>
+
+        [WebAudio] Call AudioContext::uninitialize() immediately when the AudioContext is stopped
+        https://bugs.webkit.org/show_bug.cgi?id=192586
+
+        Reviewed by Philippe Normand.
+
+        When WebProcess is killed, AudioContext::uninitialize() is not called immediately in the stop so
+        the AudioDestinationNode is not destroyed.
+
+        In my case, I have a resource device manager, the output audio device is reserved when AudioDestinationNode
+        is instantiated and it is released when AudioDestinationNode is destroyed, thus when the webprocess is killed,
+        the resources leak.
+
+        AudioContext::uninitialize() is not called immediately since r94608.
+        This modification can now be reverted without regression in WebAudio tests.
+
+        Test: webaudio/mediaelementaudiosourcenode-gc.html
+
+        * Modules/webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::stop):
+
+2019-01-18  Simon Fraser  <simon.fraser@apple.com>
+
+        ScrollingCoordinator::scrollableAreaScrollLayerDidChange() can be removed
+        https://bugs.webkit.org/show_bug.cgi?id=193559
+
+        Reviewed by Antti Koivisto.
+
+        ScrollingCoordinator::scrollableAreaScrollLayerDidChange() existed for CoordinatedGraphics,
+        but the code that used it was removed in webkit.org/r229318 so we can remove it and
+        code that calls it.
+
+        * page/scrolling/ScrollingCoordinator.h:
+        (WebCore::ScrollingCoordinator::willDestroyScrollableArea):
+        (WebCore::ScrollingCoordinator::scrollableAreaScrollLayerDidChange): Deleted.
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateGeometry):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
+        (WebCore::RenderLayerCompositor::didAddScrollingLayer):
+        (WebCore::RenderLayerCompositor::scrollingLayerDidChange): Deleted.
+        * rendering/RenderLayerCompositor.h:
+
+2019-01-17  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [iOS] Content offset jumps erratically when autoscrolling near scroll view content inset areas
+        https://bugs.webkit.org/show_bug.cgi?id=193494
+        <rdar://problem/46859627>
+
+        Reviewed by Simon Fraser and Tim Horton.
+
+        When computing the content offset to scroll to when revealing a given rect in content coordinates, we currently
+        just use the unobscured content rect. As a result, when scrolling to reveal a rect, we'll clamp the final scroll
+        position such that only content is visible. For example, when asked to reveal the rect `(0, 0, 1, 1)`, we adjust
+        the scroll position to be the origin.
+
+        However, consider the case where a client (e.g. Mail on iOS) has added a content inset to the web view's scroll
+        view. If we're asked to reveal a rect that is outside the content area but within a content inset, we will still
+        end up clamping the scroll position to the unobscured rect. This manifests in a bug where selecting text and
+        autoscrolling in iOS Mail compose while the scroll view is scrolled all the way to the top to reveal the To/Cc/
+        Subject fields causes the content offset to jump to the origin, rather than staying at (0, -topContentInset).
+
+        To fix this, we teach `RenderLayer::scrollRectToVisible` about content insets that are visible. Rather than use
+        the content rects as-is, expand to encompass visible content insets as well. This ensures that revealing a
+        position which is already visible won't cause us to scroll away the content inset area and only show the
+        unobscured rect.
+
+        Tests:  editing/selection/ios/autoscroll-with-top-content-inset.html
+                fast/scrolling/ios/scroll-into-view-with-top-content-inset.html
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::unobscuredContentRectExpandedByContentInsets const):
+
+        Introduce a helper method that expands the unobscured content rect to include surrounding content insets.
+
+        * page/FrameView.h:
+        * page/Page.h:
+        (WebCore::Page::contentInsets const):
+        (WebCore::Page::setContentInsets):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::scrollRectToVisible):
+        (WebCore::RenderLayer::getRectToExpose const):
+
+2019-01-17  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r240124.
+
+        This commit broke an internal build.
+
+        Reverted changeset:
+
+        "SDK_VARIANT build destinations should be separate from non-
+        SDK_VARIANT builds"
+        https://bugs.webkit.org/show_bug.cgi?id=189553
+        https://trac.webkit.org/changeset/240124
+
+2019-01-17  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: fix Xcode project file list after r239976
+        https://bugs.webkit.org/show_bug.cgi?id=193474
+
+        Reviewed by Timothy Hatcher.
+
+        * WebCore.xcodeproj/project.pbxproj:
+
+2019-01-17  Ross Kirsling  <ross.kirsling@sony.com>
+
+        Unreviewed WinCairo fix -- hundreds of tests crash after r240031.
+
+        * platform/network/curl/ResourceHandleCurl.cpp:
+        (WebCore::ResourceHandle::createCurlRequest):
+        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+        (WebCore::ResourceHandle::receivedCredential):
+        (WebCore::ResourceHandle::getCredential):
+
+2019-01-17  John Wilander  <wilander@apple.com>
+
+        Add infrastructure to enable/disable ITP Debug Mode through Preferences
+        https://bugs.webkit.org/show_bug.cgi?id=193510
+        <rdar://problem/47330969>
+
+        Reviewed by Dean Jackson.
+
+        No new tests. These changes are purely for settings/preferences.
+
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::setItpDebugModeEnabled):
+        (WebCore::RuntimeEnabledFeatures::itpDebugModeEnabled const):
+        (WebCore::RuntimeEnabledFeatures::setResourceLoadStatisticsDebugMode): Deleted.
+        (WebCore::RuntimeEnabledFeatures::resourceLoadStatisticsDebugMode const): Deleted.
+            Renamed.
+        * page/Settings.yaml:
+            Removed since this particular setting should not be persisted for privacy
+            reasons.
+
+2019-01-17  Jer Noble  <jer.noble@apple.com>
+
+        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
+        https://bugs.webkit.org/show_bug.cgi?id=189553
+
+        Reviewed by Tim Horton.
+
+        * Configurations/Base.xcconfig:
+        * Configurations/SDKVariant.xcconfig: Added.
+        * Configurations/WebCore.xcconfig:
+
+2019-01-17  Jer Noble  <jer.noble@apple.com>
+
+        MediaPlayerPrivateAVFoundationObjC can return incorrect paused information
+        https://bugs.webkit.org/show_bug.cgi?id=193499
+
+        Reviewed by Eric Carlson.
+
+        MediaPlayerPrivateAVFoundation uses rate() as an indicator of whether the player
+        is paused or not. This is incorrect when playback is stalled waiting for more data.
+        For MPPAVFObjC, use the timeControlStatus as a more accurate indicator of whether
+        the player is playing.
+
+        Now that we have correct play state information, we can remove the handlePlaybackCommand()
+        path when playing remotely for a more direct approach of notifying the HTMLMediaElement
+        that the play state has changed.
+
+        Drive-by fix: Before throwing away the AVPlayer, clear its output context. This keeps
+        remote devices from keeping the AVPlayer alive.
+
+        Drive-by fix #2: The NullMediaPlayer should always return "true" for paused(), not "false",
+        since it can't possibly play anything.
+
+        * platform/graphics/MediaPlayer.cpp:
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::paused const):
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
+        (WebCore::MediaPlayerPrivateAVFoundation::platformPaused const):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::platformPaused const):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::timeControlStatusDidChange):
+
+2019-01-17  Jiewen Tan  <jiewen_tan@apple.com>
+
+        [Mac] Add a new quirk to HTMLFormControlElement::isMouseFocusable
+        https://bugs.webkit.org/show_bug.cgi?id=193478
+        <rdar://problem/34368591>
+
+        Reviewed by Brent Fulgham.
+
+        By default in macOS, submit buttons (controls) are not focusable. WebKit follows this system convention
+        as suggested by the spec: https://html.spec.whatwg.org/multipage/interaction.html#focusable-area. This
+        is also the convention Firefox respects. However, Chrome doesn't. ceac.state.gov is by far the only
+        website that assumes submit buttons are focusable, and will prohibit users from completing immigration
+        forms, such as DS160 if buttons are not. To help immigrations, we decide to add a new quirk to
+        HTMLFormControlElement::isMouseFocusable such that submit buttons are mouse focusable.
+
+        This quirk is for ceac.state.gov specifically, and therefore no tests.
+
+        * html/HTMLFormControlElement.cpp:
+        (WebCore::HTMLFormControlElement::isMouseFocusable const):
+        (WebCore::HTMLFormControlElement::needsSiteSpecificQuirks const):
+        * html/HTMLFormControlElement.h:
+
+2019-01-17  Alex Christensen  <achristensen@webkit.org>
+
+        Fix WinCairo build after r240117
+        https://bugs.webkit.org/show_bug.cgi?id=193529
+
+        * PlatformWin.cmake:
+        * platform/network/curl/SocketStreamHandleImplCurl.cpp:
+
+2019-01-17  Youenn Fablet  <youenn@apple.com>
+
+        Add release logging for incoming and outgoing webrtc audio tracks
+        https://bugs.webkit.org/show_bug.cgi?id=185545
+
+        Reviewed by Eric Carlson.
+
+        Add logging of audio tracks. When doing a WebRTC call,
+        one log line is added each second for each audio track.
+        Validated that logging is done through manual testing.
+
+        Refactored code to use LogHelper and apply it to video sources as well.
+
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::addTrack):
+        (WebCore::LibWebRTCMediaEndpoint::sourceFromNewReceiver):
+        (WebCore::sourceFromNewReceiver): Deleted.
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
+        (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
+        (WebCore::RealtimeIncomingAudioSource::logChannel const):
+        (WebCore::RealtimeIncomingAudioSource::logger const):
+        * platform/mediastream/RealtimeIncomingAudioSource.h:
+        (WebCore::RealtimeIncomingAudioSource::setLogger):
+        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
+        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
+        (WebCore::RealtimeIncomingVideoSource::logChannel const):
+        (WebCore::RealtimeIncomingVideoSource::logger const):
+        * platform/mediastream/RealtimeIncomingVideoSource.h:
+        (WebCore::RealtimeIncomingVideoSource::setLogger):
+        * platform/mediastream/RealtimeOutgoingAudioSource.cpp:
+        (WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
+        (WebCore::RealtimeOutgoingAudioSource::sendAudioFrames):
+        (WebCore::RealtimeOutgoingAudioSource::logChannel const):
+        (WebCore::RealtimeOutgoingAudioSource::logger const):
+        * platform/mediastream/RealtimeOutgoingAudioSource.h:
+        (WebCore::RealtimeOutgoingAudioSource::setLogger):
+        * platform/mediastream/RealtimeOutgoingVideoSource.cpp:
+        (WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
+        (WebCore::RealtimeOutgoingVideoSource::sendBlackFramesIfNeeded):
+        (WebCore::RealtimeOutgoingVideoSource::sendOneBlackFrame):
+        (WebCore::RealtimeOutgoingVideoSource::logChannel const):
+        (WebCore::RealtimeOutgoingVideoSource::logger const):
+        * platform/mediastream/RealtimeOutgoingVideoSource.h:
+        (WebCore::RealtimeOutgoingVideoSource::setLogger):
+        * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
+        (WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
+        * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.h:
+        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
+        (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):
+        (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
+        (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
+        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
+        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
+        (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):
+        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
+        (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
+
+2019-01-17  Alex Christensen  <achristensen@webkit.org>
+
+        Stop using NetworkStorageSession::storageSession in WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=193529
+
+        Reviewed by Tim Horton.
+
+        Ownership of the map that NetworkStorageSession::storageSession searches needs to move to the WebKit/WebKitLegacy layer,
+        so when WebCore used to look in this map it needs to call a client function to ask the layer above it for the storage object.
+        I've called this client StorageSessionProvider::storageSession.  Right now it just looks in NetworkStorageSession::storageSession,
+        but this added abstraction makes it possible to move the currently process-global map to be a member of the NetworkProcess object.
+
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::connect):
+        * WebCore.xcodeproj/project.pbxproj:
+        * loader/CookieJar.cpp:
+        (WebCore::CookieJar::create):
+        (WebCore::CookieJar::CookieJar):
+        (WebCore::CookieJar::cookies const):
+        (WebCore::CookieJar::setCookies):
+        (WebCore::CookieJar::cookiesEnabled const):
+        (WebCore::CookieJar::cookieRequestHeaderFieldValue const):
+        (WebCore::CookieJar::getRawCookies const):
+        (WebCore::CookieJar::deleteCookie):
+        * loader/CookieJar.h:
+        * loader/EmptyClients.cpp:
+        (WebCore::pageConfigurationWithEmptyClients):
+        * page/Page.h:
+        * page/SocketProvider.cpp:
+        (WebCore::SocketProvider::createSocketStreamHandle):
+        * page/SocketProvider.h:
+        * platform/network/NetworkingContext.h:
+        * platform/network/SocketStreamHandleImpl.cpp:
+        (WebCore::cookieDataForHandshake):
+        (WebCore::SocketStreamHandleImpl::platformSendHandshake):
+        * platform/network/StorageSessionProvider.h: Added.
+        (WebCore::StorageSessionProvider::~StorageSessionProvider):
+        * platform/network/cf/SocketStreamHandleImpl.h:
+        (WebCore::SocketStreamHandleImpl::create):
+        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
+        (WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):
+        (WebCore::SocketStreamHandleImpl::getStoredCONNECTProxyCredentials):
+        * platform/network/curl/SocketStreamHandleImpl.h:
+        (WebCore::SocketStreamHandleImpl::create):
+        * platform/network/soup/SocketStreamHandleImpl.h:
+        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
+        (WebCore::SocketStreamHandleImpl::create):
+
+2019-01-17  Jon Lee  <jonlee@apple.com>
+
+        [EME] Remove Amazon Prime Video from quirks list
+        https://bugs.webkit.org/show_bug.cgi?id=193514
+        rdar://problem/47295330
+
+        Reviewed by Jer Noble.
+
+        * page/Quirks.cpp:
+        (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):
+
+2019-01-17  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC] An element with transform is a containing block for positioned descendants.
+        https://bugs.webkit.org/show_bug.cgi?id=193534
+
+        Reviewed by Antti Koivisto.
+
+        "For elements whose layout is governed by the CSS box model, any value other than none for the transform
+        property also causes the element to establish a containing block for all descendants."
+        https://www.w3.org/TR/css-transforms-1/
+
+        * layout/layouttree/LayoutBox.cpp:
+        (WebCore::Layout::Box::containingBlock const):
+
+2019-01-17  Simon Fraser  <simon.fraser@apple.com>
+
+        ScrollingCoordinator: separate updating node geometry from node layers
+        https://bugs.webkit.org/show_bug.cgi?id=193527
+
+        Reviewed by Antti Koivisto.
+
+        Updating scrolling tree node layers happens in a different code path from updating geometry;
+        the former has to be post-flush, when GraphicsLayer has made tiled or structural layers.
+        Geometry only needs to be updated after layout, and soon we'll do this via compositing updates.
+        
+        We can also clean up the ScrollingCoordinator API and have a single function that updates
+        node layers (handling different node types), and separate functions for pushing viewport-constrained
+        and scrolling node geometry.
+
+        No observable behavior change.
+
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::setNodeLayers):
+        (WebCore::AsyncScrollingCoordinator::setScrollingNodeGeometry):
+        (WebCore::AsyncScrollingCoordinator::setViewportConstraintedNodeGeometry):
+        (WebCore::AsyncScrollingCoordinator::updateFrameScrollingNode): Deleted.
+        (WebCore::AsyncScrollingCoordinator::updateOverflowScrollingNode): Deleted.
+        (WebCore::AsyncScrollingCoordinator::updateNodeLayer): Deleted.
+        (WebCore::AsyncScrollingCoordinator::updateNodeViewportConstraints): Deleted.
+        * page/scrolling/AsyncScrollingCoordinator.h:
+        * page/scrolling/ScrollingCoordinator.h:
+        (WebCore::ScrollingCoordinator::setNodeLayers):
+        (WebCore::ScrollingCoordinator::setScrollingNodeGeometry):
+        (WebCore::ScrollingCoordinator::setViewportConstraintedNodeGeometry):
+        (WebCore::ScrollingCoordinator::updateNodeLayer): Deleted.
+        (WebCore::ScrollingCoordinator::updateNodeViewportConstraints): Deleted.
+        (WebCore::ScrollingCoordinator::updateFrameScrollingNode): Deleted.
+        (WebCore::ScrollingCoordinator::updateOverflowScrollingNode): Deleted.
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
+        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
+        * rendering/RenderLayerCompositor.h:
+
+2019-01-17  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC][Quirk] Take body padding and border into account when stretching height.
+        https://bugs.webkit.org/show_bug.cgi?id=193528
+
+        Reviewed by Antti Koivisto.
+
+        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
+        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
+        * layout/displaytree/DisplayBox.h:
+        (WebCore::Display::Box::verticalBorder const):
+        (WebCore::Display::Box::horizontalBorder const):
+        (WebCore::Display::Box::verticalPadding const):
+        (WebCore::Display::Box::horizontalPadding const):
+        * page/FrameViewLayoutContext.cpp:
+        (WebCore::layoutUsingFormattingContext):
+
+2019-01-17  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC] For height computation, the bottom edge of the last line box value should not include top border/padding
+        https://bugs.webkit.org/show_bug.cgi?id=193520
+
+        Reviewed by Antti Koivisto.
+
+        This is similar to the other "10.6.3" cases. The bottom edge of the last inline box is in the coordinate systyem
+        of the containing block's border box (and for content height computation it needs to be mapped to the containing block's content box instead).
+
+        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
+        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
+
+2019-01-16  Simon Fraser  <simon.fraser@apple.com>
+
+        Stub out scrolling tree classes for overflow scrolling nodes on macOS
+        https://bugs.webkit.org/show_bug.cgi?id=193524
+
+        Reviewed by Antti Koivisto.
+
+        Add an empty implementation of ScrollingTreeOverflowScrollingNodeMac for macOS. Change
+        ScrollingTreeMac::createScrollingTreeNode() to create these nodes.
+        
+        Minor refactor of RenderLayerCompositor::useCoordinatedScrollingForLayer() code to ask
+        the scrolling coordinator if it can coordinate scrolling for this layer; no behavior
+        change for existing code paths.
+
+        * SourcesCocoa.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::ScrollingCoordinator::coordinatesScrollingForOverflowLayer const):
+        * page/scrolling/ScrollingCoordinator.h:
+        * page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm:
+        * page/scrolling/mac/ScrollingTreeMac.cpp:
+        (ScrollingTreeMac::createScrollingTreeNode):
+        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h: Copied from Source/WebCore/page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm.
+        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: Added.
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::create):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::ScrollingTreeOverflowScrollingNodeMac):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::~ScrollingTreeOverflowScrollingNodeMac):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterAncestorChange):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):
+        (WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterDelegatedScroll):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::usesAsyncScrolling const):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
+        * rendering/RenderLayerCompositor.h:
+
+2019-01-16  Justin Fan  <justin_fan@apple.com>
+
+        [WebGPU] Update vertex-buffer-triangle-strip.html to actually use vertex buffer
+        https://bugs.webkit.org/show_bug.cgi?id=193473
+
+        Reviewed by Dean Jackson and Myles Maxfield.
+
+        Also, switch to using the inputSlot instead of the shaderLocation field, as this seems more correct. 
+        As of now I cannot determine an analog for WebGPU's shaderLocation in Metal. 
+
+        Test: Covered by vertex-buffer-triangle-strip.html. No change in behavior.
+
+        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
+        (WebCore::setInputStateForPipelineDescriptor): Use the inputSlot instead of shaderLocation as bufferIndex. 
+
+2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Add the function stage checker
+        https://bugs.webkit.org/show_bug.cgi?id=193479
+
+        Reviewed by Dean Jackson and Robin Morisset.
+
+        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/CheckNativeFuncStages.mjs into C++.
+
+        No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
+        of test. When enough of the compiler is present, I'll port the reference implementation's test suite.
+
+        * Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
+        (WebCore::WHLSL::AST::CallExpression::function):
+        * Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp: Added.
+        (WebCore::WHLSL::FunctionStageChecker::FunctionStageChecker):
+        (WebCore::WHLSL::checkFunctionStages):
+        * Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.h: Added.
+        * Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
+        (WebCore::WHLSL::Intrinsics::add):
+        * Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
+        (WebCore::WHLSL::Intrinsics::ddx const):
+        (WebCore::WHLSL::Intrinsics::ddy const):
+        (WebCore::WHLSL::Intrinsics::allMemoryBarrier const):
+        (WebCore::WHLSL::Intrinsics::deviceMemoryBarrier const):
+        (WebCore::WHLSL::Intrinsics::groupMemoryBarrier const):
+        (WebCore::WHLSL::Intrinsics::WTF_ARRAY_LENGTH):
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+
+2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Delete the 'restricted' keyword
+        https://bugs.webkit.org/show_bug.cgi?id=193469
+
+        Reviewed by Dean Jackson and Robin Morisset.
+
+        This change mirrors https://github.com/gpuweb/WHLSL/pull/304 in the reference implementation.
+
+        No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
+        of test. When enough of the compiler is present, I'll port the reference implementation's test suite.
+
+        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDefinition.h:
+        (WebCore::WHLSL::AST::FunctionDefinition::FunctionDefinition):
+        (WebCore::WHLSL::AST::FunctionDefinition::block):
+        (WebCore::WHLSL::AST::FunctionDefinition::restricted const): Deleted.
+        * Modules/webgpu/WHLSL/AST/WHLSLNativeFunctionDeclaration.h:
+        (WebCore::WHLSL::AST::NativeFunctionDeclaration::NativeFunctionDeclaration):
+        (WebCore::WHLSL::AST::NativeFunctionDeclaration::restricted const): Deleted.
+        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
+        (WebCore::WHLSL::resolveWithOperatorAnderIndexer):
+        (WebCore::WHLSL::resolveWithOperatorLength):
+        (WebCore::WHLSL::resolveWithReferenceComparator):
+        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
+        (WebCore::WHLSL::resolveFunctionOverloadImpl):
+        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
+        (WebCore::WHLSL::synthesizeArrayOperatorLength):
+        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
+        (WebCore::WHLSL::synthesizeConstructors):
+        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
+        (WebCore::WHLSL::synthesizeEnumerationFunctions):
+        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
+        (WebCore::WHLSL::synthesizeStructureAccessors):
+
+2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Implement the recursion checker
+        https://bugs.webkit.org/show_bug.cgi?id=193436
+
+        Reviewed by Saam Barati.
+
+        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/RecursionChecker.mjs into C++.
+
+        No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
+        of test. When enough of the compiler is present, I'll port the reference implementation's test suite.
+
+        * Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
+        (WebCore::WHLSL::AST::CallExpression::function):
+        * Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp.
+        (WebCore::WHLSL::checkRecursion):
+        * Modules/webgpu/WHLSL/WHLSLRecursionChecker.h: Added.
+        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+
+2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Add the literal type checker
+        https://bugs.webkit.org/show_bug.cgi?id=193430
+
+        Reviewed by Dean Jackson.
+
+        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/LiteralTypeChecker.mjs into C++.
+
+        No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
+        of test. When enough of the compiler is present, I'll port the reference implementation's test suite.
+
+        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
+        (WebCore::WHLSL::AST::FloatLiteralType::value const):
+        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
+        (WebCore::WHLSL::AST::IntegerLiteralType::value const):
+        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
+        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::value const):
+        * Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp: Added.
+        (WebCore::WHLSL::getNativeTypeDeclaration):
+        (WebCore::WHLSL::LiteralTypeChecker::visit):
+        (WebCore::WHLSL::checkLiteralTypes):
+        * Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h.
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+
+2019-01-16  Zalan Bujtas  <zalan@apple.com>
+
+        [LFC][BFC] Inflow non-replaced used width should not be negative.
+        https://bugs.webkit.org/show_bug.cgi?id=193495
+
+        Reviewed by Antti Koivisto.
+
+        min-width (initial value 0) enforces non-negative used width. 
+
+        * layout/blockformatting/BlockFormattingContext.cpp:
+        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
+
+2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Add a handwritten parser
+        https://bugs.webkit.org/show_bug.cgi?id=192355
+
+        Reviewed by Dean Jackson.
+
+        The parser is a mechanical representation of WHLSL's ANTLR grammar at
+        https://github.com/gpuweb/WHLSL/blob/master/Spec/WHLSL.g4. The parser
+        uses Expected<> to return an appropriate Error string when parsing fails.
+
+        This patch doesn't include the AST nodes themselves - those are in
+        https://bugs.webkit.org/show_bug.cgi?id=192991. I split up the patch to
+        aid easier reviewing.
+
+        No new tests because the parser isn't hooked up yet.
+
+        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
+        (WebCore::WHLSL::Parser::Parser):
+        (WebCore::WHLSL::Parser::parse):
+        (WebCore::WHLSL::Parser::fail):
+        (WebCore::WHLSL::Parser::peek):
+        (WebCore::WHLSL::Parser::tryType):
+        (WebCore::WHLSL::Parser::tryTypes):
+        (WebCore::WHLSL::Parser::consumeType):
+        (WebCore::WHLSL::Parser::consumeTypes):
+        (WebCore::WHLSL::digitValue):
+        (WebCore::WHLSL::intLiteralToInt):
+        (WebCore::WHLSL::uintLiteralToUint):
+        (WebCore::WHLSL::floatLiteralToFloat):
+        (WebCore::WHLSL::Parser::consumeIntegralLiteral):
+        (WebCore::WHLSL::Parser::consumeNonNegativeIntegralLiteral):
+        (WebCore::WHLSL::recognizeSimpleUnsignedInteger):
+        (WebCore::WHLSL::Parser::parseConstantExpression):
+        (WebCore::WHLSL::Parser::parseTypeArgument):
+        (WebCore::WHLSL::Parser::parseTypeArguments):
+        (WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
+        (WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
+        (WebCore::WHLSL::Parser::parseAddressSpaceType):
+        (WebCore::WHLSL::Parser::parseNonAddressSpaceType):
+        (WebCore::WHLSL::Parser::parseType):
+        (WebCore::WHLSL::Parser::parseTypeDefinition):
+        (WebCore::WHLSL::Parser::parseBuiltInSemantic):
+        (WebCore::WHLSL::Parser::parseResourceSemantic):
+        (WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
+        (WebCore::WHLSL::Parser::parseStageInOutSemantic):
+        (WebCore::WHLSL::Parser::parseSemantic):
+        (WebCore::WHLSL::Parser::parseQualifiers):
+        (WebCore::WHLSL::Parser::parseStructureElement):
+        (WebCore::WHLSL::Parser::parseStructureDefinition):
+        (WebCore::WHLSL::Parser::parseEnumerationDefinition):
+        (WebCore::WHLSL::Parser::parseEnumerationMember):
+        (WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
+        (WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
+        (WebCore::WHLSL::Parser::parseAttributeBlock):
+        (WebCore::WHLSL::Parser::parseParameter):
+        (WebCore::WHLSL::Parser::parseParameters):
+        (WebCore::WHLSL::Parser::parseFunctionDefinition):
+        (WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration):
+        (WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
+        (WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
+        (WebCore::WHLSL::Parser::parseFunctionDeclaration):
+        (WebCore::WHLSL::Parser::parseNativeFunctionDeclaration):
+        (WebCore::WHLSL::Parser::parseBlock):
+        (WebCore::WHLSL::Parser::parseBlockBody):
+        (WebCore::WHLSL::Parser::parseIfStatement):
+        (WebCore::WHLSL::Parser::parseSwitchStatement):
+        (WebCore::WHLSL::Parser::parseSwitchCase):
+        (WebCore::WHLSL::Parser::parseForLoop):
+        (WebCore::WHLSL::Parser::parseWhileLoop):
+        (WebCore::WHLSL::Parser::parseDoWhileLoop):
+        (WebCore::WHLSL::Parser::parseVariableDeclaration):
+        (WebCore::WHLSL::Parser::parseVariableDeclarations):
+        (WebCore::WHLSL::Parser::parseStatement):
+        (WebCore::WHLSL::Parser::parseEffectfulExpression):
+        (WebCore::WHLSL::Parser::parseEffectfulAssignment):
+        (WebCore::WHLSL::Parser::parseEffectfulPrefix):
+        (WebCore::WHLSL::Parser::parseEffectfulSuffix):
+        (WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
+        (WebCore::WHLSL::Parser::parseSuffixOperator):
+        (WebCore::WHLSL::Parser::parseExpression):
+        (WebCore::WHLSL::Parser::parseTernaryConditional):
+        (WebCore::WHLSL::Parser::parseAssignment):
+        (WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
+        (WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
+        (WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
+        (WebCore::WHLSL::Parser::parsePossibleShift):
+        (WebCore::WHLSL::Parser::parsePossibleAdd):
+        (WebCore::WHLSL::Parser::parsePossibleMultiply):
+        (WebCore::WHLSL::Parser::parsePossiblePrefix):
+        (WebCore::WHLSL::Parser::parsePossibleSuffix):
+        (WebCore::WHLSL::Parser::parseCallExpression):
+        (WebCore::WHLSL::Parser::parseTerm):
+        * Modules/webgpu/WHLSL/WHLSLParser.h:
+        (WebCore::WHLSL::Parser::Error::Error):
+        (WebCore::WHLSL::Parser::backtrackingScope):
+        (WebCore::WHLSL::Parser::SuffixExpression::SuffixExpression):
+        (WebCore::WHLSL::Parser::SuffixExpression::operator bool const):
+
+2019-01-16  Sihui Liu  <sihui_liu@apple.com>
+
+        IndexedDB: UniqueIDBDatabase should not be freed if the database task queue is not empty.
+        https://bugs.webkit.org/show_bug.cgi?id=193093
+
+        Reviewed by Brady Eidson.
+
+        performUnconditionalDeleteBackingStore killed the database task queue immediately, but performPrefetchCursor
+        task may be scheduled behind performUnconditionalDeleteBackingStore on database thread.
+
+        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
+        (WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
+        (WebCore::IDBServer::UniqueIDBDatabase::performPrefetchCursor):
+        (WebCore::IDBServer::UniqueIDBDatabase::isDoneWithHardClose):
+
+2019-01-16  Alex Christensen  <achristensen@webkit.org>
+
+        Internal build fix.
+
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
+        (WebCore::layerContentsFormat):
+
+2019-01-16  Youenn Fablet  <youenn@apple.com>
+
+        ServiceWorkerContainer is leaking due to a ref cycle
+        https://bugs.webkit.org/show_bug.cgi?id=193462
+        <rdar://problem/47026303>
+
+        Reviewed by Brady Eidson.
+
+        ServiceWorkerContainer keeps a reference to its ready promise.
+        The ready promise keeps a ref to its value which is a ServiceWorkerRegistration.
+        ServiceWorkerRegistration keeps a ref to ServiceWorkerContainer.
+
+        To break the reference cycle, set the ready promise to zero when ServiceWorkerContainer is stopped.
+
+        Covered by imported/w3c/web-platform-tests/service-workers/service-worker/ready.https.html no longer leaking.
+
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::stop):
+
+2019-01-15  Simon Fraser  <simon.fraser@apple.com>
+
+        Make didCommitChangesForLayer() explicitly about the platform layer changing because of tile/non-tile swapping
+        https://bugs.webkit.org/show_bug.cgi?id=193290
+
+        Reviewed by Tim Horton.
+
+        RenderLayerCompositor::didFlushChangesForLayer() triggers updates scrolling tree nodes for
+        the flushed layer, but it's not clear what has changed at this point.
+
+        didCommitChangesForLayer()/didFlushChangesForLayer() were added to explicitly handle the
+        case where the underlying platform layer for a GraphicsLayer changes because the layer swaps
+        between tiled and non-tiled, and structural layer changes; we need to push the new layer to
+        the scrolling tree because it operates on platform layers. So the only work that
+        didFlushChangesForLayer() should do is to update layers on scrolling tree nodes; it doesn't
+        need to do any geometry updating. Move towards that goal by renaming this callback to
+        didChangePlatformLayerForLayer() to make its function more explicit.
+
+        * platform/graphics/GraphicsLayerClient.h:
+        (WebCore::GraphicsLayerClient::didChangePlatformLayerForLayer):
+        (WebCore::GraphicsLayerClient::didCommitChangesForLayer const): Deleted.
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::flushCompositingStateForThisLayerOnly):
+        (WebCore::GraphicsLayerCA::recursiveCommitChanges):
+        (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
+        * platform/graphics/ca/GraphicsLayerCA.h:
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::didChangePlatformLayerForLayer):
+        (WebCore::RenderLayerBacking::didCommitChangesForLayer const): Deleted.
+        * rendering/RenderLayerBacking.h:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
+        (WebCore::LegacyWebKitScrollingLayerCoordinator::didChangePlatformLayerForLayer):
+        (WebCore::RenderLayerCompositor::didFlushChangesForLayer): Deleted.
+        (WebCore::RenderLayerCompositor::didCommitChangesForLayer const): Deleted.
+        (WebCore::LegacyWebKitScrollingLayerCoordinator::didFlushChangesForLayer): Deleted.
+        * rendering/RenderLayerCompositor.h:
+
 2019-01-16  Chris Dumez  <cdumez@apple.com>
 
         Regression(PSON) View becomes blank after click a cross-site download link