Implement backing-sharing in compositing layers, allowing overlap layers to paint...
[WebKit-https.git] / Source / WebCore / ChangeLog
index b965910..14147c5 100644 (file)
@@ -1,3 +1,665 @@
+2019-05-08  Simon Fraser  <simon.fraser@apple.com>
+
+        Implement backing-sharing in compositing layers, allowing overlap layers to paint into the backing store of another layer
+        https://bugs.webkit.org/show_bug.cgi?id=197561
+        <rdar://problem/50445998>
+
+        Reviewed by Antti Koivisto.
+
+        This change introduces the concept of layers that share backing store for compositing. A layer
+        which is sharing its backing store first paints itself, and then some set of layers which come
+        later in paint order in the same stacking context. This reduces the composited layer count in
+        some overflow scrolling scenarios, thereby also simplifying the scrolling tree.
+        
+        A backing-shared layer stores a vector of "sharing" RenderLayer* in its RenderLayerBacking. At
+        paint time, the owning layer is painted, then the sharing layers, setting the owning layer as the
+        painting root so that positioning and clipping just work.
+        
+        Sharing layer relationships are constructed in RenderLayerCompositor::computeCompositingRequirements().
+        We track the last layer which was composited in paint order as a shared candidate. If a later layer
+        would composite for overlap (and no other reasons), then we allow it to share with the candidate
+        if the candidate is in its ancestor containing block chain. Sharing is currently limited to layers
+        in the same stacking context.
+        
+        isComposited() returns false for sharing layers, but they are like composited layers in that
+        they behave as painting boundaries, so RenderLayer::paintLayer() needs to stop at them,
+        and repaints in shared layers have to be directed to their shared layer, hence
+        changes to RenderLayer::clippingRootForPainting() and RenderLayer::enclosingCompositingLayerForRepaint().
+        
+        The clipping boundary logic in RenderLayer::backgroundClipRect() needed to be generalized so that
+        all calls to RenderLayer::parentClipRects() check for crossing painting boundaries and use
+        TemporaryClipRects in that case.
+
+        Tests: compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html
+               compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html
+               compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html
+               compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html
+               compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html
+               compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html
+               compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html
+               compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html
+               compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html
+               compositing/shared-backing/overflow-scroll/shared-layer-clipping.html
+               compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html
+               compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html
+               compositing/shared-backing/overflow-scroll/shared-layer-repaint.html
+               compositing/shared-backing/partial-compositing-update.html
+               compositing/shared-backing/partial-compositing-update2.html
+               compositing/shared-backing/remove-sharing-layer.html
+               compositing/shared-backing/sharing-cached-clip-rects.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::~RenderLayer):
+        (WebCore::RenderLayer::ancestorLayerIsInContainingBlockChain const):
+        (WebCore::RenderLayer::setBackingProviderLayer):
+        (WebCore::RenderLayer::disconnectFromBackingProviderLayer):
+        (WebCore::RenderLayer::enclosingCompositingLayerForRepaint const):
+        (WebCore::RenderLayer::clippingRootForPainting const):
+        (WebCore::RenderLayer::clipToRect):
+        (WebCore::RenderLayer::paintLayer):
+        (WebCore::RenderLayer::updateClipRects):
+        (WebCore::RenderLayer::clipCrossesPaintingBoundary const):
+        (WebCore::RenderLayer::calculateClipRects const):
+        (WebCore::outputPaintOrderTreeLegend):
+        (WebCore::outputPaintOrderTreeRecursive):
+        (WebCore::inContainingBlockChain): Deleted.
+        * rendering/RenderLayer.h:
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::willBeDestroyed):
+        (WebCore::clearBackingSharingLayerProviders):
+        (WebCore::RenderLayerBacking::setBackingSharingLayers):
+        (WebCore::RenderLayerBacking::removeBackingSharingLayer):
+        (WebCore::RenderLayerBacking::clearBackingSharingLayers):
+        (WebCore::RenderLayerBacking::updateCompositedBounds):
+        (WebCore::RenderLayerBacking::updateDrawsContent):
+        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer const):
+        (WebCore::RenderLayerBacking::paintIntoLayer):
+        (WebCore::RenderLayerBacking::paintContents):
+        * rendering/RenderLayerBacking.h:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const):
+        (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildren):
+        (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildrenForUnchangedSubtree):
+        (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate):
+        (WebCore::RenderLayerCompositor::updateCompositingLayers):
+        (WebCore::backingProviderLayerCanIncludeLayer):
+        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
+        (WebCore::RenderLayerCompositor::updateBacking):
+        (WebCore::RenderLayerCompositor::layerWillBeRemoved):
+        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
+        * rendering/RenderLayerCompositor.h:
+        * rendering/RenderTreeAsText.cpp:
+
+2019-05-08  Brent Fulgham  <bfulgham@apple.com>
+
+        Correct delayed load event handling
+        https://bugs.webkit.org/show_bug.cgi?id=197679
+        <rdar://problem/50423334>
+
+        Reviewed by Alex Christensen.
+
+        We need to properly account for the fact that JavaScript might run
+        while performing loads.
+
+        * dom/Document.cpp:
+        (WebCore::Document::loadEventDelayTimerFired):
+
+2019-05-08  Philippe Normand  <pnormand@igalia.com>
+
+        REGRESSION(r243197): [GStreamer] Error playing redirected streams
+        https://bugs.webkit.org/show_bug.cgi?id=197410
+
+        Reviewed by Carlos Garcia Campos.
+
+        Revert the change introduced in r243197 that was checking the
+        redirected URI instead of the original URI. Non-main URIs should
+        be ignored only when they are HLS (or similar) fragments.
+
+        Test http/tests/security/canvas-remote-read-remote-video-hls.html still passes.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
+
+2019-05-08  Rob Buis  <rbuis@igalia.com>
+
+        Link prefetch not useful for top-level navigation
+        https://bugs.webkit.org/show_bug.cgi?id=195623
+
+        Reviewed by Youenn Fablet.
+
+        Cache cross-domain top-level prefetches in a dedicated cache and not in the
+        memory cache.
+
+        Tests: http/tests/cache/link-prefetch-main-resource-iframe.html
+               http/tests/cache/link-prefetch-main-resource.html
+               http/tests/contentextensions/prefetch-blocked.html
+
+        * loader/LinkLoader.cpp:
+        (WebCore::LinkLoader::prefetchIfNeeded):
+        * loader/ResourceLoadInfo.cpp:
+        (WebCore::toResourceType):
+
+2019-05-07  Don Olmstead  <don.olmstead@sony.com>
+
+        Fix !HAVE(ACCESSIBILITY) build
+        https://bugs.webkit.org/show_bug.cgi?id=197680
+
+        Reviewed by Fujii Hironori.
+
+        * accessibility/AXObjectCache.h:
+        (WebCore::AXObjectCache::focusedUIElementForPage):
+        Update declaration for !HAVE(ACCESSIBILITY)
+        * accessibility/AccessibilityObject.h:
+        Add wrapper implementation for !HAVE(ACCESSIBILITY)
+        * accessibility/AccessibilityProgressIndicator.cpp:
+        (WebCore::AccessibilityProgressIndicator::roleValue const):
+        Add ENABLE(METER_ELEMENT) guard.
+
+2019-05-07  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r245038.
+
+        Breaks internal builds.
+
+        Reverted changeset:
+
+        "Add SPI to set a list of hosts to which to send custom header
+        fields cross-origin"
+        https://bugs.webkit.org/show_bug.cgi?id=197397
+        https://trac.webkit.org/changeset/245038
+
+2019-05-07  Jiewen Tan  <jiewen_tan@apple.com>
+
+        [WebAuthN] A new request should always suppress the pending request if any
+        https://bugs.webkit.org/show_bug.cgi?id=191517
+        <rdar://problem/46888222>
+
+        Reviewed by Brent Fulgham.
+
+        Blocking new requests from the same page when there is a pending request could DoS the
+        WebAuthN API in the period between [the page is refreshed, the pending request is
+        hanedled/timeout]. Therefore, the policy will be to always cancel any pending requests
+        whenever a new request is made. This will enforce the policy of handling only one
+        request at a time.
+
+        Covered by new tests in existing files.
+
+        * Modules/webauthn/AuthenticatorCoordinatorClient.cpp:
+        (WebCore::AuthenticatorCoordinatorClient::requestReply):
+        (WebCore::AuthenticatorCoordinatorClient::setRequestCompletionHandler):
+        (WebCore::AuthenticatorCoordinatorClient::addQueryCompletionHandler):
+        * Modules/webauthn/AuthenticatorCoordinatorClient.h:
+
+2019-05-07  Eric Carlson  <eric.carlson@apple.com>
+
+        Define media buffering policy
+        https://bugs.webkit.org/show_bug.cgi?id=196979
+        <rdar://problem/28383861>
+
+        Reviewed by Jer Noble.
+
+        Test: MediaBufferingPolicy API test.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::HTMLMediaElement):
+        (WebCore::HTMLMediaElement::suspend):
+        (WebCore::HTMLMediaElement::resume):
+        (WebCore::HTMLMediaElement::createMediaPlayer):
+        (WebCore::HTMLMediaElement::setBufferingPolicy):
+        (WebCore::HTMLMediaElement::purgeBufferedDataIfPossible):
+        (WebCore::HTMLMediaElement::bufferingPolicy const):
+        (WebCore::HTMLMediaElement::setShouldBufferData): Deleted.
+        * html/HTMLMediaElement.h:
+        (WebCore::HTMLMediaElement::shouldBufferData const): Deleted.
+        * html/MediaElementSession.cpp:
+        (WebCore::MediaElementSession::updateClientDataBuffering):
+        (WebCore::MediaElementSession::preferredBufferingPolicy const):
+        (WebCore::MediaElementSession::dataBufferingPermitted const): Deleted.
+        * html/MediaElementSession.h:
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::setBufferingPolicy):
+        (WebCore::convertEnumerationToString):
+        (WebCore::MediaPlayer::setShouldBufferData): Deleted.
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/MediaPlayerEnums.h:
+        (WTF::LogArgument<WebCore::MediaPlayerEnums::BufferingPolicy>::toString):
+        * platform/graphics/MediaPlayerPrivate.h:
+        (WebCore::MediaPlayerPrivateInterface::setBufferingPolicy):
+        (WebCore::MediaPlayerPrivateInterface::setShouldBufferData): Deleted.
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setBufferingPolicy):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldBufferData): Deleted.
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setBufferingPolicy):
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::flushAndRemoveVideoSampleBuffers): Deleted.
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setShouldBufferData): Deleted.
+        * testing/Internals.cpp:
+        (WebCore::Internals::elementShouldBufferData):
+        (WebCore::Internals::elementBufferingPolicy):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2019-05-07  Alex Christensen  <achristensen@webkit.org>
+
+        Add SPI to set a list of hosts to which to send custom header fields cross-origin
+        https://bugs.webkit.org/show_bug.cgi?id=197397
+
+        Reviewed by Geoff Garen.
+
+        In r223001 I added the ability to send custom headers, but with a restriction that they will not be sent except to the origin of the main document.
+        We need the ability to specify what origins to send these headers to even if they are not first party requests.
+        We get this information in a list of strings which are the hosts to send the headers to.  Some of the strings have an asterisk at the beginning,
+        indicating that the headers are to be sent to all subdomains.
+
+        I repurposed some ObjC SPI that was never adopted, but I keep testing the C API that was to verify no regression.
+        I also added some new API tests for the new behavior.
+
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * loader/CustomHeaderFields.cpp: Added.
+        (WebCore::CustomHeaderFields::thirdPartyDomainsMatch const):
+        * loader/CustomHeaderFields.h: Added.
+        (WebCore::CustomHeaderFields::encode const):
+        (WebCore::CustomHeaderFields::decode):
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::setCustomHeaderFields): Deleted.
+        * loader/DocumentLoader.h:
+        (WebCore::DocumentLoader::setCustomHeaderFields):
+        (WebCore::DocumentLoader::customHeaderFields const):
+        (WebCore::DocumentLoader::customHeaderFields): Deleted.
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::requestResource):
+
+2019-05-07  Andy Estes  <aestes@apple.com>
+
+        run-bindings-tests should test global scope constructor generation
+        https://bugs.webkit.org/show_bug.cgi?id=197669
+
+        Reviewed by Alex Christensen.
+
+        For interfaces that are exposed on a global object, preprocess-idls.pl generates a partial
+        interface for the global object defining attributes for the interfaces' constructors. Most
+        interfaces don't specify a global object, so preprocess-idls.pl defaults to DOMWindow.
+        Since there is no DOMWindow.idl test case, we never generate the code for exposed interface
+        constructors when running bindings tests. This means that we can't test changes to how these
+        constructors are generated.
+
+        To fix this, teach preprocess-idls.pl to treat 'TestGlobalObject' as the default global
+        object when running bindings tests. This means that all exposed interface test cases will
+        generate their constructors as part of JSTestGlobalObject (unless otherwise specified
+        by the 'Exposed' extended attribute).
+
+        * bindings/scripts/preprocess-idls.pl:
+        Added --testGlobalContextName and --testGlobalScopeConstructorsFile arguments for use by
+        run-bindings-tests.
+
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        Updated expected results.
+
+2019-05-07  Youenn Fablet  <youenn@apple.com>
+
+        Video stream freeze on front camera orientation changing
+        https://bugs.webkit.org/show_bug.cgi?id=197227
+        <rdar://problem/50175498>
+
+        Reviewed by Eric Carlson.
+
+        Use m_currentRotationSessionAngle instead of m_currentRotation to create or not a new rotation session.
+        Covered by updated test.
+
+        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
+        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
+        (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
+
+2019-05-07  Youenn Fablet  <youenn@apple.com>
+
+        getUserMedia framerate unusable under low light in iOS 12.2
+        https://bugs.webkit.org/show_bug.cgi?id=196214
+        <rdar://problem/49232193>
+
+        Reviewed by Geoffrey Garen.
+
+        When setting the frame rate, set it to the exact value instead of a range.
+        Otherwise, the capture device might use the lowest frame rate according the light conditions
+        for best picture quality which is not what is expected by most web pages.
+
+        Move frame rate range computation to closer where actually used.
+        Since frame rate matching is fuzzy, add some checks in case the expected frame rate is slightly out of min/max range.
+
+        Manually tested on a real device.
+
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
+
+2019-05-07  Robin Morisset  <rmorisset@apple.com>
+
+        All prototypes should call didBecomePrototype()
+        https://bugs.webkit.org/show_bug.cgi?id=196315
+
+        Reviewed by Saam Barati.
+
+        It was found by existing tests, with the new assert in JSC::Structure
+
+        * bindings/js/JSWindowProxy.cpp:
+        (WebCore::JSWindowProxy::setWindow):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GeneratePrototypeDeclaration):
+        (GenerateConstructorHelperMethods):
+
+2019-05-07  John Wilander  <wilander@apple.com>
+
+        Storage Access API: Make two changes requested by developers and complete refactoring and cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=197648
+        <rdar://problem/50527493>
+
+        Reviewed by Chris Dumez.
+
+        Developers have requested two minor changes to the Storage Access API:
+        - Only consume the user gesture when the user explicitly denies access.
+        - Make document.hasStorageAccess() return true instead of false when the feature is off.
+
+        In addition to this, we have refactoring and cleanup to do. Namely:
+        - Make use of WebCore::RegistrableDomain all the way.
+        - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess.
+        - Introduce boolean enums for state handling.
+        - Break out the Storage Access API functionality into a supplement of WebCore::Document.
+
+        Reviewed by Chris Dumez.
+
+        Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html
+               http/tests/storageAccess/deny-without-prompt-preserves-gesture.html
+               http/tests/storageAccess/grant-with-prompt-preserves-gesture.html
+               http/tests/storageAccess/has-storage-access-true-if-feature-off.html
+
+        * DerivedSources-input.xcfilelist:
+        * DerivedSources-output.xcfilelist:
+        * DerivedSources.make:
+        * Headers.cmake:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * dom/Document.cpp:
+        (WebCore::Document::hasStorageAccess): Deleted.
+        (WebCore::Document::requestStorageAccess): Deleted.
+        (WebCore::Document::enableTemporaryTimeUserGesture): Deleted.
+        (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted.
+        (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted.
+        (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted.
+        * dom/Document.h:
+        (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted.
+            All of this has been moved to the supplement WebCore::DocumentStorageAccess.
+        * dom/Document.idl:
+            The Storage Access API has been moved to DocumentStorageAccess.idl.
+        * dom/DocumentStorageAccess.cpp: Added.
+        (WebCore::DocumentStorageAccess::from):
+        (WebCore::DocumentStorageAccess::supplementName):
+        (WebCore::DocumentStorageAccess::hasStorageAccess):
+        (WebCore::DocumentStorageAccess::requestStorageAccess):
+        (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture):
+        (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture):
+        (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const):
+        (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess):
+        * dom/DocumentStorageAccess.h: Added.
+        * dom/DocumentStorageAccess.idl: Added.
+        * page/ChromeClient.h:
+        * testing/Internals.cpp:
+        (WebCore::Internals::setUserGrantsStorageAccess): Deleted.
+            This was dead code.
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2019-05-07  Antoine Quint  <graouts@apple.com>
+
+        [Pointer Events] isPrimary property of pointercancel events should match previous events for that pointer
+        https://bugs.webkit.org/show_bug.cgi?id=197665
+
+        Reviewed by Dean Jackson.
+
+        The test at web-platform-tests/pointerevents/pointerevent_pointercancel_touch.html would fail early because one of the first assertions
+        would check that isPrimary for a pointercancel event would match the isPrimary property of the previous pointer event dispatched for that
+        pointer id. This prevented many further assertions from passing and also was the cause of flakiness for the next test since this test was
+        ended early and the state of touches created using UIScriptController were not in a clean state.
+
+        We now track the isPrimary state for a given pointer using the CapturingData and use that value when dispatching a pointercancel event.
+
+        * dom/PointerEvent.cpp:
+        (WebCore::PointerEvent::create):
+        (WebCore::PointerEvent::PointerEvent):
+        * dom/PointerEvent.h:
+        * page/PointerCaptureController.cpp:
+        (WebCore::PointerCaptureController::pointerEventWasDispatched):
+        (WebCore::PointerCaptureController::cancelPointer):
+        * page/PointerCaptureController.h:
+
+2019-05-07  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r244900.
+
+        Caused media/track/track-cue-missing.html to fail on debug
+        queues
+
+        Reverted changeset:
+
+        "Add logging for RenderLayer clip rects"
+        https://bugs.webkit.org/show_bug.cgi?id=197547
+        https://trac.webkit.org/changeset/244900
+
+2019-05-07  Antti Koivisto  <antti@apple.com>
+
+        <body> with overflow:hidden CSS is scrollable on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=153852
+        <rdar://problem/38715356>
+
+        Reviewed by Antoine Quint.
+
+        Tests: fast/scrolling/ios/body-overflow-hidden-frame.html
+               fast/scrolling/ios/body-overflow-hidden.html
+
+        * page/scrolling/ScrollingTreeScrollingNode.h:
+
+2019-05-07  Antoine Quint  <graouts@apple.com>
+
+        Mouse event simulation should be limited to the graphing calculator on Desmos.com
+        https://bugs.webkit.org/show_bug.cgi?id=197652
+        <rdar://problem/47068176>
+
+        Reviewed by Antti Koivisto.
+
+        * page/Quirks.cpp:
+        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
+
+2019-05-06  James Savage  <james.savage@apple.com>
+
+        Improve coordination for creating UIWindow instances.
+        https://bugs.webkit.org/show_bug.cgi?id=197578.
+        <rdar://problem/50456965>.
+
+        Reviewed by Wenson Hsieh.
+
+        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
+        (makeWindowFromView): Pull out window creation.
+        (VideoFullscreenInterfaceAVKit::doSetup): Call new helper function.
+
+2019-05-06  Tim Horton  <timothy_horton@apple.com>
+
+        _overrideViewportWithArguments does not work when called before loading
+        https://bugs.webkit.org/show_bug.cgi?id=197638
+        <rdar://problem/50505111>
+
+        Reviewed by Wenson Hsieh.
+
+        * dom/Document.cpp:
+        (WebCore::Document::viewportArguments const):
+        (WebCore::Document::updateViewportArguments):
+        (WebCore::Document::setOverrideViewportArguments): Deleted.
+        * dom/Document.h:
+        (WebCore::Document::viewportArguments const): Deleted.
+        * page/Page.cpp:
+        (WebCore::Page::setOverrideViewportArguments):
+        * page/Page.h:
+        (WebCore::Page::overrideViewportArguments const):
+        * page/ViewportConfiguration.cpp:
+        (WebCore::ViewportConfiguration::setViewportArguments):
+        Move overrideViewportArguments to Page, since it is view-global in the API.
+
+2019-05-06  Chris Dumez  <cdumez@apple.com>
+
+        Add assertions to JSLazyEventListener to help catch the cause of a crash
+        https://bugs.webkit.org/show_bug.cgi?id=197617
+
+        Reviewed by Alexey Proskuryakov.
+
+        Add assertions to JSLazyEventListener to help catch the cause of <rdar://problem/24314027>.
+
+        * bindings/js/JSLazyEventListener.cpp:
+        (WebCore::JSLazyEventListener::checkValidityForEventTarget):
+        * bindings/js/JSLazyEventListener.h:
+        * dom/EventListener.h:
+        (WebCore::EventListener::checkValidityForEventTarget):
+        * dom/EventTarget.cpp:
+        (WebCore::EventTarget::addEventListener):
+        (WebCore::EventTarget::setAttributeEventListener):
+        (WebCore::EventTarget::innerInvokeEventListeners):
+
+2019-05-04  Per Arne Vollan  <pvollan@apple.com>
+
+        -[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials
+        https://bugs.webkit.org/show_bug.cgi?id=197510
+        <rdar://problem/50372338>
+
+        Reviewed by Alex Christensen.
+
+        This patch implements deletion of non persistent credentials for a set of origins. In order for this to work, fetching
+        credentials from the credential storage needs to return a set of SecurityOriginData objects, instead of a set of origin
+        strings. This is implemented by iterating over all the elements in the credential map, and creating a SecurityOriginData
+        object for each credential based on the protection space.
+
+        API test: WKWebsiteDataStore.RemoveNonPersistentCredentials
+
+        * platform/network/CredentialStorage.cpp:
+        (WebCore::CredentialStorage::removeCredentialsWithOrigin):
+        (WebCore::CredentialStorage::originsWithCredentials const):
+        * platform/network/CredentialStorage.h:
+        (WebCore::CredentialStorage::originsWithCredentials const): Deleted.
+
+2019-05-06  Keith Rollin  <krollin@apple.com>
+
+        Temporarily disable generate-xcfilelists
+        https://bugs.webkit.org/show_bug.cgi?id=197619
+        <rdar://problem/50507392>
+
+        Reviewed by Alex Christensen.
+
+        We need to perform a significant update to the generate-xcfilelist
+        scripts. This work involves coordinated work with another facility. If
+        the work does not occur in tandem, the build will be broken. To avoid
+        this, disable the invoking of the scripts during the transition. The
+        checking will be restored once the new scripts are in place.
+
+        No new tests -- no change in user-visible functionality.
+
+        * Scripts/check-xcfilelists.sh:
+
+2019-05-06  Andres Gonzalez  <andresg_22@apple.com>
+
+        Hitpoint for link which spans two lines in web content is incorrect
+        https://bugs.webkit.org/show_bug.cgi?id=197511
+        <rdar://problem/49971483>
+
+        Reviewed by Chris Fleizach.
+
+        - Special case for links to return first char location as clickPoint instead of middle point of bounding rect.
+        - Modified iOS ActivationPoint to use clickPoint. This way all code paths go through the same function.
+        - Made boundsForRects to return content coordinates in all platforms. Adjusted all callers, directly or indirectly, appropriately.
+
+        Tests: accessibility/ios-simulator/links-activation.html
+               accessibility/links-activation.html
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::clickPoint):
+        (WebCore::AccessibilityRenderObject::boundsForRects):
+        (WebCore::AccessibilityRenderObject::boundsForRects const): Deleted.
+        * accessibility/AccessibilityRenderObject.h:
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
+
+2019-05-06  Jer Noble  <jer.noble@apple.com>
+
+        Adopt AVStreamDataParser.audiovisualMIMETypes
+        https://bugs.webkit.org/show_bug.cgi?id=197581
+        <rdar://problem/50458981>
+
+        Reviewed by Eric Carlson.
+
+        Add a new singleton class, AVStreamDataParserMIMETypeCache, and rename AVFoundationMIMETypeCache to the more precise
+        AVAssetMIMETypeCache.  Update all the old AVFoundationMIMETypeCache with the new name.
+
+        * SourcesCocoa.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.h: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.h.
+        (WebCore::AVAssetMIMETypeCache::setCacheMIMETypesCallback):
+        * platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.mm.
+        (WebCore::AVAssetMIMETypeCache::singleton):
+        (WebCore::AVAssetMIMETypeCache::setSupportedTypes):
+        (WebCore::AVAssetMIMETypeCache::types):
+        (WebCore::AVAssetMIMETypeCache::supportsContentType):
+        (WebCore::AVAssetMIMETypeCache::canDecodeType):
+        (WebCore::AVAssetMIMETypeCache::isAvailable const):
+        (WebCore::AVAssetMIMETypeCache::loadMIMETypes):
+        * platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.h: Added.
+        * platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.mm: Added.
+        (WebCore::AVStreamDataParserMIMETypeCache::singleton):
+        (WebCore::AVStreamDataParserMIMETypeCache::types):
+        (WebCore::AVStreamDataParserMIMETypeCache::supportsContentType):
+        (WebCore::AVStreamDataParserMIMETypeCache::canDecodeType):
+        (WebCore::AVStreamDataParserMIMETypeCache::isAvailable const):
+        (WebCore::AVStreamDataParserMIMETypeCache::loadMIMETypes):
+        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
+        (WebCore::ImageDecoderAVFObjC::create):
+        (WebCore::ImageDecoderAVFObjC::supportsMediaType):
+        (WebCore::ImageDecoderAVFObjC::supportsContentType):
+        (WebCore::ImageDecoderAVFObjC::canDecodeType):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::getSupportedTypes):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::supportsKeySystem):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::getSupportedTypes):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
+
+2019-05-06  Youenn Fablet  <youenn@apple.com>
+
+        WebAudio Node JS wrappers should not be collected if events can be fired
+        https://bugs.webkit.org/show_bug.cgi?id=197533
+
+        Reviewed by Jer Noble.
+
+        Before the patch, some web audio nodes could fire event listeners, but were not protected from GC.
+        Use CustomIsReachable to ensure theses nodes can be collected if:
+        - their AudioContext is stopped (typically due to document being navigated away).
+        - their AudioContext is closed.
+        - nodes do not have event listeners.
+
+        Covered by WPT mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html and
+        WPT webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html
+        and web audio WebRTC tests.
+        Specific newly added test: webaudio/webaudio-gc.html
+
+        * Modules/webaudio/AudioContext.h:
+        (WebCore::AudioContext::isClosed const):
+        * Modules/webaudio/AudioNode.idl:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSAudioNodeCustom.cpp: Added.
+        (WebCore::JSAudioNodeOwner::isReachableFromOpaqueRoots):
+
 2019-05-06  Daniel Bates  <dabates@apple.com>
 
         Google Docs & Yahoo! Japan: Can’t compose characters with Chinese or Japanese keyboard