ChangeLog-2019-06-05   [plain text]


2019-06-05  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Fire pointerout and pointerleave events after firing pointercancel
        https://bugs.webkit.org/show_bug.cgi?id=198560

        Reviewed by Dean Jackson.

        The Pointer Events specification mandates that "pointerout" and "pointerleave" events must be dispatched
        immediately after dispatching a "pointercancel" event.

        Since we needed to determine the bubbling, cancelable and composed nature of those events in additional
        places, we now have static methods to determine this defined in PointerEvent.h such that both PointerEvent.cpp
        and PointerEventIOS.cpp may use them. This should guarantee consistency going forward.

        * dom/PointerEvent.cpp:
        (WebCore::PointerEvent::create):
        (WebCore::PointerEvent::PointerEvent):
        * dom/PointerEvent.h:
        * dom/ios/PointerEventIOS.cpp:
        (WebCore::pointerEventType):
        (WebCore::PointerEvent::create):
        (WebCore::PointerEvent::PointerEvent):
        (WebCore::phaseIsCancelable): Deleted.
        (WebCore::typeCanBubble): Deleted.
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::cancelPointer):

2019-06-05  Saam Barati  <sbarati@apple.com>

        [WHLSL] Implement loop expressions
        https://bugs.webkit.org/show_bug.cgi?id=195808
        <rdar://problem/50746309>

        Reviewed by Myles Maxfield.

        This patch makes continue/break break for "do/while/for" loops
        in WHLSL. Because of the way we emit code where every expression
        turns into a Metal statement, it's not convenient to emit native
        Metal loop constructs. Instead, we model break/continue as if
        we had goto.
        
        For example, this WHLSL program:
        ```
        for (INIT; COND; INC) {
            if (b)
                continue;
            if (b2)
                break;
        }
        ```
        would become something like:
        ```
        INIT;
        while (1) {
            if (!COND)
                break;
            if (b)
                goto increment;
            if (b2)
                goto exit;
        increment:
            INC;
        }
        exit:
        ```
        
        However, Metal doesn't have goto, so we model goto using a run-once
        loop and a variable indicating if we should break out early. This
        "break out early" variable is initially set to false. We "should
        break out early" when executing a WHLSL "break" statement. "continue"
        is modeled as breaking out of the run-once loop, but not touching the
        "break out early" variable. "break" is modeled as setting the "break
        out early" variable to true, followed by breaking out of the run-once loop.
        The above WHLSL will turn into this Metal:
        ```
        bool breakOutOfCurrentLoop = false;
        INIT;
        while (1) {
            if (!COND)
                break;
            do {
                if (b) {
                    // WHLSL 'continue'
                    break;
                }
                if (b2) {
                    // WHLSL 'break'
                    breakOutOfCurrentLoop = true;
                    break;
                }
            } while (0);
            if (breakOutOfCurrentLoop)
                break;
            INC;
        }
        ```
        
        This patch also found a bug with ForLoop where it held a Variant<VariableDeclarationsStatement, Expression>.
        This is invalid to do since we mutate the AST in place. This means some phase
        could replace VariableDeclarationsStatement with some other Statement, and
        we'd be breaking the C++ type system. So this patch migrates ForLoop to hold
        a statement instead. In general, AST nodes that point to other AST nodes
        should use broad types unless we know apriori that a certain type will
        never be replaced.

        Tests: webgpu/whlsl-do-while-loop-break.html
               webgpu/whlsl-do-while-loop-continue.html
               webgpu/whlsl-do-while-loop.html
               webgpu/whlsl-loops-break.html
               webgpu/whlsl-loops-continue.html
               webgpu/whlsl-loops.html
               webgpu/whlsl-nested-loop.html
               webgpu/whlsl-while-loop-break.html
               webgpu/whlsl-while-loop-continue.html

        * Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
        (WebCore::WHLSL::AST::ForLoop::ForLoop):
        (WebCore::WHLSL::AST::ForLoop::initialization):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        (WebCore::WHLSL::Checker::visit):
        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parseForLoop):
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):

2019-06-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Upstream content mode support into open source from WebKitAdditions
        https://bugs.webkit.org/show_bug.cgi?id=198484
        <rdar://problem/51355671>

        Reviewed by Andy Estes.

        * Modules/modern-media-controls/media/media-controller.js:
        (MediaController.prototype.get layoutTraits):

        Adjust modern media controls code to use iOS-style controls on PLATFORM(IOS_FAMILY), instead of depending on the
        navigator's platform name or the presence of touch events.

        * page/Quirks.cpp:
        (WebCore::shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost):
        (WebCore::shouldEmulateUndoRedoInHiddenEditableAreasForHost):
        * page/SettingsBase.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::mediaControlsScript):

2019-06-05  Saam Barati  <sbarati@apple.com>

        [WHLSL] checkDuplicateFunctions() should not be O(n^2)
        https://bugs.webkit.org/show_bug.cgi?id=198155
        <rdar://problem/51288811>

        Reviewed by Myles Maxfield.

        Originally, we filed this bug because we thought checkDuplicateFunctions()
        would take on the order of hundreds of milliseconds when using the
        full standard library. However, I was never able to reproduce that phase
        taking that long. I was seeing it take 3.5-4ms. Anyways, it makes sense
        to make this phase not be O(N^2), since the number of functions is a user
        controlled value. I am now seeing ~2.5ms to run this phase against the
        full standard library. On a microbenchmark I checked against, where there
        were 100,000 unique functions, this pass runs twice as fast as it used
        to, now taking 450ms instead of 900ms.

        * Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
        (WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
        * Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
        * Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
        (WebCore::WHLSL::AST::PointerType::PointerType):
        * Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
        * Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
        * Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
        (WebCore::WHLSL::DuplicateFunctionKey::DuplicateFunctionKey):
        (WebCore::WHLSL::DuplicateFunctionKey::isEmptyValue const):
        (WebCore::WHLSL::DuplicateFunctionKey::isHashTableDeletedValue const):
        (WebCore::WHLSL::DuplicateFunctionKey::hash const):
        (WebCore::WHLSL::DuplicateFunctionKey::operator== const):
        (WebCore::WHLSL::DuplicateFunctionKey::Hash::hash):
        (WebCore::WHLSL::DuplicateFunctionKey::Hash::equal):
        (WebCore::WHLSL::DuplicateFunctionKey::Traits::isEmptyValue):
        (WebCore::WHLSL::checkDuplicateFunctions):

2019-06-05  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] LineLayout::placeInlineItems should not apply float contraint.
        https://bugs.webkit.org/show_bug.cgi?id=198565
        <rdar://problem/51440718>

        Reviewed by Antti Koivisto.

        This patch moves float constraint handling from placeInlineItems() to LineLayout::layout().
        When placeInlineItems() is called by the preferred width computation, intruding floats should be ignored
        since they don't constrain the "min/max lines".

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::HorizontalConstraint::HorizontalConstraint):
        (WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::constructLine): Deleted.

2019-06-05  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r246052.

        Caused 3 webgpu/ failures.

        Reverted changeset:

        "[WHLSL] Parsing and lexing the standard library is slow"
        https://bugs.webkit.org/show_bug.cgi?id=192890
        https://trac.webkit.org/changeset/246052

2019-06-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GStreamer] Crash in MediaPlayerPrivateGStreamerBase::ensureGstGLContext
        https://bugs.webkit.org/show_bug.cgi?id=198567

        Reviewed by Philippe Normand.

        MediaPlayerPrivateGStreamerBase::ensureGstGLContext is currently a guaranteed crash because
        it expects PlatformDisplay::sharedDisplayForCompositing() to return a PlatformDisplayLibWPE
        if compiled with USE(WPE_RENDERER), but PlatformDisplayLibWPE has lower precedence than
        PlatformDisplayX11 and PlatformDisplayWayland. When running our layout tests with
        run-webkit-tests --gtk, it's guaranteed to be a PlatformDisplayX11.

        I think Carlos was clearly expecting PlatformDisplayLibWPE, so I don't know what the ideal
        desired behavior is, but the crashes go away if we change the code to allow any type of
        PlatformDisplay. This should hopefully fix our bots, which are still exiting early.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

2019-06-05  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move inline item height computation to a dedicated function
        https://bugs.webkit.org/show_bug.cgi?id=198550
        <rdar://problem/51424223>

        Reviewed by Antti Koivisto.

        The inlineItem height value is not available during preferred width computation (hence optional). 

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::UncommittedContent::add):
        (WebCore::Layout::inlineItemWidth):
        (WebCore::Layout::inlineItemHeight):
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        * layout/inlineformatting/InlineLine.cpp:
        (WebCore::Layout::Line::appendInlineContainerStart):
        (WebCore::Layout::Line::appendInlineContainerEnd):
        (WebCore::Layout::Line::appendTextContent):
        (WebCore::Layout::Line::appendNonReplacedInlineBox):
        (WebCore::Layout::Line::appendReplacedInlineBox):
        * layout/inlineformatting/InlineLine.h:

2019-06-01  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Add support for chorded button interactions
        https://bugs.webkit.org/show_bug.cgi?id=198462

        Reviewed by Dean Jackson.

        Pointer events differ from mouse events in that pressing a button on a mouse and then pressing a second button
        would yield two "mousedown" events but a single "pointerdown" event, for the first time we're transitioning from
        a state where no button is pressed at all, and then a "pointermove" event to indicate an additional button has been
        pressed. This is what the Pointer Events specification calls "chorded button interactions".
        See https://w3c.github.io/pointerevents/#chorded-button-interactions for the full details.

        To implement this, we no longer directly call PointerEvent::create() from Element::dispatchMouseEvent() but instead
        call the new PointerCaptureController::pointerEventForMouseEvent() which implements the required logic to determine
        for "mousedown" and "mouseup" mouse events, if we're transitioning from or to a state where no button is pressed at
        all.

        While that basic change is pretty small, a wider change was required to report the correct value for a PointerEvents'
        "button" property which should return "-1" when there is no change in pressed button state compared to any previous
        pointer event.

        Up until now, MouseEvent.button was an "unsigned short", as specified up to and including DOM Level 2 Events. But the
        UI Events spec says that property is a "short", and PointerEvent is the only interface where a "-1" value is used. This
        required some changes throughout our codebase since we used a "-1" value to specify that no button was pressed when dealing
        with NSEvent input and going through PlatformMouseEvent and eventually MouseEvent. So now we change the various NoButton
        enum values to be "-2" and use that value, which is not going to be used for any mouse button, as the value reflected as
        "0" through MouseEvent.button, as specified by UI Events.

        Furthermore, we identified another issue: MouseEvent.buttons would always return 0 in DRT and WKTR. We rely upon that
        value in PointerCaptureController::pointerEventForMouseEvent() and so we had to make that work for the relevant WPT test,
        web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover.html, to pass and show a correct implementation
        of chorded button interactions. The details of the work required for this is in Tools/ChangeLog.

        * dom/Element.cpp:
        (WebCore::Element::dispatchMouseEvent):
        * dom/MouseEvent.cpp:
        (WebCore::MouseEvent::create):
        (WebCore::MouseEvent::MouseEvent):
        (WebCore::MouseEvent::initMouseEvent):
        (WebCore::MouseEvent::initMouseEventQuirk):
        * dom/MouseEvent.h:
        (WebCore::MouseEvent::button const):
        * dom/MouseEvent.idl:
        * dom/MouseEventInit.h:
        * dom/MouseEventInit.idl:
        * dom/PointerEvent.cpp:
        (WebCore::PointerEvent::create):
        (WebCore::PointerEvent::PointerEvent):
        * dom/PointerEvent.h:
        * loader/NavigationAction.h:
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::pointerEventForMouseEvent):
        * page/PointerCaptureController.h:
        * platform/PlatformMouseEvent.h:

2019-06-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r245796): [WPE][GTK] Web process crash on startup
        https://bugs.webkit.org/show_bug.cgi?id=198485

        Reviewed by Chris Dumez.

        ResourceRequest's PageIdentifier may be unset, which causes coding to fail as
        ObjectIdentifiers are required to be valid (nonzero). We need to use Optional here.
        Previously, 0 was used to indicate unset page ID. This is clearer.

        * platform/network/soup/ResourceRequest.h:
        (WebCore::ResourceRequest::initiatingPageID const):
        (WebCore::ResourceRequest::decodeWithPlatformData):
        * platform/network/soup/ResourceRequestSoup.cpp:
        (WebCore::ResourceRequest::updateSoupRequest const):

2019-06-04  Ryosuke Niwa  <rniwa@webkit.org>

        iPadOS: Google calendars new event picker moves and flickers in landscape with software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=198556

        Reviewed by Wenson Hsieh.

        Fix the issuse that it's really hard to create a new event using Google calendar on iPadOS with
        a software keyboard enabled because tapping on date brings up software keyboard and erratically
        shifts up/down the new event dialog/pane.

        Add a site specific quirk to pretend these input elements have inputmode=none for now.

        No new tests since this is a site specific quirk.

        * page/Quirks.cpp:
        (WebCore::Quirks::needsInputModeNoneImplicitly const):

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Gmail text editing controls require two taps
        https://bugs.webkit.org/show_bug.cgi?id=198541
        <rdar://problem/51375055>

        Reviewed by Simon Fraser.

        When the animation completes we should also check if the newly visible content is also clickable and report it accordingly.
        When the animated content is not clickable, we need to proceed with click instead of stopping at hover.

        Test: fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove-no-clickable.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::isConsideredClickable):
        (WebCore::ContentChangeObserver::didFinishTransition):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const): Deleted. -> Turn it into a static function so that didFinishTransition could call it as well.
        * page/ios/ContentChangeObserver.h:

2019-06-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fix miscellaneous build warnings
        https://bugs.webkit.org/show_bug.cgi?id=198544

        Reviewed by Don Olmstead.

        Carefully silence -Wsign-compare warnings.

        * contentextensions/DFABytecodeCompiler.cpp:
        (WebCore::ContentExtensions::DFABytecodeCompiler::compile):
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::indexForData):
        * xml/XSLStyleSheetLibxslt.cpp:
        (WebCore::XSLStyleSheet::parseString):

2019-06-04  Keith Rollin  <krollin@apple.com>

        Fix 64-bit vs 32-bit mismatch in ISOFairPlayStreamingPsshBox.cpp
        https://bugs.webkit.org/show_bug.cgi?id=198539
        <rdar://problem/51410358>

        Reviewed by Alex Christensen.

        Both ISOFairPlayStreamingKeyAssetIdBox and
        ISOFairPlayStreamingKeyContextBox have Vector<> data members. The
        parse() members of these classes call Vector<>::resize() on these
        members. In both cases, the type of the parameter passed is a
        uint64_t. However, resize() takes a size_t. On some platforms, size_t
        is a 32-bit value, leading to a compile-time type mismatch error. Fix
        this by changing the type of the value passed to parse() into a
        size_t.

        No new tests -- no new functionality.

        * platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.cpp:
        (WebCore::ISOFairPlayStreamingKeyAssetIdBox::parse):
        (WebCore::ISOFairPlayStreamingKeyContextBox::parse):

2019-06-04  Keith Rollin  <krollin@apple.com>

        Fix 64-bit vs 32-bit mismatch in TileController.cpp
        https://bugs.webkit.org/show_bug.cgi?id=198540
        <rdar://problem/51410851>

        Reviewed by Alex Christensen.

        TileController::blankPixelCountForTiles calculates its result as a
        uint64_t, but returns it as an unsigned. The former is a 64-bit value,
        while the latter can be a 32-bit value on some platforms. This
        mismatch can lead to a compile-time error. Fix this by explicitly
        casting the 64-bit value to an "unsigned".

        No new tests -- no new functionality.

        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::blankPixelCountForTiles):

2019-06-04  Chris Dumez  <cdumez@apple.com>

        Crash when calling XMLHttpRequest.setRequestHeader() in a worker
        https://bugs.webkit.org/show_bug.cgi?id=198534
        <rdar://problem/51393912>

        Reviewed by Alex Christensen.

        Make sure the script execution context is a Document because calling document()
        to get the settings.

        Test: fast/workers/worker-xhr-setRequestHeader.html

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::setRequestHeader):

2019-06-04  Antti Koivisto  <antti@apple.com>

        Sticky positioning is jumpy in many overflow cases
        https://bugs.webkit.org/show_bug.cgi?id=198532
        <rdar://problem/51400532>

        Reviewed by Simon Fraser.

        Tests: scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1.html
               scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2.html
               scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1.html
               scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2.html
               scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick.html
               scrollingcoordinator/ios/sticky-overflow-stacking-context-stick.html

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):
        (WebCore::ScrollingTree::notifyRelatedNodesRecursive):

        Simplify for relatedNodeScrollPositionDidChange removal.

        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::relatedNodeScrollPositionDidChange): Deleted.
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
        * page/scrolling/cocoa/ScrollingTreePositionedNode.h:
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
        (WebCore::ScrollingTreePositionedNode::scrollOffsetSinceLastCommit const):

        Factor into a function.

        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
        (WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange): Deleted.

        We can't bail out based on changed node as that makes us compute different positions based on what the change root is.
        Since all relatedNodeScrollPositionDidChange functions now always simply call applyLayerPositions we can remove the whole thing.

        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::applyLayerPositions):

        Implement taking into account that the containing scroller may not be our ancestor.

2019-06-04  Takashi Komori  <Takashi.Komori@sony.com>

        [WinCairo] Implement cpu and memory measuring functions.
        https://bugs.webkit.org/show_bug.cgi?id=198466

        Reviewed by Don Olmstead.

        Tests: inspector/memory/tracking.html
               inspector/cpu-profiler/tracking.html

        * PlatformWinCairo.cmake:
        * page/ResourceUsageThread.h:
        * page/win/ResourceUsageOverlayWin.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp.
        (WebCore::ResourceUsageOverlay::platformInitialize):
        (WebCore::ResourceUsageOverlay::platformDestroy):
        * page/win/ResourceUsageThreadWin.cpp: Added.
        (WebCore::ResourceUsageThread::platformSaveStateBeforeStarting):
        (WebCore::fileTimeToUint64):
        (WebCore::getCurrentCpuTime):
        (WebCore::cpuUsage):
        (WebCore::memoryUsage):
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        (WebCore::ResourceUsageThread::platformCollectMemoryData):

2019-06-04  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Only allow pointer capture if the pointer is in the active buttons state
        https://bugs.webkit.org/show_bug.cgi?id=198479

        Reviewed by Dean Jackson.

        The Pointer Events specification says that pointer capture can only be engaged provided the pointer is
        in the active buttons state, which means that it has dispatched a "pointerdown" event more recently than
        it has a "pointerup" event.

        This is tested by web-platform-tests/pointerevents/pointerevent_setpointercapture_inactive_button_mouse.html.

        That test showed a few issues that this patch addresses. First, we would update the pointerIsPressed state to
        "true" only after a "pointerdown" event had been dispatched. This is incorrect since setPointerCapture() can,
        and is likely to, be called during handling of a "pointerdown" event. So we now call pointerEventWillBeDispatched()
        prior to dispatching a PointerEvent with a mouse type, which we only did previously for a PointerEvent with a
        touch or pen type. If the event is "pointerdown", we set "pointerIsPressed" to true on the CapturingData object
        matching the given pointer, and to false if the event is "pointerup".

        Finally, we must also ensure that "pointerIsPressed" is set to true when creating CapturingData for a PointerEvent
        with a touch or pen type since these types of pointer events implictly set capture.

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::setPointerCapture):
        (WebCore::PointerCaptureController::dispatchEvent):
        (WebCore::PointerCaptureController::pointerEventWillBeDispatched):
        (WebCore::PointerCaptureController::pointerEventWasDispatched):

2019-06-04  Keith Rollin  <krollin@apple.com>

        Fix 32-bit/64-bit mismatch in PointerCaptureController::elementWasRemoved
        https://bugs.webkit.org/show_bug.cgi?id=198501
        <rdar://problem/51370464>

        Reviewed by Chris Dumez.

        keyAndValue.key is assigned to pointerId. KeyAndValue.key is a
        int64_t, whereas pointerId is a PointerID, aka int32_t. This mismatch
        is normally just a warning, but breaks builds where warnings are
        treated as errors.

        This issue is not encountered in most builds because the warning is
        disabled in the majority of build configurations. But there are some
        where the warning is not disabled, and so those builds break.

        Address this conversion error/warning by explicitly casting
        keyAndValue.key to a PointerID (and adding a debug check to make sure
        the cast is OK).

        No new tests -- no new functionality.

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::elementWasRemoved):

2019-06-02  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Expose navigator.maxTouchPoints
        https://bugs.webkit.org/show_bug.cgi?id=198468
        <rdar://problem/51273029>

        Reviewed by Chris Dumez.

        Expose the navigator.maxTouchPoints property when Pointer Events are enabled both at compile-time and run-time.
        We return a canned value for this on iOS touch-enabled devices that matches the number of simultaneous touches
        supported by the system, which is 5. In fact, iPad support more simultaneous touches, but it doesn't seem worthy
        to expose this level of granularity due to fingerprinting practices. In practice, what really matters is returning
        0, 1 or more than 1 for this value to identify multi-touch support.

        Test: js/dom/navigator-maxtouchpoints.html

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/NavigatorMaxTouchPoints.idl: Added.
        * page/Navigator.idl:
        * page/Navigator.h:
        (WebCore::Navigator::maxTouchPoints const):

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Decouple float placement and line shrinking
        https://bugs.webkit.org/show_bug.cgi?id=198528
        <rdar://problem/51397638>

        Reviewed by Antti Koivisto.

        In LineLayout::placeInlineItems() float handling should be only about shrinking the current line, the actual
        float placement should happen later when we construct the the display boxes/runs. It enables the preferred width
        computation to call placeInlineItems() to gather line widths without accidentally mutating the layout context. 

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const): Deleted.
        * layout/inlineformatting/InlineItem.h:

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add hard line break handling to LineBreaker
        https://bugs.webkit.org/show_bug.cgi?id=198503
        <rdar://problem/51373482>

        Reviewed by Antti Koivisto.

        LineBreaker should simply return BreakingContext::Keep with the breaking opportunity of yes.

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::LineBreaker::breakingContext):
        (WebCore::Layout::LineBreaker::wordBreakingBehavior const):
        (WebCore::Layout::LineBreaker::isAtBreakingOpportunity):
        * layout/inlineformatting/InlineLineBreaker.h:

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Remove InlineItem::width
        https://bugs.webkit.org/show_bug.cgi?id=198502
        <rdar://problem/51371744>

        Reviewed by Antti Koivisto.

        InlineItems are supposd to work across subsequent layouts (and in preferred width computation as well) so they should
        not hold on to layout information (run width). This would not work with split runs either.

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::UncommittedContent::runs):
        (WebCore::Layout::UncommittedContent::isEmpty const):
        (WebCore::Layout::UncommittedContent::size const):
        (WebCore::Layout::UncommittedContent::add):
        (WebCore::Layout::UncommittedContent::reset):
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
        (): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const): Deleted.
        * layout/inlineformatting/InlineItem.h:
        (WebCore::Layout::InlineItem::style const):
        (): Deleted.
        (WebCore::Layout::InlineItem::setWidth): Deleted.
        (WebCore::Layout::InlineItem::width const): Deleted.

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move run width measuring out of LineBreaker
        https://bugs.webkit.org/show_bug.cgi?id=198491
        <rdar://problem/51363554>

        Reviewed by Antti Koivisto.

        LineBreaker should not need to deal with measuring runs.
        This is also in preparation for removing InlineItem::width().

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::inlineItemWidth):
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::LineBreaker::breakingContext):
        (WebCore::Layout::LineBreaker::LineBreaker): Deleted.
        (WebCore::Layout::LineBreaker::runWidth const): Deleted.
        (WebCore::Layout::LineBreaker::textWidth const): Deleted.
        * layout/inlineformatting/InlineLineBreaker.h:

2019-06-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Remove redundant InlineItem::width() calls.
        https://bugs.webkit.org/show_bug.cgi?id=198489
        <rdar://problem/51360390>

        Reviewed by Antti Koivisto.

        This is in preparation for removing InlineItem::width().

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):
        * layout/inlineformatting/InlineLine.cpp:
        (WebCore::Layout::Line::appendNonBreakableSpace):
        (WebCore::Layout::Line::appendInlineContainerStart):
        (WebCore::Layout::Line::appendInlineContainerEnd):
        * layout/inlineformatting/InlineLine.h:

2019-06-04  Antoine Quint  <graouts@apple.com>

        The "mouseenter" and "pointerenter" events are fired from the bottom up
        https://bugs.webkit.org/show_bug.cgi?id=198036
        <rdar://problem/50940350>

        Reviewed by Darin Adler.

        Ensure "mouseenter" and "pointerenter" events are dispatched from the bottom up to match the UI Events spec
        at https://w3c.github.io/uievents/#events-mouseevent-event-order. We also fix the issue where "pointerevent"
        and "pointerleave" events were dispatched as bubbling events on iOS which is not correct and was caught by the
        new iOS test.
 
        Tests: pointerevents/ios/enter-leave-order.html
               pointerevents/mouse/enter-leave-order.html

        * dom/ios/PointerEventIOS.cpp:
        (WebCore::typeCanBubble):
        (WebCore::PointerEvent::PointerEvent):
        * page/EventHandler.cpp:
        (WebCore::EventHandler::updateMouseEventTargetNode):
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):

2019-06-04  Cathie Chen  <cathiechen@igalia.com>

        JS wrapper of target in ResizeObserverEntry/ResizeObserver shouldn't get collected ahead
        https://bugs.webkit.org/show_bug.cgi?id=197457

        Reviewed by Ryosuke Niwa.

        Add JSCustomMarkFunction to make sure JS wrappers wouldn't be collected when JSResizeObserverEntry live.

        For ResizeObserver, if targets are removed, it will get fired for the last time. We also need to keep these JS
        wrappers live. So add these targets to a GCReachableRef list once they're observed.

        Add element-leak.html to test the targets with `entry.target.myEntry = entry` could be released properly.

        Tests: resize-observer/element-leak.html
               resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html
               resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSResizeObserverEntryCustom.cpp: Added.
        (WebCore::JSResizeObserverEntry::visitAdditionalChildren):
        * page/ResizeObserver.cpp:
        (WebCore::ResizeObserver::observe):
        (WebCore::ResizeObserver::removeAllTargets):
        (WebCore::ResizeObserver::removeObservation):
        (WebCore::ResizeObserver::stop):
        * page/ResizeObserver.h:
        * page/ResizeObserverEntry.idl:

2019-06-03  Andy Estes  <aestes@apple.com>

        [Apple Pay] Disable script injection when canMakePayment APIs are called and return true
        https://bugs.webkit.org/show_bug.cgi?id=198448
        <rdar://problem/51323694>

        Reviewed by Alex Christensen.

        Previously, only an active Apple Pay session would disable script injection in restricted
        WKWebViews. However, this can result in websites rendering non-functional Apple Pay buttons
        due to the race between the hosting app calling -evaluateJavaScript:completionHandler: and
        the website calling canMakePayment APIs to determine whether to draw a button.

        This patch makes it so that, if a website calls ApplePaySession's canMakePayments or
        canMakePaymentsWithActiveCard, or PaymentRequest's canMakePayment, in a web view that has no
        injected scripts, and those calls return true, future script injections from the hosting app
        will be blocked.

        Also, this patch removes the restrictions on the openPaymentSetup, supportsVersion, and
        validatedPaymentNetwork APIs, since those APIs do not reveal transaction information and are
        not used to determine whether to draw buttons.

        Added new API tests.

        * Modules/applepay/PaymentCoordinator.cpp:
        (WebCore::PaymentCoordinator::supportsVersion const):
        (WebCore::PaymentCoordinator::canMakePayments):
        (WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebCore::PaymentCoordinator::openPaymentSetup):
        (WebCore::PaymentCoordinator::beginPaymentSession):
        (WebCore::PaymentCoordinator::validatedPaymentNetwork const):
        (WebCore::PaymentCoordinator::setApplePayIsActiveIfAllowed const):
        (WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
        (WebCore::PaymentCoordinator::shouldAllowApplePay const): Deleted.
        * Modules/applepay/PaymentCoordinator.h:
        * dom/Document.cpp:
        (WebCore::Document::isApplePayActive const):
        (WebCore::Document::setApplePayIsActive):
        (WebCore::Document::hasStartedApplePaySession const): Deleted.
        (WebCore::Document::setHasStartedApplePaySession): Deleted.
        * dom/Document.h:
        * testing/Internals.cpp:
        (WebCore::Internals::setApplePayIsActive):
        (WebCore::Internals::setHasStartedApplePaySession): Deleted.
        * testing/Internals.h:
        * testing/Internals.idl:

2019-06-03  Robin Morisset  <rmorisset@apple.com>

        [WHLSL] Parsing and lexing the standard library is slow
        https://bugs.webkit.org/show_bug.cgi?id=192890
        <rdar://problem/50746335>

        Reviewed by Myles Maxfield.

        The main idea is to avoid backtracking by instead peeking at the next token (and occasionally at the one after that).
        This implies a few things:
        - We can replace the stack of tokens by a trivial ring buffer of size 2 (holding the next token and the one after, or WTF::nullopt if we are at the end of the file).
        - We now have "completeFooExpression" functions, to avoid having to reparse the prefix of some expression, if we find half-way through what it is.

        I also fixed the following parser bug:
        - https://bugs.webkit.org/show_bug.cgi?id=198305 [WHLSL] Multiple variables with initializers in a declaration statement crashes the compiler
            which was due to a mistake I made in the grammar

        Finally I added two new macros: CONSUME_TYPE and PARSE to eliminate about 500 lines of error propagation boilerplate.

        There are still lots of ways of improving the parser and lexer, such as:
        - finishing the conversion of tokens in the lexer, not bothering with allocating string views
        - make two special tokens Invalid and EOF, to remove the overhead of Optional
        - make peekTypes and consumeTypes use templates to avoid constructing a Vector and calling find on it.
        - Turn the entire lexer into a proper automata, not going through the same characters again and again (this is certainly the largest win by far)
        - Remove the last few pieces of backtracking from the parser.

        The current patch is already enough to make parsing the full standard library (something like 85k lines) approximately 260ms.
        This is still longer than I would like, but nowhere near the bottleneck any longer because of some other parts of the compiler.

        * Modules/webgpu/WHLSL/WHLSLLexer.h:
        (WebCore::WHLSL::Lexer::Lexer):
        (WebCore::WHLSL::Lexer::consumeToken):
        (WebCore::WHLSL::Lexer::peek):
        (WebCore::WHLSL::Lexer::peekFurther):
        (WebCore::WHLSL::Lexer::state const):
        (WebCore::WHLSL::Lexer::setState):
        (WebCore::WHLSL::Lexer::unconsumeToken): Deleted.
        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parse):
        (WebCore::WHLSL::Parser::peek):
        (WebCore::WHLSL::Parser::peekTypes):
        (WebCore::WHLSL::Parser::tryType):
        (WebCore::WHLSL::Parser::tryTypes):
        (WebCore::WHLSL::Parser::consumeTypes):
        (WebCore::WHLSL::Parser::parseConstantExpression):
        (WebCore::WHLSL::Parser::parseTypeArgument):
        (WebCore::WHLSL::Parser::parseTypeArguments):
        (WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
        (WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
        (WebCore::WHLSL::Parser::parseType):
        (WebCore::WHLSL::Parser::parseTypeDefinition):
        (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::parseComputeFunctionDeclaration):
        (WebCore::WHLSL::Parser::parseVertexFragmentFunctionDeclaration):
        (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::parseExpression):
        (WebCore::WHLSL::Parser::parseTernaryConditional):
        (WebCore::WHLSL::Parser::completeTernaryConditional):
        (WebCore::WHLSL::Parser::parseAssignment):
        (WebCore::WHLSL::Parser::completeAssignment):
        (WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
        (WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
        (WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
        (WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
        (WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
        (WebCore::WHLSL::Parser::parsePossibleShift):
        (WebCore::WHLSL::Parser::completePossibleShift):
        (WebCore::WHLSL::Parser::parsePossibleAdd):
        (WebCore::WHLSL::Parser::completePossibleAdd):
        (WebCore::WHLSL::Parser::parsePossibleMultiply):
        (WebCore::WHLSL::Parser::completePossibleMultiply):
        (WebCore::WHLSL::Parser::parsePossiblePrefix):
        (WebCore::WHLSL::Parser::parsePossibleSuffix):
        (WebCore::WHLSL::Parser::parseCallExpression):
        (WebCore::WHLSL::Parser::parseTerm):
        (WebCore::WHLSL::Parser::parseAddressSpaceType): Deleted.
        (WebCore::WHLSL::Parser::parseNonAddressSpaceType): Deleted.
        (WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration): Deleted.
        (WebCore::WHLSL::Parser::parseEffectfulPrefix): Deleted.
        (WebCore::WHLSL::Parser::parseEffectfulSuffix): Deleted.
        * Modules/webgpu/WHLSL/WHLSLParser.h:
        (WebCore::WHLSL::Parser::Error::dump const):

2019-06-03  Youenn Fablet  <youenn@apple.com>

        Allow resizing of camera video feeds to very small resolutions
        https://bugs.webkit.org/show_bug.cgi?id=198421

        Reviewed by Alex Christensen.

        Before the patch, the minimum capture resolution was set to 120.
        Since this is a bit arbitrary and there are some use cases for lower resolution,
        We now allow down to 1x1 resolution.

        Test: fast/mediastream/getUserMedia-video-rescaling.html

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::updateCapabilities):
        Allow 1x1 when computing min/max resolutions.
        (WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
        In case width and height are provided, we pick the closest preset that matches and resize accordingly.
        If width or height is provided, we pick the closest preset tat matches and applies its aspect ratio.

2019-06-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement an internal switch to turn idempotent text autosizing and viewport rules off
        https://bugs.webkit.org/show_bug.cgi?id=198460
        <rdar://problem/51324526>

        Reviewed by Tim Horton.

        Add a new WebCore setting for viewport shrink-to-fit-content heuristics; additionally, tweak the existing
        idempotent text autosizing setting to default to false (this is overridden by preferences at the WebKit layer).

        * page/Settings.yaml:

2019-06-03  Rob Buis  <rbuis@igalia.com>

        Implement imagesrcset and imagesizes attributes on link rel=preload
        https://bugs.webkit.org/show_bug.cgi?id=192950

        Reviewed by Youenn Fablet.

        Implement imagesrcset and imagesizes attributes for both Link header
        and link element.

        Tests: imported/w3c/web-platform-tests/preload/dynamic-adding-preload-imagesrcset.html
               imported/w3c/web-platform-tests/preload/link-header-preload-imagesrcset.html
               imported/w3c/web-platform-tests/preload/link-header-preload-nonce.html
               imported/w3c/web-platform-tests/preload/link-header-preload.html
               imported/w3c/web-platform-tests/preload/onload-event.html
               imported/w3c/web-platform-tests/preload/preload-with-type.html

        * html/HTMLAttributeNames.in:
        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::process):
        * html/HTMLLinkElement.idl:
        * loader/LinkHeader.cpp:
        (WebCore::paramterNameFromString):
        (WebCore::LinkHeader::setValue):
        (WebCore::LinkHeader::LinkHeader):
        * loader/LinkHeader.h:
        (WebCore::LinkHeader::imageSrcSet const):
        (WebCore::LinkHeader::imageSizes const):
        (WebCore::LinkHeader::isViewportDependent const):
        * loader/LinkLoader.cpp:
        (WebCore::LinkLoader::loadLinksFromHeader):
        (WebCore::LinkLoader::preloadIfNeeded):
        (WebCore::LinkLoader::loadLink):
        * loader/LinkLoader.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::linkPreloadResponsiveImagesEnabled const):
        (WebCore::RuntimeEnabledFeatures::setLinkPreloadResponsiveImagesEnabled):

2019-06-02  Andy Estes  <aestes@apple.com>

        Memory-cached main resources continue to load after the client decides a content policy of PolicyAction::Download
        https://bugs.webkit.org/show_bug.cgi?id=198469
        <rdar://problem/50512713>

        Reviewed by Youenn Fablet.

        When a document is loaded from the memory cache it does not have a main resource loader, but
        DocumentLoader::continueAfterContentPolicy relies on being able to call
        ResourceLoader::didFail on the main resource loader to cancel the provisional navigation
        when the client decides a content policy of PolicyAction::Download.

        This means that memory-cached main resources continue to load even after WebKit has started
        to download the main resource. The expected behavior is for the provisional navigation to
        fail once the download starts, like what happens when there is a main resource loader.

        This patch teaches DocumentLoader::continueAfterContentPolicy to call
        stopLoadingForPolicyChange() in the case of a null main resource loader. This will dispatch
        didFailProvisionalNavigation and remove the DocumentLoader as a client of its
        CachedRawResource to prevent it from delivering any cached data.

        Added a new API test.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::continueAfterContentPolicy):

2019-06-03  Timothy Hatcher  <timothy@apple.com>

        Tweak the text and underline color for data detected text.
        https://bugs.webkit.org/show_bug.cgi?id=198487
        rdar://problem/50667125

        Reviewed by Devin Rousso.

        Tests: Color.RGBToHSL API tests

        * editing/cocoa/DataDetection.mm:
        (WebCore::DataDetection::detectContentInRange): Use currentcolor so semantic text colors work.
        Force the lightness of the underline color to the middle, and multiply the alpha by 38%,
        so the color will appear on light and dark backgrounds, since only one color can be specified.
        * platform/graphics/Color.cpp:
        (WebCore::Color::getHSL const): Return hue in [0...6) range to easily round-trip with makeRGBAFromHSLA().

2019-06-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::JavaScriptCore target
        https://bugs.webkit.org/show_bug.cgi?id=198403

        Reviewed by Konstantin Tokarev.

        Use the WebKit::JavaScriptCore target.

        * CMakeLists.txt:

2019-06-03  Zan Dobersek  <zdobersek@igalia.com>

        [Nicosia] Disable async scrolling until implemented
        https://bugs.webkit.org/show_bug.cgi?id=198476
        <rdar://problem/51351478>

        Unreviewed follow-up to r246033.

        * page/scrolling/ScrollingCoordinator.cpp:
        Expand the PLATFORM(IOS) guard to IOS_FAMILY.

2019-06-03  Darin Adler  <darin@apple.com>

        Finish cleanup of String::number for floating point
        https://bugs.webkit.org/show_bug.cgi?id=198471

        Reviewed by Yusuke Suzuki.

        * css/CSSCursorImageValue.cpp:
        (WebCore::CSSCursorImageValue::customCSSText const): Use makeString instead
        of StringBuilder since it is more terse and possibly more efficient as well.
        * css/DOMMatrixReadOnly.cpp:
        (WebCore::DOMMatrixReadOnly::toString const): Ditto.
        * css/WebKitCSSMatrix.cpp:
        (WebCore::WebKitCSSMatrix::toString const): Ditto.

        * html/parser/HTMLParserIdioms.cpp:
        (WebCore::serializeForNumberType): Use String::number instead of
        String::numberToStringECMAScript since that is now the default.
        * html/shadow/MediaControlElementTypes.cpp:
        (WebCore::MediaControlVolumeSliderElement::setVolume): Ditto.
        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlTimelineElement::setPosition): Ditto.
        * platform/Decimal.cpp:
        (WebCore::Decimal::fromDouble): Ditto.

        * rendering/RenderListMarker.cpp:
        (WebCore::toRoman): Return a String instead of taking a StringBuilder argument.
        Use LetterCase enum instead of bool for the uppercase vs. lowercase argument, to
        be less mysterious at call sites. Use unsigned for string lengths since that's
        what WTF::String uses.
        (WebCore::toAlphabeticOrNumeric): Ditto. Also updated since SequenceType is now
        an enum class.
        (WebCore::toSymbolic): Use String::createUninitialized instead of StringBuilder.
        Return a String instead of taking a StringBuilder argument. Straighten out the
        algorithm so it's easier to understand.
        (WebCore::toAlphabetic): Updated since SequenceType is now an enum class.
        (WebCore::toNumeric): Ditto.
        (WebCore::toHebrew): Return a String instead of taking a StringBuilder argument.
        Use unsigned for string lengths since that's what WTF::String uses.
        (WebCore::toArmenianUnder10000): Use unsigned and the LetterCase enum class.
        (WebCore::toArmenian): Return a String instead of taking a StringBuilder argument.
        Also use unsigned for string lengths since that's what WTF::String uses.
        (WebCore::toGeorgian): Ditto.
        (WebCore::toCJKIdeographic): Ditto.
        (WebCore::listMarkerSuffix): Tweaked a comment.
        (WebCore::listMarkerText): Use String return values instead of StringBuilder.
        (WebCore::RenderListMarker::paint): Use String::createUninitialized instead of
        StringBuilder since it's a bit more efficient. Use makeString instead of turning
        single characters into strings since that's more efficient.

        * svg/SVGPathUtilities.cpp:
        (WebCore::buildStringFromPath): Use appendNumber instead of appendShortestFormNumber
        since that is now the default.

2019-06-03  Zan Dobersek  <zdobersek@igalia.com>

        [Nicosia] Disable async scrolling until implemented
        https://bugs.webkit.org/show_bug.cgi?id=198476

        Reviewed by Antti Koivisto.

        Build ScrollingCoordinator::create() method on iOS or whenever
        ASYNC_SCROLLING is not enabled.

        Additionally, the USE(COORDINATED_GRAPHICS) build guards are removed
        throughout the async scrolling classes as they aren't required now
        and shouldn't be in the future.

        * page/scrolling/ScrollingCoordinator.cpp:
        * page/scrolling/ScrollingStateFixedNode.cpp:
        * page/scrolling/ScrollingStateFixedNode.h:
        * page/scrolling/ScrollingStateFrameHostingNode.cpp:
        * page/scrolling/ScrollingStateFrameHostingNode.h:
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingStateNode.cpp:
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateOverflowScrollingNode.cpp:
        * page/scrolling/ScrollingStateOverflowScrollingNode.h:
        * page/scrolling/ScrollingStatePositionedNode.cpp:
        * page/scrolling/ScrollingStatePositionedNode.h:
        * page/scrolling/ScrollingStateScrollingNode.cpp:
        * page/scrolling/ScrollingStateScrollingNode.h:
        * page/scrolling/ScrollingStateStickyNode.cpp:
        * page/scrolling/ScrollingStateStickyNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        * page/scrolling/ScrollingStateTree.h:

2019-06-03  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Check that capturing data managed by the PointerCaptureController gets cleared upon navigation
        https://bugs.webkit.org/show_bug.cgi?id=198191

        Unreviewed post-commit review feedback suggested by Darin Adler.

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::reset):

2019-06-01  Simon Fraser  <simon.fraser@apple.com>

        [Async overflow scroll] Flashing content when scrolling async overflow with a negative z-index child
        https://bugs.webkit.org/show_bug.cgi?id=198458

        Reviewed by Dean Jackson.

        Set the GraphicsLayerPaintOverflowContents phase on the foreground layer in a composited overflow scroller,
        which prevents clipping to the visible region, fixing scrolling flashes.

        Tested by compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updatePaintingPhases):

2019-06-01  Simon Fraser  <simon.fraser@apple.com>

        Async overflow scroll on iOS paints slowly if it has a negative z-index child
        https://bugs.webkit.org/show_bug.cgi?id=196508
        rdar://problem/49532709

        Reviewed by Dean Jackson.
        
        If a RenderLayerBacking had a foreground layer and a scrolled contents layer, every geometry
        update would change the size and offsetFromRenderer of the foreground layer between two
        states, triggering repaint.

        Fix by updating the fore- and background-layers last (nothing elese has dependencies
        on their geometry), and using GraphicsLayer::DontSetNeedsDisplay as we do for the
        scrolled contents layer.
        
        The test also revealed a bug where the shapeMaskLayer would get incorrect geometry when scrollbars
        were visible, because it would be squished by setting the wrong bounds, so fix that.

        Test: compositing/repaint/scroller-with-foreground-layer-repaints.html

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::updateClippingStrategy):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateGeometry):

2019-06-01  Simon Fraser  <simon.fraser@apple.com>

        Non-composited negative z-order children should not trigger creation of a foreground layer
        https://bugs.webkit.org/show_bug.cgi?id=198455

        Reviewed by Sam Weinig.

        The existing code triggered creation of a foreground layer on RenderLayerBacking when
        the negative z-order list was non-empty. This isn't necessary; we can paint the negative
        z-order children just fine.

        We only need a foreground layer when the negative z-order layers are composited or
        have composited descendants.

        This will reduce backing store memory use in some cases.

        Test: compositing/layer-creation/composited-negative-z-subtree.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):

2019-06-01  Andy Estes  <aestes@apple.com>

        [Apple Pay] Every PaymentCoordinator client should explicitly decide whether they support unrestricted Apple Pay
        https://bugs.webkit.org/show_bug.cgi?id=198449
        <rdar://problem/51038583>

        Reviewed by Wenson Hsieh.

        Rather than having a default return value of true for
        PaymentCoordinatorClient::supportsUnrestrictedApplePay, make it pure virtual to force each
        subclass to implement an override and explicitly choose an appropriate return value.

        The only two clients that did not explicitly override were the empty client and
        WebKitLegacy's client, and Apple Pay was never enabled in those clients, so there is no
        change in behavior.

        * Modules/applepay/PaymentCoordinatorClient.h:
        (WebCore::PaymentCoordinatorClient::isAlwaysOnLoggingAllowed const):
        (WebCore::PaymentCoordinatorClient::supportsUnrestrictedApplePay const): Deleted.
        * loader/EmptyClients.cpp:

2019-05-31  Youenn Fablet  <youenn@apple.com>

        Add an option to mute audio capture automatically when page is not visible
        https://bugs.webkit.org/show_bug.cgi?id=198307

        Reviewed by Eric Carlson.

        Reuse video capture mechanism for audio capture.
        In case document gets in the background, interrupt the audio track if the audio factory requires it.
        CoreAudioCaptureSourceIOS requires the audio source be interrupted if the app has not the right background mode.
        It also allows interrupting the audio capture based on a runtime flag.

        Add a runtime flag to control this.
        Internals API is used to set it for test purposes, off by default.
        For regular cases, the runtime flag is set through web preferences.

        Test: platform/ios/mediastream/audio-muted-in-background-tab.html

        * dom/Document.cpp:
        (WebCore::Document::notifyMediaCaptureOfVisibilityChanged):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::interruptAudioOnPageVisibilityChangeEnabled const):
        (WebCore::RuntimeEnabledFeatures::setInterruptAudioOnPageVisibilityChangeEnabled):
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::RealtimeMediaSourceCenter):
        (WebCore::RealtimeMediaSourceCenter::initializeShouldInterruptAudioOnPageVisibilityChange):
        (WebCore::RealtimeMediaSourceCenter::setCapturePageState):
        (WebCore::RealtimeMediaSourceCenter::visibilityDidChange):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        (WebCore::RealtimeMediaSourceCenter::shouldInterruptAudioOnPageVisibilityChange):
        * platform/mediastream/RealtimeMediaSourceFactory.h:
        (WebCore::AudioCaptureFactory::setAudioCapturePageState):
        (WebCore::VideoCaptureFactory::setVideoCapturePageState):
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        (WebCore::CoreAudioCaptureSourceFactory::setAudioCapturePageState):
        (WebCore::CoreAudioCaptureSourceFactoryIOS::shouldInterruptAudioOnPageVisibilityChange):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        (WebCore::RealtimeMediaSourceCenter::initializeShouldInterruptAudioOnPageVisibilityChange):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        (WebCore::Internals::setShouldInterruptAudioOnPageVisibilityChange):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-05-31  Geoffrey Garen  <ggaren@apple.com>

        Some WeakPtr typedef cleanup
        https://bugs.webkit.org/show_bug.cgi?id=198431

        Reviewed by Chris Dumez.

        Use "using" instead of "typedef", since using is preferred in C++ for
        better compatibility with templates.

        * Modules/indexeddb/shared/InProcessIDBServer.h:
        * html/HTMLMediaElement.h:
        * platform/ScrollView.h:

2019-05-31  Andres Gonzalez  <andresg_22@apple.com>

        Inserting a newline in contenteditable causes two characters to be added instead of one
        https://bugs.webkit.org/show_bug.cgi?id=197894
        <rdar://problems/49700998>

        Reviewed by Chris Fleizach.

        No new test is necessary since this is a comment change.

        Removed radar reference from code.

        * editing/Editing.cpp:
        (WebCore::visiblePositionForIndexUsingCharacterIterator):

2019-05-31  Tim Horton  <timothy_horton@apple.com>

        Optionally respect device management restrictions when loading from the network
        https://bugs.webkit.org/show_bug.cgi?id=198318
        <rdar://problem/44263806>

        Reviewed by Alex Christensen.

        * en.lproj/Localizable.strings:

2019-05-31  Simon Fraser  <simon.fraser@apple.com>

        Move code that sets compositing paint phases into a single function
        https://bugs.webkit.org/show_bug.cgi?id=198420

        Reviewed by Zalan Bujtas.

        To compute the correct paint phases for the various GraphicsLayers in a RenderLayerBacking,
        we have to know which set of layers we've created (m_scrollContainerLayer, m_foregroundLayer etc).
        So move the code that sets phases into a single function which is called when that
        set of layers changes.

        The test dumps paint phases for a stacking-context-composited scroller with a negative z-index child.

        Also have GraphicsLayer::setPaintingPhase() trigger the necessary repaint when the paint phase changes.

        Test: compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases.html

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setPaintingPhase):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::setPaintingPhase): Deleted.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateForegroundLayer):
        (WebCore::RenderLayerBacking::updateBackgroundLayer):
        (WebCore::RenderLayerBacking::updateMaskingLayer):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        (WebCore::RenderLayerBacking::updatePaintingPhases):
        (WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer const): Deleted.
        * rendering/RenderLayerBacking.h:

2019-05-31  Saam Barati  <sbarati@apple.com>

        [WHLSL] Make sure we properly emit code for "&*x"
        https://bugs.webkit.org/show_bug.cgi?id=198198

        Reviewed by Myles C. Maxfield.

        I ran into this when trying to test zero-filling code, so let's just fix it.
        The issue is that the property resolver ends up emitting code that looks like
        "&*x". The semantics of this are such that it should result in just x.
        However, we emitted Metal code in such a way where we'd end up with a pointer
        to a temporary value. To fix this, DereferenceExpression will emit code that results
        in a reference type. Then, MakePointerExpression will correctly return the
        pointer backing that reference type.
        
        Because of this, we also no longer need to pattern match the lhs of assignment
        expressions since we will now be assigning to a reference type.

        Test: webgpu/whlsl-store-to-property-updates-properly.html

        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):

2019-05-31  Simon Fraser  <simon.fraser@apple.com>

        [Async overflow scrolling] Flashes of missing layer backing store when scrolling an overflow
        https://bugs.webkit.org/show_bug.cgi?id=198363

        Reviewed by Tim Horton.

        When the contents of an overflow:scroll did not use a tiled backing layer, GraphicsLayerCA::adjustCoverageRect()
        would do no coverage rect expansion for scrolling, which meant that backing store attachment for
        descendant layers would just use the visible rect from their scrolling ancestor which made it easy
        to scroll into view a layer whose backing store was not yet attached.
        
        Since this only affects non-tiled layers, re-use the generic TileController::adjustTileCoverageRect()
        code by moving it down to GraphicsLayer, and call it for a scrolled contents layer which does not
        have tiled backing.
        
        Tested by fast/scrolling/ios/reconcile-layer-position-recursive.html

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::adjustCoverageRectForMovement):
        * platform/graphics/GraphicsLayer.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::adjustCoverageRect const):
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::adjustTileCoverageRect):

2019-05-31  Geoffrey Garen  <ggaren@apple.com>

        Some WeakPtr cleanup
        https://bugs.webkit.org/show_bug.cgi?id=198390

        Reviewed by Chris Dumez.

        * Modules/indexeddb/shared/InProcessIDBServer.cpp:
        (WebCore::storageQuotaManagerGetter): Dereference the weak pointer
        directly instead of using a weak pointer to guard a raw pointer. It's
        safer and more idiomatic to use weak pointers directly.

        * Modules/indexeddb/shared/InProcessIDBServer.h: Use our base clase
        weakPtrFactory() definition instead of writing our own. Declare
        WeakValueType so we can dereference the weak pointer we create (above).

2019-05-31  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] InlineFormattingContext::LineLayout::processInlineItemsForLine should create and destroy Line.
        https://bugs.webkit.org/show_bug.cgi?id=198419
        <rdar://problem/51300837>

        Reviewed by Antti Koivisto.

        This is in preparation for using "createInlineRunsForLine" logic when computing preferred width.
        1. Line object is now constructed and destroyed in processInlineItemsForLine (caller does not need to know about Line).
        2. processInlineItemsForLine returns a Line::Content instance.

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
        (WebCore::Layout::constructLine):
        (WebCore::Layout::InlineFormattingContext::LineLayout::processInlineItemsForLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::createLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::createInlineRunsForLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::processInlineRuns const): Deleted.

2019-05-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::WTF target
        https://bugs.webkit.org/show_bug.cgi?id=198400

        Reviewed by Konstantin Tokarev.

        Use the WebKit::WTF target.

        * PlatformWin.cmake:

2019-05-31  Joonghun Park  <jh718.park@samsung.com>

        Always min-width should win over max-width.
        https://bugs.webkit.org/show_bug.cgi?id=198032

        Reviewed by Darin Adler.

        In the spec, https://www.w3.org/TR/CSS21/visudet.html#min-max-widths,
        the following algorithm describes how the two properties influence
        the used value of the 'width' property.

        1. The tentative used width is calculated (without 'min-width' and 'max-width')
        following the rules under "Calculating widths and margins" above.
        2. If the tentative used width is greater than 'max-width',
        the rules above are applied again, but this time using the computed value of 'max-width'
        as the computed value for 'width'.
        3. If the resulting width is smaller than 'min-width', the rules above are applied again,
        but this time using the value of 'min-width' as the computed value for 'width'.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::computePreferredLogicalWidths):

2019-05-31  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245946.

        Breaks the watchOS build.

        Reverted changeset:

        "Add an option to mute audio capture automatically when page
        is not visible"
        https://bugs.webkit.org/show_bug.cgi?id=198307
        https://trac.webkit.org/changeset/245946

2019-05-31  Zalan Bujtas  <zalan@apple.com>

        [LFC[IFC] Do not reuse the same Line object.
        https://bugs.webkit.org/show_bug.cgi?id=198366
        <rdar://problem/51250279>

        Reviewed by Antti Koivisto.

        This is in preparation for constructing Line inside createInlineRunsForLine and return Line::Content. 

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::createLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::processInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::initializeLine const): Deleted.
        * layout/inlineformatting/InlineLine.cpp:
        (WebCore::Layout::Line::Line):
        (WebCore::Layout::m_lineLogicalWidth):
        (WebCore::Layout::Line::close):
        (WebCore::Layout::Line::moveLogicalLeft):
        (WebCore::Layout::Line::appendNonBreakableSpace):
        (WebCore::Layout::Line::appendTextContent):
        (WebCore::Layout::Line::appendNonReplacedInlineBox):
        (WebCore::Layout::Line::appendHardLineBreak):
        (WebCore::Layout::Line::reset): Deleted.
        * layout/inlineformatting/InlineLine.h:
        (WebCore::Layout::Line::hasContent const):

2019-05-31  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move final runs to a dedicated class (Line::Content)
        https://bugs.webkit.org/show_bug.cgi?id=198360
        <rdar://problem/51247717>

        Reviewed by Antti Koivisto.

        It decouples the line and the final line content. So when we process the runs after closing the line,
        LineContent should be able to answer all the content and geometry related questions.
        This is also in preparation for
        transfering the ownership of the line content when calling Line::close(). 

        * WebCore.xcodeproj/project.pbxproj:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::processInlineRuns const):
        * layout/inlineformatting/InlineLine.cpp:
        (WebCore::Layout::Line::Content::isVisuallyEmpty const):
        (WebCore::Layout::Line::Content::Run::Run):
        (WebCore::Layout::Line::reset):
        (WebCore::Layout::Line::close):
        (WebCore::Layout::Line::moveLogicalLeft):
        (WebCore::Layout::Line::appendNonBreakableSpace):
        (WebCore::Layout::Line::appendTextContent):
        (WebCore::Layout::Line::appendNonReplacedInlineBox):
        (WebCore::Layout::Line::appendHardLineBreak):
        (WebCore::Layout::Line::LineItem::LineItem): Deleted.
        (WebCore::Layout::Line::hasContent const): Deleted.
        * layout/inlineformatting/InlineLine.h:
        (WebCore::Layout::Line::Content::runs const):
        (WebCore::Layout::Line::Content::isEmpty const):
        (WebCore::Layout::Line::Content::logicalTop const):
        (WebCore::Layout::Line::Content::logicalLeft const):
        (WebCore::Layout::Line::Content::logicalRight const):
        (WebCore::Layout::Line::Content::logicalBottom const):
        (WebCore::Layout::Line::Content::logicalWidth const):
        (WebCore::Layout::Line::Content::logicalHeight const):
        (WebCore::Layout::Line::Content::setLogicalRect):
        (WebCore::Layout::Line::Content::runs):
        (WebCore::Layout::Line::hasContent const):
        (WebCore::Layout::Line::availableWidth const):
        (WebCore::Layout::Line::contentLogicalRight const):
        (WebCore::Layout::Line::logicalTop const):
        (WebCore::Layout::Line::logicalBottom const):
        (WebCore::Layout::Line::logicalLeft const):
        (WebCore::Layout::Line::logicalRight const):
        (WebCore::Layout::Line::logicalWidth const):
        (WebCore::Layout::Line::logicalHeight const):
        (WebCore::Layout::Line::contentLogicalWidth const):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-05-31  Joonghun Park  <jh718.park@samsung.com>

        Unreviewed. Fix typo of |ComputedStyleExtractor::valueForPropertyInStyle|
        to follow camel case function naming style.

        No behavioral changes.

        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::getKeyframes):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::propertyValue):
        (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): Deleted.
        * css/CSSComputedStyleDeclaration.h:
        * rendering/style/RenderStyle.cpp:
        (WebCore::changedCustomPaintWatchedProperty):

2019-05-31  Ali Juma  <ajuma@chromium.org>

        REGRESSION (r245396): Page load time performance regression
        https://bugs.webkit.org/show_bug.cgi?id=198382

        Reviewed by Simon Fraser.

        Delay the scheduling of a rendering update by 500ms when a new
        IntersectionObserver target is added during page load. This addresses
        a page load time regression from r245396, which immediately scheduled a
        rendering update when a target is added. Note that even with this change,
        if anything else triggers a rendering update before the 500ms delay expires,
        intersection observations will be updated during that rendering update.

        Covered by intersection-observer/initial-observation.html 

        * dom/Document.cpp:
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::scheduleInitialIntersectionObservationUpdate):
        * dom/Document.h:
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):

2019-05-30  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Suppress -Wunused-variable warnings for the unused static
        mousePointerID variable by making it a constexpr.

        * platform/PointerID.h:

2019-05-30  Simon Fraser  <simon.fraser@apple.com>

        Use an OptionSet<> for GraphicsLayerPaintingPhase
        https://bugs.webkit.org/show_bug.cgi?id=198404

        Reviewed by Tim Horton.

        Replace GraphicsLayerPaintingPhase with OptionSet<GraphicsLayerPaintingPhase>.

        No behavior change.

        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::setPageOverlayNeedsDisplay):
        (WebCore::PageOverlayController::paintContents):
        (WebCore::PageOverlayController::notifyFlushRequired):
        * page/PageOverlayController.h:
        * page/linux/ResourceUsageOverlayLinux.cpp:
        * page/mac/ServicesOverlayController.h:
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::paintContents):
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::dumpProperties const):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::paintingPhase const):
        (WebCore::GraphicsLayer::setPaintingPhase):
        * platform/graphics/GraphicsLayerClient.h:
        (WebCore::GraphicsLayerClient::paintContents):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateForegroundLayer):
        (WebCore::RenderLayerBacking::updateBackgroundLayer):
        (WebCore::RenderLayerBacking::updateMaskingLayer):
        (WebCore::RenderLayerBacking::updateChildClippingStrategy):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        (WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer const):
        (WebCore::RenderLayerBacking::paintIntoLayer):
        (WebCore::RenderLayerBacking::paintContents):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::paintContents):
        * rendering/RenderLayerCompositor.h:

2019-05-30  Youenn Fablet  <youenn@apple.com>

        Fix AVVideoCaptureSource::setFrameRateWithPreset logging
        https://bugs.webkit.org/show_bug.cgi?id=198392

        Reviewed by Eric Carlson.

        Move logging from setFrameRateWithPreset to setSessionSizeAndFrameRate which does the actual job.
        This ensures to not log in case of preset being null.
        No change of behavior.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):

2019-05-30  Jer Noble  <jer.noble@apple.com>

        Video playback in Safari should continue when CarPlay is plugged in
        https://bugs.webkit.org/show_bug.cgi?id=198345
        <rdar://problem/45505750>

        Reviewed by Eric Carlson.

        Test: media/video-isplayingtoautomotiveheadunit.html

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::setIsPlayingToAutomotiveHeadUnit):
        * platform/audio/PlatformMediaSessionManager.h:
        (WebCore::PlatformMediaSessionManager::isPlayingToAutomotiveHeadUnit const):
        * platform/audio/ios/MediaSessionManagerIOS.h:
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::MediaSessionManageriOS):
        (WebCore::MediaSessionManageriOS::carPlayServerDied):
        (WebCore::MediaSessionManageriOS::updateCarPlayIsConnected):
        (-[WebMediaSessionHelper initWithCallback:]):
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
        (-[WebMediaSessionHelper interruption:]):
        (-[WebMediaSessionHelper applicationWillEnterForeground:]):
        (-[WebMediaSessionHelper applicationDidBecomeActive:]):
        (-[WebMediaSessionHelper applicationWillResignActive:]):
        (-[WebMediaSessionHelper wirelessRoutesAvailableDidChange:]):
        (-[WebMediaSessionHelper applicationDidEnterBackground:]):
        (-[WebMediaSessionHelper carPlayServerDied:]):
        (-[WebMediaSessionHelper carPlayIsConnectedDidChange:]):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        (WebCore::Internals::setIsPlayingToAutomotiveHeadUnit):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-05-30  Youenn Fablet  <youenn@apple.com>

        Add an option to mute audio capture automatically when page is not visible
        https://bugs.webkit.org/show_bug.cgi?id=198307

        Reviewed by Eric Carlson.

        Reuse video capture mechanism for audio capture.
        In case document gets in the background, interrupt the audio track if the audio factory requires it.
        CoreAudioCaptureSourceIOS requires the audio source be interrupted if the app has not the right background mode.
        It also allows interrupting the audio capture based on a runtime flag.

        Add a runtime flag to control this.
        Internals API is used to set it for test purposes, off by default.
        For regular cases, the runtime flag is set through web preferences.

        Test: platform/ios/mediastream/audio-muted-in-background-tab.html

        * dom/Document.cpp:
        (WebCore::Document::notifyMediaCaptureOfVisibilityChanged):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::interruptAudioOnPageVisibilityChangeEnabled const):
        (WebCore::RuntimeEnabledFeatures::setInterruptAudioOnPageVisibilityChangeEnabled):
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::RealtimeMediaSourceCenter):
        (WebCore::RealtimeMediaSourceCenter::initializeShouldInterruptAudioOnPageVisibilityChange):
        (WebCore::RealtimeMediaSourceCenter::setCapturePageState):
        (WebCore::RealtimeMediaSourceCenter::visibilityDidChange):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        (WebCore::RealtimeMediaSourceCenter::shouldInterruptAudioOnPageVisibilityChange):
        * platform/mediastream/RealtimeMediaSourceFactory.h:
        (WebCore::AudioCaptureFactory::setAudioCapturePageState):
        (WebCore::VideoCaptureFactory::setVideoCapturePageState):
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        (WebCore::CoreAudioCaptureSourceFactory::setAudioCapturePageState):
        (WebCore::CoreAudioCaptureSourceFactoryIOS::shouldInterruptAudioOnPageVisibilityChange):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        (WebCore::RealtimeMediaSourceCenter::initializeShouldInterruptAudioOnPageVisibilityChange):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        (WebCore::Internals::setShouldInterruptAudioOnPageVisibilityChange):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-05-30  Saam Barati  <sbarati@apple.com>

        [WHLSL] Enforce variable lifetimes
        https://bugs.webkit.org/show_bug.cgi?id=195794
        <rdar://problem/50746293>

        Reviewed by Myles C. Maxfield.

        In WHLSL, each variable has global lifetime. So returning a pointer to a
        local variable is a legitimate and well specified thing to do. Each local
        variable has a unique place in memory. So, for example:
        
        ```
        thread int* ptr() { int local; return &local; }
        thread int* ptrPtr() { return ptr(); }
        ```
        
        In the above program, ptr() must always return the same value
        as ptrPtr(). So, the following would print "42":
        ```
        thread int* p = ptrPtr();
        *ptr() = 42;
        print(*p);
        ```
        
        To implement these semantics, this patch introduces a new pass which does the
        following transformations:
        - It notes every variable whose address is taken in the program.
        - Each such variable gets defined as a field in a struct.
        - Each function which is an entry point defines this struct.
        - Each non entry point takes a pointer to this struct as its final parameter.
        - Each call to a non-native function is rewritten to pass a pointer to the
          struct as the last call argument.
        - Each variable reference to "x", where "x" ends up in the struct, is
          modified to instead be "struct->x". We store to "struct->x" after declaring
          "x". If "x" is a function parameter, we store to "struct->x" as the first
          thing we do in the function body.

        Tests: webgpu/whlsl-ensure-proper-variable-lifetime-2.html
               webgpu/whlsl-ensure-proper-variable-lifetime-3.html
               webgpu/whlsl-ensure-proper-variable-lifetime.html
               webgpu/whlsl-return-local-variable.html

        * Modules/webgpu/WHLSL/AST/WHLSLAST.h:
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
        (WebCore::WHLSL::AST::Expression::Expression):
        (WebCore::WHLSL::AST::Expression::isGlobalVariableReference const):
        (WebCore::WHLSL::AST::Expression::origin const): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
        (WebCore::WHLSL::AST::FunctionDeclaration::origin):
        * Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h: Added.
        (WebCore::WHLSL::AST::GlobalVariableReference::GlobalVariableReference):
        (WebCore::WHLSL::AST::GlobalVariableReference::structField):
        (WebCore::WHLSL::AST::GlobalVariableReference::base):
        * Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
        (WebCore::WHLSL::AST::Statement::Statement):
        (WebCore::WHLSL::AST::Statement::isStatementList const):
        (WebCore::WHLSL::AST::Statement::isWhileLoop const):
        * Modules/webgpu/WHLSL/AST/WHLSLStatementList.h: Added.
        (WebCore::WHLSL::AST::StatementList::StatementList):
        (WebCore::WHLSL::AST::StatementList::statements):
        * Modules/webgpu/WHLSL/AST/WHLSLValue.h:
        (WebCore::WHLSL::AST::Value::Value):
        (WebCore::WHLSL::AST::Value::origin const):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
        (WebCore::WHLSL::AST::VariableDeclaration::VariableDeclaration):
        (WebCore::WHLSL::AST::VariableDeclaration::takeInitializer):
        (WebCore::WHLSL::AST::VariableDeclaration::origin const): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
        (WebCore::WHLSL::AST::VariableReference::wrap):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.h:
        (WebCore::WHLSL::dumpASTNode):
        (WebCore::WHLSL::dumpAST):
        (WebCore::WHLSL::toString): Deleted.
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        (WebCore::WHLSL::prepareShared):
        * Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp: Added.
        (WebCore::WHLSL::EscapedVariableCollector::takeEscapedVariables):
        (WebCore::WHLSL::anonymousToken):
        (WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
        (WebCore::WHLSL::PreserveLifetimes::makeStructVariableReference):
        (WebCore::WHLSL::preserveVariableLifetimes):
        * Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.h: Added.
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):
        * Modules/webgpu/WHLSL/WHLSLVisitor.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-05-30  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245890, 245887.

        Breaks internal builds.

        Reverted changeset:
        "Video playback in Safari should continue when CarPlay is plugged in"
        https://bugs.webkit.org/show_bug.cgi?id=198345
        https://trac.webkit.org/changeset/245887/webkit

2019-05-30  Dean Jackson  <dino@apple.com>

        Media documents on iPad are too wide in split screen
        https://bugs.webkit.org/show_bug.cgi?id=198405
        <rdar://problem/50974548>

        Reviewed by Tim Horton.

        Media documents on iPad had a minimum width of 700px. This
        was fine in full-screen, but didn't work when then window
        was smaller, such as split screen or a link preview.

        Tests: media/modern-media-controls/media-documents/media-document-video-ipad-sizing.html
               media/modern-media-controls/media-documents/media-document-video-iphone-sizing.html

        * Modules/modern-media-controls/controls/media-document.css: Add a media query to
        detect small windows.
        * Modules/modern-media-controls/media/media-document-controller.js:

2019-05-30  Andres Gonzalez  <andresg_22@apple.com>

        Inserting a newline in contenteditable causes two characters to be added instead of one
        https://bugs.webkit.org/show_bug.cgi?id=197894
        <rdar://problem/49700998>

        Reviewed by Wenson Hsieh and Chris Fleizach.

        There were two issues with inserting a newline character at the end of 
        a line that caused problems for accessibility:
        - the first '\n' inserted after text would result in two line breaks 
        inserted instead of one. createFragmentFromText in markup.cpp was 
        splitting the string "\n" into two empty strings and creating a <div> 
        and a <br> respectively. Then the emission code would emit a '\n' for 
        the empty div and another for the <br>.
        - the second problem is a consequence of <rdar://problem/5192593> and 
        the workaround is the change in editing.cpp in the function
        visiblePositionForIndexUsingCharacterIterator, similar to what is done
        in VisibleUnits.cpp for nextBoundary.
        The rest of the changes in this patch are accessibility changes to 
        execute the layout tests.

        Tests: accessibility/ios-simulator/set-selected-text-range-after-newline.html
               accessibility/set-selected-text-range-after-newline.html

        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::setSelectedTextRange):
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper stringForRange:]):
        (-[WebAccessibilityObjectWrapper _accessibilitySelectedTextRange]):
        (-[WebAccessibilityObjectWrapper accessibilityReplaceRange:withText:]):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        * editing/Editing.cpp:
        (WebCore::visiblePositionForIndexUsingCharacterIterator):
        * editing/markup.cpp:
        (WebCore::createFragmentFromText):

2019-05-30  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Vertex Buffers/Input State API updates
        https://bugs.webkit.org/show_bug.cgi?id=194258
        <rdar://problem/47806127>

        Reviewed by Myles C. Maxfield.

        The vertex buffer attributes model for GPURenderPipelines in the WebGPU API has been updated.
        Update our implementation to match.

        No new tests. Existing tests updated to match new behavior.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/webgpu/GPUVertexAttributeDescriptor.idl:
        * Modules/webgpu/GPUVertexBufferDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/GPUInputStateDescriptor.idl.
        * Modules/webgpu/GPUVertexInputDescriptor.idl:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h:
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexBufferDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUInputStateDescriptor.h.
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetVertexInput): Added. Populate Metal and WHLSL pipeline descriptors with vertex attribute metadata.
        (WebCore::trySetColorStates): Added. Populate Metal and WHLSL pipeline descriptors with color attachment metadata.
        (WebCore::convertLayout): Moved.
        (WebCore::trySetMetalFunctions): Moved.
        (WebCore::trySetFunctions): Added. WHLSL compilation to Metal SL happens here, then MSL functions are set on pipeline descriptor.
        (WebCore::convertRenderPipelineDescriptor): Repurposed. Convert a GPURenderPipelineDescriptor to Metal and WHLSL versions.
        (WebCore::tryCreateMtlRenderPipelineState):
        (WebCore::GPURenderPipeline::tryCreate):
        (WebCore::trySetMetalFunctionsForPipelineDescriptor): Deleted.
        (WebCore::trySetWHLSLFunctionsForPipelineDescriptor): Deleted.
        (WebCore::trySetFunctionsForPipelineDescriptor): Deleted.
        (WebCore::trySetInputStateForPipelineDescriptor): Deleted.
        (WebCore::setColorStatesForColorAttachmentArray): Deleted.

2019-05-30  Zalan Bujtas  <zalan@apple.com>

        [iOS] Do not linkify telephone numbers inside <a> elements.
        https://bugs.webkit.org/show_bug.cgi?id=198378

        Reviewed by Chris Dumez.

        Phone number linkifying mutates the DOM in a potentially unexpected way triggering different kinds of failures with JS, CSS selectors etc.
        This patch tightens the linkifying rule so that content inside an <a> element won't get linkified even when the <a> has no valid href attribute.

        Test: fast/dom/linkify-phone-numbers.html

        * html/parser/HTMLTreeBuilder.cpp:
        (WebCore::disallowTelephoneNumberParsing):

2019-05-30  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r245883.

        Caused 6 webgpu/ layout test failures.

        Reverted changeset:

        "[WHLSL] Parsing and lexing the standard library is slow"
        https://bugs.webkit.org/show_bug.cgi?id=192890
        https://trac.webkit.org/changeset/245883

2019-05-30  Simon Fraser  <simon.fraser@apple.com>

        Move some HistoricalVelocityData code into the cpp file
        https://bugs.webkit.org/show_bug.cgi?id=198353

        Reviewed by Tim Horton.
        
        Now that we have VelocityData.cpp put the non-trivial HistoricalVelocityData::velocityForNewData()
        into it. append() can become a lambda function.

        * platform/graphics/VelocityData.cpp:
        (WebCore::HistoricalVelocityData::velocityForNewData):
        * platform/graphics/VelocityData.h:
        (WebCore::HistoricalVelocityData::velocityForNewData): Deleted.
        (WebCore::HistoricalVelocityData::append): Deleted.

2019-05-30  Truitt Savell  <tsavell@apple.com>

        Fix the iOS build after r245887
        https://bugs.webkit.org/show_bug.cgi?id=198345

        Unreviewed build fix.

        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::updateCarPlayIsConnected):

2019-05-30  Jer Noble  <jer.noble@apple.com>

        ASSERTION FAILED: m_scriptExecutionContext under WebCore::AudioContext::isPlayingAudioDidChange()
        https://bugs.webkit.org/show_bug.cgi?id=181597
        <rdar://problem/36474088>

        Reviewed by Eric Carlson.

        Because document() is usually null-checked before using (and we can add null-checks where missing),
        there's no good reason to debug-assert that m_scriptExecutionContext is non-null before downcast<>ing
        to Document*.

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::constructCommon):
        (WebCore::AudioContext::stop):
        (WebCore::AudioContext::document const):
        (WebCore::AudioContext::visibilityStateChanged):
        (WebCore::AudioContext::willBeginPlayback):
        (WebCore::AudioContext::willPausePlayback):
        (WebCore::AudioContext::pageMutedStateDidChange):

2019-05-30  Jer Noble  <jer.noble@apple.com>

        Video playback in Safari should continue when CarPlay is plugged in
        https://bugs.webkit.org/show_bug.cgi?id=198345
        <rdar://problem/45505750>

        Reviewed by Eric Carlson.

        Test: media/video-isplayingtoautomotiveheadunit.html

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::setIsPlayingToAutomotiveHeadUnit):
        * platform/audio/PlatformMediaSessionManager.h:
        (WebCore::PlatformMediaSessionManager::isPlayingToAutomotiveHeadUnit const):
        * platform/audio/ios/MediaSessionManagerIOS.h:
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::MediaSessionManageriOS):
        (WebCore::MediaSessionManageriOS::carPlayServerDied):
        (WebCore::MediaSessionManageriOS::updateCarPlayIsConnected):
        (-[WebMediaSessionHelper initWithCallback:]):
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
        (-[WebMediaSessionHelper interruption:]):
        (-[WebMediaSessionHelper applicationWillEnterForeground:]):
        (-[WebMediaSessionHelper applicationDidBecomeActive:]):
        (-[WebMediaSessionHelper applicationWillResignActive:]):
        (-[WebMediaSessionHelper wirelessRoutesAvailableDidChange:]):
        (-[WebMediaSessionHelper applicationDidEnterBackground:]):
        (-[WebMediaSessionHelper carPlayServerDied:]):
        (-[WebMediaSessionHelper carPlayIsConnectedDidChange:]):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        (WebCore::Internals::setIsPlayingToAutomotiveHeadUnit):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-05-29  Robin Morisset  <rmorisset@apple.com>

        [WHLSL] Parsing and lexing the standard library is slow
        https://bugs.webkit.org/show_bug.cgi?id=192890
        <rdar://problem/50746335>

        Reviewed by Myles Maxfield.

        The main idea is to avoid backtracking by instead peeking at the next token (and occasionally at the one after that).
        This implies a few things:
        - We can replace the stack of tokens by a trivial ring buffer of size 2 (holding the next token and the one after, or WTF::nullopt if we are at the end of the file).
        - We now have "completeFooExpression" functions, to avoid having to reparse the prefix of some expression, if we find half-way through what it is.

        I also fixed the following parser bug:
        - https://bugs.webkit.org/show_bug.cgi?id=198305 [WHLSL] Multiple variables with initializers in a declaration statement crashes the compiler
            which was due to a mistake I made in the grammar

        Finally I added two new macros: CONSUME_TYPE and PARSE to eliminate about 500 lines of error propagation boilerplate.

        There are still lots of ways of improving the parser and lexer, such as:
        - finishing the conversion of tokens in the lexer, not bothering with allocating string views
        - make two special tokens Invalid and EOF, to remove the overhead of Optional
        - make peekTypes and consumeTypes use templates to avoid constructing a Vector and calling find on it.
        - Turn the entire lexer into a proper automata, not going through the same characters again and again (this is certainly the largest win by far)
        - Remove the last few pieces of backtracking from the parser.

        The current patch is already enough to make parsing the full standard library (something like 85k lines) approximately 260ms.
        This is still longer than I would like, but nowhere near the bottleneck any longer because of some other parts of the compiler.

        * Modules/webgpu/WHLSL/WHLSLLexer.h:
        (WebCore::WHLSL::Lexer::Lexer):
        (WebCore::WHLSL::Lexer::consumeToken):
        (WebCore::WHLSL::Lexer::peek):
        (WebCore::WHLSL::Lexer::peekFurther):
        (WebCore::WHLSL::Lexer::state const):
        (WebCore::WHLSL::Lexer::setState):
        (WebCore::WHLSL::Lexer::unconsumeToken): Deleted.
        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parse):
        (WebCore::WHLSL::Parser::peek):
        (WebCore::WHLSL::Parser::peekTypes):
        (WebCore::WHLSL::Parser::tryType):
        (WebCore::WHLSL::Parser::tryTypes):
        (WebCore::WHLSL::Parser::consumeTypes):
        (WebCore::WHLSL::Parser::parseConstantExpression):
        (WebCore::WHLSL::Parser::parseTypeArgument):
        (WebCore::WHLSL::Parser::parseTypeArguments):
        (WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
        (WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
        (WebCore::WHLSL::Parser::parseType):
        (WebCore::WHLSL::Parser::parseTypeDefinition):
        (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::parseComputeFunctionDeclaration):
        (WebCore::WHLSL::Parser::parseVertexFragmentFunctionDeclaration):
        (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::parseExpression):
        (WebCore::WHLSL::Parser::parseTernaryConditional):
        (WebCore::WHLSL::Parser::completeTernaryConditional):
        (WebCore::WHLSL::Parser::parseAssignment):
        (WebCore::WHLSL::Parser::completeAssignment):
        (WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
        (WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
        (WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
        (WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
        (WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
        (WebCore::WHLSL::Parser::parsePossibleShift):
        (WebCore::WHLSL::Parser::completePossibleShift):
        (WebCore::WHLSL::Parser::parsePossibleAdd):
        (WebCore::WHLSL::Parser::completePossibleAdd):
        (WebCore::WHLSL::Parser::parsePossibleMultiply):
        (WebCore::WHLSL::Parser::completePossibleMultiply):
        (WebCore::WHLSL::Parser::parsePossiblePrefix):
        (WebCore::WHLSL::Parser::parsePossibleSuffix):
        (WebCore::WHLSL::Parser::parseCallExpression):
        (WebCore::WHLSL::Parser::parseTerm):
        (WebCore::WHLSL::Parser::parseAddressSpaceType): Deleted.
        (WebCore::WHLSL::Parser::parseNonAddressSpaceType): Deleted.
        (WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration): Deleted.
        (WebCore::WHLSL::Parser::parseEffectfulPrefix): Deleted.
        (WebCore::WHLSL::Parser::parseEffectfulSuffix): Deleted.
        * Modules/webgpu/WHLSL/WHLSLParser.h:
        (WebCore::WHLSL::Parser::Error::dump const):

2019-05-29  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, update WebAuthN to "Supported In Preview"

        * features.json:

2019-05-29  Don Olmstead  <don.olmstead@sony.com>

        Remove ENABLE definitions from WebKit config files
        https://bugs.webkit.org/show_bug.cgi?id=197858

        Reviewed by Simon Fraser.

        Sync FeatureDefines.xcconfig.

        * Configurations/FeatureDefines.xcconfig:

2019-05-29  Youenn Fablet  <youenn@apple.com>

        Reestablish WebSWClientConnection in case of network process crash
        https://bugs.webkit.org/show_bug.cgi?id=198333

        Reviewed by Alex Christensen.

        Refactor DocumentLoader to no longer take a ref to the SWClientConnection.
        Instead, store the sessionID and get the SWClientConnection from it.
        Remove unused code from ServiceWorkerContainer.

        Test: http/wpt/service-workers/service-worker-networkprocess-crash.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
        (WebCore::DocumentLoader::unregisterTemporaryServiceWorkerClient):
        * loader/DocumentLoader.h:
        * workers/service/ServiceWorkerContainer.cpp:
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerJobClient.h:

2019-05-29  David Kilzer  <ddkilzer@apple.com>

        IndexedDatabase Server thread in com.apple.WebKit.Networking process leaks objects into an autoreleasePool that's never cleared
        <https://webkit.org/b/198346>
        <rdar://problem/50895658>

        Reviewed by Brent Fulgham.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::IDBServer):
        - Pass AutodrainedPoolForRunLoop::Use when creating
          CrossThreadTaskHandler to fix the bug.

2019-05-29  Geoffrey Garen  <ggaren@apple.com>

        WeakPtr breaks vtables when upcasting to base classes
        https://bugs.webkit.org/show_bug.cgi?id=188799

        Reviewed by Youenn Fablet.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::MediaKeySession):
        * Modules/encryptedmedia/MediaKeySession.h: Adopted modern WeakPtr APIs.
        Removed redundant WeakPtrFactory.

        * css/CSSFontFace.cpp:
        (WebCore::CSSFontFace::existingWrapper):
        * css/CSSFontFace.h: Moved functions out of line to avoid #include
        explosion for .get().

        * dom/ContainerNode.h:
        * dom/Document.h:
        * dom/Element.h: Moved CanMakeWeakPtr to ContainerNode because all
        subclasses except for DocumentFragment were already so, and we have
        code that uses WeakPtr<ContainerNode>, which, now that WeakPtr is
        type-safe, is awkward to do when ContainerNode isn't CanMakeWeakPtr.

        * dom/FullscreenManager.cpp:
        (WebCore::FullscreenManager::fullscreenRenderer const):
        * dom/FullscreenManager.h:
        (WebCore::FullscreenManager::fullscreenRenderer const): Deleted.
        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::form const):
        * html/FormAssociatedElement.h:
        (WebCore::FormAssociatedElement::form const): Deleted. Moved functions
        out of line to avoid #include explosion for .get().

        * html/HTMLMediaElement.h: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResourceLoader::requestResource): Removed redundant .get().

        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::window const):
        * page/DOMWindowProperty.h:
        (WebCore::DOMWindowProperty::window const): Deleted.
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::subtreeLayoutRoot const):
        * page/FrameViewLayoutContext.h:
        (WebCore::FrameViewLayoutContext::subtreeLayoutRoot const): Deleted.
        * page/UndoItem.cpp:
        (WebCore::UndoItem::undoManager const):
        * page/UndoItem.h:
        (WebCore::UndoItem::undoManager const): Deleted. Moved functions out of
        line to avoid #include explosion for .get().

        * platform/ScrollView.h: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        * platform/Widget.cpp:
        (WebCore::Widget::parent const):
        * platform/Widget.h:
        (WebCore::Widget::parent const): Deleted. Moved functions out of line to avoid #include
        explosion for .get().

        * platform/encryptedmedia/CDMInstanceSession.h: Made
        CDMInstanceSessionClient CanMakeWeakPtr because we use WeakPtr<CDMInstanceSessionClient>.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        CanMakeWeakPtr is inherited now.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmSession const): Deleted.
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::createWeakPtr): Deleted.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::CMTimebaseEffectiveRateChangedCallback):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmSession const):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
        (WebCore::SourceBufferPrivateAVFObjC::flushVideo):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        (WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples):
        (WebCore::SourceBufferPrivateAVFObjC::setVideoLayer):
        (WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession): Modernized WeakPtr API usage.

        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::multiColumnFlowSlowCase const):
        * rendering/RenderBlockFlow.h:
        (WebCore::RenderBlockFlow::multiColumnFlow const):
        * rendering/RenderMultiColumnFlow.cpp:
        (WebCore::RenderMultiColumnFlow::findColumnSpannerPlaceholder const):
        * rendering/RenderMultiColumnFlow.h:
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::header const):
        (WebCore::RenderTable::footer const):
        (WebCore::RenderTable::firstBody const):
        (WebCore::RenderTable::topSection const):
        * rendering/RenderTable.h:
        (WebCore::RenderTable::header const): Deleted.
        (WebCore::RenderTable::footer const): Deleted.
        (WebCore::RenderTable::firstBody const): Deleted.
        (WebCore::RenderTable::topSection const): Deleted. Moved functions out
        of line to avoid #include explosion for .get().

2019-05-29  Antoine Quint  <graouts@apple.com>

        [Pointer Events] toElement and fromElement should be null
        https://bugs.webkit.org/show_bug.cgi?id=198338

        Reviewed by Dean Jackson.

        * dom/MouseEvent.h:
        * dom/PointerEvent.h:

2019-05-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245857.

        Breaks internal builds.

        Reverted changeset:

        "WeakPtr breaks vtables when upcasting to base classes"
        https://bugs.webkit.org/show_bug.cgi?id=188799
        https://trac.webkit.org/changeset/245857

2019-05-29  Keith Rollin  <krollin@apple.com>

        Fix builds that don't use makeWindowFromView
        https://bugs.webkit.org/show_bug.cgi?id=198342
        <rdar://problem/51228563>

        Reviewed by Wenson Hsieh.

        In some configurations, VideoFullscreenInterfaceAVKit.mm declares but
        does not use makeWindowFromView. Fix by conditionalizing the the
        declaration on the same symbol as point where it's used.

        No new tests -- no new functionality.

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:

2019-05-28  Geoffrey Garen  <ggaren@apple.com>

        WeakPtr breaks vtables when upcasting to base classes
        https://bugs.webkit.org/show_bug.cgi?id=188799

        Reviewed by Youenn Fablet.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::MediaKeySession):
        * Modules/encryptedmedia/MediaKeySession.h: Adopted modern WeakPtr APIs.
        Removed redundant WeakPtrFactory.

        * css/CSSFontFace.cpp:
        (WebCore::CSSFontFace::existingWrapper):
        * css/CSSFontFace.h: Moved functions out of line to avoid #include
        explosion for .get().

        * dom/ContainerNode.h:
        * dom/Document.h:
        * dom/Element.h: Moved CanMakeWeakPtr to ContainerNode because all
        subclasses except for DocumentFragment were already so, and we have
        code that uses WeakPtr<ContainerNode>, which, now that WeakPtr is
        type-safe, is awkward to do when ContainerNode isn't CanMakeWeakPtr.

        * dom/FullscreenManager.cpp:
        (WebCore::FullscreenManager::fullscreenRenderer const):
        * dom/FullscreenManager.h:
        (WebCore::FullscreenManager::fullscreenRenderer const): Deleted.
        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::form const):
        * html/FormAssociatedElement.h:
        (WebCore::FormAssociatedElement::form const): Deleted. Moved functions
        out of line to avoid #include explosion for .get().

        * html/HTMLMediaElement.h: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResourceLoader::requestResource): Removed redundant .get().

        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::window const):
        * page/DOMWindowProperty.h:
        (WebCore::DOMWindowProperty::window const): Deleted.
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::subtreeLayoutRoot const):
        * page/FrameViewLayoutContext.h:
        (WebCore::FrameViewLayoutContext::subtreeLayoutRoot const): Deleted.
        * page/UndoItem.cpp:
        (WebCore::UndoItem::undoManager const):
        * page/UndoItem.h:
        (WebCore::UndoItem::undoManager const): Deleted. Moved functions out of
        line to avoid #include explosion for .get().

        * platform/ScrollView.h: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        * platform/Widget.cpp:
        (WebCore::Widget::parent const):
        * platform/Widget.h:
        (WebCore::Widget::parent const): Deleted. Moved functions out of line to avoid #include
        explosion for .get().

        * platform/encryptedmedia/CDMInstanceSession.h: Made
        CDMInstanceSessionClient CanMakeWeakPtr because we use WeakPtr<CDMInstanceSessionClient>.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        CanMakeWeakPtr is inherited now.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmSession const): Deleted.
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::createWeakPtr): Deleted.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::CMTimebaseEffectiveRateChangedCallback):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmSession const):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
        (WebCore::SourceBufferPrivateAVFObjC::flushVideo):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        (WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples):
        (WebCore::SourceBufferPrivateAVFObjC::setVideoLayer):
        (WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession): Modernized WeakPtr API usage.

        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::multiColumnFlowSlowCase const):
        * rendering/RenderBlockFlow.h:
        (WebCore::RenderBlockFlow::multiColumnFlow const):
        * rendering/RenderMultiColumnFlow.cpp:
        (WebCore::RenderMultiColumnFlow::findColumnSpannerPlaceholder const):
        * rendering/RenderMultiColumnFlow.h:
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::header const):
        (WebCore::RenderTable::footer const):
        (WebCore::RenderTable::firstBody const):
        (WebCore::RenderTable::topSection const):
        * rendering/RenderTable.h:
        (WebCore::RenderTable::header const): Deleted.
        (WebCore::RenderTable::footer const): Deleted.
        (WebCore::RenderTable::firstBody const): Deleted.
        (WebCore::RenderTable::topSection const): Deleted. Moved functions out
        of line to avoid #include explosion for .get().

2019-05-29  Antti Koivisto  <antti@apple.com>

        Scrolling node ordering wrong when a layer has both positioning and fixed/sticky node
        https://bugs.webkit.org/show_bug.cgi?id=198329

        Reviewed by Darin Adler.

        Test: scrollingcoordinator/scrolling-tree/sticky-in-overflow.html

        With sticky positioning in non-stacking context overflow you currently get structure like

        FrameScrollingNode
          OverflowScrollingNode
          StickyNode
            PositionedNode

        where StickyNode and PositionedNode reference the same layer. Sticky doesn't get applied at all when the overflow moves.

        This patch reverses the order of sticky and positioned. It doesn't fix sticky positioning during scrolling yet,
        but it does make it less jumpy. It is a prerequisite for the full fix.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):

2019-05-29  Ludovico de Nittis  <ludovico.denittis@collabora.com>

        Prepend KEY_ to the last key alias in PlatformEventKeyboardGtk
        https://bugs.webkit.org/show_bug.cgi?id=198331

        Reviewed by Michael Catanzaro.

        No behavior change.

        With the commit
        https://bugs.webkit.org/show_bug.cgi?id=198326
        A gdk key slipped away from the renaming.

        * platform/gtk/PlatformKeyboardEventGtk.cpp:
        (WebCore::modifiersForGdkKeyEvent):

2019-05-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move Line class to a dedicated file
        https://bugs.webkit.org/show_bug.cgi?id=198332
        <rdar://problem/51221403>

        Reviewed by Antti Koivisto.

        An upcoming refactoring requires the Line class to be in a .h.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/displaytree/DisplayRun.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::initializeLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
        (WebCore::Layout::halfLeadingMetrics): Deleted.
        (WebCore::Layout::Line::availableWidth const): Deleted.
        (WebCore::Layout::Line::contentLogicalRight const): Deleted.
        (WebCore::Layout::Line::contentLogicalWidth const): Deleted.
        (WebCore::Layout::Line::logicalTop const): Deleted.
        (WebCore::Layout::Line::logicalLeft const): Deleted.
        (WebCore::Layout::Line::logicalRight const): Deleted.
        (WebCore::Layout::Line::logicalBottom const): Deleted.
        (WebCore::Layout::Line::logicalWidth const): Deleted.
        (WebCore::Layout::Line::logicalHeight const): Deleted.
        (WebCore::Layout::Line::LineItem::LineItem): Deleted.
        (WebCore::Layout::Line::Line): Deleted.
        (WebCore::Layout::Line::reset): Deleted.
        (WebCore::Layout::Line::close): Deleted.
        (WebCore::Layout::Line::removeTrailingTrimmableContent): Deleted.
        (WebCore::Layout::Line::moveLogicalLeft): Deleted.
        (WebCore::Layout::Line::moveLogicalRight): Deleted.
        (WebCore::Layout::isTrimmableContent): Deleted.
        (WebCore::Layout::Line::trailingTrimmableWidth const): Deleted.
        (WebCore::Layout::Line::hasContent const): Deleted.
        (WebCore::Layout::Line::appendNonBreakableSpace): Deleted.
        (WebCore::Layout::Line::appendInlineContainerStart): Deleted.
        (WebCore::Layout::Line::appendInlineContainerEnd): Deleted.
        (WebCore::Layout::Line::appendTextContent): Deleted.
        (WebCore::Layout::Line::appendNonReplacedInlineBox): Deleted.
        (WebCore::Layout::Line::appendReplacedInlineBox): Deleted.
        (WebCore::Layout::Line::appendHardLineBreak): Deleted.
        * layout/inlineformatting/InlineTextItem.h:
        * layout/inlineformatting/text/TextUtil.cpp:
        (WebCore::Layout::TextUtil::isTrimmableContent):
        * layout/inlineformatting/text/TextUtil.h:

2019-05-29  Ludovico de Nittis  <ludovico.denittis@collabora.com>

        PlatformEventKeyboardGtk still uses old key aliases
        https://bugs.webkit.org/show_bug.cgi?id=198326

        Reviewed by Carlos Garcia Campos.

        No behavior change.

        Use the new key names convention prepending "KEY_".

        * platform/gtk/PlatformKeyboardEventGtk.cpp:
        (WebCore::PlatformKeyboardEvent::keyIdentifierForGdkKeyCode):
        (WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode):
        (WebCore::PlatformKeyboardEvent::singleCharacterString):
        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

2019-05-28  Yacine Bandou  <yacine.bandou@softathome.com>

        [MSE][GStreamer] update the readyState correctly in MediaPlayerPrivateGStreamerMSE
        https://bugs.webkit.org/show_bug.cgi?id=197834

        Reviewed by Xabier Rodriguez-Calvar.

        The buffering state and the m_downloadFinished boolean aren't supported in the MSE case.
        When the readyState is already "HaveEnoughData", we don't want to revert it to "HaveFutureData",
        or else the MediaPlayer would send a "canplay" event instead of a "canplaythrough".

        Test: media/media-source/media-source-canplaythrough-event.html

        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):

2019-05-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] ASSERTION FAILED: !m_preparingToPlay in MediaPlayerPrivateMediaFoundation::prepareToPlay
        https://bugs.webkit.org/show_bug.cgi?id=190747

        Reviewed by Alex Christensen.

        HTMLMediaElement::prepareToPlay had a assertion ensuring that it
        was not called twice. However, it was called twice. The first from
        HTMLMediaElement::load, the second from
        MediaPlayerPrivateMediaFoundation::onTopologySet.

        prepareToPlay started loading. And, loading should be started
        after onTopologySet is called back.

        Covered by existing tests.

        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
        (WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet): Moved code from prepareToPlay.
        (WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay): Deleted and moved the code to onTopologySet.
        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h: Removed prepareToPlay declaration.

2019-05-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][MediaFoundation] Assertion failure in MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample
        https://bugs.webkit.org/show_bug.cgi?id=198290

        Reviewed by Per Arne Vollan.

        Covered by existing tests.

        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
        (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
        Call clear() of m_memSurface before assigning new value.

2019-05-28  Saam Barati  <sbarati@apple.com>

        [WHLSL] Type of dereference is the type of the thing we point to, not a pointer to that type
        https://bugs.webkit.org/show_bug.cgi?id=198321

        Reviewed by Myles C. Maxfield.

        Consider this program:
        ```
        thread int* x;
        *x = 42
        ```
        
        In the Checker, we were saying the type of "*x" was "int*" instead of "int".

        Test: webgpu/whlsl-dereference-pointer-should-type-check.html

        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        (WebCore::WHLSL::Checker::visit):

2019-05-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Respect NSItemProvider's registered types when dropping files that are loaded in-place
        https://bugs.webkit.org/show_bug.cgi?id=198315
        <rdar://problem/51183762>

        Reviewed by Tim Horton.

        Currently, logic in PasteboardIOS.mm and WebContentReaderCocoa.mm attempts to deduce the content type from the
        file path when dropping attachments on iOS. Instead, we should be plumbing the content type through to the
        reader.

        Test: WKAttachmentTestsIOS.InsertDroppedImageWithNonImageFileExtension

        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::typeForAttachmentElement):

        Add a helper method to determine which type to use in attachment elements. This makes the paste
        (attachmentForData) and drop (attachmentForFilePaths) behave the same way, with respect to the type attribute
        used to represent the attachment.

        (WebCore::attachmentForFilePath):

        Use the content type, if specified; otherwise, fall back to deducing it from the file path.

        (WebCore::attachmentForData):
        (WebCore::WebContentReader::readFilePath):
        * platform/Pasteboard.h:
        (WebCore::PasteboardWebContentReader::readFilePath):

        Pass the highest fidelity representation's content type to the web content reader.

        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readRespectingUTIFidelities):

2019-05-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Move idempotent text autosizing to StyleTreeResolver
        https://bugs.webkit.org/show_bug.cgi?id=197808
        <rdar://problem/50283983>

        Reviewed by Antti Koivisto.

        This patch migrates the idempotent text autosizing code to live inside style resolution. This is almost
        the same as the algorithm that uses the result of layout to calculate autosizing, but this version only
        operates on style (and thus doesn't require double layouts). Because it is being run in an environment
        with less information, autosizing is occurring in more places, so the curves have been adjusted to make
        autosizing not boost as much as the previous implementation did. The new algorithm is modelled after
        text-decorations-in-effect. I've claimed 4 of the unused bits in RenderStyle to contain the state of the
        autosizing algorithm. StyleResolver::adjustRenderStyle() is where the algorithm is implemented:
        - Look at the inherited bits
        - Interogate the element's RenderStyle
        - Compute new bits for the element, and set them in its RenderStyle
        - Based on the newly computed bits, determine whether we should increase the text size
        - If so, determine how much using the specified font size, and apply the result to the computed font size

        This works because StyleBuilderCustom::applyInheritFontSize() inherits from the specified font size, not
        the computed font size.

        This patch also will disable autosizing using the other methods (so there aren't two methods of autosizing
        fighting each other) and will honor text-size-adjust:none. However, it won't honor text-size-adjust:100%.
        If content says text-size-adjust:100%, we will disregard it and take this code path.

        Tests: fast/text-autosizing/ios/idempotentmode/css-exposure.html
               fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-skip.html
               fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html
               fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/StyleBuilderCustom.h:
        (WebCore::computeBaseSpecifiedFontSize):
        (WebCore::computeLineHeightMultiplierDueToFontSize):
        * css/StyleResolver.cpp:
        (WebCore::idempotentTextSize):
        (WebCore::hasTextChildren):
        (WebCore::StyleResolver::adjustRenderStyle):
        (WebCore::StyleResolver::checkForTextSizeAdjust):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::applyTextSizingIfNeeded):
        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::adjustComputedFontSizes):
        (WebCore::idempotentTextSize): Deleted.
        * rendering/RenderBlockFlow.h:
        * rendering/RenderElement.cpp:
        (WebCore::includeNonFixedHeight):
        (WebCore::RenderElement::adjustComputedFontSizesOnBlocks):
        (WebCore::RenderElement::resetTextAutosizing):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::RenderStyle):
        (WebCore::RenderStyle::autosizeStatus const):
        (WebCore::RenderStyle::setAutosizeStatus):
        * rendering/style/RenderStyle.h:
        * rendering/style/TextSizeAdjustment.cpp: Added.
        (WebCore::AutosizeStatus::AutosizeStatus):
        (WebCore::AutosizeStatus::contains const):
        (WebCore::AutosizeStatus::modifiedStatus const):
        (WebCore::AutosizeStatus::shouldSkipSubtree const):
        * rendering/style/TextSizeAdjustment.h:

2019-05-28  Simon Fraser  <simon.fraser@apple.com>

        Use scroll-velocity-based tile coverage for overflow:scroll
        https://bugs.webkit.org/show_bug.cgi?id=198294
        rdar://problem/48942184

        Reviewed by Tim Horton.

        Start using a velocity-based tile coverage computation on layers with Type::ScrolledContents,
        which is the content layers for overflow:scroll when they get big enough to get tiled.

        Move legacy macOS coverage code into adjustTileCoverageForDesktopPageScrolling() because
        I don't want to change its behavior in this patch. Use TileController::adjustTileCoverageRectForScrolling()
        for iOS and macOS overflow scrolling. Since only iOS page scrolling gets velocity data from the UI
        process, compute velocity in TileController using the visible rect top-left.
        
        For overflow scroll, we have to plumb horizontal and vertical coverage in from
        RenderLayerBacking.

        Tests: tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage.html
               tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage.html
               tiled-drawing/scrolling/overflow/overflow-tile-coverage.html

        * platform/graphics/TiledBacking.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::adjustCoverageRect const):
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::setVelocity):
        (WebCore::TileController::adjustTileCoverageRect):
        (WebCore::TileController::adjustTileCoverageForDesktopPageScrolling const):
        (WebCore::TileController::adjustTileCoverageWithScrollingVelocity const):
        (WebCore::TileController::adjustTileCoverageRectForScrolling):
        (WebCore::expandRectWithinRect): Deleted.
        (WebCore::TileController::adjustTileCoverageRect const): Deleted.
        (WebCore::TileController::adjustTileCoverageRectForScrolling const): Deleted.
        * platform/graphics/ca/TileController.h:
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::computePageTiledBackingCoverage):
        (WebCore::computeOverflowTiledBackingCoverage):
        (WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
        (WebCore::RenderLayerBacking::updateGeometry):

2019-05-28  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r245475.

        Newly imported test is flaky. Features need flags.

        Reverted changeset:

        "Implement imagesrcset and imagesizes attributes on link
        rel=preload"
        https://bugs.webkit.org/show_bug.cgi?id=192950
        https://trac.webkit.org/changeset/245475

2019-05-28  Brent Fulgham  <bfulgham@apple.com>

        Protect frames during style and layout changes
        https://bugs.webkit.org/show_bug.cgi?id=198047
        <rdar://problem/50954082>

        Reviewed by Zalan Bujtas.

        Be more careful about the scope and lifetime of objects that participate in layout or
        style updates. If a method decides a layout or style update is needed, it needs to
        confirm that the elements it was operating on are still valid and needed in the
        current operation.

        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::getOrCreate):
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::accessibilityHitTest const):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSComputedStyleDeclaration.h:
        * css/SVGCSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::svgPropertyValue):
        * dom/Document.cpp:
        (WebCore::Document::setFocusedElement):
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::insertTextRunWithoutNewlines):
        (WebCore::TypingCommand::insertLineBreak):
        (WebCore::TypingCommand::insertParagraphSeparator):
        (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::setDictationPhrasesAsChildOfElement):
        * html/HTMLLabelElement.cpp:
        (WebCore::HTMLLabelElement::focus):
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::appendFormData):
        * html/ImageDocument.cpp:
        (WebCore::ImageDocument::imageClicked):
        * html/ValidationMessage.cpp:
        (WebCore::ValidationMessage::buildBubbleTree):
        * page/FrameView.cpp:
        (WebCore::FrameView::autoSizeIfEnabled):
        (WebCore::FrameView::trackedRepaintRectsAsText const):
        * page/PrintContext.cpp:
        (WebCore::PrintContext::pageProperty):
        (WebCore::PrintContext::numberOfPages):
        (WebCore::PrintContext::spoolAllPagesWithBoundaries):

2019-05-28  Antti Koivisto  <antti@apple.com>

        [async scrolling] Fixed positioning inside stacking context overflow scroll is jumpy
        https://bugs.webkit.org/show_bug.cgi?id=198292

        Reviewed by Darin Adler.

        Tests: scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll-2.html
               scrollingcoordinator/ios/fixed-in-stacking-context-overflow-scroll.html

        We were computing delta from the layout scroll position in ScrollingTree::notifyRelatedNodesAfterScrollPositionChange
        based on the passed in node only. If any other node had deltas they were not taken into account at all. This would occur
        frequently since the function is always invoked for the root node after layer tree commit.

        Fix by moving the delta computation (and fetching layoutViewport) to ScrollingTreeFixedNode.

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::applyLayerPositions):

        No need to pass offset and layoutViewport around anymore.

        (WebCore::ScrollingTree::applyLayerPositionsRecursive):
        (WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):

        Remove the offset and layoutViewport computations.

        (WebCore::ScrollingTree::notifyRelatedNodesRecursive):
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::applyLayerPositions):
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::relatedNodeScrollPositionDidChange):
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::applyLayerPositions):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::applyLayerPositions):

        Compute them here instead, always taking all overflow scrollers up to the closest frame into account.

        * page/scrolling/cocoa/ScrollingTreePositionedNode.h:
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
        (WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h:
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::applyLayerPositions):

2019-05-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][Verification] Add additional inline and block checks
        https://bugs.webkit.org/show_bug.cgi?id=198252
        <rdar://problem/51140687>

        Reviewed by Antti Koivisto.

        Now we also test the geometry of the blocks with inline formatting contexts.

        * layout/Verification.cpp:
        (WebCore::Layout::checkForMatchingTextRuns):
        (WebCore::Layout::verifyAndOutputSubtree):

2019-05-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Decouple line layout and processing inline runs.
        https://bugs.webkit.org/show_bug.cgi?id=198282
        <rdar://problem/51167954>

        Reviewed by Antti Koivisto.

        This is in preparation for using "createInlineRunsForLine" logic when computing preferred width.

        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::UncommittedContent::size const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::createInlineRunsForLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::processInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const): Deleted.
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::addInlineItem):
        * layout/inlineformatting/InlineTextItem.cpp:
        (WebCore::Layout::InlineTextItem::createAndAppendTextItems):

2019-05-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move intrinsic width computation from InlineFormattingContext to LineLayout
        https://bugs.webkit.org/show_bug.cgi?id=198258

        Reviewed by Antti Koivisto.

        This is in preparation for sharing even more code between line layout and preferred width computation. 

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::initializeLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const):

2019-05-28  Zalan Bujtas  <zalan@apple.com>

        [LFC[IFC] Ignore the initial strut's height when the line does not have any content.
        https://bugs.webkit.org/show_bug.cgi?id=198268
        <rdar://problem/51150057>

        Reviewed by Antti Koivisto.

        The strut (https://www.w3.org/TR/CSS22/visudet.html#leading) defines the initial logical height
        for the line. This height should be ignored though when the line does not have any content. 

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const):

2019-05-27  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Check that capturing data managed by the PointerCaptureController gets cleared upon navigation
        https://bugs.webkit.org/show_bug.cgi?id=198191

        Reviewed by Dean Jackson.

        When the document of the page's main frame changes, make sure we clear all of the data accumulated for the previous document.
        I don't think this particular change is testable as none of the data contained in the PointerIdToCapturingDataMap maintained by
        the PointerCaptureController contains any data that could be inspected by the page due to other fixes landed to fix wkb.ug/198129,
        but I've checked that removing those fixes and using this patch correctly fixes that bug.

        * page/Page.cpp:
        (WebCore::Page::didChangeMainDocument):
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::PointerCaptureController):
        (WebCore::PointerCaptureController::reset):
        * page/PointerCaptureController.h:

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor
        https://bugs.webkit.org/show_bug.cgi?id=197944

        Reviewed by Michael Catanzaro.

        * PlatformGTK.cmake:
        * SourcesGTK.txt:
        * platform/graphics/GLContext.cpp:
        (WebCore::GLContext::createContextForWindow): Check current display is X11 before trying to create a GLX context.
        * platform/graphics/PlatformDisplay.cpp:
        (WebCore::PlatformDisplay::createPlatformDisplay): Use USE(WPE_RENDERER) instead of USE(LIBWPE).
        * platform/graphics/PlatformDisplay.h:
        * platform/graphics/egl/GLContextEGL.cpp:
        (WebCore::GLContextEGL::createWindowContext): Use USE(WPE_RENDERER) instead of PLATFORM(WPE).
        (WebCore::GLContextEGL::createContext): Ditto.
        (WebCore::GLContextEGL::createSharingContext): Ditto.
        (WebCore::GLContextEGL::~GLContextEGL): Ditto.
        * platform/graphics/egl/GLContextEGL.h:
        * platform/graphics/egl/GLContextEGLLibWPE.cpp:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): Ditto.
        * platform/graphics/libwpe/PlatformDisplayLibWPE.cpp:
        (WebCore::PlatformDisplayLibWPE::PlatformDisplayLibWPE): In GTK port set the display as the shared one for compositing.
        * platform/graphics/libwpe/PlatformDisplayLibWPE.h:

2019-05-27  Takashi Komori  <Takashi.Komori@sony.com>

        [CURL] Fix crashing SocketStreamHandle.
        https://bugs.webkit.org/show_bug.cgi?id=197873

        Reviewed by Fujii Hironori.

        When NetworkSocketStream was destructed SocketStreamHandleImple::platformClose was called wrongly times.
        This is because closed state is not set.

        Test: http/tests/websocket/tests/hybi/workers/close.html

        * platform/network/curl/SocketStreamHandleImpl.h:
        * platform/network/curl/SocketStreamHandleImplCurl.cpp:
        (WebCore::SocketStreamHandleImpl::platformSendInternal):
        (WebCore::SocketStreamHandleImpl::platformClose):
        (WebCore::SocketStreamHandleImpl::threadEntryPoint):
        (WebCore::SocketStreamHandleImpl::handleError):
        (WebCore::SocketStreamHandleImpl::callOnWorkerThread):
        (WebCore::SocketStreamHandleImpl::executeTasks):

2019-05-27  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Preserve repeat() notation when serializing declared values
        https://bugs.webkit.org/show_bug.cgi?id=197840

        Reviewed by Manuel Rego Casasnovas.

        Tests: fast/css-grid-layout/grid-element-auto-repeat-get-set.html
               fast/css-grid-layout/grid-repeat-calc.html
               fast/css-grid-layout/named-grid-line-get-set.html
               imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-002.html

        Before this change, a repeat() notation with an integral number of
        repetitions was expanded at parse time. This was observable when reading
        declared values using JS APIs.

        This patch makes the parser preserve that notation, like it was already
        happening when the number of repetitions was automatic and not integral.

        The resolved value in getComputedStyle() will still be expanded, though,
        as required by the spec.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSGridIntegerRepeatValue.cpp: Added.
        (WebCore::CSSGridIntegerRepeatValue::customCSSText const):
        (WebCore::CSSGridIntegerRepeatValue::equals const):
        * css/CSSGridIntegerRepeatValue.h: Added.
        * css/CSSValue.cpp:
        (WebCore::CSSValue::equals const):
        (WebCore::CSSValue::cssText const):
        (WebCore::CSSValue::destroy):
        * css/CSSValue.h:
        (WebCore::CSSValue::isGridIntegerRepeatValue const):
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::createGridTrackList):
        (WebCore::StyleBuilderConverter::convertGridTrackSizeList):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeGridTrackRepeatFunction):

2019-05-27  Chris Dumez  <cdumez@apple.com>

        Use a strongly-typed identifier for pages
        https://bugs.webkit.org/show_bug.cgi?id=198206

        Reviewed by Youenn Fablet.

        * WebCore/*:

2019-05-26  Simon Fraser  <simon.fraser@apple.com>

        Move GraphicsLayerCA::adjustTiledLayerVisibleRect() to TileController
        https://bugs.webkit.org/show_bug.cgi?id=198266

        Reviewed by Zalan Bujtas.

        GraphicsLayerCA::adjustTiledLayerVisibleRect() was computing tile coverage for a
        TiledBacking, just like TileController::adjustTileCoverageRect(), so move the code
        into TileController as a first step to unifying more of this code. It's currently
        used for tiled compositing layers, including overflow:scroll, and tiled layers
        whose coverage may be affected by animations, so it's general-purpose.

        TileController::adjustTileCoverageRect() is used for scrollable things, so rename
        it to adjustTileCoverageRectForScrolling().

        No behavior change.

        * platform/graphics/TiledBacking.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::adjustCoverageRect const):
        (WebCore::GraphicsLayerCA::adjustTiledLayerVisibleRect): Deleted.
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::adjustTileCoverageRect const):
        (WebCore::TileController::adjustTileCoverageRectForScrolling const):
        * platform/graphics/ca/TileController.h:

2019-05-27  Simon Fraser  <simon.fraser@apple.com>

        Fix Apple Internal builds after r245788.

        * platform/PlatformScreen.h:
        (WebCore::screenHasTouchDevice):
        (WebCore::screenIsTouchPrimaryInputDevice):

2019-05-27  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Ignore collapsed runs when setting the width on the associated display boxes.
        https://bugs.webkit.org/show_bug.cgi?id=198260
        <rdar://problem/51145704>

        Reviewed by Antti Koivisto.

        Collapsed runs don't contribute to the logical width of their containers.

        Covered by existing tests.

        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const):

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK distcheck

        Move mac headers to platform specific makefile.

        * Headers.cmake:
        * PlatformMac.cmake:

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Touch support is reported even when the device doesn't have a touch screen
        https://bugs.webkit.org/show_bug.cgi?id=139681

        Reviewed by Michael Catanzaro.

        Add screenHasTouchDevice() and screenIsTouchPrimaryInputDevice() to PlatformScreen and use it to decide whether
        to expose touch events functionality or not.

        * bindings/js/WebCoreBuiltinNames.h:
        * css/MediaQueryEvaluator.cpp:
        (WebCore::hoverEvaluate): Use screenIsTouchPrimaryInputDevice() when touch events are enabled at build time.
        (WebCore::anyHoverEvaluate): Use screenHasTouchDevice() when touch events are enabled at build time.
        (WebCore::pointerEvaluate): Use screenIsTouchPrimaryInputDevice() when touch events are enabled at build time.
        (WebCore::anyPointerEvaluate): Use screenHasTouchDevice() when touch events are enabled at build time.
        * dom/GlobalEventHandlers.idl: Make touch event attributes enabled at runtime.
        * page/RuntimeEnabledFeatures.cpp:
        (WebCore::RuntimeEnabledFeatures::touchEventsEnabled const): Return whether touch events are enabled.
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setTouchEventsEnabled): Force touch events to be enabled or disabled.
        * platform/PlatformScreen.h:
        (WebCore::screenHasTouchDevice): Just return true when touch events are enabled at build time for non-gtk ports.
        (WebCore::screenIsTouchPrimaryInputDevice): Ditto.
        * platform/gtk/PlatformScreenGtk.cpp:
        (WebCore::screenHasTouchDevice):
        (WebCore::screenIsTouchPrimaryInputDevice):
        (WebCore::isTouchDevice):
        (WebCore::deviceAddedCallback):
        (WebCore::deviceRemovedCallback):

2019-05-26  Simon Fraser  <simon.fraser@apple.com>

        Move VelocityData to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=198261

        Reviewed by Antti Koivisto.

        Move VelocityData and HistoricalVelocityData to WebCore for future use in overflow scroll.
        
        VisibleContentRectUpdateInfo can now store a VelocityData (its timestamp is used as
        the timetamp for the entire update).

        No behavior change.

        * Headers.cmake:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/FrameView.cpp:
        (WebCore::FrameView::setScrollVelocity):
        * page/FrameView.h:
        * platform/graphics/TiledBacking.h:
        (WebCore::VelocityData::VelocityData): Deleted.
        (WebCore::VelocityData::velocityOrScaleIsChanging const): Deleted.
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::adjustTileCoverageRect const):
        * platform/graphics/ca/TileController.h:

2019-05-26  Simon Fraser  <simon.fraser@apple.com>

        Add a GraphicsLayer::Type for ScrolledContents
        https://bugs.webkit.org/show_bug.cgi?id=198257

        Reviewed by Zalan Bujtas.

        This ScrolledContents layer type will be used to choose different tiling behaviors
        in a future patch.

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::supportsLayerType):
        * platform/graphics/GraphicsLayer.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayer::supportsLayerType):
        (WebCore::GraphicsLayerCA::initialize):
        (WebCore::GraphicsLayerCA::adjustCoverageRect const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::ensureRootLayer):

2019-05-26  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
        https://bugs.webkit.org/show_bug.cgi?id=198227
        <rdar://problem/51117258>

        Reviewed by Alex Christensen.

        Test: http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html

        * Headers.cmake:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Document.cpp:
        (WebCore::Document::referrer const):
            Now checks if the referrer has been overridden.
        (WebCore::Document::wasLoadedWithDataTransferFromPrevalentResource):
        (WebCore::Document::downgradeReferrerToRegistrableDomain):
        * dom/Document.h:
        * page/CrossSiteNavigationDataTransfer.h: Added.
            New option set for the growing number of navigational data transfers we care about.
        * platform/network/NetworkStorageSession.cpp:
        (WebCore::NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
        (WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration): Deleted.
            New name since we no longer only look for link decoration but also other means of navigational data transfer.
        * platform/network/NetworkStorageSession.h:

2019-05-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][Verification] Add areEssentiallyEqual for LayoutRect
        https://bugs.webkit.org/show_bug.cgi?id=198250
        <rdar://problem/51140119>

        Reviewed by Antti Koivisto.

        WebKit's inline layout is a mix of int/float/LayoutUnit types, while LFC mostly uses LayoutUnit.
        When we compute the used size of a block container (based on the inline tree), the final value might go through a few conversions.

        * layout/Verification.cpp:
        (WebCore::Layout::areEssentiallyEqual):
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

2019-05-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Dropped text, attachments, and images should animate into place
        https://bugs.webkit.org/show_bug.cgi?id=198243
        <rdar://problem/35205373>

        Reviewed by Tim Horton.

        Add some hooks to notify the chrome client when an HTMLImageElement's image is finished loading. See WebKit
        changelog for more detail.

        Test: DragAndDropTests.DropPreviewForImageInEditableArea

        * loader/EmptyClients.h:
        * page/ChromeClient.h:
        * page/Page.cpp:
        (WebCore::Page::didFinishLoadingImageForElement):
        * page/Page.h:
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::notifyFinished):

2019-05-25  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Introduce DisplayRun to display tree
        https://bugs.webkit.org/show_bug.cgi?id=197198

        Reviewed by Antti Koivisto.

        Add a simple inline layout implementation. Now we've got DisplayBoxes for layout boxes and
        DisplayRuns for inline runs.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        * layout/Verification.cpp:
        (WebCore::Layout::areEssentiallyEqual):
        (WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
        (WebCore::Layout::checkForMatchingNonTextRuns):
        (WebCore::Layout::checkForMatchingTextRuns):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
        (WebCore::Layout::resolveForRelativePositionIfNeeded): Deleted.
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::marginBox const):
        (WebCore::Display::Box::nonCollapsedMarginBox const):
        (WebCore::Display::Box::borderBox const):
        (WebCore::Display::Box::paddingBox const):
        (WebCore::Display::Box::contentBox const):
        (WebCore::Display::Box::Rect::Rect): Deleted.
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::rectWithMargin const):
        (WebCore::Display::Box::horizontalMargin const):
        (WebCore::Display::Box::Rect::intersects const): Deleted.
        (WebCore::Display::Box::Rect::invalidateTop): Deleted.
        (WebCore::Display::Box::Rect::invalidateLeft): Deleted.
        (WebCore::Display::Box::Rect::invalidateWidth): Deleted.
        (WebCore::Display::Box::Rect::invalidateHeight): Deleted.
        (WebCore::Display::Box::Rect::hasValidPosition const): Deleted.
        (WebCore::Display::Box::Rect::hasValidSize const): Deleted.
        (WebCore::Display::Box::Rect::hasValidGeometry const): Deleted.
        (WebCore::Display::Box::Rect::invalidatePosition): Deleted.
        (WebCore::Display::Box::Rect::setHasValidPosition): Deleted.
        (WebCore::Display::Box::Rect::setHasValidSize): Deleted.
        (WebCore::Display::Box::Rect::top const): Deleted.
        (WebCore::Display::Box::Rect::left const): Deleted.
        (WebCore::Display::Box::Rect::bottom const): Deleted.
        (WebCore::Display::Box::Rect::right const): Deleted.
        (WebCore::Display::Box::Rect::topLeft const): Deleted.
        (WebCore::Display::Box::Rect::bottomRight const): Deleted.
        (WebCore::Display::Box::Rect::size const): Deleted.
        (WebCore::Display::Box::Rect::width const): Deleted.
        (WebCore::Display::Box::Rect::height const): Deleted.
        (WebCore::Display::Box::Rect::setTopLeft): Deleted.
        (WebCore::Display::Box::Rect::setTop): Deleted.
        (WebCore::Display::Box::Rect::setLeft): Deleted.
        (WebCore::Display::Box::Rect::setWidth): Deleted.
        (WebCore::Display::Box::Rect::setHeight): Deleted.
        (WebCore::Display::Box::Rect::setSize): Deleted.
        (WebCore::Display::Box::Rect::shiftLeftTo): Deleted.
        (WebCore::Display::Box::Rect::shiftRightTo): Deleted.
        (WebCore::Display::Box::Rect::shiftTopTo): Deleted.
        (WebCore::Display::Box::Rect::shiftBottomTo): Deleted.
        (WebCore::Display::Box::Rect::moveHorizontally): Deleted.
        (WebCore::Display::Box::Rect::moveVertically): Deleted.
        (WebCore::Display::Box::Rect::expand): Deleted.
        (WebCore::Display::Box::Rect::clone const): Deleted.
        (WebCore::Display::Box::Rect::operator LayoutRect const): Deleted.
        * layout/displaytree/DisplayRect.h: Added.
        (WebCore::Display::Rect::expandHorizontally):
        (WebCore::Display::Rect::expandVertically):
        (WebCore::Display::Rect::intersects const):
        (WebCore::Display::Rect::invalidateTop):
        (WebCore::Display::Rect::invalidateLeft):
        (WebCore::Display::Rect::invalidateWidth):
        (WebCore::Display::Rect::invalidateHeight):
        (WebCore::Display::Rect::hasValidPosition const):
        (WebCore::Display::Rect::hasValidSize const):
        (WebCore::Display::Rect::hasValidGeometry const):
        (WebCore::Display::Rect::Rect):
        (WebCore::Display::Rect::invalidatePosition):
        (WebCore::Display::Rect::setHasValidPosition):
        (WebCore::Display::Rect::setHasValidSize):
        (WebCore::Display::Rect::top const):
        (WebCore::Display::Rect::left const):
        (WebCore::Display::Rect::bottom const):
        (WebCore::Display::Rect::right const):
        (WebCore::Display::Rect::topLeft const):
        (WebCore::Display::Rect::bottomRight const):
        (WebCore::Display::Rect::size const):
        (WebCore::Display::Rect::width const):
        (WebCore::Display::Rect::height const):
        (WebCore::Display::Rect::setTopLeft):
        (WebCore::Display::Rect::setTop):
        (WebCore::Display::Rect::setLeft):
        (WebCore::Display::Rect::setWidth):
        (WebCore::Display::Rect::setHeight):
        (WebCore::Display::Rect::setSize):
        (WebCore::Display::Rect::shiftLeftTo):
        (WebCore::Display::Rect::shiftRightTo):
        (WebCore::Display::Rect::shiftTopTo):
        (WebCore::Display::Rect::shiftBottomTo):
        (WebCore::Display::Rect::moveHorizontally):
        (WebCore::Display::Rect::moveVertically):
        (WebCore::Display::Rect::expand):
        (WebCore::Display::Rect::clone const):
        (WebCore::Display::Rect::operator LayoutRect const):
        * layout/displaytree/DisplayRun.h: Renamed from Source/WebCore/layout/inlineformatting/InlineRun.h.
        (WebCore::Display::Run::TextContext::start const):
        (WebCore::Display::Run::TextContext::end const):
        (WebCore::Display::Run::TextContext::length const):
        (WebCore::Display::Run::TextContext::expand):
        (WebCore::Display::Run::logicalTopLeft const):
        (WebCore::Display::Run::logicalLeft const):
        (WebCore::Display::Run::logicalRight const):
        (WebCore::Display::Run::logicalTop const):
        (WebCore::Display::Run::logicalBottom const):
        (WebCore::Display::Run::logicalWidth const):
        (WebCore::Display::Run::logicalHeight const):
        (WebCore::Display::Run::setLogicalWidth):
        (WebCore::Display::Run::setLogicalTop):
        (WebCore::Display::Run::setLogicalLeft):
        (WebCore::Display::Run::setLogicalRight):
        (WebCore::Display::Run::moveVertically):
        (WebCore::Display::Run::moveHorizontally):
        (WebCore::Display::Run::expandVertically):
        (WebCore::Display::Run::expandHorizontally):
        (WebCore::Display::Run::setTextContext):
        (WebCore::Display::Run::textContext):
        (WebCore::Display::Run::textContext const):
        (WebCore::Display::Run::Run):
        (WebCore::Display::Run::TextContext::TextContext):
        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::rectInContainingBlock const):
        * layout/floats/FloatAvoider.h:
        (WebCore::Layout::FloatAvoider::rect const):
        * layout/floats/FloatBox.cpp:
        (WebCore::Layout::FloatBox::rect const):
        * layout/floats/FloatBox.h:
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatPair::intersects const):
        * layout/floats/FloatingState.h:
        (WebCore::Layout::FloatingState::FloatItem::rectWithMargin const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox const):
        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFloatBox const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForInlineBlock const):
        (WebCore::Layout::InlineFormattingContext::computeHorizontalMargin const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContent const):
        (WebCore::Layout::InlineFormattingContext::computeMargin const): Deleted.
        (WebCore::Layout::addDetachingRules): Deleted.
        (WebCore::Layout::createAndAppendInlineItem): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        (WebCore::Layout::halfLeadingMetrics):
        (WebCore::Layout::Line::availableWidth const):
        (WebCore::Layout::Line::contentLogicalRight const):
        (WebCore::Layout::Line::contentLogicalWidth const):
        (WebCore::Layout::Line::logicalTop const):
        (WebCore::Layout::Line::logicalLeft const):
        (WebCore::Layout::Line::logicalRight const):
        (WebCore::Layout::Line::logicalBottom const):
        (WebCore::Layout::Line::logicalWidth const):
        (WebCore::Layout::Line::logicalHeight const):
        (WebCore::Layout::Line::LineItem::LineItem):
        (WebCore::Layout::Line::Line):
        (WebCore::Layout::Line::reset):
        (WebCore::Layout::Line::close):
        (WebCore::Layout::Line::removeTrailingTrimmableContent):
        (WebCore::Layout::Line::moveLogicalLeft):
        (WebCore::Layout::Line::moveLogicalRight):
        (WebCore::Layout::isTrimmableContent):
        (WebCore::Layout::Line::trailingTrimmableWidth const):
        (WebCore::Layout::Line::hasContent const):
        (WebCore::Layout::Line::appendNonBreakableSpace):
        (WebCore::Layout::Line::appendInlineContainerStart):
        (WebCore::Layout::Line::appendInlineContainerEnd):
        (WebCore::Layout::Line::appendTextContent):
        (WebCore::Layout::Line::appendNonTextContent):
        (WebCore::Layout::Line::appendHardLineBreak):
        (WebCore::Layout::UncommittedContent::isEmpty const):
        (WebCore::Layout::UncommittedContent::width const):
        (WebCore::Layout::UncommittedContent::add):
        (WebCore::Layout::UncommittedContent::reset):
        (WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout):
        (WebCore::Layout::InlineFormattingContext::LineLayout::initializeLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::closeLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):
        (WebCore::Layout::horizontalAdjustmentForAlignment):
        (WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const):
        (WebCore::Layout::Line::isClosed const): Deleted.
        (WebCore::Layout::Line::isFirstLine const): Deleted.
        (WebCore::Layout::Line::runs): Deleted.
        (WebCore::Layout::Line::contentLogicalLeft const): Deleted.
        (WebCore::Layout::Line::lastRunType const): Deleted.
        (WebCore::Layout::Line::init): Deleted.
        (WebCore::Layout::Line::adjustLogicalLeft): Deleted.
        (WebCore::Layout::Line::adjustLogicalRight): Deleted.
        (WebCore::Layout::Line::appendContent): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::initializeNewLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::splitInlineRunIfNeeded const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::createFinalRuns const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::postProcessInlineRuns const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::appendContentToLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::computeFloatPosition const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::placeInFlowPositionedChildren const): Deleted.
        (WebCore::Layout::adjustedLineLogicalLeft): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::justifyRuns): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::computeExpansionOpportunities const): Deleted.
        (WebCore::Layout::InlineFormattingContext::LineLayout::runWidth const): Deleted.
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::inlineItems):
        (WebCore::Layout::InlineFormattingState::lineBoxes):
        (WebCore::Layout::InlineFormattingState::addInlineItem):
        (WebCore::Layout::InlineFormattingState::addInlineRun):
        (WebCore::Layout::InlineFormattingState::addLineBox):
        (WebCore::Layout::InlineFormattingState::inlineContent): Deleted.
        (WebCore::Layout::InlineFormattingState::lastInlineItem const): Deleted.
        (WebCore::Layout::InlineFormattingState::appendInlineRun): Deleted.
        * layout/inlineformatting/InlineItem.h:
        (WebCore::Layout::InlineItem::type const):
        (WebCore::Layout::InlineItem::isText const):
        (WebCore::Layout::InlineItem::isBox const):
        (WebCore::Layout::InlineItem::isHardLineBreak const):
        (WebCore::Layout::InlineItem::isFloat const):
        (WebCore::Layout::InlineItem::isLineBreak const):
        (WebCore::Layout::InlineItem::isContainerStart const):
        (WebCore::Layout::InlineItem::isContainerEnd const):
        (WebCore::Layout::InlineItem::InlineItem):
        (WebCore::Layout::InlineItem::setWidth):
        (WebCore::Layout::InlineItem::width const):
        (WebCore::Layout::InlineItem::addDetachingRule): Deleted.
        (WebCore::Layout::InlineItem::detachingRules const): Deleted.
        (WebCore::Layout::InlineItem::nonBreakableStart const): Deleted.
        (WebCore::Layout::InlineItem::nonBreakableEnd const): Deleted.
        (WebCore::Layout::InlineItem::addNonBreakableStart): Deleted.
        (WebCore::Layout::InlineItem::addNonBreakableEnd): Deleted.
        (WebCore::Layout::InlineItem::textContent const): Deleted.
        * layout/inlineformatting/InlineLineBox.h: Copied from Source/WebCore/layout/floats/FloatBox.h.
        (WebCore::Layout::LineBox::logicalTopLeft const):
        (WebCore::Layout::LineBox::logicalLeft const):
        (WebCore::Layout::LineBox::logicalRight const):
        (WebCore::Layout::LineBox::logicalTop const):
        (WebCore::Layout::LineBox::logicalBottom const):
        (WebCore::Layout::LineBox::logicalWidth const):
        (WebCore::Layout::LineBox::logicalHeight const):
        (WebCore::Layout::LineBox::LineBox):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::LineBreaker::LineBreaker):
        (WebCore::Layout::LineBreaker::breakingContext):
        (WebCore::Layout::LineBreaker::wordBreakingBehavior const):
        (WebCore::Layout::LineBreaker::runWidth const):
        (WebCore::Layout::LineBreaker::isAtBreakingOpportunity):
        (WebCore::Layout::LineBreaker::textWidth const):
        (WebCore::Layout::InlineLineBreaker::InlineLineBreaker): Deleted.
        (WebCore::Layout::InlineLineBreaker::nextRun): Deleted.
        (WebCore::Layout::InlineLineBreaker::isAtContentEnd const): Deleted.
        (WebCore::Layout::InlineLineBreaker::lineBreakingBehavior): Deleted.
        (WebCore::Layout::InlineLineBreaker::runWidth const): Deleted.
        (WebCore::Layout::InlineLineBreaker::textWidth const): Deleted.
        (WebCore::Layout::InlineLineBreaker::splitRun): Deleted.
        (WebCore::Layout::InlineLineBreaker::adjustSplitPositionWithHyphenation const): Deleted.
        * layout/inlineformatting/InlineLineBreaker.h:
        * layout/inlineformatting/InlineRunProvider.cpp: Removed.
        * layout/inlineformatting/InlineRunProvider.h: Removed.
        * layout/inlineformatting/InlineTextItem.cpp: Added.
        (WebCore::Layout::isWhitespaceCharacter):
        (WebCore::Layout::isSoftLineBreak):
        (WebCore::Layout::moveToNextNonWhitespacePosition):
        (WebCore::Layout::moveToNextBreakablePosition):
        (WebCore::Layout::InlineTextItem::createAndAppendTextItems):
        (WebCore::Layout::InlineTextItem::InlineTextItem):
        * layout/inlineformatting/InlineTextItem.h: Copied from Source/WebCore/layout/inlineformatting/text/TextUtil.h.
        (WebCore::Layout::InlineTextItem::start const):
        (WebCore::Layout::InlineTextItem::end const):
        (WebCore::Layout::InlineTextItem::length const):
        (WebCore::Layout::InlineTextItem::isWhitespace const):
        (WebCore::Layout::InlineTextItem::isCollapsed const):
        * layout/inlineformatting/text/TextUtil.cpp:
        (WebCore::Layout::TextUtil::hyphenPositionBefore):
        (WebCore::Layout::TextUtil::width):
        (WebCore::Layout::TextUtil::fixedPitchWidth):
        * layout/inlineformatting/text/TextUtil.h:
        * layout/layouttree/LayoutBox.h:
        * layout/layouttree/LayoutReplaced.cpp:
        (WebCore::Layout::Replaced::intrinsicRatio const):
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::accumulatedOffsetForInFlowPositionedContinuation):
        (WebCore::Layout::TreeBuilder::createSubTree):
        (WebCore::Layout::outputInlineRuns):
        (WebCore::Layout::outputLayoutBox):

2019-05-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Respect -[NSItemProvider preferredPresentationSize] when dropping images
        https://bugs.webkit.org/show_bug.cgi?id=198242

        Reviewed by Beth Dakin.

        Teach the web content reader to respect the -preferredPresentationSize when creating attachment-backed image
        elements. See below for more details.

        Test: WKAttachmentTestsIOS.InsertDroppedImageWithPreferredPresentationSize

        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::attachmentForFilePath):
        (WebCore::attachmentForData):

        When creating attachment-backed image elements, additionally set width and height attributes from the preferred
        presentation size, if specified.

        (WebCore::WebContentReader::readFilePath):

        Add a version of readFilePath that takes a single file path, and an optional preferred presentation size.

        (WebCore::WebContentReader::readFilePaths):

        Reimplement readFilePaths in terms of readFilePath.

        (WebCore::WebContentReader::readDataBuffer):

        Add more plumbing for preferredPresentationSize.

        * platform/Pasteboard.h:
        (WebCore::PasteboardWebContentReader::readFilePath):
        (WebCore::PasteboardWebContentReader::readDataBuffer):
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::read):
        (WebCore::Pasteboard::readRespectingUTIFidelities):

        Forward PasteboardItemInfo's preferredPresentationSize to the web content reader.

2019-05-25  Antoine Quint  <graouts@apple.com>

        Opt naver.com into simulated mouse events quirk on iOS
        https://bugs.webkit.org/show_bug.cgi?id=198248
        <rdar://problem/50598281>

        Reviewed by Brent Fulgham.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

2019-05-25  Youenn Fablet  <youenn@apple.com>

        media/video-remote-control-playpause.html is timing out after r245712
        https://bugs.webkit.org/show_bug.cgi?id=198238

        Reviewed by Eric Carlson.

        Fix regression introduced in r245712.
        Covered by test no longer timing out.

        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):

2019-05-25  Simon Fraser  <simon.fraser@apple.com>

        [Async overflow scrolling] Absolute positioned element inside async overflow scroll didn't get composited sometimes
        https://bugs.webkit.org/show_bug.cgi?id=198237

        Reviewed by Antti Koivisto.

        The logic in requiresCompositingForIndirectReason() that decides if we need to do
        compositing for a layer that needs to move independently of its enclosing scroller
        was wrong.

        Instead of asking question about the enclosing compositing layer, it needs to ask
        whether it has different positioning behavior from the layer that it would
        otherwise paint into, which is its paint-order parent.

        "paintsIntoProvidedBacking" already does a containing-block check against the
        scroller, so we know we don't have to do the check in that case.

        Test: scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::enclosingCompositedScrollingLayer):
        (WebCore::isScrolledByOverflowScrollLayer):
        (WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor):
        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
        * rendering/RenderLayerCompositor.h:

2019-05-25  Simon Fraser  <simon.fraser@apple.com>

        [macOS] Fix programmatic scroll in RTL overflow with async scrolling enabled
        https://bugs.webkit.org/show_bug.cgi?id=198226

        Reviewed by Antti Koivisto.

        On macOS we need to use a scroll offset to set the layer position, not
        a scroll position.

        Test: scrollingcoordinator/mac/rtl-programmatic-overflow-scroll.html

        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):

2019-05-24  Joonghun Park  <jh718.park@samsung.com>

        Make computed width of non-replaced inline return computed style.
        https://bugs.webkit.org/show_bug.cgi?id=197814

        Reviewed by Antti Koivisto.

        Currently, Computed width of non-replaced inline incorrectly returns "auto"
        instead of the computed value.
        This patch changes the behavior according to
        https://drafts.csswg.org/cssom/#resolved-value as below.

        'If the property applies to the element or pseudo-element
        and the resolved value of the display property is not none or contents,
        then the resolved value is the used value.
        Otherwise the resolved value is the computed value.'

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):

2019-05-24  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Allow vertex attributes to have arbitrary names in the shader
        https://bugs.webkit.org/show_bug.cgi?id=198235

        Reviewed by Dean Jackson and Justin Fan.

        Metal doesn't allow arbitrary vertex attribute IDs. If you try to create a vertex attribute > 16,
        the Metal validation layer will assert. So, we need to have a mapping from whatever the WebGPU
        API says the vertex attribute IDs should be to the internally-used vertex attribute IDs.

        Test: webgpu/whlsl-arbitrary-vertex-attribute-locations.html

        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding):
        * Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
        * Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
        (WebCore::WHLSL::matchVertexAttributes):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::convertRenderPipelineDescriptor):
        (WebCore::trySetInputStateForPipelineDescriptor):

2019-05-24  Timothy Hatcher  <timothy@apple.com>

        Refactor how showLetterpressedGlyphsWithAdvances gets the graphics context.
        https://bugs.webkit.org/show_bug.cgi?id=198225

        Reviewed by Dean Jackson.

        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::showLetterpressedGlyphsWithAdvances):
        (WebCore::FontCascade::drawGlyphs):

2019-05-24  Timothy Hatcher  <timothy@apple.com>

        Plumb dark appearance down to GraphicsContext.
        https://bugs.webkit.org/show_bug.cgi?id=198224
        rdar://problem/51068494

        Reviewed by Dean Jackson.

        No test yet, as it is not testable until this gets used.

        * platform/graphics/GraphicsContext.cpp:
        (WebCore::GraphicsContextStateChange::changesFromState const):
        (WebCore::GraphicsContextStateChange::accumulate):
        (WebCore::GraphicsContextStateChange::apply const):
        (WebCore::GraphicsContextStateChange::dump const):
        (WebCore::GraphicsContext::setUseDarkAppearance):
        * platform/graphics/GraphicsContext.h:
        (WebCore::GraphicsContext::useDarkAppearance const):
        * rendering/TextPaintStyle.cpp:
        (WebCore::TextPaintStyle::operator== const):
        (WebCore::computeTextPaintStyle):
        (WebCore::updateGraphicsContext):
        * rendering/TextPaintStyle.h:

2019-05-24  Youenn Fablet  <youenn@apple.com>

        Make sure completion handler is always called in SWServer::startSuspension
        https://bugs.webkit.org/show_bug.cgi?id=198215

        Reviewed by Alex Christensen.

        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::startSuspension):
        Make sure completion handler is called in case of no registration store.

2019-05-24  Ryosuke Niwa  <rniwa@webkit.org>

        Asssertion failure in dispatchSubtreeModifiedEvent due to TextFieldInputType updating UA shadow tree inside Element::removedFromAncestor
        https://bugs.webkit.org/show_bug.cgi?id=198216

        Reviewed by Brent Fulgham.

        The bug was caused by ListAttributeTargetObserver::idTargetChanged() updating the shadow tree of an input element
        within Element::removedFromAncestor via TextFieldInputType::createDataListDropdownIndicator(). Fixed it by
        supressing the assertions with ScriptDisallowedScope::EventAllowedScope since it's always safe to update
        UA shadow trees of input elements as it's not exposed to author scripts.

        Avoiding the creation of dropdown indicator in this particular scenario is a lot more involved and it's not
        particularly correct because there could be another datalist element which matches the ID specified in list
        content attribute after the removal of the old datalist element.

        Test: fast/forms/datalist/datalist-removal-assertion.html

        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::createDataListDropdownIndicator):
        (WebCore::TextFieldInputType::createContainer):
        * html/shadow/DataListButtonElement.cpp:
        (WebCore::DataListButtonElement::DataListButtonElement):

2019-05-24  Saam barati  <sbarati@apple.com>

        [WHLSL] ReadModifyWriteExpression always has a result and new value expression
        https://bugs.webkit.org/show_bug.cgi?id=198079

        Reviewed by Myles Maxfield.

        Let's not pretend it might not.

        * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        (WebCore::WHLSL::Checker::visit):
        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
        (WebCore::WHLSL::PropertyResolver::visit):
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):

2019-05-23  Simon Fraser  <simon.fraser@apple.com>

        With async overflow scrolling, programmatic scroll to a negative offset fails to clamp the scroll offset
        https://bugs.webkit.org/show_bug.cgi?id=198208
        <rdar://problem/49720087>

        Reviewed by Zalan Bujtas.

        RenderLayer::scrollToOffset() needs to pass the clamped offset to scrollingCoordinator->requestScrollPositionUpdate(),
        otherwise the scrolling tree will round-trip a negative value and scrollLeft will end up negative.

        Test: fast/scrolling/programmatic-scroll-to-negative-offset.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollToOffset):

2019-05-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Overlay: rulers/guides should be shown whenever element selection is enabled
        https://bugs.webkit.org/show_bug.cgi?id=198088

        Reviewed by Timothy Hatcher.

        When trying to "measure" the absolute position (to the viewport) or relative position (to
        another element) of a given element, often the easiest way is to enable Element Selection
        and Show Rulers at the same time.

        This can have the undesired "side-effect" of having the rulers be always present, even when
        not highlighting any nodes.

        The ideal functionality is to allow the rulers/guides to be shown when element selection is
        active and a node is hovered, regardless of whether "Show Rulers" is enabled.

        * inspector/InspectorOverlay.h:
        (WebCore::InspectorOverlay::setShowRulersDuringElementSelection): Added.
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint):
        (WebCore::InspectorOverlay::shouldShowOverlay):
        (WebCore::InspectorOverlay::drawNodeHighlight):
        (WebCore::InspectorOverlay::drawQuadHighlight):
        (WebCore::InspectorOverlay::drawElementTitle):
        If `showRulersDuringElementSelection` is enabled, draw rulers whenever any highlight bounds
        are calculated, but don't update the overlay if it's the only thing enabled (e.g. if there's
        no currently hovered node, the overlay will disappear).

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
        (WebCore::InspectorDOMAgent::inspect):
        (WebCore::InspectorDOMAgent::setInspectModeEnabled):
        (WebCore::InspectorDOMAgent::setSearchingForNode):
        Add an optional `showRulers` parameter to `DOM.setInspectModeEnabled` that supersedes the
        current value of `Page.setShowRulers` as to whether rulers/guides are shown.

2019-05-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Overlay: rulers should switch sides if they intersect the highlighted node(s) so they don't obstruct any content
        https://bugs.webkit.org/show_bug.cgi?id=198165

        Reviewed by Timothy Hatcher.

        If the highlighted node is against the top edge of the screen, the top ruler should shift to
        the bottom, unless the highlighted node is also against the bottom edge of the screen.

        If the highlighted node is against the left edge of the screen, the left ruler should shift
        to the right, unless the highlighted node is also against the right edge of the screen.

        This way, unless the node is very wide/tall, the rulers won't be drawn on top of anything
        being highlighted.

        * inspector/InspectorOverlay.h:
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint):
        (WebCore::InspectorOverlay::drawNodeHighlight):
        (WebCore::InspectorOverlay::drawQuadHighlight):
        (WebCore::InspectorOverlay::drawBounds):
        (WebCore::InspectorOverlay::drawRulers):
        Drive-by: create an alias for the type (`FloatRect`) used when calculating the bounds of
                  everything that's highlighted.

2019-05-23  Saam barati  <sbarati@apple.com>

        [WHLSL] Make the AST dumper disambiguate expressions using parenthesis to represent AST construction
        https://bugs.webkit.org/show_bug.cgi?id=198199

        Reviewed by Myles C. Maxfield.

        We would dump "*foo.bar" for "(*foo).bar", which is super confusing.
        We now dump "(*foo).bar".

        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):

2019-05-23  Saam barati  <sbarati@apple.com>

        [WHLSL] Don't wrap anonymous variables in parens in the AST dumper
        https://bugs.webkit.org/show_bug.cgi?id=198196

        Reviewed by Myles C. Maxfield.

        This makes the dump of 'foo.bar.x = 42' go from
        ($(0x7f86d9d94440) = &foo, $(0x7f86d9d944e0) = operator.bar(*$(0x7f86d9d94440)), $(0x7f86d9d944e0) = operator.x=($(0x7f86d9d944e0), 42), *$(0x7f86d9d94440) = operator.bar=(*$(0x7f86d9d94440), $(0x7f86d9d944e0)));
        
        to:
        ($0x7f86d9d94440 = &foo, $0x7f86d9d944e0 = operator.bar(*$0x7f86d9d94440), $0x7f86d9d944e0 = operator.x=($0x7f86d9d944e0, 42), *$0x7f86d9d94440 = operator.bar=(*$0x7f86d9d94440, $0x7f86d9d944e0));

        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):

2019-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement property resolver
        https://bugs.webkit.org/show_bug.cgi?id=195925
        <rdar://problem/48219643>

        Unreviewed watchOS build fix.

        * Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
        (WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):

2019-05-23  Saam barati  <sbarati@apple.com>

        [WHLSL] Property resolver needs to recurse to handle the base when simplifying rvalues
        https://bugs.webkit.org/show_bug.cgi?id=198193

        Reviewed by Myles Maxfield.

        We were only transforming the top most node in the AST. So things like
        'x = foo.bar' would work, but 'x = foo.bar.baz' would not.

        Test: webgpu/whlsl-nested-dot-expression-rvalue.html

        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
        (WebCore::WHLSL::PropertyResolver::simplifyRightValue):

2019-05-22  Stephanie Lewis  <slewis@apple.com>

        release builds of webkit cannot be used to generate a dyld shared cache
        https://bugs.webkit.org/show_bug.cgi?id=198150
        <rdar://problem/50675982>

        Reviewed by Dan Bernstein.

        Restrict the -not_for_dyld_shared_cache linker flag to macosx

        * Configurations/WebCore.xcconfig:

2019-05-23  Zalan Bujtas  <zalan@apple.com>

        [Hittest] Move hittesting from RenderView to Document
        https://bugs.webkit.org/show_bug.cgi?id=198192
        <rdar://problem/51077762>

        Reviewed by Antti Koivisto.

        RenderView is not refcounted and may be destroyed in updateLayout(), so enter hit-testing from Document.

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::press):
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::visiblePositionForPoint const):
        * dom/Document.cpp:
        (WebCore::FrameFlatteningLayoutDisallower::FrameFlatteningLayoutDisallower):
        (WebCore::FrameFlatteningLayoutDisallower::~FrameFlatteningLayoutDisallower):
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::prepareMouseEvent):
        (WebCore::Document::hitTest):
        * dom/Document.h:
        (WebCore::Document::inHitTesting const):
        * dom/TreeScope.cpp:
        (WebCore::TreeScope::nodeFromPoint):
        (WebCore::TreeScope::elementsFromPoint):
        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::contains const):
        * html/HTMLPlugInElement.cpp:
        (WebCore::HTMLPlugInElement::isReplacementObscured):
        * html/MediaElementSession.cpp:
        (WebCore::isElementMainContentForPurposesOfAutoplay):
        * page/DragController.cpp:
        (WebCore::elementUnderMouse):
        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleMouseDraggedEvent):
        (WebCore::EventHandler::eventMayStartDrag const):
        (WebCore::EventHandler::updateSelectionForMouseDrag):
        (WebCore::EventHandler::hitTestResultAtPoint const):
        (WebCore::EventHandler::updateCursor):
        (WebCore::EventHandler::isInsideScrollbar const):
        (WebCore::EventHandler::handleWheelEvent):
        (WebCore::EventHandler::hoverTimerFired):
        (WebCore::EventHandler::handleDrag):
        (WebCore::hitTestResultInFrame):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange):
        * rendering/RenderView.cpp:
        (WebCore::FrameFlatteningLayoutDisallower::FrameFlatteningLayoutDisallower): Deleted.
        (WebCore::FrameFlatteningLayoutDisallower::~FrameFlatteningLayoutDisallower): Deleted.
        (): Deleted.
        (WebCore::RenderView::hitTest): Deleted.
        * rendering/RenderView.h:
        * rendering/RenderWidget.cpp:
        (WebCore::RenderWidget::nodeAtPoint):
        * testing/Internals.cpp:
        (WebCore::Internals::nodesFromRect const):

2019-05-23  Youenn Fablet  <youenn@apple.com>

        CacheStorageConnection callbacks should be completed on network connection close
        https://bugs.webkit.org/show_bug.cgi?id=195757

        Reviewed by Alex Christensen.

        Move HashMap-based callbacks to WorkerCacheStorageConnection.
        Make CacheStorageConnection default API to implement use callbacks.
        This is used by WebKit layer to do AsyncReply IPC.

        Move DOMCacheEngine callbacks to CompletionHandler.

        Test: http/wpt/cache-storage/cache-storage-networkprocess-crash.html

        * Modules/cache/CacheStorageConnection.cpp:
        * Modules/cache/CacheStorageConnection.h:
        (WebCore::CacheStorageConnection::engineRepresentation):
        * Modules/cache/DOMCacheEngine.h:
        * Modules/cache/WorkerCacheStorageConnection.cpp:
        (WebCore::recordsDataFromRecords):
        (WebCore::recordsDataOrErrorFromRecords):
        (WebCore::recordsFromRecordsData):
        (WebCore::recordsOrErrorFromRecordsData):
        (WebCore::WorkerCacheStorageConnection::open):
        (WebCore::WorkerCacheStorageConnection::openOrRemoveCompleted):
        (WebCore::WorkerCacheStorageConnection::remove):
        (WebCore::WorkerCacheStorageConnection::retrieveCaches):
        (WebCore::WorkerCacheStorageConnection::retrieveCachesCompleted):
        (WebCore::WorkerCacheStorageConnection::retrieveRecords):
        (WebCore::WorkerCacheStorageConnection::retrieveRecordsCompleted):
        (WebCore::WorkerCacheStorageConnection::batchDeleteOperation):
        (WebCore::WorkerCacheStorageConnection::deleteRecordsCompleted):
        (WebCore::WorkerCacheStorageConnection::batchPutOperation):
        (WebCore::WorkerCacheStorageConnection::putRecordsCompleted):
        (WebCore::WorkerCacheStorageConnection::reference):
        (WebCore::WorkerCacheStorageConnection::dereference):
        (WebCore::WorkerCacheStorageConnection::clearPendingRequests):
        * Modules/cache/WorkerCacheStorageConnection.h:
        * page/CacheStorageProvider.h:
        (WebCore::CacheStorageProvider::createCacheStorageConnection):

2019-05-23  Youenn Fablet  <youenn@apple.com>

        Multiple videos (with audios) with autoplay & playinline not working. Only one video play at a time.
        https://bugs.webkit.org/show_bug.cgi?id=193312
        <rdar://problem/47189864>

        Reviewed by Jer Noble.

        Allow all MediaStream backed video elements to play together.
        Any non MediaStream backed video will stop all MediaStream backed video elements.
        Conversely, all non MediaStream backed videos will stop when playing one MediaStream backed video.

        Refactor PlatformMediaSessionManager as the way to iterate through sessions
        is not safe when pausing a session: if playing, the session will be moved in the array of sessions.

        To handle this, copy the list of sessions before iterating through them.
        For extra safety, make sessions WeakPtr.

        Add routines for the case of filtering with a predicate taking a const session.
        In that case, we do not copy the vector but iterate through it as a small optimization.

        Test: webrtc/concurrentVideoPlayback.html

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
        (WebCore::HTMLMediaElement::hasMediaStreamSource const):
        * html/HTMLMediaElement.h:
        * platform/audio/PlatformMediaSession.cpp:
        (WebCore::PlatformMediaSession::activeAudioSessionRequired const):
        (WebCore::PlatformMediaSession::canPlayConcurrently const):
        (WebCore::PlatformMediaSession::activeAudioSessionRequired): Deleted.
        * platform/audio/PlatformMediaSession.h:
        (WebCore::PlatformMediaSessionClient::hasMediaStreamSource const):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::has const):
        (WebCore::PlatformMediaSessionManager::activeAudioSessionRequired const):
        (WebCore::PlatformMediaSessionManager::canProduceAudio const):
        (WebCore::PlatformMediaSessionManager::count const):
        (WebCore::PlatformMediaSessionManager::beginInterruption):
        (WebCore::PlatformMediaSessionManager::endInterruption):
        (WebCore::PlatformMediaSessionManager::addSession):
        (WebCore::PlatformMediaSessionManager::removeSession):
        (WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
        (WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
        (WebCore::PlatformMediaSessionManager::setCurrentSession):
        (WebCore::PlatformMediaSessionManager::currentSession const):
        (WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
        (WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
        (WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
        (WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
        (WebCore::PlatformMediaSessionManager::systemWillSleep):
        (WebCore::PlatformMediaSessionManager::systemDidWake):
        (WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
        (WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForProcess):
        (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
        (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
        (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
        (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
        (WebCore::PlatformMediaSessionManager::currentSessionsMatching const):
        (WebCore::PlatformMediaSessionManager::forEachMatchingSession):
        (WebCore::PlatformMediaSessionManager::forEachMatchingSession const):
        (WebCore::PlatformMediaSessionManager::forEachSession):
        (WebCore::PlatformMediaSessionManager::anyOfSessions const):
        (): Deleted.
        (WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const): Deleted.
        (WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const): Deleted.
        (WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const): Deleted.
        (WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const): Deleted.
        (WebCore::PlatformMediaSessionManager::forEachSession const): Deleted.
        (WebCore::PlatformMediaSessionManager::findSession const): Deleted.
        * platform/audio/PlatformMediaSessionManager.h:
        (WebCore::PlatformMediaSessionManager::anyOfSessions const): Deleted.
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::updateSessionState):
        (MediaSessionManagerCocoa::beginInterruption):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):
        (WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):

2019-05-23  Saam barati  <sbarati@apple.com>

        [WHLSL] Add a helper for in-place AST mutation
        https://bugs.webkit.org/show_bug.cgi?id=198175

        Reviewed by Myles Maxfield.

        This makes WHLSL AST mutation code a bit easier to read and write.
        
        Code that looked like:
        ```
        static_assert(sizeof(AST::DereferenceExpression) <= sizeof(AST::DotExpression), "Dot expressions need to be able to become dereference expressions without updating backreferences");
        void* location = &dotExpression;
        dotExpression.~DotExpression();
        auto* dereferenceExpression = new (location) AST::DereferenceExpression(WTFMove(origin), WTFMove(callExpression));
        ```
        
        Can now be:
        ```
        auto* dereferenceExpression = AST::replaceWith<AST::DereferenceExpression>(dotExpression, WTFMove(origin), WTFMove(callExpression));
        ```

        * Modules/webgpu/WHLSL/AST/WHLSLNode.h:
        (WebCore::WHLSL::AST::replaceWith):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
        (WebCore::WHLSL::NameResolver::visit):
        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
        (WebCore::WHLSL::PropertyResolver::visit):
        (WebCore::WHLSL::PropertyResolver::simplifyRightValue):
        (WebCore::WHLSL::LeftValueSimplifier::visit):

2019-05-23  Eric Carlson  <eric.carlson@apple.com>

        [macOS,iOS] Add always-on logging for AVPlayerTimeControlStatus changes
        https://bugs.webkit.org/show_bug.cgi?id=197946
        <rdar://problem/50627457>

        Reviewed by Jon Lee.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::convertEnumerationToString):
        (WTF::LogArgument<AVPlayerTimeControlStatus>::toString):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::timeControlStatusDidChange):

2019-05-23  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Compatibility mouse events can only be prevented while the pointer is pressed
        https://bugs.webkit.org/show_bug.cgi?id=198178

        Reviewed by Dean Jackson.

        Test: pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html

        The Pointer Events spec, in https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events, says that "Mouse events
        can only be prevented when the pointer is down. Hovering pointers (e.g. a mouse with no buttons pressed) cannot have their mouse
        events prevented." We now track whether the pointer is pressed and clear the preventsCompatibilityMouseEvents when the pointer is
        moved and it is not pressed.

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::pointerEventWasDispatched):
        * page/PointerCaptureController.h:

2019-05-23  Simon Fraser  <simon.fraser@apple.com>

        Build fix after r245695.

        * dom/Element.cpp:

2019-05-23  Antoine Quint  <graouts@apple.com>

        [Pointer Events] The mouseover, mouseout, mouseenter, and mouseleave events should not be prevented while the pointer is down
        https://bugs.webkit.org/show_bug.cgi?id=198177

        Reviewed by Dean Jackson.

        Test: pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html

        The Pointer Event spec, in https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events, says that "the mouseover,
        mouseout, mouseenter, and mouseleave events are never prevented (even if the pointer is down)." We add a new static function which
        indicates what is "compatibility" mouse event since those should be excluded, along with "click", which we already excluded.

        * dom/Element.cpp:
        (WebCore::isCompatibilityMouseEvent):
        (WebCore::Element::dispatchMouseEvent):

2019-05-23  Jon Davis  <jond@apple.com>

        Update feature status for shipped features
        https://bugs.webkit.org/show_bug.cgi?id=196783

        Reviewed by Timothy Hatcher.
        
        Updated feature status for Beacon API, CSS Text Decoration Level 4, Intersection Observer,
        Conic Gradients, Datalist Element, and Web Share.

        * features.json:

2019-05-23  Simon Fraser  <simon.fraser@apple.com>

        Create scrolling tree nodes for descendants of position:absolute inside stacking-context overflow
        https://bugs.webkit.org/show_bug.cgi?id=198154

        Reviewed by Antti Koivisto.
        
        There exists code that creates scrolling tree nodes for position:absolute when the containing block
        chain skips an enclosing scroller, but the compositing ancestor tree includes the scroller. However
        this code explicitly checked that the layer was position:absolute.

        This needed to be generalized for any layer whose containing block ancestor chain includes
        a position:absolute that skips the scroller, for example a transformed inside a position:absolute,
        so remove an explicit isAbsolutelyPositioned() check and some similar assertions.

        Test: scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::collectStationaryLayerRelatedOverflowNodes):
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
        (WebCore::collectRelatedCoordinatedScrollingNodes):

2019-05-23  Adrian Perez de Castro  <aperez@igalia.com>

        Fix a few missing header inclusions often masked by by unified sources
        https://bugs.webkit.org/show_bug.cgi?id=198180

        Reviewed by Eric Carlson.

        * editing/markup.h: Add missing "FloatSize.h" inclusion.
        * html/FeaturePolicy.cpp: Add missing "HTMLParserIdioms.h" inclusion.
        * platform/text/TextCodec.cpp: Add missing <cstdio> inclusion.

2019-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement property resolver
        https://bugs.webkit.org/show_bug.cgi?id=195925
        <rdar://problem/48219643>

        Reviewed by Saam Barati and Robin Morisset.

        The property resolver is the thing that replaces dot expressions, index expressions, and
        read-modify-write expressions with calls to getters, setters, and anders. This patch doesn't
        fully implement the property resolver, but implements enough for simple dot expressions to
        work. This is enough for us to be able to test most of the rest of the compiler. Index
        expressions and read-modify-write expressions are not fully included in this patch, and will
        be finished in a follow-up patch.

        The property resolver may introduce anonymous variables in various places. In order to do
        this, after the property resolver runs, it will insert all these anonymous variables in the
        beginning of the function. However, this means that entries in the VariableDeclarations
        vector will all shift, which means VariableDeclarations have to be allocated on the heap so
        backreferences to them stay valid. This patch moves the storage associated with these values
        to living directly in the vector's storage to living in heap storage (via filling the vector
        with UniqueRefs).

        This patch also adds the third concept of value-ness. We now have right values, left values,
        and abstract left values (for things which have setters but have no address). This addition
        is required for the analysis the property resolver performs. This concept is also present in
        the spec.

        Test: webgpu/whlsl-dot-expressions.html

        * Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
        (WebCore::WHLSL::AST::TypeAnnotation::TypeAnnotation):
        (WebCore::WHLSL::AST::TypeAnnotation::leftAddressSpace const):
        (WebCore::WHLSL::AST::TypeAnnotation::isRightValue const):
        (WebCore::WHLSL::AST::TypeAnnotation::visit):
        * Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
        (WebCore::WHLSL::AST::AssignmentExpression::takeRight):
        * Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
        * Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
        * Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
        (WebCore::WHLSL::AST::Expression::maybeResolvedType):
        (WebCore::WHLSL::AST::Expression::resolvedType):
        (WebCore::WHLSL::AST::Expression::maybeTypeAnnotation const):
        (WebCore::WHLSL::AST::Expression::typeAnnotation const):
        (WebCore::WHLSL::AST::Expression::setTypeAnnotation):
        (WebCore::WHLSL::AST::Expression::addressSpace const): Deleted.
        (WebCore::WHLSL::AST::Expression::setAddressSpace): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
        (WebCore::WHLSL::AST::FloatLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.cpp:
        (WebCore::WHLSL::AST::IntegerLiteral::valueForSelectedType const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
        (WebCore::WHLSL::AST::IntegerLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::leftValue):
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
        (WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
        (WebCore::WHLSL::AST::MakePointerExpression::leftValue):
        (WebCore::WHLSL::AST::MakePointerExpression::lValue): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
        (WebCore::WHLSL::AST::NullLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetterOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetterOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleAnderOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::getterFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::anderFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::threadAnderFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setterFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetterOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAnderOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetterOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setGetterFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setAnderFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setThreadAnderFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setSetterFunction):
        (WebCore::WHLSL::AST::PropertyAccessExpression::takeBase):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetOverloads): Deleted.
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetOverloads): Deleted.
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleAndOverloads): Deleted.
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetOverloads): Deleted.
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetOverloads): Deleted.
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAndOverloads): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::oldVariableReference):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newVariableReference):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::leftValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeLeftValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeOldValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
        (WebCore::WHLSL::AST::ResolvableType::maybeResolvedType const):
        (WebCore::WHLSL::AST::ResolvableType::resolvedType const):
        (WebCore::WHLSL::AST::ResolvableType::maybeResolvedType):
        (WebCore::WHLSL::AST::ResolvableType::resolvedType):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableType const):
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableType const):
        * Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
        (WebCore::WHLSL::AST::StructureDefinition::find):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
        (WebCore::WHLSL::AST::TypeReference::maybeResolvedType const):
        (WebCore::WHLSL::AST::TypeReference::resolvedType const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.cpp:
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::valueForSelectedType const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
        (WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
        (WebCore::WHLSL::AST::VariableDeclarationsStatement::variableDeclarations):
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
        (WebCore::WHLSL::Metal::attributeForSemantic):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::writeNativeFunction):
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
        (WebCore::WHLSL::Metal::writeNativeType):
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
        (WebCore::WHLSL::Metal::findInVector):
        (WebCore::WHLSL::Metal::TypeNamer::visit):
        (WebCore::WHLSL::Metal::TypeNamer::createNameNode):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
        (WebCore::WHLSL::checkDuplicateFunctions):
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        (WebCore::WHLSL::resolveWithOperatorAnderIndexer):
        (WebCore::WHLSL::resolveWithOperatorLength):
        (WebCore::WHLSL::resolveWithReferenceComparator):
        (WebCore::WHLSL::resolveByInstantiation):
        (WebCore::WHLSL::checkOperatorOverload):
        (WebCore::WHLSL::Checker::assignTypes):
        (WebCore::WHLSL::commit):
        (WebCore::WHLSL::Checker::visit):
        (WebCore::WHLSL::Checker::recurseAndGetInfo):
        (WebCore::WHLSL::Checker::getInfo):
        (WebCore::WHLSL::Checker::assignType):
        (WebCore::WHLSL::Checker::forwardType):
        (WebCore::WHLSL::getUnnamedType):
        (WebCore::WHLSL::Checker::finishVisitingPropertyAccess): Deleted.
        (WebCore::WHLSL::Checker::recurseAndWrapBaseType): Deleted.
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
        (WebCore::WHLSL::Gatherer::takeEntryPointItems):
        (WebCore::WHLSL::Gatherer::visit):
        * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
        (WebCore::WHLSL::matchAndCommit):
        (WebCore::WHLSL::commit):
        (WebCore::WHLSL::inferTypesForCall):
        * Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp:
        (WebCore::WHLSL::getNativeTypeDeclaration):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
        (WebCore::WHLSL::NameResolver::visit):
        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parseParameters):
        (WebCore::WHLSL::Parser::parseVariableDeclarations):
        * Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        (WebCore::WHLSL::prepareShared):
        * Modules/webgpu/WHLSL/WHLSLPrepare.h:
        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp: Added.
        (WebCore::WHLSL::PropertyResolver::visit):
        (WebCore::WHLSL::setterCall):
        (WebCore::WHLSL::getterCall):
        (WebCore::WHLSL::modify):
        (WebCore::WHLSL::PropertyResolver::simplifyRightValue):
        (WebCore::WHLSL::LeftValueSimplifier::visit):
        (WebCore::WHLSL::PropertyResolver::simplifyLeftValue):
        (WebCore::WHLSL::resolveProperties):
        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h.
        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
        (WebCore::WHLSL::RecursiveTypeChecker::visit):
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
        (WebCore::WHLSL::conversionCost):
        * Modules/webgpu/WHLSL/WHLSLResolvingType.h:
        (WebCore::WHLSL::ResolvingType::getUnnamedType):
        * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
        (WebCore::WHLSL::FindArrayTypes::takeArrayTypes):
        (WebCore::WHLSL::synthesizeArrayOperatorLength):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
        (WebCore::WHLSL::FindAllTypes::takeUnnamedTypes):
        (WebCore::WHLSL::FindAllTypes::takeNamedTypes):
        (WebCore::WHLSL::synthesizeConstructors):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
        (WebCore::WHLSL::synthesizeEnumerationFunctions):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
        (WebCore::WHLSL::synthesizeStructureAccessors):
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):
        * Modules/webgpu/WHLSL/WHLSLVisitor.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

2019-05-22  Myles C. Maxfield  <mmaxfield@apple.com>

        font-optical-sizing applies the wrong variation value
        https://bugs.webkit.org/show_bug.cgi?id=197528
        <rdar://problem/50152854>

        Reviewed by Antti Koivisto.

        The OpenType spec says in
        https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz

        "Scale interpretation: Values can be interpreted as text size, in points."

        It turns out that it means "typographic point size" which is equal to CSS pixels, not
        CSS points.

        There are two parts of the font that are sensitive to optical sizing: variation values and
        the trak table. We don't want to set the variation value directly because then the trak table
        won't be affected. Instead, we can use kCTFontOpticalSizeAttribute to set both of them together.
        We will only do this when the CSS says text-rendering:optimizeLegibility or when the font has
        an opsz axis but no STAT table. Otherwise, we won't do anything special, which lets CoreText
        handle the default behavior for us. This gives us the same default behavior as the rest of the
        system.

        Tests: fast/text/variations/optical-sizing-trak-2.html
               fast/text/variations/optical-sizing-trak.html
               fast/text/variations/optical-sizing-units-2.html
               fast/text/variations/optical-sizing-units.html

        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontType::FontType):
        (WebCore::preparePlatformFont):
        (WebCore::fontWithFamily):
        (WebCore::FontCache::systemFallbackForCharacters):
        * platform/graphics/cocoa/FontCacheCoreText.h:
        * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
        (WebCore::FontFamilySpecificationCoreText::fontRanges const):
        * platform/graphics/mac/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):

2019-05-22  Antti Koivisto  <antti@apple.com>

        Subselectors not searched when determining property whitelist for selector
        https://bugs.webkit.org/show_bug.cgi?id=198147
        <rdar://problem/50405208>

        Reviewed by Zalan Bujtas.

        This can cause marker elements get style they shouldn't.

        Test: fast/lists/marker-style-subselector-whitelist.html

        * css/RuleSet.cpp:
        (WebCore::determinePropertyWhitelistType):

        Check subselectors too.

2019-05-22  Saam barati  <sbarati@apple.com>

        WHLSL: fix enum parsing
        https://bugs.webkit.org/show_bug.cgi?id=198087

        Reviewed by Myles Maxfield.

        This fixes two bugs:
        
        1. We were using a String by reference after moving the underlying owner of
        the string. This would lead to the String becoming the empty value, and
        crashing when used as a key in a hash map.
        2. We were incorrectly producing a syntax error for enum declarations by
        saying it's invalid if an enum value was added to a hash map for the first
        time. This logic should be negated. We need to error when it's added for
        the second time and onwards.

        Test: webgpu/whlsl-dont-crash-parsing-enum.html

        * Modules/webgpu/WHLSL/AST/WHLSLAST.h: Replaced.
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
        (WebCore::WHLSL::AST::EnumerationDefinition::add):
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
        (WebCore::WHLSL::AST::EnumerationMember::name):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Replaced.
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.h: Replaced.

2019-05-22  Simon Fraser  <simon.fraser@apple.com>

        Fix scrolling tree state for more obscure combinations of positioning and paint order
        https://bugs.webkit.org/show_bug.cgi?id=198139

        Reviewed by Antti Koivisto.

        There were three places in RenderLayerCompositor that used a version of ancestor
        layer traversal looking at containing blocks, and all three had issues. So make a
        shared function to do the ancestor walk, and use it thrice.

        isScrolledByOverflowScrollLayer() fumbled containingBlockCanSkipLayers, so failed
        to create a scrolling tree node for a composited layer inside position:fixed in
        overflow (tested by composited-in-absolute-in-overflow.html).

        collectStationaryLayerRelatedOverflowNodes() failed to handle nested
        overflow:scroll; it needs to find all the composited scrollers that affect the
        position of the given layer relative to its compositing ancestor, which may be the
        scroller, or a descendant of the scroller. However, it didn't walk up far enough
        and find more that one ancestor. Tested by absolute-in-nested-sc-scrollers.html.

        enclosingClippingScopes() was OK but now uses the share function.

        Tests: scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers.html
               scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::traverseAncestorLayers):
        (WebCore::enclosingClippingScopes):
        (WebCore::isScrolledByOverflowScrollLayer):
        (WebCore::collectStationaryLayerRelatedOverflowNodes):
        (WebCore::collectRelatedCoordinatedScrollingNodes):

2019-05-22  Simon Fraser  <simon.fraser@apple.com>

        Inner scroller of nested overflow:scrolls jitters when scrolling
        https://bugs.webkit.org/show_bug.cgi?id=198131

        Reviewed by Antti Koivisto.

        enclosingCompositedScrollingLayer(layer) would return the layer itself, rather than
        its scrolling ancestor, which meant that a composited scroller nested inside another
        scroller would fail to get a "Moves" scrolling tree node, and therefore jitter
        when scrolling.

        Test: scrollingcoordinator/scrolling-tree/nested-overflow-scroll.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::enclosingCompositedScrollingLayer):

2019-05-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245598.

        Breaks watchOS build.

        Reverted changeset:

        "font-optical-sizing applies the wrong variation value"
        https://bugs.webkit.org/show_bug.cgi?id=197528
        https://trac.webkit.org/changeset/245598

2019-05-22  Daniel Bates  <dabates@apple.com>

        WebKit does not generate an ESC key event for CMD+.
        https://bugs.webkit.org/show_bug.cgi?id=198137
        <rdar://problem/51038641>

        Reviewed by Brent Fulgham.

        This patch maps the Command + '.' keystroke to the 'Escape'. This also requires a change to UIKit to properly pass
        the key state to WebKit (see <rdar://problem/46431552>).

        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):

2019-05-22  Ali Juma  <ajuma@chromium.org>

        Intersection Observer: bounding client rect is wrong for an inline element
        https://bugs.webkit.org/show_bug.cgi?id=198009

        Reviewed by Simon Fraser.

        Make target rect computation for inline elements share logic with the computation
        of bounding client rects.

        Test: imported/w3c/web-platform-tests/intersection-observer/inline-with-block-child-client-rect.html

        * dom/Document.cpp:
        (WebCore::computeIntersectionState):
        * dom/Element.cpp:
        (WebCore::Element::boundingAbsoluteRectWithoutLayout):
        (WebCore::Element::boundingClientRect):
        * dom/Element.h:

2019-05-22  Antoine Quint  <graouts@apple.com>

        [iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
        https://bugs.webkit.org/show_bug.cgi?id=198124
        <rdar://problem/50410863>

        Reviewed by Tim Horton.

        This fix builds atop the one made for wkb.ug/198072 which fixes this bug on macOS alone.

        In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
        called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
        and into the resulting PlatformMouseEvent. This will allow upon dispatch of a PlatformMouseEvent to call into PointerCaptureController
        to identify if the dispatch of mouse events is allowed for the event's PointerID.

        To support this, some refactoring was required. The PointerID header is now under platform/ such that PlatformMouseEvent may safely use it.
        Additionally, PointerEvent::defaultMousePointerIdentifier() is now a global mousePointerID defined in PointerID.h.

        Finally, PointerCaptureController::touchEndedOrWasCancelledForIdentifier() has been renamed to PointerCaptureController::touchWithIdentifierWasRemoved() and
        has WEBCORE_EXPORT such that it may be called from WebKit as the indication that a pointer is no longer active will now be initiated in WebKit
        on the UI process side.

        Testing is covered by the pre-existing imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html
        which will now run on iOS through a change to WebKitAdditions.

        * Headers.cmake:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Element.cpp:
        (WebCore::Element::dispatchMouseEvent): When dealing with a mouse event on iOS, check whether the mouse event's PointerID allows for compatibility
        mouse events to be dispatched using PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(). The "click" event is not a compatibility
        mouse event.
        * dom/PointerEvent.h:
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::PointerCaptureController):
        (WebCore::PointerCaptureController::touchWithIdentifierWasRemoved):
        (WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier): Deleted.
        * page/PointerCaptureController.h:
        * platform/PlatformMouseEvent.h:
        (WebCore::PlatformMouseEvent::PlatformMouseEvent):
        (WebCore::PlatformMouseEvent::pointerId const):
        * platform/PointerID.h: Renamed from Source/WebCore/dom/PointerID.h.
        (WebCore::mousePointerID):

2019-05-22  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support Attestation Conveyance Preference
        https://bugs.webkit.org/show_bug.cgi?id=192722
        <rdar://problem/49939647>

        Reviewed by Brent Fulgham.

        This patch implements https://www.w3.org/TR/webauthn/#enumdef-attestationconveyancepreference, together with
        Step 20 with regard to AttestationConveyancePreference of https://www.w3.org/TR/webauthn/#createCredential.
        Few notes with regard to Step 20: 1) We treat indirect attestation as direct attestation as we don't MITM
        the attestation process; 2) We won't distinguish self attestation and return it to keep consistency between
        the response and the request. If callers want none attestation, they will very likely ignore fmt and attStmt
        of the attestation object, and therefore it is meaningless to return self attestation.

        Covered by new tests within existing files.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Headers.cmake:
        * Modules/webauthn/AttestationConveyancePreference.h: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
        * Modules/webauthn/AttestationConveyancePreference.idl: Copied from Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h.
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        (WebCore::PublicKeyCredentialCreationOptions::encode const):
        (WebCore::PublicKeyCredentialCreationOptions::decode):
        * Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
        * Modules/webauthn/WebAuthenticationConstants.h:
        * Modules/webauthn/WebAuthenticationUtils.cpp:
        (WebCore::buildAttestationObject):
        * Modules/webauthn/WebAuthenticationUtils.h:
        * Modules/webauthn/fido/DeviceResponseConverter.cpp:
        (fido::readCTAPMakeCredentialResponse):
        * Modules/webauthn/fido/DeviceResponseConverter.h:
        * Modules/webauthn/fido/FidoConstants.h:
        noneAttestationValue is moved to WebAuthenticationConstants.h.
        * Modules/webauthn/fido/U2fResponseConverter.cpp:
        (fido::readU2fRegisterResponse):
        * Modules/webauthn/fido/U2fResponseConverter.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-05-22  Zalan Bujtas  <zalan@apple.com>

        [Paste] Add support for preferred presentation size when pasting an image
        https://bugs.webkit.org/show_bug.cgi?id=198132
        <rdar://problem/50886917>

        Reviewed by Wenson Hsieh.

        Set the pasted <img> width/height attributes when the preferred presentation size is available.

        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::createFragmentForImageAttachment):
        (WebCore::WebContentReader::readImage):
        * editing/markup.cpp:
        (WebCore::createFragmentForImageAndURL):
        * editing/markup.h:
        * platform/Pasteboard.h:
        (WebCore::PasteboardWebContentReader::readImage):
        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::encode const):
        (WebCore::PasteboardItemInfo::decode):
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readPasteboardWebContentDataForType):
        (WebCore::Pasteboard::read):
        (WebCore::Pasteboard::readRespectingUTIFidelities):
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::informationForItemAtIndex):

2019-05-22  Jer Noble  <jer.noble@apple.com>

        Hide MediaCapabilities.encodingInfo() when the platform does not support it.
        https://bugs.webkit.org/show_bug.cgi?id=197476

        Reviewed by Eric Carlson.

        Test: platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html

        Add a new IDL attribute, CustomEnabled, which allows non Settings-based enabling of attributes and objects.

        * Modules/mediacapabilities/MediaCapabilities.idl:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSMediaCapabilitiesCustom.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl.
        (WebCore::JSMediaCapabilitiesEncodingInfoIsEnabled):
        * bindings/scripts/CodeGeneratorJS.pm:
        (NeedsRuntimeCheck):
        (GenerateRuntimeEnableConditionalString):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/preprocess-idls.pl:
        (GenerateConstructorAttributes):
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
        (WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):
        * platform/mediacapabilities/MediaEngineConfigurationFactory.h:

2019-05-22  Youenn Fablet  <youenn@apple.com>

        Implement Feature policy self/none/* parsing
        https://bugs.webkit.org/show_bug.cgi?id=198078

        Reviewed by Eric Carlson.

        Start to implement https://w3c.github.io/webappsec-feature-policy/#algo-parse-policy-directive
        'src' is not supported yet.
        Apply the rules to getUserMedia.
        Update getDisplayMedia keyword from 'display' to 'display-capture' as per spec.

        Test: imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-feature-policy-none.https.html

        * Headers.cmake:
        * Modules/mediastream/UserMediaController.cpp:
        (WebCore::isSecure):
        (WebCore::isAllowedByFeaturePolicy):
        (WebCore::isAllowedToUse):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * html/FeaturePolicy.cpp: Added.
        (WebCore::isAllowedByFeaturePolicy):
        (WebCore::processOriginItem):
        (WebCore::updateList):
        (WebCore::FeaturePolicy::parse):
        (WebCore::FeaturePolicy::allows const):
        * html/FeaturePolicy.h: Added.
        * html/HTMLIFrameElement.cpp:
        (WebCore::HTMLIFrameElement::featurePolicy const):
        * html/HTMLIFrameElement.h:

2019-05-21  Jer Noble  <jer.noble@apple.com>

        Media controls don't show in WK2 video fullscreen sometimes
        https://bugs.webkit.org/show_bug.cgi?id=198094
        <rdar://problem/50970661>

        Reviewed by Tim Horton.

        Ensure that the WebAVPlayerLayer never allows hit testing, as this keeps touches from reaching
        AVKit's controls.

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer init]):

2019-05-21  Saam barati  <sbarati@apple.com>

        WHLSL: Add an AST dumper
        https://bugs.webkit.org/show_bug.cgi?id=198059

        Reviewed by Myles Maxfield.

        This patch makes it so we can dump the WHLSL program's AST.
        This will become useful when we're debugging passes that
        transform the AST.
        
        The dumper mostly prints in a style where the dump is almost
        valid WHLSL code. E.g, this WHLSL program:
        ```
        int foo(int arg) {
            return arg + 1;
        }
        ```
        
        gets dumped as:
        ```
        int foo(int arg) {
           return operator+(arg, 1);
        }
        ```
        
        This patch also adds a way to dump between each pass, after
        parsing, or at the end of all passes. Currently, this is controlled
        by a static variable. I'll make these runtime configurable in a follow
        up: https://bugs.webkit.org/show_bug.cgi?id=198097

        No new tests because this is used for logging.

        * Modules/webgpu/WHLSL/AST/WHLSLAST.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
        (WebCore::WHLSL::AST::toString):
        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
        (WebCore::WHLSL::AST::BuiltInSemantic::toString const):
        * Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
        (WebCore::WHLSL::AST::toString):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
        (WebCore::WHLSL::AST::ResourceSemantic::toString):
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
        (WebCore::WHLSL::Metal::toString): Deleted.
        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Added.
        (WebCore::WHLSL::ASTDumper::visit):
        * Modules/webgpu/WHLSL/WHLSLASTDumper.h: Added.
        (WebCore::WHLSL::ASTDumper::toString):
        (WebCore::WHLSL::ASTDumper::Indent::Indent):
        (WebCore::WHLSL::ASTDumper::bumpIndent):
        (WebCore::WHLSL::toString):
        (WebCore::WHLSL::dumpAST):
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        (WebCore::WHLSL::dumpASTIfNeeded):
        (WebCore::WHLSL::dumpASTAfterParsingIfNeeded):
        (WebCore::WHLSL::dumpASTBetweenEachPassIfNeeded):
        (WebCore::WHLSL::dumpASTAtEndIfNeeded):
        (WebCore::WHLSL::prepareShared):
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-05-21  Saam barati  <sbarati@apple.com>

        WHLSL: Parsing negative int literals parses the positive value instead
        https://bugs.webkit.org/show_bug.cgi?id=198096

        Reviewed by Dean Jackson.

        I also made the code around < INT_MIN a bit easier to follow along with.

        No new tests because we haven't imported WHLSL test suite yet.
        Verified this works using the AST dumper.

        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::intLiteralToInt):

2019-05-21  Myles C. Maxfield  <mmaxfield@apple.com>

        font-optical-sizing applies the wrong variation value
        https://bugs.webkit.org/show_bug.cgi?id=197528
        <rdar://problem/50152854>

        Reviewed by Antti Koivisto.

        The OpenType spec says in
        https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz

        "Scale interpretation: Values can be interpreted as text size, in points."

        It turns out that it means "typographic point size" which is equal to CSS pixels, not
        CSS points.

        There are two parts of the font that are sensitive to optical sizing: variation values and
        the trak table. We don't want to set the variation value directly because then the trak table
        won't be affected. Instead, we can use kCTFontOpticalSizeAttribute to set both of them together.
        We will only do this when the CSS says text-rendering:optimizeLegibility or when the font has
        an opsz axis but no STAT table. Otherwise, we won't do anything special, which lets CoreText
        handle the default behavior for us. This gives us the same default behavior as the rest of the
        system.

        Tests: fast/text/variations/optical-sizing-trak-2.html
               fast/text/variations/optical-sizing-trak.html
               fast/text/variations/optical-sizing-units.html
               fast/text/variations/optical-sizing-units-2.html

        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontType::FontType):
        (WebCore::preparePlatformFont):
        (WebCore::fontWithFamily):
        (WebCore::FontCache::systemFallbackForCharacters):
        * platform/graphics/cocoa/FontCacheCoreText.h:
        * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
        (WebCore::FontFamilySpecificationCoreText::fontRanges const):
        * platform/graphics/mac/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):

2019-05-21  Simon Fraser  <simon.fraser@apple.com>

        Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes
        https://bugs.webkit.org/show_bug.cgi?id=198091
        <rdar://problem/49403082>

        Reviewed by Antti Koivisto.
        
        When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary
        for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure
        that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller.
        All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure
        of the z-order and compositing trees).

        Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is
        a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test
        against container N-1.
        
        To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses
        a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds
        are computed unclipped. Between them, bounds are tested clipped.
        
        Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of
        composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always
        root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside
        composited overflow scroll (just like the old code).
        
        When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous
        container.

        Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html
               compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html
               compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html
               compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html
               compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html

        * rendering/LayerOverlapMap.cpp:
        (WebCore::operator<<):
        (WebCore::OverlapMapContainer::OverlapMapContainer):
        (WebCore::OverlapMapContainer::ClippingScope::ClippingScope):
        (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const):
        (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds):
        (WebCore::OverlapMapContainer::ClippingScope::addChild):
        (WebCore::OverlapMapContainer::ClippingScope::appendRect):
        (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive):
        (WebCore::OverlapMapContainer::scopeContainingLayer const):
        (WebCore::OverlapMapContainer::rootScope const):
        (WebCore::OverlapMapContainer::rootScope):
        (WebCore::OverlapMapContainer::add):
        (WebCore::OverlapMapContainer::overlapsLayers const):
        (WebCore::OverlapMapContainer::mergeClippingScopesRecursive):
        (WebCore::OverlapMapContainer::append):
        (WebCore::OverlapMapContainer::ensureClippingScopeForLayers):
        (WebCore::OverlapMapContainer::findClippingScopeForLayers const):
        (WebCore::OverlapMapContainer::recursiveOutputToStream const):
        (WebCore::OverlapMapContainer::dump const):
        (WebCore::LayerOverlapMap::LayerOverlapMap):
        (WebCore::LayerOverlapMap::add):
        (WebCore::LayerOverlapMap::overlapsLayers const):
        (WebCore::LayerOverlapMap::pushCompositingContainer):
        (WebCore::LayerOverlapMap::popCompositingContainer):
        (WebCore::OverlapMapContainer::unite): Deleted.
        (WebCore::OverlapMapContainer::rectList const): Deleted.
        * rendering/LayerOverlapMap.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer):
        (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::computeExtent const):
        (WebCore::createsClippingScope):
        (WebCore::enclosingClippingScopes):
        (WebCore::RenderLayerCompositor::addToOverlapMap const):
        (WebCore::RenderLayerCompositor::updateOverlapMap const):
        (WebCore::RenderLayerCompositor::layerOverlaps const):
        * rendering/RenderLayerCompositor.h:

2019-05-21  Antoine Quint  <graouts@apple.com>

        [macOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
        https://bugs.webkit.org/show_bug.cgi?id=198072
        <rdar://problem/50983361>

        Reviewed by Dean Jackson.

        The Pointer Events spec says that "compatibility" mouse events, which means all mouse events save for "click",
        should not be dispatched for a given pointer if preventDefault() was called during the dispatch of the "pointerdown"
        event. Additionally, calling preventDefault() during the dispatch of "pointerup" has no effect.

        * dom/Element.cpp:
        (WebCore::Element::dispatchMouseEvent):
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier):
        (WebCore::PointerCaptureController::pointerEventWasDispatched):
        * page/PointerCaptureController.h:

2019-05-21  Antti Koivisto  <antti@apple.com>

        RTL/overflow scroll tests fail with async overflow enabled
        https://bugs.webkit.org/show_bug.cgi?id=196013
        <rdar://problem/49066649>

        Reviewed by Simon Fraser.

        Test: compositing/ios/rtl-overflow-scrolling-2.html

        This patch makes the basic RTL cases work in the scrolling tree.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::minimumScrollPosition const):
        (WebCore::ScrollingTreeScrollingNode::maximumScrollPosition const):

        Add missing scroll offset <-> scroll position conversions.

2019-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add initial accessibility support using ATK
        https://bugs.webkit.org/show_bug.cgi?id=197413

        Reviewed by Michael Catanzaro.

        Use USE(ATK) instead of PLATFORM(GTK) for ATK related code and use ATK when available for WPE port too.

        * PlatformWPE.cmake:
        * SourcesWPE.txt:
        * accessibility/AXObjectCache.h:
        * accessibility/AccessibilityList.cpp:
        (WebCore::AccessibilityList::childHasPseudoVisibleListItemMarkers):
        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::canSetValueAttribute const):
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::textIteratorBehaviorForTextRange const):
        * accessibility/AccessibilityObject.h:
        * accessibility/AccessibilityObjectInterface.h:
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::indexForVisiblePosition const):
        (WebCore::AccessibilityRenderObject::shouldNotifyActiveDescendant const):
        * accessibility/AccessibilityTableColumn.cpp:
        (WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const):
        * accessibility/AccessibilityTableHeaderContainer.cpp:
        (WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const):
        * accessibility/atk/WebKitAccessible.cpp:
        (webkitAccessibleGetAttributes):
        * accessibility/wpe/AXObjectCacheWPE.cpp: Removed.
        * accessibility/wpe/AccessibilityObjectWPE.cpp: Removed.
        * editing/FrameSelection.h:

2019-05-20  Ross Kirsling  <ross.kirsling@sony.com>

        Make lossy LayoutUnit constructors explicit
        https://bugs.webkit.org/show_bug.cgi?id=191811

        Reviewed by Antti Koivisto.

        * platform/LayoutUnit.h:
        Make lossy unary constructors explicit.
        For ergonomics, give float overloads to copy constructor and round/floor/ceil functions.

        * css/LengthFunctions.h:
        * platform/graphics/LayoutPoint.h:
        * platform/graphics/LayoutRect.h:
        * platform/graphics/LayoutSize.h:
        * rendering/RenderBox.h:
        * rendering/RenderElement.h:
        Templatize common functions to allow LayoutUnit itself to dictate which types it allows.

        * html/shadow/SliderThumbElement.cpp:
        * page/FrameView.cpp:
        * page/Page.cpp:
        * page/SpatialNavigation.cpp:
        * page/scrolling/AxisScrollSnapOffsets.cpp:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        * layout/FormattingContextGeometry.cpp:
        * layout/FormattingContextQuirks.cpp:
        * layout/LayoutState.cpp:
        * layout/displaytree/DisplayBox.h:
        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
        * layout/layouttree/LayoutReplaced.cpp:
        * platform/animation/AnimationUtilities.h:
        * platform/cocoa/ScrollSnapAnimatorState.mm:
        * rendering/BorderEdge.cpp:
        * rendering/EllipsisBox.cpp:
        * rendering/FixedTableLayout.cpp:
        * rendering/InlineBox.cpp:
        * rendering/InlineFlowBox.cpp:
        * rendering/InlineFlowBox.h:
        * rendering/InlineTextBox.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderBlockFlow.cpp:
        * rendering/RenderBlockLineLayout.cpp:
        * rendering/RenderBox.cpp:
        * rendering/RenderBoxModelObject.cpp:
        * rendering/RenderBoxModelObject.h:
        * rendering/RenderDeprecatedFlexibleBox.cpp:
        * rendering/RenderElement.cpp:
        * rendering/RenderImage.cpp:
        * rendering/RenderInline.cpp:
        * rendering/RenderLineBreak.cpp:
        * rendering/RenderListMarker.cpp:
        * rendering/RenderMultiColumnSet.cpp:
        * rendering/RenderMultiColumnSet.h:
        * rendering/RenderObject.cpp:
        * rendering/RenderReplaced.cpp:
        * rendering/RenderTable.cpp:
        * rendering/RenderTableCell.cpp:
        * rendering/RenderTableSection.cpp:
        * rendering/RenderText.cpp:
        * rendering/RenderTextControlMultiLine.cpp:
        * rendering/RenderThemeMac.mm:
        * rendering/RenderVTTCue.cpp:
        * rendering/RenderView.cpp:
        * rendering/RootInlineBox.cpp:
        * rendering/SimpleLineLayoutFunctions.cpp:
        * rendering/SimpleLineLayoutPagination.cpp:
        * rendering/SimpleLineLayoutResolver.cpp:
        * rendering/line/LineWidth.cpp:
        * rendering/mathml/MathOperator.cpp:
        * rendering/mathml/RenderMathMLBlock.cpp:
        * rendering/mathml/RenderMathMLBlock.h:
        * rendering/mathml/RenderMathMLFencedOperator.h:
        * rendering/mathml/RenderMathMLFraction.cpp:
        * rendering/mathml/RenderMathMLMenclose.cpp:
        * rendering/mathml/RenderMathMLOperator.cpp:
        * rendering/mathml/RenderMathMLRoot.cpp:
        * rendering/mathml/RenderMathMLScripts.cpp:
        * rendering/mathml/RenderMathMLToken.cpp:
        * rendering/shapes/BoxShape.cpp:
        * rendering/shapes/ShapeOutsideInfo.cpp:
        * rendering/style/CollapsedBorderValue.h:
        * rendering/style/NinePieceImage.cpp:
        * rendering/style/NinePieceImage.h:
        * rendering/style/RenderStyle.cpp:
        * rendering/style/RenderStyle.h:
        * rendering/svg/RenderSVGText.cpp:
        * rendering/svg/SVGInlineTextBox.cpp:
        Make usage of LayoutUnit(float) and LayoutUnit(double) explicit where needed.

2019-05-20  Jer Noble  <jer.noble@apple.com>

        Provide an explicit UIModalPresentation style when creating an AVPlayerViewController for fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=198052

        Reviewed by Tim Horton.

        Make sure AVPlayerViewController has an "overFullScreen" modal style.

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewController initWithFullscreenInterface:]):

2019-05-20  Chris Dumez  <cdumez@apple.com>

        Fix security check in ScriptController::canAccessFromCurrentOrigin()
        https://bugs.webkit.org/show_bug.cgi?id=196730
        <rdar://problem/49731231>

        Reviewed by Ryosuke Niwa.

        Fix security check in ScriptController::canAccessFromCurrentOrigin() when there is no
        current JS exec state. Instead of returning true unconditionally, we now fall back to
        using the accessing document's origin for the security check. The new behavior is
        aligned with Blink:
        https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/html_frame_element_base.cc?rcl=d3f22423d512b45466f1694020e20da9e0c6ee6a&l=62

        This fix is based on a patch from Sergei Glazunov <glazunov@google.com>.

        Test: http/tests/security/showModalDialog-sync-cross-origin-page-load2.html

        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::canAccessFromCurrentOrigin):
        * bindings/js/ScriptController.h:
        * html/HTMLFrameElementBase.cpp:
        (WebCore::HTMLFrameElementBase::isURLAllowed const):

2019-05-20  Gabe Giosia  <giosia@google.com>

        Range getBoundingClientRect returning zero rect on simple text node with <br> before it
        https://bugs.webkit.org/show_bug.cgi?id=182181

        Reviewed by Antti Koivisto.
        
        Correct rect of RenderText in a block element when used in a Range
        over a line break element. The end offset was miscalculated.

        Addded line-break case to fast/dom/Range/getBoundingClientRect.html

        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::collectAbsoluteQuadsForRange):
        * rendering/SimpleLineLayoutResolver.cpp:
        (WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets const):

2019-05-19  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r245508.

        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: Don't use
        an 'import' directive in a C++ file.

2019-05-19  Brent Fulgham  <bfulgham@apple.com>

        Wait to get frame until after layout has been run
        https://bugs.webkit.org/show_bug.cgi?id=197999
        <rdar://problem/50800345>

        Reviewed by Alex Christensen.

        The current frame can change when layout runs, so don't bother retrieving
        the frame until the final layout pass is complete.

        Test: fast/dom/window-inner-width-crash.html

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::innerHeight const): Move frame access past the
        layout operation.
        (WebCore::DOMWindow::innerWidth const): Ditto.
        (WebCore::DOMWindow::scrollX const): Ditto.
        (WebCore::DOMWindow::scrollY const): Ditto.

2019-05-19  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix

        Attempting to build with only Open Source sources on shipping software with
        ASan enabled triggers build failures due to missing includes. This patch adds
        the necessary includes to cleanly build WebCore.

        * Modules/applepay/ApplePaySession.cpp:
        * Modules/applepay/PaymentSession.cpp:
        * Modules/mediastream/UserMediaController.cpp:
        * bindings/js/ScriptController.cpp:
        * contentextensions/ContentExtensionsBackend.cpp:
        * dom/Document.cpp:
        * dom/ScriptedAnimationController.cpp:
        * editing/cocoa/EditorCocoa.mm:
        * editing/cocoa/HTMLConverter.mm:
        * editing/cocoa/WebContentReaderCocoa.mm:
        * editing/markup.cpp:
        * history/CachedFrame.cpp:
        * html/HTMLDocument.cpp:
        * html/HTMLHtmlElement.cpp:
        * html/HTMLMediaElement.cpp:
        * html/ImageDocument.cpp:
        * html/MediaDocument.cpp:
        * html/PluginDocument.cpp:
        * html/parser/HTMLDocumentParser.cpp:
        * html/parser/XSSAuditor.cpp:
        * inspector/InspectorInstrumentation.cpp:
        * inspector/agents/InspectorApplicationCacheAgent.cpp:
        * inspector/agents/InspectorNetworkAgent.cpp:
        * inspector/agents/InspectorPageAgent.cpp:
        * inspector/agents/page/PageNetworkAgent.cpp:
        * loader/ApplicationManifestLoader.cpp:
        * loader/FrameLoader.cpp:
        * loader/LoadTiming.cpp:
        * loader/NetscapePlugInStreamLoader.cpp:
        * loader/ResourceLoader.cpp:
        * loader/SubresourceLoader.cpp:
        * loader/appcache/ApplicationCacheHost.cpp:
        * loader/archive/cf/LegacyWebArchive.cpp:
        * loader/icon/IconLoader.cpp:
        * page/ContextMenuController.cpp:
        * page/FrameView.cpp:
        * page/Page.cpp:
        * page/Performance.cpp:
        * page/PerformanceNavigation.cpp:
        * page/Quirks.cpp:
        * page/UserContentProvider.cpp:
        * page/csp/ContentSecurityPolicy.cpp:
        * page/mac/PageMac.mm:
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        * svg/graphics/SVGImage.cpp:
        * testing/Internals.cpp:

2019-05-19  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197882
        <rdar://problem/50769116>

        Reviewed by Dean Jackson.

        Tests: pointerevents/ios/pointerenter-alone.html
               pointerevents/ios/pointerleave-alone.html
               pointerevents/ios/pointerout-alone.html
               pointerevents/ios/pointerover-alone.html

        * dom/EventNames.h:
        (WebCore::EventNames::isTouchRelatedEventType const):
        (WebCore::EventNames::touchRelatedEventNames const):
        (WebCore::EventNames::extendedTouchRelatedEventNames const):

2019-05-19  Antoine Quint  <graouts@apple.com>

        [Pointer Events] A pointer should be marked as primary for all of its events
        https://bugs.webkit.org/show_bug.cgi?id=197909
        <rdar://problem/50801608>

        Reviewed by Dean Jackson.

        Add an ivar for EventHandler which we'll use in WebKitAdditions code to track the touch identifier
        of the very first touch to start in a given sequence.

        * page/EventHandler.h:

2019-05-19  Darin Adler  <darin@apple.com>

        Change String::number to use "shortest" instead of "fixed precision 6 digits"
        https://bugs.webkit.org/show_bug.cgi?id=178319

        Reviewed by Sam Weinig.

        * accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
        (webkitAccessibleSetNewValue): Use String::numberToStringFixedPrecision
        instead of String::number to be explicit about the fact that it's fixed precision.
        * page/linux/ResourceUsageOverlayLinux.cpp:
        (gcTimerString): Ditto.

        * platform/graphics/ca/win/PlatformCALayerWin.cpp:
        (printTransform): Use appendFixedPrecisionNumber instead of appendNumber
        to be explicit about the fact that it's fixed precision.
        (printLayer): Ditto.
        (WebCore::PlatformCALayerWin::layerTreeAsString const): Ditto.
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (buildVariationSettings): Ditto.

        * svg/SVGNumberList.h: Use appendFixedPrecisionNumber instead of appendNumber
        to be explicit about the fact that it's fixed precision. We'll consider moving
        to shortest later.

        * svg/SVGPathUtilities.cpp:
        (WebCore::buildStringFromPath): Use appendNumberShortest instead of
        appendNumberECMAScript since these are single-precision.

        * svg/SVGPointList.h: Use appendFixedPrecisionNumber instead of appendNumber
        to be explicit about the fact that it's fixed precision. We'll consider moving
        to shortest later.
        * svg/SVGTransformValue.h: Ditto.

2019-05-19  Simon Fraser  <simon.fraser@apple.com>

        Layers painting into shared backing need to contribute to overlap
        https://bugs.webkit.org/show_bug.cgi?id=198021

        Reviewed by Zalan Bujtas.
        
        Layers that paint into a composited (non-root) layer get added to the overlap map so
        that later layers correct overlap them; this is done via the test against currentState.compositingAncestor.

        We need the same logic for layers that paint into shared backing; they need to behave
        the same way in terms of how they contribute to overlap. We already had currentState.backingSharingAncestor
        which was unused, but now use it for this, and correctly null it out when a layer composites.

        Bug was noticed during testing, and not known to affect any websites (though it probably does).
        
        Also move the overlap container popping into updateOverlapMap() so the two callers can
        share the code, and more explicitly track whether a container was pushed.

        Test: compositing/shared-backing/sharing-child-contributes-to-overlap.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::updateOverlapMap const):
        * rendering/RenderLayerCompositor.h:

2019-05-17  Joonghun Park  <pjh0718@gmail.com>

        Implement CSS `display: flow-root` (modern clearfix)
        https://bugs.webkit.org/show_bug.cgi?id=165603

        Reviewed by Zalan Bujtas.

        This change follows https://drafts.csswg.org/css-display-3/#valdef-display-flow-root as below.

        'display: flow-root' generates a block container box, and lays out its contents using flow layout.
        It always establishes a new block formatting context for its contents.

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        * css/CSSValueKeywords.in:
        * css/StyleResolver.cpp:
        (WebCore::equivalentBlockDisplay):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::createsNewFormattingContext const):
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::createFor):
        * rendering/style/RenderStyleConstants.h:

2019-05-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin FindICU
        https://bugs.webkit.org/show_bug.cgi?id=197934

        Reviewed by Michael Catanzaro.

        Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES.

        * CMakeLists.txt:
        * PlatformPlayStation.cmake:
        * PlatformWPE.cmake:

2019-05-17  Alex Christensen  <achristensen@webkit.org>

        Enable legacy EME for iOS WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=197964
        <rdar://problem/50625666>

        Reviewed by Wenson Hsieh.

        This was attempted unsuccessfully in r230169.
        Verified manually that it works as desired.

        * page/RuntimeEnabledFeatures.h:

2019-05-17  Sihui Liu  <sihui_liu@apple.com>

        ASSERTION FAILED: !m_backingStore in WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore(uint64_t)
        https://bugs.webkit.org/show_bug.cgi?id=197741
        <rdar://problem/50625006>

        Reviewed by Youenn Fablet.

        If an open request is made before a delete request, open task should be performed before delete task on the
        database thread. After r242911, open request needs to wait decision of StorageQuotaManager before posting task
        to database thread, while delete request needs not. This makes deletion happen before open.

        We need to make sure tasks are in correct order by not starting next open or delete request when database is in 
        the middle of open or deletion.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
        (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):

2019-05-17  Antoine Quint  <graouts@apple.com>

        Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior
        https://bugs.webkit.org/show_bug.cgi?id=197943
        <rdar://problem/49078202>

        Reviewed by Brent Fulgham.

        Tests: fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html
               platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html

        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::legacyOverflowScrollingTouchPolicy const):
        (WebCore::DocumentLoader::setLegacyOverflowScrollingTouchPolicy):

2019-05-17  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-17  Youenn Fablet  <youenn@apple.com>

        Make AVVideoCaptureSource more robust to configuration failures
        https://bugs.webkit.org/show_bug.cgi?id=197997
        rdar://problem/50875662

        Reviewed by Eric Carlson.

        Covered by manual testing.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):
        Make sure to commit configuration once calling beginConfiguration.
        In case of error in setting frame rate, log the error but continue capturing.

2019-05-17  Rob Buis  <rbuis@igalia.com>

        Implement imagesrcset and imagesizes attributes on link rel=preload
        https://bugs.webkit.org/show_bug.cgi?id=192950

        Reviewed by Youenn Fablet.

        Implement imagesrcset and imagesizes attributes for both Link header
        and link element.

        Tests: imported/w3c/web-platform-tests/preload/dynamic-adding-preload-imagesrcset.html
               imported/w3c/web-platform-tests/preload/link-header-preload-delay-onload.html
               imported/w3c/web-platform-tests/preload/link-header-preload-imagesrcset.html
               imported/w3c/web-platform-tests/preload/link-header-preload-nonce.html
               imported/w3c/web-platform-tests/preload/link-header-preload.html
               imported/w3c/web-platform-tests/preload/onload-event.html
               imported/w3c/web-platform-tests/preload/preload-with-type.html

        * html/HTMLAttributeNames.in:
        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::process):
        * html/HTMLLinkElement.idl:
        * loader/LinkHeader.cpp:
        (WebCore::paramterNameFromString):
        (WebCore::LinkHeader::setValue):
        (WebCore::LinkHeader::LinkHeader):
        * loader/LinkHeader.h:
        (WebCore::LinkHeader::imageSrcSet const):
        (WebCore::LinkHeader::imageSizes const):
        (WebCore::LinkHeader::isViewportDependent const):
        * loader/LinkLoader.cpp:
        (WebCore::LinkLoader::loadLinksFromHeader):
        (WebCore::LinkLoader::preloadIfNeeded):
        (WebCore::LinkLoader::loadLink):
        * loader/LinkLoader.h:

2019-05-17  Keith Rollin  <krollin@apple.com>

        Re-enable generate-xcfilelists
        https://bugs.webkit.org/show_bug.cgi?id=197933
        <rdar://problem/50831677>

        Reviewed by Jonathan Bedard.

        The following two tasks have been completed, and we can re-enable
        generate-xcfilelists:

        Bug 197619 <rdar://problem/50507392> Temporarily disable generate-xcfilelists (197619)
        Bug 197622 <rdar://problem/50508222> Rewrite generate-xcfilelists in Python (197622)

        No new tests -- no change in user-visible functionality.

        * Scripts/check-xcfilelists.sh:

2019-05-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix a typo in some user agent string logic
        https://bugs.webkit.org/show_bug.cgi?id=197992
        <rdar://problem/50895962>

        Reviewed by Brent Fulgham.

        Adjust the major version number for the desktop user agent string.

        * platform/ios/UserAgentIOS.mm:
        (WebCore::standardUserAgentWithApplicationName):

2019-05-17  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r245170): gmail.com inbox table header flickers
        https://bugs.webkit.org/show_bug.cgi?id=198005
        <rdar://problem/50907718>

        Reviewed by Antti Koivisto.

        When a layer started as painting into shared backing, but then became independently
        composited (e.g. by having to clip composited children), it wouldn't have the "overlap"
        indirect compositing reason. This allowed requiresOwnBackingStore() to say that it
        could paint into some ancestor, but this breaks overlap. So in this code path,
        put IndirectCompositingReason::Overlap back on the layer which restores the previous
        behavior.

        Make some logging changes to help diagnose things like this.

        Test: compositing/shared-backing/overlap-after-end-sharing.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::updateBacking):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
        * rendering/RenderLayerCompositor.h:

2019-05-17  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
        https://bugs.webkit.org/show_bug.cgi?id=197975
        <rdar://problem/50865946>

        Reviewed by Antti Koivisto.

        When computeCompositingRequirements() determined that a layer could paint into shared backing, it
        pushed an overlap container. If that layer then converted to normal composting, we'd push a second
        overlap container, which left the overlap map in a bad state for the rest of the compositing
        traversal, causing layers to not get composited when necessary.

        Test: compositing/shared-backing/overlap-after-shared-to-composited.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):

2019-05-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r245401.
        https://bugs.webkit.org/show_bug.cgi?id=197990

        Causing internal build failures (Requested by ShawnRoberts on
        #webkit).

        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/245401

2019-05-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

        SVGElement should detach itself from all its properties before it is deleted
        https://bugs.webkit.org/show_bug.cgi?id=197954

        Reviewed by Simon Fraser.

        Before deleting the SVGElement node, SVGElement::detachAllProperties()
        needs to be called. This will make the properties be detached objects
        which means no change will be committed unless these properties are
        attached to another owner.

        Test: svg/dom/svg-properties-detach-change.html

        * dom/Node.cpp:
        (WebCore::Node::removedLastRef):
        * svg/SVGElement.h:
        (WebCore::SVGElement::detachAllProperties):

2019-05-17  Eric Carlson  <eric.carlson@apple.com>

        Allow sequential playback of media files when initial playback started with a user gesture
        https://bugs.webkit.org/show_bug.cgi?id=197959
        <rdar://problem/50655207>

        Reviewed by Youenn Fablet.

        Test: media/playlist-inherits-user-gesture.html

        * dom/Document.cpp:
        (WebCore::Document::processingUserGestureForMedia const): Return true if it is within
        one second of the last HTMLMediaElement 'ended' event.
        * dom/Document.h:
        (WebCore::Document::mediaFinishedPlaying):

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::parseAttribute): removeBehaviorsRestrictionsAfterFirstUserGesture -> 
        removeBehaviorRestrictionsAfterFirstUserGesture.
        (WebCore::HTMLMediaElement::load): Ditto. Don't call removeBehaviorsRestrictionsAfterFirstUserGesture,
        it will be done in prepareForLoad.
        (WebCore::HTMLMediaElement::prepareForLoad): removeBehaviorsRestrictionsAfterFirstUserGesture -> 
        removeBehaviorRestrictionsAfterFirstUserGesture.
        (WebCore::HTMLMediaElement::audioTrackEnabledChanged): Ditto.
        (WebCore::HTMLMediaElement::play): Ditto.
        (WebCore::HTMLMediaElement::pause): Ditto.
        (WebCore::HTMLMediaElement::setVolume): Ditto.
        (WebCore::HTMLMediaElement::setMuted): Ditto.
        (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Ditto.
        (WebCore::HTMLMediaElement::dispatchEvent): Call document().mediaFinishedPlaying()
        when dispatching the 'ended' event.
        (WebCore::HTMLMediaElement::removeBehaviorRestrictionsAfterFirstUserGesture): Rename. Set
        m_removedBehaviorRestrictionsAfterFirstUserGesture.
        (WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Deleted.
        * html/HTMLMediaElement.h:
        
        * html/HTMLVideoElement.cpp:
        (WebCore:HTMLVideoElement::nativeImageForCurrentTime): Convert to runtime logging.
        (WebCore:HTMLVideoElement::webkitEnterFullscreen): Ditto.
        (WebCore:HTMLVideoElement::webkitSetPresentationMode): Ditto.
        (WebCore:HTMLVideoElement::fullscreenModeChanged): Ditto.

        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::removeBehaviorRestriction): Update log message.

2019-05-17  Brent Fulgham  <bfulgham@apple.com>

        Hardening: Prevent FrameLoader crash due to SetForScope
        https://bugs.webkit.org/show_bug.cgi?id=197458
        <rdar://problem/50368338>

        Reviewed by Chris Dumez.

        Since SetForScope takes action during a function returns, it might cause
        a crash if its scope is broader than the value it is resetting.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadDifferentDocumentItem):

2019-05-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Need WebKitContextMenuItemType to open emoji picker
        https://bugs.webkit.org/show_bug.cgi?id=176760

        Reviewed by Michael Catanzaro.

        Add a new context menu item to insert an emoji.

        * loader/EmptyClients.cpp: Empty implementation of ContextMenuClient::insertEmoji().
        * page/ContextMenuClient.h: Add insertEmoji for GTK port.
        * page/ContextMenuController.cpp:
        (WebCore::ContextMenuController::contextMenuItemSelected): Handle insert emoji action.
        (WebCore::ContextMenuController::populate): Add insert emoji item after select all.
        (WebCore::ContextMenuController::checkOrEnableIfNeeded const): Handle insert emoji action.
        * platform/ContextMenuItem.h: Add insert emoji action.
        * platform/LocalizedStrings.h:
        * platform/gtk/LocalizedStringsGtk.cpp:
        (WebCore::contextMenuItemTagInsertEmoji):

2019-05-16  Greg Doolittle  <gr3g@apple.com>

        AX: Unship some ARIA string reflectors that are to-be-replaced by element reflection
        https://bugs.webkit.org/show_bug.cgi?id=197764
        <rdar://problem/50649689>

        Reviewed by Chris Fleizach.

        Specifically these:
        - ariaActiveDescendant
        - ariaControls
        - ariaDescribedBy
        - ariaDetails
        - ariaErrorMessage
        - ariaFlowTo
        - ariaLabelledBy
        - ariaOwns

        Test: LayoutTests/accessibility/ARIA-reflections.html (updated)

        * accessibility/AriaAttributes.idl:

2019-05-16  Youenn Fablet  <youenn@apple.com>

        CoreAudioCaptureSource should be marked as an audio capture track
        https://bugs.webkit.org/show_bug.cgi?id=197953
        <rdar://problem/50552007>

        Reviewed by Eric Carlson.

        Manually tested.

        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        Mark it as microphone so that it can get muted properly.

2019-05-16  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-16  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Regression: No initial observation when nothing else triggers rendering
        https://bugs.webkit.org/show_bug.cgi?id=197891

        Reviewed by Simon Fraser.

        Schedule a rendering update whenever a new IntersectionObserver target is added.

        Test: intersection-observer/initial-observation.html

        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):

2019-05-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Some character sequences with a variation selector are not rendered
        https://bugs.webkit.org/show_bug.cgi?id=197838

        Reviewed by Michael Catanzaro.

        We get the invalid glyph instead. See http://mts.io/2015/04/21/unicode-symbol-render-text-emoji/. In the table at
        the end the Emoji and Text columns are not correctly rendered. It happens also when copying an emoji from
        GtkEmojiChooser and pasting in WebKit text field, because GTK appends U+FE0F to all emojis to force the emoji
        style. We need to take into account the variation selector when checking if a font can render a combining
        sequence, using FT_Face_GetCharVariantIndex to get the right glyph in case of variation character present.

        * platform/graphics/Font.cpp:
        (WebCore::Font::platformSupportsCodePoint const): Add optional variation parameter.
        (WebCore::Font::canRenderCombiningCharacterSequence const): Take into account variation selector characters
        * platform/graphics/Font.h:
        * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
        (WebCore::FontCascade::fontForCombiningCharacterSequence const): Check variation selectors 0xFE0E and 0xFE0F to
        decide whether to use the emoji or text style.
        * platform/graphics/cocoa/FontCocoa.mm:
        (WebCore::Font::platformSupportsCodePoint const): Return false when a variation character is passed so that
        characters are checked individually.
        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        (WebCore::Font::platformSupportsCodePoint const): Use FT_Face_GetCharVariantIndex when a variation character is
        passed.
        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::harfBuzzFontFunctions): Do not return true when FT_Face_GetCharVariantIndex returns 0.

2019-05-16  Greg Hughes  <ghughes@apple.com>

        Updated screenHasInvertedColors to use AppKit when available
        https://bugs.webkit.org/show_bug.cgi?id=197935
        <rdar://problem/50834405>

        Reviewed by Chris Fleizach.

        * platform/mac/PlatformScreenMac.mm:
        (WebCore::collectScreenProperties):
        (WebCore::screenHasInvertedColors):

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Avoid a recursive descendants layer walk sometimes
        https://bugs.webkit.org/show_bug.cgi?id=197939

        Reviewed by Zalan Bujtas.

        If a layer got composited post-descendants because it needs to clip, for example, we'd do a recursive
        descendant tree walk to add layers to the overlap map. However, all the descendants would already
        have contributed to the overlap map if some non-root ancestor was already composited. So we can
        skip the addDescendantsToOverlapMapRecursive() if we know, before descendants, whether there's
        a non-root composited ancestor.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::CompositingState::hasNonRootCompositedAncestor const):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Clean up code related to compositing overlap map maintenance
        https://bugs.webkit.org/show_bug.cgi?id=197936

        Reviewed by Zalan Bujtas.

        Clarify the logic around updating the overlap map:

        When a layer becomes composited, or paints into a non-root composited layer, we add it to the overlap map
        after traversing descendants (since it only affets layers later in traversal).

        If a layer became composited after traversing descendants, we need to go back and add all the descendants
        to the overlap map with a recursive traversal.

        We can do all this near the end of computeCompositingRequirements/traverseUnchangedSubtree because
        we only check overlap when we enter this function on later layers.

        Add a CompositingOverlap log channel and use it to log the state of the overlap map.

        * platform/Logging.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::addToOverlapMap const):
        (WebCore::RenderLayerCompositor::addDescendantsToOverlapMapRecursive const):
        (WebCore::RenderLayerCompositor::updateOverlapMap const):
        (WebCore::RenderLayerCompositor::addToOverlapMap): Deleted.
        (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-05-15  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r245072): Missing code in Document::styleColorOptions to propagate StyleColor::Options::UseInactiveAppearance
        https://bugs.webkit.org/show_bug.cgi?id=197930
        rdar://problem/49833954

        Reviewed by Wenson Hsieh and Megan Gardner.

        Add some code that was missing from Document in my original patch for r245072.

        * dom/Document.cpp:
        (WebCore::Document::useSystemAppearance const): Drive-by fix code style.
        (WebCore::Document::useInactiveAppearance const): Added.
        (WebCore::Document::styleColorOptions const): Add StyleColor::Options::UseInactiveAppearance.
        * dom/Document.h: Added useInactiveAppearance().

2019-05-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: user gesture toggle should also force user interaction flag
        https://bugs.webkit.org/show_bug.cgi?id=197269

        Reviewed by Joseph Pecoraro.

        Test: inspector/runtime/evaluate-userGestureEmulation-userIsInteracting.html

        * inspector/agents/page/PageRuntimeAgent.cpp:
        (WebCore::PageRuntimeAgent::evaluate):

        * page/ChromeClient.h:
        (WebCore::ChromeClient::userIsInteracting const): Added.
        (WebCore::ChromeClient::setUserIsInteracting): Added.

        * testing/Internals.idl:
        * testing/Internals.h:
        * testing/Internals.cpp:
        (WebCore::Internals::userIsInteracting): Added.

2019-05-15  Zalan Bujtas  <zalan@apple.com>

        Do not create a shape object outside of the layout context
        https://bugs.webkit.org/show_bug.cgi?id=197926
        <rdar://problem/50627858>

        Reviewed by Simon Fraser.

        ShapeOutside objects are used to compute line constrains during layout (in a strict sense, they are part of the layout context and should only be mutated during layout).
        If we don't create one during layout, we probably don't need to know its geometry during paint (or any other non-layout activity) either.

        Test: fast/block/float/float-with-shape-outside-crash.html

        * rendering/FloatingObjects.cpp:
        (WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
        (WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
        * rendering/shapes/ShapeOutsideInfo.cpp:
        (WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine):

2019-05-15  Youenn Fablet  <youenn@apple.com>

        Mark beacon and ping loads as low priority
        https://bugs.webkit.org/show_bug.cgi?id=197919
        <rdar://problem/50818286>

        Reviewed by Alex Christensen.

        No JS observable change of behavior.

        * Modules/beacon/NavigatorBeacon.cpp:
        (WebCore::NavigatorBeacon::sendBeacon):
        * loader/PingLoader.cpp:
        (WebCore::PingLoader::sendPing):

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Clean up RenderLayerCompositor::computeCompositingRequirements() and traverseUnchangedSubtree()
        https://bugs.webkit.org/show_bug.cgi?id=197931

        Reviewed by Zalan Bujtas.

        These functions have grown and become hard to maintain, so try to undo some technical debt.

        Rename "childState" to "currentState" since it's the state we pass to children, but also
        is state we change when the current layer becomes composited.

        Separate the layerWillComposite() lambda from layerWillCompositePostDescendants().

        Group the chunks of code at end of the functions into:
            - updating bits on RenderLayer
            - updating compositingState with changes from children and our state
            - doing post-traversal work on overlapMap and backingSharingState

        Code shared between the two functions is pushed into CompositingState::updateWithDescendantStateAndLayer().

        This moves code around but should not cause any behavior change.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::OverlapExtent::knownToBeHaveExtentUncertainty const):
        (WebCore::RenderLayerCompositor::CompositingState::updateWithDescendantStateAndLayer):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::clipsCompositingDescendants):
        (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildren): Deleted.
        (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildrenForUnchangedSubtree): Deleted.
        (WebCore::RenderLayerCompositor::clipsCompositingDescendants const): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Make LayerOverlapMap able to output to a TextStream
        https://bugs.webkit.org/show_bug.cgi?id=197923

        Reviewed by Zalan Bujtas.

        Make it possible output LayerOverlapMap to a TextStream for logging.

        * rendering/LayerOverlapMap.cpp:
        (WebCore::OverlapMapContainer::rectList const):
        (WebCore::operator<<):
        * rendering/LayerOverlapMap.h:
        (WebCore::LayerOverlapMap::overlapStack const):

2019-05-15  Youenn Fablet  <youenn@apple.com>

        getUserMedia sandbox extensions should not be revoked when a getUserMedia allowed request is being processed
        https://bugs.webkit.org/show_bug.cgi?id=197851

        Reviewed by Alex Christensen.

        Add a completion handler to create a new capture stream.
        This is used by WK2 layer to acknowledge the pending capture request is completed.
        Just after the completion handler, make sure to update the document media state.
        This is done to ensure that, should capture failing, the UIProcess
        knows about it and can manage proper sandbox extension revocation.

        Test: fast/mediastream/gum-stop-track.html

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::allow):
        (WebCore::UserMediaRequest::PendingActivationMediaStream::PendingActivationMediaStream):
        (WebCore::UserMediaRequest::PendingActivationMediaStream::~PendingActivationMediaStream):
        * Modules/mediastream/UserMediaRequest.h:
        (WebCore::UserMediaRequest::PendingActivationMediaStream::create):
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled):
        * platform/mock/MockRealtimeMediaSourceCenter.h:

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Make LOG_WITH_STREAM more efficient
        https://bugs.webkit.org/show_bug.cgi?id=197905

        Reviewed by Alex Christensen.

        No longer need to conditionalize ClipRects logging on the channel being enabled
        since LOG_WITH_STREAM fix the performance problem.

        Convert some RenderLayerCompositor logging to use LOG_WITH_STREAM.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::clipRectsLogEnabled): Deleted.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

2019-05-15  Simon Fraser  <simon.fraser@apple.com>

        Move RenderLayerCompositor's OverlapMap to its own file
        https://bugs.webkit.org/show_bug.cgi?id=197915

        Reviewed by Alex Christensen.

        Move OverlapMap to its own file.
        Make use of RectList, which was in the file but unused!
        Allocate OverlapMapContainer on the heap both to avoid header pollution of internals,
        and because they will get bigger in future.

        No behavior change.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * rendering/LayerOverlapMap.cpp: Added.
        (WebCore::RectList::append):
        (WebCore::RectList::intersects const):
        (WebCore::OverlapMapContainer::add):
        (WebCore::OverlapMapContainer::overlapsLayers const):
        (WebCore::OverlapMapContainer::unite):
        (WebCore::LayerOverlapMap::LayerOverlapMap):
        (WebCore::LayerOverlapMap::add):
        (WebCore::LayerOverlapMap::overlapsLayers const):
        (WebCore::LayerOverlapMap::pushCompositingContainer):
        (WebCore::LayerOverlapMap::popCompositingContainer):
        * rendering/LayerOverlapMap.h: Added.
        (WebCore::LayerOverlapMap::isEmpty const):
        (WebCore::LayerOverlapMap::geometryMap const):
        (WebCore::LayerOverlapMap::geometryMap):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::computeExtent const):
        (WebCore::RenderLayerCompositor::addToOverlapMap):
        (WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
        (WebCore::OverlapMapContainer::add): Deleted.
        (WebCore::OverlapMapContainer::overlapsLayers const): Deleted.
        (WebCore::OverlapMapContainer::unite): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted.
        (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-05-15  Devin Rousso  <drousso@apple.com>

        Web Automation: elements larger than the viewport have incorrect in-view center point
        https://bugs.webkit.org/show_bug.cgi?id=195696
        <rdar://problem/48737122>

        Reviewed by Simon Fraser.

        Original patch by Brian Burg <bburg@apple.com>.

        Some conversion methods do not exist for `FloatRect`/`FloatPoint`. Fill them in as needed,
        and export some symbols used by WebDriver code to compute an element's in-view center point
        in various coordinate systems.

        * dom/TreeScope.h:
        * dom/TreeScope.cpp:
        (WebCore::TreeScope::elementsFromPoint): Added.
        * page/FrameView.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::absoluteToLayoutViewportPoint const): Added.
        (WebCore::FrameView::layoutViewportToAbsoluteRect const): Added.
        (WebCore::FrameView::absoluteToLayoutViewportRect const): Added.
        * platform/ScrollView.h:
        * platform/ScrollView.cpp:
        (WebCore::ScrollView::viewToContents const): Added.
        (WebCore::ScrollView::contentsToView const): Added.
        (WebCore::ScrollView::contentsToRootView const): Added.
        * platform/Widget.h:
        * platform/Widget.cpp:
        (WebCore::Widget::convertToRootView const): Added.
        (WebCore::Widget::convertFromRootView const): Added.
        (WebCore::Widget::convertToContainingView const): Added.
        (WebCore::Widget::convertFromContainingView const): Added.

2019-05-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        Missing cursor/caret showing in search field on google.com
        https://bugs.webkit.org/show_bug.cgi?id=197862
        <rdar://problem/50291989>

        Reviewed by Simon Fraser.

        In this bug, the search field is inside of a fixed position container, which is inside of an empty "overflow:
        hidden" form element (the new layout test demonstrates a simple version of this). The layer of the fixed
        position container's renderer has an overflow clipping layer of itself, and its clipping rect is non-empty, so
        the heuristic initially identifies the layer as not fully clipped. However, as the heuristic ascends the
        RenderLayer tree, it then finds the layer for the "overflow: hidden" form element's renderer; this layer is
        completely clipped, which causes the heuristic to incorrectly believe that the editable element is completely
        clipped.

        To fix the bug, this patch reworks the clipping portion of the heuristic, such that we no longer need to ascend
        the layer tree. Instead of computing the clip rect relative to the nearest ancestor that has an overflow clip
        and then walking up the layer tree repeating this process, simply compute the clip rect relative to RenderView's
        layer, and then walk up to the parent frame and repeat if necessary.

        Test: editing/selection/ios/do-not-hide-selection-in-visible-field.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::isTransparentOrFullyClippedRespectingParentFrames const):

2019-05-14  Andy Estes  <aestes@apple.com>

        [Apple Pay] Payment APIs should be completely disabled in web views into which clients have injected user scripts
        https://bugs.webkit.org/show_bug.cgi?id=197751
        <rdar://problem/50631563>

        Reviewed by Alex Christensen.

        In r243324, when a document has had user agent scripts injected into it, payment APIs were
        disabled at runtime by having all entry points return falsy values or throw exceptions
        (e.g., ApplePaySession.canMakePayments() returns false).

        In the case of user scripts in particular (e.g., WKUserScript), since we know whether these
        exist at the time we create a document's DOMWindow, we can do better than r243324 by
        completely disabling the payment APIs in the presence of user scripts.

        To achieve this, this change introduces the 'EnabledByContext' extended attribute for
        interfaces, which instructs the bindings generator to add a conjunct to the payment API
        constructors that asks the interface's implementation class whether it should be enabled for
        a given ScriptExecutionContext. The PaymentRequest and ApplePaySession interfaces adopt this
        new extended attribute to implement the new user script check.

        Added new API tests.

        * Modules/applepay/ApplePaySession.idl:
        * Modules/applepay/PaymentCoordinator.cpp:
        (WebCore::PaymentCoordinator::shouldEnableApplePayAPIs const):
        * Modules/applepay/PaymentCoordinator.h:
        * Modules/applepay/PaymentSession.cpp:
        (WebCore::PaymentSession::enabledForContext):
        * Modules/applepay/PaymentSession.h:
        * Modules/paymentrequest/PaymentHandler.cpp:
        (WebCore::PaymentHandler::enabledForContext):
        * Modules/paymentrequest/PaymentHandler.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::enabledForContext):
        * Modules/paymentrequest/PaymentRequest.h:
        * Modules/paymentrequest/PaymentRequest.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (NeedsRuntimeCheck):
        (GenerateRuntimeEnableConditionalString):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/preprocess-idls.pl:
        (GenerateConstructorAttributes):
        * bindings/scripts/test/JS/JSTestEnabledForContext.cpp: Added.
        * bindings/scripts/test/JS/JSTestEnabledForContext.h: Added.
        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
        (WebCore::JSTestGlobalObject::finishCreation):
        (WebCore::jsTestGlobalObjectTestEnabledForContextConstructorGetter):
        (WebCore::jsTestGlobalObjectTestEnabledForContextConstructor):
        (WebCore::setJSTestGlobalObjectTestEnabledForContextConstructorSetter):
        (WebCore::setJSTestGlobalObjectTestEnabledForContextConstructor):
        * bindings/scripts/test/TestEnabledForContext.idl: Added.

2019-05-14  Robin Morisset  <rmorisset@apple.com>

        [WHLSL] parseEffectfulSuffix() is never called
        https://bugs.webkit.org/show_bug.cgi?id=195864
        <rdar://problem/50746278>

        Reviewed by Myles C. Maxfield.

        The fix is trivial: when parseEffectfulPrefix does not see a ++ or --, it must call parseEffectfulSuffix.

        No test yet, as it is not testable until the property resolver is finished.
        It will be tested with the rest of the compiler, when we port the testsuite from the js implementation (it already covers this case).

        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parseEffectfulPrefix):

2019-05-14  Robin Morisset  <rmorisset@apple.com>

        [WHLSL] parseEffectfulAssignment should not call parseCallExpression directly
        https://bugs.webkit.org/show_bug.cgi?id=197890

        Reviewed by Myles Maxfield.

        callExpression already appears in effSuffix which is in effPrefix which is in effAssignment, so having it directly in effAssignment as well is useless (and ambiguous).
        I've already fixed the grammar (https://github.com/gpuweb/WHLSL/commit/a07005f4d692fe3370618dca5db218992b362049), the grammar was always good, this patch is fixing the parser.

        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::parseEffectfulAssignment):

2019-05-14  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed restoration of non-unified build.

        * Modules/cache/DOMCache.cpp:
        * bindings/js/JSLazyEventListener.h:
        * loader/NavigationScheduler.h:
        * page/Quirks.cpp:
        * page/Quirks.h:
        * rendering/ClipRect.cpp:

2019-05-14  Zalan Bujtas  <zalan@apple.com>

        Do not try to issue repaint while the render tree is being destroyed.
        https://bugs.webkit.org/show_bug.cgi?id=197461
        <rdar://problem/50368992>

        Reviewed by Simon Fraser.

        Test: http/tests/svg/crash-on-reload-with-filter.html

        We don't need to compute repaint rects when the render tree is getting torn down. We'll issue a full repaint at some point.
        Also during full render tree destruction the inline tree state is undefined. We should avoid accessing it.

        * rendering/svg/RenderSVGResourceContainer.cpp:
        (WebCore::RenderSVGResourceContainer::markAllClientLayersForInvalidation):

2019-05-14  Youenn Fablet  <youenn@apple.com>

        A service worker process should app nap when all its clients app nap
        https://bugs.webkit.org/show_bug.cgi?id=185626
        <rdar://problem/46785908>

        Reviewed by Alex Christensen.

        Update RegistrableDomain to work with SecurityOriginData.
        Add internal API to enable accessing to service worker process throttle state.

        Test: http/wpt/service-workers/mac/processSuppression.https.html

        * platform/RegistrableDomain.h:
        (WebCore::RegistrableDomain::RegistrableDomain):
        (WebCore::RegistrableDomain::matches const):
        (WebCore::RegistrableDomain::registrableDomainFromHost):
        * testing/ServiceWorkerInternals.cpp:
        (WebCore::ServiceWorkerInternals::isThrottleable const):
        * testing/ServiceWorkerInternals.h:
        * testing/ServiceWorkerInternals.idl:
        * workers/service/SWClientConnection.h:
        * workers/service/context/SWContextManager.cpp:
        * workers/service/context/SWContextManager.h:
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::serverToContextConnectionCreated):
        * workers/service/server/SWServer.h:
        (WebCore::SWServer::Connection::server const):
        (WebCore::SWServer::connections const):
        * workers/service/server/SWServerToContextConnection.h:

2019-05-14  Youenn Fablet  <youenn@apple.com>

        getUserMedia capture changes on iOS after homing out
        https://bugs.webkit.org/show_bug.cgi?id=197707

        Reviewed by Eric Carlson.

        In case of muting an AVVideoCaptureSource on iOS, the session is cleared.
        We need to store the preset information, to setup the new session on unnmuting correctly.
        Manually tested.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):

2019-05-14  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Update grid when changing auto repeat type
        https://bugs.webkit.org/show_bug.cgi?id=197849

        Reviewed by Javier Fernandez.

        Test: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html

        This patch makes two 'repeat()' values for 'grid-template' be considered
        to be different if one uses 'auto-fill' and the other 'auto-fit'.

        Previously, they were considered to be equal if the repeated values
        were the same, without comparing the repeat type. Therefore, the grid
        was not updated when setting both values one after the other.

        * css/CSSGridAutoRepeatValue.cpp:
        (WebCore::CSSGridAutoRepeatValue::equals const):
        * css/CSSGridAutoRepeatValue.h:

2019-05-14  Antti Koivisto  <antti@apple.com>

        Event region computation should respect transforms
        https://bugs.webkit.org/show_bug.cgi?id=197836
        <rdar://problem/50762971>

        Reviewed by Darin Adler.

        * platform/graphics/transforms/AffineTransform.cpp:
        (WebCore::AffineTransform::mapRegion const):

        Add support for transforming regions. Non-rectlinear results use enclosing rects.

        * platform/graphics/transforms/AffineTransform.h:
        * rendering/EventRegion.cpp:
        (WebCore::EventRegionContext::EventRegionContext):
        (WebCore::EventRegionContext::pushTransform):
        (WebCore::EventRegionContext::popTransform):
        (WebCore::EventRegionContext::unite):
        (WebCore::EventRegionContext::contains const):

        Add a context object that holds the current transform.

        * rendering/EventRegion.h:
        (WebCore::EventRegion::makeContext):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):
        * rendering/PaintInfo.h:

        Replace the region object with the context.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayerByApplyingTransform):

        Apply transforms to regions if needed.

        (WebCore::RenderLayer::collectEventRegionForFragments):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateEventRegion):
        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::paintFlow):

2019-05-14  Youenn Fablet  <youenn@apple.com>

        Video frame resizing should be using Trim
        https://bugs.webkit.org/show_bug.cgi?id=197722
        <rdar://problem/50602188>

        Reviewed by Eric Carlson.

        Move from letter box to trim mode for resizing.
        This ensures no black stripes are present when rendering the stream.

        Test: fast/mediastream/resize-trim.html

        * platform/cocoa/VideoToolboxSoftLink.cpp:
        * platform/cocoa/VideoToolboxSoftLink.h:
        * platform/graphics/cv/ImageTransferSessionVT.mm:
        (WebCore::ImageTransferSessionVT::ImageTransferSessionVT):

2019-05-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Shrink sizeof(UnlinkedFunctionExecutable) more
        https://bugs.webkit.org/show_bug.cgi?id=197833

        Reviewed by Darin Adler.

        * testing/Internals.cpp:
        (WebCore::Internals::parserMetaData):

2019-05-14  Antoine Quint  <graouts@apple.com>

        [Pointer Events] The pointerenter and pointerleave events target the wrong element on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197881
        <rdar://problem/50187657>

        Reviewed by Dean Jackson.

        Test: pointerevents/ios/enter-leave-target.html

        The "pointerenter" and "pointerleave" should target the element on which the event listener was added and not
        the element that would otherwise hit test. This matches the behavior of "mouseenter" and "mouseleave" on macOS.

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):

2019-05-14  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [CG] Adding support for HEIF-sequence ('public.heics') images
        https://bugs.webkit.org/show_bug.cgi?id=197384

        Reviewed by Simon Fraser.

        -- Get the image repetitionCount and the frame duration.
        -- Add a new function setAdditionalSupportedImageTypesForTesting() which
           takes a delimited String.
        -- Add internal APIs to retrive the image frame count and the frame
           duration.

        Tests: fast/images/animated-heics-draw.html
               fast/images/animated-heics-verify.html

        * platform/graphics/ImageSource.h:
        * platform/graphics/cg/ImageDecoderCG.cpp:
        (WebCore::animationPropertiesFromProperties):
        (WebCore::animationHEICSPropertiesFromProperties):
        (WebCore::ImageDecoderCG::repetitionCount const):
        (WebCore::ImageDecoderCG::frameDurationAtIndex const):
        * platform/graphics/cg/UTIRegistry.cpp:
        (WebCore::setAdditionalSupportedImageTypesForTesting):
        * platform/graphics/cg/UTIRegistry.h:
        * testing/Internals.cpp:
        (WebCore::Internals::imageFrameCount):
        (WebCore::Internals::imageFrameDurationAtIndex):
        * testing/Internals.h:
        * testing/Internals.idl:
        * testing/js/WebCoreTestSupport.cpp:
        (WebCoreTestSupport::setAdditionalSupportedImageTypesForTesting):
        * testing/js/WebCoreTestSupport.h:

2019-05-14  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Use max size to compute auto repeat tracks
        https://bugs.webkit.org/show_bug.cgi?id=197854

        Reviewed by Javier Fernandez.

        When available size is indefinite we should use max size to compute the number of auto repeat tracks.

        The spec text is very clear (https://drafts.csswg.org/css-grid/#auto-repeat):
        > When auto-fill is given as the repetition number, if the grid container
        > has a definite size or **max size** in the relevant axis...

        So far we were not doing that for widths, in this patch we modify RenderGrid::computeAutoRepeatTracksCount()
        to do the same than for heights.

        We also take advantage to fix problems related to min|max sizes and box-sizing property,
        that were inconsistent for columns and rows.

        Tests: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html
               imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::computeAutoRepeatTracksCount const):

2019-05-14  Joonghun Park  <pjh0718@gmail.com>

        Implement page-break-* and -webkit-column-break-* as legacy-shorthands.
        https://bugs.webkit.org/show_bug.cgi?id=197656

        Reviewed by Darin Adler.

        According to https://drafts.csswg.org/css-cascade-4/#legacy-shorthand,
        implement page-break-* and -webkit-column-break-* as legacy-shorthands for break-*.

        This change also serialize page-break-* properties
        to CSSStyleDeclaration,
        per https://drafts.csswg.org/css-break/#page-break-properties.

        * css/CSSProperties.json:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertFontSynthesis):
        (WebCore::StyleBuilderConverter::convertPageBreakBetween): Deleted.
        (WebCore::StyleBuilderConverter::convertPageBreakInside): Deleted.
        (WebCore::StyleBuilderConverter::convertColumnBreakBetween): Deleted.
        (WebCore::StyleBuilderConverter::convertColumnBreakInside): Deleted.
        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::getPropertyValue const):
        (WebCore::StyleProperties::pageBreakPropertyValue const):
        * css/StyleProperties.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseValueStart):
        (WebCore::mapFromPageBreakBetween):
        (WebCore::CSSPropertyParser::parseShorthand):
        (WebCore::isLegacyBreakProperty): Deleted.

2019-05-14  Javier Fernandez  <jfernandez@igalia.com>

        Implement "line-break: anywhere"
        https://bugs.webkit.org/show_bug.cgi?id=181169
        <rdar://problem/48507088>

        Reviewed by Myles C. Maxfield.

        The CSS WG resolved [1] to add a new value 'anywhere' to the 'line-break'
        CSS property in order to allow additional breaking opportunities not
        considered in the definition of the 'word-break: break-all'.

        [1] https://github.com/w3c/csswg-drafts/issues/1171

        Tests: imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-003.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-004.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-005.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-006.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-007.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-008.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-009.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-010.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-011.html
               imported/w3c/web-platform-tests/css/css-text/line-break/line-break-anywhere-012.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-016.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-017.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-018.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-019.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-021.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-022.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-023.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator LineBreak const):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * rendering/BreakLines.h:
        (WebCore::nextBreakablePositionBreakCharacter):
        (WebCore::isBreakable):
        * rendering/RenderText.cpp:
        (WebCore::mapLineBreakToIteratorMode):
        (WebCore::RenderText::computePreferredLogicalWidths):
        * rendering/line/BreakingContext.h:
        (WebCore::BreakingContext::handleText):
        * rendering/style/RenderStyleConstants.h:

2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, build fix after 245258, missing ThreadSpecific.h include
        https://bugs.webkit.org/show_bug.cgi?id=197146

        * platform/ios/wak/WebCoreThread.mm:

2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Simplify GCThread and CompilationThread flags by adding them to WTF::Thread
        https://bugs.webkit.org/show_bug.cgi?id=197146

        Reviewed by Saam Barati.

        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::hasPendingActivity const):
        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::hasPendingActivity const):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::hasPendingActivity const):

2019-05-13  Geoffrey Garen  <ggaren@apple.com>

        Downgrade RELEASE_ASSERT TO RELEASE_LOG_FAULT for SQLite Class A files
        https://bugs.webkit.org/show_bug.cgi?id=197760

        Reviewed by Jer Noble.

        Only makeSafeToUseMemoryMapForPath() if needed. (Fixed missing brace.)

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2019-05-13  Tadeu Zagallo  <tzagallo@apple.com>

        JSObject::getOwnPropertyDescriptor is missing an exception check
        https://bugs.webkit.org/show_bug.cgi?id=197693

        Reviewed by Saam Barati.

        JSObject::getOwnPropertyDescriptor assumes that getOwnPropertySlot returns false
        if an exception is thrown, but that was not true for JSLocation::getOwnPropertySlotCommon.

        This is already covered by http/tests/security/cross-frame-access-getOwnPropertyDescriptor.html

        * bindings/js/JSLocationCustom.cpp:
        (WebCore::getOwnPropertySlotCommon):
        (WebCore::JSLocation::getOwnPropertySlot):
        (WebCore::JSLocation::getOwnPropertySlotByIndex):

2019-05-13  Antti Koivisto  <antti@apple.com>

        REGRESSION (r245208): compositing/shared-backing/sharing-bounds-non-clipping-shared-layer.html asserts
        https://bugs.webkit.org/show_bug.cgi?id=197818
        <rdar://problem/50705762>

        Reviewed by Simon Fraser.

        Tests: fast/scrolling/ios/event-region-scale-transform-shared.html
               fast/scrolling/ios/event-region-translate-transform-shared.html

        This fixes the assert. However the added tests demonstrate that transform is not taken into account
        when computing the event region, https://bugs.webkit.org/show_bug.cgi?id=197836.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateEventRegion):

2019-05-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Font formatting options don't work when composing a message in Yahoo mail
        https://bugs.webkit.org/show_bug.cgi?id=197813
        <rdar://problem/49382250>

        Reviewed by Darin Adler.

        The bug happens because on mousedown, the "Aa Font" menu item's event handler hides itself before changing the
        font at the text selection. This causes us to clear the selection in FocusController::setFocusedElement.

        There is existing logic in clearSelectionIfNeeded that would normally prevent us from clearing the selection due
        to the mousePressNode not being able to start a selection. However, since the clickable element in this case is
        hidden during mousedown, it is missing a renderer, and we bail from the `mousePressNode->renderer() &&
        !mousePressNode->canStartSelection()` check as a result.

        This check was orginally added in https://trac.webkit.org/r24334 to avoid clearing the selection when clicking
        a button; the intention appears to have been making it so that clicking on something that could not start a
        selection (back then, synonymous with -webkit-user-select: ignore;) would not clear the current selection; to
        this end, it seems odd to additionally require that the thing being clicked should still have a renderer, so
        it seems safe to remove this requirement.

        Test: editing/selection/preserve-selection-when-clicking-button.html

        * page/FocusController.cpp:
        (WebCore::clearSelectionIfNeeded):

2019-05-13  Eric Carlson  <eric.carlson@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=197793
        <rdar://problem/46429187>

        Unreviewed, build fix after r245199.

        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):

2019-05-13  Darin Adler  <darin@apple.com>

        WHLSLPrepare.cpp always recompiles, even if nothing was changed
        https://bugs.webkit.org/show_bug.cgi?id=197151

        Reviewed by Dan Bernstein and Keith Rollin.

        * DerivedSources-input.xcfilelist: Script updated this automatically after
        DerivedSources.make was corrected.
        * DerivedSources-output.xcfilelist: Ditto, although I had to manually remove
        one bogus leftover reference to WHLSLStandardLibrary.cpp.

        * DerivedSources.make: Updated the rule that builds WHSLStandardLibrary.h to
        no longer refer to nonexistent WHLSLStandardLibrary.cpp. Because the dependency
        was on a file that was never created, the rule to regenerate WHSLStandardLibrary.h
        was running on every build, instead of only when one of the dependencies changed.

2019-05-12  Simon Fraser  <simon.fraser@apple.com>

        When the set of backing-sharing layers changes, we need to issue a repaint
        https://bugs.webkit.org/show_bug.cgi?id=197825

        Reviewed by Zalan Bujtas.

        If the set of layers painting into a shared backing store changes, we need
        to repaint that backing store. This happens when scrolling as shared layers
        enter the visible area.

        Test: compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::setBackingSharingLayers):

2019-05-02  Simon Fraser  <simon.fraser@apple.com>

        Add logging for RenderLayer clip rects
        https://bugs.webkit.org/show_bug.cgi?id=197547

        Reviewed by Zalan Bujtas.

        Add a ClipRects log channel, and stream output for ClipRect and ClipRects.

        The ClipRect code is performance sensitive, even in debug, so guard the log sites
        with clipRectsLogEnabled() because the macro still evaluates its arguments even if
        the channel is disabled (we need some better way to log that doesn't do this).

        * platform/Logging.h:
        * rendering/ClipRect.cpp:
        (WebCore::operator<<):
        * rendering/ClipRect.h:
        * rendering/RenderLayer.cpp:
        (WebCore::operator<<):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:

2019-05-12  Simon Fraser  <simon.fraser@apple.com>

        Refactor composited backing-sharing code
        https://bugs.webkit.org/show_bug.cgi?id=197824

        Reviewed by Zalan Bujtas.

        Clean up the backing-sharing code to share more code, and make it easier to understand.
        
        Moves more logic into member functions on BackingSharingState, which are named to make
        their functions clearer: startBackingSharingSequence/endBackingSharingSequence.
        
        computeCompositingRequirements() and traverseUnchangedSubtree() now just call
        updateBeforeDescendantTraversal/updateAfterDescendantTraversal.

        No behavior change.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::willBeDestroyed):
        (WebCore::RenderLayerBacking::setBackingSharingLayers): Remove the early return, since
        we need to call setBackingProviderLayer() on the sharing layers in both code paths.
        (WebCore::RenderLayerBacking::removeBackingSharingLayer):
        (WebCore::RenderLayerBacking::clearBackingSharingLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidate const):
        (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer):
        (WebCore::RenderLayerCompositor::BackingSharingState::startBackingSharingSequence):
        (WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence):
        (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):
        (WebCore::RenderLayerCompositor::BackingSharingState::updateAfterDescendantTraversal):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-05-12  Youenn Fablet  <youenn@apple.com>

        Use clampTo in AVVideoCaptureSource::setSizeAndFrameRateWithPreset
        https://bugs.webkit.org/show_bug.cgi?id=197704

        Reviewed by Alex Christensen.

        Use clampTo as suggested in bug 196214 review.
        No change of behavior.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):

2019-05-12  Youenn Fablet  <youenn@apple.com>

        Use the main screen for screen capture
        https://bugs.webkit.org/show_bug.cgi?id=197804
        <rdar://problem/47671383>

        Reviewed by Eric Carlson.

        If the main screen, i.e. the screen that has focus at the time of
        selection of the screen to capture, is capturable, add it to the list
        of screen devices, but do not add any other screen.
        This will make sure the main screen is selected.
        Manually tested.

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::screenCaptureDevices):

2019-05-12  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Suppress extra didReceiveAuthenticationChallenge call when accessing a server which checks basic auth.
        https://bugs.webkit.org/show_bug.cgi?id=197650

        Reviewed by Fujii Hironori.

        When Curl port accesses a page which checks Basic Authentication credential and server trust challenge occurs,
        Curl port calls extra didReceiveAuthenticationChallenge unnecessarily.
        This is because Curl port discards information about allowed server trust challenge before in NetworkDataTaskCurl::restartWithCredential.

        Test: http/tests/ssl/curl/certificate-and-authentication.html

        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::isServerTrustEvaluationDisabled):

2019-05-11  Simon Fraser  <simon.fraser@apple.com>

        Overflow scroll that becomes non-scrollable should stop being composited
        https://bugs.webkit.org/show_bug.cgi?id=197817
        <rdar://problem/50697290>

        Reviewed by Antti Koivisto.

        Remove the iOS-specific #ifdef around code that triggers a compositing re-evaluation
        when scrolling state changes.

        Test: compositing/scrolling/async-overflow-scrolling/become-non-scrollable.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):

2019-05-11  Simon Fraser  <simon.fraser@apple.com>

        Layer bounds are incorrect for sharing layers that paint with transforms
        https://bugs.webkit.org/show_bug.cgi?id=197768
        <rdar://problem/50695493>

        Reviewed by Zalan Bujtas.

        We don't need to traverse shared layers if the backing-provider has overflow clip,
        because we know they are containing-block descendants and therefore clipped.

        Note tha the CSS "clip" property doesn't guarantee this, because the clip rect
        can be larger than the element, so in that case we just traverse shared layers.

        Tests: compositing/shared-backing/sharing-bounds-clip.html
               compositing/shared-backing/sharing-bounds-non-clipping-shared-layer.html
               compositing/shared-backing/sharing-bounds-transformed-sharing-layer.html
               compositing/shared-backing/sharing-bounds.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateCompositedBounds):

2019-05-11  Simon Fraser  <simon.fraser@apple.com>

        Translucent gradient rendering bug due to will-change transform
        https://bugs.webkit.org/show_bug.cgi?id=197654
        <rdar://problem/50547664>

        Reviewed by Dean Jackson.
        
        We failed to re-evaluate 'contentsOpaque' when a background changed, because this
        happened in updateGeometry() and that doesn't run for background changes.
        
        However, 'contentsOpaque' also requires knowing about geometry because we have to
        turn it off when there's subpixel positioning, and updateConfiguration()
        runs before updateGeometry().
        
        So compute m_hasSubpixelRounding in updateGeometry() and set contentsOpaque in
        updateAfterDescendants().

        Test: compositing/contents-opaque/background-change-to-transparent.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::updateAfterDescendants):
        * rendering/RenderLayerBacking.h:

2019-05-11  Simon Fraser  <simon.fraser@apple.com>

        When the scroller hosting a shared layer becomes non-scrollable, content disappears
        https://bugs.webkit.org/show_bug.cgi?id=197766
        <rdar://problem/50695808>

        Reviewed by Zalan Bujtas.

        RenderLayerCompositor::requiresOwnBackingStore() should return true for a layer that shares
        its backing store. We always made backing for overlap layers, so even  if the sharing layers
        have no painted content, this should rarely be a backing store memory regression.

        Test: compositing/shared-backing/overflow-scroll/sharing-layer-becomes-non-scrollable.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

2019-05-11  Simon Fraser  <simon.fraser@apple.com>

        Backing-sharing layers with transforms render incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=197692
        <rdar://problem/50652127>

        Reviewed by Antti Koivisto.

        Layers that paint into shared backing need to enter the RenderLayer painting code
        in a way that paints the filters, transforms, opacity and blending.
        
        RenderLayerBacking::paintIntoLayer() normally enters at paintLayerContents(), because
        the effects are rendered via the GraphicsLayer, but shared layers will paint effects.
        Note that if the backing-provider has effects, it will be the stacking context
        for the shared layers, so it's correct that sharing layers are impacted by effects
        on the backing-provider.

        In addition, we have to ensure that we don't over-eagerly make layers shared.
        Consider:
        
        <div class="clipping">
            <div class="sharing">
                <div class="inner">
                </div>
            </div>
        </div>
        
        Here "clipping" is the provider layer, "sharing" paints into shared backing, but
        we don't want to also mark "inner" as sharing, since "sharing" will just paint it.
        This is akin to avoiding unnecessary compositing of z-order descendants when they can just
        paint.
        
        To do this we need to ensure that sharing layers are treated like compositing layers
        in the overlap map, i.e. when a layer is sharing, we call overlapMap.pushCompositingContainer(),
        and later overlapMap.popCompositingContainer().

        Tests: compositing/shared-backing/nested-shared-layers-with-opacity.html
               compositing/shared-backing/shared-layer-has-blending.html
               compositing/shared-backing/shared-layer-has-filter.html
               compositing/shared-backing/shared-layer-has-opacity.html
               compositing/shared-backing/shared-layer-has-reflection.html
               compositing/shared-backing/shared-layer-has-transform.html
               compositing/shared-backing/shared-layer-isolates-blending.html
               compositing/shared-backing/shared-transformed-layer-bounds.html
               compositing/shared-backing/sharing-layer-becomes-non-scrollable.html
               compositing/shared-backing/sharing-layer-has-effect.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayer):
        (WebCore::RenderLayer::paintLayerWithEffects):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintIntoLayer):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const):
        (WebCore::backingProviderLayerCanIncludeLayer):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

2019-05-10  Youenn Fablet  <youenn@apple.com>

        A service worker instance should be terminated when its SWServer is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=197801
        <rdar://problem/50587270>

        Reviewed by Chris Dumez.

        On session destruction, the SWServer is destroyed.
        At that time, it should terminate all its running service workers.
        Covered by updated API test.

        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::~SWServer):

2019-05-10  Eric Carlson  <eric.carlson@apple.com>

        [iOS] HTMLMediaElement sometimes doesn't send 'webkitplaybacktargetavailabilitychanged' event
        https://bugs.webkit.org/show_bug.cgi?id=197793
        <rdar://problem/46429187>

        Reviewed by Jer Noble.

        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::MediaElementSession): Initialize m_hasPlaybackTargets.

        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange): Log
        target availability.
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]): Call the client 
        externalOutputDeviceAvailableDidChange method after the AVRouteDetector is available.

2019-05-09  Geoffrey Garen  <ggaren@apple.com>

        Downgrade RELEASE_ASSERT TO RELEASE_LOG_FAULT for SQLite Class A files
        https://bugs.webkit.org/show_bug.cgi?id=197760

        Reviewed by Jer Noble.

        We have all the data we need, and this crash is happening more than
        expected.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2019-05-10  Zalan Bujtas  <zalan@apple.com>

        [iOS] baidu.com: Synthetic bold renders too far apart, appears doubled.
        https://bugs.webkit.org/show_bug.cgi?id=197781
        <rdar://problem/48027412>

        Reviewed by Simon Fraser.

        Synthetic bold is essentially two regular glyphs painted with an offset. While on macOS this offset is always 1px (CSS), on iOS larger font produces higher offset value. At paint time, this offset value (in CSS px unit) get converted
        to a device pixel value taking context scale into account. This conversion ensures that the gap between the 2 regular glyphs won't get wider (in device pixels) as the user pinch zooms in.
        This works as long as the scale on the context is >= 1. This patch ensures that a scaled down context won't blow up this gap.

        Test: fast/text/large-synthetic-bold-with-scale-transform.html

        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::FontCascade::drawGlyphs):

2019-05-10  Brent Fulgham  <bfulgham@apple.com>

        Gracefully handle inaccessible font face data
        https://bugs.webkit.org/show_bug.cgi?id=197762
        <rdar://problem/50433861>

        Reviewed by Per Arne Vollan.

        Make sure CSS Font Face handling gracefully recovers from
        missing font data.

        Test: fast/text/missing-font-crash.html

        * css/CSSFontFace.cpp:
        (WebCore::CSSFontFace::fontLoadEventOccurred):
        (WebCore::CSSFontFace::timeoutFired):
        (WebCore::CSSFontFace::fontLoaded):
        (WebCore::CSSFontFace::font):

2019-05-10  Simon Fraser  <simon.fraser@apple.com>

        ASSERT(isSelfPaintingLayer() || hasSelfPaintingLayerDescendant()) on nytimes.com after r245170
        https://bugs.webkit.org/show_bug.cgi?id=197776

        Reviewed by Zalan Bujtas.

        Only try to paint into shared backing for layers that are able to be composited. This
        avoids trying to do sharing for non-self-painting layers, which doesn't make sense.

        Test: compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fix a bunch of compiler warnings
        https://bugs.webkit.org/show_bug.cgi?id=197785

        Reviewed by Don Olmstead.

        * CMakeLists.txt: WebCoreTestSupport should accept extra SYSTEM includes.
        * PlatformGTK.cmake: GTK includes should be added to SYSTEM headers to avoid warnings.
        * inspector/InspectorCanvas.cpp: Add preprocessor guards to fix unused function warning.
        * rendering/RenderLayer.cpp: Fix unused variable warning.
        (WebCore::RenderLayer::updateClipRects):

2019-05-10  Antti Koivisto  <antti@apple.com>

        Event region generation needs to know about backing-sharing
        https://bugs.webkit.org/show_bug.cgi?id=197694
        <rdar://problem/50584991>

        Reviewed by Simon Fraser.

        Test: pointerevents/ios/touch-action-region-backing-sharing.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateEventRegion):

        Gather event region from backing sharing layers too.

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Add WebKitWebPage::did-associate-form-controls-for-frame and deprecate original did-associate-form-controls
        https://bugs.webkit.org/show_bug.cgi?id=197271

        Reviewed by Youenn Fablet.

        * dom/Document.cpp:
        (WebCore::Document::didAssociateFormControlsTimerFired):
        * loader/EmptyClients.h:
        * page/ChromeClient.h:

2019-05-09  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-09  Daniel Bates  <dabates@apple.com>

        [iOS] Right command key has wrong value for property code
        https://bugs.webkit.org/show_bug.cgi?id=193876
        <rdar://problem/47577308>

        Reviewed by Brent Fulgham.

        We're looking for the wrong Windows virtual key code for the right command key.
        Substitute VK_APPS for VK_RWIN so we can identify the right command key and return
        the correct value for the code property of the DOM key event.

        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::codeForKeyEvent):

2019-05-09  Daniel Bates  <dabates@apple.com>

        [iOS] Numpad comma key has incorrect keyIdentifier property
        https://bugs.webkit.org/show_bug.cgi?id=197753
        <rdar://problem/50636274>

        Reviewed by Brent Fulgham.

        Map the Numpad Comma HID usage code to its Window virtual key code, VK_SEPARATOR,
        so that can compute the keyIdentifier property for the Numpad Comma key. Also
        consider this key as a keypad key just like we do on Mac. There is no discernable
        difference for doing so on iOS because the non-keypad code path computes the same result
        due to GraphicsServices having fixed up the input string for the Numpad Comma to be
        ",", which is want.

        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForKeyCode): Map kHIDUsage_KeypadComma to VK_SEPARATOR.
        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::codeForKeyEvent): Add a comment to explain that this key is only on
        JIS keyboards.
        (WebCore::isKeypadEvent): Return true for the Numpad Comma key.

2019-05-09  Zalan Bujtas  <zalan@apple.com>

        Do not mix inline and block level boxes.
        https://bugs.webkit.org/show_bug.cgi?id=197462
        <rdar://problem/50369362>

        Reviewed by Antti Koivisto.

        This patch tightens the remove-anonymous-wrappers logic by checking if the removal would
        produce an inline-block sibling mix.
        When a block level box is removed from the tree, we check if after the removal the anonymous sibling block
        boxes are still needed or whether we can removed them as well (and have only inline level child boxes).
        In addition to checking if the container is anonymous and is part of a continuation, we also need to check
        if collapsing it (and by that moving its children one level up) would cause a inline-block box mix.

        Test: fast/ruby/continuation-and-column-spanner-crash.html

        * rendering/updating/RenderTreeBuilder.cpp:
        (WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded):
        * rendering/updating/RenderTreeBuilderContinuation.cpp:
        (WebCore::RenderTreeBuilder::Continuation::cleanupOnDestroy):

2019-05-09  Eric Carlson  <eric.carlson@apple.com>

        Refine AudioSession route sharing policy
        https://bugs.webkit.org/show_bug.cgi?id=197742
        <rdar://problem/50590818>

        Reviewed by Darin Adler.

        No new tests, updated AVAudioSessionRouteSharingPolicy API test.

        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::updateSessionState):

2019-05-09  Simon Fraser  <simon.fraser@apple.com>

        fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
        https://bugs.webkit.org/show_bug.cgi?id=197695

        Reviewed by Zalan Bujtas.

        With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
        RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
        but backgroundClipRect() would return an infinite rect.
        
        This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
        composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
        to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.
        
        The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
        setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.

        I was unable to make a standalone test case for this, but the code is exercised by media control tests.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):

2019-05-09  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-09  Antti Koivisto  <antti@apple.com>

        Elements with "display: inline-block" don't have a touch-action region
        https://bugs.webkit.org/show_bug.cgi?id=197281
        <rdar://problem/50535081>

        Reviewed by Antoine Quint.

        Test: pointerevents/ios/touch-action-region-inline-block.html

        PaintPhase::EventRegion failed to traverse into inline boxes.

        * rendering/InlineElementBox.cpp:
        (WebCore::InlineElementBox::paint):
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::paintAsInlineBlock):

2019-05-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r239915): [FreeType] White space skipped when rendering plain text with noto CJK font
        https://bugs.webkit.org/show_bug.cgi?id=197658

        Reviewed by Michael Catanzaro.

        Since r239915 we no longer overwrite control characters with zero width space, they are handled later when
        filling the glyph pages. In Font::platformGlyphInit() there's an optimization to get the glyph of zero with
        space character that assumes that control characters are always overwritten. Since the glyph for character at 0
        index is always overwritten with zero width space, we can avoid loading the page for the actual zero width space
        character and use the first page instead. In the particular case of noto CJK font, character at 0 is mapped to
        the same glyph as space character, so space and zero width space end up being the same glyph. That breaks the
        space width calculation, that returns 0 when isZeroWidthSpaceGlyph() is true. That's why spaces are no
        longer rendered, ComplexTextController::adjustGlyphsAndAdvances() is setting the x advance for the space glyphs
        to 0.

        * platform/graphics/Font.cpp:
        (WebCore::Font::platformGlyphInit): Use the actual zero width space page to get the glyph instead of 0 when
        using FreeType.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Fix WPE build.

        * CMakeLists.txt:
        Bots wanted a "PUBLIC" or "PRIVATE" keyword here.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Try to fix Linux build

        * platform/graphics/ANGLEWebKitBridge.h:
        Include headers consistently on all platforms.

2019-05-08  Don Olmstead  <don.olmstead@sony.com>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=197676

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformPlayStation.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * platform/graphics/GLContext.cpp:
        * platform/graphics/egl/GLContextEGL.cpp:
        * platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
        * platform/graphics/opengl/Extensions3DOpenGLES.h:
        * platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
        * platform/graphics/texmap/TextureMapperGLHeaders.h:

2019-05-08  Chris Dumez  <cdumez@apple.com>

        [iOS Debug] ASSERTION FAILED: !m_originalNode in WebCore::JSLazyEventListener::checkValidityForEventTarget(WebCore::EventTarget &)
        https://bugs.webkit.org/show_bug.cgi?id=197696
        <rdar://problem/50586956>

        Reviewed by Simon Fraser.

        Setting the onorientationchange / onresize event handler on the body should set the event handler on the
        window object, as per the HTML specification. However, calling body.addEventListener() with 'orientationchange'
        or 'resize' should not set the event listener on the window object, only the body. Blink and Gecko seem to
        behave as per specification but WebKit had a quirk for the addEventListener case. The quirk's implementation
        is slightly wrong (because it is unsafe to take a JSLazyEventListener from a body element and add it to the
        window, given that the JSLazyEventListener keeps a raw pointer to its element) and was causing crashes such
        as <rdar://problem/24314027>. As a result, this patch simply drops the WebKit quirk, which will align our
        behavior with other browsers and fix the crashes altogether.

        Test: fast/events/ios/rotation/orientationchange-event-listener-on.body.html

        * dom/Node.cpp:
        (WebCore::tryAddEventListener):
        (WebCore::tryRemoveEventListener):

2019-05-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245058.

        Causes crashes under ASan / GuardMalloc

        Reverted changeset:

        "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
        https://trac.webkit.org/changeset/245058

2019-05-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245068.

        Caused debug layout tests to exit early due to an assertion
        failure.

        Reverted changeset:

        "All prototypes should call didBecomePrototype()"
        https://bugs.webkit.org/show_bug.cgi?id=196315
        https://trac.webkit.org/changeset/245068

2019-05-08  Megan Gardner  <megan_gardner@apple.com>

        Add quirks to emulate undo and redo in hidden editable areas on some websites
        https://bugs.webkit.org/show_bug.cgi?id=197452

        Reviewed by Alex Christensen.

        UI change, not testable.

        We need to send synthetic keyboard events to the web process to emulate undo and redo
        key combinations for when we are trying to get our undo and redo UI to work
        on rich editing websites that only listen to keystrokes, and don't let us use our
        undo manager to help manage the input content.

        * page/EventHandler.cpp:
        (WebCore::EventHandler::keyEvent):
        * platform/PlatformKeyboardEvent.h:
        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
        (WebCore::PlatformKeyboardEvent::isSyntheticEvent):
        (WebCore::PlatformKeyboardEvent::setSyntheticEvent):
        * platform/ios/KeyEventIOS.mm:
        (WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys):
        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

2019-05-08  Don Olmstead  <don.olmstead@sony.com>

        CSSFontFaceSource fails to compile when !ENABLE(SVG_FONTS)
        https://bugs.webkit.org/show_bug.cgi?id=197720

        Unreviewed build fix.

        Add usesInDocumentSVGFont to the !ENABLE(SVG_FONT) path.

        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::font):

2019-05-08  Timothy Hatcher  <timothy@apple.com>

        Add plumbing for inactive system colors in RenderTheme cache.
        https://bugs.webkit.org/show_bug.cgi?id=197699
        rdar://problem/49406936

        Reviewed by Tim Horton.

        * css/StyleColor.h:
        * page/Page.cpp:
        (WebCore::Page::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance.
        * page/Page.h:
        (WebCore::Page::useInactiveAppearance const):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::purgeCaches):
        (WebCore::RenderTheme::platformColorsDidChange):
        (WebCore::RenderTheme::colorCache const):
        * rendering/RenderTheme.h:
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::setUseDarkAppearanceInternal):

2019-05-08  Robin Morisset  <rmorisset@apple.com>

        All prototypes should call didBecomePrototype()
        https://bugs.webkit.org/show_bug.cgi?id=196315

        Reviewed by Saam Barati.

        This changelog already landed, but the commit was missing the actual changes.

        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):
        * bindings/scripts/test/JS/JSInterfaceName.cpp:
        (WebCore::JSInterfaceNamePrototype::JSInterfaceNamePrototype):
        * bindings/scripts/test/JS/JSMapLike.cpp:
        (WebCore::JSMapLikePrototype::JSMapLikePrototype):
        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
        (WebCore::JSReadOnlyMapLikePrototype::JSReadOnlyMapLikePrototype):
        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
        (WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype):
        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
        (WebCore::JSTestCEReactionsPrototype::JSTestCEReactionsPrototype):
        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
        (WebCore::JSTestCEReactionsStringifierPrototype::JSTestCEReactionsStringifierPrototype):
        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
        (WebCore::JSTestCallTracerPrototype::JSTestCallTracerPrototype):
        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
        (WebCore::JSTestClassWithJSBuiltinConstructorPrototype::JSTestClassWithJSBuiltinConstructorPrototype):
        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
        (WebCore::JSTestDOMJITPrototype::JSTestDOMJITPrototype):
        (WebCore::JSTestDOMJITConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
        (WebCore::JSTestEnabledBySettingPrototype::JSTestEnabledBySettingPrototype):
        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
        (WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype):
        (WebCore::JSTestEventConstructorConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
        (WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype):
        (WebCore::JSTestEventTargetConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestException.cpp:
        (WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype):
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        (WebCore::JSTestGenerateIsReachablePrototype::JSTestGenerateIsReachablePrototype):
        * bindings/scripts/test/JS/JSTestGlobalObject.h:
        (WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):
        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
        (WebCore::JSTestIndexedSetterNoIdentifierPrototype::JSTestIndexedSetterNoIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
        (WebCore::JSTestIndexedSetterThrowingExceptionPrototype::JSTestIndexedSetterThrowingExceptionPrototype):
        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
        (WebCore::JSTestIndexedSetterWithIdentifierPrototype::JSTestIndexedSetterWithIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestInterface.cpp:
        (WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype):
        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
        (WebCore::JSTestInterfaceLeadingUnderscorePrototype::JSTestInterfaceLeadingUnderscorePrototype):
        * bindings/scripts/test/JS/JSTestIterable.cpp:
        (WebCore::JSTestIterablePrototype::JSTestIterablePrototype):
        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
        (WebCore::JSTestJSBuiltinConstructorPrototype::JSTestJSBuiltinConstructorPrototype):
        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
        (WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype):
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
        (WebCore::JSTestNamedAndIndexedSetterNoIdentifierPrototype::JSTestNamedAndIndexedSetterNoIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
        (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionPrototype::JSTestNamedAndIndexedSetterThrowingExceptionPrototype):
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
        (WebCore::JSTestNamedAndIndexedSetterWithIdentifierPrototype::JSTestNamedAndIndexedSetterWithIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
        (WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype):
        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
        (WebCore::JSTestNamedDeleterNoIdentifierPrototype::JSTestNamedDeleterNoIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
        (WebCore::JSTestNamedDeleterThrowingExceptionPrototype::JSTestNamedDeleterThrowingExceptionPrototype):
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
        (WebCore::JSTestNamedDeleterWithIdentifierPrototype::JSTestNamedDeleterWithIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
        (WebCore::JSTestNamedDeleterWithIndexedGetterPrototype::JSTestNamedDeleterWithIndexedGetterPrototype):
        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
        (WebCore::JSTestNamedGetterCallWithPrototype::JSTestNamedGetterCallWithPrototype):
        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
        (WebCore::JSTestNamedGetterNoIdentifierPrototype::JSTestNamedGetterNoIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
        (WebCore::JSTestNamedGetterWithIdentifierPrototype::JSTestNamedGetterWithIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
        (WebCore::JSTestNamedSetterNoIdentifierPrototype::JSTestNamedSetterNoIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
        (WebCore::JSTestNamedSetterThrowingExceptionPrototype::JSTestNamedSetterThrowingExceptionPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
        (WebCore::JSTestNamedSetterWithIdentifierPrototype::JSTestNamedSetterWithIdentifierPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
        (WebCore::JSTestNamedSetterWithIndexedGetterPrototype::JSTestNamedSetterWithIndexedGetterPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
        (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterPrototype::JSTestNamedSetterWithIndexedGetterAndSetterPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
        (WebCore::JSTestNamedSetterWithOverrideBuiltinsPrototype::JSTestNamedSetterWithOverrideBuiltinsPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
        (WebCore::JSTestNamedSetterWithUnforgablePropertiesPrototype::JSTestNamedSetterWithUnforgablePropertiesPrototype):
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
        (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype):
        * bindings/scripts/test/JS/JSTestNode.cpp:
        (WebCore::JSTestNodePrototype::JSTestNodePrototype):
        (WebCore::JSTestNodeConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::JSTestObjPrototype::JSTestObjPrototype):
        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
        (WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype):
        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
        (WebCore::JSTestOverloadedConstructorsWithSequencePrototype::JSTestOverloadedConstructorsWithSequencePrototype):
        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
        (WebCore::JSTestOverrideBuiltinsPrototype::JSTestOverrideBuiltinsPrototype):
        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
        (WebCore::JSTestPluginInterfacePrototype::JSTestPluginInterfacePrototype):
        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
        (WebCore::JSTestPromiseRejectionEventPrototype::JSTestPromiseRejectionEventPrototype):
        (WebCore::JSTestPromiseRejectionEventConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestSerialization.cpp:
        (WebCore::JSTestSerializationPrototype::JSTestSerializationPrototype):
        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
        (WebCore::JSTestSerializationIndirectInheritancePrototype::JSTestSerializationIndirectInheritancePrototype):
        (WebCore::JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
        (WebCore::JSTestSerializationInheritPrototype::JSTestSerializationInheritPrototype):
        (WebCore::JSTestSerializationInheritConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
        (WebCore::JSTestSerializationInheritFinalPrototype::JSTestSerializationInheritFinalPrototype):
        (WebCore::JSTestSerializationInheritFinalConstructor::prototypeForStructure):
        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
        (WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype):
        * bindings/scripts/test/JS/JSTestStringifier.cpp:
        (WebCore::JSTestStringifierPrototype::JSTestStringifierPrototype):
        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
        (WebCore::JSTestStringifierAnonymousOperationPrototype::JSTestStringifierAnonymousOperationPrototype):
        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
        (WebCore::JSTestStringifierNamedOperationPrototype::JSTestStringifierNamedOperationPrototype):
        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
        (WebCore::JSTestStringifierOperationImplementedAsPrototype::JSTestStringifierOperationImplementedAsPrototype):
        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
        (WebCore::JSTestStringifierOperationNamedToStringPrototype::JSTestStringifierOperationNamedToStringPrototype):
        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
        (WebCore::JSTestStringifierReadOnlyAttributePrototype::JSTestStringifierReadOnlyAttributePrototype):
        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
        (WebCore::JSTestStringifierReadWriteAttributePrototype::JSTestStringifierReadWriteAttributePrototype):
        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
        (WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):

2019-05-08  Don Olmstead  <don.olmstead@sony.com>

        WEBCORE_EXPORT shouldn't be on the class and its methods
        https://bugs.webkit.org/show_bug.cgi?id=197681

        Reviewed by Simon Fraser.

        Remove WEBCORE_EXPORT from the methods.

        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.h:

2019-05-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add a quirk to synthesize mouse events when modifying the selection
        https://bugs.webkit.org/show_bug.cgi?id=197683
        <rdar://problem/48003980>

        Reviewed by Tim Horton.

        See WebKit ChangeLog for more details.

        Test: editing/selection/ios/dispatch-mouse-events-when-modifying-selection-quirk.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleMousePressEvent):
        (WebCore::EventHandler::supportsSelectionUpdatesOnMouseDrag const):

        Add some platform hooks to prevent mousemove events from updating the selection on iOS.

        (WebCore::EventHandler::shouldAllowMouseDownToStartDrag const):

        Add some platform hooks to prevent drag and drop from kicking in when sending synthetic mousemove events to the
        page on iOS (drag and drop is instead triggered by EventHandler::tryToBeginDragAtPoint).

        (WebCore::EventHandler::updateSelectionForMouseDrag):
        * page/EventHandler.h:
        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSyntheticMouseEventsWhenModifyingSelection const):
        * page/Quirks.h:

        Add the new site-specific quirk.

        * page/Settings.yaml:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::tryToBeginDragAtPoint):
        (WebCore::EventHandler::supportsSelectionUpdatesOnMouseDrag const):
        (WebCore::EventHandler::shouldAllowMouseDownToStartDrag const):
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setShouldDispatchSyntheticMouseEventsWhenModifyingSelection):
        * testing/InternalSettings.h:
        * testing/InternalSettings.idl:

        Add an internal settings hook to opt into this quirk, for use in layout tests.

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
        https://bugs.webkit.org/show_bug.cgi?id=197474
        <rdar://problem/47219324>

        Reviewed by Ryosuke Niwa.

        Fix up some #if defs to compile more Mac code when building on iOS.

        * dom/KeyboardEvent.cpp:
        (WebCore::KeyboardEvent::KeyboardEvent):
        * platform/PlatformKeyboardEvent.h:
        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

2019-05-06  Chris Dumez  <cdumez@apple.com>

        Add assertions to CachedFrame to help figure out crash in CachedFrame constructor
        https://bugs.webkit.org/show_bug.cgi?id=197621

        Reviewed by Geoffrey Garen.

        Add release assertions to try and figure out who is sometimes detaching the document from its
        frame while constructing CachedFrames for its descendants.

        * dom/Document.cpp:
        (WebCore::Document::detachFromFrame):
        * dom/Document.h:
        (WebCore::Document::setMayBeDetachedFromFrame):
        * history/CachedFrame.cpp:
        (WebCore::CachedFrame::CachedFrame):

2019-05-06  Zan Dobersek  <zdobersek@igalia.com>

        [GLib] WebCore::MainThreadSharedTimer should use the appropriate GSource priority, name
        https://bugs.webkit.org/show_bug.cgi?id=197606

        Reviewed by Carlos Garcia Campos.

        * platform/MainThreadSharedTimer.cpp:
        (WebCore::MainThreadSharedTimer::MainThreadSharedTimer):
        Use the MainThreadSharedTimer GLib priority for this timer. The name is
        also adjusted accordingly.

2019-05-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        fast/attachment/attachment-folder-icon.html is an Image Only failure on recent macOS builds
        https://bugs.webkit.org/show_bug.cgi?id=197593
        <rdar://problem/50379267>

        Reviewed by Tim Horton.

        On recent versions of macOS, -[NSWorkspace iconForFileType:] returns the generic document icon for
        "public.directory". Instead of using this UTI to generate attachment icons for "multipart/x-folder" and
        "application/vnd.apple.folder", we should instead be using "public.folder", which has a folder icon. This fixes
        the existing test fast/attachment/attachment-folder-icon.html, which currently results in an image diff on these
        builds of macOS.

        * rendering/RenderThemeMac.mm:
        (WebCore::iconForAttachment):

2019-05-04  Alex Christensen  <achristensen@webkit.org>

        Revert r244953 and r244954 because they broke internal builds.
        https://bugs.webkit.org/show_bug.cgi?id=197534

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::changeCount const):
        (WebCore::PlatformPasteboard::write):

2019-05-04  Alex Christensen  <achristensen@webkit.org>

        Merge the three UIKitSPI.h files into a single one in PAL
        https://bugs.webkit.org/show_bug.cgi?id=197534

        Reviewed by Darin Adler.

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::changeCount const):
        (WebCore::PlatformPasteboard::write):

2019-05-04  Youenn Fablet  <youenn@apple.com>

        Convert some RealtimeOutgoingVideoSourceCocoa logging to ERROR_LOG
        https://bugs.webkit.org/show_bug.cgi?id=197549

        Reviewed by Eric Carlson.

        No change of behavior.

        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
        (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):

2019-05-03  Simon Fraser  <simon.fraser@apple.com>

        [macOS] Fix programmatic scrolling with async overflow scroll
        https://bugs.webkit.org/show_bug.cgi?id=197590

        Reviewed by Sam Weinig.
        
        ScrollingTreeOverflowScrollingNodeMac needs to handle RequestedScrollPosition.

        Tests: scrollingcoordinator/mac/programmatic-frame-scroll.html
               scrollingcoordinator/mac/programmatic-overflow-scroll.html

        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren):

2019-05-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] outlook.live.com: Compose email frame not fully visible and not scrollable
        https://bugs.webkit.org/show_bug.cgi?id=197573
        <rdar://problem/48008441>

        Reviewed by Wenson Hsieh.

        The outlook mail view's flex column setup produces a somewhat unfortunate layout at certain viewport widths.
        This patch addresses the issue by ensuring that we never fall into that range.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldIgnoreShrinkToFitContent const):
        (WebCore::Quirks::overriddenViewportLayoutWidth const):
        * page/Quirks.h:

2019-05-02  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] A focused document should be required
        https://bugs.webkit.org/show_bug.cgi?id=197543
        <rdar://problem/50430989>

        Reviewed by Brent Fulgham.

        This patch adds a check to see if the invoking document is focused before
        calling into WebAuthN. This patch also removes some out-to-dated comments.

        Test: http/wpt/webauthn/public-key-credential-unfocused-document.https.html

        * Modules/credentialmanagement/CredentialsContainer.cpp:
        (WebCore::CredentialsContainer::get):
        (WebCore::CredentialsContainer::isCreate):
        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinator::create const):
        (WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):

2019-05-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM: rename "low power" to "display composited"
        https://bugs.webkit.org/show_bug.cgi?id=197296

        Reviewed by Joseph Pecoraro.

        Removed specific ChangeLog entries since it is almost entirely mechanical changes.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:

2019-05-03  Daniel Bates  <dabates@apple.com>

        Pass KeyboardEvent by reference in more places
        https://bugs.webkit.org/show_bug.cgi?id=197480

        Reviewed by Wenson Hsieh.

        * editing/Editor.cpp:
        (WebCore::Editor::handleKeyboardEvent):
        (WebCore::Editor::handleInputMethodKeydown):
        * loader/EmptyClients.cpp:
        * page/EditorClient.h:

2019-05-03  Chris Dumez  <cdumez@apple.com>

        [iOS Sim Debug] ASSERTION FAILED The atomic string comes from an other thread! Layout Test imported/w3c/web-platform-tests/workers/WorkerNavigator_appName.htm is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=197530
        <rdar://problem/50448285>

        Reviewed by Geoffrey Garen.

        The issue is that NavigatorBase::platform() was not thread safe but was called by both Navigator on
        the main thread and WorkerNavigator on worker threads.

        No new tests, covered by existing tests.

        * page/Navigator.cpp:
        (WebCore::Navigator::platform const):
        * page/Navigator.h:

        * page/NavigatorBase.cpp:
        (WebCore::NavigatorBase::platform const):
        * page/NavigatorBase.h:
        Make NavigatorBase::platform() thread safe.

        * platform/ios/Device.cpp:
        (WebCore::deviceName):
        * platform/ios/Device.h:
        Make WebCore::deviceName() thread safe.

        * platform/ios/UserAgentIOS.mm:
        (WebCore::deviceNameForUserAgent):
        Cache value returned by WebCore::deviceName() for performance.

2019-05-03  Chris Dumez  <cdumez@apple.com>

        Use WeakPtr for JSLazyEventListener::m_originalNode for safety
        https://bugs.webkit.org/show_bug.cgi?id=197576
        <rdar://problem/24314027>

        Reviewed by Alex Christensen.

        * bindings/js/JSLazyEventListener.cpp:
        (WebCore::JSLazyEventListener::JSLazyEventListener):
        (WebCore::JSLazyEventListener::create):
        * bindings/js/JSLazyEventListener.h:

2019-05-03  Eric Carlson  <eric.carlson@apple.com>

        AVFoundation framework isn't always installed
        https://bugs.webkit.org/show_bug.cgi?id=197577
        <rdar://problem/50447841>

        Reviewed by Jer Noble.
        
        Use PAL::isAVFoundationFrameworkAvailable() to check to see if AVFoundation is
        installed, not PAL::AVFoundationLibrary().

        * platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.mm:
        (WebCore::AVFoundationMIMETypeCache::isAvailable const):
        (WebCore::AVFoundationMIMETypeCache::loadMIMETypes):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType const):
        (WebCore::exernalDeviceDisplayNameForPlayer):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
        (WebCore::validateHEVCParameters):
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::AVCaptureDeviceManager::isAvailable):

2019-05-03  Sihui Liu  <sihui_liu@apple.com>

        Add assertion to check whether shm files have maximum FileProtection of CompleteUnlessOpen
        https://bugs.webkit.org/show_bug.cgi?id=197390
        <rdar://problem/42685773>

        Reviewed by Geoffrey Garen.

        We have seen crashes about accessing database files after device is locked. We are suspecting this is because 
        shm files have wrong data protection class, but shm files should not have Complete class protection when it 
        is created. It is likely the protection class is changed later. Add an assertion to verify our guess. If the 
        crash signature changes after this patch, we probably need to change database implementation. If it is not, we
        have other problem than data protection.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2019-05-03  Youenn Fablet  <youenn@apple.com>

        Cache.add and Cache.addAll should compute a correct response body size
        https://bugs.webkit.org/show_bug.cgi?id=197464

        Reviewed by Chris Dumez.

        Compute the response body size as we do for regular Cache.put

        Test: http/wpt/cache-storage/cache-quota-add.any.html

        * Modules/cache/CacheStorageConnection.cpp:
        (WebCore::CacheStorageConnection::computeRecordBodySize):
        * Modules/cache/CacheStorageConnection.h:
        * Modules/cache/DOMCache.cpp:
        (WebCore::FetchTasksHandler::addResponseBody):
        (WebCore::DOMCache::addAll):
        Compute the response body size requires getting access to the connection.
        'this' is added to the lambda which is fine since taskHandler keeps a
        Ref to 'this' in its completion handler.
        (WebCore::DOMCache::toConnectionRecord):
        * Modules/fetch/FetchResponse.h:

2019-05-03  Tomoki Imai  <Tomoki.Imai@sony.com>

        [Cairo] Improve ShadowBlur performance using tiling optimization
        https://bugs.webkit.org/show_bug.cgi?id=197308
        Reviewed by Žan Doberšek.

        Enable tiling tiling-based optimization for drawRectShadow() and drawInsetShadow().
        Since r228776, cairo ports doesn't have tiling-based optimization.

        For AppleWin, this patch refactors code and it shares almost same code as cairo port.
        Only the difference is that AppleWin uses ScratchBuffer, but cairo ports doesn't.
        This should avoid a performance regression for AppleWin.

        No new tests, covered by existing tests.

        * platform/graphics/ShadowBlur.cpp:
        (WebCore::calculateLobes):
        Fix stylecheck errors

        (WebCore::ShadowBlur::blurLayerImage):
        Fix stylecheck errors

        (WebCore::ShadowBlur::calculateLayerBoundingRect):
        We don't use position of m_sourceRect, so change the type to FloatSize.

        (WebCore::ShadowBlur::drawShadowBuffer):
        Use m_layerSize instead of m_shadowedResultSize to fillRect, as m_layerSize is always smaller than m_shadowedResultSize.
        It's because in m_layerSize is equal to m_shadowedResultSize if it's not clipped.
        Clipping doesn't increase size of m_layerSize, so m_layerSize is always smaller than or equal to m_shadowedResultSize.

        (WebCore::ShadowBlur::templateSize const):
        Fix stylecheck errors

        (WebCore::ShadowBlur::drawRectShadow):
        (WebCore::ShadowBlur::drawInsetShadow):
        (WebCore::ShadowBlur::drawRectShadowWithoutTiling):
        (WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
        (WebCore::ShadowBlur::drawRectShadowWithTiling):
        (WebCore::ShadowBlur::drawInsetShadowWithTiling):
        Incorporate tile-based drawing.
        To accomplish it, this patch abstracts GraphicsContext::drawImageBuffer to ShadowBlur::DrawImageCallback,
        GraphicsContext::fillRect to ShadowBlur::FillRectCallback, drawing rect with hole to  ShadowBlur::FillRectWithHoleCallback.

        Variants which takes GraphicsContext as parameter now just calls another drawRectShadow.

        (WebCore::ShadowBlur::drawLayerPieces):
        Instead of graphicsContext.drawImageBuffer, call corresponding callback.

        (WebCore::ShadowBlur::drawLayerPiecesAndFillCenter):
        This function calls drawLayerPieces and fill center for outer shadow.
        Drawing outer shadow requires another callback for graphicsContext.fillRect.

        (WebCore::ShadowBlur::drawShadowLayer):
        Use m_layerSize instead of m_shadowedResultSize to fillRect,
        as m_layerSize is always smaller than m_shadowedResultSize.

        * platform/graphics/ShadowBlur.h:
        Rename m_sourceRect to m_shadowedResultSize, and change it to FloatSize from FloatRect.
        Remove GraphicsContext usage as much as possible and replace them by corresponding callbacks.

        * platform/graphics/cairo/CairoOperations.cpp:
        (WebCore::Cairo::drawShadowImage):
        This function corresponds to ShadowBlur::DrawImageCallback.

        (WebCore::Cairo::fillShadowBuffer):
        Erase sourceRect, as it's always bigger than layerSize.

        (WebCore::Cairo::drawPathShadow):
        (WebCore::Cairo::drawGlyphsShadow):
        Erase unused parameter.

        (WebCore::Cairo::fillRect):
        (WebCore::Cairo::fillRoundedRect):
        (WebCore::Cairo::fillRectWithRoundedHole):
        For tile-based optimization, add extra arguments to drawRectShadow.

        (WebCore::Cairo::drawSurface):
        Erase unused parameter.

2019-05-03  Antti Koivisto  <antti@apple.com>

        Add a quirk to make youtube navigation bar scrollable without mouse hover on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197555
        <rdar://problem/49582231>

        Reviewed by Brent Fulgham.

        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::adjustRenderStyleForSiteSpecificQuirks):

        Turn 'overflow:hidden' into 'overflow:auto' on element with id="guide-inner-content".

        * page/Quirks.cpp:
        (WebCore::Quirks::needsYouTubeOverflowScrollQuirk const):
        * page/Quirks.h:

2019-05-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: Record actions performed on WebGL2RenderingContext
        https://bugs.webkit.org/show_bug.cgi?id=176008
        <rdar://problem/34213884>

        Reviewed by Joseph Pecoraro.

        Tests: inspector/canvas/recording-webgl2.html
               inspector/canvas/recording-webgl2-snapshots.html

        * html/canvas/WebGL2RenderingContext.idl:

        * bindings/js/CallTracerTypes.h:
        * inspector/RecordingSwizzleTypes.h:

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::canvasChanged): Added.
        (WebCore::InspectorCanvas::resetRecordingData):
        (WebCore::shouldSnapshotWebGL2Action): Added.
        (WebCore::InspectorCanvas::recordAction):
        (WebCore::InspectorCanvas::releaseObjectForRecording):
        (WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
        (WebCore::InspectorCanvas::buildAction):
        * inspector/agents/InspectorCanvasAgent.h:
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::canvasChanged): Added.
        (WebCore::InspectorCanvasAgent::startRecording):
        Provide an actual implementation of `CanvasObserver::canvasChanged` since it can be used to
        determine whether or not an action needs a snapshot.

        * page/PageConsoleClient.cpp:
        (WebCore::canvasRenderingContext):

2019-05-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244881.
        https://bugs.webkit.org/show_bug.cgi?id=197559

        Breaks compilation of jsconly on linux, breaking compilation
        for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
        guijemont on #webkit).

        Reverted changeset:

        "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
        WEBKIT_COPY_FILES"
        https://bugs.webkit.org/show_bug.cgi?id=197174
        https://trac.webkit.org/changeset/244881

2019-05-03  Joonghun Park  <jh718.park@samsung.com>

        Resolve the percentage values of inset properties against proper box.
        https://bugs.webkit.org/show_bug.cgi?id=189549

        Reviewed by Antti Koivisto.

        Before this CL, sticky element's layout was executed relative to
        a box's overflow container,
        but the value returned by getComputedStyle was resolved against
        its containing block.

        So, the computed value and the actual value used in layout
        was different before this change.

        Tests: imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-sticky-container-for-abspos.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-sticky-pos-percent.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::positionOffsetValue):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::enclosingScrollportBox const):
        * rendering/RenderBox.h:

2019-05-02  Antti Koivisto  <antti@apple.com>

        Add a quirk to make gmail navigation bar scrollable without mouse hover on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197529
        <rdar://problem/49403416>

        Reviewed by Simon Fraser.

        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::adjustRenderStyle):
        (WebCore::StyleResolver::adjustRenderStyleForSiteSpecificQuirks):

        Turn 'overflow:hidden' to 'overflow:auto' on element with role="navigation".
        This should be both reasonably targeted and robust.

        * css/StyleResolver.h:
        * page/Quirks.cpp:
        (WebCore::Quirks::needsGMailOverflowScrollQuirk const):
        * page/Quirks.h:

2019-05-02  Simon Fraser  <simon.fraser@apple.com>

        Add logging for RenderLayer clip rects
        https://bugs.webkit.org/show_bug.cgi?id=197547

        Reviewed by Zalan Bujtas.

        Add a ClipRects log channel, and stream output for ClipRect and ClipRects.

        * platform/Logging.h:
        * rendering/ClipRect.cpp:
        (WebCore::operator<<):
        * rendering/ClipRect.h:
        * rendering/RenderLayer.cpp:
        (WebCore::operator<<):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:

2019-05-02  Youenn Fablet  <youenn@apple.com>

        Make AudioContext::scriptExecutionContext() private
        https://bugs.webkit.org/show_bug.cgi?id=197512

        Reviewed by Eric Carlson.

        Refactor code to make audio nodes not rely on AudioContext::scriptExecutionContext.
        Instead, let AudioContext provide the necessary API for its nodes.
        Covered by existing tests.

        * Modules/webaudio/AudioBufferSourceNode.cpp:
        (WebCore::AudioBufferSourceNode::looping):
        (WebCore::AudioBufferSourceNode::setLooping):
        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::postTask):
        (WebCore::AudioContext::origin const):
        (WebCore::AudioContext::addConsoleMessage):
        * Modules/webaudio/AudioContext.h:
        (WebCore::AudioContext::isStopped const):
        * Modules/webaudio/AudioNode.cpp:
        (WebCore::AudioNode::scriptExecutionContext const):
        * Modules/webaudio/AudioNode.h:
        * Modules/webaudio/AudioScheduledSourceNode.cpp:
        (WebCore::AudioScheduledSourceNode::finish):
        * Modules/webaudio/DefaultAudioDestinationNode.cpp:
        (WebCore::DefaultAudioDestinationNode::resume):
        (WebCore::DefaultAudioDestinationNode::suspend):
        (WebCore::DefaultAudioDestinationNode::close):
        * Modules/webaudio/MediaElementAudioSourceNode.cpp:
        (WebCore::MediaElementAudioSourceNode::wouldTaintOrigin):
        * Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
        (WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode):
        * Modules/webaudio/ScriptProcessorNode.cpp:
        (WebCore::ScriptProcessorNode::fireProcessEvent):

2019-05-02  Ryosuke Niwa  <rniwa@webkit.org>

        Disable software keyboard for a math field textarea on desmos.com
        https://bugs.webkit.org/show_bug.cgi?id=197488

        Reviewed by Wenson Hsieh.

        Treat a textarea inside a math field span as if it had inputmode content attribute set to none to suppress
        the software keyboard on desmos.com as it interferes with website's own UI.

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::canonicalInputMode const):
        * page/Quirks.cpp:
        (WebCore::Quirks::needsInputModeNoneImplicitly const):
        * page/Quirks.h:

2019-05-02  Timothy Hatcher  <timothy@apple.com>

        NSAttributedString conversion in a loop returns nil and WKUnknownError every other time.
        https://bugs.webkit.org/show_bug.cgi?id=197523

        Reviewed by Darin Adler.

        * editing/cocoa/HTMLConverter.mm:
        (HTMLConverter::convert): Don't return early if m_dataSource is nil. This is already null
        checked later and only needed in specific cases, it shouldn't fail the whole conversion.

2019-05-02  Chris Dumez  <cdumez@apple.com>

        Setting a frame's src to a javascript URL should not run it synchronously
        https://bugs.webkit.org/show_bug.cgi?id=197466

        Reviewed by Darin Adler.

        When an iframe's src attribute is set to a javascript URL, whether when parsing
        or later on via JS, we now execute the URL's JavaScript asynchronously. We used
        to execute it synchronously, which was a source of bugs and also did not match
        other browsers.

        I have verified that our new behavior is aligned with both Firefox and Chrome.

        Note that for backward-compatibility and interoperability with Blink
        (https://bugs.chromium.org/p/chromium/issues/detail?id=923585), the
        "javascript:''" URL will still run synchronously. We should consider dropping
        this quirk at some point.

        Test: fast/dom/frame-src-javascript-url-async.html

        * loader/NavigationScheduler.cpp:
        (WebCore::ScheduledLocationChange::ScheduledLocationChange):
        (WebCore::ScheduledLocationChange::~ScheduledLocationChange):
        (WebCore::NavigationScheduler::scheduleLocationChange):
        * loader/NavigationScheduler.h:
        (WebCore::NavigationScheduler::scheduleLocationChange):
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::requestFrame):

2019-05-02  Gary Katsevman  <git@gkatsev.com>

        WebVTT: fix vertical cue alignment.
        https://bugs.webkit.org/show_bug.cgi?id=136627.
        <rdar://problem/49725538>

        Reviewed by Eric Carlson.

        Updated existing test results.

        * html/track/VTTCue.cpp:
        (WebCore::VTTCueBox::applyCSSProperties):

2019-05-02  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
        https://bugs.webkit.org/show_bug.cgi?id=197174

        Reviewed by Alex Christensen.

        Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES and make dependencies
        for framework headers explicit.

        * CMakeLists.txt:

2019-05-02  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a quirk for google.com when processing AppID extension
        https://bugs.webkit.org/show_bug.cgi?id=196046
        <rdar://problem/49088479>

        Reviewed by Brent Fulgham.

        Relaxing the same site restriction on AppID while in google.com and any
        of its subdomains to allow two www.gstatic.com AppIDs to slip in.

        Covered by manual tests on Google.com.

        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinatorInternal::needsAppIdQuirks):
        (WebCore::AuthenticatorCoordinatorInternal::processAppIdExtension):

2019-05-02  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for non-unified build after r244853.

        * page/SecurityOrigin.cpp:

2019-05-02  Frederic Wang  <fwang@igalia.com>

        [GTK][WPE] Disable "thin", "thick", "medium" values of mfrac@linethickness at runtime
        https://bugs.webkit.org/show_bug.cgi?id=196142

        This patch introduces some experimental runtime flag to let users
        disable MathML features that are removed from MathML Core [1]. For now,
        these features are only disabled on GTK and WPE ports. This patch also
        adds a condition to disable "thin", "thick", "medium" values of
        mfrac@linethickness at runtime as agreed in [2].

        [1] https://mathml-refresh.github.io/mathml-core/
        [2] https://github.com/mathml-refresh/mathml/issues/4

        Reviewed by Rob Buis.

        No new tests, covered by frac-linethickness-0001.html

        * mathml/MathMLFractionElement.cpp:
        (WebCore::MathMLFractionElement::lineThickness): Just do standard
        parsing for MathML lengths when non-core MathML features are disabled.
        * page/Settings.yaml: Add WebCore setting.

2019-05-01  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Adopt SecurityOrigin::isMatchingRegistrableDomainSuffix()
        https://bugs.webkit.org/show_bug.cgi?id=197481

        Reviewed by Brent Fulgham.

        This patch implements Step 6-7 from:
        https://www.w3.org/TR/webauthn/#createCredential,
        https://www.w3.org/TR/webauthn/#discover-from-external-source.

        Test: http/wpt/webauthn/public-key-credential-ip-address.html

        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinator::create const):
        (WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):

2019-05-01  Youenn Fablet  <youenn@apple.com>

        Add back hasNullReferences() assert in Document::updateIsPlayingMedia
        https://bugs.webkit.org/show_bug.cgi?id=197477

        Reviewed by Eric Carlson.

        AudioContext had a special scriptExecutionContext() getter
        that was returning nullptr when AudioContext is stopped.
        Instead, make this getter behave as all other scriptExecutionContext() getters
        and make sure existing call sites of the getter are fine with the change.

        Covered by existing tests.

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::AudioContext):
        No need to check whether offline since this constructor is for non offline AudioContext.
        (WebCore::AudioContext::scriptExecutionContext const):
        (WebCore::AudioContext::fireCompletionEvent):
        * dom/Document.cpp:
        (WebCore::Document::updateIsPlayingMedia):

2019-05-01  Justin Fan  <justin_fan@apple.com>

        Update WebGPU class names based on sketch.idl
        https://bugs.webkit.org/show_bug.cgi?id=194260

        Reviewed by Dean Jackson.

        Update all exposed Web GPU interface names to GPU* prefix.

        Existing Web GPU tests updated to expect new names.

        * Modules/webgpu/WebGPU.idl:
        * Modules/webgpu/WebGPUAdapter.idl:
        * Modules/webgpu/WebGPUBindGroup.idl:
        * Modules/webgpu/WebGPUBindGroupLayout.idl:
        * Modules/webgpu/WebGPUBuffer.idl:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUInputStepMode.h: Removed.
        * Modules/webgpu/WebGPUPipelineLayout.idl:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPUQueue.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * Modules/webgpu/WebGPURenderPipeline.idl:
        * Modules/webgpu/WebGPUSampler.idl:
        * Modules/webgpu/WebGPUTexture.idl:
        * Modules/webgpu/WebGPUTextureView.idl:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2019-05-01  Jiewen Tan  <jiewen_tan@apple.com>

        Move Document::domainIsRegisterable to SecurityOrigin::isMatchingRegistrableDomainSuffix
        https://bugs.webkit.org/show_bug.cgi?id=181950
        <rdar://problem/43357371>

        Reviewed by Brent Fulgham.

        This patch moves Document::domainIsRegisterable to SecurityOrigin::isMatchingRegistrableDomainSuffix
        to be more aligned with the HTML standard:
        https://html.spec.whatwg.org/multipage/origin.html#is-a-registrable-domain-suffix-of-or-is-equal-to.
        Besides that, it also removes redundant codes within the original method that is also done in
        OriginAccessEntry::matchesOrigin.

        Covered by new API tests.

        * dom/Document.cpp:
        (WebCore::Document::setDomain):
        (WebCore::Document::domainIsRegisterable const): Deleted.
        * dom/Document.h:
        * page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::isMatchingRegistrableDomainSuffix const):
        * page/SecurityOrigin.h:

2019-05-01  Ryosuke Niwa  <rniwa@webkit.org>

        [iOS] Element::focus and Element::scrollIntoView do not clamp scroll positions
        https://bugs.webkit.org/show_bug.cgi?id=197211

        Reviewed by Simon Fraser.

        Fixed the bug that Element::focus and Element::scrollIntoView were not clamping scroll offsets,
        which causes scrollTop etc... to return a bogus negative scrolling offset.

        Unfortunately, we can't just use FrameView's ScrollableArea::constrainScrollPosition since
        scrollRectToVisible relies on the visible rect being expanded by the content insets in order to scroll to
        a position within the content insets of UIScrollView; e.g. revealing the top of the page as the center.
        We manually expand minimumScrollPosition() and maximumScrollPosition() by the content insets instead.

        Tests: fast/scrolling/ios/programmatic-scroll-via-focus-should-clamp-top.html
               fast/scrolling/ios/programmatic-scroll-via-scrollIntoView-inside-iframe-should-clamp-top.html
               fast/scrolling/ios/programmatic-scroll-via-scrollIntoView-should-clamp-top.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollRectToVisible):

2019-05-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add a version of viewport shrink-to-fit heuristics that preserves page layout
        https://bugs.webkit.org/show_bug.cgi?id=197342
        <rdar://problem/50063091>

        Reviewed by Tim Horton.

        Adds support for a new shrink-to-fit heuristic that attempts to lay out the contents of the page at a larger
        width in order to shrink content to fit the viewport. See WebKit ChangeLog for more details.

        Tests: fast/viewport/ios/shrink-to-fit-content-constant-width.html
               fast/viewport/ios/shrink-to-fit-content-large-width-breakpoint.html
               fast/viewport/ios/shrink-to-fit-content-no-viewport.html
               fast/viewport/ios/shrink-to-fit-content-responsive-viewport-with-horizontal-overflow.html
               fast/viewport/ios/shrink-to-fit-content-temporary-overflow.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidth):
        (WebCore::ViewportConfiguration::setIsKnownToLayOutWiderThanViewport):
        (WebCore::ViewportConfiguration::description const):
        * page/ViewportConfiguration.h:
        (WebCore::ViewportConfiguration::canIgnoreScalingConstraints const):
        (WebCore::ViewportConfiguration::minimumEffectiveDeviceWidth const):

        Add several new getters and setters in ViewportConfiguration.

        (WebCore::ViewportConfiguration::isKnownToLayOutWiderThanViewport const):
        (WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidth const):

        Importantly, only allow ignoring the minimum effective device width in webpages with responsive viewports, if
        they also have *not* laid out wider than the viewport.

        (WebCore::ViewportConfiguration::setForceAlwaysUserScalable):

2019-05-01  Zalan Bujtas  <zalan@apple.com>

        [iOS] Star rating is covered with a black circle when writing a review on Yelp
        https://bugs.webkit.org/show_bug.cgi?id=197469
        <rdar://problem/48094446>

        Reviewed by Dean Jackson.

        This patch moves the background painting of the radio/checkbox form controls in checked state to RenderTheme.
        It enables content authors to disable default appearance using -webkit-appearance: none (it is also inline with what we do on macOS).

        Test: fast/forms/radio-and-checkbox-checked-with-no-appearance.html

        * css/html.css:
        (input:matches([type="checkbox"], [type="radio"]):checked):
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::paintCheckboxDecorations):
        (WebCore::RenderThemeIOS::paintRadioDecorations):

2019-05-01  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION (r244182): RenderingUpdate should not be scheduled for invisible pages
        https://bugs.webkit.org/show_bug.cgi?id=197451

        Reviewed by Simon Fraser.

        Before r244182, some web pages never need to schedule a RenderingUpdate.
        Only pages with rAF callbacks, web animations, intersection and resize 
        observers needed to do so. After r244182, all pages have to schedule a
        RenderingUpdate when a page rendering update is required.

        When Safari opens, it create a 'blank' web page. The blank page will not
        be visible unless the user selects to show the 'Empty page' in the new
        tab. Although the blank page is not visible, the loader needs to resolveStyle()
        which requires to scheduleLayerFlushNow(). 

        We need to optimize this case: calling scheduleLayerFlushNow() for invisible
        pages. We do that by checking if the page is visible before scheduling
        the RenderingUpdate.

        Also we need to change or get rid of scheduleLayerFlushNow() since its name
        has become confusing. It suggests that it is going to schedule flushing
        the layer 'now'. But after r244182, it does scheduleRenderingUpdate() first.
        And when it fires, scheduleCompositingLayerFlush() will be called.

        * page/RenderingUpdateScheduler.cpp:
        (WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::scheduleLayerFlush):
        (WebCore::RenderLayerCompositor::didChangeVisibleRect):
        (WebCore::RenderLayerCompositor::frameViewDidScroll):
        (WebCore::RenderLayerCompositor::attachRootLayer):
        (WebCore::RenderLayerCompositor::setLayerFlushThrottlingEnabled):
        (WebCore::RenderLayerCompositor::layerFlushTimerFired):
        (WebCore::RenderLayerCompositor::scheduleLayerFlushNow): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-05-01  Darin Adler  <darin@apple.com>

        WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
        https://bugs.webkit.org/show_bug.cgi?id=195535

        Reviewed by Alexey Proskuryakov.

        * platform/SharedBuffer.cpp:
        (WebCore::utf8Buffer): Removed unnecessary "strict" argument to convertUTF16ToUTF8 since
        that is the default behavior. Also updated for changes to return values.

        * xml/XSLTProcessorLibxslt.cpp:
        (WebCore::writeToStringBuilder): Removed unnecessary use of StringBuffer for a temporary
        buffer for characters. Rewrote to use U8_NEXT and U16_APPEND directly.

        * xml/parser/XMLDocumentParserLibxml2.cpp:
        (WebCore::convertUTF16EntityToUTF8): Updated for changes to CompletionResult.

2019-05-01  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r244821.

        Causing

        Reverted changeset:

        "WebKit has too much of its own UTF-8 code and should rely
        more on ICU's UTF-8 support"
        https://bugs.webkit.org/show_bug.cgi?id=195535
        https://trac.webkit.org/changeset/244821

2019-05-01  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r244822.

        Causing

        Reverted changeset:

        https://trac.webkit.org/changeset/244822

2019-05-01  Youenn Fablet  <youenn@apple.com>

        Reject/throw when calling AudioContext methods on a stopped AudioContext
        https://bugs.webkit.org/show_bug.cgi?id=197391

        Reviewed by Eric Carlson.

        Return InvalidStateError in that case.
        ASSERT that we do not call lazyInitialize after being stopped
        since this would mean we are doing unneeded processing.

        Test: http/wpt/webaudio/audiocontext-stopped.html

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::lazyInitialize):
        (WebCore::AudioContext::createBufferSource):
        (WebCore::AudioContext::createMediaElementSource):
        (WebCore::AudioContext::createMediaStreamSource):
        (WebCore::AudioContext::createMediaStreamDestination):
        (WebCore::AudioContext::createScriptProcessor):
        (WebCore::AudioContext::createBiquadFilter):
        (WebCore::AudioContext::createWaveShaper):
        (WebCore::AudioContext::createPanner):
        (WebCore::AudioContext::createConvolver):
        (WebCore::AudioContext::createDynamicsCompressor):
        (WebCore::AudioContext::createAnalyser):
        (WebCore::AudioContext::createGain):
        (WebCore::AudioContext::createDelay):
        (WebCore::AudioContext::createChannelSplitter):
        (WebCore::AudioContext::createChannelMerger):
        (WebCore::AudioContext::createOscillator):
        (WebCore::AudioContext::createPeriodicWave):
        (WebCore::AudioContext::startRendering):
        (WebCore::AudioContext::suspend):
        (WebCore::AudioContext::resume):
        (WebCore::AudioContext::close):
        * Modules/webaudio/AudioContext.h:
        * Modules/webaudio/AudioContext.idl:

2019-05-01  Eric Carlson  <eric.carlson@apple.com>

        XMLHttpRequest should propagate user gestures for media playback
        https://bugs.webkit.org/show_bug.cgi?id=197428
        <rdar://problem/46677392>

        Reviewed by Jer Noble.

        A user gesture the would allow media state change in effect when XMLHttpRequest.send is 
        called should be active when the event handlers fire after the transaction completes successfully.

        Test: http/tests/media/user-gesture-preserved-across-xmlhttprequest.html

        * dom/UserGestureIndicator.cpp:
        (WebCore::UserGestureIndicator::UserGestureIndicator): Add a 'scope' parameter to potentially
        limit the scope of the gesture to just media.
        (WebCore::UserGestureIndicator::~UserGestureIndicator): Clear the scope.
        * dom/UserGestureIndicator.h:
        (WebCore::UserGestureToken::processingUserGesture const):
        (WebCore::UserGestureToken::setScope):
        (WebCore::UserGestureToken::resetScope):
        (WebCore::UserGestureToken::hasExpired const):

        * page/DOMTimer.cpp:
        (WebCore::DOMTimerFireState::DOMTimerFireState): Don't need to store the nested timer interval,
        UserGestureIndicator knows when it started.
        (WebCore::DOMTimer::DOMTimer): Ditto.
        (WebCore::DOMTimer::fired): Ditto.
        (WebCore::DOMTimerFireState::nestedTimerInterval const): Deleted.
        (WebCore::shouldForwardUserGesture): Deleted.
        (WebCore::userGestureTokenToForward): Deleted.
        (WebCore::currentNestedTimerInterval): Deleted.
        * page/DOMTimer.h:

        * testing/Internals.cpp:
        (WebCore::Internals::setXHRMaximumIntervalForUserGestureForwarding): Override the maximum
        user gesture interval for testing.
        * testing/Internals.h:
        * testing/Internals.idl:

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::XMLHttpRequest): 
        (WebCore::XMLHttpRequest::send): Stash the user gesture token.
        (WebCore::XMLHttpRequest::dispatchEvent): Clear user gesture token if it has expired. If still
        valid, activate it.
        * xml/XMLHttpRequest.h:

2019-04-29  Darin Adler  <darin@apple.com>

        WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
        https://bugs.webkit.org/show_bug.cgi?id=195535

        Reviewed by Alexey Proskuryakov.

        * platform/SharedBuffer.cpp:
        (WebCore::utf8Buffer): Removed unnecessary "strict" argument to convertUTF16ToUTF8 since
        that is the default behavior. Also updated for changes to return values.

        * xml/XSLTProcessorLibxslt.cpp:
        (WebCore::writeToStringBuilder): Removed unnecessary use of StringBuffer for a temporary
        buffer for characters. Rewrote to use U8_NEXT and U16_APPEND directly.

        * xml/parser/XMLDocumentParserLibxml2.cpp:
        (WebCore::convertUTF16EntityToUTF8): Updated for changes to CompletionResult.

2019-04-30  John Wilander  <wilander@apple.com>

        Add logging of Ad Click Attribution errors and events to a dedicated channel
        https://bugs.webkit.org/show_bug.cgi?id=197332
        <rdar://problem/49918800>

        Reviewed by Youenn Fablet.

        This patch adds an experimental Ad Click Attribution debug mode which
        logs information.

        No new tests.

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::parseConversionRequest):
        (WebCore::AdClickAttribution::debugModeEnabled):
        * loader/AdClickAttribution.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::adClickAttributionDebugModeEnabled const):
        (WebCore::RuntimeEnabledFeatures::setAdClickAttributionDebugModeEnabled):
        * platform/Logging.h:

2019-04-30  Myles C. Maxfield  <mmaxfield@apple.com>

        font-weight: 1000 is not parsed successfully
        https://bugs.webkit.org/show_bug.cgi?id=197427

        Reviewed by Dean Jackson.

        The spec says:
        "Only values greater than or equal to 1, and less than or equal to 1000, are valid"

        This change brings us in-line with all the other browsers.

        Test: fast/text/font-weight-1-1000.html

        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeFontWeightNumber):

2019-04-30  Youenn Fablet  <youenn@apple.com>

        Make Document audio producers use WeakPtr
        https://bugs.webkit.org/show_bug.cgi?id=197382

        Reviewed by Eric Carlson.

        Move from a hash set of raw pointers to a hash set of weak pointers.
        This helps make the code cleaner.
        No observable change of behavior.

        * Modules/mediastream/MediaStreamTrack.h:
        * dom/Document.cpp:
        (WebCore::Document::addAudioProducer):
        (WebCore::Document::removeAudioProducer):
        (WebCore::Document::updateIsPlayingMedia):
        (WebCore::Document::pageMutedStateDidChange):
        * dom/Document.h:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        * html/HTMLMediaElement.h:
        * page/MediaProducer.h:

2019-04-30  Youenn Fablet  <youenn@apple.com>

        [macOS WK1] ASSERTION FAILED: formData in WebCore::ResourceRequest::doUpdateResourceHTTPBody()
        https://bugs.webkit.org/show_bug.cgi?id=196864
        <rdar://problem/49854497>

        Reviewed by Alex Christensen.

        In case of redirection, it is sometimes not possible to retrieve the form data
        from its NSInputStream in case of redirections.
        To handle this case, reuse the first request form data if the new request has a body.
        We also clear the HTTP content type in such a case if the original request has no content type.

        Covered by re-enabled tests.

        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):

2019-04-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244773.
        https://bugs.webkit.org/show_bug.cgi?id=197436

        Causing assertion failures on debug queues (Requested by
        ShawnRoberts on #webkit).

        Reverted changeset:

        "Make Document audio producers use WeakPtr"
        https://bugs.webkit.org/show_bug.cgi?id=197382
        https://trac.webkit.org/changeset/244773

2019-04-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244774.
        https://bugs.webkit.org/show_bug.cgi?id=197431

        Causing assertion failures on debug queues (Requested by
        ShawnRoberts on #webkit).

        Reverted changeset:

        "Reject/throw when calling AudioContext methods on a stopped
        AudioContext"
        https://bugs.webkit.org/show_bug.cgi?id=197391
        https://trac.webkit.org/changeset/244774

2019-04-30  Alex Christensen  <achristensen@webkit.org>

        Add WKContentRuleList ping resource-type
        https://bugs.webkit.org/show_bug.cgi?id=197325
        <rdar://problem/49841404>

        Reviewed by Geoff Garen.

        Tests: http/tests/contentextensions/block-ping-resource-type-ping.html and http/tests/contentextensions/block-ping-resource-type-raw.html

        * contentextensions/ContentExtensionsBackend.cpp:
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
        * contentextensions/ContentExtensionsBackend.h:
        * loader/PingLoader.cpp:
        (WebCore::processContentRuleListsForLoad):
        (WebCore::PingLoader::sendPing):
        * loader/ResourceLoadInfo.cpp:
        (WebCore::ContentExtensions::readResourceType):
        (WebCore::ContentExtensions::ResourceLoadInfo::getResourceFlags const):
        * loader/ResourceLoadInfo.h:
        * page/UserContentProvider.cpp:
        (WebCore::UserContentProvider::processContentRuleListsForLoad):
        * page/UserContentProvider.h:

2019-04-30  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Move 'gpu' API entry point from DOMWindow to Navigator
        https://bugs.webkit.org/show_bug.cgi?id=197348

        Reviewed by Myles C. Maxfield.

        Latest API provides 'gpu' through Navigator instead of DOMWindow. Replace DOMWindowWebGPU with NavigatorGPU.

        Existing tests updated to match. Add test: webgpu-enabled-in-worker.html to ensure workers can access WebGPU.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/NavigatorGPU.cpp:
        (WebCore::NavigatorGPU::from):
        (WebCore::NavigatorGPU::supplementName):
        (WebCore::NavigatorGPU::gpu):
        (WebCore::NavigatorGPU::gpu const):
        * Modules/webgpu/NavigatorGPU.h:
        * Modules/webgpu/NavigatorGPU.idl:
        * Modules/webgpu/WorkerNavigatorGPU.cpp:
        (WebCore::WorkerNavigatorGPU::from):
        (WebCore::WorkerNavigatorGPU::supplementName):
        (WebCore::WorkerNavigatorGPU::gpu):
        (WebCore::WorkerNavigatorGPU::gpu const):
        * Modules/webgpu/WorkerNavigatorGPU.h:
        * Modules/webgpu/WorkerNavigatorGPU.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-04-30  Zalan Bujtas  <zalan@apple.com>

        Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event)
        https://bugs.webkit.org/show_bug.cgi?id=197347
        <rdar://problem/49393423>

        Reviewed by Wenson Hsieh.

        Tests: fast/events/touch/ios/double-tap-for-double-click1.html
               fast/events/touch/ios/double-tap-for-double-click2.html

        * page/Frame.h:
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::nodeRespondingToDoubleClickEvent):

2019-04-30  Youenn Fablet  <youenn@apple.com>

        Reject/throw when calling AudioContext methods on a stopped AudioContext
        https://bugs.webkit.org/show_bug.cgi?id=197391

        Reviewed by Eric Carlson.

        Return InvalidStateError in that case.
        ASSERT that we do not call lazyInitialize after being stopped
        since this would mean we are doing unneeded processing.

        Test: http/wpt/webaudio/audiocontext-stopped.html

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::lazyInitialize):
        (WebCore::AudioContext::createBufferSource):
        (WebCore::AudioContext::createMediaElementSource):
        (WebCore::AudioContext::createMediaStreamSource):
        (WebCore::AudioContext::createMediaStreamDestination):
        (WebCore::AudioContext::createScriptProcessor):
        (WebCore::AudioContext::createBiquadFilter):
        (WebCore::AudioContext::createWaveShaper):
        (WebCore::AudioContext::createPanner):
        (WebCore::AudioContext::createConvolver):
        (WebCore::AudioContext::createDynamicsCompressor):
        (WebCore::AudioContext::createAnalyser):
        (WebCore::AudioContext::createGain):
        (WebCore::AudioContext::createDelay):
        (WebCore::AudioContext::createChannelSplitter):
        (WebCore::AudioContext::createChannelMerger):
        (WebCore::AudioContext::createOscillator):
        (WebCore::AudioContext::createPeriodicWave):
        (WebCore::AudioContext::startRendering):
        (WebCore::AudioContext::suspend):
        (WebCore::AudioContext::resume):
        (WebCore::AudioContext::close):
        * Modules/webaudio/AudioContext.h:
        * Modules/webaudio/AudioContext.idl:

2019-04-30  Youenn Fablet  <youenn@apple.com>

        Make Document audio producers use WeakPtr
        https://bugs.webkit.org/show_bug.cgi?id=197382

        Reviewed by Eric Carlson.

        Move from a hash set of raw pointers to a hash set of weak pointers.
        This helps make the code cleaner.
        No observable change of behavior.

        * Modules/mediastream/MediaStreamTrack.h:
        * dom/Document.cpp:
        (WebCore::Document::addAudioProducer):
        (WebCore::Document::removeAudioProducer):
        (WebCore::Document::updateIsPlayingMedia):
        (WebCore::Document::pageMutedStateDidChange):
        * dom/Document.h:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        * html/HTMLMediaElement.h:
        * page/MediaProducer.h:

2019-04-30  Antti Koivisto  <antti@apple.com>

        Tighten type of ScrollingTree:rootNode() to ScrollingTreeFrameScrollingNode
        https://bugs.webkit.org/show_bug.cgi?id=197414

        Reviewed by Frédéric Wang.

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
        (WebCore::ScrollingTree::handleWheelEvent):
        (WebCore::ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling):
        (WebCore::ScrollingTree::updateTreeFromStateNode):
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::rootNode const):

2019-04-30  Youenn Fablet  <youenn@apple.com>

        Refactor AudioContext to register/unregister itself at construction/destruction time
        https://bugs.webkit.org/show_bug.cgi?id=197383

        Reviewed by Eric Carlson.

        Registering/Unregistering is cheap.
        Instead of registering/unregistering in initialize/uninitialize,
        move this code to constructor/destructor.
        No observable change of behavior.

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::AudioContext):
        (WebCore::AudioContext::~AudioContext):
        (WebCore::AudioContext::lazyInitialize):
        (WebCore::AudioContext::uninitialize):
        (WebCore::AudioContext::visibilityStateChanged):

2019-04-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        WebCore::StyleColorScheme should not have explicitly-declared copy constructor
        https://bugs.webkit.org/show_bug.cgi?id=197412

        Reviewed by Don Olmstead.

        Either we need to explicitly declare a copy assignment operator here, or the copy
        constructor needs to be removed. Having one without the other causes a huge warning spam
        with GCC 9. In this case, the copy constructor is redundant because it's identical to an
        implicitly-declared copy constructor, so let's just remove it.

        * rendering/style/StyleColorScheme.h:

2019-04-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Support prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=196685

        Reviewed by Michael Catanzaro.

        Change the gtk-application-prefer-dark-theme setting when tests change the useDarkModeAppearance setting.

        * PlatformGTK.cmake:
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::resetToConsistentState):
        (WebCore::InternalSettings::setUseDarkAppearanceInternal):
        (WebCore::InternalSettings::setUseDarkAppearance):
        * testing/InternalSettings.h:

2019-04-29  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r244755.

        Casued several test failures on iOS

        Reverted changeset:

        "Double-tapping a post to like doesn't work on Instagram.com
        (needs 'dblclick' event)"
        https://bugs.webkit.org/show_bug.cgi?id=197347
        https://trac.webkit.org/changeset/244755

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        <rdar://problem/50299396> Fix internal High Sierra build
        https://bugs.webkit.org/show_bug.cgi?id=197388

        * Configurations/Base.xcconfig:

2019-04-29  Zalan Bujtas  <zalan@apple.com>

        Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event)
        https://bugs.webkit.org/show_bug.cgi?id=197347
        <rdar://problem/49393423>

        Reviewed by Wenson Hsieh.

        Tests: fast/events/touch/ios/double-tap-for-double-click1.html
               fast/events/touch/ios/double-tap-for-double-click2.html

        * page/Frame.h:
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::nodeRespondingToDoubleClickEvent):

2019-04-30  Simon Fraser  <simon.fraser@apple.com>

        Transform is sometimes left in a bad state after an animation
        https://bugs.webkit.org/show_bug.cgi?id=197401
        rdar://problem/48179186

        Reviewed by Dean Jackson.
        
        In some more complex compositing scenarios, at the end of an animation we'd
        fail to push a new transform onto a layer, because updateGeometry() would
        think there's an animation running (which there is, but in the "Ending" state).

        It's simpler in this code to just always push transform and opacity to the layer;
        they will get overridden by the animation while it's running. The current code
        dates from the first landing of the file, and the reason for the if (!isRunningAcceleratedTransformAnimation)
        check is lost in the sands of time.

        I was not able to get a reliable ref or layer tree test for this, because the next compositing update
        fixes it, and WTR seems to trigger one.  But the added test does show the bug
        in Safari, and is a good test to have.

        Test: compositing/animation/transform-after-animation.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateGeometry):

2019-04-29  Youenn Fablet  <youenn@apple.com>

        getDisplayMedia should be called on user gesture
        https://bugs.webkit.org/show_bug.cgi?id=197356

        Reviewed by Eric Carlson.

        Allow getDisplayMedia on user gesture only.
        Otherwise reject the promise.
        Minor refactoring to align getDisplayMedia, getUserMedia and
        enumerateDevices when called with no document.

        Test: fast/mediastream/screencapture-user-gesture.html

        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::getUserMedia const):
        * Modules/mediastream/MediaDevices.h:
        * Modules/mediastream/NavigatorMediaDevices.h:
        * page/DOMWindow.h:
        * testing/Internals.cpp:
        (WebCore::Internals::setDisableGetDisplayMediaUserGestureConstraint):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-29  Javier Fernandez  <jfernandez@igalia.com>

        line should not be broken before the first space after a word
        https://bugs.webkit.org/show_bug.cgi?id=197278

        Reviewed by Myles C. Maxfield.

        The 'white-space: break-spaces' only adds breaking opportunities after
        a white space character. However, it's possible to break before the
        first space after a word when the feature is used in combination with
        other properties, like overflow-wrap.

        However, breaking before the first space should not be allowed if
        there are previous opportunities. We wrongly assumed that we had to
        consider these previous breaking opportunities if the proper combination
        of line breaking properties is being used, so that breaking before the
        first space after a word is allowed.

        This wrong assumption caused several issues, like the one described in
        the bug, that lead to incorrectly break before the first space even
        though there are previous opportunities, either white spaces or between
        letters.

        Theses issues have been analyzed [1] by the CSS WG and finally agreed on a
        expected behavior, represented in the Web Platform tests added in this
        patch.

        For the later case, of considering previous opportunities between
        letters, we have a seperated issue #952254, so the tests covering such
        cases will be added to the TestExpecations as Failure entries.

        [1] https://github.com/w3c/csswg-drafts/issues/3701

        Tests: imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-001.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-002.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-003.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-004.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-005.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-006.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-007.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-008.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-009.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-010.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-011.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-012.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-before-first-char-013.html

        * rendering/line/BreakingContext.h:
        (WebCore::BreakingContext::handleText):
        (WebCore::BreakingContext::trailingSpacesHang):

2019-04-29  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): animation on https://www.robotodyssey.online gets stuck; site broken
        https://bugs.webkit.org/show_bug.cgi?id=197381

        Reviewed by Zalan Bujtas.

        When -webkit-clip-path changes on a composited layer, we need to trigger a backing geometry update
        to push the changes to GraphicsLayers.

        Test: compositing/style-change/clip-path-change.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::recompositeChangeRequiresGeometryUpdate):

2019-04-29  Chris Dumez  <cdumez@apple.com>

        User-facing strings should use curly quotes instead of straight
        https://bugs.webkit.org/show_bug.cgi?id=197370

        Reviewed by Geoffrey Garen.

        Update localizable strings.

        * en.lproj/Localizable.strings:

2019-04-29  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for non-unified build after r244687.

        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:

2019-04-29  Youenn Fablet  <youenn@apple.com>

        RTCTrackEvent should be delayed until the whole remote description is set
        https://bugs.webkit.org/show_bug.cgi?id=196808
        <rdar://problem/49802649>

        Reviewed by Eric Carlson.

        As per https://w3c.github.io/webrtc-pc/#set-description,
        fire events just before resolving the setRemoteDescription promise.
        This ensures that the exposed stream has all necessary tracks from the beginning.
        Pending track events are created in LibWebRTCMediaEndpoint and stored in PeerConnectionBackend.

        Covered by updated test.

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
        (WebCore::PeerConnectionBackend::setRemoteDescriptionFailed):
        (WebCore::PeerConnectionBackend::addPendingTrackEvent):
        (WebCore::PeerConnectionBackend::stop):
        * Modules/mediastream/PeerConnectionBackend.h:
        * Modules/mediastream/RTCPeerConnection.cpp:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):
        (WebCore::LibWebRTCMediaEndpoint::addPendingTrackEvent):
        (WebCore::LibWebRTCMediaEndpoint::newTransceiver):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:

2019-04-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r244635): [GTK] Wrong background color used in non-dark mode
        https://bugs.webkit.org/show_bug.cgi?id=197276

        Reviewed by Michael Catanzaro.

        Since r244635, we are now getting the frame view background color from the theme. That's correct for dark mode,
        but in non-dark mode we still want to use white backgrounds by default. This made a lot of tests to fail.

        * css/CSSValueKeywords.in: Add -webkit-control-background when HAVE(OS_DARK_MODE_SUPPORT).
        * css/html.css: Use -webkit-control-background instead of -apple-system-control-background.
        * page/FrameView.cpp:
        (WebCore::FrameView::updateBackgroundRecursively): Use CSSValueWindow instead of CSSValueWindowframe.
        * rendering/RenderThemeGtk.cpp:
        (WebCore::RenderThemeGtk::systemColor const): Only get the window background from the theme in dark mode. Handle
        also CSSValueWebkitControlBackground.
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::systemColor const): Handle CSSValueWebkitControlBackground when HAVE(OS_DARK_MODE_SUPPORT).

2019-04-28  Andy Estes  <aestes@apple.com>

        [Apple Pay] Increment the API version from 6 to 7
        https://bugs.webkit.org/show_bug.cgi?id=197041
        <rdar://problem/49986625>

        Reviewed by Geoffrey Garen.

        * Modules/applepay/PaymentCoordinatorClient.cpp:
        (WebCore::PaymentCoordinatorClient::supportsVersion):

2019-04-28  Andy Estes  <aestes@apple.com>

        Fix the watchOS engineering build.

        * Modules/webgpu/WebGPUComputePassEncoder.cpp: Included Logging.h.

2019-04-28  Youenn Fablet  <youenn@apple.com>

        Remove no longer needed mDNS ICE candidate resolution code
        https://bugs.webkit.org/show_bug.cgi?id=197315

        Reviewed by Eric Carlson.

        No change of behavior.
        Removed code is no longer exercised as mDNS resolution happens inside libwebrtc
        using the same resolution mechanism as for TURN/STUN server names.

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::addIceCandidateSucceeded):
        (WebCore::PeerConnectionBackend::addIceCandidateFailed):
        * Modules/mediastream/PeerConnectionBackend.h:

2019-04-27  Simon Fraser  <simon.fraser@apple.com>

        Move some Compositing logging to the Layers log channel
        https://bugs.webkit.org/show_bug.cgi?id=197345

        Reviewed by Sam Weinig.

        Make Compositing logging a bit less verbose by moving the GraphicsLayer tree dump
        to the Layers log channel. Also log GraphicsLayers after flushing, when we'll have
        accurate visible rects. 

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::updateCoverage):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::layersLogEnabled):
        (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
        (WebCore::RenderLayerCompositor::updateCompositingLayers):

2019-04-27  Megan Gardner  <megan_gardner@apple.com>

        Lookup only looking up the first word in selection
        https://bugs.webkit.org/show_bug.cgi?id=197341
        <rdar://problem/48221414>

        Reviewed by Wenson Hsieh.

        Lookup is not testable.

        Reveal needs the full range in order to correctly create the item for the popover.

        * editing/cocoa/DictionaryLookup.mm:
        (WebCore::showPopupOrCreateAnimationController):

2019-04-26  Jer Noble  <jer.noble@apple.com>

        Reduce the number of copies made during SourceBufferPrivateAVFObjC::append() using SharedBuffer
        https://bugs.webkit.org/show_bug.cgi?id=197335
        <rdar://problem/49175604>

        Rubber-stamped by Alex Christensen.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::append):

2019-04-26  Jessie Berlin  <jberlin@webkit.org>

        Add new mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=197313

        Reviewed by Alex Christensen.

        * Configurations/Version.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

2019-04-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244708.
        https://bugs.webkit.org/show_bug.cgi?id=197334

        "Broke the debug build" (Requested by rmorisset on #webkit).

        Reverted changeset:

        "All prototypes should call didBecomePrototype()"
        https://bugs.webkit.org/show_bug.cgi?id=196315
        https://trac.webkit.org/changeset/244708

2019-04-26  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-04-26  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        Tests: TestWebKitAPI/Tests/WebCore/cocoa/AVFoundationSoftLinkTest.mm

        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::category const):
        (WebCore::AudioSession::routeSharingPolicy const):
        (WebCore::AudioSession::routingContextUID const):
        (WebCore::AudioSession::sampleRate const):
        (WebCore::AudioSession::bufferSize const):
        (WebCore::AudioSession::numberOfOutputChannels const):
        (WebCore::AudioSession::tryToSetActiveInternal):
        (WebCore::AudioSession::preferredBufferSize const):
        (WebCore::AudioSession::setPreferredBufferSize):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (-[WebMediaSessionHelper initWithCallback:]):
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
        * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
        (WebCore::AVTrackPrivateAVFObjCImpl::audioKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::videoKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::label const):
        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::createMix):
        * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
        * platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
        (WebCore::MediaSelectionGroupAVFObjC::updateOptions):
        * platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.mm:
        (WebCore::AVFoundationMIMETypeCache::canDecodeType):
        (WebCore::AVFoundationMIMETypeCache::loadMIMETypes):
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistableState):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistentKeys):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsMediaCapability):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSession):
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        (WebCore::CDMSessionAVContentKeySession::isAvailable):
        (WebCore::CDMSessionAVContentKeySession::releaseKeys):
        (WebCore::CDMSessionAVContentKeySession::update):
        (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):
        (WebCore::CDMSessionAVContentKeySession::contentKeySession):
        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::releaseKeys):
        (WebCore::CDMSessionAVStreamSession::update):
        (WebCore::CDMSessionAVStreamSession::setStreamSession):
        (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):
        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
        (WebCore::imageDecoderAssetOptions):
        (WebCore::ImageDecoderAVFObjC::ImageDecoderAVFObjC):
        (WebCore::ImageDecoderAVFObjC::firstEnabledTrack):
        (WebCore::ImageDecoderAVFObjC::readSamples):
        (SOFT_LINK_CONSTANT_MAY_FAIL): Deleted.
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateAVFObjC::label const):
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateLegacyAVFObjC::label const):
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
        (WebCore::MediaPlaybackTargetPickerMac::devicePicker):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::assetCacheForPath):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::synchronizeTextTrackState):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
        (WebCore::determineChangedTracksFromNewTracksAndOldItems):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForLegibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForAudibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForVisualMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType const):
        (WebCore::exernalDeviceDisplayNameForPlayer):
        (WebCore::metadataType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
        (-[WebCoreAVFPullDelegate outputSequenceWasFlushed:]):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks): Deleted.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::clone const):
        (WebCore::PlatformCALayerCocoa::avPlayerLayer const):
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
        (WebCore::validateHEVCParameters):
        * platform/ios/PlatformSpeechSynthesizerIOS.mm:
        (getAVSpeechUtteranceDefaultSpeechRate):
        (getAVSpeechUtteranceMaximumSpeechRate):
        (-[WebSpeechSynthesisWrapper speakUtterance:]):
        (WebCore::PlatformSpeechSynthesizer::initializeVoiceList):
        (SOFT_LINK_CONSTANT): Deleted.
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer init]):
        (-[WebAVPlayerLayer layoutSublayers]):
        (-[WebAVPlayerLayer setVideoGravity:]):
        (-[WebAVPlayerLayer videoRect]):
        (WebAVPlayerLayerView_startRoutingVideoToPictureInPicturePlayerLayerView):
        * platform/mac/SerializedPlatformRepresentationMac.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::getAVFormatIDKeyWithFallback):
        (WebCore::getAVNumberOfChannelsKeyWithFallback):
        (WebCore::getAVSampleRateKeyWithFallback):
        (WebCore::getAVEncoderBitRateKeyWithFallback):
        (WebCore::MediaRecorderPrivateWriter::create):
        (WebCore::MediaRecorderPrivateWriter::setVideoInput):
        (WebCore::MediaRecorderPrivateWriter::setAudioInput):
        * platform/mediastream/RealtimeVideoSource.h:
        * platform/mediastream/VideoPreset.h:
        * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
        (WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices):
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        (-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]):
        (-[WebCoreAudioCaptureSourceIOSListener handleInterruption:]):
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::deviceIsAvailable):
        (WebCore::AVCaptureDeviceManager::updateCachedAVCaptureDevices):
        (WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
        (WebCore::AVCaptureDeviceManager::isAvailable):
        (WebCore::AVCaptureDeviceManager::~AVCaptureDeviceManager):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoPreset::create):
        (WebCore::AVVideoPreset::AVVideoPreset):
        (WebCore::AVVideoCaptureSource::create):
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::capabilities):
        (WebCore::sensorOrientationFromVideoOutput):
        (WebCore::AVVideoCaptureSource::setupSession):
        (WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
        (WebCore::AVVideoCaptureSource::generatePresets):
        (-[WebCoreAVVideoCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver captureOutput:didOutputSampleBuffer:fromConnection:]):

2019-04-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244683.
        https://bugs.webkit.org/show_bug.cgi?id=197320

        Causing crash on iOS Simulator and EWS failures (Requested by
        sroberts on #webkit).

        Reverted changeset:

        "[iOS] Add internal setting to force -webkit-text-size-adjust
        to "auto""
        https://bugs.webkit.org/show_bug.cgi?id=197275
        https://trac.webkit.org/changeset/244683

2019-04-26  Youenn Fablet  <youenn@apple.com>

        Use normal loading path for ping loads
        https://bugs.webkit.org/show_bug.cgi?id=196807

        Reviewed by Alex Christensen.

        Make use of regular code path for ping loads and beacon.
        This is done conditionally on KeepAlive flag.
        The benefits are a single loading code path and service worker interception.

        For that purpose, introduce a LoaderStrategy switch based on KeepAlive runtime flag.
        This switch is used to use ping loads when keepAlive is set or regular loads.
        In case of regular loads, the keepAlive flag should be used to extend the lifetime of the load.

        Migrate ping loads to use CachedResourceLoader instead of PingLoad.
        For that purpose, introduce a new Ping CachedResource type.

        Covered by existing tests.

        * Modules/beacon/NavigatorBeacon.cpp:
        (WebCore::NavigatorBeacon::sendBeacon):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::inspectorResourceType):
        * loader/LinkLoader.cpp:
        (WebCore::createLinkPreloadResourceClient):
        * loader/LoaderStrategy.h:
        * loader/PingLoader.cpp:
        (WebCore::PingLoader::loadImage):
        (WebCore::PingLoader::sendPing):
        (WebCore::PingLoader::sendViolationReport):
        (WebCore::PingLoader::startPingLoad):
        * loader/PingLoader.h:
        * loader/ResourceLoadInfo.cpp:
        (WebCore::toResourceType):
        * loader/SubresourceLoader.cpp:
        (WebCore::logResourceLoaded):
        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::defaultPriorityForResourceType):
        (WebCore::CachedResource::load):
        (WebCore::CachedResource::cancelLoad):
        * loader/cache/CachedResource.h:
        (WebCore::CachedResource::shouldUsePingLoad):
        (WebCore::CachedResource::isMainOrMediaOrIconOrRawResource const):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::createResource):
        (WebCore::CachedResourceLoader::requestPingResource):
        (WebCore::contentTypeFromResourceType):
        (WebCore::CachedResourceLoader::checkInsecureContent const):
        (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
        (WebCore::CachedResourceLoader::canRequest):
        (WebCore::isResourceSuitableForDirectReuse):
        (WebCore::destinationForType):
        * loader/cache/CachedResourceLoader.h:

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r244695
       ​https://bugs.webkit.org/show_bug.cgi?id=197165

        * loader/PingLoader.cpp:

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Fix internal High Sierra build after r244653
        https://bugs.webkit.org/show_bug.cgi?id=197131

        * DerivedSources.make:
        -std=gnu++17 didn't exist yet.  -std=gnu++1z did.

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Add ENABLE(CONTENT_EXTENSIONS) and namespace ContentExtensions to ResourceLoadInfo.h
        https://bugs.webkit.org/show_bug.cgi?id=197165

        Reviewed by Youenn Fablet.

        No change in behavior.  This will just make it harder for people working on the loader to mistake
        these ContentExtension specific structures for other structures general to loading.
        One such mistake was made in r244248.

        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::connect):
        * contentextensions/ContentExtensionsBackend.h:
        * css/StyleSheetContents.cpp:
        (WebCore::StyleSheetContents::subresourcesAllowReuse const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::loadResource):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadResourceSynchronously):
        * loader/NetscapePlugInStreamLoader.cpp:
        (WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader):
        * loader/PingLoader.cpp:
        (WebCore::processContentRuleListsForLoad):
        (WebCore::PingLoader::loadImage):
        (WebCore::PingLoader::sendPing):
        (WebCore::PingLoader::sendViolationReport):
        * loader/ResourceLoadInfo.cpp:
        (WebCore::toResourceType): Deleted.
        (WebCore::readResourceType): Deleted.
        (WebCore::readLoadType): Deleted.
        (WebCore::ResourceLoadInfo::isThirdParty const): Deleted.
        (WebCore::ResourceLoadInfo::getResourceFlags const): Deleted.
        * loader/ResourceLoadInfo.h:
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::willSendRequestInternal):
        * loader/ResourceLoader.h:
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::SubresourceLoader):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::open):
        * page/UserContentProvider.cpp:
        (WebCore::UserContentProvider::processContentRuleListsForLoad):
        (WebCore::UserContentProvider::actionsForResourceLoad):
        * page/UserContentProvider.h:

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Fix an internal High Sierra build after r244653
       ​https://bugs.webkit.org/show_bug.cgi?id=197131

        * DerivedSources.make:
        Apparently we can't use gnu++17 when preprocessing Platform.h in the makefile.

2019-04-26  Chris Fleizach  <cfleizach@apple.com>

        AX: Provide iOS method for setting focus
        https://bugs.webkit.org/show_bug.cgi?id=197200
        <rdar://problem/50131679>

        Reviewed by Alex Christensen.

        Put the focus setting code in a place that iOS and macOS can access.
        Override a platform level method for setting focus on iOS.

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _accessibilitySetFocus:]):
        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (-[WebAccessibilityObjectWrapperBase baseAccessibilitySetFocus:]):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):

2019-04-26  Said Abou-Hallawa  <sabouhallawa@apple.com>

        propertyRegistry() was not overridden for SVGFEFloodElement and SVGFEMergeElement
        https://bugs.webkit.org/show_bug.cgi?id=197303

        Reviewed by Alex Christensen.

        Therefore SVGElement::propertyRegistry() was called instead. This means
        these two elements will not have access to the properties of the base
        class SVGFilterPrimitiveStandardAttributes.

        Tests: svg/dom/SVGFEFloodElement-filter-standard-attributes.svg

        * svg/SVGElement.cpp:
        (WebCore::SVGElement::commitPropertyChange):
        * svg/SVGFEFloodElement.h:
        * svg/SVGFEMergeElement.h:

2019-04-26  Youenn Fablet  <youenn@apple.com>

        [Mac WK2 iOS Sim] Layout Test imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=196633
        <rdar://problem/49627667>

        Reviewed by Alex Christensen.

        Use formula defined in https://w3c.github.io/webrtc-stats/#dom-rtcrtpcontributingsourcestats-audiolevel
        to compute the audio level from the RTP header information.
        Covered by rebased test.

        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
        (WebCore::fillRTCRtpContributingSource):

2019-04-26  Sihui Liu  <sihui_liu@apple.com>

        Stop IDB transactions to release locked database files when network process is ready to suspend
        https://bugs.webkit.org/show_bug.cgi?id=196372
        <rdar://problem/48930116>

        Reviewed by Brady Eidson.

        Suspend IDB database thread and finish ongoing IDB transactions on the main thread before suspending network 
        process.

        API test: IndexedDB.IndexedDBSuspendImminently

        * Modules/indexeddb/server/IDBBackingStore.h:
        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::tryStop):
        (WebCore::IDBServer::IDBServer::resume):
        * Modules/indexeddb/server/IDBServer.h:
        * Modules/indexeddb/server/MemoryIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: Remove some error log messages, because now we may try
        performing database operations without an active transaction if the transaction is finished on the main thread.
        (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::deleteObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::clearObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
        (WebCore::IDBServer::SQLiteIDBBackingStore::deleteIndex):
        (WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex):
        (WebCore::IDBServer::SQLiteIDBBackingStore::keyExistsInObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::deleteRange):
        (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
        (WebCore::IDBServer::SQLiteIDBBackingStore::generateKeyNumber):
        (WebCore::IDBServer::SQLiteIDBBackingStore::revertGeneratedKeyNumber):
        (WebCore::IDBServer::SQLiteIDBBackingStore::maybeUpdateKeyGeneratorNumber):
        (WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
        (WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
        (WebCore::IDBServer::SQLiteIDBBackingStore::hasTransaction const):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::prepareToFinishTransaction):
        (WebCore::IDBServer::UniqueIDBDatabase::commitTransactionAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::didPerformCommitTransaction):
        (WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
        (WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction):
        (WebCore::IDBServer::UniqueIDBDatabase::abortTransactionOnMainThread):
        (WebCore::IDBServer::UniqueIDBDatabase::commitTransactionOnMainThread):
        (WebCore::IDBServer::UniqueIDBDatabase::finishActiveTransactions):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setState):
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::state const):
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setResult):
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::result const):
        * platform/sql/SQLiteDatabaseTracker.cpp:
        (WebCore::SQLiteDatabaseTracker::hasTransactionInProgress):
        * platform/sql/SQLiteDatabaseTracker.h:

2019-04-26  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Fix Curl Request Scheduler not to release wrong Curl handle when request is cancelled.
        https://bugs.webkit.org/show_bug.cgi?id=191650

        Reviewed by Fujii Hironori.

        Test: http/tests/misc/repeat-open-cancel.html

        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::cancel):
        (WebCore::CurlRequest::isCancelled):
        (WebCore::CurlRequest::isCompletedOrCancelled):
        (WebCore::CurlRequest::didCompleteTransfer):
        (WebCore::CurlRequest::completeDidReceiveResponse):
        (WebCore::CurlRequest::pausedStatusChanged):
        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::isCompleted const): Deleted.
        (WebCore::CurlRequest::isCancelled const): Deleted.
        (WebCore::CurlRequest::isCompletedOrCancelled const): Deleted.
        * platform/network/curl/CurlRequestScheduler.cpp:
        (WebCore::CurlRequestScheduler::cancel):
        (WebCore::CurlRequestScheduler::callOnWorkerThread):
        (WebCore::CurlRequestScheduler::startThreadIfNeeded):
        (WebCore::CurlRequestScheduler::stopThreadIfNoMoreJobRunning):
        (WebCore::CurlRequestScheduler::stopThread):
        (WebCore::CurlRequestScheduler::executeTasks):
        (WebCore::CurlRequestScheduler::workerThread):
        (WebCore::CurlRequestScheduler::startTransfer):
        (WebCore::CurlRequestScheduler::completeTransfer):
        (WebCore::CurlRequestScheduler::cancelTransfer):
        (WebCore::CurlRequestScheduler::finalizeTransfer):
        * platform/network/curl/CurlRequestScheduler.h:

2019-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [iOS] Add internal setting to force -webkit-text-size-adjust to "auto"
        https://bugs.webkit.org/show_bug.cgi?id=197275
        <rdar://problem/50211019>

        Reviewed by Simon Fraser.

        This setting makes it easier to investigate the autosizing work we've been doing
        in https://bugs.webkit.org/show_bug.cgi?id=197250.

        * page/Settings.yaml:
        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::adjustComputedFontSizes):
        * rendering/TextAutoSizing.cpp:
        (WebCore::TextAutoSizingValue::adjustTextNodeSizes):

2019-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [iOS] Implement idempotent mode for text autosizing
        https://bugs.webkit.org/show_bug.cgi?id=197250
        <rdar://problem/50211034>

        Reviewed by Jon Lee.

        Our text autosizing code has this interesting behavior where it is sensitive to the width of the text's container
        and the number of lines of text inside the element. Not only is it sensitive to those things, but as those things
        change, their values are stored inside the RenderObject itself and then never recomputed. This means that the text
        autosizing parameters are sensitive to the entire history of an element. So, a newly created element with the same
        style as an existing element can have dramatically different results.

        This patch adds a new mode for text autosizing, which isn't sensitive to either of those things, and therefore
        maintains the invariant that a newly created element will behave the same as an existing element with the same style.
        Instead of using container size, it instead uses the viewport's initial scale. As the viewport's initial scale
        changes, new layouts will be triggered, which will cause the autosizing code to use the new value.

        Tests: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html
               fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html

        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::applyTextSizingIfNeeded):
        * page/Page.cpp:
        (WebCore::Page::setInitialScale): WebKit will push the initial scale down into the page.
        * page/Page.h:
        (WebCore::Page::initialScale const):
        * page/SettingsBase.h:
        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::textAutosizingUsesIdempotentMode):
        (WebCore::SettingsBase::defaultTextAutosizingEnabled):
        * rendering/RenderBlockFlow.cpp:
        (WebCore::idempotentTextSize): Describe a piecewise-linear curve for the text size to follow. The curve scales
        depending on the viewport's initial scale.
        (WebCore::RenderBlockFlow::adjustComputedFontSizes):
        * rendering/RenderBlockFlow.h:
        * rendering/RenderElement.cpp:
        (WebCore::includeNonFixedHeight): This new mode should consider max-height as well as height when determining if
        content overflows.
        (WebCore::RenderElement::adjustComputedFontSizesOnBlocks):
        (WebCore::RenderElement::resetTextAutosizing):
        * rendering/RenderElement.h:
        * rendering/RenderObject.h:

2019-04-25  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r234330): 3 legacy-animation-engine/compositing tests are flaky failures
        https://bugs.webkit.org/show_bug.cgi?id=188357
        <rdar://problem/42986633>

        Reviewed by Dean Jackson.

        DumpRenderTree had no code that set page.setCompositingPolicyOverride() to Normal, so some
        tests would fall into low memory mode and have different behavior.
        
        Fix by moving the code that calls setCompositingPolicyOverride(Normal) from the WK2 layer
        to Internals, so it's shared by DRT and WTR.
        
        We no longer need the WK2 C SPI glue.

        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):

2019-04-25  Sihui Liu  <sihui_liu@apple.com>

        [ iOS Sim ] REGRESSION (r242986) Layout Test storage/indexeddb/modern/idbtransaction-objectstore-failures-private.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=196357
        <rdar://problem/49386836>

        Reviewed by Geoffrey Garen.

        Dispatch IDBRequest event to IDBTransaction if event of IDBTransaction has not been dispatched.

        Covered by existing tests.

        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::dispatchEvent):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::dispatchEvent):
        * Modules/indexeddb/IDBTransaction.h:

2019-04-25  Chris Dumez  <cdumez@apple.com>

        ASSERT(scriptExecutionContext()) in Performance::resourceTimingBufferFullTimerFired()
        https://bugs.webkit.org/show_bug.cgi?id=197300
        <rdar://problem/49965990>

        Reviewed by Youenn Fablet.

        We crash because the scriptExecutionContext has been destroyed by the time the m_resourceTimingBufferFullTimer
        timer fires. However, r241598 already makes sure that we stop the timer when the script execution context
        is destroyed. This makes me think that somebody restarts the timer *after* the script execution context has
        been destroyed. The thing is that we only start the timer in Performance::addResourceTiming() and there are
        only 2 call sites for this method. Both call sites get the Performance object from the Window object, which
        they get from the Document object. As a result, I would believe that the Window's document is alive, even
        though the Performance object's scriptExecutionContext is not. This could indicate that the Performance
        object's scriptExecutionContext gets out of sync with its Window's document. I have found one place where
        it could happen in theory (DOMWindow::didSecureTransitionTo()). I have not been able to write a test
        confirming my theory though so this is a speculative fix. I have also added a few assertions to help us
        track down the issue if my speculative fix turns out to be ineffective.

        No new tests, we do not know how to reproduce.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::didSecureTransitionTo):
        This is a speculative fix for the crash. When a DOMWindow transitions from one document to
        another, reset its data members which store the DOMWindow's document to make sure that they
        do not get out of sync.

        (WebCore::DOMWindow::crypto const):
        (WebCore::DOMWindow::navigator):
        (WebCore::DOMWindow::performance const):
        Add assertions to make sure that the member's scriptExecutionContext is in sync with
        the window's.

        * page/Performance.cpp:
        (WebCore::Performance::addResourceTiming):
        Add assertion to make sure that the scriptExecutionContext() is non-null when calling this
        as this may start the m_resourceTimingBufferFullTimer timer. If my speculative fix above
        does not work, we should hit this and this should tell us which call site is causing this.

2019-04-25  Timothy Hatcher  <timothy@apple.com>

        Disable ContentChangeObserver on iOSMac.
        https://bugs.webkit.org/show_bug.cgi?id=197292
        rdar://problem/49039957

        Reviewed by Zalan Bujtas.

        We don’t need to run any of ContentChangeObserver, because we have hover events on iOSMac.
        Disabling it skips the synthetic mouse move events and speeds up clicks.

        * page/SettingsBase.cpp:
        (WebCore::SettingsBase::defaultContentChangeObserverEnabled): Return false for PLATFORM(IOSMAC).

2019-04-25  Timothy Hatcher  <timothy@apple.com>

        Disable date and time inputs on iOSMac.
        https://bugs.webkit.org/show_bug.cgi?id=197287
        rdar://problem/46794376

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:
        * platform/text/mac/LocaleMac.h:
        * platform/text/mac/LocaleMac.mm:
        (WebCore::LocaleMac::formatDateTime):

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Fix more Windows builds after r244653
        https://bugs.webkit.org/show_bug.cgi?id=197131

        * svg/properties/SVGAnimatedPropertyList.h:
        * svg/properties/SVGProperty.h:
        * svg/properties/SVGPropertyList.h:

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Fix more builds after r244653
        https://bugs.webkit.org/show_bug.cgi?id=197131

        * svg/properties/SVGValuePropertyList.h:
        Something is preventing MSVC from seeing protected constructors from subclasses.

2019-04-25  Per Arne Vollan  <pvollan@apple.com>

        -[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:] never returns _WKWebsiteDataTypeCredentials
        https://bugs.webkit.org/show_bug.cgi?id=196991
        <rdar://problem/45507423>

        Reviewed by Alex Christensen.

        Add method to get all origins with persistent credentials from credential storage.

        API tests: WKWebsiteDataStore.FetchNonPersistentCredentials
                   WKWebsiteDataStore.FetchPersistentCredentials

        * platform/network/CredentialStorage.h:
        * platform/network/mac/CredentialStorageMac.mm:
        (WebCore::CredentialStorage::originsWithPersistentCredentials):

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Fix MSVC build after r244653
        https://bugs.webkit.org/show_bug.cgi?id=197131

        * svg/properties/SVGValueProperty.h:
        MSVC doesn't think it can access these protected constructors from subclasses.
        Make the build work and investigate this later.

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Start using C++17
        https://bugs.webkit.org/show_bug.cgi?id=197131

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        * DerivedSources.make:

2019-04-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244627.
        https://bugs.webkit.org/show_bug.cgi?id=197282

        Causing internal build failures (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244627

2019-04-25  Antti Koivisto  <antti@apple.com>

        redefinition of enumerator 'NSAttachmentCharacter' with Apple internal build
        https://bugs.webkit.org/show_bug.cgi?id=197279

        Reviewed by Antoine Quint.

        Try to fix the build.

        * platform/mac/WebNSAttributedStringExtras.mm:

2019-04-25  Antti Koivisto  <antti@apple.com>

        Visited link hash should be computed only once
        https://bugs.webkit.org/show_bug.cgi?id=197229
        <rdar://problem/48438924>

        Reviewed by Alex Christensen.

        Test: fast/history/visited-href-mutation.html

        Visited link style is now based on the first target URL of the link element. Further href mutations don't affect styling.

        * dom/Document.cpp:
        (WebCore::Document::updateBaseURL):
        * dom/VisitedLinkState.cpp:
        (WebCore::linkAttribute):
        (WebCore::linkHashForElement):

        Visited link support is now limited to HTML and SVG <a> elements.

        (WebCore::VisitedLinkState::invalidateStyleForLink):
        (WebCore::VisitedLinkState::determineLinkStateSlowCase):
        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::HTMLAnchorElement):
        (WebCore::HTMLAnchorElement::parseAttribute):
        * html/HTMLAnchorElement.h:
        (WebCore::HTMLAnchorElement::visitedLinkHash const):
        (WebCore::HTMLAnchorElement::invalidateCachedVisitedLinkHash): Deleted.
        * svg/SVGAElement.cpp:
        (WebCore::SVGAElement::visitedLinkHash const):
        * svg/SVGAElement.h:

2019-04-25  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed in WebCore::MediaPlayerPrivateGStreamer::paused
        https://bugs.webkit.org/show_bug.cgi?id=196691

        Reviewed by Eric Carlson.

        For gif assets, fail media loading early and notify the
        MediaPlayer by setting both network and ready states, so that the
        MediaPlayer will try with with the next media engine or pass the
        error to HTMLMediaElement if there are none.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

2019-04-25  Philippe Normand  <pnormand@igalia.com>

        [REGRESSION(r243197)][GStreamer] http/tests/media/clearkey/collect-webkit-media-session.html hits an ASSERT
        https://bugs.webkit.org/show_bug.cgi?id=197230

        Reviewed by Xabier Rodriguez-Calvar.

        Perform the resource loader disposal and destruction from the main
        thread. Also ensure there's no circular reference between the
        CachedResourceStreamingClient and WebKitWebSrc when disposing of
        the private WebKitWebSrc storage.

        * platform/graphics/gstreamer/MainThreadNotifier.h:
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (_WebKitWebSrcPrivate::~_WebKitWebSrcPrivate):
        (webkit_web_src_class_init):
        (webKitWebSrcDispose):
        (webKitWebSrcCloseSession):
        (webKitWebSrcFinalize): Deleted.

2019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Hardcoded text color in input fields
        https://bugs.webkit.org/show_bug.cgi?id=126907

        Reviewed by Michael Catanzaro.

        Enable HAVE_OS_DARK_MODE_SUPPORT for GTK port to ensure that dark mode is used when Page::useDarkAppearance()
        returns true. This patch reverts r232913, I'll reopen the bug, I think we need to find a better solution for
        that.

        * CMakeLists.txt: Add HAVE_OS_DARK_MODE_SUPPORT to FEATURE_DEFINES_WITH_SPACE_SEPARATOR if enabled.
        * css/CSSDefaultStyleSheets.cpp: Ensure html{color:text} is used in simple style sheet when
        HAVE_OS_DARK_MODE_SUPPORT is enabled.
        * page/FrameView.cpp:
        (WebCore::FrameView::updateBackgroundRecursively): Use CSSValueWindowframe to get the frame view background
        color when HAVE_OS_DARK_MODE_SUPPORT is enabled for non-mac ports.
        * platform/gtk/RenderThemeWidget.cpp:
        (WebCore::RenderThemeWidget::getOrCreate): Create window widget.
        (WebCore::RenderThemeWindow::RenderThemeWindow): Add window widget.
        * platform/gtk/RenderThemeWidget.h:
        * rendering/RenderThemeGtk.cpp:
        (WebCore::RenderThemeGtk::disabledTextColor const): Always use the color from the theme for consistency with
        other form controls.
        (WebCore::RenderThemeGtk::systemColor const): Get the color from the theme for CSSValueText, CSSValueGraytext
        and CSSValueWindowframe.
        * rendering/RenderThemeGtk.h:

2019-04-24  Zalan Bujtas  <zalan@apple.com>

        Regression (r244291): Broken API Test AutoLayoutRenderingProgressRelativeOrdering
        https://bugs.webkit.org/show_bug.cgi?id=196948
        <rdar://problem/49927131>

        Reviewed by Tim Horton.

        Covered by existing tests.

        * loader/EmptyClients.h:
        * page/ChromeClient.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::autoSizeIfEnabled):
        (WebCore::FrameView::enableAutoSizeMode):
        * page/FrameView.h:

2019-04-24  Youenn Fablet  <youenn@apple.com>

        Do not restart WebRTC stats timer if backend is stopped
        https://bugs.webkit.org/show_bug.cgi?id=197257
        <rdar://problem/50095879>

        Reviewed by Eric Carlson.

        We used to stop and reschedule the stat gathering timer in case the
        gathering delay is changing. Timer should not be rescheduled if the backend is stopped.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):

2019-04-24  Andres Gonzalez  <andresg_22@apple.com>

        Flaky crash under WebCore::AXObjectCache::stopCachingComputedObjectAttributes()
        https://bugs.webkit.org/show_bug.cgi?id=187391
        <rdar://problem/40681396

        Check for null value returned by AccessibilityObject::axObjectCache.

        Reviewed by Chris Fleizach.

        No need for new test since existing tests caught this problem.

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::firstChild const):
        (WebCore::AccessibilityNodeObject::lastChild const):
        (WebCore::AccessibilityNodeObject::previousSibling const):
        (WebCore::AccessibilityNodeObject::nextSibling const):
        (WebCore::AccessibilityNodeObject::addChildren):
        (WebCore::AccessibilityNodeObject::anchorElement const):
        (WebCore::AccessibilityNodeObject::changeValueByStep):
        (WebCore::AccessibilityNodeObject::changeValueByPercent):
        (WebCore::AccessibilityNodeObject::textForLabelElement const):
        (WebCore::AccessibilityNodeObject::titleElementText const):
        (WebCore::AccessibilityNodeObject::alternativeText const):
        (WebCore::AccessibilityNodeObject::ariaLabeledByText const):
        (WebCore::AccessibilityNodeObject::helpText const):

2019-04-24  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r242132): Nested position:sticky elements move incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=197255
        rdar://problem/50137744

        Reviewed by Zalan Bujtas.
        
        Revert to the behavior of the code before r242132, where we looked at the direct parent
        scrolling tree node instead of walking up the ancestor chain to find an enclosing scrolling node.
        This fixes nested sticky behavior.

        Test: scrollingcoordinator/mac/nested-sticky.html

        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::applyLayerPositions):

2019-04-24  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        Tests: TestWebKitAPI/Tests/WebCore/cocoa/AVFoundationSoftLinkTest.mm

        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::category const):
        (WebCore::AudioSession::routeSharingPolicy const):
        (WebCore::AudioSession::routingContextUID const):
        (WebCore::AudioSession::sampleRate const):
        (WebCore::AudioSession::bufferSize const):
        (WebCore::AudioSession::numberOfOutputChannels const):
        (WebCore::AudioSession::tryToSetActiveInternal):
        (WebCore::AudioSession::preferredBufferSize const):
        (WebCore::AudioSession::setPreferredBufferSize):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (-[WebMediaSessionHelper initWithCallback:]):
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
        * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
        (WebCore::AVTrackPrivateAVFObjCImpl::audioKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::videoKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::label const):
        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::createMix):
        * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
        * platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
        (WebCore::MediaSelectionGroupAVFObjC::updateOptions):
        * platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.mm:
        (WebCore::AVFoundationMIMETypeCache::canDecodeType):
        (WebCore::AVFoundationMIMETypeCache::loadMIMETypes):
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistableState):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistentKeys):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsMediaCapability):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSession):
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        (WebCore::CDMSessionAVContentKeySession::isAvailable):
        (WebCore::CDMSessionAVContentKeySession::releaseKeys):
        (WebCore::CDMSessionAVContentKeySession::update):
        (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):
        (WebCore::CDMSessionAVContentKeySession::contentKeySession):
        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::releaseKeys):
        (WebCore::CDMSessionAVStreamSession::update):
        (WebCore::CDMSessionAVStreamSession::setStreamSession):
        (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):
        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
        (WebCore::imageDecoderAssetOptions):
        (WebCore::ImageDecoderAVFObjC::ImageDecoderAVFObjC):
        (WebCore::ImageDecoderAVFObjC::firstEnabledTrack):
        (WebCore::ImageDecoderAVFObjC::readSamples):
        (SOFT_LINK_CONSTANT_MAY_FAIL): Deleted.
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateAVFObjC::label const):
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateLegacyAVFObjC::label const):
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
        (WebCore::MediaPlaybackTargetPickerMac::devicePicker):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::assetCacheForPath):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::synchronizeTextTrackState):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
        (WebCore::determineChangedTracksFromNewTracksAndOldItems):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForLegibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForAudibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForVisualMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType const):
        (WebCore::exernalDeviceDisplayNameForPlayer):
        (WebCore::metadataType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
        (-[WebCoreAVFPullDelegate outputSequenceWasFlushed:]):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks): Deleted.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::clone const):
        (WebCore::PlatformCALayerCocoa::avPlayerLayer const):
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
        (WebCore::validateHEVCParameters):
        * platform/ios/PlatformSpeechSynthesizerIOS.mm:
        (getAVSpeechUtteranceDefaultSpeechRate):
        (getAVSpeechUtteranceMaximumSpeechRate):
        (-[WebSpeechSynthesisWrapper speakUtterance:]):
        (WebCore::PlatformSpeechSynthesizer::initializeVoiceList):
        (SOFT_LINK_CONSTANT): Deleted.
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer init]):
        (-[WebAVPlayerLayer layoutSublayers]):
        (-[WebAVPlayerLayer setVideoGravity:]):
        (-[WebAVPlayerLayer videoRect]):
        (WebAVPlayerLayerView_startRoutingVideoToPictureInPicturePlayerLayerView):
        * platform/mac/SerializedPlatformRepresentationMac.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::getAVFormatIDKeyWithFallback):
        (WebCore::getAVNumberOfChannelsKeyWithFallback):
        (WebCore::getAVSampleRateKeyWithFallback):
        (WebCore::getAVEncoderBitRateKeyWithFallback):
        (WebCore::MediaRecorderPrivateWriter::create):
        (WebCore::MediaRecorderPrivateWriter::setVideoInput):
        (WebCore::MediaRecorderPrivateWriter::setAudioInput):
        * platform/mediastream/RealtimeVideoSource.h:
        * platform/mediastream/VideoPreset.h:
        * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
        (WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices):
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        (-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]):
        (-[WebCoreAudioCaptureSourceIOSListener handleInterruption:]):
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::deviceIsAvailable):
        (WebCore::AVCaptureDeviceManager::updateCachedAVCaptureDevices):
        (WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
        (WebCore::AVCaptureDeviceManager::isAvailable):
        (WebCore::AVCaptureDeviceManager::~AVCaptureDeviceManager):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoPreset::create):
        (WebCore::AVVideoPreset::AVVideoPreset):
        (WebCore::AVVideoCaptureSource::create):
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::capabilities):
        (WebCore::sensorOrientationFromVideoOutput):
        (WebCore::AVVideoCaptureSource::setupSession):
        (WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
        (WebCore::AVVideoCaptureSource::generatePresets):
        (-[WebCoreAVVideoCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver captureOutput:didOutputSampleBuffer:fromConnection:]):

2019-04-24  Brady Eidson  <beidson@apple.com>

        XMLHTTPRequest POSTs to a custom WKURLSchemeHandler protocol are missing the HTTP body.
        https://bugs.webkit.org/show_bug.cgi?id=191362

        Reviewed by Alex Christensen.

        Covered by new API tests.

        In 2008 some refactoring added an HTTP(S)-only restriction to copying the form body for
        XHRs that POST, and it added that restriction with no explanation.

        We definitely want to allow that.

        Blobs are broken at this time (covered by bug 197237)

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::send):
        (WebCore::XMLHttpRequest::sendBytesData):

2019-04-24  John Wilander  <wilander@apple.com>

        Age out unconverted Ad Click Attributions after one week.
        https://bugs.webkit.org/show_bug.cgi?id=197238
        <rdar://problem/50177349>

        Reviewed by Chris Dumez.

        This patch adds the two functions AdClickAttribution::markAsExpired()
        and AdClickAttribution::hasExpired() which make use of the existing
        m_timeOfAdClick member.

        Test: http/tests/adClickAttribution/expired-attributions-removed.html

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::markAsExpired):
        (WebCore::AdClickAttribution::hasExpired const):
        * loader/AdClickAttribution.h:

2019-04-24  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (iOS 12.2): CSS perspective property value can only be set correctly once
        https://bugs.webkit.org/show_bug.cgi?id=197105
        rdar://problem/50068230

        Reviewed by Zalan Bujtas.

        Make sure we trigger a geometry update when style properties change that
        result in a StyleDifference::RecompositeLayer, and which are updated on layers
        via RenderLayerBacking::updateGeometry().

        Tests: compositing/style-change/backface-visibility-change.html
               compositing/style-change/perspective-change.html
               compositing/style-change/perspective-origin-change.html
               compositing/style-change/transform-origin-change.html
               compositing/style-change/transform-style-change.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::recompositeChangeRequiresGeometryUpdate):
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2019-04-24  Simon Fraser  <simon.fraser@apple.com>

        Make it possible to control the renderTreeAsText output by setting options on testRunner
        https://bugs.webkit.org/show_bug.cgi?id=197133

        Reviewed by Sam Weinig.

        Add testRunner.setRenderTreeDumpOptions() and expose the subset of RenderAsTextFlag flags
        that make sense in testing (those that don't dump unstable data like addresses), and plumb
        these flags through the various framework layers.

        Convert RenderAsTextBehavior to an OptionSet<RenderAsTextFlag>.

        Fix code generation in WebKitTestRunner to generate bindings for IDL const values,
        and hand-code DumpRenderTree bindings.

        Some cleanup of the TestRunners, using member initializers.

        Test: fast/harness/render-tree-as-text-options.html

        * rendering/RenderLayer.cpp:
        (WebCore::showLayerTree):
        * rendering/RenderTreeAsText.cpp:
        (WebCore::RenderTreeAsText::writeRenderObject):
        (WebCore::writeDebugInfo):
        (WebCore::write):
        (WebCore::writeLayer):
        (WebCore::writeLayerRenderers):
        (WebCore::writeLayers):
        (WebCore::externalRepresentation):
        * rendering/RenderTreeAsText.h:
        (WebCore::externalRepresentation):
        (WebCore::write):
        (WebCore::writeDebugInfo):
        (): Deleted.
        * rendering/svg/SVGRenderTreeAsText.cpp:
        (WebCore::writePositionAndStyle):
        (WebCore::writeStandardPrefix):
        (WebCore::writeChildren):
        (WebCore::writeSVGResourceContainer):
        (WebCore::writeSVGContainer):
        (WebCore::write):
        (WebCore::writeSVGText):
        (WebCore::writeSVGInlineText):
        (WebCore::writeSVGImage):
        (WebCore::writeSVGGradientStop):
        (WebCore::writeResources):
        * rendering/svg/SVGRenderTreeAsText.h:

2019-04-24  Antoine Quint  <graouts@apple.com>

        [iOS] Calling preventDefault() when handling a pointerdown event should not prevent panning, zooming or click event dispatch
        https://bugs.webkit.org/show_bug.cgi?id=195839
        <rdar://problem/48946154>

        Reviewed by Brent Fulgham.

        Tests: pointerevents/ios/pointer-events-prevent-default-allows-click-event.html
               pointerevents/ios/pointer-events-prevent-default-allows-scrolling.html

        The Pointer Events specification defines that the default action of any and all pointer events MUST NOT
        be a manipulation of the viewport (e.g. panning or zooming). In practice, this means that calling
        preventDefault() while handling a Pointer Event has no effect on the inner workings of the user agent,
        so we change the method signature of PointerCaptureController::dispatchEventForTouchAtIndex() to return
        void since we don't need to know whether preventDefault() was called.

        https://www.w3.org/TR/pointerevents/#declaring-candidate-regions-for-default-touch-behaviors

        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
        * page/PointerCaptureController.h:

2019-04-24  Frederic Wang  <fwang@igalia.com>

        With async scrolling enabled, this MathML test asserts
        https://bugs.webkit.org/show_bug.cgi?id=196123

        This patch ensures that updateScrollInfoAfterLayout() is called during MathML layout. This
        fixes assertions when async scrolling is enabled and MathML elements have non-visible overflow.

        Reviewed by Rob Buis.

        Test: mathml/mathml-overflow-crash.html

        * rendering/mathml/RenderMathMLBlock.cpp:
        (WebCore::RenderMathMLBlock::layoutBlock):
        (WebCore::RenderMathMLBlock::layoutInvalidMarkup):
        * rendering/mathml/RenderMathMLFraction.cpp:
        (WebCore::RenderMathMLFraction::layoutBlock):
        * rendering/mathml/RenderMathMLMath.cpp:
        (WebCore::RenderMathMLMath::layoutBlock):
        * rendering/mathml/RenderMathMLMenclose.cpp:
        (WebCore::RenderMathMLMenclose::layoutBlock):
        * rendering/mathml/RenderMathMLOperator.cpp:
        (WebCore::RenderMathMLOperator::layoutBlock):
        * rendering/mathml/RenderMathMLPadded.cpp:
        (WebCore::RenderMathMLPadded::layoutBlock):
        * rendering/mathml/RenderMathMLRoot.cpp:
        (WebCore::RenderMathMLRoot::layoutBlock):
        * rendering/mathml/RenderMathMLRow.cpp:
        (WebCore::RenderMathMLRow::layoutBlock):
        * rendering/mathml/RenderMathMLScripts.cpp:
        (WebCore::RenderMathMLScripts::layoutBlock):
        * rendering/mathml/RenderMathMLSpace.cpp:
        (WebCore::RenderMathMLSpace::layoutBlock):
        * rendering/mathml/RenderMathMLToken.cpp:
        (WebCore::RenderMathMLToken::layoutBlock):
        * rendering/mathml/RenderMathMLUnderOver.cpp:
        (WebCore::RenderMathMLUnderOver::layoutBlock):

2019-04-24  Greg V  <greg@unrelenting.technology>

        Fix -Wc++11-narrowing on unsigned char platforms like FreeBSD/aarch64
        https://bugs.webkit.org/show_bug.cgi?id=197148

        Reviewed by Alex Christensen.

        * contentextensions/DFACombiner.cpp:
        * contentextensions/NFAToDFA.cpp:

2019-04-24  Chris Dumez  <cdumez@apple.com>

        X-Frame-Options header should be ignored when frame-ancestors CSP directive is present
        https://bugs.webkit.org/show_bug.cgi?id=197226
        <rdar://problem/50155649>

        Reviewed by Alex Christensen.

        X-Frame-Options header should be ignored when frame-ancestors CSP directive is present:
        - https://www.w3.org/TR/CSP3/#frame-ancestors-and-frame-options

        Specification says:
        """
        In order to allow backwards-compatible deployment, the frame-ancestors directive _obsoletes_ the
        X-Frame-Options header. If a resource is delivered with an policy that includes a directive named
        frame-ancestors and whose disposition is "enforce", then the X-Frame-Options header MUST be ignored.
        """

        Gecko and Blink follow the specification, WebKit does not. As a result, page [1] is broken with
        WebKit-only on Schwab.com. The page height is wrong and you cannot see all the ETFs as a result.

        [1] https://www.schwab.com/public/schwab/investing/investment_help/investment_research/etf_research/etfs.html?&path=/Prospect/Research/etfs/overview/oneSourceETFs.asp

        Test: http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-overrides-X-Frames-Options.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::responseReceived):
        * page/csp/ContentSecurityPolicy.cpp:
        (WebCore::ContentSecurityPolicy::overridesXFrameOptions const):
        * page/csp/ContentSecurityPolicy.h:
        * page/csp/ContentSecurityPolicyDirectiveList.h:
        (WebCore::ContentSecurityPolicyDirectiveList::hasFrameAncestorsDirective const):

2019-04-24  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Do not use the global _WKContentChange in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=196286
        <rdar://problem/49364417>

        Reviewed by Simon Fraser.

        By reporting WKContentIndeterminateChange in sendMouseMoveEvent enables us to remove the global _WKContentChange state.
        Using _WKContentChange is fine as long as only the observed frame reports content change during the synthetic click event.
        In case of multiple frames, we should really consult the local state instead.
        Unfortunately sendMouseMoveEvent has no access to the observed Document object so we can't really identify the observed content change.
        WKContentIndeterminateChange triggers asynchronous decision making at the callsite and in the callback we have access
        to the active Document/ContentChangeObverver object and can report the correct state.
        This is inline with current WebKit(WK2) behaviour.

        Manually tested with a WebKitLegacy test app.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::setHasNoChangeState):
        (WebCore::ContentChangeObserver::setHasIndeterminateState):
        (WebCore::ContentChangeObserver::setHasVisibleChangeState):
        (WebCore::ContentChangeObserver::setObservedContentState): Deleted.
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):
        * platform/ios/wak/WAKWindow.mm:
        (-[WAKWindow sendMouseMoveEvent:contentChange:]):
        * platform/ios/wak/WKContentObservation.cpp: Removed.
        * platform/ios/wak/WKContentObservation.h:

2019-04-24  Philippe Normand  <pnormand@igalia.com>

        [GTK][GStreamer] Flaky ASSERTION FAILED: m_lock.isHeld() in TextureMapperPlatformLayerProxy
        https://bugs.webkit.org/show_bug.cgi?id=196739

        Reviewed by Xabier Rodriguez-Calvar.

        The crash was triggered because m_videoDecoderPlatform not being
        explicitely set, its value would be inferred as one of the enum
        class values. Making it Optional avoids this issue.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

2019-04-24  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Crash in AudioTrackPrivate with playbin3 enabled
        https://bugs.webkit.org/show_bug.cgi?id=196913

        Reviewed by Xabier Rodriguez-Calvar.

        The crash was due to a playbin3 code path being triggered during
        MSE playback, which is not supposed to work in playbin3 anyway.
        The problem is that setting the USE_PLAYBIN3 environment variable
        to "1" makes the GStreamer playback plugin register the playbin3
        element under the playbin name. So that leads to playbin3 being
        used everywhere in WebKit where we assume the playbin element is
        used. So the proposed solution is to:

        - use a WebKit-specific environment variable instead of the
        GStreamer USE_PLAYBIN3 variable.
        - emit a warning if the USE_PLAYBIN3 environment variable is
        detected. We can't unset it ourselves for security reasons.

        The patch also includes a code cleanup of the player method
        handling the pipeline creation. The previous code had a bug
        leading to playbin3 being used for MSE.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

2019-04-24  chris fleizach  <cfleizach@apple.com>

        AX: Remove deprecated Accessibility Object Model events
        https://bugs.webkit.org/show_bug.cgi?id=197073
        <rdar://problem/50027819>

        Reviewed by Ryosuke Niwa.

        Test: accessibility/mac/replace-text-with-range.html

        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/AccessibilityListBoxOption.cpp:
        (WebCore::AccessibilityListBoxOption::setSelected):
        * accessibility/AccessibilityMediaObject.cpp:
        (WebCore::AccessibilityMediaObject::increment):
        (WebCore::AccessibilityMediaObject::decrement):
        * accessibility/AccessibilityMenuListOption.cpp:
        (WebCore::AccessibilityMenuListOption::setSelected):
        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::increment):
        (WebCore::AccessibilityNodeObject::decrement):
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::press):
        (WebCore::AccessibilityObject::replaceTextInRange):
        (WebCore::AccessibilityObject::scrollToMakeVisible const):
        (WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const): Deleted.
        (WebCore::AccessibilityObject::dispatchAccessibilityEvent const): Deleted.
        (WebCore::AccessibilityObject::dispatchAccessibilityEventWithType const): Deleted.
        (WebCore::AccessibilityObject::dispatchAccessibleSetValueEvent const): Deleted.
        * accessibility/AccessibilityObject.h:
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::setFocused):
        (WebCore::AccessibilityRenderObject::setValue):
        * accessibility/AccessibilityScrollbar.cpp:
        (WebCore::AccessibilityScrollbar::setValue):
        * accessibility/AccessibilitySlider.cpp:
        (WebCore::AccessibilitySlider::setValue):
        * accessibility/ios/AccessibilityObjectIOS.mm:
        (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):
        (WebCore::AccessibilityObject::hasAccessibleDismissEventListener const): Deleted.
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper accessibilityPerformEscape]): Deleted.
        (-[WebAccessibilityObjectWrapper accessibilityElementDidBecomeFocused]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityPerformShowMenuAction]):
        * dom/Element.idl:
        * dom/EventNames.h:
        * dom/EventNames.in:
        * html/HTMLAttributeNames.in:
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::createEventHandlerNameMap):
        * page/Settings.yaml:
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setAccessibilityEventsEnabled): Deleted.
        * testing/InternalSettings.h:
        * testing/InternalSettings.idl:

2019-04-23  Andy Estes  <aestes@apple.com>

        [iOS] QuickLook documents loaded from file: URLs should be allowed to perform same-document navigations
        https://bugs.webkit.org/show_bug.cgi?id=196749
        <rdar://problem/35773454>

        Reviewed by Daniel Bates.

        QuickLook previews are in a non-local origin defined by a unique x-apple-ql-id: URL, which
        isolates the origin that hosted the document from the document preview itself. When a
        QuickLook document is loaded as a file: URL, SecurityOrigin's protections against loading
        local resources from non-local origins prevented navigations like location.reload() and
        fragment navigations.

        To allow reloads and same-document navigations in QuickLook documents loaded from file: URLs,
        we should grant the QuickLook document's SecurityOrigin access to the file path that loaded
        the preview.

        Added a new API test.

        * dom/Document.cpp:
        (WebCore::Document::applyQuickLookSandbox):
        * page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::createNonLocalWithAllowedFilePath):
        (WebCore::SecurityOrigin::canDisplay const):
        * page/SecurityOrigin.h:

2019-04-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Debugger: remove ASSERT_NOT_REACHED where it's possible to reach
        https://bugs.webkit.org/show_bug.cgi?id=197210
        <rdar://problem/48462912>

        Reviewed by Joseph Pecoraro.

        * inspector/agents/page/PageDebuggerAgent.cpp:
        (WebCore::PageDebuggerAgent::didAddEventListener):
        (WebCore::PageDebuggerAgent::didPostMessage):

        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::consoleAgentEnabled):
        (WebCore::InspectorInstrumentation::timelineAgentEnabled):
        Drive-by: add additional `FAST_RETURN_IF_NO_FRONTENDS`.

2019-04-23  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244556.
        https://bugs.webkit.org/show_bug.cgi?id=197212

        Causing build failures on multiple builders (Requested by
        ShawnRoberts on #webkit).

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244556

2019-04-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Uncaught Exception: null is not an object (evaluating 'this.ownerDocument.frameIdentifier')
        https://bugs.webkit.org/show_bug.cgi?id=196420
        <rdar://problem/49444205>

        Reviewed by Timothy Hatcher.

        Modify the existing `frameId` to represent the owner frame of the node, rather than the
        frame it holds (in the case of an `<iframe>`).

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::buildObjectForNode):

2019-04-23  Devin Rousso  <drousso@apple.com>

        ContentSecurityPolicy::logToConsole should include line/column number and source location
        https://bugs.webkit.org/show_bug.cgi?id=114317
        <rdar://problem/13614617>

        Reviewed by Timothy Hatcher.

        No change in functionality.

        * page/csp/ContentSecurityPolicy.h:
        * page/csp/ContentSecurityPolicy.cpp:
        (WebCore::ContentSecurityPolicy::reportViolation const):
        (WebCore::ContentSecurityPolicy::logToConsole const):

2019-04-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: support recording TypedOMCSSImageValue
        https://bugs.webkit.org/show_bug.cgi?id=192609

        Reviewed by Timothy Hatcher.

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::indexForData):
        (WebCore::InspectorCanvas::buildAction):

2019-04-23  Andres Gonzalez  <andresg_22@apple.com>

        Accessibility text search and selection API enhancements.
        https://bugs.webkit.org/show_bug.cgi?id=197095
        <rdar://problem/48181791>

        Reviewed by Chris Fleizach.

        - Split the existing SelectTextWithCriteria API into two: search text API (SearchTextWithCriteria) and a text operation API (TextOperation: select, replace, capitalize...).
        - This allows for more flexibility and extensibility.
        - Added the ability to retrieve text markers for multiple search hits.
        - Various code clean up and consolidation.
        - Added LayoutTest for search API.
        - Previous API is marked with "To be deprecated", and is implemented with new implementation. May be removed in a future change.

        Test: accessibility/mac/search-text/search-text.html

        * accessibility/AccessibilityObject.cpp:
        (WebCore::rangeClosestToRange):
        (WebCore::AccessibilityObject::rangeOfStringClosestToRangeInDirection const):
        (WebCore::AccessibilityObject::findTextRange const):
        (WebCore::AccessibilityObject::findTextRanges const):
        (WebCore::AccessibilityObject::performTextOperation):
        (WebCore::AccessibilityObject::frame const):
        (WebCore::AccessibilityObject::selectText): Deleted.
        * accessibility/AccessibilityObject.h:
        (WebCore::AccessibilitySearchTextCriteria::AccessibilitySearchTextCriteria):
        (WebCore::AccessibilityTextOperation::AccessibilityTextOperation):
        (WebCore::AccessibilitySelectTextCriteria::AccessibilitySelectTextCriteria): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (accessibilityTextCriteriaForParameterizedAttribute):
        (accessibilitySearchTextCriteriaForParameterizedAttribute):
        (accessibilityTextOperationForParameterizedAttribute):
        (-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
        (accessibilitySelectTextCriteriaForCriteriaParameterizedAttribute): Deleted.

2019-04-23  Guy Lewin  <guy@lewin.co.il>

        Multiple File Input Icon Set Regardless of File List
        https://bugs.webkit.org/show_bug.cgi?id=195537

        Reviewed by Alexey Proskuryakov.

        File input elements display icon with an empty file list after
        resetting the file list in 'change' event handler - on iOS

        Test: fast/forms/file/file-reset-in-change-using-open-panel-with-icon.html

        * html/FileInputType.cpp:
        (WebCore::FileInputType::filesChosen):

2019-04-23  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        Tests: TestWebKitAPI/Tests/WebCore/cocoa/AVFoundationSoftLinkTest.mm

        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::category const):
        (WebCore::AudioSession::routeSharingPolicy const):
        (WebCore::AudioSession::routingContextUID const):
        (WebCore::AudioSession::sampleRate const):
        (WebCore::AudioSession::bufferSize const):
        (WebCore::AudioSession::numberOfOutputChannels const):
        (WebCore::AudioSession::tryToSetActiveInternal):
        (WebCore::AudioSession::preferredBufferSize const):
        (WebCore::AudioSession::setPreferredBufferSize):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (-[WebMediaSessionHelper initWithCallback:]):
        (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
        * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
        (WebCore::AVTrackPrivateAVFObjCImpl::audioKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::videoKind const):
        (WebCore::AVTrackPrivateAVFObjCImpl::label const):
        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::createMix):
        * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
        * platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
        (WebCore::MediaSelectionGroupAVFObjC::updateOptions):
        * platform/graphics/avfoundation/objc/AVFoundationMIMETypeCache.mm:
        (WebCore::AVFoundationMIMETypeCache::canDecodeType):
        (WebCore::AVFoundationMIMETypeCache::loadMIMETypes):
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistableState):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistentKeys):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsMediaCapability):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSession):
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        (WebCore::CDMSessionAVContentKeySession::isAvailable):
        (WebCore::CDMSessionAVContentKeySession::releaseKeys):
        (WebCore::CDMSessionAVContentKeySession::update):
        (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):
        (WebCore::CDMSessionAVContentKeySession::contentKeySession):
        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::releaseKeys):
        (WebCore::CDMSessionAVStreamSession::update):
        (WebCore::CDMSessionAVStreamSession::setStreamSession):
        (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):
        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
        (WebCore::imageDecoderAssetOptions):
        (WebCore::ImageDecoderAVFObjC::ImageDecoderAVFObjC):
        (WebCore::ImageDecoderAVFObjC::firstEnabledTrack):
        (WebCore::ImageDecoderAVFObjC::readSamples):
        (SOFT_LINK_CONSTANT_MAY_FAIL): Deleted.
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateAVFObjC::label const):
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:
        (WebCore::InbandTextTrackPrivateLegacyAVFObjC::label const):
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
        (WebCore::MediaPlaybackTargetPickerMac::devicePicker):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::assetCacheForPath):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::synchronizeTextTrackState):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
        (WebCore::determineChangedTracksFromNewTracksAndOldItems):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForLegibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForAudibleMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForVisualMedia):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType const):
        (WebCore::exernalDeviceDisplayNameForPlayer):
        (WebCore::metadataType):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
        (-[WebCoreAVFPullDelegate outputSequenceWasFlushed:]):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks): Deleted.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::clone const):
        (WebCore::PlatformCALayerCocoa::avPlayerLayer const):
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
        (WebCore::validateHEVCParameters):
        * platform/ios/PlatformSpeechSynthesizerIOS.mm:
        (getAVSpeechUtteranceDefaultSpeechRate):
        (getAVSpeechUtteranceMaximumSpeechRate):
        (-[WebSpeechSynthesisWrapper speakUtterance:]):
        (WebCore::PlatformSpeechSynthesizer::initializeVoiceList):
        (SOFT_LINK_CONSTANT): Deleted.
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer init]):
        (-[WebAVPlayerLayer layoutSublayers]):
        (-[WebAVPlayerLayer setVideoGravity:]):
        (-[WebAVPlayerLayer videoRect]):
        (WebAVPlayerLayerView_startRoutingVideoToPictureInPicturePlayerLayerView):
        * platform/mac/SerializedPlatformRepresentationMac.mm:
        (WebCore::jsValueWithValueInContext):
        (WebCore::jsValueWithAVMetadataItemInContext):
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::getAVFormatIDKeyWithFallback):
        (WebCore::getAVNumberOfChannelsKeyWithFallback):
        (WebCore::getAVSampleRateKeyWithFallback):
        (WebCore::getAVEncoderBitRateKeyWithFallback):
        (WebCore::MediaRecorderPrivateWriter::create):
        (WebCore::MediaRecorderPrivateWriter::setVideoInput):
        (WebCore::MediaRecorderPrivateWriter::setAudioInput):
        * platform/mediastream/RealtimeVideoSource.h:
        * platform/mediastream/VideoPreset.h:
        * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
        (WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices):
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        (-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]):
        (-[WebCoreAudioCaptureSourceIOSListener handleInterruption:]):
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::deviceIsAvailable):
        (WebCore::AVCaptureDeviceManager::updateCachedAVCaptureDevices):
        (WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
        (WebCore::AVCaptureDeviceManager::isAvailable):
        (WebCore::AVCaptureDeviceManager::~AVCaptureDeviceManager):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoPreset::create):
        (WebCore::AVVideoPreset::AVVideoPreset):
        (WebCore::AVVideoCaptureSource::create):
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::capabilities):
        (WebCore::sensorOrientationFromVideoOutput):
        (WebCore::AVVideoCaptureSource::setupSession):
        (WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
        (WebCore::AVVideoCaptureSource::generatePresets):
        (-[WebCoreAVVideoCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver captureOutput:didOutputSampleBuffer:fromConnection:]):

2019-04-23  Timothy Hatcher  <timothy@apple.com>

        Speed up RenderTheme::systemColor on Speedometer2.
        https://bugs.webkit.org/show_bug.cgi?id=197203
        rdar://problem/50056756

        Reviewed by Tim Horton.

        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::systemColor const): Remove some unused code. And fetch the cache after an early return.
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::systemColor const): Avoid some allocations in LocalDefaultSystemAppearance
        when a CSS color is in the system color cache.

2019-04-23  Ryosuke Niwa  <rniwa@webkit.org>

        [iOS] element.focus() sometimes fails to reveal the focused element when it becomes editable dynamically
        https://bugs.webkit.org/show_bug.cgi?id=197188

        Reviewed by Wenson Hsieh.

        The bug was caused by the scroll-to-reveal code triggered by Element::updateFocusAppearance updating
        the scroll position via scrolling tree update in a layer tree commit which happens after
        _zoomToRevealFocusedElement in WKContentView had already scrolled the frame view.

        To fix this problem, we need to defer the editor state update until the layer commit (see r244494),
        and update the scrolling tree before invoking WebPageProxy::editorStateChanged which brings up
        the keyboard and scroll-to-reveal the caret in the UI process side.

        We also avoid revealing the focus for the second time via Document::scheduleScrollToFocusedElement
        in Element::updateFocusAppearance as this timer based scrolling also happens after we had already
        revealed the caret in _zoomToRevealFocusedElement. This is a bit hacky but works for most cases since
        we wouldn't bring up a keyboard if the focused element was not editable anyway.

        Test: editing/selection/ios/scrolling-to-focused-element-inside-iframe.html

        * dom/Element.cpp:
        (WebCore::Element::updateFocusAppearance): Avoid scheduling a timer based reavel of the focused element
        when we're already revealing the element via selection change.

2019-04-23  Remy Demarest  <rdemarest@apple.com>

        Fix layout issues occuring when entering full screen mode.
        https://bugs.webkit.org/show_bug.cgi?id=197086
        <rdar://problem/47733671>.

        Reviewed by Darin Adler.

        This issue is the result of changing the style mask of the window after entering
        full screen mode. Safari adds an invisible toolbar to display the URL of the page
        which ends up breaking the layout. Having that window use a style that includes a
        titlebar fixes the bug.

        * platform/mac/WebCoreFullScreenWindow.mm:
        (-[WebCoreFullScreenWindow constrainFrameRect:toScreen:]): Ensure that the window
        can fill the entire screen including the underlapping the menu bar, so that the
        window does not resize when the animation is done.
        (-[WebCoreFullScreenWindow canBecomeMainWindow]): Borderless windows cannot become
        main by default, adding the titlebar allows it to become main, prevent this from
        happening at all to preserve the existing behavior.

2019-04-23  Chris Dumez  <cdumez@apple.com>

        [Process-Swap-On-Navigation] WebKit hangs when going back to a form submission's page due to Process-Swap-On-Navigation on iOS 12.2 and higher
        https://bugs.webkit.org/show_bug.cgi?id=197097
        <rdar://problem/50048318>

        Reviewed by Alex Christensen.

        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
        If we still have a provisional item (new load has been started or we did not clear it because we're about to retry),
        then let the client know the load will continue by passing an extra flag with the didFailProvisionalLoad.

        * loader/FrameLoaderClient.h:
        * loader/FrameLoaderTypes.h:

2019-04-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Implement AtkComponentIface scroll_to methods
        https://bugs.webkit.org/show_bug.cgi?id=196856

        Reviewed by Michael Catanzaro.

        Implement scroll_to and scroll_to_point when ATK >= 2.30.

        Fixes: accessibility/scroll-to-global-point-iframe-nested.html
               accessibility/scroll-to-global-point-iframe.html
               accessibility/scroll-to-global-point-main-window.html
               accessibility/scroll-to-global-point-nested.html
               accessibility/scroll-to-make-visible-div-overflow.html
               accessibility/scroll-to-make-visible-iframe.html
               accessibility/scroll-to-make-visible-nested-2.html
               accessibility/scroll-to-make-visible-nested.html

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::scrollToMakeVisible const): Add new method receiving the
        ScrollRectToVisibleOptions since ATK interface has a parameter to decide how to scroll.
        * accessibility/AccessibilityObject.h:
        * accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
        (atkToContents):
        (webkitAccessibleComponentRefAccessibleAtPoint):
        (webkitAccessibleComponentGetExtents):
        (webkitAccessibleComponentGrabFocus):
        (webkitAccessibleComponentScrollTo):
        (webkitAccessibleComponentScrollToPoint):
        (webkitAccessibleComponentInterfaceInit):
        (core): Deleted.

2019-04-22  Youenn Fablet  <youenn@apple.com>

        Update libwebrtc logging when WebCore WebRTC logging is updated
        https://bugs.webkit.org/show_bug.cgi?id=197166
        <rdar://problem/50107696>

        Unreviewed.

        Build fix after https://trac.webkit.org/changeset/244511.

        * page/Page.cpp:
        (WebCore::Page::configureLoggingChannel):

2019-04-22  Youenn Fablet  <youenn@apple.com>

        Cache API should return Abort error in case of putting an aborted fetch
        https://bugs.webkit.org/show_bug.cgi?id=196757

        Reviewed by Darin Adler.

        In case of an aborted fetch, call consume callback with an AbortError.
        Update the code that handles load cancelling as the loader callback is called.
        Covered by rebased tests.

        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::addAbortSteps):
        (WebCore::FetchResponse::BodyLoader::didFail):
        (WebCore::FetchResponse::BodyLoader::BodyLoader):
        (WebCore::FetchResponse::BodyLoader::~BodyLoader):
        (WebCore::FetchResponse::stop):
        * Modules/fetch/FetchResponse.h:

2019-04-22  Youenn Fablet  <youenn@apple.com>

        Update libwebrtc logging when WebCore WebRTC logging is updated
        https://bugs.webkit.org/show_bug.cgi?id=197166

        Reviewed by Eric Carlson.

        When updating WebRTC logging from Web Inspector, update libwebrtc logging so that no page reload is required.
        Manually tested.

        * page/Page.cpp:
        (WebCore::Page::configureLoggingChannel):

2019-04-22  Simon Fraser  <simon.fraser@apple.com>

        Introduce the concept of "opportunistic" stacking contexts
        https://bugs.webkit.org/show_bug.cgi?id=197077

        Reviewed by Zalan Bujtas.

        Bring back a variant of some code removed in r236424, which allows a RenderLayer
        to be stacking context for painting, without actually being on in terms of CSS.
        
        Internally, RenderLayer will call setIsOpportunisticStackingContext() to make a layer
        into a stacking context for painting. External callers deal with isStackingContext()
        or isCSSStackingContext().

        Sadly we can't make m_forcedStackingContext (set on media element layers) trigger a
        non-CSS stacking context; media controls use mix-blend-mode, and rely on the fake-stacking
        media layer to be the "isolateBlending" ancestor.

        No code uses this yet.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::shouldBeCSSStackingContext const):
        (WebCore::RenderLayer::isStackingContextChanged):
        (WebCore::RenderLayer::setIsOpportunisticStackingContext):
        (WebCore::RenderLayer::setIsCSSStackingContext):
        (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants):
        (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants):
        (WebCore::RenderLayer::beginTransparencyLayers):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputPaintOrderTreeRecursive):
        (WebCore::RenderLayer::shouldBeStackingContext const): Deleted.
        (WebCore::RenderLayer::setIsStackingContext): Deleted.
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::compositingOpacity const):

2019-04-22  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Move swap chain methods from GPUDevice to GPUCanvasContext
        https://bugs.webkit.org/show_bug.cgi?id=197126

        Reviewed by Dean Jackson.

        GPUSwapChains are now configured via GPUCanvasContext instead of GPUDevice. Covers WebGPU API 
        pull request #262.

        Existing WebGPU tests updated to match.

        * Modules/webgpu/GPUCanvasContext.cpp:
        (WebCore::GPUCanvasContext::configureSwapChain):
        (WebCore::GPUCanvasContext::replaceSwapChain): Deleted.
        * Modules/webgpu/GPUCanvasContext.h:
        * Modules/webgpu/GPUCanvasContext.idl:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createSwapChain const): Deleted.
        * Modules/webgpu/WebGPUDevice.h:
        (WebCore::WebGPUDevice::device):
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUSwapChainDescriptor.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUSwapChainDescriptor.h.
        (WebCore::WebGPUSwapChainDescriptor::asGPUSwapChainDescriptor const):
        * Modules/webgpu/WebGPUSwapChainDescriptor.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::setSwapChain):
        (WebCore::GPUDevice::tryCreateSwapChain const): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUSwapChain.h:
        * platform/graphics/gpu/GPUSwapChainDescriptor.h:
        (WebCore::GPUSwapChainDescriptor::GPUSwapChainDescriptor):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::tryCreate):

2019-04-22  Said Abou-Hallawa  <said@apple.com>

        Mark SVGStringList properties '[SameObject]' in the IDL files
        Followup to https://bugs.webkit.org/show_bug.cgi?id=197137

        Reviewed by Darin Adler.

        The SVG elements do not create tear-off wrappers for SVGStrigList DOM
        objects anymore. Instead they return Ref pointers to the same RefCounted
        objects. So they should be marked '[SameObject]' in their IDL files.

        * svg/SVGTests.idl:
        * svg/SVGViewElement.idl:

2019-04-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244495.
        https://bugs.webkit.org/show_bug.cgi?id=197159

        Causing build failures on OpenSource and Internal bots
        (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "WHLSLPrepare.cpp always recompiles, even if nothing was
        changed"
        https://bugs.webkit.org/show_bug.cgi?id=197151
        https://trac.webkit.org/changeset/244495

2019-04-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r241289): [GTK] accessibility/removed-continuation-element-causes-crash.html and accessibility/removed-anonymous-block-child-causes-crash.html crashes
        https://bugs.webkit.org/show_bug.cgi?id=194630

        Reviewed by Michael Catanzaro.

        Do not assume core object always has a wrapper in webkitAccessibleRefChild().

        Fixes: accessibility/removed-continuation-element-causes-crash.html
               accessibility/removed-anonymous-block-child-causes-crash.html

        * accessibility/atk/WebKitAccessible.cpp:
        (webkitAccessibleRefChild): Return early if wrapper is nullptr.

2019-04-21  Darin Adler  <darin@apple.com>

        WHLSLPrepare.cpp always recompiles, even if nothing was changed
        https://bugs.webkit.org/show_bug.cgi?id=197151

        Reviewed by Dan Bernstein.

        * DerivedSources-input.xcfilelist: Script updated this automatically after
        DerivedSources.make was corrected.
        * DerivedSources-output.xcfilelist: Ditto, although I had to manually remove
        one bogus leftover reference to WHLSLStandardLibrary.cpp.

        * DerivedSources.make: Updated the rule that builds WHSLStandardLibrary.h to
        no longer refer to nonexistent WHLSLStandardLibrary.cpp. Because the dependency
        was on a file that was never created, the rule to regenerate WHSLStandardLibrary.h
        was running on every build, instead of only when one of the dependencies changed.

2019-04-20  Said Abou-Hallawa  <said@apple.com>

        REGRESSION (r243137): SVGViewElement.viewTarget should not return a new object
        https://bugs.webkit.org/show_bug.cgi?id=197137

        Reviewed by Darin Adler.

        All the DOM objects accessing the viewTarget of the same SVGViewElement 
        should hold a Ref pointer to the same SVGStringList property.

        Test: svg/dom/SVGViewElement-viewTarget.html

        * svg/SVGViewElement.idl:

2019-04-20  Jer Noble  <jer.noble@apple.com>

        REGRESSION(r243958): Unnecessary deactivation of AudioSession (PLT Regression)
        https://bugs.webkit.org/show_bug.cgi?id=197123
        <rdar://problem/49783264>

        Reviewed by Per Arne Vollan.

        Only set m_becameActive if we actually activated the AudioSession before starting playback. This
        avoids unnecessarily deactivating the AudioSession in processWillSuspend().

        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):

2019-04-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timelines: CPU: ensure that tracking stops when disconnecting Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=197115
        <rdar://problem/49877875>

        Reviewed by Joseph Pecoraro.

        * inspector/agents/InspectorCPUProfilerAgent.cpp:
        (WebCore::InspectorCPUProfilerAgent::willDestroyFrontendAndBackend):

2019-04-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION: Elements: "Inspect Element" context menu often doesn't select that element
        https://bugs.webkit.org/show_bug.cgi?id=197091
        <rdar://problem/49953728>

        Reviewed by Joseph Pecoraro.

        Delay the `inspect` event fron firing with the focued node until the frontend has had a
        chance to request the document. Otherwise, requesting the document clears the mapping of
        node-to-id, so the focused node's id would no longer be valid.

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
        (WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
        (WebCore::InspectorDOMAgent::getDocument):
        (WebCore::InspectorDOMAgent::focusNode):
        (WebCore::InspectorDOMAgent::didCommitLoad):

2019-04-19  John Wilander  <wilander@apple.com>

        Disable Ad Click Attribution in ephemeral sessions and make sure conversion requests use an ephemeral, stateless session
        https://bugs.webkit.org/show_bug.cgi?id=197108
        <rdar://problem/49918702>

        Reviewed by Alex Christensen.

        Tests: http/tests/adClickAttribution/conversion-disabled-in-ephemeral-session.html
               http/tests/adClickAttribution/store-disabled-in-ephemeral-session.html

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
            Early return for ephemeral sessions.
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::shouldUseCredentialStorage):
            Now returns false for StoredCredentialsPolicy:EphemeralStatelessCookieless.
        * platform/network/StoredCredentialsPolicy.h:
            Added enum value EphemeralStatelessCookieless.

2019-04-19  Timothy Hatcher  <timothy@apple.com>

        Standardize the <meta name="color-scheme"> separator.
        https://bugs.webkit.org/show_bug.cgi?id=193931
        rdar://problem/49995929

        Reviewed by Darin Adler.

        Tests: css-dark-mode/color-scheme-meta.html

        * dom/Document.cpp:
        (WebCore::processColorSchemeString): Use isHTMLSpace insead of isColorSchemeSeparator and isASCIISpace.
        (WebCore::isColorSchemeSeparator): Deleted.

2019-04-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add quirks to disable autocorrection and autocapitalization in hidden editable areas on some websites
        https://bugs.webkit.org/show_bug.cgi?id=197102
        <rdar://problem/49864669>

        Reviewed by Ryosuke Niwa.

        Add a quirk to disable autocorrection and autocapitalization in hidden editable areas.

        * page/Quirks.cpp:
        (WebCore::shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost):
        (WebCore::Quirks::shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreas const):
        * page/Quirks.h:

2019-04-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        Implement KeyedDecoderGeneric and KeyedEncoderGeneric
        https://bugs.webkit.org/show_bug.cgi?id=186410

        Reviewed by Don Olmstead.

        Implemented KeyedDecoderGeneric and KeyedEncoderGeneric by using
        WTF::Persistence::Decoder and WTF::Persistence::Encoder.

        No new tests. Covered by existing tests.

        * PlatformWin.cmake: Added KeyedDecoderGeneric.cpp and
        KeyedEncoderGeneric.cpp, and removed KeyedDecoderCF.cpp and
        KeyedEncoderCF.cpp for WinCairo port.
        * platform/generic/KeyedDecoderGeneric.cpp:
        * platform/generic/KeyedDecoderGeneric.h:
        * platform/generic/KeyedEncoderGeneric.cpp:
        * platform/generic/KeyedEncoderGeneric.h:

2019-04-18  Ross Kirsling  <ross.kirsling@sony.com>

        [WinCairo] Non-unified build fails to link Tools
        https://bugs.webkit.org/show_bug.cgi?id=196866

        Reviewed by Fujii Hironori.

        * CMakeLists.txt:
        Drive-by fix -- don't disable string pooling when building WebCoreTestSupport.
        (This should have been part of r235203.)

2019-04-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244434.
        https://bugs.webkit.org/show_bug.cgi?id=197089

        caused 1 API test failure (Requested by zalan on #webkit).

        Reverted changeset:

        "Regression (r244291): Broken API Test
        AutoLayoutRenderingProgressRelativeOrdering"
        https://bugs.webkit.org/show_bug.cgi?id=196948
        https://trac.webkit.org/changeset/244434

2019-04-18  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512
        <rdar://problem/37510435>

        Unreviewed build fix.

        Add new header from r244440.

        * Headers.cmake:

2019-04-18  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512
        <rdar://problem/37510435>

        Reviewed by Alex Christensen.

        The header copying is moved to a target WebCorePrivateFrameworkHeaders. This target was
        originally Windows only but now this is enabled for all CMake based ports.

        Enumerated all headers within WebCore that are used for WebKit(Legacy), tools and
        tests. Shared headers are within Headers.cmake while port and platform specific headers
        are in their respective CMake files. Listing out all headers is preferred because globbing
        will break the build whenever a file is added.

        All include directories within the WebCore source tree are now PRIVATE. They were
        modified to use WebCore_PRIVATE_INCLUDE_DIRECTORIES. They will not propagate to other targets
        which will prevent erroneous includes in targets dependent on WebCore.

        * CMakeLists.txt:
        * Headers.cmake: Added.
        * PlatformAppleWin.cmake:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformPlayStation.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * PlatformWinCairo.cmake:
        * platform/Cairo.cmake:
        * platform/Curl.cmake:
        * platform/FreeType.cmake:
        * platform/GStreamer.cmake:
        * platform/HolePunch.cmake:
        * platform/ImageDecoders.cmake:
        * platform/Soup.cmake: Added.
        * platform/TextureMapper.cmake:

2019-04-18  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Implement API default values
        https://bugs.webkit.org/show_bug.cgi?id=197032

        Reviewed by Myles C. Maxfield.

        Add default values and 'required' qualifiers recently merged to the WebGPU API.

        WebGPU tests specifying these default values have been updated to rely on them for functionality.

        * Modules/webgpu/GPUBindGroupLayoutBinding.idl:
        * Modules/webgpu/GPUBindGroupLayoutDescriptor.idl:
        * Modules/webgpu/GPUBlendDescriptor.idl:
        * Modules/webgpu/GPUBufferDescriptor.idl:
        * Modules/webgpu/GPUColor.idl:
        * Modules/webgpu/GPUColorStateDescriptor.idl:
        * Modules/webgpu/GPUDepthStencilStateDescriptor.idl:
        * Modules/webgpu/GPUExtent3D.idl:
        * Modules/webgpu/GPUInputStateDescriptor.idl:
        * Modules/webgpu/GPUOrigin3D.h:
        * Modules/webgpu/GPUOrigin3D.idl:
        * Modules/webgpu/GPURequestAdapterOptions.idl:
        * Modules/webgpu/GPUTextureDescriptor.idl:
        * Modules/webgpu/GPUVertexAttributeDescriptor.idl:
        * Modules/webgpu/GPUVertexInputDescriptor.idl:
        * Modules/webgpu/WebGPUBindGroupBinding.idl:
        * Modules/webgpu/WebGPUBindGroupDescriptor.idl:
        * Modules/webgpu/WebGPUBufferBinding.h:
        * Modules/webgpu/WebGPUBufferBinding.idl:
        * Modules/webgpu/WebGPUCommandEncoder.idl:
        * Modules/webgpu/WebGPUPipelineDescriptorBase.idl:
        * Modules/webgpu/WebGPUPipelineLayoutDescriptor.idl:
        * Modules/webgpu/WebGPUPipelineStageDescriptor.idl:
        * Modules/webgpu/WebGPURenderPassDescriptor.idl:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
        (WebCore::WebGPURenderPipelineDescriptor::tryCreateGPURenderPipelineDescriptor const):
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
        * Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
        * platform/graphics/gpu/GPUBlendDescriptor.h:
        * platform/graphics/gpu/GPUColorStateDescriptor.h:
        * platform/graphics/gpu/GPUCommandBuffer.h:
        * platform/graphics/gpu/GPUDepthStencilStateDescriptor.h:
        * platform/graphics/gpu/GPURenderPassDescriptor.h:
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h:
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
        * platform/graphics/gpu/GPURequestAdapterOptions.h:
        * platform/graphics/gpu/GPUTextureDescriptor.h:
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::convertRenderPipelineDescriptor):
        (WebCore::trySetFunctionsForPipelineDescriptor):

2019-04-18  Jer Noble  <jer.noble@apple.com>

        Refactoring: Pull all fullscreen code out of Document and into its own helper class
        https://bugs.webkit.org/show_bug.cgi?id=197017

        Reviewed by Eric Carlson.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSDefaultStyleSheets.cpp:
        (WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
        * css/SelectorCheckerTestFunctions.h:
        (WebCore::matchesFullScreenPseudoClass):
        (WebCore::matchesFullScreenAnimatingFullScreenTransitionPseudoClass):
        (WebCore::matchesFullScreenDocumentPseudoClass):
        (WebCore::matchesFullScreenControlsHiddenPseudoClass):
        * dom/Document.cpp:
        (WebCore::Document::removedLastRef):
        (WebCore::Document::prepareForDestruction):
        (WebCore::Document::nodeChildrenWillBeRemoved):
        (WebCore::Document::nodeWillBeRemoved):
        (WebCore::isAttributeOnAllOwners): Deleted.
        (WebCore::Document::fullScreenIsAllowedForElement const): Deleted.
        (WebCore::Document::requestFullScreenForElement): Deleted.
        (WebCore::Document::webkitCancelFullScreen): Deleted.
        (WebCore::Document::webkitExitFullscreen): Deleted.
        (WebCore::Document::webkitFullscreenEnabled const): Deleted.
        (WebCore::unwrapFullScreenRenderer): Deleted.
        (WebCore::Document::webkitWillEnterFullScreen): Deleted.
        (WebCore::Document::webkitDidEnterFullScreen): Deleted.
        (WebCore::Document::webkitWillExitFullScreen): Deleted.
        (WebCore::Document::webkitDidExitFullScreen): Deleted.
        (WebCore::Document::setFullScreenRenderer): Deleted.
        (WebCore::Document::dispatchFullScreenChangeEvents): Deleted.
        (WebCore::Document::dispatchFullScreenChangeOrErrorEvent): Deleted.
        (WebCore::Document::fullScreenElementRemoved): Deleted.
        (WebCore::Document::adjustFullScreenElementOnNodeRemoval): Deleted.
        (WebCore::Document::isAnimatingFullScreen const): Deleted.
        (WebCore::Document::setAnimatingFullScreen): Deleted.
        (WebCore::Document::areFullscreenControlsHidden const): Deleted.
        (WebCore::Document::setFullscreenControlsHidden): Deleted.
        (WebCore::Document::clearFullscreenElementStack): Deleted.
        (WebCore::Document::popFullscreenElementStack): Deleted.
        (WebCore::Document::pushFullscreenElementStack): Deleted.
        (WebCore::Document::addDocumentToFullScreenChangeEventQueue): Deleted.
        * dom/Document.h:
        (WebCore::Document::fullscreenManager):
        (WebCore::Document::webkitIsFullScreen const): Deleted.
        (WebCore::Document::webkitFullScreenKeyboardInputAllowed const): Deleted.
        (WebCore::Document::webkitCurrentFullScreenElement const): Deleted.
        (WebCore::Document::webkitCurrentFullScreenElementForBindings const): Deleted.
        (WebCore::Document::fullScreenRenderer const): Deleted.
        (WebCore::Document::webkitFullscreenElement const): Deleted.
        (WebCore::Document::webkitFullscreenElementForBindings const): Deleted.
        * dom/Document.idl:
        * dom/DocumentFullscreen.h:
        (WebCore::DocumentFullscreen::webkitFullscreenEnabled):
        (WebCore::DocumentFullscreen::webkitFullscreenElement):
        (WebCore::DocumentFullscreen::webkitExitFullscreen):
        (WebCore::DocumentFullscreen::webkitIsFullScreen):
        (WebCore::DocumentFullscreen::webkitFullScreenKeyboardInputAllowed):
        (WebCore::DocumentFullscreen::webkitCurrentFullScreenElement):
        (WebCore::DocumentFullscreen::webkitCancelFullScreen):
        * dom/DocumentFullscreen.idl:
        * dom/Element.cpp:
        (WebCore::Element::webkitRequestFullscreen):
        * dom/EventPath.cpp:
        (WebCore::shouldEventCrossShadowBoundary):
        * dom/FullscreenManager.cpp: Added.
        (WebCore::isAttributeOnAllOwners):
        (WebCore::FullscreenManager::FullscreenManager):
        (WebCore::FullscreenManager::fullscreenIsAllowedForElement const):
        (WebCore::FullscreenManager::requestFullscreenForElement):
        (WebCore::FullscreenManager::cancelFullscreen):
        (WebCore::FullscreenManager::requestExitFullscreen):
        (WebCore::FullscreenManager::exitFullscreen):
        (WebCore::FullscreenManager::isFullscreenEnabled const):
        (WebCore::unwrapFullscreenRenderer):
        (WebCore::FullscreenManager::willEnterFullscreen):
        (WebCore::FullscreenManager::didEnterFullscreen):
        (WebCore::FullscreenManager::willExitFullscreen):
        (WebCore::FullscreenManager::didExitFullscreen):
        (WebCore::FullscreenManager::setFullscreenRenderer):
        (WebCore::FullscreenManager::dispatchFullscreenChangeEvents):
        (WebCore::FullscreenManager::dispatchFullscreenChangeOrErrorEvent):
        (WebCore::FullscreenManager::fullscreenElementRemoved):
        (WebCore::FullscreenManager::adjustFullscreenElementOnNodeRemoval):
        (WebCore::FullscreenManager::isAnimatingFullscreen const):
        (WebCore::FullscreenManager::setAnimatingFullscreen):
        (WebCore::FullscreenManager::areFullscreenControlsHidden const):
        (WebCore::FullscreenManager::setFullscreenControlsHidden):
        (WebCore::FullscreenManager::clear):
        (WebCore::FullscreenManager::emptyEventQueue):
        (WebCore::FullscreenManager::clearFullscreenElementStack):
        (WebCore::FullscreenManager::popFullscreenElementStack):
        (WebCore::FullscreenManager::pushFullscreenElementStack):
        (WebCore::FullscreenManager::addDocumentToFullscreenChangeEventQueue):
        * dom/FullscreenManager.h: Added.
        (WebCore::FullscreenManager::document):
        (WebCore::FullscreenManager::document const):
        (WebCore::FullscreenManager::topDocument const):
        (WebCore::FullscreenManager::page const):
        (WebCore::FullscreenManager::frame const):
        (WebCore::FullscreenManager::documentElement const):
        (WebCore::FullscreenManager::hasLivingRenderTree const):
        (WebCore::FullscreenManager::pageCacheState const):
        (WebCore::FullscreenManager::scheduleFullStyleRebuild):
        (WebCore::FullscreenManager::fullscreenElement const):
        (WebCore::FullscreenManager::isFullscreen const):
        (WebCore::FullscreenManager::isFullscreenKeyboardInputAllowed const):
        (WebCore::FullscreenManager::currentFullscreenElement const):
        (WebCore::FullscreenManager::fullscreenRenderer const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::isFullscreen const):
        (WebCore::HTMLMediaElement::isStandardFullscreen const):
        (WebCore::HTMLMediaElement::enterFullscreen):
        (WebCore::HTMLMediaElement::exitFullscreen):
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::canShowControlsManager const):
        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlFullscreenButtonElement::defaultEventHandler):
        * inspector/agents/InspectorDOMAgent.cpp:
        * page/EventHandler.cpp:
        (WebCore::EventHandler::isKeyEventAllowedInFullScreen const):
        (WebCore::EventHandler::internalKeyEvent):
        * page/Page.cpp:
        (WebCore::Page::setFullscreenControlsHidden):
        * rendering/RenderFullScreen.cpp:
        (WebCore::RenderFullScreen::wrapNewRenderer):
        (WebCore::RenderFullScreen::wrapExistingRenderer):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::isDescendantOfFullScreenLayer):
        * rendering/updating/RenderTreeBuilder.h:
        * rendering/updating/RenderTreeBuilderInline.cpp:
        (WebCore::RenderTreeBuilder::Inline::splitInlines):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::createRenderer):
        * style/StyleSharingResolver.cpp:
        (WebCore::Style::SharingResolver::canShareStyleWithElement const):
        * testing/Internals.cpp:
        (WebCore::Internals::webkitWillEnterFullScreenForElement):
        (WebCore::Internals::webkitDidEnterFullScreenForElement):
        (WebCore::Internals::webkitWillExitFullScreenForElement):
        (WebCore::Internals::webkitDidExitFullScreenForElement):
        (WebCore::Internals::isAnimatingFullScreen const):

2019-04-18  Jer Noble  <jer.noble@apple.com>

        Add support for parsing FairPlayStreaming PSSH boxes.
        https://bugs.webkit.org/show_bug.cgi?id=197064

        Reviewed by Eric Carlson.

        API Tests: ISO.ISOFairPlayStreamingPsshBox

        Add a new set of ISOBox classes for parsing the contents of a FairPlayStreaming PSSH box,
        and add support for this new box to CDMFairPlayStreaming.

        Drive-by fix: add an explicit include for MainThread.h to LibWebRTCProviderCocoa.cpp.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/FourCC.h:
        * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
        (WebCore::CDMPrivateFairPlayStreaming::cencName):
        (WebCore::fairPlaySystemID):
        (WebCore::extractSchemeAndKeyIdFromCenc):
        (WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsCenc):
        (WebCore::CDMPrivateFairPlayStreaming::sanitizeCenc):
        (WebCore::validInitDataTypes):
        (WebCore::CDMFactory::platformRegisterFactories):
        * platform/graphics/avfoundation/CDMFairPlayStreaming.h:
        * platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.cpp: Added.
        (WebCore::ISOFairPlayStreamingPsshBox::fairPlaySystemID):
        (WebCore::ISOFairPlayStreamingInfoBox::parse):
        (WebCore::ISOFairPlayStreamingKeyRequestInfoBox::parse):
        (WebCore::ISOFairPlayStreamingKeyAssetIdBox::parse):
        (WebCore::ISOFairPlayStreamingKeyContextBox::parse):
        (WebCore::ISOFairPlayStreamingKeyVersionListBox::parse):
        (WebCore::ISOFairPlayStreamingKeyRequestBox::parse):
        (WebCore::ISOFairPlayStreamingInitDataBox::parse):
        (WebCore::ISOFairPlayStreamingPsshBox::parse):
        * platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h: Added.
        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

2019-04-18  Sihui Liu  <sihui_liu@apple.com>

        Blob type cannot be stored correctly in IDB when IDBObjectStore has autoIncrement and keyPath options
        https://bugs.webkit.org/show_bug.cgi?id=196128
        <rdar://problem/49562115>

        Reviewed by Geoffrey Garen.

        If a key is auto-generated, it should become a property of the value object. Network process would perform the 
        key injection by deserializing IDBValue into script value, setting the property, serializing the result and 
        storing it in a database record. But network process does not have a JSDOMGlobalObject, so it would fail to 
        deserialize types including Blob and File.

        To solve this issue, we move the key injection to web process and let network process store the original value 
        it gets. In this case, when web process asks for some value, network process should return key, value and key 
        path so that web process can decide whether it should perform a key injection before returning the result. Note
        that the auto-generated key would always be stored as the key in a ObjectStore record.

        Test: storage/indexeddb/modern/objectstore-autoincrement-types.html

        * Modules/indexeddb/IDBCursor.cpp:
        (WebCore::IDBCursor::setGetResult):
        * Modules/indexeddb/IDBCursor.h:
        (WebCore::IDBCursor::primaryKeyPath):
        * Modules/indexeddb/IDBGetAllResult.cpp:
        (WebCore::IDBGetAllResult::isolatedCopy):
        (WebCore::IDBGetAllResult::addKey):
        (WebCore::IDBGetAllResult::addValue):
        (WebCore::IDBGetAllResult::keys const):
        (WebCore::IDBGetAllResult::values const):
        (WebCore::IDBGetAllResult::allBlobFilePaths const):
        (WebCore::isolatedCopyOfVariant): Deleted.

        * Modules/indexeddb/IDBGetAllResult.h: Introduce an IDBKeyPath parameter. Also replace Variant with two Vectors,
        because we only needed to store either key or value before, and now the stored value could be incomplete.
        (WebCore::IDBGetAllResult::IDBGetAllResult):
        (WebCore::IDBGetAllResult::keyPath const):
        (WebCore::IDBGetAllResult::encode const):
        (WebCore::IDBGetAllResult::decode):

        * Modules/indexeddb/IDBGetResult.cpp:
        (WebCore::IDBGetResult::setValue):
        * Modules/indexeddb/IDBGetResult.h:
        (WebCore::IDBGetResult::IDBGetResult):
        (WebCore::IDBGetResult::keyPath const):
        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::setResult):
        (WebCore::IDBRequest::setResultToStructuredClone):
        * Modules/indexeddb/IDBRequest.h:
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::didGetAllRecordsOnServer):
        (WebCore::IDBTransaction::didGetRecordOnServer):
        * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
        (WebCore::IDBServer::MemoryIDBBackingStore::getRecord):
        * Modules/indexeddb/server/MemoryIndex.cpp:
        (WebCore::IDBServer::MemoryIndex::getResultForKeyRange const):
        (WebCore::IDBServer::MemoryIndex::getAllRecords const):
        * Modules/indexeddb/server/MemoryIndexCursor.cpp:
        (WebCore::IDBServer::MemoryIndexCursor::currentData):
        * Modules/indexeddb/server/MemoryObjectStore.cpp:
        (WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
        (WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
        (WebCore::IDBServer::MemoryObjectStore::getAllRecords const):
        * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
        (WebCore::IDBServer::MemoryObjectStoreCursor::currentData):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatementForGetAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
        (WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
        (WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
        * Modules/indexeddb/server/SQLiteIDBCursor.cpp:
        (WebCore::IDBServer::SQLiteIDBCursor::currentData):
        * Modules/indexeddb/server/SQLiteIDBCursor.h:
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:

        (WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd): Remove the key injection from network process. 
        UniqueIDBDatabase stores any value it gets from IDBClient.

        * Modules/indexeddb/shared/IDBResultData.cpp:
        (WebCore::IDBResultData::getResultRef):
        * Modules/indexeddb/shared/IDBResultData.h:

        * bindings/js/IDBBindingUtilities.cpp:
        (WebCore::injectIDBKeyIntoScriptValue): If property is read-only, set would fail and injectKeyIntoResult would
        return null, but we expect it to return result as long as the property value is the same as target. Therefore, 
        we can add an early return here.

        (WebCore::createKeyPathArray):
        (WebCore::generateIndexKeyForValue): We used to generate IndexKey from value stored in database but now the
        value gets stored does not include auto-generated key, as we remove the key injection from network process. In 
        this case if the IDBIndex has the same key path as the auto-generated key, IndexKey would be failed to create
        for it cannot extract auto-generated key from value. Since the auto-generated key would always be the key in 
        database record, we could use value of that key when we find a match in key path.

        (WebCore::deserializeIDBValueWithKeyInjection): If the key path in the result is single entry, the key is 
        probably auto-generated, so we could inject the result key into the result value unconditionally.

        * bindings/js/IDBBindingUtilities.h:
        * bindings/js/JSIDBCursorWithValueCustom.cpp:
        (WebCore::JSIDBCursorWithValue::value const):
        * bindings/js/JSIDBRequestCustom.cpp:
        (WebCore::JSIDBRequest::result const):

2019-04-18  Zalan Bujtas  <zalan@apple.com>

        Regression (r244291): Broken API Test AutoLayoutRenderingProgressRelativeOrdering
        https://bugs.webkit.org/show_bug.cgi?id=196948
        <rdar://problem/49927131>

        Reviewed by Tim Horton.

        * page/FrameView.cpp:
        (WebCore::FrameView::setContentsSize):
        (WebCore::FrameView::autoSizeIfEnabled):
        * page/FrameView.h:

2019-04-18  Shawn Roberts  <sroberts@apple.com>

        Unreviewed manual rollout of r244248 and r244409
        Causing assertion failures on Mac WK2 Debug builds
        https://bugs.webkit.org/show_bug.cgi?id=195623

        * loader/LinkLoader.cpp:
        (WebCore::LinkLoader::prefetchIfNeeded):
        * loader/ResourceLoadInfo.cpp:
        (WebCore::toResourceType):
        * loader/ResourceLoadInfo.h:
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::willSendRequestInternal):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):

2019-04-18  Antti Koivisto  <antti@apple.com>

        Tile update problems in iframe after scrolling page too soon after load
        https://bugs.webkit.org/show_bug.cgi?id=197057
        <rdar://problem/49913663>

        Reviewed by Simon Fraser.

        We end up destroying FrameHosting scrolling node when we shouldn't.

        No test, despite attempts I couldn't get this state to stick. The problem is that in
        most cases the destroying scrolling node gets immediately recreated and connected again.
        Getting into testably buggy state requires some very specific layer tree configuration update.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):

        Test the right thing.

2019-04-18  Antoine Quint  <graouts@apple.com>

        [Pointer Events WPT] Unskip imported/w3c/web-platform-tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node.html
        https://bugs.webkit.org/show_bug.cgi?id=197004

        Reviewed by Antti Koivisto.

        We need to release pointer capture when an element that has pointer capture is disconnected from the DOM.

        * dom/Element.cpp:
        (WebCore::Element::removedFromAncestor): Notify the PointerCaptureController that an element was disconnected.
        * dom/PointerEvent.cpp:
        (WebCore::PointerEvent::create): Broaden createPointerCancelEvent() to take in an event type so that we may use it to create a
        lostpointercapture event as well.
        (WebCore::PointerEvent::createPointerCancelEvent): Deleted.
        * dom/PointerEvent.h:
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::elementWasRemoved): Check whether the provided element matches one of the target overrides recorded
        in the map of captured pointer IDs.
        (WebCore::PointerCaptureController::pointerEventWasDispatched): This block of code was actually useless in this location, the new code
        added in elementWasRemoved() performs the actions that the spec text mandates.
        (WebCore::PointerCaptureController::cancelPointer): Replace the call to createPointerCancelEvent() with one to create().
        * page/PointerCaptureController.h:

2019-04-17  Antoine Quint  <graouts@apple.com>

        [Pointer Events WPT] Unskip imported/w3c/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html
        https://bugs.webkit.org/show_bug.cgi?id=197006

        Reviewed by Antti Koivisto.

        Add support for on* HTML attributes and JS properties for pointer events.

        * dom/GlobalEventHandlers.idl:
        * html/HTMLAttributeNames.in:
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::createEventHandlerNameMap):

2019-04-17  Timothy Hatcher  <timothy@apple.com>

        Standardize the `<meta name="color-scheme">` separator.
        https://bugs.webkit.org/show_bug.cgi?id=193931

        Reviewed by Simon Fraser.

        Drop support for comma as a valid seperator in <meta name="color-scheme"> to
        match the proposal being tracked by: https://github.com/whatwg/html/issues/4504

        Tests: css-dark-mode/color-scheme-meta.html
               css-dark-mode/older-syntax/supported-color-schemes-meta.html

        * dom/Document.cpp:
        (WebCore::isColorSchemeSeparator): Drop support for comma.

2019-04-17  Timothy Hatcher  <timothy@apple.com>

        Rename `supported-color-schemes` to `color-scheme`.
        https://bugs.webkit.org/show_bug.cgi?id=197016
        rdar://problem/49980259

        Reviewed by Simon Fraser.

        Changed `supported-color-schemes` to `color-scheme` to follow the spec changes
        being tracked by: https://github.com/w3c/csswg-drafts/issues/3807

        The old `supported-color-schemes` is now an alias of `color-scheme` for compatibility.

        Tests: css-dark-mode/color-scheme-css-parse.html
               css-dark-mode/color-scheme-css.html
               css-dark-mode/color-scheme-meta.html
               css-dark-mode/color-scheme-priority.html
               css-dark-mode/color-scheme-scrollbar.html
               css-dark-mode/older-syntax/supported-color-schemes-css.html
               css-dark-mode/older-syntax/supported-color-schemes-meta.html
               css-dark-mode/older-systems/color-scheme-css.html
               css-dark-mode/older-systems/color-scheme-meta.html

        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::updateColorScheme):
        (WebCore::StyleBuilderConverter::convertColorScheme):
        (WebCore::StyleBuilderConverter::updateSupportedColorSchemes): Deleted.
        (WebCore::StyleBuilderConverter::convertSupportedColorSchemes): Deleted.
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyValueColorScheme):
        (WebCore::StyleBuilderCustom::applyValueSupportedColorSchemes): Deleted.
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::applyMatchedProperties):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeColorScheme):
        (WebCore::CSSPropertyParser::parseSingleValue):
        (WebCore::consumeSupportedColorSchemes): Deleted.
        * dom/Document.cpp:
        (WebCore::processColorSchemeString):
        (WebCore::Document::processColorScheme):
        (WebCore::Document::useDarkAppearance const):
        (WebCore::processColorSchemes): Deleted.
        (WebCore::Document::processSupportedColorSchemes): Deleted.
        * dom/Document.h:
        * html/HTMLMetaElement.cpp:
        (WebCore::HTMLMetaElement::process):
        * page/FrameView.cpp:
        (WebCore::FrameView::rendererForColorScheme const):
        (WebCore::FrameView::useDarkAppearance const):
        (WebCore::FrameView::styleColorOptions const):
        (WebCore::FrameView::rendererForSupportedColorSchemes const): Deleted.
        * page/FrameView.h:
        * rendering/style/RenderStyle.cpp:
        (WebCore::rareInheritedDataChangeRequiresRepaint):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::colorScheme const):
        (WebCore::RenderStyle::setHasExplicitlySetColorScheme):
        (WebCore::RenderStyle::hasExplicitlySetColorScheme const):
        (WebCore::RenderStyle::setColorScheme):
        (WebCore::RenderStyle::initialColorScheme):
        (WebCore::RenderStyle::NonInheritedFlags::operator== const):
        (WebCore::RenderStyle::supportedColorSchemes const): Deleted.
        (WebCore::RenderStyle::setHasExplicitlySetSupportedColorSchemes): Deleted.
        (WebCore::RenderStyle::hasExplicitlySetSupportedColorSchemes const): Deleted.
        (WebCore::RenderStyle::setSupportedColorSchemes): Deleted.
        (WebCore::RenderStyle::initialSupportedColorSchemes): Deleted.
        * rendering/style/RenderStyleConstants.h:
        * rendering/style/StyleColorScheme.h: Renamed from Source/WebCore/rendering/style/StyleSupportedColorSchemes.h.
        (WebCore::StyleColorScheme::StyleColorScheme):
        (WebCore::StyleColorScheme::operator== const):
        (WebCore::StyleColorScheme::operator!= const):
        (WebCore::StyleColorScheme::isAuto const):
        (WebCore::StyleColorScheme::isOnly const):
        (WebCore::StyleColorScheme::colorScheme const):
        (WebCore::StyleColorScheme::add):
        (WebCore::StyleColorScheme::contains const):
        (WebCore::StyleColorScheme::setAllowsTransformations):
        (WebCore::StyleColorScheme::allowsTransformations const):
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:

2019-04-17  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPUComputePassEncoder::dispatch number of thread groups, not grid size
        https://bugs.webkit.org/show_bug.cgi?id=196984

        Reviewed by Myles C. Maxfield.

        Test: Updated compute-squares.html.

        * platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm:
        (WebCore::GPUComputePassEncoder::dispatch):

2019-04-17  Andy Estes  <aestes@apple.com>

        [iOS] Support multiple file selection in UIDocumentPickerViewController
        https://bugs.webkit.org/show_bug.cgi?id=197014
        <rdar://problem/49963514>

        Reviewed by Tim Horton.

        * platform/LocalizedStrings.h:
        Exported multipleFileUploadText().

2019-04-17  John Wilander  <wilander@apple.com>

        Add prioritization of ad click conversions and cleaning of sent ad click conversions
        https://bugs.webkit.org/show_bug.cgi?id=196934
        <rdar://problem/49917773>

        Reviewed by Chris Dumez.

        Tests: http/tests/adClickAttribution/second-attribution-converted-with-higher-priority.html
               http/tests/adClickAttribution/second-attribution-converted-with-lower-priority.html
               http/tests/adClickAttribution/second-conversion-with-higher-priority.html
               http/tests/adClickAttribution/second-conversion-with-lower-priority.html

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::hasHigherPriorityThan const):
            Added to facilitate priority comparison between two attributions.
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Destination::Destination):
            Added a WTF::HashTableDeletedValueType constructor and changed the copy constructor to
            a move constructor.
        (WebCore::AdClickAttribution::isEmpty const):

2019-04-17  Devin Rousso  <drousso@apple.com>

        AX: AccessibilityObject::parentObject() doesn't need to be pure virtual
        https://bugs.webkit.org/show_bug.cgi?id=197026
        <rdar://problem/49448209>

        Reviewed by Timothy Hatcher.

        * accessibility/AccessibilityObject.h:
        (WebCore::AccessibilityObject::parentObject const):

2019-04-17  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Use aria role as a hint whether a tap should result in a synthetic click
        https://bugs.webkit.org/show_bug.cgi?id=196988
        <rdar://problem/49955328>

        Reviewed by Simon Fraser.

        Test: fast/events/touch/ios/content-observation/tap-on-input-looking-div-with-role.html

        * accessibility/AccessibilityObject.h:

2019-04-17  Alex Christensen  <achristensen@webkit.org>

        WebSocketHandshake should not know about a Document
        https://bugs.webkit.org/show_bug.cgi?id=196468

        Reviewed by Tim Horton.

        I'll need to move WebSocketHandshake to the NetworkProcess for rdar://problem/46287028
        It currently uses the Document pointer for 3 things:
        1. To get the user agent, which we can pass in as a creation parameter.
        2. To get the origin, which we can also pass in as a creation parameter.
        3. To get cookies for the web inspector.  We can pass in a functor instead and have the inspector provide cookies itself.

        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::connect):
        (WebCore::WebSocketChannel::disconnect):
        (WebCore::WebSocketChannel::didOpenSocketStream):
        (WebCore::WebSocketChannel::clientHandshakeRequest):
        * Modules/websockets/WebSocketChannel.h:
        (WebCore::WebSocketChannel::document):
        * Modules/websockets/WebSocketHandshake.cpp:
        (WebCore::WebSocketHandshake::WebSocketHandshake):
        (WebCore::WebSocketHandshake::clientHandshakeMessage const):
        (WebCore::WebSocketHandshake::clientHandshakeRequest const):
        (WebCore::WebSocketHandshake::clientOrigin const): Deleted.
        (WebCore::WebSocketHandshake::clientHandshakeCookieRequestHeaderFieldProxy const): Deleted.
        (WebCore::WebSocketHandshake::clearDocument): Deleted.
        * Modules/websockets/WebSocketHandshake.h:
        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::enable):

2019-04-17  Timothy Hatcher  <timothy@apple.com>

        Unreviewed build fix for iOSMac after r244223.

        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::routeSharingPolicy const): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END
        around AVAudioSessionRouteSharingPolicyLongForm use.

2019-04-17  Chris Dumez  <cdumez@apple.com>

        Remember device orientation permission for the duration of the browsing session
        https://bugs.webkit.org/show_bug.cgi?id=196992
        <rdar://problem/49946067>

        Reviewed by Alex Christensen.

        Use DeviceOrientationOrMotionPermissionState type more consistently in the code base
        instead of bool or Optional<bool>. Added "Prompt" value to this enumeration which is the
        default state and which indicates we should ask the client.

        * WebCore.xcodeproj/project.pbxproj:
        * dom/DeviceOrientationAndMotionAccessController.cpp:
        (WebCore::DeviceOrientationAndMotionAccessController::DeviceOrientationAndMotionAccessController):
        (WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
        * dom/DeviceOrientationAndMotionAccessController.h:
        (WebCore::DeviceOrientationAndMotionAccessController::accessState const):
        * dom/DeviceOrientationOrMotionEvent.cpp:
        (WebCore::DeviceOrientationOrMotionEvent::requestPermission):
        * dom/DeviceOrientationOrMotionPermissionState.h:
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::deviceOrientationAndMotionAccessState const):
        (WebCore::DocumentLoader::setDeviceOrientationAndMotionAccessState):
        * page/ChromeClient.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::isAllowedToAddDeviceMotionOrientationListener const):

2019-04-17  Rob Buis  <rbuis@igalia.com>

        XMLHttpRequest has the wrong fallback encoding
        https://bugs.webkit.org/show_bug.cgi?id=191741

        Reviewed by Alex Christensen.

        Allow overriding the response charset as specified here:
        https://xhr.spec.whatwg.org/#final-charset

        Behavior matches Firefox and Chrome.

        Tests: imported/w3c/web-platform-tests/encoding/replacement-encodings.any.html
               imported/w3c/web-platform-tests/encoding/replacement-encodings.any.worker.html
               imported/w3c/web-platform-tests/encoding/unsupported-encodings.any.html
               imported/w3c/web-platform-tests/encoding/unsupported-encodings.any.worker.html

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::finalResponseCharset const):
        (WebCore::XMLHttpRequest::createDecoder const):
        * xml/XMLHttpRequest.h:

2019-04-16  Antoine Quint  <graouts@apple.com>

        Opt Google Maps into simulated mouse events dispatch quirk
        https://bugs.webkit.org/show_bug.cgi?id=196965
        <rdar://problem/49934766>

        Reviewed by Dean Jackson.

        Use the correct Google Maps path.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

2019-04-16  Antoine Quint  <graouts@apple.com>

        Opt flipkart.com into simulated mouse events dispatch quirk
        https://bugs.webkit.org/show_bug.cgi?id=196961
        <rdar://problem/49648520>

        Reviewed by Dean Jackson.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

2019-04-16  Antoine Quint  <graouts@apple.com>

        Opt MSN.com into simulated mouse events dispatch quirk
        https://bugs.webkit.org/show_bug.cgi?id=196960
        <rdar://problem/49403260>

        Reviewed by Dean Jackson.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

2019-04-16  Zan Dobersek  <zdobersek@igalia.com>

        ScalableImageDecoder: don't forcefully decode image data when querying frame completeness, duration
        https://bugs.webkit.org/show_bug.cgi?id=191354
        <rdar://problem/46123406>

        Reviewed by Michael Catanzaro.

        ScalableImageDecoder::frameIsCompleteAtIndex() should only check the
        index validity and, if the index is valid, check for completeness of the
        corresponding frame. ScalableImageDecoder::frameDurationAtIndex() should
        also only retrieve duration for already-complete frames, or expand the
        default 0-second value according to the flashing-protection rule when
        the target frame is not yet complete.

        Both methods avoid calling ScalableImageDecoder::frameBufferAtIndex()
        as that method goes on and decodes image data to determine specific
        information. The ImageSource class that's querying this information
        doesn't anticipate this, and doesn't handle the increased memory
        consumption of the decoded data, leaving MemoryCache in the blind about
        the image resource's actual amount of consumed memory. ImageSource can
        instead gracefully handle any incomplete frame by marking the decoding
        status for this frame as only partial.

        * platform/image-decoders/ScalableImageDecoder.cpp:
        (WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const):
        (WebCore::ScalableImageDecoder::frameHasAlphaAtIndex const):
        (WebCore::ScalableImageDecoder::frameDurationAtIndex const):

2019-04-16  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed non-unified build fix after r244307.

        * page/DiagnosticLoggingClient.h:

2019-04-16  Chris Dumez  <cdumez@apple.com>

        URL set by document.open() is not communicated to the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=196941
        <rdar://problem/49237544>

        Reviewed by Geoff Garen.

        Notify the FrameLoaderClient whenever an explicit open was done and provide it with
        the latest document URL.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::didExplicitOpen):
        * loader/FrameLoaderClient.h:

2019-04-16  Timothy Hatcher  <timothy@apple.com>

        FrameView base background color always starts white.
        https://bugs.webkit.org/show_bug.cgi?id=196976

        Reviewed by Beth Dakin.

        * page/FrameView.cpp:
        (WebCore::FrameView::setBaseBackgroundColor): Bail early if the base background
        color did not change.

2019-04-16  Devin Rousso  <drousso@apple.com>

        Unprefix -webkit-sticky
        https://bugs.webkit.org/show_bug.cgi?id=196962
        <rdar://problem/40903458>

        Reviewed by Simon Fraser.

        Updated existing tests.

        This change doesn't modify functionality, only exposing a new unprefixed CSS value.

        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator PositionType const):

        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::convertPositionStyle):

2019-04-16  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244321.
        https://bugs.webkit.org/show_bug.cgi?id=196968

        Causing all WK2 Debug builds to exit early after Assertion
        failures. (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "URL set by document.open() is not communicated to the
        UIProcess"
        https://bugs.webkit.org/show_bug.cgi?id=196941
        https://trac.webkit.org/changeset/244321

2019-04-16  Caitlin Potter  <caitp@igalia.com>

        [JSC] Filter DontEnum properties in ProxyObject::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=176810

        Reviewed by Saam Barati.

        Previously, there was a comment here indicating uncertainty of whether it
        was necessary to filter DontEnum properties explicitly or not. It turns
        out that it was necessary in the case of JSC ProxyObjects.

        This patch adds DontEnum filtering for ProxyObjects, however we continue
        to explicitly filter them in JSDOMConvertRecord, which needs to use the
        property descriptor after filtering. This change prevents observably
        fetching the property descriptor twice per property.

        * bindings/js/JSDOMConvertRecord.h:

2019-04-15  Antoine Quint  <graouts@apple.com>

        [iOS] Redundant pointer events causes material design buttons to flush twice
        https://bugs.webkit.org/show_bug.cgi?id=196914
        <rdar://problem/49571860>

        Reviewed by Dean Jackson.

        Test: pointerevents/ios/pointer-event-order.html

        Do not dispatch pointer events for mouse events on iOS since we're already dispatching them when processing touch events.

        * dom/Element.cpp:
        (WebCore::Element::dispatchMouseEvent):

2019-04-15  John Wilander  <wilander@apple.com>

        Add a query string nonce to LayoutTests/http/tests/adClickAttribution/send-attribution-conversion-request.html to address flakiness
        https://bugs.webkit.org/show_bug.cgi?id=196955

        Unreviewed test gardening. The WebCore change is only in a dedicated
        test function.

        No new tests. Existing test updated.

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::urlForTesting const):
            Now preserves the query string in the test URL.

2019-04-15  Chris Dumez  <cdumez@apple.com>

        URL set by document.open() is not communicated to the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=196941
        <rdar://problem/49237544>

        Reviewed by Geoffrey Garen.

        Notify the FrameLoaderClient whenever an explicit open was done and provide it with
        the latest document URL.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::didExplicitOpen):
        * loader/FrameLoaderClient.h:

2019-04-15  Eike Rathke  <erack@redhat.com>

        Fix logic flow for error log
        https://bugs.webkit.org/show_bug.cgi?id=196933

        Reviewed by Alexey Proskuryakov.

        Missing block braces logged an error always, not just
        if (actionIfInvalid == Complain).

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::isSafeToLoadURL):

2019-04-15  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
        https://bugs.webkit.org/show_bug.cgi?id=196846
        <rdar://problem/49499971>

        Reviewed by Simon Fraser and Darin Adler.

        When adding the special codepath for system-ui to behave as an entire list of fonts rather than a single item,
        I never added a cache for the FontPlatformData objects that codepath creates. The non-system-ui codepath already
        has a cache in fontPlatformDataCache() in FontCache.cpp.

        This patch causes a 16.8x performance improvement on the attached benchmark.

        Test: PerformanceTests/Layout/system-ui-rebuild-emoji.html

        * page/cocoa/MemoryReleaseCocoa.mm:
        (WebCore::platformReleaseMemory):
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::invalidateFontCache):
        * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
        (WebCore::FontFamilySpecificationKey::FontFamilySpecificationKey):
        (WebCore::FontFamilySpecificationKey::operator== const):
        (WebCore::FontFamilySpecificationKey::operator!= const):
        (WebCore::FontFamilySpecificationKey::isHashTableDeletedValue const):
        (WebCore::FontFamilySpecificationKey::computeHash const):
        (WebCore::FontFamilySpecificationKeyHash::hash):
        (WebCore::FontFamilySpecificationKeyHash::equal):
        (WebCore::fontMap):
        (WebCore::clearFontFamilySpecificationCoreTextCache):
        (WebCore::FontFamilySpecificationCoreText::fontRanges const):
        * platform/graphics/cocoa/FontFamilySpecificationCoreText.h:
        * platform/graphics/mac/ComplexTextControllerCoreText.mm:
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
        (WebCore::safeCFEqual): Deleted.

2019-04-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: fake value descriptors for promises add a catch handler, preventing "rejectionhandled" events from being fired
        https://bugs.webkit.org/show_bug.cgi?id=196484
        <rdar://problem/49114725>

        Reviewed by Joseph Pecoraro.

        Test: inspector/runtime/promise-native-getter.html

        Mark errors created from getters as being `isNativeGetterTypeError`.

        * bindings/js/JSDOMExceptionHandling.cpp:
        (WebCore::throwGetterTypeError):
        (WebCore::rejectPromiseWithGetterTypeError):
        (WebCore::rejectPromiseWithThisTypeError):

        * bindings/js/JSDOMGlobalObject.cpp:
        (WebCore::makeGetterTypeErrorForBuiltins):

        * bindings/js/JSDOMPromiseDeferred.h:
        * bindings/js/JSDOMPromiseDeferred.cpp:
        (WebCore::createRejectedPromiseWithTypeError):

        * Modules/streams/WritableStream.js:
        (getter.closed):
        (getter.ready):

2019-04-15  Jer Noble  <jer.noble@apple.com>

        Add a DiagnosticLogging method taking an arbitrary dictionary of values.
        https://bugs.webkit.org/show_bug.cgi?id=196773

        Reviewed by Alex Christensen.

        * page/DiagnosticLoggingClient.h:

2019-04-15  Justin Fan  <justin_fan@apple.com>

        Let WTF::convertSafely deduce types from arguments.

        Reviewer's (Darin Adler) follow-up to https://bugs.webkit.org/show_bug.cgi?id=196793.

        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::tryCreate):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::copyBufferToTexture):
        (WebCore::GPUCommandBuffer::copyTextureToBuffer):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetInputStateForPipelineDescriptor):

2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>

        Throw TypeError when custom element constructor returns a wrong element or tries to create itself
        https://bugs.webkit.org/show_bug.cgi?id=196892

        Reviewed by Dean Jackson.

        Throw TypeError instead of InvalidStateError for consistency. This updates WebKit's custom elements
        implementation for https://github.com/whatwg/html/pull/4525.

        Tests: imported/w3c/web-platform-tests/custom-elements/upgrading/Node-cloneNode.html
               imported/w3c/web-platform-tests/custom-elements/upgrading/upgrading-parser-created-element.html

        * bindings/js/JSCustomElementInterface.cpp:
        (WebCore::JSCustomElementInterface::upgradeElement):
        * bindings/js/JSHTMLElementCustom.cpp:
        (WebCore::constructJSHTMLElement):

2019-04-15  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WebCore derived sources should only be referenced inside WebCore
        https://bugs.webkit.org/show_bug.cgi?id=196904

        Reviewed by Konstantin Tokarev.

        Use WebCore_DERIVED_SOURCES_DIR instead of DERIVED_SOURCES_WEBCORE_DIR.

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformWin.cmake:
        * WebCoreMacros.cmake:

2019-04-15  John Wilander  <wilander@apple.com>

        Send delayed Ad Click Attribution conversion requests to the click source
        https://bugs.webkit.org/show_bug.cgi?id=196838
        <rdar://problem/47650157>

        Reviewed by Chris Dumez and Youenn Fablet.

        WebCore::AdClickAttribution now:
        - Sets m_earliestTimeToSend correctly based on WallTime::now().
        - Allows for a test override of the base URL for conversions.
        - Holds state for whether or not a conversion request has been sent.
        - Outputs m_earliestTimeToSend and m_conversion->hasBeenSent in toString().
        - Returns m_earliestTimeToSend as a result of a call to
        convertAndGetEarliestTimeToSend() which used to be called setConversion().

        Test: http/tests/adClickAttribution/send-attribution-conversion-request.html

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::convertAndGetEarliestTimeToSend):
        (WebCore::AdClickAttribution::url const):
        (WebCore::AdClickAttribution::urlForTesting const):
        (WebCore::AdClickAttribution::markConversionAsSent):
        (WebCore::AdClickAttribution::wasConversionSent const):
        (WebCore::AdClickAttribution::toString const):
        (WebCore::AdClickAttribution::setConversion): Deleted.
            Renamed convertAndGetEarliestTimeToSend().
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Conversion::Conversion):
        (WebCore::AdClickAttribution::Conversion::encode const):
        (WebCore::AdClickAttribution::Conversion::decode):
        * platform/Timer.h:
            Now exports nextFireInterval.

2019-04-15  Chris Dumez  <cdumez@apple.com>

        Regression(r237903) Speedometer 2 is 1-2% regressed on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196841
        <rdar://problem/45957016>

        Reviewed by Myles C. Maxfield.

        Speedometer 2 content does not use the text-underline-offset and text-decoration-thickness
        features that were added in r237903 so I looked for behavior changes in the context of
        Speedometer from r237903. I found that RenderStyle::changeAffectsVisualOverflow() started
        returning true a lot more often after r237903. The reason is that r237903 dropped the
        visualOverflowForDecorations() checks in this method and started returning true a lot
        more as a result.

        To restore previous behavior, this patch adds back the visualOverflowForDecorations() checks
        that were dropped in r237903. I have verified that with this patch,
        RenderStyle::changeAffectsVisualOverflow() returns true as many times as it used to before
        r237903.

        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::changeAffectsVisualOverflow const):

2019-04-15  Said Abou-Hallawa  <said@apple.com>

        ASSERT fires when removing a disallowed clone from the shadow tree without reseting its corresponding element
        https://bugs.webkit.org/show_bug.cgi?id=196895

        Reviewed by Darin Adler.

        When cloning elements to the shadow tree of an SVGUseElement, the
        corresponding element links are set from the clones to the originals.
        Later some of the elements may be disallowed to exist in the shadow tree.
        For example the SVGPatternElement is disallowed and has to be removed 
        even after cloning. The problem is the corresponding elements are not
        reset to null. Usually this is not a problem because the removed elements
        will be deleted and the destructor of SVGElement will reset the corresponding
        element links. However in some cases, the cloned element is referenced
        from another SVGElement, for example the target of a SVGTRefElement. In
        this case the clone won't be deleted but it will be linked to the original
        and the event listeners won't be copied from the original. When the
        original is deleted, its event listeners have to be removed. The event
        listeners of the clones also ave to be removed. But because the event
        listeners of the original were not copied when cloning, the assertion in
        SVGElement::removeEventListener() fires.

        Test: svg/custom/use-disallowed-element-clear-corresponding-element.html

        * svg/SVGUseElement.cpp:
        (WebCore::disassociateAndRemoveClones):

2019-04-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOMDebugger: "Attribute Modified" breakpoints pause after the modification occurs for the style attribute
        https://bugs.webkit.org/show_bug.cgi?id=196556
        <rdar://problem/49570681>

        Reviewed by Timothy Hatcher.

        Test: inspector/dom-debugger/attribute-modified-style.html

        * css/PropertySetCSSStyleDeclaration.h:
        * css/PropertySetCSSStyleDeclaration.cpp:
        (WebCore::StyleAttributeMutationScope::~StyleAttributeMutationScope):
        (WebCore::InlineCSSStyleDeclaration::willMutate): Added.

        * dom/StyledElement.cpp:
        (WebCore::StyledElement::styleAttributeChanged):
        (WebCore::StyledElement::inlineStyleChanged):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::willInvalidateStyleAttr): Added.
        (WebCore::InspectorInstrumentation::didInvalidateStyleAttr):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::willInvalidateStyleAttrImpl): Added.
        (WebCore::InspectorInstrumentation::didInvalidateStyleAttrImpl):

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::didInvalidateStyleAttr):

        * inspector/agents/InspectorDOMDebuggerAgent.h:
        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::willInvalidateStyleAttr): Added.
        (WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr): Deleted.

2019-04-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: Elements: event listener change events should only be fired for the selected node and it's ancestors
        https://bugs.webkit.org/show_bug.cgi?id=196887
        <rdar://problem/49870627>

        Reviewed by Timothy Hatcher.

        Test: inspector/dom/event-listener-add-remove.html
              inspector/dom/event-listener-inspected-node.html

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::getEventListenersForNode):
        (WebCore::InspectorDOMAgent::setInspectedNode):
        (WebCore::InspectorDOMAgent::didAddEventListener):
        (WebCore::InspectorDOMAgent::willRemoveEventListener):

2019-04-15  Antoine Quint  <graouts@apple.com>

        Ensure iOS layout traits are used for media controls in modern compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=196812
        <rdar://problem/47460637>

        Unreviewed. Speculative fix for test regressions on open-source bots.

        * Modules/modern-media-controls/media/media-controller.js:
        (MediaController.prototype.get layoutTraits):

2019-04-11  Antoine Quint  <graouts@apple.com>

        Ensure iOS layout traits are used for media controls in modern compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=196812
        <rdar://problem/47460637>

        Reviewed by Dean Jackson.

        Test: media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html

        Instead of looking at the UA string, check whether we support touches which is the correct indicator of whether we should
        be using the iOS layout traits for media controls.

        * Modules/modern-media-controls/media/media-controller.js:
        (MediaController.prototype.get layoutTraits):

2019-04-14  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. Ignore prefetches for content extension checks.

        Tests: http/tests/cache/link-prefetch-main-resource-iframe.html
               http/tests/cache/link-prefetch-main-resource.html

        * loader/LinkLoader.cpp:
        (WebCore::LinkLoader::prefetchIfNeeded):
        * loader/ResourceLoadInfo.cpp:
        (WebCore::toResourceType):
        * loader/ResourceLoadInfo.h:
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::willSendRequestInternal):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):

2019-04-14  Dean Jackson  <dino@apple.com>

        Extract UTI mapping and allow for additions
        https://bugs.webkit.org/show_bug.cgi?id=196822
        <rdar://problem/49822339>

        Reviewed by Darin Adler

        Post landing feedback on minimizing String constructors.

        * platform/network/mac/UTIUtilities.mm:
        (WebCore::MIMETypeFromUTITree):
        (WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):

2019-04-14  Don Olmstead  <don.olmstead@sony.com>

        [CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=196742

        Reviewed by Konstantin Tokarev.

        Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

        * CMakeLists.txt:

2019-04-12  Antoine Quint  <graouts@apple.com>

        Provide a quirk to disable Pointer Events
        https://bugs.webkit.org/show_bug.cgi?id=196877
        <rdar://problem/49863470>

        Reviewed by Dean Jackson.

        Add a quirk to disable Pointer Events. We also opt a website that has compatibility issues with Pointer Events into this new quirk.

        * dom/PointerEvent.idl:
        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDisablePointerEventsQuirk const):
        * page/Quirks.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::resolveElement):

2019-04-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable modern compatibility mode by default in WKWebView on some devices
        https://bugs.webkit.org/show_bug.cgi?id=196883
        <rdar://problem/49864527>

        Reviewed by Tim Horton.

        Add a new helper function to determine whether an app is pre-installed on iOS, for the purposes of ensuring
        compatibility with existing Apple apps that are not affected by linked-on-or-after. This involves all apps with
        a bundle ID that begins with "com.apple.".

        * platform/RuntimeApplicationChecks.h:
        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        (WebCore::setApplicationBundleIdentifier):
        (WebCore::applicationBundleStartsWith):
        (WebCore::IOSApplication::isAppleApplication):

2019-04-12  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Prevent narrowing conversions during Metal function calls on 32-bit platforms
        https://bugs.webkit.org/show_bug.cgi?id=196793

        Reviewed by Darin Adler.

        On 32-bit platforms, NSUInteger is 32-bit, which limits certain Web GPU parameters. 
        Ensure that valid parameters are properly converted to NSUInteger for Metal calls, regardless of platform.

        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::byteLength const):
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::tryGetResourceAsBufferBinding):
        (WebCore::setBufferOnEncoder):
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::validateBufferUsage):
        (WebCore::GPUBuffer::tryCreate):
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::setSubData):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::copyBufferToBuffer):
        (WebCore::GPUCommandBuffer::copyBufferToTexture):
        (WebCore::GPUCommandBuffer::copyTextureToBuffer):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::drawIndexed):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetInputStateForPipelineDescriptor):

2019-04-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for non-unified build.

        * dom/ScriptedAnimationController.h:
        Add missing include from r244182.

2019-04-11  Ryosuke Niwa  <rniwa@webkit.org>

        WebThread should run at a higher priority than user initiated
        https://bugs.webkit.org/show_bug.cgi?id=196849
        <rdar://problem/46851062>

        Reviewed by Geoffrey Garen.

        Use QOS_CLASS_USER_INTERACTIVE on WebThread with -10 relative priority so that WebThread
        won't wait for other threads with priority 30-37 but does not content with the main thread.

        Also removed the call to pthread_attr_setschedparam which disables QoS.

        This improves the blocked time in StartWebThread from 2~3ms to 250μs while cold launching
        iBooks to an opened book.

        * platform/ios/wak/WebCoreThread.mm:
        (StartWebThread): Replaced 200 * 4096 by 800 * KB for a better readability.

2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>

        Add CSS Shadow Parts as a feature under consideration
        https://bugs.webkit.org/show_bug.cgi?id=196835

        Reviewed by Antti Koivisto.

        This feature is under consideration.

        * features.json:

2019-04-12  Ross Kirsling  <ross.kirsling@sony.com>

        WebKit should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
        https://bugs.webkit.org/show_bug.cgi?id=196845

        Reviewed by Ryosuke Niwa.

        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::CanvasRenderingContext2DBase::FontProxy::initialize):
        (WebCore::CanvasRenderingContext2DBase::FontProxy::fontMetrics const):
        (WebCore::CanvasRenderingContext2DBase::FontProxy::fontDescription const):
        (WebCore::CanvasRenderingContext2DBase::FontProxy::width const):
        (WebCore::CanvasRenderingContext2DBase::FontProxy::drawBidiText const):
        (WebCore::CanvasRenderingContext2DBase::beginCompositeLayer):
        (WebCore::CanvasRenderingContext2DBase::endCompositeLayer):
        Remove inline specifier to address linking errors (regardless of CMake platform).
        Doing this in a .cpp file interferes with symbol creation.

        * Modules/mediastream/MediaStreamTrack.cpp:
        * Modules/webvr/VREyeParameters.cpp:
        * Modules/webvr/VRFrameData.cpp:
        * Modules/webvr/VRPose.cpp:
        * accessibility/AccessibilityList.cpp:
        * accessibility/isolatedtree/AXIsolatedTree.cpp:
        * accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
        * bindings/js/JSDOMConvertWebGL.cpp:
        * bindings/js/JSHistoryCustom.cpp:
        * bindings/js/JSIDBCursorWithValueCustom.cpp:
        * bindings/js/JSPerformanceObserverCustom.cpp:
        * bindings/js/WindowProxy.cpp:
        * platform/ColorData.gperf:
        * platform/mediastream/RealtimeMediaSourceSettings.cpp:
        * platform/network/DNSResolveQueue.cpp:
        * workers/service/ServiceWorkerClientQueryOptions.h:
        * workers/service/ServiceWorkerContainer.cpp:
        Add missing includes to address compiler errors on GTK.

2019-04-12  Zalan Bujtas  <zalan@apple.com>

        REGRESSION (r244098): [ Mac WK1 ] Layout Test fast/dynamic/paused-event-dispatch.html is Timing out
        https://bugs.webkit.org/show_bug.cgi?id=196789
        <rdar://problem/49855255>

        Reviewed by Tim Horton.

        Disable auto-sizing mode at the start of each test.

        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):

2019-04-12  Eric Carlson  <eric.carlson@apple.com>

        Update AudioSession route sharing policy
        https://bugs.webkit.org/show_bug.cgi?id=196776
        <rdar://problem/46501611>

        Reviewed by Jer Noble.

        No new tests, updated an API test.

        * platform/audio/AudioSession.cpp:
        (WebCore::convertEnumerationToString):
        * platform/audio/AudioSession.h:
        (WTF::LogArgument<WebCore::RouteSharingPolicy>::toString):
        (WTF::LogArgument<WebCore::AudioSession::CategoryType>::toString):
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::updateSessionState):
        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::routeSharingPolicy const):
        * platform/audio/mac/AudioSessionMac.cpp:
        (WebCore::AudioSession::setCategory):

2019-04-12  Antoine Quint  <graouts@apple.com>

        Opt some websites into the simulated mouse events dispatch quirk when in modern compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=196830
        <rdar://problem/49124313>

        Reviewed by Wenson Hsieh.

        We add a new policy to determine whether simulated mouse events dispatch are allowed and use it to determine whether the
        simulated mouse events dispatch quirk can be used for a given website. We then check the domain name for the current page's
        document to see if it matches some known websites that require this quirk.

        We needed to add some calls into Quirks::shouldDispatchSimulateMouseEvents() where we used to only consult the RuntimeEnabledFeature
        flag to ensure we correctly created touch regions for simulated mouse events.

        * dom/EventNames.h:
        (WebCore::EventNames::isTouchRelatedEventType const):
        * dom/Node.cpp:
        (WebCore::Node::moveNodeToNewDocument):
        (WebCore::tryAddEventListener):
        (WebCore::tryRemoveEventListener):
        (WebCore::Node::defaultEventHandler):
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::simulatedMouseEventsDispatchPolicy const):
        (WebCore::DocumentLoader::setSimulatedMouseEventsDispatchPolicy):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        (WebCore::DOMWindow::removeEventListener):
        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
        (WebCore::Quirks::shouldDispatchSimulateMouseEvents const): Deleted.
        * page/Quirks.h:

2019-04-11  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Wrong scrolling behavior for nested absolute position elements inside overflow scroll
        https://bugs.webkit.org/show_bug.cgi?id=196146

        Reviewed by Antti Koivisto.
        
        computeCoordinatedPositioningForLayer() failed to handle nested positions elements
        inside overflow scroll, because it only walked up to the first containing block of
        a nested position:absolute. We need to walk all the way up the ancestor layer chain,
        looking at containing block, scroller and composited ancestor relationships.

        Make this code easier to understand by writing it in terms of "is foo scrolled by bar", rather than
        trying to collapse all the logic into a single ancestor walk, which was really hard. This is a few
        more ancestor traversals, but we now only run this code if there's composited scrolling
        in the ancestor chain.

        Tests: scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html
               scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow.html
               scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html
               scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::enclosingCompositedScrollingLayer):
        (WebCore::isScrolledByOverflowScrollLayer):
        (WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor):
        (WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary):
        (WebCore::collectStationaryLayerRelatedOverflowNodes):
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
        (WebCore::collectRelatedCoordinatedScrollingNodes):
        (WebCore::layerParentedAcrossCoordinatedScrollingBoundary): Deleted.

2019-04-12  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-flex][css-grid] Fix synthesized baseline
        https://bugs.webkit.org/show_bug.cgi?id=196312

        Reviewed by Javier Fernandez.

        When a flex or grid container has no baseline,
        its baseline should be synthesized from the border edges.
        The same happens for flex and grid items.
        
        Right now we were using the content box in some cases
        and even using the margin box in a particular scenario.
        The patch fixes this.
        
        At the same time this is also fixing the baseline for
        inline flex/grid containers to make it interoperable with Firefox.
        Inline blocks have a special behavior per legacy reasons,
        which applies to inline flex/grid containers when they have no items;
        otherwise the items should be used to compute its baseline.
        See more at: https://github.com/w3c/csswg-drafts/issues/3416

        Note that we need to keep current behavior for buttons,
        as the flexbox spec doesn't apply to them.

        Tests: css3/flexbox/flexbox-baseline-margins.html
               fast/css-grid-layout/grid-baseline-margins-1.html
               fast/css-grid-layout/grid-baseline-margins-2.html
               imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-flexbox-001.html
               imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-grid-001.html
               imported/w3c/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-inline-block-001.html

        * rendering/RenderButton.cpp:
        (WebCore::synthesizedBaselineFromContentBox):
        (WebCore::RenderButton::baselinePosition const):
        * rendering/RenderButton.h:
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::synthesizedBaselineFromBorderBox):
        (WebCore::RenderFlexibleBox::baselinePosition const):
        (WebCore::RenderFlexibleBox::firstLineBaseline const):
        (WebCore::RenderFlexibleBox::inlineBlockBaseline const):
        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::baselinePosition const):
        (WebCore::RenderGrid::inlineBlockBaseline const):

2019-04-11  Simon Fraser  <simon.fraser@apple.com>

        Avoid doing positioned scrolling tree node work for layers not inside overflow:scroll
        https://bugs.webkit.org/show_bug.cgi?id=196848

        Reviewed by Zalan Bujtas.

        Maintain a bit on RenderLayer which says if a layer has a composited scrolling ancestor
        in the layer tree. We only need to do work related to making positioned scrolling tree nodes
        for layers which are layer tree descendants of overflow:scroll.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::updateLayerPositions):
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
        (WebCore::RenderLayerCompositor::isViewportConstrainedFixedOrStickyLayer const):
        (WebCore::RenderLayerCompositor::fixedLayerIntersectsViewport const):
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

2019-04-11  Zalan Bujtas  <zalan@apple.com>

        Try to fix Windows build.

        * page/PrintContext.cpp:
        (WebCore::PrintContext::computedPageMargin):

2019-04-11  Megan Gardner  <megan_gardner@apple.com>

        Update 'Save Image' to more clear instructions
        https://bugs.webkit.org/show_bug.cgi?id=196833
        <rdar://problem/47446845>

        Reviewed by Wenson Hsieh.

        Not testable, UI change only.

        * en.lproj/Localizable.strings:

2019-04-11  Zalan Bujtas  <zalan@apple.com>

        Add @page margin support
        https://bugs.webkit.org/show_bug.cgi?id=196680
        <rdar://problem/45217707>

        Reviewed by Tim Horton.

        This patch adds support for @page margin. This feature is currently behind a runtime flag and is off by default.
        We resolve the @page margin values in the WebProcess (currently no pseudo class is supported) and transfer them to the UIProcess through computedPagesCallback.
        UIProcess is responsible for applying these new values on the printer. We also re-compute the available width/height for the current printing context
        in the WebProcess if needed (see PrintInfo for current printer margins).

        Tests: printing/page-with-10mm-left-margin.html
               printing/page-with-zero-margin.html

        * page/PrintContext.cpp:
        (WebCore::PrintContext::computedPageMargin):
        (WebCore::PrintContext::computedPageSize):
        * page/PrintContext.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::pageAtRuleSupportEnabled const):
        (WebCore::RuntimeEnabledFeatures::setPageAtRuleSupportEnabled):

2019-04-11  Dean Jackson  <dino@apple.com>

        Extract UTI mapping and allow for additions
        https://bugs.webkit.org/show_bug.cgi?id=196822
        <rdar://problem/49822339>

        Reviewed by Tim Horton.

        Add an ADDITIONAL_SYSTEM_PREVIEW_TYPES macro to the list
        of accepted MIME types. And add a new helper to map
        MIME types to UTI types when the system was unable to
        find an existing type.

        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::systemPreviewMIMETypes):
        * platform/network/mac/UTIUtilities.mm:
        (WebCore::UTIFromUnknownMIMEType):
        (WebCore::UTIFromMIMETypeCachePolicy::createValueForKey):

2019-04-09  Ryosuke Niwa  <rniwa@webkit.org>

        [iOS] Moving backwards by word granularity does not work if the previous line was inside another block element
        https://bugs.webkit.org/show_bug.cgi?id=196670

        Reviewed by Wenson Hsieh.

        The bug was ultimately caused by two reasons:
         1. On iOS, previousWordPositionBoundary would identify a blank line as a word boundary.
         2. SimplifiedBackwardsTextIterator generates a new line character (\n) between two block elements.

        When moving backwards by word granularity, therefore, previousBoundary would encounter a new line created by (2)
        and then previousWordPositionBoundary would identify it as a word boundary.

        Fixed the bug (2) by adding the same check as TextIterator::exitNode has to avoid generating an extra new line
        character following an exiting new line character. Also added internals.rangeAsTextUsingBackwardsTextIterator
        to make SimplifiedBackwardsTextIterator directly testable in layout tests.

        This fix unveiled an unrelated bug when moving backwards with sentence granularity at the beginning of a line.
        In this case, WebKit was previously feeding ICU with the previous line's content followed by two new lines,
        which constituted a new sentence. However after the fix, ICU no longer detects a new sentence after the end
        of the prevous line. This patch, therefore, introduces a new optional argument to previousBoundary which forces
        the succeeding paragraph's content (i.e. the content of the line from which we're moving backwards with sentence
        granularity) to be fed to ICU. This fixes the bug that we were previously not being able to move backwards
        with sentence granularity at the beginning of a line as indicated by the new tests.

        Tests: editing/selection/extend-selection-backward-at-beginning-of-line-by-sentence-granularity.html
               editing/selection/extend-selection-backward-at-beginning-of-line-by-word-granularity.html
               editing/selection/move-selection-backward-at-beginning-of-line-by-sentence-granularity.html
               editing/selection/move-selection-backward-at-beginning-of-line-by-word-granularity.html
               editing/text-iterator/backwards-text-iterator-basic.html

        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::previousBoundary): Fixed the bug that moving backwards with sentence granularity at
        the beginning of a line does not work like we did in VisibleUnits. See the description below. It's tested by
        an existing layout test accessibility/mac/text-marker-sentence-nav.html, which would fail without this fix.
        (WebCore::AXObjectCache::startCharacterOffsetOfSentence):
        * accessibility/AXObjectCache.h:
        (WebCore::CharacterOffset::isEqual const):
        * editing/TextIterator.cpp:
        (WebCore::SimplifiedBackwardsTextIterator::handleNonTextNode): Fixed the bug that we were generating two line
        lines between block elements. This fixes the bug that moving backwards with word granularity at the beginning
        of a line fails on iOS.
        (WebCore::plainTextUsingBackwardsTextIteratorForTesting): Added.
        * editing/TextIterator.h:
        * editing/VisibleUnits.cpp:
        (WebCore::previousBoundary): Added the code to extract the succeeding paragraph's content as context for ICU.
        This fixes the bug that moving backwards with sentence granularity at the beginning of a line fails.
        Limit the length of backwards iteration at the current position to avoid traversing backwards beyond
        the current position, and fixed a bug that an early return for the text node was not taking the suffix length
        into account when deciding whether next position resides in the starting container node or not.
        (WebCore::startSentenceBoundary):
        (WebCore::startOfSentence):
        * testing/Internals.cpp:
        (WebCore::Internals::rangeAsTextUsingBackwardsTextIterator): Added.
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Allow the MediaSource API to be enabled via website policy
        https://bugs.webkit.org/show_bug.cgi?id=196429
        <rdar://problem/48774333>

        Reviewed by Tim Horton.

        Add support in DocumentLoader for adjusting page settings using its per-site policies. See WebKit ChangeLog for
        more detail (in particular, the implementation of applyToDocumentLoader).

        Test: fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::applyPoliciesToSettings const):
        (WebCore::DocumentLoader::attachToFrame):
        * loader/DocumentLoader.h:

        Add an enum class for MediaSource policies; while we're at it, make all of these enum values 8 bits wide.

        (WebCore::DocumentLoader::mediaSourcePolicy const):
        (WebCore::DocumentLoader::setMediaSourcePolicy):

2019-04-11  Youenn Fablet  <youenn@apple.com>

        Support RTCDataChannel blob binaryType
        https://bugs.webkit.org/show_bug.cgi?id=196821

        Reviewed by Eric Carlson.

        Add support for receiving blobs.
        Default value is still left to 'arraybuffer' which is not spec compliant.
        Covered by rebased test.

        * Modules/mediastream/RTCDataChannel.cpp:
        (WebCore::RTCDataChannel::setBinaryType):
        (WebCore::RTCDataChannel::didReceiveRawData):

2019-04-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timelines: can't reliably stop/start a recording
        https://bugs.webkit.org/show_bug.cgi?id=196778
        <rdar://problem/47606798>

        Reviewed by Timothy Hatcher.

        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::startProgrammaticCapture):
        (WebCore::InspectorTimelineAgent::stopProgrammaticCapture):
        It is possible to determine when programmatic capturing starts/stops in the frontend based
        on the state when the backend causes the state to change, such as if the state is "inactive"
        when the frontend is told that the backend has started capturing.

        * inspector/agents/InspectorCPUProfilerAgent.cpp:
        (WebCore::InspectorCPUProfilerAgent::stopTracking):
        * inspector/agents/InspectorMemoryAgent.cpp:
        (WebCore::InspectorMemoryAgent::stopTracking):
        Send an end timestamp to match other instruments.

2019-04-11  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r244158.

        Casued 8 inspector/timeline/ test failures.

        Reverted changeset:

        "Web Inspector: Timelines: can't reliably stop/start a
        recording"
        https://bugs.webkit.org/show_bug.cgi?id=196778
        https://trac.webkit.org/changeset/244158

2019-04-11  Pablo Saavedra  <psaavedra@igalia.com>

        [WPE] Build error with ENABLE_VIDEO=OFF after r244078
        https://bugs.webkit.org/show_bug.cgi?id=196811

        createGenericCue() is only defined when VIDEO_TRACK is enabled.

        Reviewed by Eric Carlson.

        * testing/Internals.cpp:
        (WebCore::Internals::createGenericCue):
        * testing/Internals.h:

2019-04-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Layout test accessibility/aria-hidden-false-works-in-subtrees.html fails after r184890
        https://bugs.webkit.org/show_bug.cgi?id=146718
        <rdar://problem/21722487>

        Reviewed by Joanmarie Diggs.

        Allow to get the text under element for nodes hidden in DOM but explicitly exposed to accessibility with
        aria-hidden="false".

        Fixes: accessibility/aria-hidden-false-works-in-subtrees.html

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::textUnderElement const):
        * accessibility/atk/WebKitAccessible.cpp:
        (roleIsTextType): Also consider ApplicationGroup role as text elements, so that <div>text</div> is equivalent to
        <div role="roup">test</div>.

2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        This change fixes these issues with animation timing:

        1. Calling the requestAnimationFrame callbacks would have happened when
           the DisplayLink fires. This may have happened even if the frame is
           missed and no display is committed.

        2. Style changes and layout triggered by script could trigger painting
           at more than 60fps. CoreAnimation commits could happen at more than
           60fps, although WindowServer will throttle those, and only some will
           be shown on the screen.

        This change introduces a new paint scheduling model where painting is
        driven by a "RenderingUpdateScheduler", which only triggers paints once
        per 16.7ms frame.

        Code that previously scheduled a compositing layer flush now schedules a
        "RenderingUpdate", and that update is driven by a DisplayRefreshMonitor
        callback. When the render happens, we service requestAnimationFrame callbacks,
        Web Animations, intersection observations and resize observations per the
        "Update the rendering" step of the HTML Event Loop specification:
        <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>.

        In the future, more rendering steps will be added to this code.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
        Fix layout tests by adding null check.

        * animation/DocumentAnimationScheduler.cpp: Removed.
        * animation/DocumentAnimationScheduler.h: Removed.
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        (WebCore::DocumentTimeline::updateThrottlingState):
        (WebCore::DocumentTimeline::suspendAnimations):
        (WebCore::DocumentTimeline::resumeAnimations):
        (WebCore::DocumentTimeline::liveCurrentTime const):
        (WebCore::DocumentTimeline::currentTime):
        (WebCore::DocumentTimeline::cacheCurrentTime):
        (WebCore::DocumentTimeline::animationTimingDidChange):
        (WebCore::DocumentTimeline::scheduleAnimationResolution):
        (WebCore::DocumentTimeline::unscheduleAnimationResolution):
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
        (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents):
        (WebCore::DocumentTimeline::scheduleNextTick):
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement):
        Simplify this function by handling the case of no-animations separately.

        (WebCore::DocumentTimeline::resolveAnimationsForElement):
        Simplify the loop and delete hasPendingAcceleratedAnimations because it
        is initialized to true and is not changed inside the loop.

        (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Deleted.
        (WebCore::DocumentTimeline::animationResolutionTimerFired): Deleted.
        * animation/DocumentTimeline.h:
        * dom/Document.cpp:
        (WebCore::Document::resolveStyle):
        There is no need to force update in resolveStyle(). notifyFlushRequired()
        will be called eventually which will scheduleRenderingUpdate().

        (WebCore::Document::prepareForDestruction):
        (WebCore::Document::updateAnimationsAndSendEvents):
        (WebCore::Document::serviceRequestAnimationFrameCallbacks):
        (WebCore::Document::windowScreenDidChange):
        (WebCore::Document::scheduleRenderingUpdate):
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::addResizeObserver):
        (WebCore::Document::updateResizeObservations):
        (WebCore::Document::scheduleForcedIntersectionObservationUpdate): Deleted.
        (WebCore::Document::scheduleResizeObservations): Deleted.
        (WebCore::Document::animationScheduler): Deleted.
        No need to schedule web-animations, intersection observations and resize
        observations updates separately. All of them will be updated through the
        "Update the rendering" step, i.e. Page::updateRendering().        

        * dom/Document.h:
        (WebCore::Document::numberOfIntersectionObservers const):
        * dom/ScriptedAnimationController.cpp:
        (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
        (WebCore::ScriptedAnimationController::scheduleAnimation):
        (WebCore::ScriptedAnimationController::animationTimerFired):
        (WebCore::ScriptedAnimationController::serviceScriptedAnimations): Deleted.
        (WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire): Deleted.
        * dom/ScriptedAnimationController.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::didLayout):
        (WebCore::FrameView::viewportContentsChanged):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::layoutTimerFired):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):
        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::layoutIfNeeded):
        (WebCore::Page::updateRendering):
        (WebCore::Page::renderingUpdateScheduler):
        (WebCore::Page::willDisplayPage): Deleted.
        (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate): Deleted.
        (WebCore::Page::updateIntersectionObservations): Deleted.
        (WebCore::Page::scheduleForcedIntersectionObservationUpdate): Deleted.
        (WebCore::Page::hasResizeObservers const): Deleted.
        (WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Deleted.
        (WebCore::Page::checkResizeObservations): Deleted.
        (WebCore::Page::scheduleResizeObservations): Deleted.
        (WebCore::Page::notifyResizeObservers): Deleted.
        * page/Page.h:
        (WebCore::Page::setNeedsCheckResizeObservations): Deleted.
        (WebCore::Page::needsCheckResizeObservations const): Deleted.
        The IntersectionObserver and the ResizeObserver do not need to schedule
        their own timers. The RenderingUpdateScheduler will schedule the "Update
        the rendering" step in which these obverses will be served.

        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::didChangeViewExposedRect):
        (WebCore::PageOverlayController::notifyFlushRequired):
        Force committing the layers to be 60 fps at maximum.

        * page/RenderingUpdateScheduler.cpp: Added.
        (WebCore::RenderingUpdateScheduler::RenderingUpdateScheduler):
        (WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
        (WebCore::RenderingUpdateScheduler::isScheduled const):
        (WebCore::RenderingUpdateScheduler::startTimer):
        (WebCore::RenderingUpdateScheduler::clearScheduled):
        (WebCore::RenderingUpdateScheduler::createDisplayRefreshMonitor const):
        (WebCore::RenderingUpdateScheduler::windowScreenDidChange):
        (WebCore::RenderingUpdateScheduler::displayRefreshFired):
        (WebCore::RenderingUpdateScheduler::scheduleCompositingLayerFlush):
        * page/RenderingUpdateScheduler.h: Added.
        (WebCore::RenderingUpdateScheduler::create):
        * page/ResizeObserver.cpp:
        (WebCore::ResizeObserver::observe):
        (WebCore::ResizeObserver::scheduleObservations): Deleted.
        * page/ResizeObserver.h:
        (WebCore::ResizeObserver::hasActiveObservations const):
        * page/ios/ContentChangeObserver.h:
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):
        * page/scrolling/ScrollingStateTree.cpp:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::scheduleLayerFlushNow):
        (WebCore::RenderLayerCompositor::layerTreeAsText):

2019-04-10  Ryosuke Niwa  <rniwa@webkit.org>

        Nullptr crash in CompositeEditCommand::moveParagraphs when root editable element goes away
        https://bugs.webkit.org/show_bug.cgi?id=193027

        Reviewed by Wenson Hsieh.

        Added an early exit when the root editable element (editing host in HTML5 spec terminology) is null
        during CompositeEditCommand::moveParagraphs. This could happen when the website does something crazy
        like removing contenteditable content attribute during DOM mutations or when the destination becomes
        disconnected (orphaned) from the document due to bugs elsewhere in the codebase.

        Test: editing/deleting/merge-paragraphs-null-root-editable-element-crash.html

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraphs): Added an early exit.

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: save sheet should be anchored underneath the tab bar when detached
        https://bugs.webkit.org/show_bug.cgi?id=196722
        <rdar://problem/49613280>

        Reviewed by Timothy Hatcher.

        No web observable change.

        * inspector/InspectorFrontendClient.h:
        (WebCore::InspectorFrontendClient::changeSheetRect): Added.

        * inspector/InspectorFrontendClientLocal.h:
        * inspector/InspectorFrontendClientLocal.cpp:
        (WebCore::InspectorFrontendClientLocal::changeSheetRect): Added.

        * inspector/InspectorFrontendHost.idl:
        * inspector/InspectorFrontendHost.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::setSheetRect): Added.

        * testing/Internals.cpp:
        (WebCore::InspectorStubFrontend::setSheetRect): Added.

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Inspector: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195971
        <rdar://problem/49039645>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/InspectorController.h:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):
        (WebCore::InspectorController::evaluateForTestInFrontend):
        (WebCore::InspectorController::ensureInspectorAgent):

2019-04-10  Megan Gardner  <megan_gardner@apple.com>

        Remove unneeded extern C
        https://bugs.webkit.org/show_bug.cgi?id=196786

        Reviewed by Tim Horton.

        No tests needed, just needs to compile.

        Removing staging hack for Reveal framework.

        * editing/cocoa/DictionaryLookup.mm:

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION: lazy agents used outside of frontend/instrumentation can be accessed before being created
        https://bugs.webkit.org/show_bug.cgi?id=196725
        <rdar://problem/49669810>

        Reviewed by Timothy Hatcher.

        Move the logic for creating the `InspectorPageAgent` and `InspectorDOMAgent` into separate
        functions so that callers into `InspectorController` can be guaranteed to have a valid
        instance of the agent.

        This doesn't interfere with the `Page.enable` command, as it doesn't clear any saved state.
        There is no `DOM.enable` command, so there's no issue there either.

        * inspector/InspectorController.h:
        (WebCore::InspectorController::pageAgent): Deleted.
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::createLazyAgents):
        (WebCore::InspectorController::inspect):
        (WebCore::InspectorController::hideHighlight):
        (WebCore::InspectorController::ensureDOMAgent): Added.
        (WebCore::InspectorController::ensurePageAgent): Added.

        * inspector/InspectorFrontendClientLocal.cpp:
        (WebCore::InspectorFrontendClientLocal::showMainResourceForFrame):

2019-04-10  Alex Christensen  <achristensen@webkit.org>

        Add SPI WKNavigationResponse._downloadAttribute
        https://bugs.webkit.org/show_bug.cgi?id=196755
        <rdar://49587365>

        Reviewed by Brady Eidson.

        Covered by an API test that validates the attribute is correctly sent through the FrameLoader to the API.
        When a user clicks on a link with a download attribute, the download attribute should be used as the suggested filename sometimes.
        The application needs this information after it has received the response in order to make fully informed decisions about downloads.
        In order to get this attribute to the decidePolicyForNavigationResponse, we need to store the attribute on the DocumentLoader
        from the FrameLoadRequest then send it from the DocumentLoader when the response is received.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setDownloadAttribute):
        (WebCore::DocumentLoader::downloadAttribute const):
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkContentPolicy):
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::loadWithNavigationAction):
        (WebCore::FrameLoader::loadPostRequest):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::loadWithNavigationAction):
        * loader/FrameLoaderClient.h:

2019-04-10  Youenn Fablet  <youenn@apple.com>

        SWClientConnection should not double hop to fire some events
        https://bugs.webkit.org/show_bug.cgi?id=196735

        Reviewed by Alex Christensen.

        Some events, like postMessage in service workers is hopping from main thread to service worker thread to dispatch events.
        Some other events, like service worker state update, are hopping from main thread to service worker thread, then posting a task to dispatch events.
        This may create ordering problems.

        To fix the issue, we now hop to the service worker thread and dispatch the events.
        In addition, for documents, we post a task and do the whole service worker processing in it.
        This ensures that some tests, like whether there is a service worker container,
        or creation of a service worker are done consistently.

        Covered by unflaked test.

        * workers/service/SWClientConnection.cpp:
        (WebCore::SWClientConnection::updateRegistrationState):
        (WebCore::SWClientConnection::updateWorkerState):
        (WebCore::SWClientConnection::fireUpdateFoundEvent):
        (WebCore::SWClientConnection::notifyClientsOfControllerChange):
        * workers/service/ServiceWorker.cpp:
        (WebCore::ServiceWorker::updateState):
        * workers/service/ServiceWorker.h:
        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::updateRegistrationState):
        (WebCore::ServiceWorkerContainer::fireUpdateFoundEvent):
        (WebCore::ServiceWorkerContainer::fireControllerChangeEvent):
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerJob.cpp:
        (WebCore::ServiceWorkerJob::notifyFinished):
        Notify of the script URL in the error message.
        This will help diagnose flakiness issues.
        * workers/service/ServiceWorkerRegistration.cpp:
        (WebCore::ServiceWorkerRegistration::fireUpdateFoundEvent):
        * workers/service/ServiceWorkerRegistration.h:

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timelines: can't reliably stop/start a recording
        https://bugs.webkit.org/show_bug.cgi?id=196778
        <rdar://problem/47606798>

        Reviewed by Timothy Hatcher.

        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::startProgrammaticCapture):
        (WebCore::InspectorTimelineAgent::stopProgrammaticCapture):
        It is possible to determine when programmatic capturing starts/stops in the frontend based
        on the state when the backend causes the state to change, such as if the state is "inactive"
        when the frontend is told that the backend has started capturing.

        * inspector/agents/InspectorCPUProfilerAgent.cpp:
        (WebCore::InspectorCPUProfilerAgent::stopTracking):
        * inspector/agents/InspectorMemoryAgent.cpp:
        (WebCore::InspectorMemoryAgent::stopTracking):
        Send an end timestamp to match other instruments.

2019-04-10  Tim Horton  <timothy_horton@apple.com>

        Add modern API for overriding the page's specified viewport configuration
        https://bugs.webkit.org/show_bug.cgi?id=167734
        <rdar://problem/30331795>

        Reviewed by Simon Fraser.

        New API test: WebKit.OverrideViewportArguments

        * dom/Document.cpp:
        (WebCore::Document::updateViewportArguments):
        * dom/Document.h:
        (WebCore::Document::viewportArguments const):
        Make the viewportArguments() getter respect the overridden arguments.

        * dom/ViewportArguments.cpp:
        (WebCore::numericPrefix):
        (WebCore::findSizeValue):
        (WebCore::findScaleValue):
        (WebCore::findBooleanValue):
        (WebCore::parseViewportFitValue):
        (WebCore::viewportErrorMessage):
        (WebCore::reportViewportWarning):
        (WebCore::setViewportFeature):
        * dom/ViewportArguments.h:
        Make it possible to parse ViewportArguments without a Document, so
        that it can be used in the UI process. We only used the Document for
        two things: error reporting, and getting the state of one setting.
        Refactor error handling to use a passed-arund function, and add a
        variant of setViewportFeature() that doesn't take a Document.

2019-04-10  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Indexed drawing and GPUCommandEncoder crash prevention
        https://bugs.webkit.org/show_bug.cgi?id=196758

        Reviewed by Dean Jackson.

        Test: webgpu/draw-indexed-triangles.html

        Implement GPURenderPassEncoder::setIndexBuffer and GPURenderPassEncoder::drawIndexed to enable indexed drawing.
        Disable GPUCommandEncoders with active pass encoders from being submitted or encoding blits. 

        Prevent active GPUCommandEncoders from being submitted or encoding blit commands:
        * Modules/webgpu/WebGPUCommandEncoder.cpp:
        (WebCore::WebGPUCommandEncoder::finish):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::copyBufferToBuffer):
        (WebCore::GPUCommandBuffer::copyBufferToTexture):
        (WebCore::GPUCommandBuffer::copyTextureToBuffer):
        (WebCore::GPUCommandBuffer::copyTextureToTexture):

        Implement GPURenderPassEncoder::setIndexBuffer and GPURenderPassEncoder::drawIndexed:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setIndexBuffer):
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers): Remove unnecessary move operations.
        (WebCore::WebGPURenderPassEncoder::drawIndexed): Added.
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::isIndex const):
        * platform/graphics/gpu/GPUInputStateDescriptor.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h: Cache the index buffer, as Metal does not set the index buffer separate from the draw call.
        * platform/graphics/gpu/GPURenderPipeline.h:
        (WebCore::GPURenderPipeline::indexFormat const):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setIndexBuffer):
        (WebCore::GPURenderPassEncoder::setVertexBuffers):
        (WebCore::mtlPrimitiveTypeForGPUPrimitiveTopology):
        (WebCore::GPURenderPassEncoder::draw):
        (WebCore::mtlIndexTypeForGPUIndexFormat): Added.
        (WebCore::GPURenderPassEncoder::drawIndexed): Added.
        (WebCore::primitiveTypeForGPUPrimitiveTopology): Deleted.
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::tryCreate):
        (WebCore::GPURenderPipeline::GPURenderPipeline):

2019-04-09  Ryosuke Niwa  <rniwa@webkit.org>

        OfflineAudioDestinationNode::startRendering leaks OfflineAudioDestinationNode if offlineRender exists early
        https://bugs.webkit.org/show_bug.cgi?id=196759

        Reviewed by Eric Carlson.

        OfflineAudioDestinationNode::startRendering unconditionally ref's itself before invoking offlineRender() in a new thread.
        But offlineRender can early exit without ever calling deref() in the main thread, leading to the leak of
        OfflineAudioDestinationNode. Fixed the leak by always calling deref in the main thread after calling offlineRender().

        Also removed the debug assertion in offlineRender which always hits when we run the relevant test.

        Test: imported/w3c/web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html

        * Modules/webaudio/OfflineAudioDestinationNode.cpp:
        (WebCore::OfflineAudioDestinationNode::startRendering):
        (WebCore::OfflineAudioDestinationNode::offlineRender):
        (WebCore::OfflineAudioDestinationNode::notifyComplete): Merged into startRendering.
        * Modules/webaudio/OfflineAudioDestinationNode.h:

2019-04-10  Megan Gardner  <megan_gardner@apple.com>

        Fix text autoscrolling when typing in modern webkit
        https://bugs.webkit.org/show_bug.cgi?id=196718
        <rdar://problem/49225507>

        Reviewed by Tim Horton.

        Tests: fast/events/autoscroll-when-input-is-offscreen.html
               fast/events/autoscroll-with-software-keyboard.html

        We have been relying on UIKit to scroll editable text, but
        since we cannot give them enough information for them to always
        do the right thing, we should just do all the work in WebKit.
        This has the added benifit of fixing some tricky autoscrolling
        bugs that have cropped up recently.

        * editing/Editor.cpp:
        (WebCore::Editor::insertTextWithoutSendingTextEvent):
        (WebCore::Editor::revealSelectionAfterEditingOperation):
        We should be scrolling the main frame in WebKit. We have been relying on UIKit,
        but we cannot give them enough information to guarantee a correct scroll, so just
        do all the work in WebKit.
        * page/FrameView.cpp:
        (WebCore::FrameView::unobscuredContentRectExpandedByContentInsets const):
        Update to use the rect that is actually visible, accounting for the software keyboard.

2019-04-10  Ross Kirsling  <ross.kirsling@sony.com>

        WebCore should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
        https://bugs.webkit.org/show_bug.cgi?id=196762

        Reviewed by Ryosuke Niwa.

        * Modules/indexeddb/IDBCursor.h:
        * Modules/indexeddb/client/IDBConnectionToServer.cpp:
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
        * Modules/websockets/WebSocketFrame.cpp:
        * accessibility/AccessibilityARIAGridRow.cpp:
        (WebCore::AccessibilityARIAGridRow::parentTable const):
        * accessibility/AccessibilityObject.cpp:
        * accessibility/AccessibilityRenderObject.cpp:
        * animation/CSSAnimation.cpp:
        * animation/DeclarativeAnimation.cpp:
        * bindings/js/DOMGCOutputConstraint.h:
        * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
        (WebCore::root):
        (WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
        (WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):
        * bindings/js/JSDOMConvertNumbers.cpp:
        * bindings/js/JSDOMWindowCustom.cpp:
        * bindings/js/JSExtendableMessageEventCustom.cpp:
        * bindings/js/SerializedScriptValue.cpp:
        * css/CSSFontFaceSource.cpp:
        * css/CSSFontFaceSource.h:
        * css/MediaQueryMatcher.h:
        * css/parser/CSSPropertyParserHelpers.cpp:
        * dom/DocumentParser.cpp:
        * dom/EventPath.cpp:
        * dom/MouseEvent.h:
        * dom/SpectreGadget.cpp:
        * dom/SpectreGadget.h:
        * editing/ChangeListTypeCommand.cpp:
        * editing/EditAction.cpp:
        * editing/ReplaceSelectionCommand.cpp:
        * editing/TextGranularity.h:
        * html/HTMLFormControlsCollection.cpp:
        * html/HTMLImageElement.cpp:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        * inspector/InspectorController.cpp:
        * inspector/agents/InspectorApplicationCacheAgent.cpp:
        * inspector/agents/InspectorCanvasAgent.cpp:
        * inspector/agents/WebHeapAgent.cpp:
        * inspector/agents/page/PageAuditAgent.cpp:
        * inspector/agents/page/PageConsoleAgent.cpp:
        * inspector/agents/page/PageNetworkAgent.cpp:
        * inspector/agents/worker/WorkerAuditAgent.cpp:
        * loader/CrossOriginAccessControl.h:
        * loader/CrossOriginPreflightResultCache.h:
        * loader/NavigationAction.cpp:
        * loader/ResourceLoadObserver.cpp:
        * page/FrameTree.cpp:
        * page/IntersectionObserver.cpp:
        * page/PageConfiguration.cpp:
        * page/PerformanceResourceTiming.cpp:
        * page/ResizeObservation.cpp:
        * page/UndoManager.cpp:
        * plugins/PluginData.cpp:
        * rendering/Grid.h:
        * rendering/GridBaselineAlignment.cpp:
        * rendering/GridBaselineAlignment.h:
        * rendering/GridLayoutFunctions.cpp:
        * rendering/GridLayoutFunctions.h:
        * rendering/GridTrackSizingAlgorithm.h:
        * rendering/RenderDeprecatedFlexibleBox.cpp:
        * rendering/RenderFlexibleBox.cpp:
        * rendering/RenderIFrame.cpp:
        * rendering/RenderLayerFilters.cpp:
        * rendering/TextDecorationPainter.cpp:
        * rendering/TextDecorationPainter.h:
        * rendering/TextPainter.cpp:
        * rendering/TextPainter.h:
        * rendering/style/StyleRareNonInheritedData.cpp:
        * rendering/style/StyleRareNonInheritedData.h:
        * rendering/svg/SVGRenderSupport.h:
        * rendering/updating/RenderTreeBuilder.cpp:
        * rendering/updating/RenderTreeBuilderSVG.cpp:
        * style/InlineTextBoxStyle.cpp:
        * style/InlineTextBoxStyle.h:
        * style/StylePendingResources.cpp:
        * svg/SVGMatrix.h:
        * svg/SVGViewSpec.h:
        * svg/SVGZoomAndPan.h:
        * workers/WorkerScriptLoader.cpp:
        * workers/WorkerScriptLoader.h:
        * workers/service/ServiceWorker.cpp:
        * workers/service/ServiceWorkerClientData.cpp:
        * workers/service/ServiceWorkerClients.cpp:
        * workers/service/ServiceWorkerClients.h:
        * workers/service/ServiceWorkerGlobalScope.cpp:
        * workers/service/ServiceWorkerJob.cpp:
        * workers/service/ServiceWorkerProvider.cpp:
        * workers/service/context/ServiceWorkerFetch.cpp:
        * workers/service/context/ServiceWorkerInspectorProxy.h:
        * workers/service/context/ServiceWorkerThread.cpp:
        * workers/service/context/ServiceWorkerThreadProxy.cpp:
        * workers/service/server/SWServerJobQueue.cpp:
        * workers/service/server/SWServerToContextConnection.cpp:
        * workers/service/server/SWServerWorker.cpp:
        * workers/service/server/SWServerWorker.h:
        * worklets/Worklet.h:

2019-04-10  Antoine Quint  <graouts@apple.com>

        Enable Pointer Events on watchOS
        https://bugs.webkit.org/show_bug.cgi?id=196771
        <rdar://problem/49040909>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-04-10  Youenn Fablet  <youenn@apple.com>

        Delay initialization of quota users until the first quota request
        https://bugs.webkit.org/show_bug.cgi?id=196467

        Reviewed by Chris Dumez.

        Instead of triggering initialization of each user when being added,
        delay initialization until the first call to requestSpace with a non zero task size.
        This will make sure we do not load Cache API information in memory or check for
        IDB space until actually necessary.

        To implement that, move from a HashSet of being initialized users to a HashMap where the key is user and
        the value is the user initialization state.

        When removing a user, delay the call to processPendingRequest so that a synchronous call to addUser
        can be taken into consideration.

        This unflakes some Cache API tests as these tests do clear the Cache API and check for the clearing result.
        Clearing the caches triggers a removeUser/addUser dance which then triggers initialization of the Caches structure.

        Covered by existing tests.

        * storage/StorageQuotaManager.cpp:
        (WebCore::StorageQuotaManager::initializeUsersIfNeeded):
        (WebCore::StorageQuotaManager::askUserToInitialize):
        (WebCore::StorageQuotaManager::addUser):
        (WebCore::StorageQuotaManager::requestSpace):
        * storage/StorageQuotaManager.h:

2019-04-10  Philippe Normand  <pnormand@igalia.com>

        there is no vp8 support in youtube.com/html5 page with libwebkit2gtk 2.24 (MSE enabled)
        https://bugs.webkit.org/show_bug.cgi?id=196615

        Reviewed by Xabier Rodriguez-Calvar.

        Add vp8.0 and vp9.0 in supported mime-types if the corresponding video decoders are found.

        No new tests, existing web-platform-tests cover this change.

        * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
        (WebCore::GStreamerRegistryScanner::initialize):

2019-04-10  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Adaptive streaming playback broken with GStreamer < 1.12
        https://bugs.webkit.org/show_bug.cgi?id=196765

        Reviewed by Xabier Rodriguez-Calvar.

        Without the following patch in gst-plugins-bad, the uridownloader
        doesn't relay need-context messages to its parent, so in our case
        the player can't share its context with secondary webkitwebsrc
        elements and a RELEASE_ASSERT is hit in the WebProcess.

        So the workaround is to use again webkit+ protocol prefixes for
        GStreamer versions older than 1.12.

        https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/commit/8cf858fb27919e1d631223375f81b98055623733

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::convertToInternalProtocol):
        (WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        (WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webKitWebSrcStart):
        (webKitWebSrcGetProtocols):
        (convertPlaybinURI):
        (webKitWebSrcSetUri):
        (CachedResourceStreamingClient::responseReceived):
        (webKitSrcWouldTaintOrigin):
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

2019-04-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Defer the emision of AtkObject::children-changed signal after layout is done
        https://bugs.webkit.org/show_bug.cgi?id=187948

        Reviewed by Michael Catanzaro.

        The signal AtkObject::children-changed is emitted from AXObjectCache::attachWrapper() and
        AXObjectCache::detachWrapper(). Both can be called in the middle of a layout, so we need to defer the emission
        of the signal after the layout is done, to avoid other atk entry points from being called at that point, since
        most of them update the backing store at the beginning.

        Fixes: accessibility/children-changed-sends-notification.html

        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::performDeferredCacheUpdate): Call platformPerformDeferredCacheUpdate().
        * accessibility/AXObjectCache.h:
        * accessibility/atk/AXObjectCacheAtk.cpp:
        (WebCore::wrapperParent): Helper to get the AtkObject parent of a given WebKitAccessible.
        (WebCore::AXObjectCache::detachWrapper): Add wrapper to m_deferredDetachedWrapperList.
        (WebCore::AXObjectCache::attachWrapper): Add object to m_deferredAttachedWrapperObjectList.
        (WebCore::AXObjectCache::platformPerformDeferredCacheUpdate): Emit AtkObject::children-changed::add for objects
        in m_deferredAttachedWrapperObjectList and AtkObject::children-changed::remove for wrappers in m_deferredDetachedWrapperList.
        * accessibility/ios/AXObjectCacheIOS.mm:
        (WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):
        * accessibility/win/AXObjectCacheWin.cpp:
        (WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):
        * accessibility/wpe/AXObjectCacheWPE.cpp:
        (WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):

2019-04-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Test accessibility/insert-children-assert.html is crashing since added in r216980
        https://bugs.webkit.org/show_bug.cgi?id=172281
        <rdar://problem/37030990>

        Reviewed by Joanmarie Diggs.

        The crash happens because at some point the test tries to get the anonymous block text, getting the RenderText as
        first child and RenderFullScreen as last child and the latter doesn't have a node. This is because in atk we do
        things differently, we don't include the static text elements individually, but parent element uses
        textUnderElement() to get all the pieces together. We can just turn the asserts into actual nullptr checks.

        Fixes: accessibility/insert-children-assert.html

        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::textUnderElement const):

2019-04-09  Keith Rollin  <krollin@apple.com>

        Unreviewed build maintenance -- update .xcfilelists.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-04-09  Zalan Bujtas  <zalan@apple.com>

        [AutoSizing] Avoid making text paragraphs scroll horizontally when there is a wide table
        https://bugs.webkit.org/show_bug.cgi?id=196743
        <rdar://problem/43897551>

        Reviewed by Tim Horton.

        This patch changes the auto size behavior by using fixed constraint (instead of a min/max pair) to compute the content height.
        Now with the initial containing block width is firmly set to auto-sizing width, the overflow content will not stretch the ICB. Instead it overflows the ICB
        and triggers scrolling the same way the non-auto-sizing mode does.

        * page/FrameView.cpp:
        (WebCore::FrameView::autoSizeIfEnabled):
        (WebCore::FrameView::enableAutoSizeMode):
        * page/FrameView.h:
        * testing/Internals.cpp:
        (WebCore::Internals::enableAutoSizeMode):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-09  Youenn Fablet  <youenn@apple.com>

        Close service worker database on network process suspension
        https://bugs.webkit.org/show_bug.cgi?id=196623
        <rdar://problem/48930869>

        Reviewed by Alex Christensen.

        Add suspend/resume support to SWServer.
        On suspend, close the service worker database and stop pushing for changes.
        On resume, push changes if needed.

        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::RegistrationDatabase::close):
        * workers/service/server/RegistrationDatabase.h:
        (WebCore::RegistrationDatabase::isClosed const): Deleted.
        * workers/service/server/RegistrationStore.cpp:
        (WebCore::RegistrationStore::closeDatabase):
        * workers/service/server/RegistrationStore.cpp:
        (WebCore::RegistrationStore::pushChangesToDatabase):
        (WebCore::RegistrationStore::clearAll):
        (WebCore::RegistrationStore::startSuspension):
        (WebCore::RegistrationStore::endSuspension):
        * workers/service/server/RegistrationStore.h:
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::startSuspension):
        (WebCore::SWServer::endSuspension):
        * workers/service/server/SWServer.h:

2019-04-09  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPURenderPassEncoder updates: setBlendColor, setViewport, setScissorRect
        https://bugs.webkit.org/show_bug.cgi?id=196719

        Reviewed by Myles C. Maxfield.

        Implement setBlendColor, setViewport, and setScissorRect for GPURenderPassEncoder.

        Tests: webgpu/viewport-scissor-rect-triangle-strip.html, webgpu/blend-color-triangle-strip.html

        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setBlendColor):
        (WebCore::WebGPURenderPassEncoder::setViewport):
        (WebCore::WebGPURenderPassEncoder::setScissorRect):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setBlendColor):
        (WebCore::GPURenderPassEncoder::setViewport):
        (WebCore::GPURenderPassEncoder::setScissorRect):

2019-04-09  Andy Estes  <aestes@apple.com>

        [Apple Pay] Add release logging to PaymentCoordinator
        https://bugs.webkit.org/show_bug.cgi?id=196738

        Reviewed by Alex Christensen.

        When allowed, log interactions with PaymentCoordinator to os_log to help diagnose Apple Pay bugs.

        The following information might be logged: names of functions called, merchant API versions,
        boolean results of canMakePayments(), boolean results of beginPaymentSession(), whether
        completePaymentSession() was called with a final state result, boolean results of
        shouldAllowApplePay(), whether a document has evaluated user agent scripts or is running
        user scripts, and whether a client supports unrestricted Apple Pay.

        * Modules/applepay/PaymentCoordinator.cpp:
        (WebCore::PaymentCoordinator::supportsVersion const):
        (WebCore::PaymentCoordinator::canMakePayments):
        (WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebCore::PaymentCoordinator::openPaymentSetup):
        (WebCore::PaymentCoordinator::beginPaymentSession):
        (WebCore::PaymentCoordinator::completeMerchantValidation):
        (WebCore::PaymentCoordinator::completeShippingMethodSelection):
        (WebCore::PaymentCoordinator::completeShippingContactSelection):
        (WebCore::PaymentCoordinator::completePaymentMethodSelection):
        (WebCore::PaymentCoordinator::completePaymentSession):
        (WebCore::PaymentCoordinator::abortPaymentSession):
        (WebCore::PaymentCoordinator::cancelPaymentSession):
        (WebCore::PaymentCoordinator::validateMerchant):
        (WebCore::PaymentCoordinator::didAuthorizePayment):
        (WebCore::PaymentCoordinator::didSelectPaymentMethod):
        (WebCore::PaymentCoordinator::didSelectShippingMethod):
        (WebCore::PaymentCoordinator::didSelectShippingContact):
        (WebCore::PaymentCoordinator::didCancelPaymentSession):
        (WebCore::PaymentCoordinator::shouldAllowApplePay const):
        (WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
        * Modules/applepay/PaymentCoordinatorClient.h:
        (WebCore::PaymentCoordinatorClient::isAlwaysOnLoggingAllowed const):
        * platform/Logging.h:
        * testing/MockPaymentCoordinator.h:

2019-04-09  John Wilander  <wilander@apple.com>

        Pick up Ad Click Attribution conversions in NetworkResourceLoader::willSendRedirectedRequest()
        https://bugs.webkit.org/show_bug.cgi?id=196558
        <rdar://problem/47650245>

        Reviewed by Youenn Fablet.

        Tests: http/tests/adClickAttribution/attribution-conversion-through-cross-site-image-redirect.html
               http/tests/adClickAttribution/attribution-conversion-through-image-redirect-with-priority.html
               http/tests/adClickAttribution/attribution-conversion-through-image-redirect-without-priority.html

        The existing API tests were expanded too.

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
           Enhanced the use of AdClickAttribution::MaxEntropy.
        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::parseConversionRequest):
            New function to parse and validate URLs with a path starting with
            /.well-known/ad-click-attribution/.
        (WebCore::AdClickAttribution::toString const):
            Added output for the conversion priority for testing purposes.
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Campaign::isValid const):
        (WebCore::AdClickAttribution::Conversion::isValid const):
           Enhanced the use of AdClickAttribution::MaxEntropy.

2019-04-09  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Apple builds should use ICU_INCLUDE_DIRS
        https://bugs.webkit.org/show_bug.cgi?id=196720

        Reviewed by Konstantin Tokarev.

        * PlatformMac.cmake:

2019-04-09  Jer Noble  <jer.noble@apple.com>

        Test for: 196095 Inband Text Track cues interspersed with Data cues can display out of order.
        https://bugs.webkit.org/show_bug.cgi?id=196097

        Reviewed by Eric Carlson.

        Test: media/track/track-in-band-metadata-display-order.html

        Add a method in Internals to create a TextTrackCueGeneric (which can normally only be created
        by parsing an in-band media track). This requires adding IDL for TextTrackCueGeneric, and exporting
        TextTrackCueGeneric for testing.

        Drive-by fixes:

        Add runtime logging to MediaControlTextTrackContainerElement. This necessitates modifying the
        parentMediaElement() method to take a const Node*, and const_cast that constness away in order to return
        a HTMLMediaElement*

        TextTrackCue, VTTCue, TextTrackCueGeneric, and DataCue should all use the WTF TypeCasts macros to
        enable use of is<> and downcast<>.

        * Source/WebCore/CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:
        * Sources.txt:
        * html/shadow/MediaControlElementTypes.cpp:
        (WebCore::parentMediaElement):
        * html/shadow/MediaControlElementTypes.h:
        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlTextTrackContainerElement::updateDisplay):
        (WebCore::MediaControlTextTrackContainerElement::logger const):
        (WebCore::MediaControlTextTrackContainerElement::logIdentifier const):
        (WebCore::MediaControlTextTrackContainerElement::logChannel const):
        * html/shadow/MediaControlElements.h:
        * html/track/DataCue.h:
        (isType):
        * html/track/TextTrackCueGeneric.h:
        (isType):
        * html/track/TextTrackCueGeneric.idl: Added.
        * html/track/VTTCue.h:
        (isType):
        * testing/Internals.cpp:
        (WebCore::Internals::createGenericCue):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-09  Sihui Liu  <sihui_liu@apple.com>

        Remove unnecessary network process assertion for IDB close
        https://bugs.webkit.org/show_bug.cgi?id=196693

        Reviewed by Geoffrey Garen.

        We already took assertion at WebCore::SQLiteDatabase::close.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::create):
        (WebCore::IDBServer::IDBServer::IDBServer):
        (WebCore::IDBServer::m_quotaManagerGetter): Deleted.
        (WebCore::IDBServer::IDBServer::closeDatabase): Deleted.
        (WebCore::IDBServer::IDBServer::didCloseDatabase): Deleted.
        * Modules/indexeddb/server/IDBServer.h:
        (WebCore::IDBServer::IDBServer::create): Deleted.
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentDeleteOperation):
        (WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose):
        (WebCore::IDBServer::UniqueIDBDatabase::didShutdownForClose):
        (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        (WebCore::IDBServer::UniqueIDBDatabase::notifyServerAboutClose): Deleted.
        * Modules/indexeddb/server/UniqueIDBDatabase.h:

2019-04-09  Eike Rathke  <erack@redhat.com>

        Initialize trackTypeAsString for call to GST_INFO_OBJECT() in TrackType::Text
        https://bugs.webkit.org/show_bug.cgi?id=196350

        Reviewed by Xabier Rodriguez-Calvar.

        trackTypeAsString was uninitialized in the
        TrackPrivateBaseGStreamer::TrackType::Text case when calling
        GST_INFO_OBJECT().

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::enableTrack):

2019-04-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Cleanup WebKitAccessibleHyperlink
        https://bugs.webkit.org/show_bug.cgi?id=196602

        Reviewed by Michael Catanzaro.

        Cleanups:

         - Rename webkitAccessibleHyperlinkNew() as webkitAccessibleHyperlinkGetOrCreate() and move the code to get/set
           the object data here.
         - Use WEBKIT_DEFINE_TYPE instead of custom type registration. This ensures that all CStrings used in private
           struct are no longer leaked.
         - Remove all confusing core() functions and simply use webkitAccessibleGetAccessibilityObject().
         - Use nullptr instead of 0 and other coding style issues.

        * accessibility/atk/WebKitAccessibleHyperlink.cpp:
        (webkitAccessibleHyperlinkActionDoAction):
        (webkitAccessibleHyperlinkActionGetNActions):
        (webkitAccessibleHyperlinkActionGetDescription):
        (webkitAccessibleHyperlinkActionGetKeybinding):
        (webkitAccessibleHyperlinkActionGetName):
        (atk_action_interface_init):
        (webkitAccessibleHyperlinkGetURI):
        (webkitAccessibleHyperlinkGetObject):
        (rangeLengthForObject):
        (webkitAccessibleHyperlinkGetStartIndex):
        (webkitAccessibleHyperlinkGetEndIndex):
        (webkitAccessibleHyperlinkIsValid):
        (webkitAccessibleHyperlinkGetNAnchors):
        (webkitAccessibleHyperlinkIsSelectedLink):
        (webkitAccessibleHyperlinkGetProperty):
        (webkitAccessibleHyperlinkSetProperty):
        (webkit_accessible_hyperlink_class_init):
        (webkitAccessibleHyperlinkGetOrCreate):
        (core): Deleted.
        (atkActionInterfaceInit): Deleted.
        (getRangeLengthForObject): Deleted.
        (webkitAccessibleHyperlinkFinalize): Deleted.
        (webkitAccessibleHyperlinkClassInit): Deleted.
        (webkitAccessibleHyperlinkInit): Deleted.
        (webkitAccessibleHyperlinkGetType): Deleted.
        (webkitAccessibleHyperlinkNew): Deleted.
        (webkitAccessibleHyperlinkGetAccessibilityObject): Deleted.
        * accessibility/atk/WebKitAccessibleHyperlink.h:
        * accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp:
        (webkitAccessibleHyperlinkImplGetHyperlink):
        (webkitAccessibleHyperlinkImplInterfaceInit):

2019-04-08  Simon Fraser  <simon.fraser@apple.com>

        Remove some iOS #ifdefs around sticky-related code
        https://bugs.webkit.org/show_bug.cgi?id=196726

        Reviewed by Zalan Bujtas.

        Now that async overflow scrolling can be enabled on macOS, RenderLayerCompositor::isAsyncScrollableStickyLayer()
        should not have iOS-only code.

        The answer to the FIXME in RenderLayerCompositor::computeStickyViewportConstraints is obvious: composited
        overflow:scroll can be the container for sticky. The assertion can be removed.

        * rendering/RenderLayer.cpp: Fix spacing in some logging.
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::isAsyncScrollableStickyLayer const):
        (WebCore::RenderLayerCompositor::computeStickyViewportConstraints const):

2019-04-08  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WinCairo] Separate copied headers into different directories
        https://bugs.webkit.org/show_bug.cgi?id=196655

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-08  Chris Fleizach  <cfleizach@apple.com>

        AX: Automatically compute accessibility labels for Apple Pay buttons
        https://bugs.webkit.org/show_bug.cgi?id=196661

        Reviewed by Joanmarie Diggs.

        Detect Apple Pay buttons and return a standard role and label for them based on their type.

        Test: accessibility/mac/apple-pay-labels.html
              accessibility/mac/apple-pay-session-v4.html

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::isControl const):
        * accessibility/AccessibilityNodeObject.h:
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::applePayButtonDescription const):
        (WebCore::AccessibilityRenderObject::titleElementText const):
        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
        (WebCore::AccessibilityRenderObject::isApplePayButton const):
        (WebCore::AccessibilityRenderObject::applePayButtonType const):
        * accessibility/AccessibilityRenderObject.h:
        * en.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        (WebCore::AXApplePayPlainLabel):
        (WebCore::AXApplePayBuyLabel):
        (WebCore::AXApplePaySetupLabel):
        (WebCore::AXApplePayDonateLabel):
        (WebCore::AXApplePayCheckOutLabel):
        (WebCore::AXApplePayBookLabel):
        (WebCore::AXApplePaySubscribeLabel):
        * platform/LocalizedStrings.h:

2019-04-08  Chris Fleizach  <cfleizach@apple.com>

        AX: Support API: accessibilityReplaceRange:withText
        https://bugs.webkit.org/show_bug.cgi?id=196636

        Reviewed by Daniel Bates.

        Support this platform API on mac to provide a way to replace a range of editable text.

        Test: accessibility/mac/replace-text-with-range.html

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::replaceTextInRange):
        * accessibility/AccessibilityObject.h:
        * accessibility/mac/AccessibilityObjectBase.mm:
        (WebCore::PlainTextRange::PlainTextRange):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityReplaceRange:withText:]):

2019-04-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Do not allow starting selection drags when selection views are not visible
        https://bugs.webkit.org/show_bug.cgi?id=196686
        <rdar://problem/49399192>

        Reviewed by Tim Horton.

        See WebKit ChangeLog for more details.

        Tests:  DragAndDropTests.CanDragImageWhenNotFirstResponder
                DragAndDropTests.DoNotPerformSelectionDragWhenNotFirstResponder

        * page/DragController.cpp:
        (WebCore::DragController::draggableElement const):

        Make this respect the case where m_dragSourceAction does not include DragSourceActionSelection. All the other
        drag source types are currently consulted in this method, with the exception of DragSourceActionSelection.

2019-04-08  Youenn Fablet  <youenn@apple.com>

        Add a test to check for the service worker process name
        https://bugs.webkit.org/show_bug.cgi?id=196621

        Reviewed by Chris Dumez.

        Add a service worker internal API to get process name.
        Covered by updated test.

        * WebCore.xcodeproj/project.pbxproj:
        * testing/ServiceWorkerInternals.cpp:
        (WebCore::ServiceWorkerInternals::processName const):
        * testing/ServiceWorkerInternals.h:
        * testing/ServiceWorkerInternals.idl:
        * testing/ServiceWorkerInternals.mm: Added.

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, speculative fix for build failure in old macOS after r243887
        https://bugs.webkit.org/show_bug.cgi?id=196475

        * dom/NodeList.h:

2019-04-08  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Fix Web GPU experimental feature on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196632

        Reviewed by Myles C. Maxfield.

        Add feature conditionals for iOS 11.
        Properly make Web GPU available on iOS 11+.

        * Configurations/FeatureDefines.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

2019-04-08  Timothy Hatcher  <timothy@apple.com>

        Unreviewed build fix for iOSMac after r243893.
        https://bugs.webkit.org/show_bug.cgi?id=196707

        * dom/Element.cpp:
        (WebCore::parentCrossingFrameBoundaries): Remove ENABLE(POINTER_EVENTS) since computedTouchActions()
        no longer uses parentCrossingFrameBoundaries().

2019-04-08  Youenn Fablet  <youenn@apple.com>

        Lazily construct Navigator serviceWorker
        https://bugs.webkit.org/show_bug.cgi?id=196692

        Reviewed by Chris Dumez.

        Make NavigatorBase a ContextDestructionObserver.
        This allows to get the navigator script execution context.
        Use it when creating the navigator ServiceWorkerContainer object.
        For GC, introduce serviceWorkerIfAny which returns the container if created.
        No JS observable change of behavior.
        Covered by existing tests.

        * bindings/js/JSNavigatorCustom.cpp:
        (WebCore::JSNavigator::visitAdditionalChildren):
        * bindings/js/JSWorkerNavigatorCustom.cpp:
        (WebCore::JSWorkerNavigator::visitAdditionalChildren):
        * page/NavigatorBase.cpp:
        (WebCore::NavigatorBase::NavigatorBase):
        (WebCore::NavigatorBase::serviceWorkerIfAny):
        (WebCore::NavigatorBase::serviceWorker):
        * page/NavigatorBase.h:

2019-04-08  Antti Koivisto  <antti@apple.com>

        Update touch-action region on property changes
        https://bugs.webkit.org/show_bug.cgi?id=196608

        Reviewed by Simon Fraser.

        Test: pointerevents/ios/touch-action-region-dynamic.html

        * rendering/EventRegion.cpp:
        (WebCore::EventRegion::touchActionsForPoint const):

        Correctly return 'auto' when nothing is found from the regions (this code is not used yet).

        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::styleWillChange):

        React to 'touch-action' property changes, similarly to 'pointer-events'.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::invalidateEventRegion):

        Test if need to invalidate.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::setContentsNeedDisplay):
        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):

        Call invalidateEventRegion explicitly instead of relying on compositing update. This ensures
        that we update the top level event region correctly when we have touch-actions.

2019-04-08  Javier Fernandez  <jfernandez@igalia.com>

        Implement white-space:break-spaces value
        https://bugs.webkit.org/show_bug.cgi?id=177327

        Reviewed by Myles Maxfield and Zalan Bujtas.

        Finally the CSS WG decided [1] to move back the 'break-spaces' value to
        the 'white-space' property. This makes the parsing logic easier than
        the previous approach of using the 'overflow-wrap' property.

        This new value prevents the white-space sequence to collapse and gives
        breaking opportunities after every preserved white-space.

        https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces

        Additionally, unlike 'pre-wrap', non-collapsible spaces or tabs at the
        end of a line cannot be hung or visually collapsed, since we want them
        to be preserved and broken.

        [1] https://github.com/w3c/csswg-drafts/pull/2841

        Tests: imported/w3c/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-008.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-003.html
               imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-009.html

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): New mapping for CSSVaueBreakSpaces.
        (WebCore::CSSPrimitiveValue::operator WhiteSpace const): New value BreakSpaces for the Whitespace enum.
        * css/CSSProperties.json: new 'break-spaces' value for the 'white-space' property.
        * css/CSSValueKeywords.in: new break-spaces keyword
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * rendering/SimpleLineLayout.cpp:  The SimpleLineLayut codepath must handle properly the new behavior of preserved whitespaces.
        (WebCore::SimpleLineLayout::LineState::hasTrailingWhitespace const): Require that m_trailingWhitespaceWidth being greater than zero.
        (WebCore::SimpleLineLayout::LineState::hasWhitespaceFragments const): New function to detect former whitespae fragments that could be breaking opportunities.
        (WebCore::SimpleLineLayout::removeTrailingWhitespace): The 'break-spaces' feature forbids to remove any trailing whitespace.
        (WebCore::SimpleLineLayout::firstFragment): We have now leading whitespace sequences comming from the previous line.
        (WebCore::SimpleLineLayout::createLineRuns): We should revert some breaking opportunities if others were formerly found in the line.
        * rendering/SimpleLineLayoutTextFragmentIterator.cpp:
        (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style): New style fields to determine whether the break-space feature is being used. Also split out the break-all and breal-all values.
        * rendering/SimpleLineLayoutTextFragmentIterator.h:
        * rendering/line/BreakingContext.h: Different codepath but similar changes to properly handle the new behavior of preserved whitespace.
        (WebCore::BreakingContext::BreakingContext): New class field to determine whether there are some whitespace that may prevent the word ot be broken.
        (WebCore::BreakingContext::handleText): New line-breaking logic to implement the break-spaces behavior.
        (WebCore::BreakingContext::trailingSpacesHang): Cases where the preserved breakspaces should hand or overflow.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::collapseWhiteSpace): With break-spaces collapsing whitespaces is not allowed.
        (WebCore::RenderStyle::breakOnlyAfterWhiteSpace const): Add the WhiteSpace::BreakSpaces to this group.
        * rendering/style/RenderStyleConstants.h: A new constan added.

2019-04-08  Youenn Fablet  <youenn@apple.com>

        LibWebRTCMediaEndpoint does not need to hop to the signaling thread to gather stats
        https://bugs.webkit.org/show_bug.cgi?id=196697
        <rdar://problem/47477113>

        Reviewed by Eric Carlson.

        It is not thread safe to use m_backend in another thread than the main thread.
        It is not useful anymore to hop to the signaling thread to gather stats.
        No change of behavior.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::getStats):
        (WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging):

2019-04-08  Antoine Quint  <graouts@apple.com>

        [ Mac WK2 iOS Debug ] REGRESSION(r233667) Layout Test imported/w3c/web-platform-tests/web-animations/interfaces/DocumentTimeline/constructor.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=195233
        <rdar://problem/48527231>

        Reviewed by Dean Jackson.

        We need to create the "main" document timeline (document.timeline) if it doesn't already exist and use its current time as a basis for any other DocumentTimeline instance.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::currentTime):

2019-04-08  Antoine Quint  <graouts@apple.com>

        [Web Animations] JS wrapper may be deleted while animation is yet to dispatch its finish event
        https://bugs.webkit.org/show_bug.cgi?id=196118
        <rdar://problem/46614137>

        Reviewed by Chris Dumez.

        Test: webanimations/js-wrapper-kept-alive.html

        We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.
        We also need to ensure that the new implementation of hasPendingActivity() does not interfere with the ability of pages to enter the page
        cache when running animations.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::canSuspendForDocumentSuspension const):
        (WebCore::WebAnimation::stop):
        (WebCore::WebAnimation::hasPendingActivity const):
        * animation/WebAnimation.h:

2019-04-08  Eric Liang  <ericliang@apple.com>

        AX: <svg> elements with labels and no accessible contents are exposed as empty AXGroups
        https://bugs.webkit.org/show_bug.cgi?id=156774

        Reviewed by Chris Fleizach.

        Labelled SVGs without accessible descendants are exposed as AXImage rather than groups.

        Unlabelled equivalents are not exposed. Otherwise, SVGs with accessible descendants are exposed as AXGroup. 
        Also added back functionalities from last patch of determining whether a SVG element should be ignored.
        
        Test: accessibility/svg-shape-labelled.html

        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::updateRoleAfterChildrenCreation):
        * accessibility/AccessibilitySVGElement.cpp:
        (WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const):

2019-04-08  Youenn Fablet  <youenn@apple.com>

        Make sure UniqueIDBDatabaseConnection unregisters itself even if its database is gone
        https://bugs.webkit.org/show_bug.cgi?id=196651

        Reviewed by Brady Eidson.

        In UniqueIDBDatabase methods, many operations are refing the transaction
        so that it stays alive until a quota check decision is made.
        This extends the lifetime of the transaction which may be lasting
        longer than its database that may be cleared without waiting for the quota check decisions.

        We therefore need to make sure that the transaction is cleaning itself correctly at destruction time.

        Make sure that the transaction is unregistering itself from its IDBServer.
        To do so, the transaction keeps a weak ref to the IDBServer.

        This is timing sensitive hence difficult to test.

        * Modules/indexeddb/server/IDBServer.h:
        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
        Like done below for UniqueIDBDatabaseConnection::didCommitTransaction,
        add a check to ensure that either the database is we are in an error case.
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:

2019-04-08  Christopher Reid  <chris.reid@sony.com>

        Undefined Behavior: m_experimentalImageMenuEnabled isn't initialized in HTMLImageElement when SERVICE_CONTROLS is disabled
        https://bugs.webkit.org/show_bug.cgi?id=196664

        Reviewed by Ross Kirsling.

        No observable change in behavior.

        Initialize m_experimentalImageMenuEnabled regardless of ENABLE(SERVICE_CONTROLS)

        * html/HTMLImageElement.cpp:

2019-04-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243943.

        Caused test262 failures.

        Reverted changeset:

        "[JSC] Filter DontEnum properties in
        ProxyObject::getOwnPropertyNames()"
        https://bugs.webkit.org/show_bug.cgi?id=176810
        https://trac.webkit.org/changeset/243943

2019-04-05  Sergio Villar Senin  <svillar@igalia.com>

        [GTK][WPE] outlook.live.com displays old-fashioned UI
        https://bugs.webkit.org/show_bug.cgi?id=196642

        Reviewed by Carlos Garcia Campos.

        The new good looking UI is shown as long as pretend we're a Mac in the UA.

        * platform/UserAgentQuirks.cpp:
        (WebCore::urlRequiresChromeBrowser):

2019-04-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Cleanup accessible wrapper base class
        https://bugs.webkit.org/show_bug.cgi?id=196601

        Reviewed by Mario Sanchez Prada.

        Cleanups:

         - Rename WebKitAccessibleWrapperAtk cpp and header as WebKitAccessible for consistency with the class name.
         - Use WEBKIT_DEFINE_TYPE instead of custom type registration. This ensures that all CStrings used in private
           struct are no longer leaked.
         - Move core object pointer to the private struct.
         - Remove confusing core() function and simply get the core object from the private struct.
         - Use nullptr instead of 0 and other coding style issues.
         - Rename cacheAndReturnAtkProperty as webkitAccessibleCacheAndReturnAtkProperty and use WebKitAccessible as
           instance parameter.
         - Make webkitAccessibleGetAccessibilityObject() return a reference, since we use a fallback object on detach it
           never returns nullptr.
         - Move objectFocusedAndCaretOffsetUnignored() to WebKitAccessibleUtil.

        * SourcesGTK.txt:
        * accessibility/atk/AXObjectCacheAtk.cpp:
        * accessibility/atk/WebKitAccessible.cpp: Renamed from Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp.
        (webkitAccessibleGetName):
        (webkitAccessibleGetDescription):
        (setAtkRelationSetFromCoreObject):
        (isRootObject):
        (webkitAccessibleGetParent):
        (webkitAccessibleGetNChildren):
        (webkitAccessibleRefChild):
        (webkitAccessibleGetIndexInParent):
        (webkitAccessibleGetAttributes):
        (atkRole):
        (webkitAccessibleGetRole):
        (webkitAccessibleRefStateSet):
        (webkitAccessibleRefRelationSet):
        (webkitAccessibleInit):
        (webkitAccessibleGetObjectLocale):
        (webkit_accessible_class_init):
        (interfaceMaskFromObject):
        (uniqueAccessibilityTypeName):
        (accessibilityTypeFromObject):
        (webkitAccessibleNew):
        (webkitAccessibleGetAccessibilityObject):
        (webkitAccessibleDetach):
        (webkitAccessibleIsDetached):
        (webkitAccessibleCacheAndReturnAtkProperty):
        * accessibility/atk/WebKitAccessible.h: Renamed from Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.h.
        * accessibility/atk/WebKitAccessibleHyperlink.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceAction.cpp:
        (core):
        (webkitAccessibleActionGetKeybinding):
        (webkitAccessibleActionGetName):
        * accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceDocument.cpp:
        (core):
        (documentAttributeValue):
        * accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceImage.cpp:
        (core):
        (webkitAccessibleImageGetImageDescription):
        * accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceTable.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
        (core):
        * accessibility/atk/WebKitAccessibleUtil.cpp:
        (objectFocusedAndCaretOffsetUnignored):
        * accessibility/atk/WebKitAccessibleUtil.h:
        * editing/atk/FrameSelectionAtk.cpp:

2019-04-06  Antti Koivisto  <antti@apple.com>

        Combine event and touch action regions into a single class
        https://bugs.webkit.org/show_bug.cgi?id=196644
        <rdar://problem/49643614>

        Reviewed by Darin Adler.

        This patch replaces the existing TouchActionRegion class with the more general EventRegion class.
        It collects both the overall event region and the touch action regions. This avoids duplication
        and simplifies the code.

        The patch also adds serialization support for EventRegion, so touch-action regions gets passed
        to the UI process too.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setEventRegion):
        (WebCore::GraphicsLayer::dumpProperties const):
        (WebCore::GraphicsLayer::setTouchActionRegion): Deleted.
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::eventRegion const):
        (WebCore::GraphicsLayer::touchActionRegion const): Deleted.
        * platform/graphics/Region.cpp:
        (WebCore::operator<<):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setEventRegion):
        (WebCore::GraphicsLayerCA::setTouchActionRegion): Deleted.
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
        * rendering/EventRegion.cpp: Copied from Source/WebCore/rendering/TouchActionRegion.cpp.
        (WebCore::EventRegion::operator== const):
        (WebCore::EventRegion::unite):
        (WebCore::EventRegion::translate):
        (WebCore::EventRegion::uniteTouchActions):
        (WebCore::EventRegion::touchActionsForPoint const):
        (WebCore::operator<<):
        (WebCore::TouchActionRegion::unite): Deleted.
        (WebCore::TouchActionRegion::actionsForPoint const): Deleted.
        (WebCore::TouchActionRegion::translate): Deleted.
        * rendering/EventRegion.h: Copied from Source/WebCore/rendering/TouchActionRegion.h.
        (WebCore::EventRegion::isEmpty const):
        (WebCore::EventRegion::contains const):
        (WebCore::EventRegion::hasTouchActions const):
        (WebCore::EventRegion::encode const):
        (WebCore::EventRegion::decode):
        (WebCore::TouchActionRegion::isEmpty const): Deleted.
        (WebCore::TouchActionRegion::operator== const): Deleted.
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):
        * rendering/PaintInfo.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::collectEventRegionForFragments):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateEventRegion):
        * rendering/RenderLayerModelObject.cpp:
        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::paintFlow):
        * rendering/TouchActionRegion.cpp: Removed.
        * rendering/TouchActionRegion.h: Removed.

2019-04-05  Yongjun Zhang  <yongjun_zhang@apple.com>

        We should pass minimumEffectiveDeviceWidth to web process on new page creation.
        https://bugs.webkit.org/show_bug.cgi?id=196077
        <rdar://problem/49108202>

        Reviewed by Chris Dumez.

        If the page doesn't specify it requires to use the device width in viewport tag, we should try to scale down
        the page to fit the window width.

        Test: fast/viewport/ios/shrink-to-fit-for-page-without-viewport-meta.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::updateDefaultConfiguration): Also update the minimum layout size
            when the default configuration is changed.
        (WebCore::ViewportConfiguration::nativeWebpageParametersWithShrinkToFit): Make sure we fit the content
            to window width.

2019-04-05  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Deactivate the audio session before the WebProcess suspends.
        https://bugs.webkit.org/show_bug.cgi?id=196658

        Reviewed by Eric Carlson.

        Test: platform/mac/media/audio-session-deactivated-when-suspended.html

        Deactivate the audio session when we are notified that the session will suspend.

        Drive-by fix: don't try to begin playback when the process is suspended.

        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
        (WebCore::PlatformMediaSessionManager::processWillSuspend):
        (WebCore::PlatformMediaSessionManager::processDidResume):
        * platform/audio/PlatformMediaSessionManager.h:
        (WebCore::PlatformMediaSessionManager::processIsSuspended const):
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setShouldDeactivateAudioSession):
        * testing/InternalSettings.h:
        * testing/InternalSettings.idl:
        * testing/Internals.cpp:
        (WebCore::Internals::processWillSuspend):
        (WebCore::Internals::processDidResume):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-05  Sihui Liu  <sihui_liu@apple.com>

        [iOS] Web process gets suspended while holding locked database files
        https://bugs.webkit.org/show_bug.cgi?id=196519
        <rdar://problem/49531797>

        Reviewed by Chris Dumez.

        Don't use DatabaseTracker singleton before it is initialized.

        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::isInitialized):
        * Modules/webdatabase/DatabaseTracker.h:

2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>

        Make WeakPtr<Element> possible and deploy it in form associated elements code
        https://bugs.webkit.org/show_bug.cgi?id=196626

        Reviewed by Antti Koivisto.

        Make Element inherit from CanMakeWeakPtr and deploy WeakPtr<*Element> in FormAssociatedElement and HTMLFormElement.

        No new tests sine there should be no behavioral change.

        * dom/Element.h:
        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::FormAssociatedElement):
        (WebCore::FormAssociatedElement::insertedIntoAncestor):
        (WebCore::FormAssociatedElement::setForm):
        (WebCore::FormAssociatedElement::resetFormOwner):
        (WebCore::FormAssociatedElement::formAttributeChanged):
        * html/FormAssociatedElement.h:
        (WebCore::FormAssociatedElement::form const):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::asFormNamedItem):
        (WebCore::HTMLElement::asFormAssociatedElement):
        * html/HTMLElement.h:
        (WebCore::HTMLElement::asFormNamedItem): Deleted.
        * html/HTMLFormControlElement.h:
        * html/HTMLFormControlsCollection.cpp:
        (WebCore::HTMLFormControlsCollection::formImageElements const): Inlined into updateNamedElementCache.
        (WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
        * html/HTMLFormControlsCollection.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::registerInvalidAssociatedFormControl):
        (WebCore::HTMLFormElement::removeInvalidAssociatedFormControlIfNeeded):
        (WebCore::HTMLFormElement::registerImgElement):
        (WebCore::HTMLFormElement::defaultButton const):
        (WebCore::HTMLFormElement::resetDefaultButton):
        (WebCore::HTMLFormElement::matchesValidPseudoClass const):
        (WebCore::HTMLFormElement::matchesInvalidPseudoClass const):
        * html/HTMLFormElement.h:
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::HTMLImageElement):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        * html/HTMLImageElement.h:
        * html/HTMLInputElement.h:
        * html/HTMLMediaElement.h:
        * html/HTMLObjectElement.h:
        * html/HTMLPictureElement.h:
        * html/HTMLSlotElement.h:
        * svg/SVGElement.h:

2019-04-05  Caitlin Potter  <caitp@igalia.com>

        [JSC] Filter DontEnum properties in ProxyObject::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=176810

        Reviewed by Saam Barati.

        Previously, there was a comment here indicating uncertainty of whether it
        was necessary to filter DontEnum properties explicitly or not. It turns
        out that it was necessary in the case of JSC ProxyObjects.

        This patch adds DontEnum filtering for ProxyObjects, however we continue
        to explicitly filter them in JSDOMConvertRecord, which needs to use the
        property descriptor after filtering. This change prevents observably
        fetching the property descriptor twice per property.

        * bindings/js/JSDOMConvertRecord.h:

2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed manual rollout of r243929
        https://bugs.webkit.org/show_bug.cgi?id=196626

        * dom/Element.h:
        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::FormAssociatedElement):
        (WebCore::FormAssociatedElement::insertedIntoAncestor):
        (WebCore::FormAssociatedElement::setForm):
        (WebCore::FormAssociatedElement::resetFormOwner):
        (WebCore::FormAssociatedElement::formAttributeChanged):
        * html/FormAssociatedElement.h:
        (WebCore::FormAssociatedElement::form const):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::asFormNamedItem): Deleted.
        (WebCore::HTMLElement::asFormAssociatedElement): Deleted.
        * html/HTMLElement.h:
        (WebCore::HTMLElement::asFormNamedItem):
        * html/HTMLFormControlElement.h:
        * html/HTMLFormControlsCollection.cpp:
        (WebCore:: const):
        (WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
        * html/HTMLFormControlsCollection.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::registerInvalidAssociatedFormControl):
        (WebCore::HTMLFormElement::removeInvalidAssociatedFormControlIfNeeded):
        (WebCore::HTMLFormElement::registerImgElement):
        (WebCore::HTMLFormElement::defaultButton const):
        (WebCore::HTMLFormElement::resetDefaultButton):
        (WebCore::HTMLFormElement::matchesValidPseudoClass const):
        (WebCore::HTMLFormElement::matchesInvalidPseudoClass const):
        * html/HTMLFormElement.h:
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::HTMLImageElement):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        * html/HTMLImageElement.h:
        * html/HTMLInputElement.h:
        * html/HTMLMediaElement.h:
        * html/HTMLObjectElement.h:
        * html/HTMLPictureElement.h:
        * html/HTMLSlotElement.h:
        * svg/SVGElement.h:

2019-04-05  Sihui Liu  <sihui_liu@apple.com>

        [iOS] Web process gets suspended while holding locked database files
        https://bugs.webkit.org/show_bug.cgi?id=196519
        <rdar://problem/49531797>

        Reviewed by Chris Dumez.

        We should close all databases and make sure not open new databases when web process is ready to suspend.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::setIsDatabaseOpeningForbidden):
        (WebCore::SQLiteDatabase::open):
        * platform/sql/SQLiteDatabase.h:
        * platform/sql/SQLiteDatabaseTracker.cpp:
        (WebCore::SQLiteDatabaseTracker::setClient):
        (WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
        (WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
        (WebCore::SQLiteDatabaseTracker::hasTransactionInProgress):

2019-04-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243833.
        https://bugs.webkit.org/show_bug.cgi?id=196645

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-05  David Kilzer  <ddkilzer@apple.com>

        REGRESSION(r243887): Try to fix Windows builds by including <wtf/IsoMalloc.h>

        Caused by:
            [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
            https://bugs.webkit.org/show_bug.cgi?id=196475

        * css/CSSComputedStyleDeclaration.h:
        * dom/DOMRectReadOnly.h:
        * dom/LiveNodeList.h:
        * dom/NodeIterator.h:
        * dom/TreeWalker.h:
        * fileapi/Blob.h:
        * fileapi/File.h:
        * fileapi/FileList.h:
        * html/CachedHTMLCollection.h:
        * html/HTMLFormElement.h:
        * html/HTMLNameCollection.h:
        * html/canvas/GPUBasedCanvasRenderingContext.h:
        * page/RemoteDOMWindow.h:

2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>

        Make WeakPtr<Element> possible and deploy it in form associated elements code
        https://bugs.webkit.org/show_bug.cgi?id=196626

        Reviewed by Antti Koivisto.

        Make Element inherit from CanMakeWeakPtr and deploy WeakPtr<*Element> in FormAssociatedElement and HTMLFormElement.

        No new tests sine there should be no behavioral change.

        * dom/Element.h:
        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::FormAssociatedElement):
        (WebCore::FormAssociatedElement::insertedIntoAncestor):
        (WebCore::FormAssociatedElement::setForm):
        (WebCore::FormAssociatedElement::resetFormOwner):
        (WebCore::FormAssociatedElement::formAttributeChanged):
        * html/FormAssociatedElement.h:
        (WebCore::FormAssociatedElement::form const):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::asFormNamedItem):
        (WebCore::HTMLElement::asFormAssociatedElement):
        * html/HTMLElement.h:
        (WebCore::HTMLElement::asFormNamedItem): Deleted.
        * html/HTMLFormControlElement.h:
        * html/HTMLFormControlsCollection.cpp:
        (WebCore::HTMLFormControlsCollection::formImageElements const): Inlined into updateNamedElementCache.
        (WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
        * html/HTMLFormControlsCollection.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::registerInvalidAssociatedFormControl):
        (WebCore::HTMLFormElement::removeInvalidAssociatedFormControlIfNeeded):
        (WebCore::HTMLFormElement::registerImgElement):
        (WebCore::HTMLFormElement::defaultButton const):
        (WebCore::HTMLFormElement::resetDefaultButton):
        (WebCore::HTMLFormElement::matchesValidPseudoClass const):
        (WebCore::HTMLFormElement::matchesInvalidPseudoClass const):
        * html/HTMLFormElement.h:
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::HTMLImageElement):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        * html/HTMLImageElement.h:
        * html/HTMLInputElement.h:
        * html/HTMLMediaElement.h:
        * html/HTMLObjectElement.h:
        * html/HTMLPictureElement.h:
        * html/HTMLSlotElement.h:
        * svg/SVGElement.h:

2019-04-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Use a smart pointer for AccessibilityObject wrapper and remove GTK specific code
        https://bugs.webkit.org/show_bug.cgi?id=196593
        <rdar://problem/49599153>

        Reviewed by Michael Catanzaro.

        We have specific code for GTK to get/set the wrapper only because we don't use smart pointers. Also use
        WebKitAccessible as AccessibilityObjectWrapper instead of generic AtkObject, to enforce wrappers to be
        WebKitAccessible instances. This requires a few casts to AtkObject.

        * accessibility/AccessibilityObject.h:
        (WebCore::AccessibilityObject::setWrapper):
        * accessibility/AccessibilityObjectInterface.h:
        * accessibility/atk/AXObjectCacheAtk.cpp:
        (WebCore::AXObjectCache::detachWrapper):
        (WebCore::AXObjectCache::attachWrapper):
        (WebCore::notifyChildrenSelectionChange):
        (WebCore::AXObjectCache::postPlatformNotification):
        (WebCore::AXObjectCache::nodeTextChangePlatformNotification):
        (WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
        (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
        * accessibility/atk/AccessibilityObjectAtk.cpp:
        * accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
        (webkitAccessibleComponentRefAccessibleAtPoint):
        * accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp:
        (webkitAccessibleHypertextGetLink):
        (webkitAccessibleHypertextGetNLinks):
        * accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:
        (webkitAccessibleSelectionRefSelection):
        * accessibility/atk/WebKitAccessibleInterfaceTable.cpp:
        (webkitAccessibleTableRefAt):
        (webkitAccessibleTableGetColumnHeader):
        (webkitAccessibleTableGetRowHeader):
        (webkitAccessibleTableGetCaption):
        * accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:
        (convertToGPtrArray):
        (webkitAccessibleTableCellGetTable):
        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
        (accessibilityObjectLength):
        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
        (setAtkRelationSetFromCoreObject):
        (atkParentOfRootObject):
        (webkitAccessibleGetParent):
        (webkitAccessibleRefChild):
        (isTextWithCaret):
        * editing/atk/FrameSelectionAtk.cpp:
        (WebCore::emitTextSelectionChange):
        (WebCore::maybeEmitTextFocusChange):

2019-04-04  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in bad rendering
        https://bugs.webkit.org/show_bug.cgi?id=195584

        Reviewed by Zalan Bujtas.

        Push data to the scrolling tree about whether an overflow:scroll scroll was programmatic, by having
        RenderLayer::scrollToOffset() call into AsyncScrollingCoordinator::requestScrollPositionUpdate(),
        just as we do for frames.

        AsyncScrollingCoordinator::requestScrollPositionUpdate() is generalized to take any ScrollableArea.

        Fix an assumption in the ScrollingTree that we only care about programmatic scrolls on the root node.
        ScrollingTree::commitTreeState() no longer sets isHandlingProgrammaticScroll; instead,
        callers of ScrollingTreeScrollingNode::scrollTo() pass a ScrollType. Commit functions pass
        ScrollType::Programmatic when handling RequestedScrollPosition changes as necessary.

        Programmatic scrolls need to get to the scrolling tree in the UI process so that we update
        the tree's notion of scroll position, and trigger actual UIScrollView scrolls (layers may have
        already been put in the right locations, but the UI process needs to know that a scroll happened).
        However, we need to prevent notifications from programmatic scrolls getting back to the
        web process, because this causes jumpiness. This is done via an early return in
        RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll().

        Tests: scrollingcoordinator/ios/programmatic-overflow-scroll.html
               scrollingcoordinator/ios/programmatic-page-scroll.html

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::isHandlingProgrammaticScroll): Deleted.
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::isHandlingProgrammaticScroll const):
        (WebCore::ScrollingTree::setIsHandlingProgrammaticScroll):
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::scrollBy):
        (WebCore::ScrollingTreeScrollingNode::scrollTo):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollToOffset):
        (WebCore::RenderLayer::scrollingNodeID const):
        * rendering/RenderLayer.h:
        * rendering/RenderMarquee.cpp:
        (WebCore::RenderMarquee::timerFired):

2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, speculative fix for build failure
        https://bugs.webkit.org/show_bug.cgi?id=196475

        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:

2019-04-04  Ryosuke Niwa  <rniwa@webkit.org>

        Element::isFocusable() debug asserts too frequently
        https://bugs.webkit.org/show_bug.cgi?id=196634

        Reviewed by Geoffrey Garen.

        Remove the debug assertion for now.

        * dom/Element.cpp:
        (WebCore::Element::isFocusable const):

2019-04-04  Simon Fraser  <simon.fraser@apple.com>

        Have ScrollableArea store a ScrollType for the current scroll
        https://bugs.webkit.org/show_bug.cgi?id=196627

        Reviewed by Zalan Bujtas.

        RenderLayer had isInUserScroll() which is the opposite of ScrollableArea::inProgrammaticScroll(),
        so just have ScrollableArea store a ScrollType.

        RenderLayer's scrolling bottleneck, scrollToOffset(), now takes a ScrollType, and pushes
        it onto the base class.

        AsyncScrollingCoordinator::requestScrollPositionUpdate() can use the incoming scrollType (currently
        incorrect for iOS WK2 overflow) rather than deducing a user scroll from ScrollingLayerPositionAction.

        No behavior change.

        * page/FrameView.cpp:
        (WebCore::FrameView::setFrameRect):
        (WebCore::FrameView::topContentInsetDidChange):
        (WebCore::FrameView::updateLayoutViewport):
        (WebCore::FrameView::setScrollPosition):
        (WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling const):
        (WebCore::FrameView::setWasScrolledByUser):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::LayoutScope::LayoutScope):
        (WebCore::LayoutScope::~LayoutScope):
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::overflowScrollPositionChangedForNode):
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        * platform/ScrollView.cpp:
        (WebCore::ScrollView::setScrollPosition):
        * platform/ScrollableArea.cpp:
        (WebCore::ScrollableArea::ScrollableArea):
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::currentScrollType const):
        (WebCore::ScrollableArea::setCurrentScrollType):
        (WebCore::ScrollableArea::setIsUserScroll): Deleted.
        (WebCore::ScrollableArea::inProgrammaticScroll const): Deleted.
        (WebCore::ScrollableArea::setInProgrammaticScroll): Deleted.
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::scrollToXPosition):
        (WebCore::RenderLayer::scrollToYPosition):
        (WebCore::RenderLayer::scrollToOffset):
        (WebCore::RenderLayer::scrollTo):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateScrollOffset):
        * rendering/RenderMarquee.cpp:
        (WebCore::RenderMarquee::start):

2019-04-04  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r243868.

        Causing timeouts failures on several queues

        Reverted changeset:

        "[Web Animations] JS wrapper may be deleted while animation is
        yet to dispatch its finish event"
        https://bugs.webkit.org/show_bug.cgi?id=196118
        https://trac.webkit.org/changeset/243868

2019-04-04  Youenn Fablet  <youenn@apple.com>

        Pass storage quota parameters from UIProcess to NetworkProcess as part of WebsiteDataStore parameters
        https://bugs.webkit.org/show_bug.cgi?id=196543

        Reviewed by Alex Christensen.

        Add a default routine to compute a third party quota from a per origin quota.
        No change of behavior.

        * storage/StorageQuotaManager.h:
        (WebCore::StorageQuotaManager::defaultThirdPartyQuotaFromPerOriginQuota):
        (WebCore::StorageQuotaManager::defaultThirdPartyQuota):

2019-04-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243807 and r243824.
        https://bugs.webkit.org/show_bug.cgi?id=196611

        Test added is a flaky timeout on iOS Simulator, 3 tests
        unskipped are flaky failures (Requested by ShawnRoberts on
        #webkit).

        Reverted changesets:

        "Blob type cannot be stored correctly in IDB when
        IDBObjectStore has autoIncrement and keyPath options"
        https://bugs.webkit.org/show_bug.cgi?id=196128
        https://trac.webkit.org/changeset/243807

        "Follow up fix for r243807: Use MarkedArgumentBuffer instead
        of Vector for JSValue"
        https://bugs.webkit.org/show_bug.cgi?id=196547
        https://trac.webkit.org/changeset/243824

2019-04-04  Simon Fraser  <simon.fraser@apple.com>

        Fix rare crash under collectRelatedCoordinatedScrollingNodes()
        https://bugs.webkit.org/show_bug.cgi?id=196610
        rdar://problem/49595426

        Reviewed by Zalan Bujtas.

        hasCompositedScrollableOverflow() doesn't check whether a layer is composited (it has
        to report the right status before layers have been created), so collectRelatedCoordinatedScrollingNodes()
        needs to check whether there's backing.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::collectRelatedCoordinatedScrollingNodes):

2019-04-04  Simon Fraser  <simon.fraser@apple.com>

        Move "inProgrammaticScroll" down to ScrollableArea
        https://bugs.webkit.org/show_bug.cgi?id=196614

        Reviewed by Zalan Bujtas.

        A future patch will need to update "inProgrammaticScroll" on RenderLayers, so push
        inProgrammaticScroll() down to ScrollableArea.

        ScrollableArea already has "isScrolledProgrammatically", which I rename to "scrollShouldClearLatchedState"
        to reduce confusion. It might be possible to remove this in future with some refactoring.

        Sadly we can no longer use SetForScope<> in FrameView after this change so add some manual save/restore code.

        * dom/Element.cpp:
        (WebCore::Element::setScrollLeft):
        (WebCore::Element::setScrollTop):
        * page/EventHandler.cpp:
        (WebCore::EventHandler::completeWidgetWheelEvent):
        (WebCore::EventHandler::handleWheelEvent):
        * page/FrameView.cpp:
        (WebCore::FrameView::setFrameRect):
        (WebCore::FrameView::topContentInsetDidChange):
        (WebCore::FrameView::updateLayoutViewport):
        (WebCore::FrameView::setScrollPosition):
        (WebCore::FrameView::setWasScrolledByUser):
        * page/FrameView.h:
        * platform/ScrollView.h:
        (WebCore::ScrollView::inProgrammaticScroll const): Deleted.
        * platform/ScrollableArea.cpp:
        (WebCore::ScrollableArea::ScrollableArea):
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::inProgrammaticScroll const):
        (WebCore::ScrollableArea::setInProgrammaticScroll):
        (WebCore::ScrollableArea::scrollShouldClearLatchedState const):
        (WebCore::ScrollableArea::setScrollShouldClearLatchedState):
        (WebCore::ScrollableArea::isScrolledProgrammatically const): Deleted.
        (WebCore::ScrollableArea::setScrolledProgrammatically): Deleted.

2019-04-04  Sihui Liu  <sihui_liu@apple.com>

        Leak of UniqueIDBDatabase in network process running layout tests
        https://bugs.webkit.org/show_bug.cgi?id=196565
        <rdar://problem/49346139>

        Reviewed by Geoffrey Garen.

        UniqueIDBDatabase will null itself after it receives confirmation about connecton close from its clients, but it
        is possible that the web process to network process connection closes before servers gets the 
        confirmDidCloseFromServer. Therefore, we should let UniqueIDBDatabase forget connection when it receives a 
        conenctionClosedFromClient.

        No new test because this bug is caused by race between network receiving conenctionClosedFromClient and 
        receiving confirmDidCloseFromServer. This is testable by running some existing layout tests in a row with leak 
        option.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient):
        (WebCore::IDBServer::UniqueIDBDatabase::confirmDidCloseFromServer):

2019-04-04  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        * platform/gamepad/cocoa/GameControllerGamepad.mm:
        (WebCore::GameControllerGamepad::GameControllerGamepad):

2019-04-04  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Host should be able to mute screen capture and camera/microphone independently
        https://bugs.webkit.org/show_bug.cgi?id=196555
        <rdar://problem/47303865>

        Reviewed by Youenn Fablet.

        Test: fast/mediastream/media-stream-page-muted.html

        * Modules/mediastream/MediaStream.cpp:
        (WebCore::MediaStream::MediaStream): Call setCaptureTracksMuted to pass page muted 
        state to tracks.
        (WebCore::MediaStream::startProducingData): Ditto.
        (WebCore::MediaStream::setCaptureTracksMuted): New.
        * Modules/mediastream/MediaStream.h:

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::MediaStreamTrack): Call setMuted with page muted state.
        (WebCore::MediaStreamTrack::setMuted): Set muted according to page state and source type.
        (WebCore::MediaStreamTrack::pageMutedStateDidChange): Call setMuted.
        (WebCore::MediaStreamTrack::mediaState const): Update for new page state.
        * Modules/mediastream/MediaStreamTrack.h:

        * page/MediaProducer.h: Split capture muted state into two: camera/microphone and screen.

        * page/Page.h:
        (WebCore::Page::isMediaCaptureMuted const): Update for state changes.

        * platform/mediastream/MediaStreamPrivate.cpp:
        (WebCore::MediaStreamPrivate::setCaptureTracksMuted): Deleted.
        (WebCore::MediaStreamPrivate::hasCaptureVideoSource const): Deleted.
        * platform/mediastream/MediaStreamPrivate.h:

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::setMuted): Log state.
        (WebCore::RealtimeMediaSource::notifyMutedChange): Call notifyMutedObservers on the
        next runloop so events aren't dispatched synchronously.

        * testing/Internals.cpp:
        (WebCore::Internals::setPageMuted): Add new state.

2019-04-04  Chris Dumez  <cdumez@apple.com>

        Unreviewed, update r243884 to use macros in Compiler.h instead.

        * platform/ios/LegacyTileGrid.mm:
        (WebCore::LegacyTileGrid::dropDistantTiles):

2019-04-04  Chris Fleizach  <cfleizach@apple.com>

        AX: Crash under WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored()
        https://bugs.webkit.org/show_bug.cgi?id=196600
        <rdar://problem/49572996>

        Reviewed by Joanmarie Diggs.

        Audit AX code to not dereference renderer before checking if it's null.
        Not clear how to reproduce at this time.

        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::webAreaIsPresentational):
        (WebCore::AccessibilityRenderObject::layoutCount const):
        (WebCore::AccessibilityRenderObject::widget const):

2019-04-04  Antti Koivisto  <antti@apple.com>

        Compute accurate regions for touch-action
        https://bugs.webkit.org/show_bug.cgi?id=196536
        <rdar://problem/49516022>

        Reviewed by Simon Fraser.

        Tests: pointerevents/ios/touch-action-region-basic.html
               pointerevents/ios/touch-action-region-layers.html
               pointerevents/ios/touch-action-region-pan-x-y.html

        - Use style system to compute effective touch-action without additional tree walks.
        - Compute touch-action region in a fake paint, at the same time with the event region.

        This patch doesn't yet use the computed region for anything except test output.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/StyleResolver.cpp:
        (WebCore::computeEffectiveTouchActions):
        (WebCore::StyleResolver::adjustRenderStyle):

        Update RenderStyle::effectiveTouchAction.

        * dom/Element.cpp:
        (WebCore::Element::computedTouchActions const):

        Just get it from the style.

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setEventRegion):
        (WebCore::GraphicsLayer::setTouchActionRegion):
        (WebCore::GraphicsLayer::dumpProperties const):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::touchActionRegion const):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setTouchActionRegion):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * rendering/PaintInfo.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::collectEventRegionForFragments):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):

        Need to do this for the top compositing layer too.

        (WebCore::RenderLayerBacking::updateEventRegion):

        Compute touch-action region too.
        As a basic optimization avoid doing any extra work if there are no elements with non-default touch-action property.

        * rendering/TouchActionRegion.cpp: Added.
        (WebCore::toIndex):
        (WebCore::toTouchAction):
        (WebCore::toString):
        (WebCore::TouchActionRegion::unite):
        (WebCore::TouchActionRegion::actionsForPoint const):
        (WebCore::TouchActionRegion::translate):
        (WebCore::operator<<):
        * rendering/TouchActionRegion.h: Added.

        Class for collecting and maintaining touch-action region.

        (WebCore::TouchActionRegion::isEmpty const):
        (WebCore::TouchActionRegion::operator== const):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::effectiveTouchActions const):
        (WebCore::RenderStyle::setEffectiveTouchActions):

        Implement as inherited property for efficiency (touch-action itself is non-inherited).

        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:

2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix linking error because the build of RTCIceTransport.cpp is handled in Xcode project side accidentally
        https://bugs.webkit.org/show_bug.cgi?id=196475

        We did not have RTCIceTransport.cpp in Sources.txt.

        * WebCore.xcodeproj/project.pbxproj:

2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
        https://bugs.webkit.org/show_bug.cgi?id=196475

        Reviewed by Saam Barati.

        This patch puts most of derived classes of ScriptWrappable into IsoHeap. We do not include derived classes of Event simply
        because Internal repository code also inherits it. After watching the result of this patch, we will try Event and its derived
        classes into IsoHeap too.

        This patch makes the following things IsoHeap-allocated. These classes are listed by using lldb python script.

            1. DOM collections (HTMLCollection etc.)
            2. WebAudio nodes
            3. IDB classes
            4. FileSystem API classes
            5. Canvas contexts
            6. WebRTC classses
            7. XMLHttpRequest related classes
            8. WebSocket related classes
            9. Worker and Worklet related classes
            10. Other misc classes

        * Modules/applepay/ApplePaySession.cpp:
        * Modules/applepay/ApplePaySession.h:
        * Modules/encryptedmedia/MediaKeySession.cpp:
        * Modules/encryptedmedia/MediaKeySession.h:
        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
        * Modules/entriesapi/DOMFileSystem.cpp:
        * Modules/entriesapi/DOMFileSystem.h:
        (WebCore::DOMFileSystem::createEntryForFile): Deleted.
        (WebCore::DOMFileSystem::name const): Deleted.
        * Modules/entriesapi/FileSystemDirectoryEntry.h:
        * Modules/entriesapi/FileSystemDirectoryReader.cpp:
        * Modules/entriesapi/FileSystemDirectoryReader.h:
        * Modules/entriesapi/FileSystemEntry.cpp:
        * Modules/entriesapi/FileSystemEntry.h:
        * Modules/entriesapi/FileSystemFileEntry.h:
        * Modules/geolocation/Geolocation.cpp:
        * Modules/geolocation/Geolocation.h:
        (WebCore::Geolocation::document const): Deleted.
        (WebCore::Geolocation::frame const): Deleted.
        (WebCore::Geolocation::resetIsAllowed): Deleted.
        (WebCore::Geolocation::isAllowed const): Deleted.
        (WebCore::Geolocation::isDenied const): Deleted.
        (WebCore::Geolocation::hasListeners const): Deleted.
        * Modules/indexeddb/IDBCursor.cpp:
        * Modules/indexeddb/IDBCursor.h:
        * Modules/indexeddb/IDBCursorWithValue.cpp:
        * Modules/indexeddb/IDBCursorWithValue.h:
        * Modules/indexeddb/IDBDatabase.cpp:
        * Modules/indexeddb/IDBDatabase.h:
        (WebCore::IDBDatabase::info const): Deleted.
        (WebCore::IDBDatabase::databaseConnectionIdentifier const): Deleted.
        (WebCore::IDBDatabase::connectionProxy): Deleted.
        (WebCore::IDBDatabase::isClosingOrClosed const): Deleted.
        * Modules/indexeddb/IDBKeyRange.cpp:
        * Modules/indexeddb/IDBKeyRange.h:
        (WebCore::IDBKeyRange::lower const): Deleted.
        (WebCore::IDBKeyRange::upper const): Deleted.
        (WebCore::IDBKeyRange::lowerOpen const): Deleted.
        (WebCore::IDBKeyRange::upperOpen const): Deleted.
        * Modules/indexeddb/IDBOpenDBRequest.cpp:
        * Modules/indexeddb/IDBOpenDBRequest.h:
        * Modules/indexeddb/IDBRequest.cpp:
        * Modules/indexeddb/IDBRequest.h:
        * Modules/indexeddb/IDBTransaction.cpp:
        * Modules/indexeddb/IDBTransaction.h:
        (WebCore::IDBTransaction::mode const): Deleted.
        (WebCore::IDBTransaction::info const): Deleted.
        (WebCore::IDBTransaction::database): Deleted.
        (WebCore::IDBTransaction::database const): Deleted.
        (WebCore::IDBTransaction::originalDatabaseInfo const): Deleted.
        (WebCore::IDBTransaction::isVersionChange const): Deleted.
        (WebCore::IDBTransaction::isReadOnly const): Deleted.
        (WebCore::IDBTransaction::isFinished const): Deleted.
        * Modules/mediarecorder/MediaRecorder.cpp:
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediasession/MediaRemoteControls.cpp:
        * Modules/mediasession/MediaRemoteControls.h:
        (WebCore::MediaRemoteControls::create): Deleted.
        (WebCore::MediaRemoteControls::previousTrackEnabled const): Deleted.
        (WebCore::MediaRemoteControls::nextTrackEnabled const): Deleted.
        * Modules/mediasource/MediaSource.cpp:
        * Modules/mediasource/MediaSource.h:
        * Modules/mediasource/SourceBuffer.cpp:
        * Modules/mediasource/SourceBuffer.h:
        * Modules/mediasource/SourceBufferList.cpp:
        * Modules/mediasource/SourceBufferList.h:
        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
        * Modules/mediastream/MediaDeviceInfo.cpp:
        * Modules/mediastream/MediaDeviceInfo.h:
        (WebCore::MediaDeviceInfo::label const): Deleted.
        (WebCore::MediaDeviceInfo::deviceId const): Deleted.
        (WebCore::MediaDeviceInfo::groupId const): Deleted.
        (WebCore::MediaDeviceInfo::kind const): Deleted.
        * Modules/mediastream/MediaDevices.cpp:
        * Modules/mediastream/MediaDevices.h:
        * Modules/mediastream/MediaStream.cpp:
        * Modules/mediastream/MediaStream.h:
        * Modules/mediastream/MediaStreamTrack.cpp:
        * Modules/mediastream/MediaStreamTrack.h:
        * Modules/mediastream/RTCDTMFSender.cpp:
        * Modules/mediastream/RTCDTMFSender.h:
        * Modules/mediastream/RTCDataChannel.cpp:
        * Modules/mediastream/RTCDataChannel.h:
        * Modules/mediastream/RTCIceCandidate.cpp:
        * Modules/mediastream/RTCIceCandidate.h:
        (WebCore::RTCIceCandidate::candidate const): Deleted.
        (WebCore::RTCIceCandidate::sdpMid const): Deleted.
        (WebCore::RTCIceCandidate::sdpMLineIndex const): Deleted.
        (WebCore::RTCIceCandidate::setCandidate): Deleted.
        * Modules/mediastream/RTCIceTransport.cpp:
        * Modules/mediastream/RTCIceTransport.h:
        (WebCore::RTCIceTransport::create): Deleted.
        (WebCore::RTCIceTransport::state const): Deleted.
        (WebCore::RTCIceTransport::setState): Deleted.
        (WebCore::RTCIceTransport::gatheringState const): Deleted.
        (WebCore::RTCIceTransport::setGatheringState): Deleted.
        (WebCore::RTCIceTransport::RTCIceTransport): Deleted.
        * Modules/mediastream/RTCPeerConnection.cpp:
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/RTCRtpReceiver.cpp:
        * Modules/mediastream/RTCRtpReceiver.h:
        (WebCore::RTCRtpReceiver::create): Deleted.
        (WebCore::RTCRtpReceiver::setBackend): Deleted.
        (WebCore::RTCRtpReceiver::getParameters): Deleted.
        (WebCore::RTCRtpReceiver::getContributingSources const): Deleted.
        (WebCore::RTCRtpReceiver::getSynchronizationSources const): Deleted.
        (WebCore::RTCRtpReceiver::track): Deleted.
        (WebCore::RTCRtpReceiver::backend): Deleted.
        * Modules/mediastream/RTCRtpSender.cpp:
        * Modules/mediastream/RTCRtpSender.h:
        (WebCore::RTCRtpSender::track): Deleted.
        (WebCore::RTCRtpSender::trackId const): Deleted.
        (WebCore::RTCRtpSender::trackKind const): Deleted.
        (WebCore::RTCRtpSender::mediaStreamIds const): Deleted.
        (WebCore::RTCRtpSender::setMediaStreamIds): Deleted.
        (WebCore::RTCRtpSender::isStopped const): Deleted.
        (WebCore::RTCRtpSender::backend): Deleted.
        * Modules/mediastream/RTCRtpTransceiver.cpp:
        * Modules/mediastream/RTCRtpTransceiver.h:
        (WebCore::RTCRtpTransceiver::create): Deleted.
        (WebCore::RTCRtpTransceiver::sender): Deleted.
        (WebCore::RTCRtpTransceiver::receiver): Deleted.
        (WebCore::RTCRtpTransceiver::iceTransport): Deleted.
        (WebCore::RTCRtpTransceiver::backend): Deleted.
        * Modules/mediastream/RTCSessionDescription.cpp:
        * Modules/mediastream/RTCSessionDescription.h:
        (WebCore::RTCSessionDescription::type const): Deleted.
        (WebCore::RTCSessionDescription::sdp const): Deleted.
        (WebCore::RTCSessionDescription::setSdp): Deleted.
        * Modules/notifications/Notification.cpp:
        * Modules/notifications/Notification.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        * Modules/paymentrequest/PaymentRequest.h:
        * Modules/paymentrequest/PaymentResponse.cpp:
        * Modules/paymentrequest/PaymentResponse.h:
        * Modules/speech/SpeechSynthesisUtterance.cpp:
        * Modules/speech/SpeechSynthesisUtterance.h:
        * Modules/webaudio/AnalyserNode.cpp:
        * Modules/webaudio/AnalyserNode.h:
        * Modules/webaudio/AudioBasicInspectorNode.cpp:
        * Modules/webaudio/AudioBasicInspectorNode.h:
        * Modules/webaudio/AudioBasicProcessorNode.cpp:
        * Modules/webaudio/AudioBasicProcessorNode.h:
        * Modules/webaudio/AudioBufferSourceNode.cpp:
        * Modules/webaudio/AudioBufferSourceNode.h:
        * Modules/webaudio/AudioContext.cpp:
        * Modules/webaudio/AudioContext.h:
        * Modules/webaudio/AudioDestinationNode.cpp:
        * Modules/webaudio/AudioDestinationNode.h:
        * Modules/webaudio/AudioNode.cpp:
        * Modules/webaudio/AudioNode.h:
        * Modules/webaudio/AudioScheduledSourceNode.cpp:
        * Modules/webaudio/AudioScheduledSourceNode.h:
        * Modules/webaudio/BiquadFilterNode.cpp:
        * Modules/webaudio/BiquadFilterNode.h:
        * Modules/webaudio/ChannelMergerNode.cpp:
        * Modules/webaudio/ChannelMergerNode.h:
        * Modules/webaudio/ChannelSplitterNode.cpp:
        * Modules/webaudio/ChannelSplitterNode.h:
        * Modules/webaudio/ConvolverNode.cpp:
        * Modules/webaudio/ConvolverNode.h:
        * Modules/webaudio/DefaultAudioDestinationNode.cpp:
        * Modules/webaudio/DefaultAudioDestinationNode.h:
        * Modules/webaudio/DelayNode.cpp:
        * Modules/webaudio/DelayNode.h:
        * Modules/webaudio/DynamicsCompressorNode.cpp:
        * Modules/webaudio/DynamicsCompressorNode.h:
        * Modules/webaudio/GainNode.cpp:
        * Modules/webaudio/GainNode.h:
        * Modules/webaudio/MediaElementAudioSourceNode.cpp:
        * Modules/webaudio/MediaElementAudioSourceNode.h:
        * Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
        * Modules/webaudio/MediaStreamAudioDestinationNode.h:
        * Modules/webaudio/MediaStreamAudioSourceNode.cpp:
        * Modules/webaudio/MediaStreamAudioSourceNode.h:
        * Modules/webaudio/OfflineAudioContext.cpp:
        * Modules/webaudio/OfflineAudioContext.h:
        * Modules/webaudio/OfflineAudioDestinationNode.cpp:
        * Modules/webaudio/OfflineAudioDestinationNode.h:
        * Modules/webaudio/OscillatorNode.cpp:
        * Modules/webaudio/OscillatorNode.h:
        * Modules/webaudio/PannerNode.cpp:
        * Modules/webaudio/PannerNode.h:
        * Modules/webaudio/ScriptProcessorNode.cpp:
        * Modules/webaudio/ScriptProcessorNode.h:
        * Modules/webaudio/WaveShaperNode.cpp:
        * Modules/webaudio/WaveShaperNode.h:
        * Modules/webgpu/GPUCanvasContext.cpp:
        * Modules/webgpu/GPUCanvasContext.h:
        * Modules/websockets/WebSocket.cpp:
        * Modules/websockets/WebSocket.h:
        * Modules/webvr/VRDisplay.cpp:
        * Modules/webvr/VRDisplay.h:
        (WebCore::VRDisplay::isPresenting const): Deleted.
        (WebCore::VRDisplay::displayName const): Deleted.
        (WebCore::VRDisplay::displayId const): Deleted.
        (WebCore::VRDisplay::depthNear const): Deleted.
        (WebCore::VRDisplay::setDepthNear): Deleted.
        (WebCore::VRDisplay::depthFar const): Deleted.
        (WebCore::VRDisplay::setDepthFar): Deleted.
        (WebCore::VRDisplay::document): Deleted.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * animation/CSSAnimation.cpp:
        * animation/CSSAnimation.h:
        * animation/CSSTransition.cpp:
        * animation/CSSTransition.h:
        * animation/DeclarativeAnimation.cpp:
        * animation/DeclarativeAnimation.h:
        * animation/WebAnimation.cpp:
        * animation/WebAnimation.h:
        * bindings/js/ScriptWrappable.h:
        * css/CSSComputedStyleDeclaration.cpp:
        * css/CSSComputedStyleDeclaration.h:
        * css/CSSStyleDeclaration.cpp:
        (): Deleted.
        * css/CSSStyleDeclaration.h:
        * css/DOMMatrix.h:
        * css/DOMMatrixReadOnly.cpp:
        * css/DOMMatrixReadOnly.h:
        * css/FontFaceSet.cpp:
        * css/FontFaceSet.h:
        * css/PropertySetCSSStyleDeclaration.cpp:
        * css/PropertySetCSSStyleDeclaration.h:
        * css/WebKitCSSMatrix.cpp:
        * css/WebKitCSSMatrix.h:
        * css/typedom/TypedOMCSSImageValue.cpp: Added.
        * css/typedom/TypedOMCSSImageValue.h:
        * css/typedom/TypedOMCSSNumericValue.cpp: Added.
        * css/typedom/TypedOMCSSNumericValue.h:
        * css/typedom/TypedOMCSSStyleValue.cpp: Added.
        * css/typedom/TypedOMCSSStyleValue.h:
        * css/typedom/TypedOMCSSUnitValue.cpp: Added.
        * css/typedom/TypedOMCSSUnitValue.h:
        * css/typedom/TypedOMCSSUnparsedValue.cpp: Added.
        * css/typedom/TypedOMCSSUnparsedValue.h:
        * dom/AbortController.cpp:
        * dom/AbortController.h:
        * dom/AbortSignal.cpp:
        * dom/AbortSignal.h:
        * dom/AllDescendantsCollection.cpp: Copied from Source/WebCore/xml/XMLHttpRequestEventTarget.h.
        * dom/AllDescendantsCollection.h:
        * dom/ChildNodeList.cpp:
        * dom/ChildNodeList.h:
        * dom/ClassCollection.cpp:
        * dom/ClassCollection.h:
        * dom/DOMImplementation.cpp:
        * dom/DOMImplementation.h:
        (WebCore::DOMImplementation::ref): Deleted.
        (WebCore::DOMImplementation::deref): Deleted.
        (WebCore::DOMImplementation::document): Deleted.
        (WebCore::DOMImplementation::hasFeature): Deleted.
        * dom/DOMPoint.h:
        * dom/DOMPointReadOnly.cpp:
        * dom/DOMPointReadOnly.h:
        * dom/DOMQuad.cpp:
        * dom/DOMQuad.h:
        * dom/DOMRect.h:
        * dom/DOMRectReadOnly.cpp: Copied from Source/WebCore/dom/DOMPointReadOnly.cpp.
        * dom/DOMRectReadOnly.h:
        * dom/DataTransferItemList.cpp:
        * dom/DataTransferItemList.h:
        (WebCore::DataTransferItemList::ref): Deleted.
        (WebCore::DataTransferItemList::deref): Deleted.
        (WebCore::DataTransferItemList::dataTransfer): Deleted.
        (WebCore::DataTransferItemList::hasItems const): Deleted.
        (WebCore::DataTransferItemList::items const): Deleted.
        * dom/DatasetDOMStringMap.cpp:
        * dom/DatasetDOMStringMap.h:
        * dom/DocumentParser.h:
        * dom/EventTarget.cpp:
        * dom/EventTarget.h:
        * dom/LiveNodeList.cpp:
        * dom/LiveNodeList.h:
        * dom/MessageChannel.cpp:
        * dom/MessagePort.cpp:
        * dom/MessagePort.h:
        * dom/NameNodeList.cpp:
        * dom/NameNodeList.h:
        * dom/NamedNodeMap.cpp:
        * dom/NamedNodeMap.h:
        (WebCore::NamedNodeMap::NamedNodeMap): Deleted.
        (WebCore::NamedNodeMap::element): Deleted.
        * dom/NodeIterator.cpp:
        * dom/NodeIterator.h:
        (WebCore::NodeIterator::detach): Deleted.
        (WebCore::NodeIterator::referenceNode const): Deleted.
        (WebCore::NodeIterator::pointerBeforeReferenceNode const): Deleted.
        * dom/NodeList.cpp: Copied from Source/WebCore/xml/XMLHttpRequestEventTarget.h.
        * dom/NodeList.h:
        * dom/NodeRareData.cpp:
        * dom/ScriptExecutionContext.cpp:
        * dom/SimulatedClick.cpp:
        * dom/StaticNodeList.cpp:
        * dom/StaticNodeList.h:
        * dom/TagCollection.cpp:
        * dom/TagCollection.h:
        * dom/TreeWalker.cpp:
        * dom/TreeWalker.h:
        (WebCore::TreeWalker::create): Deleted.
        (WebCore::TreeWalker::currentNode): Deleted.
        (WebCore::TreeWalker::currentNode const): Deleted.
        * fileapi/Blob.cpp:
        * fileapi/Blob.h:
        * fileapi/File.cpp:
        * fileapi/File.h:
        * fileapi/FileList.cpp:
        * fileapi/FileList.h:
        (WebCore::FileList::create): Deleted.
        (WebCore::FileList::length const): Deleted.
        (WebCore::FileList::isEmpty const): Deleted.
        (WebCore::FileList::files const): Deleted.
        (WebCore::FileList::file const): Deleted.
        (WebCore::FileList::FileList): Deleted.
        (WebCore::FileList::append): Deleted.
        (WebCore::FileList::clear): Deleted.
        * fileapi/FileReader.cpp:
        * fileapi/FileReader.h:
        * html/CachedHTMLCollection.h:
        * html/GenericCachedHTMLCollection.cpp:
        * html/GenericCachedHTMLCollection.h:
        * html/HTMLAllCollection.cpp:
        * html/HTMLAllCollection.h:
        * html/HTMLCollection.cpp:
        * html/HTMLCollection.h:
        * html/HTMLFormControlsCollection.cpp:
        * html/HTMLFormControlsCollection.h:
        * html/HTMLNameCollection.cpp:
        * html/HTMLNameCollection.h:
        * html/HTMLOptionsCollection.cpp:
        * html/HTMLOptionsCollection.h:
        * html/HTMLTableRowsCollection.cpp:
        * html/HTMLTableRowsCollection.h:
        * html/ImageBitmap.cpp:
        * html/ImageBitmap.h:
        (WebCore::ImageBitmap::isDetached const): Deleted.
        (WebCore::ImageBitmap::buffer): Deleted.
        (WebCore::ImageBitmap::originClean const): Deleted.
        * html/LabelsNodeList.cpp:
        * html/LabelsNodeList.h:
        * html/MediaController.cpp:
        * html/MediaController.h:
        * html/OffscreenCanvas.cpp:
        * html/OffscreenCanvas.h:
        * html/RadioNodeList.cpp:
        * html/RadioNodeList.h:
        * html/canvas/CanvasRenderingContext.cpp:
        * html/canvas/CanvasRenderingContext.h:
        * html/canvas/CanvasRenderingContext2D.cpp:
        * html/canvas/CanvasRenderingContext2D.h:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        * html/canvas/CanvasRenderingContext2DBase.h:
        * html/canvas/GPUBasedCanvasRenderingContext.h:
        * html/canvas/ImageBitmapRenderingContext.cpp:
        * html/canvas/ImageBitmapRenderingContext.h:
        * html/canvas/OffscreenCanvasRenderingContext2D.cpp:
        * html/canvas/OffscreenCanvasRenderingContext2D.h:
        * html/canvas/PaintRenderingContext2D.cpp:
        * html/canvas/PaintRenderingContext2D.h:
        * html/canvas/PlaceholderRenderingContext.cpp:
        * html/canvas/PlaceholderRenderingContext.h:
        * html/canvas/WebGL2RenderingContext.cpp:
        * html/canvas/WebGL2RenderingContext.h:
        * html/canvas/WebGLRenderingContext.cpp:
        * html/canvas/WebGLRenderingContext.h:
        * html/canvas/WebGLRenderingContextBase.cpp:
        * html/canvas/WebGLRenderingContextBase.h:
        * html/track/AudioTrackList.h:
        * html/track/DataCue.cpp:
        * html/track/DataCue.h:
        * html/track/InbandDataTextTrack.cpp:
        * html/track/InbandDataTextTrack.h:
        * html/track/InbandGenericTextTrack.cpp:
        * html/track/InbandGenericTextTrack.h:
        * html/track/InbandTextTrack.cpp:
        * html/track/InbandTextTrack.h:
        * html/track/InbandWebVTTTextTrack.cpp:
        * html/track/InbandWebVTTTextTrack.h:
        * html/track/LoadableTextTrack.cpp:
        * html/track/LoadableTextTrack.h:
        * html/track/TextTrack.cpp:
        * html/track/TextTrack.h:
        * html/track/TextTrackCue.cpp:
        * html/track/TextTrackCue.h:
        * html/track/TextTrackCueGeneric.cpp:
        * html/track/TextTrackCueGeneric.h:
        * html/track/TextTrackList.cpp:
        * html/track/TextTrackList.h:
        * html/track/TrackListBase.cpp:
        * html/track/TrackListBase.h:
        * html/track/VTTCue.cpp:
        * html/track/VTTCue.h:
        * html/track/VideoTrackList.h:
        * loader/appcache/DOMApplicationCache.cpp:
        * loader/appcache/DOMApplicationCache.h:
        * page/AbstractDOMWindow.cpp:
        * page/AbstractDOMWindow.h:
        * page/BarProp.cpp:
        * page/BarProp.h:
        (WebCore::BarProp::create): Deleted.
        * page/DOMWindow.cpp:
        * page/DOMWindow.h:
        * page/EventSource.cpp:
        * page/EventSource.h:
        * page/History.cpp:
        * page/History.h:
        * page/Location.cpp:
        * page/Location.h:
        (WebCore::Location::create): Deleted.
        (WebCore::Location::toString const): Deleted.
        * page/Navigator.cpp:
        * page/Navigator.h:
        * page/Performance.cpp:
        * page/Performance.h:
        * page/RemoteDOMWindow.cpp:
        * page/RemoteDOMWindow.h:
        * page/Screen.cpp:
        * page/Screen.h:
        * page/VisualViewport.cpp:
        * page/VisualViewport.h:
        * plugins/DOMMimeTypeArray.cpp:
        * plugins/DOMMimeTypeArray.h:
        (WebCore::DOMMimeTypeArray::create): Deleted.
        * plugins/DOMPlugin.cpp:
        * plugins/DOMPlugin.h:
        (WebCore::DOMPlugin::create): Deleted.
        * plugins/DOMPluginArray.cpp:
        * plugins/DOMPluginArray.h:
        (WebCore::DOMPluginArray::create): Deleted.
        * storage/Storage.cpp:
        * storage/Storage.h:
        (WebCore::Storage::area const): Deleted.
        * workers/AbstractWorker.cpp:
        * workers/AbstractWorker.h:
        * workers/DedicatedWorkerGlobalScope.cpp:
        * workers/DedicatedWorkerGlobalScope.h:
        * workers/Worker.cpp:
        * workers/Worker.h:
        * workers/WorkerGlobalScope.cpp:
        * workers/WorkerGlobalScope.h:
        * workers/service/ServiceWorker.cpp:
        * workers/service/ServiceWorker.h:
        * workers/service/ServiceWorkerContainer.cpp:
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerGlobalScope.cpp:
        * workers/service/ServiceWorkerGlobalScope.h:
        * workers/service/ServiceWorkerRegistration.cpp:
        * workers/service/ServiceWorkerRegistration.h:
        * worklets/PaintWorkletGlobalScope.cpp:
        * worklets/PaintWorkletGlobalScope.h:
        * worklets/Worklet.cpp:
        * worklets/Worklet.h:
        * worklets/WorkletGlobalScope.cpp:
        * worklets/WorkletGlobalScope.h:
        * xml/XMLHttpRequest.cpp:
        * xml/XMLHttpRequest.h:
        * xml/XMLHttpRequestEventTarget.h:
        * xml/XMLHttpRequestUpload.cpp:
        * xml/XMLHttpRequestUpload.h:
        * xml/XPathParser.cpp:

2019-04-04  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        std::ptr_fun() is deprecated.

        * platform/ios/LegacyTileGrid.mm:
        (WebCore::LegacyTileGrid::dropDistantTiles):

2019-04-04  Antoine Quint  <graouts@apple.com>

        [Web Animations] JS wrapper may be deleted while animation is yet to dispatch its finish event
        https://bugs.webkit.org/show_bug.cgi?id=196118
        <rdar://problem/46614137>

        Reviewed by Ryosuke Niwa.

        Test: webanimations/js-wrapper-kept-alive.html

        We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::stop): Drive-by fix for the missing superclass method call.
        (WebCore::WebAnimation::hasPendingActivity const):
        * animation/WebAnimation.h:

2019-04-04  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Use a timer to request the creation of pending tiles
        https://bugs.webkit.org/show_bug.cgi?id=196594

        Reviewed by Žan Doberšek.

        Use a timer to request pending tile creation, as calls to notifyFlushRequired() are discarded
        while inside a layer flush.

        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
        (WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
        (WebCore::CoordinatedGraphicsLayer::requestPendingTileCreationTimerFired):
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Wrong index passed to AtkObject::children-changed::add signal in AXObjectCache::attachWrapper()
        https://bugs.webkit.org/show_bug.cgi?id=196538

        Reviewed by Michael Catanzaro.

        In most of the cases the parent is not found, probably because the child is not a direct descendant of the
        parent returned by parentObjectUnignored(). We need to handle the case of find() returning notFound.

        * accessibility/atk/AXObjectCacheAtk.cpp:
        (WebCore::AXObjectCache::attachWrapper): Use -1 as the index when find() returns notFound.

2019-04-03  Timothy Hatcher  <timothy@apple.com>

        Update AutoFill field icons to be SVG instead of PNG images.
        https://bugs.webkit.org/show_bug.cgi?id=196557
        rdar://problem/48292514

        Reviewed by Tim Horton.

        * css/html.css:
        (input::-webkit-credentials-auto-fill-button):
        (input::-webkit-contacts-auto-fill-button):
        (input::-webkit-credit-card-auto-fill-button):

2019-04-03  Simon Fraser  <simon.fraser@apple.com>

        Simplify some "programmaticScroll" code paths
        https://bugs.webkit.org/show_bug.cgi?id=196589

        Reviewed by Zalan Bujtas.

        AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll() just returned early if programmaticScroll
        was true, so instead, just never call it. This means we can remove the "programmaticScroll" argument from 
        scheduleUpdateScrollPositionAfterAsyncScroll(). Also change some callers to use the ScrollType enum
        instead of a bool.

        Now, ThreadedScrollingTree::scrollingTreeNodeDidScroll() just returns early. Programmatic scrolls
        update state on the main thread before updating the scrolling tree, so this makes sense.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
        (WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll):
        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScrollTimerFired):
        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        * page/scrolling/AsyncScrollingCoordinator.h:
        (WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate):
        (WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::matchesUpdateType const):
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::reconcileScrollingState):
        * page/scrolling/ThreadedScrollingTree.cpp:
        (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

2019-04-03  Youenn Fablet  <youenn@apple.com>

        Add logging and ASSERTs to investigate issue with VPModuleInitialize
        https://bugs.webkit.org/show_bug.cgi?id=196573

        Reviewed by Eric Carlson.

        Add some ASSERTs.
        No change of behavior.

        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):

2019-04-03  Simon Fraser  <simon.fraser@apple.com>

        Remove some redundant memebers from ScrollingStateFrameScrollingNode
        https://bugs.webkit.org/show_bug.cgi?id=196571

        Reviewed by Zalan Bujtas.

        m_requestedScrollPosition and m_requestedScrollPositionRepresentsProgrammaticScroll were
        duplicated on ScrollingStateFrameScrollingNode and ScrollingStateScrollingNode, so
        remove them from the derived class.

        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingStateFrameScrollingNode.h:

2019-04-03  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION (r220717): Assertion fires when animating an SVG rounded corner rect till it collapses
        https://bugs.webkit.org/show_bug.cgi?id=196518

        Reviewed by Simon Fraser.

        r220717 made RenderSVGRect clear its m_path in updateShapeFromElement().

        RenderSVGRect tries to optimize its layout and drawing if the rectangle
        is not rounded. So it uses the flag m_usePathFallback to know whether to
        use m_path or m_innerStrokeRect and m_outerStrokeRect. If the rectangle
        is rounded but its boundingSize is empty, m_path will be cleared,
        m_innerStrokeRect and m_outerStrokeRect will be recalculated but
        m_usePathFallback will not be reset to false. Therefore when calling 
        RenderSVGRect::isEmpty(), it will call RenderSVGShape::isEmpty() which
        will assert since m_path is null.

        Test: svg/animations/animate-rounded-corner-rect-zero-height.svg

        * rendering/svg/RenderSVGRect.cpp:
        (WebCore::RenderSVGRect::updateShapeFromElement):
        Reset m_usePathFallback to false once clearPath() is called.

2019-04-03  Ryosuke Niwa  <rniwa@webkit.org>

        Nullptr crash in InlineTextBox::selectionState via TextIndicator::createWithRange
        https://bugs.webkit.org/show_bug.cgi?id=196579

        Reviewed by Simon Fraser.

        Avoid crashing accessing the unengated optional's value in relese builds for now.

        Unfortunately, fixing the underlying cause of the selection states of RenderView & RenderObject
        getting out out of sync would require a significant re-architecturing of the whole selection
        repainting / state managing mechanism.

        * rendering/SelectionRangeData.h:
        (WebCore::SelectionRangeData::startPosition const):
        (WebCore::SelectionRangeData::endPosition const):

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        -apple-trailing-word is needed for browser detection
        https://bugs.webkit.org/show_bug.cgi?id=196575

        Unreviewed.

        This is an unreviewed partial revert of r243819. Turns out there are some websites
        which use this property to do browser detection. So, we need to continue to parse
        the property, but we don't need the property to do anything.

        Test: fast/text/trailing-word-detection.html

        * Configurations/FeatureDefines.xcconfig:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator TrailingWord const):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::trailingWord const):
        (WebCore::RenderStyle::setTrailingWord):
        (WebCore::RenderStyle::initialTrailingWord):
        * rendering/style/RenderStyleConstants.h:

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
        builds.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-03  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove SVG properties tear-off objects
        https://bugs.webkit.org/show_bug.cgi?id=191237

        Reviewed by Simon Fraser.

        This patch cleans the code from unused SVG sources and get rid off the
        remaining SVG properties tear-off objects. Here are more details:

        -- Remove the SVGAttributeAnimationController and move its code to the
           SVGAnimateElementBase. SVGAttributeAnimationController was introduced
           to allow animating the SVG properties whether they are backed by tear
           off objects or not. Since there will be no tear off objects anymore,
           one animation controller will be needed. But in this case, it will be
           better if we make SVGAnimateElementBase is the animation controller
           and make it manage the animator directly.

        -- Remove SVGAttributeRegistry, SVGAttributeOwnerProxy and the virtual
           function SVGElement::attributeOwnerProxy(). Remove also all the
           overriding functions attributeOwnerProxy() from all the SVGElements.

        -- Remove isKnownAttribute() from all the SVG header files except from 
           four classes: SVGURIReference, SVGFitToViewBox, SVGLangSpace
           and SVGExternalResourcesRequired.

        -- Remove all the SVG animated properties classifying functions from
           SVGElement. This is now handled by SVGPropertyRegistry.

        -- There is no need for the enum AnimatedPropertyType anymore. The SVG
           property accessor knows its type, knows how to access it and know what
           animator it should be created for it.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Element.cpp:
        (WebCore::Element::synchronizeAllAttributes const):
        (WebCore::Element::synchronizeAttribute const):
        (WebCore::Element::fastAttributeLookupAllowed const):
        These functions are surprisingly marked 'const'. They were calling 'const'
        functions in SVGElement and SVGElement was casting 'this' as non 'const'
        before calling the non 'const' functions through the non 'const' 'this'
        pointer. Change this by moving the casting to the Element functions.

        * rendering/svg/RenderSVGResourceGradient.cpp:
        (WebCore::RenderSVGResourceGradient::applyResource):
        * rendering/svg/RenderSVGResourcePattern.cpp:
        (WebCore::RenderSVGResourcePattern::applyResource):
        * svg/SVGAElement.h:
        * svg/SVGAltGlyphElement.h:
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::SVGAnimateElementBase):
        (WebCore::SVGAnimateElementBase::animator const):
        (WebCore::SVGAnimateElementBase::hasInvalidCSSAttributeType const):
        (WebCore::SVGAnimateElementBase::isDiscreteAnimator const):
        (WebCore::SVGAnimateElementBase::setTargetElement):
        (WebCore::SVGAnimateElementBase::setAttributeName):
        (WebCore::SVGAnimateElementBase::resetAnimation):
        (WebCore::SVGAnimateElementBase::calculateFromAndToValues):
        (WebCore::SVGAnimateElementBase::calculateFromAndByValues):
        (WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
        (WebCore::SVGAnimateElementBase::resetAnimatedType):
        (WebCore::SVGAnimateElementBase::calculateAnimatedValue):
        (WebCore::SVGAnimateElementBase::applyResultsToTarget):
        (WebCore::SVGAnimateElementBase::clearAnimatedType):
        (WebCore::SVGAnimateElementBase::calculateDistance):
        (WebCore::SVGAnimateElementBase::attributeAnimationController): Deleted.
        (WebCore::SVGAnimateElementBase::determineAnimatedPropertyType const): Deleted.
        (WebCore::SVGAnimateElementBase::isAdditive const): Deleted.
        * svg/SVGAnimateElementBase.h:
        (WebCore::SVGAnimateElementBase::animatorIfExists const):
        (WebCore::SVGAnimateElementBase::attributeAnimationControllerIfExists const): Deleted.
        The order of the functions was changed to resemble the order of running
        the animation:
          -- Setting the animation range
          -- Starting the animation
          -- Progressing the animation
          -- Applying the the progressed animaVal() to the target element
          -- Stopping the animation

        * svg/SVGAnimateMotionElement.cpp:
        (WebCore::SVGAnimateMotionElement::calculateDistance):
        * svg/SVGAnimateMotionElement.h:
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced):
        (WebCore::SVGAnimationElement::shouldApplyAnimation): Deleted.
        * svg/SVGAnimationElement.h:
        (WebCore::SVGAnimationElement::attributeRegistry): Deleted.
        (WebCore::SVGAnimationElement::calculateDistance): Deleted.
        * svg/SVGAttributeAnimationController.cpp: Removed.
        * svg/SVGAttributeAnimationController.h: Removed.
        * svg/SVGAttributeAnimationControllerBase.cpp: Removed.
        * svg/SVGAttributeAnimationControllerBase.h: Removed.
        * svg/SVGCircleElement.h:
        * svg/SVGClipPathElement.h:
        * svg/SVGComponentTransferFunctionElement.h:
        * svg/SVGCursorElement.h:
        * svg/SVGDefsElement.h:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::synchronizeAttribute):
        (WebCore::SVGElement::synchronizeAllAttributes):
        (WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute):
        (WebCore::createAttributeNameToAnimatedPropertyTypeMap): Deleted.
        (WebCore::attributeNameToAnimatedPropertyTypeMap): Deleted.
        (WebCore::createCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Deleted.
        (WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Deleted.
        (WebCore::SVGElement::animatedPropertyTypesForAttribute): Deleted.
        (WebCore::SVGElement::synchronizeAnimatedSVGAttribute const): Deleted.
        (WebCore::SVGElement::isAnimatableCSSProperty): Deleted.
        (WebCore::SVGElement::isPresentationAttributeWithSVGDOM): Deleted.
        * svg/SVGElement.h:
        (WebCore::SVGElement::attributeOwnerProxy const): Deleted.
        (WebCore::SVGElement::attributeRegistry): Deleted.
        (WebCore::SVGElement::synchronizeAttribute): Deleted.
        (WebCore::SVGElement::synchronizeAttributes): Deleted.
        (WebCore::SVGElement::animatedTypes const): Deleted.
        (WebCore::SVGElement::lookupAnimatedProperty const): Deleted.
        (WebCore::SVGElement::lookupOrCreateAnimatedProperty): Deleted.
        (WebCore::SVGElement::lookupOrCreateAnimatedProperties): Deleted.
        (WebCore::SVGElement::isKnownAttribute): Deleted.
        * svg/SVGEllipseElement.h:
        * svg/SVGExternalResourcesRequired.h:
        (WebCore::SVGExternalResourcesRequired::attributeRegistry): Deleted.
        (WebCore::SVGExternalResourcesRequired::attributeOwnerProxy): Deleted.
        * svg/SVGFEBlendElement.h:
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEComponentTransferElement.h:
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEImageElement.h:
        * svg/SVGFELightElement.h:
        * svg/SVGFEMergeNodeElement.h:
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETileElement.h:
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        (WebCore::SVGFilterPrimitiveStandardAttributes::attributeRegistry): Deleted.
        * svg/SVGFitToViewBox.h:
        (WebCore::SVGFitToViewBox::attributeRegistry): Deleted.
        * svg/SVGFontElement.h:
        * svg/SVGForeignObjectElement.h:
        * svg/SVGGElement.h:
        * svg/SVGGeometryElement.h:
        * svg/SVGGlyphRefElement.h:
        * svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::svgAttributeChanged):
        * svg/SVGGradientElement.h:
        (WebCore::SVGGradientElement::attributeRegistry): Deleted.
        (WebCore::SVGGradientElement::isKnownAttribute): Deleted.
        * svg/SVGGraphicsElement.h:
        (WebCore::SVGGraphicsElement::attributeRegistry): Deleted.
        * svg/SVGImageElement.h:
        * svg/SVGLineElement.h:
        * svg/SVGLinearGradientElement.h:
        * svg/SVGMPathElement.h:
        * svg/SVGMarkerElement.cpp:
        * svg/SVGMarkerElement.h:
        * svg/SVGMaskElement.h:
        * svg/SVGPathElement.h:
        * svg/SVGPatternElement.h:
        * svg/SVGPolyElement.h:
        * svg/SVGRadialGradientElement.h:
        * svg/SVGRectElement.h:
        * svg/SVGSVGElement.h:
        * svg/SVGScriptElement.h:
        * svg/SVGStopElement.h:
        * svg/SVGSwitchElement.h:
        * svg/SVGSymbolElement.h:
        * svg/SVGTRefElement.h:
        * svg/SVGTests.cpp:
        (WebCore::SVGTests::svgAttributeChanged):
        (WebCore::SVGTests::attributeRegistry): Deleted.
        (WebCore::SVGTests::isKnownAttribute): Deleted.
        * svg/SVGTests.h:
        * svg/SVGTextContentElement.cpp:
        * svg/SVGTextContentElement.h:
        (WebCore::SVGTextContentElement::attributeRegistry): Deleted.
        * svg/SVGTextPathElement.h:
        * svg/SVGTextPositioningElement.h:
        (WebCore::SVGTextPositioningElement::attributeRegistry): Deleted.
        * svg/SVGURIReference.cpp:
        (WebCore::SVGURIReference::SVGURIReference):
        (WebCore::SVGURIReference::attributeRegistry): Deleted.
        * svg/SVGURIReference.h:
        * svg/SVGUseElement.h:
        * svg/SVGViewElement.h:
        * svg/SVGViewSpec.cpp:
        (WebCore::SVGViewSpec::SVGViewSpec):
        * svg/SVGViewSpec.h:
        * svg/SVGZoomAndPanType.h:
        * svg/properties/SVGAnimatedListPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimatedPropertyAnimator.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyPairAnimator.h:
        * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimatedPropertyType.h: Removed.

        * svg/properties/SVGAnimationAdditiveFunction.h:
        (WebCore::SVGAnimationAdditiveFunction::animate):
        (WebCore::SVGAnimationAdditiveFunction::progress): Deleted.
        * svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
        (WebCore::SVGAnimationLengthListFunction::animate):
        (WebCore::SVGAnimationNumberListFunction::animate):
        (WebCore::SVGAnimationPointListFunction::animate):
        (WebCore::SVGAnimationTransformListFunction::animate):
        (WebCore::SVGAnimationLengthListFunction::progress): Deleted.
        (WebCore::SVGAnimationNumberListFunction::progress): Deleted.
        (WebCore::SVGAnimationPointListFunction::progress): Deleted.
        (WebCore::SVGAnimationTransformListFunction::progress): Deleted.
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationAngleFunction::animate):
        (WebCore::SVGAnimationColorFunction::animate):
        (WebCore::SVGAnimationIntegerFunction::animate):
        (WebCore::SVGAnimationLengthFunction::animate):
        (WebCore::SVGAnimationNumberFunction::animate):
        (WebCore::SVGAnimationPathSegListFunction::animate):
        (WebCore::SVGAnimationRectFunction::animate):
        (WebCore::SVGAnimationAngleFunction::progress): Deleted.
        (WebCore::SVGAnimationColorFunction::progress): Deleted.
        (WebCore::SVGAnimationIntegerFunction::progress): Deleted.
        (WebCore::SVGAnimationLengthFunction::progress): Deleted.
        (WebCore::SVGAnimationNumberFunction::progress): Deleted.
        (WebCore::SVGAnimationPathSegListFunction::progress): Deleted.
        (WebCore::SVGAnimationRectFunction::progress): Deleted.
        * svg/properties/SVGAnimationDiscreteFunction.h:
        (WebCore::SVGAnimationDiscreteFunction::animate):
        (WebCore::SVGAnimationDiscreteFunction::progress): Deleted.
        * svg/properties/SVGAnimationFunction.h:
        (WebCore::SVGAnimationFunction::calculateDistance const):
        -- Rename the 'progress()' functions of SVGAttributeAnimator and SVGAnimationFunction
           to 'animate()'.
        -- Rename the argument 'percentage' of these function to 'progress'
        -- Make calculateDistance return Optional<float> so it does not have to
           return -1 in case of error.

        * svg/properties/SVGAttribute.h: Removed.
        * svg/properties/SVGAttributeAccessor.h: Removed.
        * svg/properties/SVGAttributeAnimator.h:
        (WebCore::SVGAttributeAnimator::calculateDistance const):
        * svg/properties/SVGAttributeOwnerProxy.cpp: Removed.
        * svg/properties/SVGAttributeOwnerProxy.h: Removed.
        * svg/properties/SVGAttributeOwnerProxyImpl.h: Removed.
        * svg/properties/SVGAttributeRegistry.h: Removed.
        * svg/properties/SVGLegacyAnimatedProperty.cpp: Removed.
        * svg/properties/SVGLegacyAnimatedProperty.h: Removed.
        * svg/properties/SVGLegacyProperty.h: Removed.
        * svg/properties/SVGListProperty.h: Removed.
        * svg/properties/SVGListPropertyTearOff.h: Removed.
        * svg/properties/SVGPrimitivePropertyAnimator.h:
        * svg/properties/SVGProperty.h:
        * svg/properties/SVGPropertyAnimator.h:
        * svg/properties/SVGPropertyTearOff.h: Removed.
        * svg/properties/SVGValuePropertyAnimator.h:
        * svg/properties/SVGValuePropertyListAnimator.h:

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Documents can be destroyed before their CSSFontFaceSet is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=195830

        Reviewed by Darin Adler.

        CSSFontFaceSet has a raw pointer to its owning document. JS can keep the CSSFontFaceSet alive (by using FontFaceSet)
        and can destroy the document at any time. When the document is destroyed, the link between the two objects needs to
        be severed.

        Test: fast/text/font-face-set-destroy-document.html

        * css/CSSFontFace.cpp:
        (WebCore::CSSFontFace::CSSFontFace):
        * css/CSSFontFace.h:
        * css/CSSFontFaceSet.cpp:
        (WebCore::CSSFontFaceSet::CSSFontFaceSet):
        (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):
        * css/CSSFontFaceSet.h:
        * css/CSSFontSelector.cpp:
        (WebCore::CSSFontSelector::CSSFontSelector):
        (WebCore::CSSFontSelector::addFontFaceRule):
        * css/CSSFontSelector.h:
        * css/FontFace.cpp:
        (WebCore::FontFace::FontFace):

2019-04-03  Sihui Liu  <sihui_liu@apple.com>

        Follow up fix for r243807: Use MarkedArgumentBuffer instead of Vector for JSValue
        https://bugs.webkit.org/show_bug.cgi?id=196547

        Reviewed by Geoffrey Garen.

        JSValue in Vector could be garbage collected because GC doesn't know Vector memory on C++ heap.

        * bindings/js/JSIDBRequestCustom.cpp:
        (WebCore::JSIDBRequest::result const):

2019-04-03  Chris Dumez  <cdumez@apple.com>

        HTML fragment serialization should not strip whitespace from URL attribute values
        https://bugs.webkit.org/show_bug.cgi?id=196551

        Reviewed by Ryosuke Niwa.

        HTML fragment serialization should not strip whitespace from URL attribute values as per:
        - https://html.spec.whatwg.org/multipage/parsing.html#html-fragment-serialisation-algorithm

        WebKit was stripping such whitespace, Gecko and Blink are not. Align WebKit with other
        browser engines and the specification.

        No new tests, rebaselined existing test.

        * editing/MarkupAccumulator.cpp:
        (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):

2019-04-02  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in HTMLCanvasElement::createContext2d after the element got adopted to a new document
        https://bugs.webkit.org/show_bug.cgi?id=196527

        Reviewed by Antti Koivisto.

        We need to update CanvasBase::m_scriptExecutionContext when HTMLCanvasElement moves from
        one document to another. Fixed the bug by making CanvasBase::scriptExecutionContext make
        a virtual function call instead of directly storing a raw pointer. In HTMLCanvasElement,
        we use Node::scriptExecutionContext(). Use ContextDestructionObserver in CustomPaintCanvas
        and OffscreenCanvas instead of a raw pointer.

        Unfortunately, no new tests since there is no reproducible test case.

        * html/CanvasBase.cpp:
        (WebCore::CanvasBase::CanvasBase):
        * html/CanvasBase.h:
        (WebCore::CanvasBase::scriptExecutionContext const):
        * html/CustomPaintCanvas.cpp:
        (WebCore::CustomPaintCanvas::CustomPaintCanvas):
        * html/CustomPaintCanvas.h:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::HTMLCanvasElement):
        * html/HTMLCanvasElement.h:
        * html/OffscreenCanvas.cpp:
        (WebCore::OffscreenCanvas::OffscreenCanvas):
        * html/OffscreenCanvas.h:

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove support for -apple-trailing-word
        https://bugs.webkit.org/show_bug.cgi?id=196525

        Reviewed by Zalan Bujtas.

        This CSS property is nonstandard and not used.

        * Configurations/FeatureDefines.xcconfig:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::operator TrailingWord const): Deleted.
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * rendering/SimpleLineLayout.cpp:
        (WebCore::SimpleLineLayout::canUseForStyle):
        * rendering/SimpleLineLayoutCoverage.cpp:
        (WebCore::SimpleLineLayout::printReason):
        * rendering/SimpleLineLayoutCoverage.h:
        * rendering/line/BreakingContext.h:
        (WebCore::BreakingContext::BreakingContext):
        (WebCore::BreakingContext::lineBreak):
        (WebCore::BreakingContext::clearLineBreakIfFitsOnLine):
        (WebCore::BreakingContext::commitLineBreakClear):
        (WebCore::BreakingContext::commitLineBreakAtCurrentWidth):
        (WebCore::BreakingContext::handleBR):
        (WebCore::BreakingContext::handleFloat):
        (WebCore::BreakingContext::handleText):
        (WebCore::BreakingContext::handleEndOfLine):
        (WebCore::BreakingContext::InlineIteratorHistory::InlineIteratorHistory): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::push): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::update): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::renderer const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::offset const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::nextBreakablePosition const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::atTextParagraphSeparator const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::previousInSameNode const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::get const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::current const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::historyLength const): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::moveTo): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::increment): Deleted.
        (WebCore::BreakingContext::InlineIteratorHistory::clear): Deleted.
        (WebCore::BreakingContext::optimalLineBreakLocationForTrailingWord): Deleted.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::trailingWord const): Deleted.
        (WebCore::RenderStyle::setTrailingWord): Deleted.
        (WebCore::RenderStyle::initialTrailingWord): Deleted.
        * rendering/style/RenderStyleConstants.h:
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:

2019-04-03  Youenn Fablet  <youenn@apple.com>

        Use makePendingActivity in DOMCache
        https://bugs.webkit.org/show_bug.cgi?id=196515

        Reviewed by Geoffrey Garen.

        No change of behavior, just modernizing the code.

        * Modules/cache/DOMCache.cpp:
        (WebCore::DOMCache::retrieveRecords):
        (WebCore::DOMCache::batchDeleteOperation):
        (WebCore::DOMCache::batchPutOperation):
        * Modules/cache/DOMCacheStorage.cpp:
        (WebCore::DOMCacheStorage::match):

2019-04-03  Chris Dumez  <cdumez@apple.com>

        [XML Parser] Insert the error message block when stopping parsing and an error occurred
        https://bugs.webkit.org/show_bug.cgi?id=196546

        Reviewed by Alexey Proskuryakov.

        Insert the error message block when stopping parsing and an error occurred. This is based
        on the following Blink commit:
        - https://chromium.googlesource.com/chromium/src.git/+/565958bc22e2d49fed7af144482c2bf4d416fec5

        No new tests, rebaselined existing test.

        * xml/parser/XMLDocumentParser.cpp:
        (WebCore::XMLDocumentParser::end):
        Avoid showing the error message block twice in some cases. No need to ever call
        insertErrorMessageBlock() if we're already stopped since stopParsing() already
        takes care of doing this.

        * xml/parser/XMLDocumentParserLibxml2.cpp:
        (WebCore::XMLDocumentParser::stopParsing):
        When XMLDocumentParser::stopParsing() is called to stop parsing, call
        insertErrorMessageBlock() to insert the <parsererror> element if an error
        occurred.

2019-04-03  Youenn Fablet  <youenn@apple.com>

        Clear WorkerCacheStorageConnection callbacks on WorkerGlobalScope termination
        https://bugs.webkit.org/show_bug.cgi?id=196521

        Reviewed by Alex Christensen.

        When the worker global scope is preparing for termination,
        all ActiveDOMObjects are stopped.
        At that time, the completion handlers related to
        WorkerCacheStorageConnection should be cleared to be able to free
        memory, and as they are now no-op anyway.

        We clear the completion handlers once the active DOM objects are stopped
        to limit the processing triggered by clearing them.

        Introducing a new Stopped error code to handle this case.
        Add an assertion so that this error does not surface to JS.

        Covered by existing tests.

        * Modules/cache/CacheStorageConnection.cpp:
        (WebCore::CacheStorageConnection::clearPendingRequests):
        * Modules/cache/CacheStorageConnection.h:
        * Modules/cache/DOMCacheEngine.cpp:
        (WebCore::DOMCacheEngine::errorToException):
        * Modules/cache/DOMCacheEngine.h:
        * workers/WorkerGlobalScope.cpp:
        (WebCore::WorkerGlobalScope::prepareForTermination):
        (WebCore::WorkerGlobalScope::stopIndexedDatabase):

2019-04-03  Youenn Fablet  <youenn@apple.com>

        Adopt new VCP SPI
        https://bugs.webkit.org/show_bug.cgi?id=193357
        <rdar://problem/43656651>

        Reviewed by Eric Carlson.

        Covered by existing tests.

        * testing/Internals.cpp:
        (WebCore::Internals::supportsVCPEncoder):

2019-04-03  Chris Dumez  <cdumez@apple.com>

        Remove legacy webkitRequestAnimationFrame time quirk
        https://bugs.webkit.org/show_bug.cgi?id=196458
        <rdar://problem/49490207>

        Reviewed by Simon Fraser.

        Remove legacy webkitRequestAnimationFrame time quirk and log a deprecation
        warning whenever webkitRequestAnimationFrame is called.

        * dom/ScriptedAnimationController.cpp:
        (WebCore::ScriptedAnimationController::serviceScriptedAnimations):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::requestAnimationFrame):
        (WebCore::DOMWindow::webkitRequestAnimationFrame):

2019-04-03  Sihui Liu  <sihui_liu@apple.com>

        Blob type cannot be stored correctly in IDB when IDBObjectStore has autoIncrement and keyPath options
        https://bugs.webkit.org/show_bug.cgi?id=196128

        Reviewed by Geoffrey Garen.

        If a key is auto-generated, it should become a property of the value object. Network process would perform the 
        key injection by deserializing IDBValue into script value, setting the property, serializing the result and 
        storing it in a database record. But network process does not have a JSDOMGlobalObject, so it would fail to 
        deserialize types including Blob and File.

        To solve this issue, we move the key injection to web process and let network process store the original value 
        it gets. In this case, when web process asks for some value, network process should return key, value and key 
        path so that web process can decide whether it should perform a key injection before returning the result. Note
        that the auto-generated key would always be stored as the key in a ObjectStore record.

        Test: storage/indexeddb/modern/objectstore-autoincrement-types.html

        * Modules/indexeddb/IDBCursor.cpp:
        (WebCore::IDBCursor::setGetResult):
        * Modules/indexeddb/IDBCursor.h:
        (WebCore::IDBCursor::primaryKeyPath):
        * Modules/indexeddb/IDBGetAllResult.cpp:
        (WebCore::IDBGetAllResult::isolatedCopy):
        (WebCore::IDBGetAllResult::addKey):
        (WebCore::IDBGetAllResult::addValue):
        (WebCore::IDBGetAllResult::keys const):
        (WebCore::IDBGetAllResult::values const):
        (WebCore::IDBGetAllResult::allBlobFilePaths const):
        (WebCore::isolatedCopyOfVariant): Deleted.

        * Modules/indexeddb/IDBGetAllResult.h: Introduce an IDBKeyPath parameter. Also replace Variant with two Vectors,
        because we only needed to store either key or value before, and now the stored value could be incomplete.
        (WebCore::IDBGetAllResult::IDBGetAllResult):
        (WebCore::IDBGetAllResult::keyPath const):
        (WebCore::IDBGetAllResult::encode const):
        (WebCore::IDBGetAllResult::decode):

        * Modules/indexeddb/IDBGetResult.cpp:
        (WebCore::IDBGetResult::setValue):
        * Modules/indexeddb/IDBGetResult.h:
        (WebCore::IDBGetResult::IDBGetResult):
        (WebCore::IDBGetResult::keyPath const):
        * Modules/indexeddb/IDBObjectStore.cpp:
        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::setResult):
        (WebCore::IDBRequest::setResultToStructuredClone):
        * Modules/indexeddb/IDBRequest.h:
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::didGetAllRecordsOnServer):
        (WebCore::IDBTransaction::didGetRecordOnServer):
        * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
        (WebCore::IDBServer::MemoryIDBBackingStore::getRecord):
        * Modules/indexeddb/server/MemoryIndex.cpp:
        (WebCore::IDBServer::MemoryIndex::getResultForKeyRange const):
        (WebCore::IDBServer::MemoryIndex::getAllRecords const):
        * Modules/indexeddb/server/MemoryIndexCursor.cpp:
        (WebCore::IDBServer::MemoryIndexCursor::currentData):
        * Modules/indexeddb/server/MemoryObjectStore.cpp:
        (WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
        (WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
        (WebCore::IDBServer::MemoryObjectStore::getAllRecords const):
        * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
        (WebCore::IDBServer::MemoryObjectStoreCursor::currentData):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatementForGetAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
        (WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
        (WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
        * Modules/indexeddb/server/SQLiteIDBCursor.cpp:
        (WebCore::IDBServer::SQLiteIDBCursor::currentData):
        * Modules/indexeddb/server/SQLiteIDBCursor.h:

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd): Remove the key injection from network process. 
        UniqueIDBDatabase stores any value it gets from IDBClient.

        * Modules/indexeddb/shared/IDBResultData.cpp:
        (WebCore::IDBResultData::getResultRef):
        * Modules/indexeddb/shared/IDBResultData.h:

        * bindings/js/IDBBindingUtilities.cpp:
        (WebCore::injectIDBKeyIntoScriptValue): If property is read-only, set would fail and injectKeyIntoResult would
        return null, but we expect it to return result as long as the property value is the same as target. Therefore, 
        we can add an early return here.
        (WebCore::createKeyPathArray):

        (WebCore::generateIndexKeyForValue): We used to generate IndexKey from value stored in database but now the
        value gets stored does not include auto-generated key, as we remove the key injection from network process. In 
        this case if the IDBIndex has the same key path as the auto-generated key, IndexKey would be failed to create
        for it cannot extract auto-generated key from value. Since the auto-generated key would always be the key in 
        database record, we could use value of that key when we find a match in key path.

        (WebCore::deserializeIDBValueWithKeyInjection): If the key path in the result is single entry, the key is 
        probably auto-generated, so we could inject the result key into the result value unconditionally.

        * bindings/js/IDBBindingUtilities.h:
        * bindings/js/JSIDBCursorWithValueCustom.cpp:
        (WebCore::JSIDBCursorWithValue::value const):
        * bindings/js/JSIDBRequestCustom.cpp:
        (WebCore::JSIDBRequest::result const):

2019-04-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        Get rid of HTMLInputElement::setEditingValue
        https://bugs.webkit.org/show_bug.cgi?id=196402

        Reviewed by Darin Adler.

        HTMLInputElement::setEditingValue is only used for Epiphany password autofill. We did it
        this way because that's what Chrome uses for autofill, but Apple uses
        HTMLInputElement::setValueForUser. Let's switch to that instead, then we can get rid of
        setEditingValue.

        This fixes logging into ting.com after username and password are autofilled by Epiphany.
        Before this change, the login would fail unless you first manually edit either the username
        or the password field.

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setEditingValue): Deleted.
        * html/HTMLInputElement.h:
        * testing/Internals.cpp:
        (WebCore::Internals::setEditingValue): Deleted.
        * testing/Internals.h:
        * testing/Internals.idl:

2019-04-03  Pablo Saavedra  <psaavedra@igalia.com>

        Missing includes that were previously provided via UnifiedSources
        https://bugs.webkit.org/show_bug.cgi?id=196434

        Unreviewed build fix.

        * html/InputType.h:

2019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce and add plumbing for a website policy for meta viewport tag handling
        https://bugs.webkit.org/show_bug.cgi?id=196285

        Reviewed by Tim Horton.

        Add MetaViewportPolicy to DocumentLoader. See WebKit ChangeLog for more detail.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::metaViewportPolicy const):
        (WebCore::DocumentLoader::setMetaViewportPolicy):

2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remote Inspector indicate callback should always happen on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=196513
        <rdar://problem/49498284>

        Reviewed by Devin Rousso.

        * platform/ios/wak/WebCoreThreadSystemInterface.cpp:
        (InitWebCoreThreadSystemInterface):

2019-04-02  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
        https://bugs.webkit.org/show_bug.cgi?id=196522
        rdar://problem/49472941

        Reviewed by Zalan Bujtas.

        In this content a layer is composited to clip descendants, and has negative z-order children,
        so we compute that it "paints into ancestor", and has a foreground layer. This combination doesn't
        make sense, and when the layer becomes scrollable, we end up with bad paint phases on layers, and
        fail to paint the contents.

        Fix by ensuring that a layer has its own backing store if it requires a foreground layer
        by virtue of having negative z-order children.

        Test: compositing/backing/foreground-layer-no-paints-into-ancestor.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

2019-04-02  Timothy Hatcher  <timothy@apple.com>

        Cursor count badge reverts to Zero during Drag & Drop of multiple items.
        https://bugs.webkit.org/show_bug.cgi?id=196511

        Reviewed by Daniel Bates.

        * page/DragController.cpp:
        (WebCore::DragController::tryDocumentDrag): Don't set m_numberOfItemsToBeAccepted to
        zero when dragging to a non-file input element.

2019-04-02  Chris Dumez  <cdumez@apple.com>

        HTML Parser: Remove conditional parsing of <noembed> content
        https://bugs.webkit.org/show_bug.cgi?id=196514

        Reviewed by Geoffrey Garen.

        Our HTML Parser has raw text handling for <noembed> content only if plugins are runnable.
        However, the HTML specification doesn't ask such behavior [1], and it doesn't match to
        our HTML serializer. We should always handle it as raw text.

        Blink already made this change in https://chromium-review.googlesource.com/c/1477556.

        [1] https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments:noembed

        No new tests, updated existing test.

        * html/parser/HTMLParserOptions.cpp:
        (WebCore::HTMLParserOptions::HTMLParserOptions):
        * html/parser/HTMLParserOptions.h:
        * html/parser/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::updateStateFor):
        * html/parser/HTMLTreeBuilder.cpp:
        (WebCore::HTMLTreeBuilder::processStartTagForInBody):

2019-04-02  Chris Dumez  <cdumez@apple.com>

        XMLHttpRequestUpload's loadstart event not correct initialized
        https://bugs.webkit.org/show_bug.cgi?id=196174
        <rdar://problem/49191412>

        Reviewed by Alex Christensen.

        Align progress event firing with the XHR specification.

        No new tests, rebaselined existing tests.

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::createRequest):
        As per [1], the loadstart event fired on the XMLHttpRequestUpload object should use
        loaded=0 and total=`req’s body’s total bytes`.
        [1] https://xhr.spec.whatwg.org/#the-send()-method (step 11.2.)

        (WebCore::XMLHttpRequest::didSendData):
        As per [2], the progress / load / loadend should use loaded=transmitted and total=length.
        [2] https://xhr.spec.whatwg.org/#ref-for-process-request-end-of-body (steps 5, 6 and 7)

        (WebCore::XMLHttpRequest::didReceiveData):
        As per [3], we should fire the readystatechange event *before* the progress event.
        This is covered by web-platform-tests/xhr/send-response-event-order.htm which was failing
        differently after the other changes in this patch.
        [3] https://xhr.spec.whatwg.org/#ref-for-process-response (steps 9.4 and 9.5)

        (WebCore::XMLHttpRequest::dispatchErrorEvents):
        As per [4], in case of an error, we should fire the provided 'event' and 'loadend' with
        loaded=0 and total=0.
        [4] https://xhr.spec.whatwg.org/#request-error-steps (steps 7 and 8)

        * xml/XMLHttpRequestUpload.cpp:
        (WebCore::XMLHttpRequestUpload::dispatchProgressEvent):
        * xml/XMLHttpRequestUpload.h:
        Simplify XMLHttpRequestUpload. It no longer needs to store loaded / total as data
        members now that they are always passed by the call site. lengthComputable is set
        to !!total as [5] says to set it to true if length/total is not 0. 
        [5] https://xhr.spec.whatwg.org/#concept-event-fire-progress

2019-04-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: add support for showing WebGPU contexts
        https://bugs.webkit.org/show_bug.cgi?id=196413
        <rdar://problem/49438898>

        Reviewed by Timothy Hatcher.

        Tests: inspector/canvas/create-context-webgpu.html
               inspector/canvas/resolveCanvasContext-webgpu.html

        * Modules/webgpu/GPUCanvasContext.idl:
        * Modules/webgpu/GPUCanvasContext.h:
        (WebCore::GPUCanvasContext::canvas const): Added.
        * Modules/webgpu/GPUCanvasContext.cpp:
        (WebCore::GPUCanvasContext::create):

        * testing/InternalSettings.idl:
        * testing/InternalSettings.h:
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::setWebGPUEnabled): Added.

2019-04-02  Chris Dumez  <cdumez@apple.com>

        [WK2] Add support for Window's beforeprint / afterprint events
        https://bugs.webkit.org/show_bug.cgi?id=196478

        Reviewed by Alex Christensen.

        Add support for Window's beforeprint / afterprint events as per:
        - https://html.spec.whatwg.org/#dom-print

        Blink and Gecko already support this.

        Test: printing/printing-events.html

        * dom/EventNames.h:
        * html/HTMLAttributeNames.in:
        * html/HTMLBodyElement.cpp:
        (WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):
        * page/Page.cpp:
        (WebCore::dispatchPrintEvent):
        (WebCore::Page::dispatchBeforePrintEvent):
        (WebCore::Page::dispatchAfterPrintEvent):
        * page/Page.h:
        * page/WindowEventHandlers.idl:

2019-04-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Hover menus do not function on fidelity.com
        https://bugs.webkit.org/show_bug.cgi?id=196507
        <rdar://problem/49496520>

        Reviewed by Simon Fraser.

        fidelity.com has 400ms hover intent timer to bring up the main menus.

        Test: fast/events/touch/ios/content-observation/400ms-hover-intent.html

        * page/ios/ContentChangeObserver.cpp:

2019-04-02  Timothy Hatcher  <timothy@apple.com>

        NSAttributedString crashes when encoding text attachment cell for missing image.
        https://bugs.webkit.org/show_bug.cgi?id=196504
        rdar://problem/49161281

        Reviewed by Tim Horton.

        Clean up and fix a couple of errors and crashes in the missing image path of our
        attributed string converter.

        Fixes include:
        * Removed manual call to release on a RetainPtr, leading to autorelease pool crash.
        * No longer try to load an image that is missing on disk and has long been renamed.
        * No longer use a NSTextAttachmentCell in the Mac code path which can't be encoded
          for sending to the UIProcess, so it was pretty useless in the web content process.
        * Stopped using NSFileWrapper for the missing image so the attachment can contain the
          retina versions of the missing image.
        * Simplified bundle finding code, since WebCore is assumed to be loaded.
        * Fix leak of attachment by adding missing adoptNS().

        * editing/cocoa/HTMLConverter.mm:
        (HTMLConverter::_addAttachmentForElement): Unify and simplify missing image path.
        (_NSFirstPathForDirectoriesInDomains): Deleted.
        (_NSSystemLibraryPath): Deleted.
        (_webKitBundle): Deleted.

2019-04-02  Chris Dumez  <cdumez@apple.com>

        [Fetch API] Allow used body replacement in Request constructor
        https://bugs.webkit.org/show_bug.cgi?id=183703
        <rdar://problem/49425609>

        Reviewed by Youenn Fablet.

        Allow used body replacement in Request constructor as per:
        - https://github.com/whatwg/fetch/pull/675

        No new tests, rebaseline existing test.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::FetchRequest::initializeWith):

2019-04-02  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r243551.

        Seems to have broken file uploads to SoundCloud

        Reverted changeset:

        "XMLHttpRequestUpload's loadstart event not correct
        initialized"
        https://bugs.webkit.org/show_bug.cgi?id=196174
        https://trac.webkit.org/changeset/243551

2019-04-02  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Implement blend states and color write mask for GPUColorStateDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=196474

        Reviewed by Myles C. Maxfield.

        Blend states and color write masks must now be specified on GPUColorStateDescriptor instead of 
        relying on underlying MTLRenderPipelineColorAttachmentDescriptor defaults.

        Test: webgpu/blend-triangle-strip.html, webgpu/color-write-mask-triangle-strip.html

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/webgpu/GPUBlendDescriptor.idl: 
        * Modules/webgpu/GPUColorStateDescriptor.idl:
        * Modules/webgpu/GPUColorWriteBits.idl: 
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * platform/graphics/gpu/GPUBlendDescriptor.h:
        * platform/graphics/gpu/GPUColorStateDescriptor.h:
        * platform/graphics/gpu/GPUColorWriteBits.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::mtlColorWriteMaskForGPUColorWriteFlags):
        (WebCore::mtlBlendOperationForGPUBlendOperation):
        (WebCore::mtlBlendFactorForGPUBlendFactor):
        (WebCore::setColorStatesForColorAttachmentArray):
        (WebCore::tryCreateMtlRenderPipelineState):
        (WebCore::trySetColorStatesForColorAttachmentArray): Deleted.

2019-04-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Ignore reconstructed renderers when checking for visibility change
        https://bugs.webkit.org/show_bug.cgi?id=196483
        <rdar://problem/49288174>

        Reviewed by Simon Fraser.

        This patch fixes the cases when the content gets reconstructed in a way that existing and visible elements gain
        new renderers within one style recalc. We failed to recognize such cases and ended up detecting the newly constructed renderers
        as "visible change" thereby triggering hover.

        Test: fast/events/touch/ios/content-observation/visible-content-gains-new-renderer.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::renderTreeUpdateDidStart):
        (WebCore::ContentChangeObserver::renderTreeUpdateDidFinish):
        (WebCore::ContentChangeObserver::reset):
        (WebCore::ContentChangeObserver::willDestroyRenderer):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::RenderTreeUpdateScope::RenderTreeUpdateScope):
        (WebCore::ContentChangeObserver::RenderTreeUpdateScope::~RenderTreeUpdateScope):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::visibleRendererWasDestroyed const):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateRenderTree):
        (WebCore::RenderTreeUpdater::tearDownRenderers):

2019-04-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated headers
        https://bugs.webkit.org/show_bug.cgi?id=182757

        Reviewed by Don Olmstead.

        No new tests because no behavior changes.

        * PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES of
        WEBKIT_MAKE_FORWARDING_HEADERS. Added
        WebCore_PRIVATE_FRAMEWORK_HEADERS.
        * WebCoreMacros.cmake (GENERATE_DOM_NAMES): Added
        ${_namespace}ElementTypeHelpers.h to _outputfiles.

2019-04-02  Cathie Chen  <cathiechen@igalia.com>

        Update the status of ResizeObserver in features.json.
        https://bugs.webkit.org/show_bug.cgi?id=196443

        Reviewed by Rob Buis.

        * features.json:

2019-04-01  Ryosuke Niwa  <rniwa@webkit.org>

        Nullptr crash in Document::open after calling policyChecker().stopCheck()
        https://bugs.webkit.org/show_bug.cgi?id=196479

        Reviewed by Antti Koivisto.

        Added a missing nullptr check in Document::open after calling m_frame->loader().policyChecker().stopCheck()
        since it invokes m_willSubmitFormCompletionHandlers in WebKit2, and that could clear m_frame.

        Unfortunately, we don't have any reproducible test case.

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

2019-04-01  Timothy Hatcher  <timothy@apple.com>

        Unreviewed build fix.

        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
        (WebCore::createAndStoreMasterKey): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END
        around SecTrustedApplicationCreateFromPath call.

2019-04-01  Simon Fraser  <simon.fraser@apple.com>

        Remove some unused iOS scrolling-related code in Frame
        https://bugs.webkit.org/show_bug.cgi?id=196473

        Reviewed by Zalan Bujtas.

        This code has no callers.

        * page/Frame.cpp:
        (WebCore::Frame::Frame):
        (WebCore::Frame::scrollOverflowLayer): Deleted.
        (WebCore::Frame::overflowAutoScrollTimerFired): Deleted.
        (WebCore::Frame::startOverflowAutoScroll): Deleted.
        (WebCore::Frame::checkOverflowScroll): Deleted.
        * page/Frame.h:

2019-04-01  Chris Dumez  <cdumez@apple.com>

        Attr nodes are not cloned properly
        https://bugs.webkit.org/show_bug.cgi?id=196466

        Reviewed by Ryosuke Niwa.

        Attr nodes are not cloned properly according to:
        - https://dom.spec.whatwg.org/#concept-node-clone

        A cloned Attr node should retain its prefix and namespace.

        Both Gecko and Blink agree with the DOM specification here.

        No new tests, rebaselined existing test.

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

2019-04-01  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList
        https://bugs.webkit.org/show_bug.cgi?id=196086

        Reviewed by Simon Fraser.

        The IDL changes:

        SVGTransform.idl:
            Remove the NewObject qualifier from matrix attribute. This matches 
            the specs: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransform.
            SVGTransform will internally hold an SVGMatrix. A change in this
            SVGMatrix will affect the container SVGTransform.

        SVGTransformList.idl:
            Remove the NewObject qualifier from consolidate() method. This matches
            the specs:
            https://www.w3.org/TR/SVG11/coords.html#__svg__SVGTransformList__consolidate
            The method consolidate() should return a reference to the first item
            in the list after consolidating it.

        Code changes:

        -- SVGMatrix is now a superclass of SVGValueProperty<AffineTransform>.
           No need for SVGMatrixValue since it was wrapper of AffineTransform.

        -- SVGTransformValue now holds a Ref<SVGMatrix> member in addition to the
           angle and the rotationCenter. Ref<SVGMatrix> is what SVGTransform.matrix
           will return. So a change in this matrix will change the owner SVGTransform.

        -- SVGTransform is now the owner of SVGMatrix via its SVGTransformValue.

        -- SVGTransformList is now a superclass of SVGValuePropertyList<SVGTransform>.
           It is responsible for parsing a String to items of SVGTransform.

        -- SVGAnimatedTransformList is now defined as SVGAnimatedPropertyList<
           SVGTransformList>.

        Note the ownership chain of these objects is the following:

        -- SVGAnimatedTransformList owns the SVGTransformList via its baseVal 
           and animVal members.

        -- SVGTransformList owns SVGTransform via its list of items

        -- SVGTransform owns SVGMatrix via its SVGTransformValue.

           So a change in SVGMatrix will propagate to the owner SVGElement through
           the following ownership chain:

           SVGMatrix
             |_ SVGTransfrom
                  |_ SVGTransformList
                       |_ SVGAmimatedTransformList
                            |_ SVGElement

        To get the mechanics of this change right, a new accessor, a new animator
        and animation functions are added for the SVGAnimatedTransformList.

        -- SVGViewSpec used to hold an SVGAnimatedTransformListAttribute for the
        member m_transform although this member should not be animated. See the
        comment in the old SVGViewSpec::transform(). This has been changed in this
        patch. SVGViewSpec now holds Ref<SVGTransformList> which matches the specs:
        https://www.w3.org/TR/SVG11/types.html#InterfaceSVGViewSpec.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::attributeAnimationController):
        (WebCore::SVGAnimateElementBase::hasValidAttributeType const):
        (WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
        (WebCore::SVGAnimateElementBase::calculateFromAndToValues):
        (WebCore::SVGAnimateElementBase::calculateFromAndByValues):
        * svg/SVGAnimateElementBase.h:
        (WebCore::SVGAnimateElementBase::animateRangeString const):
        * svg/SVGAnimateTransformElement.cpp:
        (WebCore::SVGAnimateTransformElement::animateRangeString const):
        * svg/SVGAnimateTransformElement.h:
                This change is needed because animating the transform attribute can be
        written as
            <animate ... from="translate(100)" to="translate(200)"/>
        or
            <animateTransform type="translate" from="100" to="200"/>"
        So we need to surround the animation range string with the type qualifier
        for animateTransform.

        * svg/SVGAnimatedTransformList.cpp: Removed.
        * svg/SVGAnimatedTransformList.h: Removed.
        * svg/SVGAnimatedType.h: Removed.
        * svg/SVGAnimatedTypeAnimator.cpp: Removed.
        * svg/SVGAnimatedTypeAnimator.h: Removed.
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
        * svg/SVGAnimationElement.h:
        (WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
        (WebCore::SVGAnimationElement::adjustFromToListValues): Deleted.
        (WebCore::SVGAnimationElement::animateDiscreteType): Deleted.
        These functions were used by SVGLegacyAttributeAnimationController.

        * svg/SVGAnimatorFactory.h: Removed.
        * svg/SVGExternalResourcesRequired.h:
        (WebCore::SVGExternalResourcesRequired::isKnownAttribute):
        * svg/SVGFEImageElement.h:
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFETileElement.h:
        * svg/SVGFitToViewBox.h:
        (WebCore::SVGFitToViewBox::isKnownAttribute):
        * svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::SVGGradientElement):
        (WebCore::SVGGradientElement::parseAttribute):
        (WebCore::SVGGradientElement::registerAttributes): Deleted.
        * svg/SVGGradientElement.h:
        (WebCore::SVGGradientElement::gradientTransform const):
        (WebCore::SVGGradientElement::gradientTransformAnimated):
        (WebCore::SVGGradientElement::isKnownAttribute):
        * svg/SVGGraphicsElement.cpp:
        (WebCore::SVGGraphicsElement::SVGGraphicsElement):
        (WebCore::SVGGraphicsElement::animatedLocalTransform const):
        (WebCore::SVGGraphicsElement::parseAttribute):
        (WebCore::SVGGraphicsElement::svgAttributeChanged):
        There is one attribute for this element which is "SVGNames::transformAttr"
        So there is no need to check for it twice.

        (WebCore::SVGGraphicsElement::registerAttributes): Deleted.
        * svg/SVGGraphicsElement.h:
        (WebCore::SVGGraphicsElement::transform const):
        (WebCore::SVGGraphicsElement::transformAnimated):
        (WebCore::SVGGraphicsElement::isKnownAttribute): Deleted.
        * svg/SVGLangSpace.cpp:
        (WebCore::SVGLangSpace::SVGLangSpace):
        (WebCore::SVGLangSpace::xmlspace const):
        (WebCore::SVGLangSpace::isKnownAttribute):
        (WebCore::SVGLangSpace::svgAttributeChanged):
        (WebCore::SVGLangSpace::registerAttributes): Deleted.
        * svg/SVGLangSpace.h:
        (WebCore::SVGLangSpace::xmllang const):
        (WebCore::SVGLangSpace::setXmllang):
        (WebCore::SVGLangSpace::setXmlspace):
        (WebCore::SVGLangSpace::attributeRegistry): Deleted.
        (WebCore::SVGLangSpace::isKnownAttribute): Deleted.
        * svg/SVGLegacyAttributeAnimationController.cpp: Removed.
        * svg/SVGLegacyAttributeAnimationController.h: Removed.
        * svg/SVGLinearGradientElement.cpp:
        (WebCore::setGradientAttributes):
        * svg/SVGMaskElement.h:
        * svg/SVGMatrix.h:
        (WebCore::SVGMatrix::create):
        (WebCore::SVGMatrix::a const):
        (WebCore::SVGMatrix::setA):
        (WebCore::SVGMatrix::b const):
        (WebCore::SVGMatrix::setB):
        (WebCore::SVGMatrix::c const):
        (WebCore::SVGMatrix::setC):
        (WebCore::SVGMatrix::d const):
        (WebCore::SVGMatrix::setD):
        (WebCore::SVGMatrix::e const):
        (WebCore::SVGMatrix::setE):
        (WebCore::SVGMatrix::f const):
        (WebCore::SVGMatrix::setF):
        (WebCore::SVGMatrix::multiply const):
        (WebCore::SVGMatrix::inverse const):
        (WebCore::SVGMatrix::translate const):
        (WebCore::SVGMatrix::scale const):
        (WebCore::SVGMatrix::scaleNonUniform const):
        (WebCore::SVGMatrix::rotate const):
        (WebCore::SVGMatrix::rotateFromVector const):
        (WebCore::SVGMatrix::flipX const):
        (WebCore::SVGMatrix::flipY const):
        (WebCore::SVGMatrix::skewX const):
        (WebCore::SVGMatrix::skewY const):
        * svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::SVGPatternElement):
        (WebCore::SVGPatternElement::parseAttribute):
        (WebCore::SVGPatternElement::svgAttributeChanged):
        (WebCore::SVGPatternElement::collectPatternAttributes const):
        (WebCore::SVGPatternElement::localCoordinateSpaceTransform const):
        (WebCore::SVGPatternElement::registerAttributes): Deleted.
        * svg/SVGPatternElement.h:
        * svg/SVGPoint.h:
        (WebCore::SVGPoint::matrixTransform const):
        * svg/SVGPolyElement.h:
        (WebCore::SVGPolyElement::isKnownAttribute): Deleted.
        * svg/SVGRadialGradientElement.cpp:
        (WebCore::setGradientAttributes):
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::createSVGTransform):
        (WebCore::SVGSVGElement::createSVGTransformFromMatrix):
        (WebCore::SVGSVGElement::viewBoxToViewTransform const):
        * svg/SVGTextElement.cpp:
        (WebCore::SVGTextElement::animatedLocalTransform const):
        * svg/SVGTransform.cpp: Removed.
        * svg/SVGTransform.h:
        (WebCore::SVGTransform::create):
        (WebCore::SVGTransform::~SVGTransform):
        (WebCore::SVGTransform::clone const):
        (WebCore::SVGTransform::type):
        (WebCore::SVGTransform::angle):
        (WebCore::SVGTransform::matrix):
        (WebCore::SVGTransform::setMatrix):
        (WebCore::SVGTransform::setTranslate):
        (WebCore::SVGTransform::setScale):
        (WebCore::SVGTransform::setRotate):
        (WebCore::SVGTransform::setSkewX):
        (WebCore::SVGTransform::setSkewY):
        (WebCore::SVGTransform::SVGTransform):
        * svg/SVGTransform.idl:
        * svg/SVGTransformList.h:
        * svg/SVGTransformList.idl:
        * svg/SVGTransformListValues.cpp: Removed.
        * svg/SVGTransformListValues.h: Removed.
        * svg/SVGTransformValue.cpp: Removed.
        * svg/SVGTransformValue.h:
        (WebCore::SVGTransformValue::SVGTransformValue):
        (WebCore::SVGTransformValue::operator=):
        (WebCore::SVGTransformValue::matrix const):
        (WebCore::SVGTransformValue::rotationCenter const):
        (WebCore::SVGTransformValue::isValid const):
        (WebCore::SVGTransformValue::setMatrix):
        (WebCore::SVGTransformValue::matrixDidChange):
        (WebCore::SVGTransformValue::translate const):
        (WebCore::SVGTransformValue::setTranslate):
        (WebCore::SVGTransformValue::scale const):
        (WebCore::SVGTransformValue::setScale):
        (WebCore::SVGTransformValue::setRotate):
        (WebCore::SVGTransformValue::setSkewX):
        (WebCore::SVGTransformValue::setSkewY):
        (WebCore::SVGTransformValue::valueAsString const):
        (WebCore::SVGTransformValue::prefixForTransfromType):
        (WebCore::SVGTransformValue::appendNumbers const):
        (WebCore::SVGTransformValue::appendMatrix const):
        (WebCore::SVGTransformValue::appendTranslate const):
        (WebCore::SVGTransformValue::appendScale const):
        (WebCore::SVGTransformValue::appendRotate const):
        (WebCore::SVGTransformValue::appendSkewX const):
        (WebCore::SVGTransformValue::appendSkewY const):
        (WebCore::SVGTransformValue::matrix): Deleted.
        * svg/SVGTransformable.cpp:
        (WebCore::SVGTransformable::parseAndSkipType):
        (WebCore::parseAndSkipType): Deleted.
        (WebCore::SVGTransformable::parseTransformAttribute): Deleted.
        The code of this function was moved to SVGTransformList::parse().

        * svg/SVGTransformable.h:
        There is no need for enum TransformParsingMode. It was used by 
        SVGViewSpec::parseViewSpec() to tell SVGTransformable::parseTransformAttribute()
        not to clear the list. SVGTransfromList now has two parse() functions:
        one public and the second is private. The public one clear the list
        before parsing the input String. The private one just does the parsing.
        SVGViewSpec::parseViewSpec() calls the private once since it is a friend
        of SVGTransfromList.

        * svg/SVGValue.h: Removed.
        * svg/SVGViewSpec.cpp:
        (WebCore::SVGViewSpec::SVGViewSpec):
        (WebCore::SVGViewSpec::reset):
        (WebCore::SVGViewSpec::parseViewSpec):
        (WebCore::SVGViewSpec::registerAttributes): Deleted.
        (WebCore::SVGViewSpec::transform): Deleted.
        * svg/SVGViewSpec.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimatedTransformListPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
        (WebCore::SVGAnimationTransformListFunction::progress):
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGMatrixTearOff.h: Removed.
        * svg/properties/SVGPropertyAccessorImpl.h:
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-04-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
        https://bugs.webkit.org/show_bug.cgi?id=196456
        <rdar://problem/49489747>

        Reviewed by Joseph Pecoraro.

        Test: inspector/dom-debugger/dom-breakpoints.html

        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

2019-04-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unable to copy and paste a PDF from Notes into Mail compose body
        https://bugs.webkit.org/show_bug.cgi?id=196442
        <rdar://problem/48573098>

        Reviewed by Tim Horton.

        Refactor some logic for inserting attachment elements upon paste or drop. Currently, we only prefer inserting
        content as attachment elements if the items are annotated with UIPreferredPresentationStyleAttachment. However,
        many data sources around the system (both first and third party) have not adopted this API, which makes it
        difficult to determine whether a given item provider should be treated as a file or not. In this bug in
        particular, no preferred presentation style is set, so we fail to handle the paste command by inserting an
        attachment element.

        However, most apps around the system that write file or attachment-like data to the pasteboard will at least
        offer a suggested name for the file, in the form of -[NSItemProvider suggestedName]. To address this, instead of
        relying solely on the preferredPresentationStyle, additionally take a suggested name as an indicator that the
        item is probably a file.

        In fact, Pasteboard::fileContentState already has similar logic to check for either a suggested file name or
        explicitly specified presentation style. We pull this out into a separate helper method on PasteboardItemInfo,
        and use it for both Pasteboard::fileContentState and prefersAttachmentRepresentation.

        Tests:  WKAttachmentTestsIOS.InsertPastedContactAsAttachment
                WKAttachmentTestsIOS.InsertPastedMapItemAsAttachment

        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::mimeTypeFromContentType):

        Work around <rdar://problem/49478229> by using the "text/vcard" MIME type to handle "public.vcard". CoreServices
        currently maps "public.vcard" to "text/directory" when using UTTypeCopyPreferredTagWithClass, despite the SPI
        -[NSURLFileTypeMappings MIMETypeForExtension:] returning "text/vcard" for a ".vcf" file.

        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::canBeTreatedAsAttachmentOrFile const):

        Add a helper method to determine whether the PasteboardItemInfo prefers to be represented as inline data, or an
        attachment, or neither. This differs slightly from the existing value of preferredPresentationStyle in that we
        consider having a suggested file name as a strong indicator that the item should be treated as an attachment,
        even if the presentation style is unspecified.

        * platform/cocoa/PasteboardCocoa.mm:
        (WebCore::Pasteboard::fileContentState):

        Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

        * platform/ios/PasteboardIOS.mm:
        (WebCore::prefersAttachmentRepresentation):

        Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

2019-04-01  Tim Horton  <timothy_horton@apple.com>

        Make UIWKDocumentContext rects per-character instead of per-word
        https://bugs.webkit.org/show_bug.cgi?id=196459

        Reviewed by Wenson Hsieh.

        No new tests; adjusted expected results of WebKit.DocumentEditingContext.

        * editing/TextIterator.cpp:
        (WebCore::CharacterIterator::CharacterIterator):
        * editing/TextIterator.h:
        (WebCore::CharacterIterator::atEnd const):
        (WebCore::CharacterIterator::text const):
        Add WEBCORE_EXPORT to some things.
        Introduce a CharacterIterator constructor that takes Positions, like one that TextIterator has.
        Move initializers to the header.

2019-04-01  Antti Koivisto  <antti@apple.com>

        Update event region when toggling pointer-events:none
        https://bugs.webkit.org/show_bug.cgi?id=195902
        <rdar://problem/48988384>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/event-region-pointer-events.html

        Normally paint invalidation requests compositing configuration update whenever anything that would
        affect event region changes. However mutating 'pointer-events' property does not cause paint invalidation.

        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::styleWillChange):

        Request compositing update explicitly from the containing layer.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::invalidateEventRegion):
        * rendering/RenderLayer.h:

2019-04-01  Chris Dumez  <cdumez@apple.com>

        Support "noreferrer" for window.open()
        https://bugs.webkit.org/show_bug.cgi?id=194533

        Reviewed by Geoffrey Garen.

        Support "noreferrer" for window.open() as per:
        - https://github.com/whatwg/html/pull/4331

        Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html
               http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
        * page/WindowFeatures.cpp:
        (WebCore::setWindowFeature):
        * page/WindowFeatures.h:

2019-04-01  Said Abou-Hallawa  <sabouhallawa@apple.com>

        SVGMatrix.IDL methods do not conform to the specs
        https://bugs.webkit.org/show_bug.cgi?id=196263

        Reviewed by Simon Fraser.

        I think there was a misconception about these functions. The specs link
        is: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.

        Notice that the specs does not state that the SVGMethod methods should
        raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
        only. Notice setting the attribute 'a' for example may raise this
        exception. Therefore, I think the specs wanted to make these operations
        read-only. None of the methods should raise the exception
        NO_MODIFICATION_ALLOWED_ERR.

        In fact the SVG code was doing the right thing. For example SVGMatrix::scale()
        was calling SVGMatrixValue::scale() which was making a copy of itself,
        applying the scale on the copy and then returning the copy. When 
        SVGMatrix::scale() receives the copy of the SVGMatrixValue it creates and
        returns a new SVGMatrix object.

        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGMatrix.h:
        (WebCore::SVGMatrix::create):
        (WebCore::SVGMatrix::a const):
        (WebCore::SVGMatrix::b const):
        (WebCore::SVGMatrix::c const):
        (WebCore::SVGMatrix::d const):
        (WebCore::SVGMatrix::e const):
        (WebCore::SVGMatrix::f const):
        (WebCore::SVGMatrix::multiply const):
        (WebCore::SVGMatrix::inverse const):
        (WebCore::SVGMatrix::translate const):
        (WebCore::SVGMatrix::scale const):
        (WebCore::SVGMatrix::scaleNonUniform const):
        (WebCore::SVGMatrix::rotate const):
        (WebCore::SVGMatrix::rotateFromVector const):
        (WebCore::SVGMatrix::flipX const):
        (WebCore::SVGMatrix::flipY const):
        (WebCore::SVGMatrix::skewX const):
        (WebCore::SVGMatrix::skewY const):
        (WebCore::SVGMatrix::a): Deleted.
        (WebCore::SVGMatrix::b): Deleted.
        (WebCore::SVGMatrix::c): Deleted.
        (WebCore::SVGMatrix::d): Deleted.
        (WebCore::SVGMatrix::e): Deleted.
        (WebCore::SVGMatrix::f): Deleted.
        (WebCore::SVGMatrix::multiply): Deleted.
        (WebCore::SVGMatrix::inverse): Deleted.
        (WebCore::SVGMatrix::translate): Deleted.
        (WebCore::SVGMatrix::scale): Deleted.
        (WebCore::SVGMatrix::scaleNonUniform): Deleted.
        (WebCore::SVGMatrix::rotate): Deleted.
        (WebCore::SVGMatrix::rotateFromVector): Deleted.
        (WebCore::SVGMatrix::flipX): Deleted.
        (WebCore::SVGMatrix::flipY): Deleted.
        (WebCore::SVGMatrix::skewX): Deleted.
        (WebCore::SVGMatrix::skewY): Deleted.
        (WebCore::SVGMatrix::SVGMatrix): Deleted.
        * svg/SVGMatrix.idl:
        * svg/SVGMatrixValue.h: Removed.
        * svg/SVGTransform.cpp:
        (WebCore::SVGTransform::matrix):
        * svg/SVGTransformDistance.cpp:
        (WebCore::SVGTransformDistance::addToSVGTransform const):
        * svg/SVGTransformValue.h:
        (WebCore::SVGTransformValue::matrix const):
        (WebCore::SVGTransformValue::matrix):
        (WebCore::SVGTransformValue::svgMatrix): Deleted.
        (WebCore::operator==): Deleted.
        (WebCore::operator!=): Deleted.
        * svg/properties/SVGMatrixTearOff.h:
        * svg/properties/SVGPropertyTearOff.h:
        (WebCore::SVGPropertyTearOff::propertyReference const):

2019-04-01  Simon Fraser  <simon.fraser@apple.com>

        Plumb through a ScrollType value that indicates whether a scroll was a user or programmatic scroll
        https://bugs.webkit.org/show_bug.cgi?id=196424

        Reviewed by Zalan Bujtas.

        In preparation for fixing webkit.org/b/195584, we need to know if an overflow scroll
        is programmatic, so plumb through an enum value. The functions touched by this patch are
        only ever called for programmatic scrolls.

        * dom/Element.cpp:
        (WebCore::Element::scrollTo):
        (WebCore::Element::setScrollLeft):
        (WebCore::Element::setScrollTop):
        * platform/ScrollTypes.h:
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::setScrollLeft):
        (WebCore::RenderBox::setScrollTop):
        * rendering/RenderBox.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollToXPosition):
        (WebCore::RenderLayer::scrollToYPosition):
        * rendering/RenderLayer.h:
        * rendering/RenderListBox.cpp:
        (WebCore::RenderListBox::setScrollLeft):
        (WebCore::RenderListBox::setScrollTop):
        * rendering/RenderListBox.h:
        * rendering/RenderTextControlSingleLine.cpp:
        (WebCore::RenderTextControlSingleLine::setScrollLeft):
        (WebCore::RenderTextControlSingleLine::setScrollTop):
        * rendering/RenderTextControlSingleLine.h:

2019-04-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements
        https://bugs.webkit.org/show_bug.cgi?id=196435
        Work towards <rdar://problem/48573098>

        Reviewed by Darin Adler.

        Refactor some existing codepaths on iOS for inserting VCard files as attachment elements. Instead of using a
        separate readVirtualContactFile method for converting a vcard file or data into an attachment element (possibly
        accompanied by a link), use the existing readFilePaths WebContentReader method.

        To handle links which may accompany the attachment element, add a helper method in PasteboardIOS that reads a
        titled URL prior to inserting an attachment element, in the case of pasting or dropping a VCF.

        This means we no longer need to handle attachment reading in readPasteboardWebContentDataForType, so we can
        simply bail before reading "public.vcard" here and defer to reading other data types.

        Covered by existing API tests in WKAttachmentTests and DragAndDropTestsIOS.

        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::WebContentReader::readVirtualContactFile): Deleted.
        * platform/Pasteboard.h:
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readPasteboardWebContentDataForType):
        (WebCore::readURLAlongsideAttachmentIfNecessary):
        (WebCore::prefersAttachmentRepresentation):
        (WebCore::Pasteboard::read):
        (WebCore::Pasteboard::readRespectingUTIFidelities):

2019-04-01  Antti Koivisto  <antti@apple.com>

        Trying to scroll the compose pane on gmail.com scrolls the message list behind
        https://bugs.webkit.org/show_bug.cgi?id=196426
        <rdar://problem/49402667>

        Reviewed by Darin Adler.

        Test: fast/scrolling/ios/event-region-visibility-hidden.html

        We fail to gather event region from desdendants of non-overflowing elements with 'visibility:hidden'.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):

        Skip the subtree walk only if the current region covers the box already.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintList):

        Remove the (wrong) optimization, we bail out quickly on first renderer if possible so this is not high value.

2019-04-01  Emilio Cobos Álvarez  <emilio@crisal.io>

        Be less strict about closing blocks in attribute and functional pseudo-element selectors.
        https://bugs.webkit.org/show_bug.cgi?id=142167

        Reviewed by Antti Koivisto.

        This was also an issue for, e.g., "::slotted(foo", turns out.

        This matches Chromium, Firefox, and the spec:

        https://drafts.csswg.org/css-syntax/#parse-error:

        > Certain points in the parsing algorithm are said to be parse errors. The error
        > handling for parse errors is well-defined: user agents must either act as
        > described below when encountering such problems, or must abort processing at
        > the first error that they encounter for which they do not wish to apply the
        > rules described below.

        https://drafts.csswg.org/css-syntax/#consume-simple-block:

        > <EOF-token>
        >   This is a parse error. Return the block.

        Tests: web-platform-tests/dom/nodes/selectors.js (and probably others)

        * css/parser/CSSSelectorParser.cpp:
        (WebCore::CSSSelectorParser::consumeAttribute):
        (WebCore::CSSSelectorParser::consumePseudo):

2019-04-01  Pablo Saavedra  <psaavedra@igalia.com>

        Build failure after r243644 in GTK Linux 64-bit stable builds
        https://bugs.webkit.org/show_bug.cgi?id=196440

        Reviewed by Philippe Normand.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):

2019-03-31  Manuel Rego Casasnovas  <rego@igalia.com>

        Scroll position gets reset when overflow:scroll is inside grid
        https://bugs.webkit.org/show_bug.cgi?id=196337
        <rdar://problem/49385784>

        Reviewed by Simon Fraser.

        Fix scroll position when there are changes inside a grid item with "overflow: scroll".

        Test: fast/css-grid-layout/grid-item-content-scroll-position.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::layoutBlock): Use beginUpdateScrollInfoAfterLayoutTransaction()
        and endAndCommitUpdateScrollInfoAfterLayoutTransaction().

2019-03-31  Ryosuke Niwa  <rniwa@webkit.org>

        Reduce the size of Node::deref by eliminating an explicit parentNode check
        https://bugs.webkit.org/show_bug.cgi?id=195776

        Reviewed by Darin Adler.

        Address post-commit review comments.

        * dom/Document.cpp:
        (WebCore::Document::removedLastRef):
        * dom/Node.cpp:
        (WebCore::Node::~Node):
        (WebCore::Node::removedLastRef):
        * dom/Node.h:
        (WebCore::Node::deref):
        (WebCore::Node::setParentNode):

2019-03-31  Sam Weinig  <weinig@apple.com>

        Remove more i386 specific configurations
        https://bugs.webkit.org/show_bug.cgi?id=196430

        Reviewed by Alexey Proskuryakov.

        * Configurations/FeatureDefines.xcconfig:
        ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

2019-03-31  Andy Estes  <aestes@apple.com>

        [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
        https://bugs.webkit.org/show_bug.cgi?id=196433
        <rdar://problem/49293305>

        Reviewed by Tim Horton.

        When ResourceLoader would encounter a response with a MIME type that QuickLook supports, the
        response would be implicitly allowed and a QuickLook preview would be generated. After
        generating, the client's navigation response policy delegate would be notified of the
        preview response, but not the underlying response. Notably, the preview response has a URL
        scheme of "x-apple-ql-id", does not include any underlying HTTP headers, and usually has a
        MIME type of "text/html" or "application/pdf" rather than the underlying response MIME type.

        To allow clients to make better navigation response policy decisions, this patch changes the
        above behavior for WKWebView clients that have linked against a version of WebKit that
        includes this change. Rather than notifying the client's navigation response policy delegate
        of the preview response, we notify the client of the underlying response. Only if the client
        responds with a policy of "allow" will the QuickLook preview response be loaded (without
        another call to the navigation response policy delegate).

        Non-WKWebView clients and clients that have linked against a version of WebKit that does not
        include this change will retain the original behavior.

        Covered by existing layout tests and new and existing API tests.

        * WebCore.xcodeproj/project.pbxproj:
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::shouldCreatePreviewLoaderForResponse const):
        (WebCore::SubresourceLoader::didReceiveResponse):
        * loader/ios/PreviewLoader.h:
        * loader/ios/PreviewLoader.mm:
        (-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
        (-[WebPreviewLoader _loadPreviewIfNeeded]):
        (-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
        (-[WebPreviewLoader connectionDidFinishLoading:]):
        (-[WebPreviewLoader connection:didFailWithError:]):
        (WebCore::PreviewLoader::create):
        (WebCore::PreviewLoader::didReceiveResponse):
        (-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): Deleted.
        (WebCore::PreviewLoader::shouldCreateForMIMEType): Deleted.
        * page/Settings.yaml:
        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::canShowMIMEType):
        * platform/network/ios/PreviewConverter.h:
        * platform/network/ios/PreviewConverter.mm:
        (WebCore::PreviewConverter::supportsMIMEType):

2019-03-29  Dean Jackson  <dino@apple.com>

        gl.readPixels with type gl.FLOAT does not work
        https://bugs.webkit.org/show_bug.cgi?id=171432
        <rdar://problem/31905150>

        Reviewed by Antoine Quint.

        Our validation code was identifying readPixels of
        type FLOAT as invalid, for three reasons:
        - we didn't support the FLOAT type at all.
        - we only allowed the combination of RGBA and
        UNSIGNED_BYTE in WebGL 1 [*].
        - if we had a framebuffer of format RGBA, we assumed
        we could only read into a Uint8 ArrayBuffer.

        [*] This bug isn't completely fixed, so I opened
        https://bugs.webkit.org/show_bug.cgi?id=196418

        Test: fast/canvas/webgl/readPixels-float.html

        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::readPixels):
        - flip the logic in a conditional that was clearly wrong yet
          thankfully had no impact.
        - support type FLOAT when the relevant extension is enabled.
        - allow FLOAT as a valid type (see new bug above)
        - create a new macro for CHECK_COMPONENT_COUNT
        - update the existing macros to not be case statements,
          so that we can put logic in the switch.

2019-03-30  Antti Koivisto  <antti@apple.com>

        Try to fix Windows build.

        * platform/graphics/RoundedRect.cpp:
        (WebCore::approximateAsRegion):

2019-03-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: JSC Sampling Profiler thread not getting subtracted in CPU Usage Timeline
        https://bugs.webkit.org/show_bug.cgi?id=196419
        <rdar://problem/49444023>

        Reviewed by Devin Rousso.

        * page/ResourceUsageThread.cpp:
        (WebCore::ResourceUsageThread::addObserver):
        We forgot to call the function that would setup platform state
        allowing us to subtract out the sampling profiler thread.

2019-03-30  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add iFrame elements to the list of "considered clickable" elements.
        https://bugs.webkit.org/show_bug.cgi?id=196410
        <rdar://problem/49436828>

        Reviewed by Simon Fraser.

        163.com constructs an iFrame to display the login pane on hover. This patch ensures that we take iFrames into account while observing for visible content change by considering iFrame elements "clickable".
        (While iFrames don't necessarily have clickable content, we can't just sit and wait until they are fully loaded.)

        Test: fast/events/touch/ios/content-observation/iframe-is-shown-on-hover.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

2019-03-30  Antti Koivisto  <antti@apple.com>

        Try to fix Windows build.

        * platform/graphics/Region.cpp:
        * platform/graphics/RoundedRect.cpp:

2019-03-30  Antti Koivisto  <antti@apple.com>

        Hit-testing of boxes over scrollers should account for border-radius
        https://bugs.webkit.org/show_bug.cgi?id=195374
        <rdar://problem/48649993>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/border-radious-event-region.html

        * page/Frame.h:
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::dumpProperties const):

        Testing support.

        * platform/graphics/GraphicsLayerClient.h:
        * platform/graphics/RoundedRect.cpp:
        (WebCore::approximateAsRegion):

        Add a function to approximate RoundedRects as Regions.
        It cuts away rectangles from the corners following the corner shapes.
        More rectangles are cut for larger radii.

        * platform/graphics/RoundedRect.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):

        Use the new interface to get rounded corners right.
        In rectangle case this takes optimized paths.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerTreeAsText):
        * testing/Internals.cpp:
        (WebCore::toLayerTreeFlags):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-03-29  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Expand DOM timer observation to 350ms
        https://bugs.webkit.org/show_bug.cgi?id=196411
        <rdar://problem/49391144>

        Reviewed by Simon Fraser.

        imdb.com main page has 350ms hover intent timer to bring up the hover menus around the search bar.

        Test: fast/events/touch/ios/content-observation/350ms-hover-intent.html

        * page/ios/ContentChangeObserver.cpp:

2019-03-29  John Wilander  <wilander@apple.com>

        Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
        https://bugs.webkit.org/show_bug.cgi?id=196407
        <rdar://problem/47859936>

        Reviewed by Brent Fulgham.

        Test: http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html

        This patch removes old code for the batching into "statistics updated" calls.
        Since the move of Resource Load Statistics to the network process, all such
        collection is done directly through dedicated calls to the network process.

        The remaining functionality was renamed to make it more clear, i.e.
        ResourceLoadObserver::notifyObserver() renamed to
        ResourceLoadObserver::updateCentralStatisticsStore().

        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback):
        (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
        (WebCore::ResourceLoadObserver::logSubresourceLoading):
        (WebCore::ResourceLoadObserver::logWebSocketLoading):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
        (WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
        (WebCore::ResourceLoadObserver::clearState):
        (WebCore::ResourceLoadObserver::setNotificationCallback): Deleted.
        (WebCore::ResourceLoadObserver::ResourceLoadObserver): Deleted.
        (WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded): Deleted.
        (WebCore::ResourceLoadObserver::notifyObserver): Deleted.
        * loader/ResourceLoadObserver.h:
        * testing/Internals.cpp:
        (WebCore::Internals::notifyResourceLoadObserver):

2019-03-29  Chris Dumez  <cdumez@apple.com>

        Make someWindow.frames, .self, .window always return someWindow
        https://bugs.webkit.org/show_bug.cgi?id=195406

        Reviewed by Alex Christensen.

        Make someWindow.frames, .self, .window always return someWindow. Previously, they
        would return null when the window would lose its browsing context.

        This aligns our behavior with Firefox and the HTML specification:
        - https://github.com/whatwg/html/pull/4410

        Chrome has also recently aligned with Firefox and the HTML specification here so
        it makes sense for WebKit to follow.

        No new tests, rebaselined existing tests.

        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::JSDOMWindow::self const):
        (WebCore::JSDOMWindow::window const):
        (WebCore::JSDOMWindow::frames const):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::focus):
        * page/DOMWindow.h:
        * page/DOMWindow.idl:

2019-03-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete WebMetal implementation in favor of WebGPU
        https://bugs.webkit.org/show_bug.cgi?id=195418

        Reviewed by Dean Jackson.

        WebMetal was only ever intended to be a proof-of-concept, and was never intended to be shipped.
        Now that our WebGPU implementation is achieving good functionality, we're hitting conflicts
        because we have both implementations. We should delete the non-standard implementation in favor
        of the standards-based implementation.

        Deletes relevant tests.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Removed.
        * bindings/js/JSWebMetalRenderingContextCustom.cpp: Removed.
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/Document.cpp:
        (WebCore::Document::getCSSCanvasContext):
        * dom/Document.h:
        * dom/Document.idl:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::getContext):
        (WebCore::HTMLCanvasElement::isWebMetalType): Deleted.
        (WebCore::HTMLCanvasElement::createContextWebMetal): Deleted.
        (WebCore::HTMLCanvasElement::getContextWebMetal): Deleted.
        * html/HTMLCanvasElement.h:
        * html/HTMLCanvasElement.idl:
        * html/canvas/CanvasRenderingContext.h:
        (WebCore::CanvasRenderingContext::isWebGPU const):
        (WebCore::CanvasRenderingContext::isWebMetal const): Deleted.
        * html/canvas/WebMetalBuffer.cpp: Removed.
        * html/canvas/WebMetalBuffer.h: Removed.
        * html/canvas/WebMetalBuffer.idl: Removed.
        * html/canvas/WebMetalCommandBuffer.cpp: Removed.
        * html/canvas/WebMetalCommandBuffer.h: Removed.
        * html/canvas/WebMetalCommandBuffer.idl: Removed.
        * html/canvas/WebMetalCommandQueue.cpp: Removed.
        * html/canvas/WebMetalCommandQueue.h: Removed.
        * html/canvas/WebMetalCommandQueue.idl: Removed.
        * html/canvas/WebMetalComputeCommandEncoder.cpp: Removed.
        * html/canvas/WebMetalComputeCommandEncoder.h: Removed.
        * html/canvas/WebMetalComputeCommandEncoder.idl: Removed.
        * html/canvas/WebMetalComputePipelineState.cpp: Removed.
        * html/canvas/WebMetalComputePipelineState.h: Removed.
        * html/canvas/WebMetalComputePipelineState.idl: Removed.
        * html/canvas/WebMetalDepthStencilDescriptor.cpp: Removed.
        * html/canvas/WebMetalDepthStencilDescriptor.h: Removed.
        * html/canvas/WebMetalDepthStencilDescriptor.idl: Removed.
        * html/canvas/WebMetalDepthStencilState.cpp: Removed.
        * html/canvas/WebMetalDepthStencilState.h: Removed.
        * html/canvas/WebMetalDepthStencilState.idl: Removed.
        * html/canvas/WebMetalDrawable.cpp: Removed.
        * html/canvas/WebMetalDrawable.h: Removed.
        * html/canvas/WebMetalDrawable.idl: Removed.
        * html/canvas/WebMetalEnums.cpp: Removed.
        * html/canvas/WebMetalEnums.h: Removed.
        * html/canvas/WebMetalEnums.idl: Removed.
        * html/canvas/WebMetalFunction.cpp: Removed.
        * html/canvas/WebMetalFunction.h: Removed.
        * html/canvas/WebMetalFunction.idl: Removed.
        * html/canvas/WebMetalLibrary.cpp: Removed.
        * html/canvas/WebMetalLibrary.h: Removed.
        * html/canvas/WebMetalLibrary.idl: Removed.
        * html/canvas/WebMetalRenderCommandEncoder.cpp: Removed.
        * html/canvas/WebMetalRenderCommandEncoder.h: Removed.
        * html/canvas/WebMetalRenderCommandEncoder.idl: Removed.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPassDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPassDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPassDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPipelineDescriptor.cpp: Removed.
        * html/canvas/WebMetalRenderPipelineDescriptor.h: Removed.
        * html/canvas/WebMetalRenderPipelineDescriptor.idl: Removed.
        * html/canvas/WebMetalRenderPipelineState.cpp: Removed.
        * html/canvas/WebMetalRenderPipelineState.h: Removed.
        * html/canvas/WebMetalRenderPipelineState.idl: Removed.
        * html/canvas/WebMetalRenderingContext.cpp: Removed.
        * html/canvas/WebMetalRenderingContext.h: Removed.
        * html/canvas/WebMetalRenderingContext.idl: Removed.
        * html/canvas/WebMetalSize.h: Removed.
        * html/canvas/WebMetalSize.idl: Removed.
        * html/canvas/WebMetalTexture.cpp: Removed.
        * html/canvas/WebMetalTexture.h: Removed.
        * html/canvas/WebMetalTexture.idl: Removed.
        * html/canvas/WebMetalTextureDescriptor.cpp: Removed.
        * html/canvas/WebMetalTextureDescriptor.h: Removed.
        * html/canvas/WebMetalTextureDescriptor.idl: Removed.
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildObjectForCanvas):
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::requestContent):
        (WebCore::contextAsScriptValue):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setWebMetalEnabled): Deleted.
        (WebCore::RuntimeEnabledFeatures::webMetalEnabled const): Deleted.
        * platform/Logging.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        * platform/graphics/cocoa/WebMetalLayer.h: Removed.
        * platform/graphics/cocoa/WebMetalLayer.mm: Removed.
        * platform/graphics/gpu/legacy/GPULegacyBuffer.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyBuffer.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyCommandBuffer.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyCommandBuffer.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyCommandQueue.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyCommandQueue.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyComputePipelineState.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyComputePipelineState.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilState.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilState.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDevice.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDevice.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDrawable.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyDrawable.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyEnums.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyFunction.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyFunction.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyLibrary.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyLibrary.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacySize.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyTexture.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyTexture.h: Removed.
        * platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.cpp: Removed.
        * platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.h: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyBufferMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyCommandQueueMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyComputeCommandEncoderMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyComputePipelineStateMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilStateMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDeviceMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDrawableMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyFunctionMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyLibraryMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderCommandEncoderMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassAttachmentDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineStateMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyTextureDescriptorMetal.mm: Removed.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyTextureMetal.mm: Removed.
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setWebMetalEnabled): Deleted.
        * testing/InternalSettings.h:
        * testing/InternalSettings.idl:

2019-03-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: add fast returns for instrumentation hooks that have no affect before a frontend is connected
        https://bugs.webkit.org/show_bug.cgi?id=196382
        <rdar://problem/49403417>

        Reviewed by Joseph Pecoraro.

        Ensure that all instrumentation hooks use `FAST_RETURN_IF_NO_FRONTENDS` or check that
        `developerExtrasEnabled`. There should be no activity to/from any inspector objects until
        developer extras are enabled.

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::didClearWindowObjectInWorld):
        (WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSP):
        (WebCore::InspectorInstrumentation::domContentLoadedEventFired):
        (WebCore::InspectorInstrumentation::loadEventFired):
        (WebCore::InspectorInstrumentation::frameDetachedFromParent):
        (WebCore::InspectorInstrumentation::loaderDetachedFromFrame):
        (WebCore::InspectorInstrumentation::frameStartedLoading):
        (WebCore::InspectorInstrumentation::frameStoppedLoading):
        (WebCore::InspectorInstrumentation::frameScheduledNavigation):
        (WebCore::InspectorInstrumentation::frameClearedScheduledNavigation):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::frameWindowDiscardedImpl):
        (WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
        (WebCore::InspectorInstrumentation::didFailLoadingImpl):
        (WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
        (WebCore::InspectorInstrumentation::consoleCountImpl):
        (WebCore::InspectorInstrumentation::startConsoleTimingImpl):
        (WebCore::InspectorInstrumentation::stopConsoleTimingImpl):

        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::frameWindowDiscarded):

2019-03-29  Chris Dumez  <cdumez@apple.com>

        Set window.closed immediately when close() is invoked
        https://bugs.webkit.org/show_bug.cgi?id=195409

        Reviewed by Alex Christensen.

        Window.closed should return true if it is closing:
        - https://html.spec.whatwg.org/#dom-window-closed

        Window.close() sets the 'is closing' flag to true synchronously, as per:
        - https://html.spec.whatwg.org/#dom-window-close (step 3.1)

        No new tests, rebaselined existing tests.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::closed const):

2019-03-29  Zalan Bujtas  <zalan@apple.com>

        [Simple line layout] Turn off inline boxtree generation for multiline content
        https://bugs.webkit.org/show_bug.cgi?id=196404
        <rdar://problem/49234033>

        Reviewed by Simon Fraser.

        Currently simple line layout can't provide the correct line breaking context to the inline tree when the boxtree is
        generated using the simple line runs. This patch limits the generation of such trees to single lines. Multiline content will
        go through the "let's layout this content again" codepath.
        This patch fixes disappearing content on Questar.

        Test: fast/text/simple-line-layout-and-multiline-inlineboxtree.html

        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::canUseForLineBoxTree):

2019-03-29  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Replace unsigned longs in WebGPU with uint64_t
        https://bugs.webkit.org/show_bug.cgi?id=196401

        Reviewed by Myles C. Maxfield.

        Unsigned long is not guaranteed to be 64 bits on all platforms. In addition, rowPitch is updated
        to u32 in the API and the implementation to match.

        No new tests. No new behavior.

        * Modules/webgpu/WebGPUBuffer.cpp:
        (WebCore::WebGPUBuffer::setSubData):
        * Modules/webgpu/WebGPUBuffer.h:
        * Modules/webgpu/WebGPUBufferBinding.h:
        * Modules/webgpu/WebGPUCommandEncoder.cpp:
        (WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
        * Modules/webgpu/WebGPUCommandEncoder.h:
        * Modules/webgpu/WebGPUCommandEncoder.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::byteLength const):
        * platform/graphics/gpu/GPUBufferBinding.h:
        * platform/graphics/gpu/GPUBufferDescriptor.h:
        * platform/graphics/gpu/GPUCommandBuffer.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::setSubData):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::copyBufferToBuffer):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setVertexBuffers):

2019-03-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r243250): Text interactions are no longer suppressed when editing in some websites
        https://bugs.webkit.org/show_bug.cgi?id=196378
        <rdar://problem/49231299>

        Reviewed by Simon Fraser.

        Enabling async overflow scrolling by default in r243250 exposed an issue with hidden editable area detection
        heuristics. Currently, an empty value for RenderLayer::selfClipRect is used to determine whether the layer
        enclosing the editable element or form control is completely clipped by a parent (in other words, the clip rect
        is empty). With async overflow scrolling, the enclosing layer of the editable element (as seen in the websites
        affected by this bug) will now be a clipping root for painting, since it is composited. This means selfClipRect
        returns a non-empty rect despite the layer being entirely clipped, which negates the heuristic.

        To address this, we adjust the clipping heuristic to instead walk up the layer tree (crossing frame boundaries)
        and look for enclosing ancestors with overflow clip. For each layer we find with an overflow clip, compute the
        clip rect of the previous layer relative to the ancestor with overflow clip. If the clipping rect is empty, we
        know that the layer is hidden.

        This isn't a perfect strategy, since it may still report false negatives (reporting a layer as visible when it
        is not) in some cases. One such edge case is a series of overflow hidden containers, nested in such a way that
        each container is only partially clipped relative to its ancestor, but the deepest layer is completely clipped
        relative to the topmost layer. However, this heuristic is relatively cheap (entailing a layer tree walk at
        worst) and works for common use cases on the web without risking scenarios in which text selection that
        shouldn't be suppressed ends up becoming suppressed.

        Test: editing/selection/ios/hide-selection-in-textarea-with-transform.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::isTransparentOrFullyClippedRespectingParentFrames const):

2019-03-29  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Add Server Trust Evaluation Support.
        https://bugs.webkit.org/show_bug.cgi?id=191646

        Reviewed by Fujii Hironori.

        Tests: http/tests/ssl/iframe-upgrade.https.html
               http/tests/ssl/mixedContent/insecure-websocket.html
               http/tests/ssl/upgrade-origin-usage.html

        * platform/network/curl/AuthenticationChallenge.h:
        * platform/network/curl/AuthenticationChallengeCurl.cpp:
        (WebCore::AuthenticationChallenge::AuthenticationChallenge):
        (WebCore::AuthenticationChallenge::protectionSpaceForPasswordBased):
        (WebCore::AuthenticationChallenge::protectionSpaceForServerTrust):
        (WebCore::AuthenticationChallenge::protectionSpaceFromHandle): Deleted.
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::disableServerTrustEvaluation):
        * platform/network/curl/CurlContext.h:
        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::setupTransfer):
        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::disableServerTrustEvaluation):

2019-03-29  Ryosuke Niwa  <rniwa@webkit.org>

        Pasting a table from Confluence strip of table cell content
        https://bugs.webkit.org/show_bug.cgi?id=196390

        Reviewed by Antti Koivisto.

        The bug was ultimately caused by FrameView of the document we use to sanitize the pasteboard content
        having 0px by 0px dimension. This caused div with `overflow-x: auto` surrounding a table to have
        the height of 0px. Because StyledMarkupAccumulator::renderedTextRespectingRange uses TextIterator
        to serialize a text node and this div was an ancestor of the text node, TextIterator::handleTextNode
        ended up exiting early.

        Fixed the bug by giving FrameView, which is used to sanitize the content, a dimension of 800px by 600px.

        Using TextIteratorIgnoresStyleVisibility is not a great alternative since removing invisible content
        during paste is an important privacy feature.

        Test: editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html

        * editing/markup.cpp:
        (WebCore::createPageForSanitizingWebContent):

2019-03-29  Antoine Quint  <graouts@apple.com>

        WebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html
        https://bugs.webkit.org/show_bug.cgi?id=196345

        Reviewed by Dean Jackson.

        An enum used within a WTF::OptionSet needs to have only power-of-two values that are larger than 0.

        * platform/TouchAction.h:
        * rendering/style/StyleRareNonInheritedData.h:

2019-03-29  Michael Catanzaro  <mcatanzaro@igalia.com>

        HTMLInputElement::setEditingValue should not fail if renderer doesn't exist
        https://bugs.webkit.org/show_bug.cgi?id=195708

        Reviewed by Wenson Hsieh.

        HTMLInputElement::setEditingValue currently returns early if the element's renderer() is
        null. This is causing the Epiphany password manager to fail to remember passwords on
        https://www.geico.com/ except for navigations through page cache.

        This check was originally added to avoid some assertion, but I don't know which one, and
        there's definitely not any assertion hit nowadays in this case. Probably there are more
        guards checking if renderer() is null elsewhere in the code nowadays, closer to where it's
        really needed.

        Test: fast/forms/editing-value-null-renderer.html

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setEditingValue):

2019-03-29  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rebaseline WPT test after r243638.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-03-28  Antoine Quint  <graouts@apple.com>

        All PointerEvent.isTrusted is always false.
        https://bugs.webkit.org/show_bug.cgi?id=196075
        <rdar://problem/49158778>

        Reviewed by Chris Dumez.

        Test: pointerevents/ios/pointer-events-is-trusted.html

        The constructors we were using for some PointerEvent::create() methods were using initializers which are expected to be used with JS APIs
        and thus generate untrusted events. We switch to using constructors using dedicated parameters which will set isTrusted to true.

        * dom/PointerEvent.cpp:
        (WebCore::PointerEvent::create):
        (WebCore::PointerEvent::createPointerCancelEvent):
        (WebCore::PointerEvent::PointerEvent):
        (WebCore::m_isPrimary):
        (WebCore::m_pointerType):
        * dom/PointerEvent.h:
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::cancelPointer):

2019-03-29  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] imxvpudecoder detection and handling
        https://bugs.webkit.org/show_bug.cgi?id=196346

        Reviewed by Xabier Rodriguez-Calvar.

        When the imxvpudecoder is used, the texture sampling of the
        directviv-uploaded texture returns an RGB value, so there's no need
        to convert it. This patch also includes a refactoring of the
        ImageRotation flag handling. The flag is now computed once only
        and stored in an instance variable.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
        (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
        (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
        (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
        (WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
        (WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
        (WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):
        (WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
        (WebCore::texMapFlagFromOrientation): Deleted.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

2019-03-29  Cathie Chen  <cathiechen@igalia.com>

        Implement ResizeObserver.
        https://bugs.webkit.org/show_bug.cgi?id=157743

        Reviewed by Simon Fraser.

        Tests: resize-observer/modify-frametree-in-callback.html
               resize-observer/multi-frames.html
               resize-observer/observe-element-from-other-frame.html
               Imported from WPT by https://bugs.webkit.org/show_bug.cgi?id=193821

        The data structure: Document has a ResizeObserver slot. ResizeObserver has a ResizeObservation slot.
        ResizeObservation is related to one Element and the last reported size.
        On the other hand, Element has a ResizeObservation slot.

        At the beginning of willDisplayPage, it will check resize observations for current page if:
        1. There is FrameView be layout and there are ResizeObservers in this page.
        2. m_resizeObserverTimer has been started by observe() or hasSkippedResizeObservers().
        During checkResizeObservations(), we'll gatherDocumentsNeedingResizeObservationCheck() first,
        then notifyResizeObservers() for each document. During notifyResizeObservers(), it will gather
        the m_activeObservations whose size changed and target element deeper than require depth.
        The size changed shallower observations are skipped observations which will be delivered
        in the next time. And an ErrorEvent will be reported.
        After gathering, deliverResizeObservations create entries and invoke the callbacks with them.

        The Element from other document could be observed.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/Document.cpp:
        (WebCore::Document::getParserLocation const):
        (WebCore::Document::addResizeObserver):
        (WebCore::Document::removeResizeObserver):
        (WebCore::Document::hasResizeObservers):
        (WebCore::Document::gatherResizeObservations): Gather m_activeObservations at depth and return the shallowest depth.
        (WebCore::Document::deliverResizeObservations): Deliver m_activeObservations, generate ResizeObserverEntries, and invoke the m_callbacks.
        (WebCore::Document::hasSkippedResizeObservations const): To determine if Document has the size changed but not delivered observations.
        (WebCore::Document::setHasSkippedResizeObservations):
        (WebCore::Document::scheduleResizeObservations):
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::~Element):
        (WebCore::Element::disconnectFromResizeObservers):
        (WebCore::Element::ensureResizeObserverData):
        (WebCore::Element::resizeObserverData):
        * dom/Element.h:
        * dom/ElementRareData.cpp:
        * dom/ElementRareData.h:
        (WebCore::ElementRareData::resizeObserverData):
        (WebCore::ElementRareData::setResizeObserverData):
        (WebCore::ElementRareData::useTypes const):
        * page/FrameView.cpp:
        (WebCore::FrameView::didLayout):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::layoutTimerFired): We need to start a ResizeObserver timer here, because for WK1 this might not trigger flushCompositingChanges.
        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::willDisplayPage):
        (WebCore::Page::hasResizeObservers const):
        (WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Gather the documents with resize observers.
        (WebCore::Page::checkResizeObservations): Gather documents then notifyResizeObservers for each document.
        (WebCore::Page::scheduleResizeObservations):
        (WebCore::Page::notifyResizeObservers): Gather m_activeObservations and deliver them. Report ErrorEvent if it has skipped observations.
        * page/Page.h:
        (WebCore::Page::setNeedsCheckResizeObservations): Page needs to check ResizeObservations if FrameView layout or m_resizeObserverTimer has been started.
        (WebCore::Page::needsCheckResizeObservations const):
        * page/PageConsoleClient.cpp:
        (WebCore::PageConsoleClient::addMessage):
        (WebCore::getParserLocationForConsoleMessage): Deleted.
        * page/ResizeObservation.cpp: Added.
        (WebCore::ResizeObservation::create):
        (WebCore::ResizeObservation::ResizeObservation):
        (WebCore::ResizeObservation::~ResizeObservation):
        (WebCore::ResizeObservation::updateObservationSize):
        (WebCore::ResizeObservation::computeObservedSize const):
        (WebCore::ResizeObservation::computeTargetLocation const):
        (WebCore::ResizeObservation::computeContentRect const):
        (WebCore::ResizeObservation::elementSizeChanged const):
        (WebCore::ResizeObservation::targetElementDepth const):
        * page/ResizeObservation.h: Copied from Tools/DumpRenderTree/TestOptions.h.
        (WebCore::ResizeObservation::target const):
        * page/ResizeObserver.cpp: Added.
        (WebCore::ResizeObserver::create):
        (WebCore::ResizeObserver::ResizeObserver):
        (WebCore::ResizeObserver::~ResizeObserver):
        (WebCore::ResizeObserver::scheduleObservations):
        (WebCore::ResizeObserver::observe):
        (WebCore::ResizeObserver::unobserve):
        (WebCore::ResizeObserver::disconnect):
        (WebCore::ResizeObserver::targetDestroyed):
        (WebCore::ResizeObserver::gatherObservations):
        (WebCore::ResizeObserver::deliverObservations):
        (WebCore::ResizeObserver::removeTarget):
        (WebCore::ResizeObserver::removeAllTargets):
        (WebCore::ResizeObserver::removeObservation):
        (WebCore::ResizeObserver::hasPendingActivity const):
        (WebCore::ResizeObserver::activeDOMObjectName const):
        (WebCore::ResizeObserver::canSuspendForDocumentSuspension const):
        (WebCore::ResizeObserver::stop):
        * page/ResizeObserver.h: Added.
        (WebCore::ResizeObserver::hasObservations const):
        (WebCore::ResizeObserver::hasActiveObservations const):
        (WebCore::ResizeObserver::maxElementDepth):
        (WebCore::ResizeObserver::hasSkippedObservations const):
        (WebCore::ResizeObserver::setHasSkippedObservations):
        * page/ResizeObserver.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
        * page/ResizeObserverCallback.h: Copied from Tools/DumpRenderTree/TestOptions.h.
        * page/ResizeObserverCallback.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
        * page/ResizeObserverEntry.h: Copied from Tools/DumpRenderTree/TestOptions.h.
        (WebCore::ResizeObserverEntry::create):
        (WebCore::ResizeObserverEntry::target const):
        (WebCore::ResizeObserverEntry::contentRect const):
        (WebCore::ResizeObserverEntry::ResizeObserverEntry):
        * page/ResizeObserverEntry.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
        * page/Settings.yaml:

2019-03-28  Chris Dumez  <cdumez@apple.com>

        Support <object>.contentWindow
        https://bugs.webkit.org/show_bug.cgi?id=195562

        Reviewed by Sam Weinig.

        Support <object>.contentWindow as per:
        - https://html.spec.whatwg.org/multipage/iframe-embed-object.html#dom-object-contentwindow

        No new tests, updated / rebaselined existing tests.

        * html/HTMLObjectElement.idl:

2019-03-28  Myles C. Maxfield  <mmaxfield@apple.com>

        FontFace constructor throws an exception when there is a name which starts with a number
        https://bugs.webkit.org/show_bug.cgi?id=196232
        <rdar://problem/49293978>

        Reviewed by Ryosuke Niwa.

        We were technically following the spec, but Chrome and Firefox are both consistent and it was making a website break.
        This is just a short-term fix until the underlying https://bugs.webkit.org/show_bug.cgi?id=196381 is fixed.

        Test: fast/text/font-face-family.html

        * css/FontFace.cpp:
        (WebCore::FontFace::setFamily):

2019-03-28  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
        https://bugs.webkit.org/show_bug.cgi?id=194618
        <rdar://problem/48055796>

        Reviewed by Myles C. Maxfield.

        WebIDL for "unsigned" on 64-bit is "unsigned long". Update Web GPU to match.

        No new tests; no change in behavior.

        * Modules/webgpu/GPUBindGroupLayoutBinding.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp:
        (WebCore::WHLSL::Metal::calculateVertexBufferIndex):
        * Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h:
        * Modules/webgpu/WebGPUBindGroupBinding.h:
        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::validateBufferBindingType):
        (WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
        * Modules/webgpu/WebGPUBuffer.cpp:
        (WebCore::WebGPUBuffer::setSubData):
        * Modules/webgpu/WebGPUBuffer.h:
        * Modules/webgpu/WebGPUBufferBinding.h:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        (WebCore::WebGPURenderPassEncoder::draw):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * platform/graphics/gpu/GPUBindGroupBinding.h:
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        * platform/graphics/gpu/GPUBufferBinding.h:
        * platform/graphics/gpu/GPUExtent3D.h:
        * platform/graphics/gpu/GPULimits.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/GPUTextureDescriptor.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::GPUBindGroupLayout::tryCreate):
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::GPUBindGroup::tryCreate):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setVertexBuffers):
        (WebCore::GPURenderPassEncoder::draw):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetInputStateForPipelineDescriptor):
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::storageModeForPixelFormatAndSampleCount):

2019-03-28  Ryosuke Niwa  <rniwa@webkit.org>

        getBoundingClientRect always returns empty rect on a collapsed range
        https://bugs.webkit.org/show_bug.cgi?id=196380

        Reviewed by Wenson Hsieh.

        The bug was caused by Range::boundingRect merging rects via FloatRect::unite which ignores empty rects.
        Use uniteIfNonZero instead to fix the bug. Note that we can't use uniteEvenIfEmpty because that would
        set x, y to always 0, 0 as we would end up merging any rect with the initial empty rect.

        Test: fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html

        * dom/Range.cpp:
        (WebCore::Range::boundingRect const):

2019-03-28  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Prototype compute pipeline with MSL
        https://bugs.webkit.org/show_bug.cgi?id=196107
        <rdar://problem/46289650>

        Reviewed by Myles Maxfield.

        Add GPUComputePassEncoder, GPUComputePipeline, and GPUComputePipelineDescriptor.
        Implement everything needed to prototype a compute pipeline in Web GPU using Metal shaders and bound resources.

        Test: webgpu/compute-squares.html

        Add files and symbols:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Misc fixes:
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h: Missing include.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Missing include.
        * Modules/webgpu/WebGPUPipelineStageDescriptor.cpp: Added. Move pipeline stage validation logic here.
        (WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const):
        * Modules/webgpu/WebGPURenderPipeline.cpp: Remove unnecessary include.
        * Modules/webgpu/WebGPURenderPipeline.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.cpp: Add missing inlcude.
        (WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const): Moved to WebGPUPipelineStageDescriptor.cpp.
        * platform/graphics/gpu/GPUPipelineDescriptorBase.h: Add missing include.
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Add missing include.
        (WebCore::GPURenderPipeline::GPURenderPipeline): Remove unecessary ref of GPUPipelineLayout.
        * platform/text/mac/TextEncodingRegistryMac.mm: Carbon.h was causing ambiguous reference build errors in this file.

        Enable creating a GPUComputePassEncoder from a GPUCommandEncoder:
        * Modules/webgpu/WebGPUCommandEncoder.cpp:
        (WebCore::WebGPUCommandEncoder::beginRenderPass): No longer passing this WebGPUCommandEncoder to pass encoders.
        (WebCore::WebGPUCommandEncoder::beginComputePass): Added.
        * Modules/webgpu/WebGPUCommandEncoder.h:
        * Modules/webgpu/WebGPUCommandEncoder.idl:

        Add GPUComputePassEncoder:
        * Modules/webgpu/WebGPUComputePassEncoder.cpp: Added.
        (WebCore::WebGPUComputePassEncoder::create):
        (WebCore::WebGPUComputePassEncoder::WebGPUComputePassEncoder):
        (WebCore::WebGPUComputePassEncoder::setPipeline):
        (WebCore::WebGPUComputePassEncoder::dispatch):
        (WebCore::WebGPUComputePassEncoder::passEncoder):
        (WebCore::WebGPUComputePassEncoder::passEncoder const):
        * Modules/webgpu/WebGPUComputePassEncoder.h: Added.
        * Modules/webgpu/WebGPUComputePassEncoder.idl: Added.
        * platform/graphics/gpu/GPUComputePassEncoder.h: Added.
        (WebCore::GPUComputePassEncoder::~GPUComputePassEncoder):
        * platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Added.
        (WebCore::GPUComputePassEncoder::tryCreate):
        (WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
        (WebCore::GPUComputePassEncoder::setPipeline):
        (WebCore::GPUComputePassEncoder::dispatch): Use a default calculation for threadsPerThreadgroup while MSL is still an accepted shader format.
        (WebCore::GPUComputePassEncoder::platformPassEncoder const):
        (WebCore::GPUComputePassEncoder::useResource):
        (WebCore::GPUComputePassEncoder::setComputeBuffer):

        Add GPUComputePipeline:
        * Modules/webgpu/WebGPUComputePipeline.cpp: Added.
        (WebCore::WebGPUComputePipeline::create):
        (WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
        * Modules/webgpu/WebGPUComputePipeline.h: Added.
        (WebCore::WebGPUComputePipeline::computePipeline const):
        * Modules/webgpu/WebGPUComputePipeline.idl: Added.
        * Modules/webgpu/WebGPUComputePipelineDescriptor.cpp: Added.
        (WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
        * Modules/webgpu/WebGPUComputePipelineDescriptor.h: Added.
        * Modules/webgpu/WebGPUComputePipelineDescriptor.idl: Added.
        * platform/graphics/gpu/GPUComputePipeline.h: Added.
        (WebCore::GPUComputePipeline::platformComputePipeline const):
        * platform/graphics/gpu/GPUComputePipelineDescriptor.h: Added.
        (WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
        * platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Added.
        (WebCore::tryCreateMtlComputeFunction):
        (WebCore::tryCreateMTLComputePipelineState):
        (WebCore::GPUComputePipeline::tryCreate):
        (WebCore::GPUComputePipeline::GPUComputePipeline):

        Enable creating a GPUComputePipeline from a GPUDevice:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createComputePipeline const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateComputePipeline const):
        * platform/graphics/gpu/GPUDevice.h:

        No longer unnecessarily ref the WebGPUCommandEncoder when creating pass encoder:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup):
        (WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder): Deleted.
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Deleted.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::setPipeline):
        (WebCore::WebGPURenderPassEncoder::passEncoder):
        (WebCore::WebGPURenderPassEncoder::passEncoder const):
        * Modules/webgpu/WebGPURenderPassEncoder.h:

        Updates to GPUBindGroup and *setBindGroup for compute function arguments:
        * platform/graphics/gpu/GPUBindGroup.h:
        (WebCore::GPUBindGroup::vertexArgsBuffer const):
        (WebCore::GPUBindGroup::fragmentArgsBuffer const):
        (WebCore::GPUBindGroup::computeArgsBuffer const):
        (WebCore::GPUBindGroup::vertexArgsBuffer): Deleted. Const-qualified.
        (WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::tryGetResourceAsMTLSamplerState): Now just returns the MTLSamplerState to reduce reference churning.
        (WebCore::GPUBindGroup::tryCreate):
        (WebCore::GPUBindGroup::GPUBindGroup):
        (WebCore::tryGetResourceAsSampler): Renamed to tryGetResourceAsMTLSamplerState.

        Updates to GPUProgrammablePassEncoder and GPURenderPassEncoder:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        (WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
        (WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
        (WebCore::GPUProgrammablePassEncoder::setComputeBuffer): Added.
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        (WebCore::GPURenderPassEncoder::~GPURenderPassEncoder):
        * platform/graphics/gpu/GPURenderPipeline.h:
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Remove unecessary include.
        (WebCore::GPUProgrammablePassEncoder::endPass): No longer virtual. Delegates shared behavior for derived classes.
        (WebCore::GPUProgrammablePassEncoder::setBindGroup):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::platformPassEncoder const):
        (WebCore::GPURenderPassEncoder::setPipeline):
        (WebCore::GPURenderPassEncoder::draw):
        (WebCore::GPURenderPassEncoder::useResource): These private overrides are called only by base after checking for encoder existence.
        (WebCore::GPURenderPassEncoder::setVertexBuffer): Ditto.
        (WebCore::GPURenderPassEncoder::setFragmentBuffer): Ditto.
        (WebCore::GPURenderPassEncoder::endPass): Deleted. Now handled by base class.

2019-03-27  Jiewen Tan  <jiewen_tan@apple.com>

        IDBRequest::dispatchEvent should check nullability of m_transaction before operations that rely on it to be non null
        https://bugs.webkit.org/show_bug.cgi?id=196319
        <rdar://problem/49355279>

        Reviewed by Alex Christensen.

        The test that triggers this crash is on Bug 196276.

        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::dispatchEvent):

2019-03-28  Ryosuke Niwa  <rniwa@webkit.org>

        Debug assert in DOMSelection::containsNode when node belongs to a different tree
        https://bugs.webkit.org/show_bug.cgi?id=196342

        Reviewed by Antti Koivisto.

        The assertion was wrong. It's possible for Range::compareBoundaryPoints to return WRONG_DOCUMENT_ERR
        when the node and the start container belong to two different trees.

        Return false in such a case for now since it's unclear (unspecified) what these methods on Selection
        should do with respect to shadow trees, preserving the current behavior of release builds.

        Test: editing/selection/containsNode-with-no-common-ancestor.html

        * page/DOMSelection.cpp:
        (WebCore::DOMSelection::containsNode const):

2019-03-28  Tim Horton  <timothy_horton@apple.com>

        Fix the !ENABLE(APPLE_PAY) build

        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::shouldAllowUserAgentScripts const):

2019-03-28  Sihui Liu  <sihui_liu@apple.com>

        Crash at IDBDatabaseInfo::infoForExistingObjectStore and IDBDatabaseInfo::infoForExistingObjectStore
        https://bugs.webkit.org/show_bug.cgi?id=196120
        <rdar://problem/39869767>

        Reviewed by Ryosuke Niwa.

        No new tests because it is unclear how the crash happens. Added release logging to help debug.

        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
        (WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

2019-03-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
        https://bugs.webkit.org/show_bug.cgi?id=196324
        <rdar://problem/49357109>

        Reviewed by Matt Baker.

        No change in functionality.

        * html/CanvasBase.cpp:
        (WebCore::CanvasBase::notifyObserversCanvasChanged):
        (WebCore::CanvasBase::notifyObserversCanvasResized):
        (WebCore::CanvasBase::notifyObserversCanvasDestroyed):

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::frameNavigated):
        (WebCore::InspectorCanvasAgent::bindCanvas):
        (WebCore::InspectorCanvasAgent::unbindCanvas):

2019-03-28  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Remove dead code in MediaPlayerPrivateGStreamer::doSeek()
        https://bugs.webkit.org/show_bug.cgi?id=196352

        Reviewed by Xabier Rodriguez-Calvar.

        MediaPlayerPrivateGStreamerMSE overrides doSeek() and seek(), so this
        branch is never reached.

        This patch does not introduce behavior changes.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::doSeek):

2019-03-28  Simon Fraser  <simon.fraser@apple.com>

        [macOS WK2] Overlays on instagram.com are shifted if you click on a photo after scrolling
        https://bugs.webkit.org/show_bug.cgi?id=196330
        rdar://problem/49100304

        Reviewed by Antti Koivisto.

        When we call ScrollingTree::applyLayerPositions() on the main thread after a flush,
        we need to ensure that the most recent version of the scrolling tree has been committed,
        because it has to have state (like requested scroll position and layout viewport rect)
        that match the layer flush.

        To fix this we have to have the main thread wait for the commit to complete, so
        ThreadedScrollingTree keeps track of a pending commit count, and uses a condition
        variable to allow the main thread to safely wait for it to reach zero.

        Tracing shows that this works as expected, and the main thread is never blocked for
        more than a few tens of microseconds.

        Also lock the tree mutex in ScrollingTree::handleWheelEvent(), since we enter the
        scrolling tree here and we don't want that racing with applyLayerPositions() on the
        main thread.

        Test: scrollingcoordinator/mac/fixed-scrolled-body.html

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::handleWheelEvent):
        (WebCore::ScrollingTree::applyLayerPositions):
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ThreadedScrollingTree.cpp:
        (WebCore::ThreadedScrollingTree::commitTreeState):
        (WebCore::ThreadedScrollingTree::incrementPendingCommitCount):
        (WebCore::ThreadedScrollingTree::decrementPendingCommitCount):
        (WebCore::ThreadedScrollingTree::waitForPendingCommits):
        (WebCore::ThreadedScrollingTree::applyLayerPositions):
        * page/scrolling/ThreadedScrollingTree.h:
        * page/scrolling/mac/ScrollingCoordinatorMac.mm:
        (WebCore::ScrollingCoordinatorMac::commitTreeState):

2019-03-28  Zalan Bujtas  <zalan@apple.com>

        [SimpleLineLayout] Disable SLL when text-underline-position is not auto.
        https://bugs.webkit.org/show_bug.cgi?id=196338
        <rdar://problem/47975167>

        Reviewed by Daniel Bates.

        Disable simple line layout unconditionally on non-auto text-underline-position content. We don't support it yet.

        Test: fast/text/simple-line-layout-with-text-underline-position.html

        * rendering/SimpleLineLayout.cpp:
        (WebCore::SimpleLineLayout::canUseForStyle):

2019-03-28  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        Silence lot of warnings when compiling with clang
        https://bugs.webkit.org/show_bug.cgi?id=196310

        Reviewed by Michael Catanzaro.

        No change in behavior.

        * accessibility/AccessibilityObject.h: add missing override
        clause.
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webKitWebSrcChangeState): add missing format string to log.
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: add
        missing virtual destructor.
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
        add missing override clause and remove unused private member.

2019-03-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Incorrect application of glyph positioning in the Y direction
        https://bugs.webkit.org/show_bug.cgi?id=161493

        Reviewed by Michael Catanzaro.

        Use the first glyph origin as the initial advance of every complex text run.

        * platform/graphics/cairo/FontCairo.cpp:
        (WebCore::FontCascade::drawGlyphs): Update the yOffset using the height advance.
        * platform/graphics/cairo/GraphicsContextImplCairo.cpp:
        (WebCore::GraphicsContextImplCairo::drawGlyphs): Ditto.
        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Set the initial advance.

2019-03-27  Ryosuke Niwa  <rniwa@webkit.org>

        [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown
        https://bugs.webkit.org/show_bug.cgi?id=196336

        Reviewed by Tim Horton.

        * rendering/RenderMenuList.cpp:
        (RenderMenuList::popupDidHide): Added a comment.

2019-03-27  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Standardize Web GPU object reference counting and creation logic
        https://bugs.webkit.org/show_bug.cgi?id=196183

        Reviewed by Dean Jackson.

        Make getters return raw refs/pointers and provide const versions if necessary.
        All Web GPU objects are non-nullable, but become no-op if invalid, and descriptors are not moved unless needed.

        No new tests; no change in behavior.

        Getter updates and const qualifications:
        * Modules/webgpu/WebGPUAdapter.h:
        (WebCore::WebGPUAdapter::options const):
        * Modules/webgpu/WebGPUBindGroup.h:
        (WebCore::WebGPUBindGroup::bindGroup):
        (WebCore::WebGPUBindGroup::bindGroup const): Deleted.
        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
        * Modules/webgpu/WebGPUBindGroupDescriptor.h:
        * Modules/webgpu/WebGPUBindGroupLayout.h:
        (WebCore::WebGPUBindGroupLayout::bindGroupLayout const):
        * Modules/webgpu/WebGPUBuffer.h:
        (WebCore::WebGPUBuffer::buffer):
        (WebCore::WebGPUBuffer::buffer const):
        * Modules/webgpu/WebGPURenderPassDescriptor.cpp:
        (WebCore::WebGPURenderPassDescriptor::tryCreateGPURenderPassDescriptor const):
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        * Modules/webgpu/WebGPUSampler.h:
        (WebCore::WebGPUSampler::sampler const):
        * Modules/webgpu/WebGPUSwapChain.h:
        (WebCore::WebGPUSwapChain::swapChain):
        (WebCore::WebGPUSwapChain::swapChain const): Deleted.
        * Modules/webgpu/WebGPUTexture.h:
        (WebCore::WebGPUTexture::texture):
        (WebCore::WebGPUTexture::texture const): Deleted.
        * Modules/webgpu/WebGPUTextureView.h:
        (WebCore::WebGPUTextureView::texture):
        (WebCore::WebGPUTextureView::texture const): Deleted.
        * platform/graphics/gpu/GPUBindGroupBinding.h:
        * platform/graphics/gpu/GPUBindGroupDescriptor.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::tryGetResourceAsMTLSamplerState):

        Web GPU object creation logic:
        * Modules/webgpu/WebGPUCommandEncoder.cpp:
        (WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
        (WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
        (WebCore::WebGPUCommandEncoder::beginRenderPass):
        (WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
        * Modules/webgpu/WebGPUCommandEncoder.h:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBuffer const):
        (WebCore::WebGPUDevice::createTexture const):
        (WebCore::WebGPUDevice::createPipelineLayout const):
        (WebCore::WebGPUDevice::createBindGroup const):
        (WebCore::WebGPUDevice::createShaderModule const):
        (WebCore::WebGPUDevice::createRenderPipeline const):
        (WebCore::WebGPUDevice::getQueue const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUPipelineLayout.cpp:
        (WebCore::WebGPUPipelineLayout::create):
        (WebCore::WebGPUPipelineLayout::WebGPUPipelineLayout):
        * Modules/webgpu/WebGPUPipelineLayout.h:
        (WebCore::WebGPUPipelineLayout::pipelineLayout):
        * Modules/webgpu/WebGPUPipelineLayoutDescriptor.cpp: 
        (WebCore::WebGPUPipelineLayoutDescriptor::tryCreateGPUPipelineLayoutDescriptor const):
        * Modules/webgpu/WebGPUPipelineLayoutDescriptor.h:
        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::create):
        (WebCore::WebGPUQueue::WebGPUQueue):
        (WebCore::WebGPUQueue::submit):
        * Modules/webgpu/WebGPUQueue.h:
        * Modules/webgpu/WebGPUShaderModule.cpp:
        (WebCore::WebGPUShaderModule::create):
        (WebCore::WebGPUShaderModule::WebGPUShaderModule):
        * Modules/webgpu/WebGPUShaderModule.h:
        (WebCore::WebGPUShaderModule::module const):
        * platform/graphics/gpu/GPUBuffer.h:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBuffer):
        (WebCore::GPUDevice::tryCreateTexture const):
        (WebCore::GPUDevice::tryCreateShaderModule const):
        (WebCore::GPUDevice::tryCreateRenderPipeline const):
        (WebCore::GPUDevice::tryGetQueue const):
        (WebCore::GPUDevice::createShaderModule const): Deleted.
        (WebCore::GPUDevice::createRenderPipeline const): Deleted.
        (WebCore::GPUDevice::getQueue const): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUPipelineLayout.cpp:
        (WebCore::GPUPipelineLayout::create):
        (WebCore::GPUPipelineLayout::GPUPipelineLayout):
        * platform/graphics/gpu/GPUPipelineLayout.h:
        (WebCore::GPUPipelineLayout::bindGroupLayouts const):
        * platform/graphics/gpu/GPUPipelineLayoutDescriptor.h:
        * platform/graphics/gpu/GPURenderPipeline.h:
        * platform/graphics/gpu/GPUShaderModule.h:
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::tryCreate):
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::setSubData):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::tryCreate):
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::tryCreate):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::tryCreate):
        (WebCore::GPURenderPipeline::GPURenderPipeline):
        (WebCore::GPURenderPipeline::create): Deleted.
        * platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
        (WebCore::GPUShaderModule::tryCreate):
        (WebCore::GPUShaderModule::create): Deleted.

        Add WebGPUPipelineLayoutDescriptor.cpp to project:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        
2019-03-27  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r243346.

        Causing timeouts in animation tests across 10 builds

        Reverted changeset:

        "[Web Animations] JS wrapper may be deleted while animation is
        yet to dispatch its finish event"
        https://bugs.webkit.org/show_bug.cgi?id=196118
        https://trac.webkit.org/changeset/243346

2019-03-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Stop using the global _WKContentChange
        https://bugs.webkit.org/show_bug.cgi?id=196288
        <rdar://problem/49228081>

        Reviewed by Simon Fraser.

        This patch ensures that activities on frames don't overwrite the observed state on other frames.  
        (Unfortunately the global variable is still used in WebKitLegacy (see webkit.org/b/196286)).

        Tests: fast/events/touch/ios/content-observation/remove-subframe-while-observing.html
               fast/events/touch/ios/content-observation/subframe.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::observedContentChange const): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::observedContentChange const):
        (WebCore::ContentChangeObserver::setHasNoChangeState):
        (WebCore::ContentChangeObserver::setHasIndeterminateState):
        (WebCore::ContentChangeObserver::setHasVisibleChangeState):
        (WebCore::ContentChangeObserver::setObservedContentState):

2019-03-27  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG tear off objects for SVGPathSeg, SVGPathSegList and SVGAnimatedPathSegList
        https://bugs.webkit.org/show_bug.cgi?id=196085

        Reviewed by Simon Fraser.

        The SVGPathSegList is similar to the other SVGLists, e.g. SVGNUmberList
        and SVGPointList except in two things:

        1. Its items can be different but they are derived from the same base 
           class SVGPathSeg.

        2. The SVGPathSeg items are only used for DOM. When drawing or animating
           we have to have an SVGPathByteStream and convert it to a Path. Converting
           an SVGPathByteStream to SVGPathSeg items and vice versa is expensive.
           Building a Path from an SVGPathByteStream is also expensive. So an extra
           care needs to be taken for when these conversions happen.

        In addition to handling the SVGPathSeg items, SVGPathSegList will manage
        the associated SVGPathByteStream and Path objects. SVGPathSegList will be
        lazy in getting updated objects when a change happens. For example, when
        the byte stream changes, SVGPathSegList will clear its items and nullify
        the Path object. But it will not build any of them until they are explicitly
        requested.

        Like what was done for other SVG properties when removing their tear off
        objects, a new accessor, a new animator and a new animation function will
        be added for the SVGAnimatedPathSegList.

        All the header files of the concrete classes of SVGPathSeg will be removed
        because they are small structures which hold some data items and they provide
        setters and getters for these items. Here is the new file structures and
        their contents:

        -- SVGPathSeg.h still has the class SVGPathSeg which is now a superclass
           of SVGProperty. 

        -- SVGPathSegValue.h will have the template class SVGPathSegValue which 
           holds an std::tuple of packed arguments. It provides setters and getters
           for these arguments. SVGPathSegValue.h will also have specialized 
           classed derived from SVGPathSegValue and hold different arguments.

        -- SVGPathSegImpl.h will have the final concrete SVGPathSeg classes.

        Note SVGPathSeg concrete classes do not need to have a reference to the
        the context SVGPathElement. SVGPathSeg will be owned by its SVGPathSegList
        which will be owned by the SVGAnimatedPathSegList which will be owned by
        the SVGPathElement.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSSVGPathSegCustom.cpp:
        * bindings/scripts/CodeGenerator.pm:
        (IsSVGPathSegTypeName):
        (IsSVGPathSegType):
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateHeader):
        * rendering/svg/SVGPathData.cpp:
        (WebCore::pathFromPathElement):
        * svg/SVGAnimatedPath.cpp: Removed.
        * svg/SVGAnimatedPath.h: Removed.
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type const):
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGPathByteStream.h:
        (WebCore::SVGPathByteStream::SVGPathByteStream):
        This constructor is used by SVGAnimationPathSegListFunction to convert
        the 'form', 'to' and 'toAtEndOfDuration' strings to SVGPathByteStreams.

        (WebCore::SVGPathByteStream::resize): Deleted.
        (WebCore::SVGPropertyTraits<SVGPathByteStream>::initialValue): Deleted.
        (WebCore::SVGPropertyTraits<SVGPathByteStream>::fromString): Deleted.
        (WebCore::SVGPropertyTraits<SVGPathByteStream>::parse): Deleted.
        (WebCore::SVGPropertyTraits<SVGPathByteStream>::toString): Deleted.
        * svg/SVGPathElement.cpp:
        (WebCore::SVGPathElement::SVGPathElement):
        (WebCore::SVGPathElement::parseAttribute):
        (WebCore::SVGPathElement::svgAttributeChanged):
        (WebCore::SVGPathElement::getTotalLength const):
        (WebCore::SVGPathElement::getPointAtLength const):
        (WebCore::SVGPathElement::getPathSegAtLength const):
        (WebCore::SVGPathElement::createSVGPathSegClosePath): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegMovetoAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegMovetoRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegArcAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegArcRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs): Deleted.
        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel): Deleted.
        The SVGPathSeg creation functions are moved to the header file.

        (WebCore::SVGPathElement::registerAttributes): Deleted.
        (WebCore::SVGPathElement::pathByteStream const): Deleted.
        (WebCore::SVGPathElement::pathForByteStream const): Deleted.
        (WebCore::SVGPathElement::lookupOrCreateDWrapper): Deleted.
        (WebCore::SVGPathElement::animatedPropertyWillBeDeleted): Deleted.
        (WebCore::SVGPathElement::pathSegList): Deleted.
        (WebCore::SVGPathElement::normalizedPathSegList): Deleted.
        (WebCore::SVGPathElement::animatedPathSegList): Deleted.
        (WebCore::SVGPathElement::animatedNormalizedPathSegList): Deleted.
        (WebCore::SVGPathElement::approximateMemoryCost const): Deleted.
        (WebCore::SVGPathElement::pathSegListChanged): Deleted.
        Managing the SVGPathByteStream and the drawing Path objects will be the
        responsibility of SVGPathSegList.

        * svg/SVGPathElement.h:
        * svg/SVGPathSeg.h:
        * svg/SVGPathSegArc.h: Removed.
        * svg/SVGPathSegArcAbs.h: Removed.
        * svg/SVGPathSegArcRel.h: Removed.
        * svg/SVGPathSegClosePath.h: Removed.
        * svg/SVGPathSegCurvetoCubic.h: Removed.
        * svg/SVGPathSegCurvetoCubicAbs.h: Removed.
        * svg/SVGPathSegCurvetoCubicRel.h: Removed.
        * svg/SVGPathSegCurvetoCubicSmooth.h: Removed.
        * svg/SVGPathSegCurvetoCubicSmoothAbs.h: Removed.
        * svg/SVGPathSegCurvetoCubicSmoothRel.h: Removed.
        * svg/SVGPathSegCurvetoQuadratic.h: Removed.
        * svg/SVGPathSegCurvetoQuadraticAbs.h: Removed.
        * svg/SVGPathSegCurvetoQuadraticRel.h: Removed.
        * svg/SVGPathSegCurvetoQuadraticSmoothAbs.h: Removed.
        * svg/SVGPathSegCurvetoQuadraticSmoothRel.h: Removed.
        * svg/SVGPathSegImpl.h: Added.
        * svg/SVGPathSegLinetoAbs.h: Removed.
        * svg/SVGPathSegLinetoHorizontal.h: Removed.
        * svg/SVGPathSegLinetoHorizontalAbs.h: Removed.
        * svg/SVGPathSegLinetoHorizontalRel.h: Removed.
        * svg/SVGPathSegLinetoRel.h: Removed.
        * svg/SVGPathSegLinetoVertical.h: Removed.
        * svg/SVGPathSegLinetoVerticalAbs.h: Removed.
        * svg/SVGPathSegLinetoVerticalRel.h: Removed.
        The definition of these classes are now in SVGPathSegImpl.h.

        * svg/SVGPathSegList.cpp: Removed.
        * svg/SVGPathSegList.h:
        * svg/SVGPathSegListBuilder.cpp:
        (WebCore::SVGPathSegListBuilder::SVGPathSegListBuilder):
        (WebCore::SVGPathSegListBuilder::moveTo):
        (WebCore::SVGPathSegListBuilder::lineTo):
        (WebCore::SVGPathSegListBuilder::lineToHorizontal):
        (WebCore::SVGPathSegListBuilder::lineToVertical):
        (WebCore::SVGPathSegListBuilder::curveToCubic):
        (WebCore::SVGPathSegListBuilder::curveToCubicSmooth):
        (WebCore::SVGPathSegListBuilder::curveToQuadratic):
        (WebCore::SVGPathSegListBuilder::curveToQuadraticSmooth):
        (WebCore::SVGPathSegListBuilder::arcTo):
        (WebCore::SVGPathSegListBuilder::closePath):        
        * svg/SVGPathSegListBuilder.h:
        The concrete SVGPathSeg classes can now create instances of their classes
        without having to go through the SVGPathElement.

        * svg/SVGPathSegListSource.cpp:
        (WebCore::SVGPathSegListSource::SVGPathSegListSource):
        * svg/SVGPathSegListSource.h:
        * svg/SVGPathSegListValues.cpp: Removed.
        * svg/SVGPathSegListValues.h: Removed.
        * svg/SVGPathSegMovetoAbs.h: Removed.
        * svg/SVGPathSegMovetoRel.h: Removed.
        * svg/SVGPathSegValue.h: Added.
        (WebCore::SVGPathSegValue::create):
        (WebCore::SVGPathSegValue::clone const):
        (WebCore::SVGPathSegValue::SVGPathSegValue):
        (WebCore::SVGPathSegValue::argument const):
        (WebCore::SVGPathSegValue::setArgument):
        (WebCore::SVGPathSegLinetoHorizontal::x const):
        (WebCore::SVGPathSegLinetoHorizontal::setX):
        (WebCore::SVGPathSegLinetoVertical::y const):
        (WebCore::SVGPathSegLinetoVertical::setY):
        (WebCore::SVGPathSegSingleCoordinate::x const):
        (WebCore::SVGPathSegSingleCoordinate::setX):
        (WebCore::SVGPathSegSingleCoordinate::y const):
        (WebCore::SVGPathSegSingleCoordinate::setY):
        (WebCore::SVGPathSegCurvetoQuadratic::x const):
        (WebCore::SVGPathSegCurvetoQuadratic::setX):
        (WebCore::SVGPathSegCurvetoQuadratic::y const):
        (WebCore::SVGPathSegCurvetoQuadratic::setY):
        (WebCore::SVGPathSegCurvetoQuadratic::x1 const):
        (WebCore::SVGPathSegCurvetoQuadratic::setX1):
        (WebCore::SVGPathSegCurvetoQuadratic::y1 const):
        (WebCore::SVGPathSegCurvetoQuadratic::setY1):
        (WebCore::SVGPathSegCurvetoCubicSmooth::x const):
        (WebCore::SVGPathSegCurvetoCubicSmooth::setX):
        (WebCore::SVGPathSegCurvetoCubicSmooth::y const):
        (WebCore::SVGPathSegCurvetoCubicSmooth::setY):
        (WebCore::SVGPathSegCurvetoCubicSmooth::x2 const):
        (WebCore::SVGPathSegCurvetoCubicSmooth::setX2):
        (WebCore::SVGPathSegCurvetoCubicSmooth::y2 const):
        (WebCore::SVGPathSegCurvetoCubicSmooth::setY2):
        (WebCore::SVGPathSegCurvetoCubic::x const):
        (WebCore::SVGPathSegCurvetoCubic::setX):
        (WebCore::SVGPathSegCurvetoCubic::y const):
        (WebCore::SVGPathSegCurvetoCubic::setY):
        (WebCore::SVGPathSegCurvetoCubic::x1 const):
        (WebCore::SVGPathSegCurvetoCubic::setX1):
        (WebCore::SVGPathSegCurvetoCubic::y1 const):
        (WebCore::SVGPathSegCurvetoCubic::setY1):
        (WebCore::SVGPathSegCurvetoCubic::x2 const):
        (WebCore::SVGPathSegCurvetoCubic::setX2):
        (WebCore::SVGPathSegCurvetoCubic::y2 const):
        (WebCore::SVGPathSegCurvetoCubic::setY2):
        (WebCore::SVGPathSegArc::x const):
        (WebCore::SVGPathSegArc::setX):
        (WebCore::SVGPathSegArc::y const):
        (WebCore::SVGPathSegArc::setY):
        (WebCore::SVGPathSegArc::r1 const):
        (WebCore::SVGPathSegArc::setR1):
        (WebCore::SVGPathSegArc::r2 const):
        (WebCore::SVGPathSegArc::setR2):
        (WebCore::SVGPathSegArc::angle const):
        (WebCore::SVGPathSegArc::setAngle):
        (WebCore::SVGPathSegArc::largeArcFlag const):
        (WebCore::SVGPathSegArc::setLargeArcFlag):
        (WebCore::SVGPathSegArc::sweepFlag const):
        (WebCore::SVGPathSegArc::setSweepFlag):
        * svg/SVGPathSegWithContext.h: Removed.

        * svg/SVGPathUtilities.cpp:
        (WebCore::buildSVGPathByteStreamFromSVGPathSegList):
        (WebCore::buildSVGPathSegListFromByteStream):
        (WebCore::buildStringFromByteStream):
        (WebCore::buildSVGPathByteStreamFromSVGPathSegListValues): Deleted.
        (WebCore::appendSVGPathByteStreamFromSVGPathSeg): Deleted.
        (WebCore::buildSVGPathSegListValuesFromByteStream): Deleted.
        (WebCore::buildStringFromSVGPathSegListValues): Deleted.
        * svg/SVGPathUtilities.h:
        Since the class SVGPathSegListValues is removed, all the parsing functions
        have now to deal with SVGPathSegList directly.

        * svg/SVGPoint.h:
        * svg/SVGValue.h:
        * svg/properties/SVGAnimatedPathSegListPropertyTearOff.cpp: Removed.
        * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        (WebCore::SVGAnimatedPathSegList::create):
        (WebCore::SVGAnimatedPathSegList::currentPathByteStream):
        (WebCore::SVGAnimatedPathSegList::currentPath):
        (WebCore::SVGAnimatedPathSegList::approximateMemoryCost const):
        Provides an easy way to access the current SVGPathByteStream and Path
        objects from the SVGAnimatedPathSegList.

        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationPathSegListFunction::progress):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-27  Ryan Haddad  <ryanhaddad@apple.com>

        AVAudioSessionRouteSharingPolicyLongForm has been deprecated
        https://bugs.webkit.org/show_bug.cgi?id=196301

        Unrereivewed build fix.

        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::routeSharingPolicy const):

2019-03-27  Chris Dumez  <cdumez@apple.com>

        XMLHttpRequestUpload's loadstart event not correct initialized
        https://bugs.webkit.org/show_bug.cgi?id=196174
        <rdar://problem/49191412>

        Reviewed by Alex Christensen.

        Align progress event firing with the XHR specification.

        No new tests, rebaselined existing tests.

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::createRequest):
        As per [1], the loadstart event fired on the XMLHttpRequestUpload object should use
        loaded=0 and total=`req’s body’s total bytes`.
        [1] https://xhr.spec.whatwg.org/#the-send()-method (step 11.2.)

        (WebCore::XMLHttpRequest::didSendData):
        As per [2], the progress / load / loadend should use loaded=transmitted and total=length.
        [2] https://xhr.spec.whatwg.org/#ref-for-process-request-end-of-body (steps 5, 6 and 7)

        (WebCore::XMLHttpRequest::didReceiveData):
        As per [3], we should fire the readystatechange event *before* the progress event.
        This is covered by web-platform-tests/xhr/send-response-event-order.htm which was failing
        differently after the other changes in this patch.
        [3] https://xhr.spec.whatwg.org/#ref-for-process-response (steps 9.4 and 9.5)

        (WebCore::XMLHttpRequest::dispatchErrorEvents):
        As per [4], in case of an error, we should fire the provided 'event' and 'loadend' with
        loaded=0 and total=0.
        [4] https://xhr.spec.whatwg.org/#request-error-steps (steps 7 and 8)

        * xml/XMLHttpRequestUpload.cpp:
        (WebCore::XMLHttpRequestUpload::dispatchProgressEvent):
        * xml/XMLHttpRequestUpload.h:
        Simplify XMLHttpRequestUpload. It no longer needs to store loaded / total as data
        members now that they are always passed by the call site. lengthComputable is set
        to !!total as [5] says to set it to true if length/total is not 0. 
        [5] https://xhr.spec.whatwg.org/#concept-event-fire-progress

2019-03-27  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r242687): Fullscreen YouTube videos show blank white space at top
        https://bugs.webkit.org/show_bug.cgi?id=196304
        rdar://problem/49175760

        Reviewed by Zalan Bujtas.

        repositionRelatedLayers() should not short-circuit when topContentInset is zero,
        because topContentInset might be changing from non-zero to zero, and then we need
        to move layers around.

        Test: scrollingcoordinator/mac/top-content-inset-to-zero.html

        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers):

2019-03-26  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Fixed elements in frames can be misplaced sometimes
        https://bugs.webkit.org/show_bug.cgi?id=196290

        Reviewed by Frédéric Wang.

        In a page containing position:fixed inside an async-scrolling iframe, if the 
        main page is scrolled down, and you reload, then the fixed element in the iframe can
        get misplaced or disappear.

        The bug was that the reconcileViewportConstrainedLayerPositions() recursive state node
        walk would cross frame boundaries, hitting subframe ScrollingStateFixedNodes with a viewport rect
        for the main page.

        Fix by giving ScrollingStateTree the responsibility for the recursive tree walk, and
        have it bail at at frame boundaries.

        Test: scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position.html

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions):
        * page/scrolling/ScrollingStateFixedNode.cpp:
        (WebCore::ScrollingStateFixedNode::reconcileLayerPositionForViewportRect):
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::reconcileLayerPositionForViewportRect): Deleted.
        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::reconcileLayerPositionForViewportRect):
        * page/scrolling/ScrollingStateStickyNode.cpp:
        (WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect):
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::reconcileLayerPositionsRecursive):
        (WebCore::ScrollingStateTree::reconcileViewportConstrainedLayerPositions):
        * page/scrolling/ScrollingStateTree.h:

2019-03-27  Philippe Normand  <pnormand@igalia.com>

        Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
        https://bugs.webkit.org/show_bug.cgi?id=196178

        Reviewed by Xabier Rodriguez-Calvar.

        The gst/gl/gl.h header needs to be included before
        GraphicsContext3D.h to avoid declaration conflicts with
        OpenGLShims.

        Based on a patch from Mike Gorse <mgorse@suse.com>

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::GstVideoFrameHolder::GstVideoFrameHolder):

2019-03-27  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Remove the HLS queue buffering query hack
        https://bugs.webkit.org/show_bug.cgi?id=196244

        Reviewed by Xabier Rodriguez-Calvar.

        Because the http src element now provides network statistics to
        the player we can now compute an estimation of the data loading in
        case the buffering query isn't handled by any element of the
        pipeline.

        No new tests, existing HLS tests cover this change.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
        (WebCore::findHLSQueue): Deleted.
        (WebCore::isHLSProgressing): Deleted.

2019-03-26  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Unreviewed Windows build fix
        https://bugs.webkit.org/show_bug.cgi?id=196083
        <rdar://problem/49121836>

        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::isSupportedAttributeType):

2019-03-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Refactor some helper functions for building UserAgent strings
        https://bugs.webkit.org/show_bug.cgi?id=195990

        Reviewed by Brent Fulgham.

        Add an optional argument to standardUserAgentWithApplicationName to request the desktop version of the user
        agent in Cocoa platforms. Work towards refactoring some codepaths to make the implementation of the "Request
        Desktop Site" feature in Safari a bit more straightforward.

        No change in behavior.

        * platform/UserAgent.h:
        * platform/ios/UserAgentIOS.mm:
        (WebCore::standardUserAgentWithApplicationName):

        The corresponding macOS version is currently hard-coded — the followup bug webkit.org/b/196275 tracks making
        this dynamically fetch the paired macOS version when building for iOS.

        * platform/mac/UserAgentMac.mm:
        (WebCore::standardUserAgentWithApplicationName):

2019-03-26  Said Abou-Hallawa  <said@apple.com>

        Remove the SVG tear off objects for SVGLength, SVGLengthList and SVGAnimatedLengthList
        https://bugs.webkit.org/show_bug.cgi?id=196083

        Reviewed by Simon Fraser.

        -- SVGLength will be a superclass of SVGValueProperty<SVGLengthValue>. It
           is a wrapper of SVGLengthValue. It will be provide the DOM methods. It
           can setValueAsString() and return valueAsString().

        -- SVGLengthList will be a superclass of SVGValuePropertyList<SVGLength>.
           The base class will provide all the DOM methods. SVGLengthList will be
           responsible for parsing a String to a SVGLength items. It can also 
           build a string representing the stored items.

        -- SVGAnimatedLengthList will be defined as SVGAnimatedPropertyList<SVGLengthList>.
           Like SVGAnimatedPointList, all the required methods and attributes
           will be handled by SVGAnimatedPropertyList.

        -- SVGAnimatedLengthAccessor and SVGAnimatedLengthListAccessor will be
           added to access the members of types SVGAnimatedLength and 
           SVGAnimatedLengthList.

        -- SVGAnimatedLengthAnimator and SVGAnimatedLengthListAnimator will be
           created by the the new accessors to animate attributes of types
           SVGAnimatedLength and SVGAnimatedLengthList.

        -- SVGAnimationLengthFunction and SVGAnimationLengthListFunction will be
           responsible for progressing the animVal() of attributes of types
           SVGAnimatedLength and SVGAnimatedLengthList.

        -- SVGValuePropertyAnimator is a new template class which can animate a
           none reflecting attribute which should be backed by a value property,
           e.g. SVGLength.

        -- SVGValuePropertyListAnimator is a new template class which can animate a
           none reflecting attribute which should be backed by a value property
           list, e.g. SVGLengthList.

        Notes:

            -- SVGElement::isAnimatedStyleAttribute() will return true if the
               attribute is known by SVGPropertyAnimatorFactory. Or it's has 
               a reflecting SVGAnimatedPropertyLength property and its name is
               one of the names listed in isAnimatedStylePropertyAttribute() of
               the propertyRegistry() of the SVGElement.

            -- SVGElement::commitPropertyChange() has to handle the attributes
               for which isAnimatedStylePropertyAttribute() returns true different
               from the other ones. styleReclac() needs updated attributes since
               it does not access the reflecting properties in the SVGELement.

            -- SVGTextContentElement does not need a customized SVGAnimatedLength.
               All SVGTextContentElement::textLengthAnimated() needs to know is
               whether m_textLength->baseVal() holds an empty SVGLength. If it
               does, it sets its value to getComputedTextLength().

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
        (WebCore::updateCharacterData):
        (WebCore::SVGTextLayoutAttributesBuilder::fillCharacterDataMap):
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::hasValidAttributeType const):
        * svg/SVGAnimatedLength.cpp: Removed.
        * svg/SVGAnimatedLength.h: Removed.
        * svg/SVGAnimatedLengthList.cpp: Removed.
        * svg/SVGAnimatedLengthList.h: Removed.
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type const):
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::isTargetAttributeCSSProperty):
        (WebCore::inheritsFromProperty):
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::isSupportedAttribute):
        (WebCore::SVGAnimatorFactory::create):
        These changes were required because some of the tests were trying to
        animated unsupported attributes. To differentiate between between the
        these two cases:
            1) the attribute is animate-able by the legacy controller.
            2) animating the attribute or the attribute itself is not supported
               by the element.

        We want SVGAnimatorFactory tell us whether it can create an animator for
        a given attribute or not.

        * svg/SVGCircleElement.cpp:
        (WebCore::SVGCircleElement::SVGCircleElement):
        (WebCore::SVGCircleElement::parseAttribute):
        (WebCore::SVGCircleElement::svgAttributeChanged):
        (WebCore::SVGCircleElement::registerAttributes): Deleted.
        * svg/SVGCircleElement.h:
        * svg/SVGCursorElement.cpp:
        (WebCore::SVGCursorElement::SVGCursorElement):
        (WebCore::SVGCursorElement::parseAttribute):
        (WebCore::SVGCursorElement::svgAttributeChanged):
        (WebCore::SVGCursorElement::registerAttributes): Deleted.
        * svg/SVGCursorElement.h:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::commitPropertyChange):
        (WebCore::SVGElement::isAnimatedStyleAttribute const):
        * svg/SVGElement.h:
        * svg/SVGEllipseElement.cpp:
        (WebCore::SVGEllipseElement::SVGEllipseElement):
        (WebCore::SVGEllipseElement::parseAttribute):
        (WebCore::SVGEllipseElement::svgAttributeChanged):
        (WebCore::SVGEllipseElement::registerAttributes): Deleted.
        * svg/SVGEllipseElement.h:
        * svg/SVGFilterElement.cpp:
        (WebCore::SVGFilterElement::SVGFilterElement):
        (WebCore::SVGFilterElement::registerAttributes):
        (WebCore::SVGFilterElement::parseAttribute):
        * svg/SVGFilterElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
        (WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
        (WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
        (WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes): Deleted.
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        (WebCore::SVGFilterPrimitiveStandardAttributes::x const):
        (WebCore::SVGFilterPrimitiveStandardAttributes::y const):
        (WebCore::SVGFilterPrimitiveStandardAttributes::width const):
        (WebCore::SVGFilterPrimitiveStandardAttributes::height const):
        (WebCore::SVGFilterPrimitiveStandardAttributes::xAnimated):
        (WebCore::SVGFilterPrimitiveStandardAttributes::yAnimated):
        (WebCore::SVGFilterPrimitiveStandardAttributes::widthAnimated):
        (WebCore::SVGFilterPrimitiveStandardAttributes::heightAnimated):
        (WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute): Deleted.
        * svg/SVGForeignObjectElement.cpp:
        (WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
        (WebCore::SVGForeignObjectElement::parseAttribute):
        (WebCore::SVGForeignObjectElement::registerAttributes): Deleted.
        * svg/SVGForeignObjectElement.h:
        * svg/SVGImageElement.cpp:
        (WebCore::SVGImageElement::SVGImageElement):
        (WebCore::SVGImageElement::parseAttribute):
        (WebCore::SVGImageElement::registerAttributes): Deleted.
        * svg/SVGImageElement.h:
        * svg/SVGLength.h:
        (WebCore::SVGLength::create):
        (WebCore::SVGLength::clone const):
        (WebCore::SVGLength::unitType):
        (WebCore::SVGLength::valueForBindings):
        (WebCore::SVGLength::setValueForBindings):
        (WebCore::SVGLength::valueInSpecifiedUnits):
        (WebCore::SVGLength::setValueInSpecifiedUnits):
        (WebCore::SVGLength::setValueAsString):
        (WebCore::SVGLength::newValueSpecifiedUnits):
        (WebCore::SVGLength::convertToSpecifiedUnits):
        (WebCore::SVGLength::valueAsString): Deleted.
        (WebCore::SVGLength::SVGLength): Deleted.
        * svg/SVGLengthList.h:
        (WebCore::SVGLengthList::create):
        (WebCore::SVGLengthList::lengthMode const):
        (WebCore::SVGLengthList::parse):
        (WebCore::SVGLengthList::SVGLengthList):
        * svg/SVGLengthListValues.cpp: Removed.
        * svg/SVGLengthListValues.h: Removed.
        * svg/SVGLineElement.cpp:
        (WebCore::SVGLineElement::SVGLineElement):
        (WebCore::SVGLineElement::parseAttribute):
        (WebCore::SVGLineElement::svgAttributeChanged):
        (WebCore::SVGLineElement::registerAttributes): Deleted.
        * svg/SVGLineElement.h:
        * svg/SVGLinearGradientElement.cpp:
        (WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
        (WebCore::SVGLinearGradientElement::parseAttribute):
        (WebCore::SVGLinearGradientElement::svgAttributeChanged):
        (WebCore::SVGLinearGradientElement::registerAttributes): Deleted.
        * svg/SVGLinearGradientElement.h:
        * svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::SVGMarkerElement):
        (WebCore::SVGMarkerElement::registerAttributes):
        (WebCore::SVGMarkerElement::parseAttribute):
        * svg/SVGMarkerElement.h:
        * svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::SVGMaskElement):
        (WebCore::SVGMaskElement::registerAttributes):
        (WebCore::SVGMaskElement::parseAttribute):
        (WebCore::SVGMaskElement::svgAttributeChanged):
        * svg/SVGMaskElement.h:
        * svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::SVGPatternElement):
        (WebCore::SVGPatternElement::registerAttributes):
        (WebCore::SVGPatternElement::parseAttribute):
        * svg/SVGPatternElement.h:
        * svg/SVGPoint.h:
        * svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
        (WebCore::SVGRadialGradientElement::parseAttribute):
        (WebCore::SVGRadialGradientElement::svgAttributeChanged):
        (WebCore::SVGRadialGradientElement::registerAttributes): Deleted.
        * svg/SVGRadialGradientElement.h:
        * svg/SVGRectElement.cpp:
        (WebCore::SVGRectElement::SVGRectElement):
        (WebCore::SVGRectElement::parseAttribute):
        (WebCore::SVGRectElement::svgAttributeChanged):
        (WebCore::SVGRectElement::registerAttributes): Deleted.
        * svg/SVGRectElement.h:
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::SVGSVGElement):
        (WebCore::SVGSVGElement::parseAttribute):
        (WebCore::SVGSVGElement::svgAttributeChanged):
        (WebCore::SVGSVGElement::registerAttributes): Deleted.
        * svg/SVGSVGElement.h:
        * svg/SVGTextContentElement.cpp:
        (WebCore::SVGTextContentElement::SVGTextContentElement):
        (WebCore::SVGTextContentElement::registerAttributes):
        (WebCore::SVGTextContentElement::parseAttribute):
        (WebCore::SVGTextContentElement::svgAttributeChanged):
        (WebCore::SVGTextContentElement::textLengthAnimated):
        * svg/SVGTextContentElement.h:
        (WebCore::SVGTextContentElement::specifiedTextLength const):
        (WebCore::SVGTextContentElement::textLength const):
        (WebCore::SVGTextContentElement::specifiedTextLength): Deleted.
        (WebCore::SVGTextContentElement::textLengthAnimated): Deleted.
        (WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::SVGAnimatedCustomLengthAttribute): Deleted.
        (WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::synchronize): Deleted.
        (WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::animatedProperty): Deleted.
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::SVGTextPathElement):
        (WebCore::SVGTextPathElement::registerAttributes):
        (WebCore::SVGTextPathElement::parseAttribute):
        * svg/SVGTextPathElement.h:
        * svg/SVGTextPositioningElement.cpp:
        (WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
        (WebCore::SVGTextPositioningElement::parseAttribute):
        (WebCore::SVGTextPositioningElement::svgAttributeChanged):
        (WebCore::SVGTextPositioningElement::registerAttributes): Deleted.
        * svg/SVGTextPositioningElement.h:
        (WebCore::SVGTextPositioningElement::x const):
        (WebCore::SVGTextPositioningElement::y const):
        (WebCore::SVGTextPositioningElement::dx const):
        (WebCore::SVGTextPositioningElement::dy const):
        (WebCore::SVGTextPositioningElement::xAnimated):
        (WebCore::SVGTextPositioningElement::yAnimated):
        (WebCore::SVGTextPositioningElement::dxAnimated):
        (WebCore::SVGTextPositioningElement::dyAnimated):
        (WebCore::SVGTextPositioningElement::isKnownAttribute): Deleted.
        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::SVGUseElement):
        (WebCore::SVGUseElement::parseAttribute):
        (WebCore::SVGUseElement::svgAttributeChanged):
        (WebCore::SVGUseElement::registerAttributes): Deleted.
        * svg/SVGUseElement.h:
        * svg/SVGValue.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimator.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
        (WebCore::SVGAnimationLengthListFunction::SVGAnimationLengthListFunction):
        (WebCore::SVGAnimationLengthListFunction::progress):
        (WebCore::SVGAnimationNumberListFunction::progress):
        (WebCore::SVGAnimationPointListFunction::progress):
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationLengthFunction::SVGAnimationLengthFunction):
        (WebCore::SVGAnimationLengthFunction::progress):
        * svg/properties/SVGAttributeAnimator.cpp:
        (WebCore::SVGAttributeAnimator::isAnimatedStylePropertyAniamtor const):
        * svg/properties/SVGAttributeAnimator.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyAnimatorFactory.h:
        (WebCore::SVGPropertyAnimatorFactory::createLengthAnimator):
        (WebCore::SVGPropertyAnimatorFactory::createLengthListAnimator):
        (WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        (WebCore::SVGPropertyOwnerRegistry::isAnimatedLengthAttribute):
        * svg/properties/SVGPropertyRegistry.h:
        * svg/properties/SVGValuePropertyAnimator.h: Added.
        (WebCore::SVGValuePropertyAnimator::SVGValuePropertyAnimator):
        * svg/properties/SVGValuePropertyAnimatorImpl.h: Added.
        * svg/properties/SVGValuePropertyListAnimator.h: Added.
        (WebCore::SVGValuePropertyListAnimator::SVGValuePropertyListAnimator):
        * svg/properties/SVGValuePropertyListAnimatorImpl.h: Added.

2019-03-26  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] position:fixed inside oveflow:scroll is jumpy
        https://bugs.webkit.org/show_bug.cgi?id=196238

        Reviewed by Antti Koivisto.
        
        We were inadvertently making Positioned nodes for position:fixed, which is unnecessary because
        Fixed nodes handle them, and harmful because they introduced unwanted layer movement.

        Tests: scrollingcoordinator/ios/fixed-in-overflow-scroll-scrolling-tree.html
               scrollingcoordinator/ios/fixed-in-overflow-scroll.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

2019-03-26  Dean Jackson  <dino@apple.com>

        vertexAttribPointer must restrict offset parameter
        https://bugs.webkit.org/show_bug.cgi?id=196261
        <rdar://problem/48458086>

        Reviewed by Antoine Quint.

        This WebGL function should fail if the offset parameter is
        not within [0, max 32-bit int].

        Test: fast/canvas/webgl/vertexAttribPointer-with-bad-offset.html

        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::vertexAttribPointer):

2019-03-26  Antoine Quint  <graouts@apple.com>

        Remove mousemoveEventHandlingPreventsDefault internal setting and quirk
        https://bugs.webkit.org/show_bug.cgi?id=196254
        <rdar://problem/49124334>

        Unreviewed. Fix build broken by previous commit.

        * dom/Event.cpp:
        * dom/Event.h:
        (WebCore::Event::hasEncounteredListener const): Deleted.
        (WebCore::Event::setHasEncounteredListener): Deleted.
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::innerInvokeEventListeners):

2019-03-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Skip anonymous renderers when checking for "willRespondToMouseClickEvents"
        https://bugs.webkit.org/show_bug.cgi?id=196259
        <rdar://problem/49240029>

        Reviewed by Dean Jackson.

        Anonymous renderers don't have associated DOM nodes so they can't have event listeners either. Let's skip them.

        Test: fast/events/touch/ios/content-observation/crash-on-anonymous-renderer.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

2019-03-26  Antoine Quint  <graouts@apple.com>

        Remove mousemoveEventHandlingPreventsDefault internal setting and quirk
        https://bugs.webkit.org/show_bug.cgi?id=196254
        <rdar://problem/49124334>

        Reviewed by Dean Jackson.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldMousemoveEventHandlingPreventDefault const): Deleted.
        * page/Quirks.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setMouseEventsSimulationEnabled):
        (WebCore::RuntimeEnabledFeatures::mousemoveEventHandlingPreventsDefaultEnabled const): Deleted.
        (WebCore::RuntimeEnabledFeatures::setMousemoveEventHandlingPreventsDefaultEnabled): Deleted.

2019-03-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243493.
        https://bugs.webkit.org/show_bug.cgi?id=196257

        broke the non-gst-gl build (Requested by philn on #webkit).

        Reverted changeset:

        "Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is
        enabled"
        https://bugs.webkit.org/show_bug.cgi?id=196178
        https://trac.webkit.org/changeset/243493

2019-03-26  Mike Gorse  <mgorse@alum.wpi.edu>

        Build failure with gstreamer 1.12.5 if USE_GSTREAMER_GL is enabled
        https://bugs.webkit.org/show_bug.cgi?id=196178

        Reviewed by Philippe Normand.

        No new tests (build fix).

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        Include gst/gl/gl.h before including GraphicsContext3D.h.

2019-03-26  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Sound loop with Google Hangouts and WhatsApp notifications
        https://bugs.webkit.org/show_bug.cgi?id=189471

        Reviewed by Xabier Rodriguez-Calvar.

        The media duration is now cached (again). The loop issue was
        triggered by the previous version of the code returning positive
        infinite duration in didEnd(), followed by the timeupdate event
        propagation that would trick the HTMLMediaElement into a new call
        to play(). Now the cached duration is updated to current position
        at EOS (for forward playback direction only), so the media element
        no longer triggers a new play call for those cases.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
        (WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
        (WebCore::MediaPlayerPrivateGStreamer::durationMediaTime const):
        (WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
        (WebCore::MediaPlayerPrivateGStreamer::didEnd):
        (WebCore::MediaPlayerPrivateGStreamer::durationChanged):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::currentMediaTime const):

2019-03-26  Antti Koivisto  <antti@apple.com>

        Hit-testing on layers overlapping scrollers should hit-test on text boxes
        https://bugs.webkit.org/show_bug.cgi?id=195373
        <rdar://problem/48649865>

        Reviewed by Simon Fraser.

        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::paint):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):

        Collect event region for overflowing line boxes.

        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::paintFlow):

        Collect event region for overflowing simple lines.

2019-03-25  Alex Christensen  <achristensen@webkit.org>

        Expected shouldn't assume its contained types are copyable
        https://bugs.webkit.org/show_bug.cgi?id=195986

        Reviewed by JF Bastien.

        * contentextensions/ContentExtensionParser.cpp:
        (WebCore::ContentExtensions::loadAction):

2019-03-20  Ryosuke Niwa  <rniwa@webkit.org>

        Leak of SVGFontFaceElement when RenderStyle holds onto a FontRances which uses it
        https://bugs.webkit.org/show_bug.cgi?id=196059

        Reviewed by Zalan Bujtas.

        SVGFontFaceElement keeps its RenderStyle alive via ElementRareData but RenderStyle can hold onto FontRanges
        and therefore CSSFontSource, which in turn keeps SVGFontFaceElement alive, making a reference cycle.

        More precisely, there are two reference cycles:
        SVGFontFaceElement (1) -> ElementRareData -> StyleInheritedData -> FontCascade -> FontCascadeFonts (2)
        FontCascadeFonts (2) -> FontRanges (3)
        FontCascadeFonts (2) -> CSSFontSelector -> CSSFontFaceSet -> CSSSegmentedFontFace -> FontRanges (3)
        FontRanges (3) -> CSSFontAccessor > CSSFontFace > CSSFontSource -> SVGFontFaceElement (1)

        No new tests. Unfortunately, writing a test proved to be intractable. The leak can be reproduced by running
        svg/text/text-text-05-t.svg then svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html consecutively.

        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::CSSFontFaceSource):
        (WebCore::CSSFontFaceSource::load):
        (WebCore::CSSFontFaceSource::font):
        (WebCore::CSSFontFaceSource::isSVGFontFaceSource const):
        * css/CSSFontFaceSource.h:

2019-03-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r243450.

        AppleWin and WinCairo port builds get broken.

        Reverted changeset:

        "Add test for fix of #196095"
        https://bugs.webkit.org/show_bug.cgi?id=196097
        https://trac.webkit.org/changeset/243450

2019-03-25  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG tear off objects for SVGAngle, SVGAnimatedAngle and SVGAnimatedEnumeration
        https://bugs.webkit.org/show_bug.cgi?id=196087

        Reviewed by Simon Fraser.

        In this patch, the tear off objects for SVGAnimatedEnumeration will be 
        removed. Because the angle is paired with the orient type so its tear
        off objects have to be removed as well. Here is what this patch does:

        -- SVGAngle is now a superclass of SVGValueProperty<SVGAngleValue>. Its 
        relationship with its owner will be managed by the owner of its base
        class SVGProperty.

        -- SVGAnimatedAngle is now defined to be SVGAnimatedValueProperty<
        SVGAngle>. All the DOM interfaces will be handled by the base class
        given its baseVal and animVal are of type SVGAngle.

        -- SVGAnimatedEnumeration is now defined to be
        SVGAnimatedDecoratedProperty<SVGDecoratedEnumeration, unsigned>.
        This can be read: SVGAnimatedEnumeration is an SVGAnimatedProperty which
        decorates the "SVGDecoratedEnumeration" type to "unsigned". The reason
        for this complication is the IDL of SVGAnimatedEnumeration defines the
        baseVal and animVal are of type unsigned. However SVGAnimatedEnumeration
        should be able to convert a string to its enum value and vice versa.

        -- SVGAnimatedDecoratedProperty is a template class which maps from
        DecoratedProperty to DecorationType. The DecoratedProperty is actually
        a template class which exposes a property of type DecorationType.

        -- SVGDecoratedProperty is an abstract class which manages setting and
        getting a property in DecorationType regardless of how it is actually
        stored. 

        -- SVGDecoratedPrimitive is a superclass of SVGDecoratedProperty which
        stores a primitive property whose type is PropertyType but can decorate
        it to the callers as DecorationType.

        -- SVGDecoratedEnumeration is a superclass of SVGDecoratedPrimitive
        which stores a primitive type DecorationType like "BlendMode" but
        decorates it as "unsigned"

        To get the mechanics of this change correct, new accessors, animators
        and animation functions need to be added for SVGAnimatedAngle,
        SVGAnimatedEnumeration and SVGAnimatedOrientType. But since angle and
        the orient type are paired under a single attribute, a pair accessor and
        animator are also needed for the pair { angle, orientType }.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAngle.h:
        (WebCore::SVGAngle::create):
        (WebCore::SVGAngle::unitType):
        (WebCore::SVGAngle::setValueForBindings):
        (WebCore::SVGAngle::valueForBindings):
        (WebCore::SVGAngle::setValueInSpecifiedUnits):
        (WebCore::SVGAngle::valueInSpecifiedUnits):
        (WebCore::SVGAngle::setValueAsString):
        (WebCore::SVGAngle::newValueSpecifiedUnits):
        (WebCore::SVGAngle::convertToSpecifiedUnits):
        (WebCore::SVGAngle::valueAsString): Deleted.
        (WebCore::SVGAngle::SVGAngle): Deleted.
        * svg/SVGAnimatedAngle.cpp: Removed.
        * svg/SVGAnimatedAngle.h: Removed.
        * svg/SVGAnimatedEnumeration.cpp: Removed.
        * svg/SVGAnimatedEnumeration.h: Removed.
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type const):
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGClipPathElement.cpp:
        (WebCore::SVGClipPathElement::SVGClipPathElement):
        (WebCore::SVGClipPathElement::parseAttribute):
        (WebCore::SVGClipPathElement::svgAttributeChanged):
        (WebCore::SVGClipPathElement::registerAttributes): Deleted.
        * svg/SVGClipPathElement.h:
        * svg/SVGComponentTransferFunctionElement.cpp:
        (WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
        (WebCore::SVGComponentTransferFunctionElement::parseAttribute):
        (WebCore::SVGComponentTransferFunctionElement::registerAttributes): Deleted.
        * svg/SVGComponentTransferFunctionElement.h:
        (WebCore::SVGComponentTransferFunctionElement::type const):
        (WebCore::SVGComponentTransferFunctionElement::typeAnimated):
        (WebCore::SVGComponentTransferFunctionElement::attributeRegistry): Deleted.
        (WebCore::SVGComponentTransferFunctionElement::isKnownAttribute): Deleted.
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::commitPropertyChange):
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::SVGFEBlendElement):
        (WebCore::SVGFEBlendElement::parseAttribute):
        (WebCore::SVGFEBlendElement::registerAttributes): Deleted.
        * svg/SVGFEBlendElement.h:
        (WebCore::SVGPropertyTraits<BlendMode>::fromString):
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
        (WebCore::SVGFEColorMatrixElement::parseAttribute):
        (WebCore::SVGFEColorMatrixElement::registerAttributes): Deleted.
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::SVGFECompositeElement):
        (WebCore::SVGFECompositeElement::parseAttribute):
        (WebCore::SVGFECompositeElement::registerAttributes): Deleted.
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes): Deleted.
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
        (WebCore::SVGFEDisplacementMapElement::parseAttribute):
        (WebCore::SVGFEDisplacementMapElement::registerAttributes): Deleted.
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
        (WebCore::SVGFEGaussianBlurElement::parseAttribute):
        (WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):
        (WebCore::SVGFEGaussianBlurElement::registerAttributes): Deleted.
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
        (WebCore::SVGFEMorphologyElement::parseAttribute):
        (WebCore::SVGFEMorphologyElement::registerAttributes): Deleted.
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
        (WebCore::SVGFETurbulenceElement::parseAttribute):
        (WebCore::SVGFETurbulenceElement::svgAttributeChanged):
        (WebCore::SVGFETurbulenceElement::registerAttributes): Deleted.
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterElement.cpp:
        (WebCore::SVGFilterElement::SVGFilterElement):
        (WebCore::SVGFilterElement::registerAttributes):
        (WebCore::SVGFilterElement::parseAttribute):
        * svg/SVGFilterElement.h:
        * svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::SVGGradientElement):
        (WebCore::SVGGradientElement::registerAttributes):
        (WebCore::SVGGradientElement::parseAttribute):
        * svg/SVGGradientElement.h:
        (WebCore::SVGGradientElement::spreadMethod const):
        (WebCore::SVGGradientElement::gradientUnits const):
        (WebCore::SVGGradientElement::spreadMethodAnimated):
        (WebCore::SVGGradientElement::gradientUnitsAnimated):
        * svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::SVGMarkerElement):
        (WebCore::SVGMarkerElement::registerAttributes):
        (WebCore::SVGMarkerElement::parseAttribute):
        (WebCore::SVGMarkerElement::setOrient):
        (WebCore::SVGMarkerElement::setOrientToAngle):
        (WebCore::SVGMarkerElement::orientTypeIdentifier): Deleted.
        (WebCore::SVGMarkerElement::orientAngleIdentifier): Deleted.
        * svg/SVGMarkerElement.h:
        * svg/SVGMarkerTypes.h:
        (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::autoString):
        (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::autoStartReverseString):
        (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString):
        (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::toString):
        * svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::SVGMaskElement):
        (WebCore::SVGMaskElement::registerAttributes):
        (WebCore::SVGMaskElement::parseAttribute):
        * svg/SVGMaskElement.h:
        * svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::SVGPatternElement):
        (WebCore::SVGPatternElement::registerAttributes):
        (WebCore::SVGPatternElement::parseAttribute):
        * svg/SVGPatternElement.h:
        * svg/SVGSVGElement.cpp:
        * svg/SVGScriptElement.cpp:
        * svg/SVGTextContentElement.cpp:
        (WebCore::SVGTextContentElement::SVGTextContentElement):
        (WebCore::SVGTextContentElement::registerAttributes):
        (WebCore::SVGTextContentElement::parseAttribute):
        * svg/SVGTextContentElement.h:
        (WebCore::SVGTextContentElement::lengthAdjust const):
        (WebCore::SVGTextContentElement::lengthAdjustAnimated):
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::SVGTextPathElement):
        (WebCore::SVGTextPathElement::registerAttributes):
        (WebCore::SVGTextPathElement::parseAttribute):
        * svg/SVGTextPathElement.h:
        * svg/SVGValue.h:
        * svg/properties/SVGAnimatedDecoratedProperty.h: Added.
        (WebCore::SVGAnimatedDecoratedProperty::create):
        (WebCore::SVGAnimatedDecoratedProperty::SVGAnimatedDecoratedProperty):
        (WebCore::SVGAnimatedDecoratedProperty::setBaseVal):
        (WebCore::SVGAnimatedDecoratedProperty::setBaseValInternal):
        (WebCore::SVGAnimatedDecoratedProperty::baseVal const):
        (WebCore::SVGAnimatedDecoratedProperty::setAnimVal):
        (WebCore::SVGAnimatedDecoratedProperty::animVal const):
        (WebCore::SVGAnimatedDecoratedProperty::currentValue const):
        * svg/properties/SVGAnimatedEnumerationPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        (WebCore::SVGAnimatedOrientType::create):
        * svg/properties/SVGAnimatedPropertyPairAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyPairAnimator.h:
        (WebCore::SVGAnimatedPropertyPairAnimator::appendAnimatedInstance):
        * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
        * svg/properties/SVGAnimatedStaticPropertyTearOff.h: Removed.
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationAngleFunction::progress):
        * svg/properties/SVGAnimationDiscreteFunctionImpl.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGDecoratedEnumeration.h: Added.
        (WebCore::SVGDecoratedEnumeration::create):
        * svg/properties/SVGDecoratedPrimitive.h: Added.
        (WebCore::SVGDecoratedPrimitive::SVGDecoratedPrimitive):
        * svg/properties/SVGDecoratedProperty.h: Added.
        (WebCore::SVGDecoratedProperty::setValue):
        (WebCore::SVGDecoratedProperty::value const):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        (WebCore::SVGPropertyOwnerRegistry::isAnimatedLengthAttribute):
        * svg/properties/SVGPropertyRegistry.h:
        * svg/properties/SVGStaticPropertyTearOff.h: Removed.

2019-03-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [iOS] Break a reference cycle between PreviewLoader and ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194964

        Unreviewed build fix for WinCairo port.

        error C2504: 'CanMakeWeakPtr': base class undefined

        * loader/ResourceLoader.h: Added #include <wtf/WeakPtr.h>.

2019-03-25  Andy Estes  <aestes@apple.com>

        [iOS] Break a reference cycle between PreviewLoader and ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194964
        <rdar://problem/48279441>

        Reviewed by Alex Christensen.

        When a document's QuickLook preview is loaded, a reference cycle is created between
        WebPreviewLoader and ResourceLoader. Break the cycle by changing WebPreviewLoader to hold a
        WeakPtr to its ResourceLoader ResourceLoader::releaseResources().

        Fixes leaks detected by `run-webkit-tests --leaks LayoutTests/quicklook`. Also covered by
        existing API tests.

        * loader/ResourceLoader.h:
        * loader/ios/PreviewLoader.mm:
        (-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
        (-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]):
        (-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
        (-[WebPreviewLoader connectionDidFinishLoading:]):
        (-[WebPreviewLoader connection:didFailWithError:]):

2019-03-25  Alex Christensen  <achristensen@webkit.org>

        Enable IPC sending and receiving non-default-constructible types
        https://bugs.webkit.org/show_bug.cgi?id=196132

        Reviewed by Geoff Garen.

        This basically just requires the decoding of std::tuple to return an Optional<std::tuple> instead of
        constructing a std::tuple then decoding into it.  I now decode synchronous replies into an Optional<std::tuple>
        then move it into the tuple of references where the successfully decoded reply should go.  This required
        the synchronous reply types be move constructible and move assignable.

        * Modules/indexeddb/shared/IDBRequestData.h:
        * Modules/indexeddb/shared/IDBTransactionInfo.h:
        * platform/DragImage.h:
        * platform/PasteboardWriterData.h:
        * platform/audio/mac/CAAudioStreamDescription.h:
        * platform/graphics/RemoteVideoSample.h:

2019-03-25  Alex Christensen  <achristensen@webkit.org>

        Stop storing raw pointers to Documents
        https://bugs.webkit.org/show_bug.cgi?id=196042

        Reviewed by Geoff Garen.

        Use WeakPtr instead!  This could change some UAF bugs into null dereference crashes.

        * css/CSSFontSelector.cpp:
        (WebCore::CSSFontSelector::CSSFontSelector):
        (WebCore::CSSFontSelector::addFontFaceRule):
        (WebCore::CSSFontSelector::fontRangesForFamily):
        * css/CSSFontSelector.h:
        * css/MediaQueryMatcher.cpp:
        (WebCore::MediaQueryMatcher::MediaQueryMatcher):
        (WebCore::MediaQueryMatcher::matchMedia):
        * css/MediaQueryMatcher.h:
        * css/StyleSheetList.cpp:
        (WebCore::StyleSheetList::StyleSheetList):
        (WebCore::StyleSheetList::ownerNode const):
        * css/StyleSheetList.h:
        * css/ViewportStyleResolver.cpp:
        (WebCore::ViewportStyleResolver::ViewportStyleResolver):
        * css/ViewportStyleResolver.h:
        * dom/Document.h:
        (WebCore::Document::setTemplateDocumentHost):
        (WebCore::Document::templateDocumentHost):
        * dom/DocumentParser.cpp:
        (WebCore::DocumentParser::DocumentParser):
        * dom/DocumentParser.h:
        (WebCore::DocumentParser::document const):
        * dom/ScriptedAnimationController.cpp:
        (WebCore::ScriptedAnimationController::ScriptedAnimationController):
        * dom/ScriptedAnimationController.h:
        * html/parser/HTMLScriptRunner.cpp:
        (WebCore::HTMLScriptRunner::HTMLScriptRunner):
        (WebCore::HTMLScriptRunner::runScript):
        * html/parser/HTMLScriptRunner.h:
        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResourceLoader::MediaResourceLoader):
        * loader/MediaResourceLoader.h:
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::canRequestInContentDispositionAttachmentSandbox const):
        (WebCore::CachedResourceLoader::loadDone):
        * loader/cache/CachedResourceLoader.h:
        (WebCore::CachedResourceLoader::document const):
        (WebCore::CachedResourceLoader::setDocument):

2019-03-25  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r243419.

        Caused Mac WK2 testers to crash and become unresponsive.

        Reverted changeset:

        "[Web GPU] Prototype compute pipeline with MSL"
        https://bugs.webkit.org/show_bug.cgi?id=196107
        https://trac.webkit.org/changeset/243419

2019-03-25  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r243438.

        243319 Caused Mac WK2 testers to crash and become
        unresponsive.

        Reverted changeset:

        "Update WebGPU class names based on sketch.idl"
        https://bugs.webkit.org/show_bug.cgi?id=194260
        https://trac.webkit.org/changeset/243438

2019-03-25  Eric Carlson  <eric.carlson@apple.com>

        Delete MetadataPreloadingNotPermitted, it is unused
        https://bugs.webkit.org/show_bug.cgi?id=196202
        <rdar://problem/49213611>

        Reviewed by Jer Noble.

        No new tests, the flat was unused except in an existing test that was removed.

        * html/MediaElementSession.cpp:
        (WebCore::restrictionNames):
        (WebCore::MediaElementSession::effectivePreloadForElement const):
        * html/MediaElementSession.h:
        * platform/graphics/cg/UTIRegistry.cpp:
        (WebCore::defaultSupportedImageTypes):
        * testing/Internals.cpp:
        (WebCore::Internals::setMediaElementRestrictions):

2019-03-25  Jer Noble  <jer.noble@apple.com>

        Test for: 196095 Inband Text Track cues interspersed with Data cues can display out of order.
        https://bugs.webkit.org/show_bug.cgi?id=196097

        Reviewed by Eric Carlson.

        Test: media/track/track-in-band-metadata-display-order.html

        Add a method in Internals to create a TextTrackCueGeneric (which can normally only be created
        by parsing an in-band media track). This requires adding IDL for TextTrackCueGeneric, and exporting
        TextTrackCueGeneric for testing.

        Drive-by fixes:

        Add runtime logging to MediaControlTextTrackContainerElement. This necessitates modifying the
        parentMediaElement() method to take a const Node*, and const_cast that constness away in order to return
        a HTMLMediaElement*

        TextTrackCue, VTTCue, TextTrackCueGeneric, and DataCue should all use the WTF TypeCasts macros to
        enable use of is<> and downcast<>.

        * Source/WebCore/CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:
        * html/shadow/MediaControlElementTypes.cpp:
        (WebCore::parentMediaElement):
        * html/shadow/MediaControlElementTypes.h:
        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlTextTrackContainerElement::updateDisplay):
        (WebCore::MediaControlTextTrackContainerElement::logger const):
        (WebCore::MediaControlTextTrackContainerElement::logIdentifier const):
        (WebCore::MediaControlTextTrackContainerElement::logChannel const):
        * html/shadow/MediaControlElements.h:
        * html/track/DataCue.h:
        (isType):
        * html/track/TextTrackCueGeneric.h:
        (isType):
        * html/track/TextTrackCueGeneric.idl: Added.
        * html/track/VTTCue.h:
        (isType):
        * testing/Internals.cpp:
        (WebCore::Internals::createGenericCue):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-03-25  Antti Koivisto  <antti@apple.com>

        Toggling "display: contents" to "display: none" fails to hide the element
        https://bugs.webkit.org/show_bug.cgi?id=188259
        <rdar://problem/42886896>

        Reviewed by Simon Fraser.

        Test: fast/css/display-contents-to-none.html

        * style/StyleTreeResolver.cpp:
        (WebCore::Style::affectsRenderedSubtree):

        An element with 'display:contents' has a rendered subtree.

2019-03-25  Justin Fan  <justin_fan@apple.com>

        Update WebGPU class names based on sketch.idl
        https://bugs.webkit.org/show_bug.cgi?id=194260

        Reviewed by Dean Jackson.

        Update all exposed Web GPU interface names to GPU* prefix. 

        Existing Web GPU tests updated to expect new names.

        * Modules/webgpu/WebGPU.idl:
        * Modules/webgpu/WebGPUAdapter.idl:
        * Modules/webgpu/WebGPUBindGroup.idl:
        * Modules/webgpu/WebGPUBindGroupLayout.idl:
        * Modules/webgpu/WebGPUBuffer.idl:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUInputStepMode.h: Removed.
        * Modules/webgpu/WebGPUPipelineLayout.idl:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPUQueue.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * Modules/webgpu/WebGPURenderPipeline.idl:
        * Modules/webgpu/WebGPUSampler.idl:
        * Modules/webgpu/WebGPUTexture.idl:
        * Modules/webgpu/WebGPUTextureView.idl:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2019-03-25  Javier Fernandez  <jfernandez@igalia.com>

        A single leading space is not considered as a word break even when word-break: break-all is set
        https://bugs.webkit.org/show_bug.cgi?id=195361

        Reviewed by Ryosuke Niwa.

        We must consider leading white-spaces as potential soft-breaking
        opportunities that may avoid breaking in the middle of the word.

        However, 'break-word: break-all' [1] implies that we should ignore
        previous opportunities and break at any character (among the ones
        valid for 'break-all') that prevents the line to overflow. Note,
        that these breakable characters are different from the ones
        provided by 'line-break: anywhere' [2].

        This change is covered by the already existent tests of the CSS
        Text 3 suite of the Web Platform Tests.

        The word-break-break-all-010.html was precisely designed to cover
        the basic issue fixed with this change, verifying that the word is
        indeed broken even if a single leading space constitutes a
        previous soft-breaking opportunity.

        There are other Web Platform Tests. which already pass before this
        change, to verify that such leading white-space must be used
        instead of breaking the word in any other case, including
        overflow-wrap: break-word and even the deprecated word-break:
        break-word.

           - white-space/pre-wrap-008.html
           - white-space/pre-wrap-015.html
           - white-space/pre-wrap-016.html
           - overflow-wrap/overflow-wrap-break-word-004.html
           - overflow-wrap/overflow-wrap-break-word-005.html
           - overflow-wrap/overflow-wrap-break-word-007.html
           - word-break/word-break-break-all-011.html
           - word-break/word-break-break-all-014.html

        The reason why the word-break-break-all-010.html passes in Mac
        platform is that for that case the SimpleLineLayout codepath is
        executed instead, which doesn't have this bug, present in the old
        line-breaking logic implemented in the BreakingContext class.

        In order to verify the validity of this change, I've added several
        tests under fast/text with the SimpleLineLayout disabled.

        Tests: fast/text/overflow-wrap-break-word-004.html
               fast/text/overflow-wrap-break-word-005.html
               fast/text/overflow-wrap-break-word-007.html
               fast/text/whitespace/pre-wrap-008.html
               fast/text/whitespace/pre-wrap-015.html
               fast/text/whitespace/pre-wrap-016.html
               fast/text/word-break-break-all-010.html
               fast/text/word-break-break-all-011.html
               fast/text/word-break-break-all-015.html
               imported/w3c/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html
               imported/w3c/web-platform-tests/css/css-text/white-space/pre-wrap-008.html
               imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-015.html

        * rendering/line/BreakingContext.h:
        (WebCore::BreakingContext::handleText):

2019-03-25  Rob Buis  <rbuis@igalia.com>

        Reflect HTMLLinkElement.as according to the spec
        https://bugs.webkit.org/show_bug.cgi?id=196189

        Reviewed by Youenn Fablet.

        The 'as' attribute is an enumerated attribute [1] and should
        reflect using a finite set of keywords, so lowercase the as getter
        to match the defined set of destinations [2].

        Test: imported/w3c/web-platform-tests/preload/reflected-as-value.html

        [1] https://html.spec.whatwg.org/#enumerated-attribute
        [2] https://fetch.spec.whatwg.org/#concept-request-destination

        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::as const):

2019-03-25  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove NavigatorContentUtils in WebCore/Modules
        https://bugs.webkit.org/show_bug.cgi?id=196070

        Reviewed by Alex Christensen.

        NavigatorContentUtils was to support the custom scheme spec [1].
        However, in WebKit side, no port has supported the feature in
        WebKit layer after EFL port was removed. So there has been the
        only IDL implementation of the NavigatorContentUtils in WebCore.
        So we don't need to keep the implementation in WebCore anymore.

        [1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

        No new tests because this patch is just to remove the feature.

        * CMakeLists.txt:
        * Modules/navigatorcontentutils/NavigatorContentUtils.cpp: Removed.
        * Modules/navigatorcontentutils/NavigatorContentUtils.h: Removed.
        * Modules/navigatorcontentutils/NavigatorContentUtils.idl: Removed.
        * Modules/navigatorcontentutils/NavigatorContentUtilsClient.h: Removed.
        * Sources.txt:

2019-03-25  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Fix grid container baseline alignment for orthogonal items
        https://bugs.webkit.org/show_bug.cgi?id=196141

        Reviewed by Javier Fernandez.

        Grid container baseline was wrongly computed when done in reference to an orthogonal item.

        Test: imported/w3c/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::firstLineBaseline const): Simple change to use logicalTopForChild()
        so it takes into account grid container and item writing modes.

2019-03-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix -Wpessimizing-move warning
        https://bugs.webkit.org/show_bug.cgi?id=195905
        <rdar://problem/49121824>

        * svg/properties/SVGPropertyList.h:

2019-03-23  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Prototype compute pipeline with MSL
        https://bugs.webkit.org/show_bug.cgi?id=196107
        <rdar://problem/46289650>

        Reviewed by Myles Maxfield.

        Add GPUComputePassEncoder, GPUComputePipeline, and GPUComputePipelineDescriptor.
        Implement everything needed to prototype a compute pipeline in Web GPU using Metal shaders and bound resources.

        Test: webgpu/compute-squares.html

        Add files and symbols:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Misc fixes:
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h: Missing include.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Missing include.
        * Modules/webgpu/WebGPUPipelineStageDescriptor.cpp: Added. Move pipeline stage validation logic here.
        (WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const):
        * Modules/webgpu/WebGPURenderPipeline.cpp: Remove unnecessary include.
        * Modules/webgpu/WebGPURenderPipeline.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.cpp: Add missing inlcude.
        (WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const): Moved to WebGPUPipelineStageDescriptor.cpp.
        * platform/graphics/gpu/GPUPipelineDescriptorBase.h: Add missing include.
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Add missing include.
        (WebCore::GPURenderPipeline::GPURenderPipeline): Remove unecessary ref of GPUPipelineLayout.
        * platform/text/mac/TextEncodingRegistryMac.mm: Carbon.h was causing ambiguous reference build errors in this file.

        Enable creating a GPUComputePassEncoder from a GPUCommandEncoder:
        * Modules/webgpu/WebGPUCommandEncoder.cpp:
        (WebCore::WebGPUCommandEncoder::beginRenderPass): No longer passing this WebGPUCommandEncoder to pass encoders.
        (WebCore::WebGPUCommandEncoder::beginComputePass): Added.
        * Modules/webgpu/WebGPUCommandEncoder.h:
        * Modules/webgpu/WebGPUCommandEncoder.idl:

        Add GPUComputePassEncoder:
        * Modules/webgpu/WebGPUComputePassEncoder.cpp: Added.
        (WebCore::WebGPUComputePassEncoder::create):
        (WebCore::WebGPUComputePassEncoder::WebGPUComputePassEncoder):
        (WebCore::WebGPUComputePassEncoder::setPipeline):
        (WebCore::WebGPUComputePassEncoder::dispatch):
        (WebCore::WebGPUComputePassEncoder::passEncoder):
        (WebCore::WebGPUComputePassEncoder::passEncoder const):
        * Modules/webgpu/WebGPUComputePassEncoder.h: Added.
        * Modules/webgpu/WebGPUComputePassEncoder.idl: Added.
        * platform/graphics/gpu/GPUComputePassEncoder.h: Added.
        (WebCore::GPUComputePassEncoder::~GPUComputePassEncoder):
        * platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Added.
        (WebCore::GPUComputePassEncoder::tryCreate):
        (WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
        (WebCore::GPUComputePassEncoder::setPipeline):
        (WebCore::GPUComputePassEncoder::dispatch): Use a default calculation for threadsPerThreadgroup while MSL is still an accepted shader format.
        (WebCore::GPUComputePassEncoder::platformPassEncoder const):
        (WebCore::GPUComputePassEncoder::useResource):
        (WebCore::GPUComputePassEncoder::setComputeBuffer):

        Add GPUComputePipeline:
        * Modules/webgpu/WebGPUComputePipeline.cpp: Added.
        (WebCore::WebGPUComputePipeline::create):
        (WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
        * Modules/webgpu/WebGPUComputePipeline.h: Added.
        (WebCore::WebGPUComputePipeline::computePipeline const):
        * Modules/webgpu/WebGPUComputePipeline.idl: Added.
        * Modules/webgpu/WebGPUComputePipelineDescriptor.cpp: Added.
        (WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
        * Modules/webgpu/WebGPUComputePipelineDescriptor.h: Added.
        * Modules/webgpu/WebGPUComputePipelineDescriptor.idl: Added.
        * platform/graphics/gpu/GPUComputePipeline.h: Added.
        (WebCore::GPUComputePipeline::platformComputePipeline const):
        * platform/graphics/gpu/GPUComputePipelineDescriptor.h: Added.
        (WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
        * platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Added.
        (WebCore::tryCreateMtlComputeFunction):
        (WebCore::tryCreateMTLComputePipelineState):
        (WebCore::GPUComputePipeline::tryCreate):
        (WebCore::GPUComputePipeline::GPUComputePipeline):

        Enable creating a GPUComputePipeline from a GPUDevice:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createComputePipeline const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateComputePipeline const):
        * platform/graphics/gpu/GPUDevice.h:

        No longer unnecessarily ref the WebGPUCommandEncoder when creating pass encoder:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup):
        (WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder): Deleted.
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Deleted.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::setPipeline):
        (WebCore::WebGPURenderPassEncoder::passEncoder):
        (WebCore::WebGPURenderPassEncoder::passEncoder const):
        * Modules/webgpu/WebGPURenderPassEncoder.h:

        Updates to GPUBindGroup and *setBindGroup for compute function arguments:
        * platform/graphics/gpu/GPUBindGroup.h:
        (WebCore::GPUBindGroup::vertexArgsBuffer const):
        (WebCore::GPUBindGroup::fragmentArgsBuffer const):
        (WebCore::GPUBindGroup::computeArgsBuffer const):
        (WebCore::GPUBindGroup::vertexArgsBuffer): Deleted. Const-qualified.
        (WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::tryGetResourceAsMTLSamplerState): Now just returns the MTLSamplerState to reduce reference churning.
        (WebCore::GPUBindGroup::tryCreate):
        (WebCore::GPUBindGroup::GPUBindGroup):
        (WebCore::tryGetResourceAsSampler): Renamed to tryGetResourceAsMTLSamplerState.

        Updates to GPUProgrammablePassEncoder and GPURenderPassEncoder:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        (WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
        (WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
        (WebCore::GPUProgrammablePassEncoder::setComputeBuffer): Added.
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        (WebCore::GPURenderPassEncoder::~GPURenderPassEncoder):
        * platform/graphics/gpu/GPURenderPipeline.h:
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Remove unecessary include.
        (WebCore::GPUProgrammablePassEncoder::endPass): No longer virtual. Delegates shared behavior for derived classes.
        (WebCore::GPUProgrammablePassEncoder::setBindGroup):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::platformPassEncoder const):
        (WebCore::GPURenderPassEncoder::setPipeline):
        (WebCore::GPURenderPassEncoder::draw):
        (WebCore::GPURenderPassEncoder::useResource): These private overrides are called only by base after checking for encoder existence.
        (WebCore::GPURenderPassEncoder::setVertexBuffer): Ditto.
        (WebCore::GPURenderPassEncoder::setFragmentBuffer): Ditto.
        (WebCore::GPURenderPassEncoder::endPass): Deleted. Now handled by base class.

2019-03-23  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
        https://bugs.webkit.org/show_bug.cgi?id=137043
        rdar://problem/16595330

        Reviewed by Zalan Bujtas.

        Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
        to the UI process, and use it to set UIScrollView indicators visible or not.

        Tests: fast/scrolling/ios/scrollbar-hiding.html:

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingCoordinatorTypes.h:
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
        (WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::horizontalScrollbarHiddenByStyle const):
        (WebCore::ScrollableArea::verticalScrollbarHiddenByStyle const):
        * rendering/RenderLayer.cpp:
        (WebCore::scrollbarHiddenByStyle):
        (WebCore::RenderLayer::horizontalScrollbarHiddenByStyle const):
        (WebCore::RenderLayer::verticalScrollbarHiddenByStyle const):
        * rendering/RenderLayer.h:

2019-03-23  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add support for observing opacity.
        https://bugs.webkit.org/show_bug.cgi?id=196172

        Reviewed by Simon Fraser.

        This patch adds support for observing opacity changes. At this point we only track one transition at a time.
        if the page registers transition on both left and opacity, the first is getting observed only.

        Tests: fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-opacity-and-left.html
               fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove-with-transition.html
               fast/events/touch/ios/content-observation/opacity-change-happens-on-mousemove.html
               fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-with-transition.html
               fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::isConsideredHidden):
        (WebCore::ContentChangeObserver::didAddTransition):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservedPropertyForTransition const):

2019-03-23  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Check if the transitioned content is visible at onAnimationEnd
        https://bugs.webkit.org/show_bug.cgi?id=196171

        Reviewed by Simon Fraser.

        At onAnimationEnd we don't yet have the final computed style for the transitioned content.
        However the current state (before computing the final style) might already be qualified to be visible.
        Introduce "CompletedTransition" to indicate that the transition is all set as far observing is concerned
        (as opposed to "EndedTransition" where we still need to observe the content for the final style change).

        Test: fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-with-non-0px-end.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didFinishTransition):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:

2019-03-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove build time dependency on Geoclue2
        https://bugs.webkit.org/show_bug.cgi?id=195994

        Reviewed by Michael Catanzaro.

        Remove old Geoclue implementation.

        * PlatformGTK.cmake:
        * SourcesGTK.txt:
        * platform/geoclue/GeolocationProviderGeoclue.cpp: Removed.
        * platform/geoclue/GeolocationProviderGeoclue.h: Removed.
        * platform/geoclue/GeolocationProviderGeoclueClient.h: Removed.

2019-03-22  Eric Carlson  <eric.carlson@apple.com>

        Flaky AVEncoderBitRateKey symbol not found crash on imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-constructor.html
        https://bugs.webkit.org/show_bug.cgi?id=193724
        <rdar://problem/47483831>

        Reviewed by Jer Noble.

        The soft link macros occasionally fail to load constants from AVFoundation.framework
        which are actually in one of its sub-frameworks. While we investigate the cause
        cause of the failure, ise the SOFT_LINK_CONSTANT_MAY_FAIL so we can detect the failure
        and return a local copy of the string instead of crashing.
        
        No new tests, this should prevent existing tests from crashing.

        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::myAVFormatIDKey):
        (WebCore::myAVNumberOfChannelsKey):
        (WebCore::myAVSampleRateKey):
        (WebCore::myAVEncoderBitRateKey):

2019-03-22  Youenn Fablet  <youenn@apple.com>

        REGRESSION: Flaky ASSERTION FAILED: !m_killed seen with http/tests/security/cross-origin-worker-indexeddb.html
        https://bugs.webkit.org/show_bug.cgi?id=196024
        <rdar://problem/49117272>

        Reviewed by Alexey Proskuryakov.

        Do not proceed with opening the database if it is being closed.
        Speculative fix, this should stop making test crashing on bots.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):

2019-03-22  Youenn Fablet  <youenn@apple.com>

        storage/indexeddb/closed-cursor-private.html is crashing on debug
        https://bugs.webkit.org/show_bug.cgi?id=196101

        Reviewed by Alex Christensen.

        In case of immediate close for user delete, the transaction might be deleted.
        If the request for space is pending, it will be executed with an error as parameter.
        In that case, the call to didCommitTransaction will not find any existing transaction.
        Speculative fix, test should no longer crash.

        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):

2019-03-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice per frame.
        https://bugs.webkit.org/show_bug.cgi?id=196082
        <rdar://problem/49113496>

        Reviewed by Dean Jackson.

        Tests: inspector/canvas/recording-2d.html
               inspector/canvas/recording-bitmaprenderer.html
               inspector/canvas/recording-html-2d.html
               inspector/canvas/recording-webgl.html
               inspector/canvas/setRecordingAutoCaptureFrameCount.html

        WebGL `<canvas>` follow a different "rendering" path such that `HTMLCanvasElement::paint`
        isn't called. Previously, there was a 0s timer that was started after the first action of a
        frame was recorded (for the case that the `<canvas>` isn't attached to the DOM) that would
        automatically stop the recording. It was possible that actions in two different "frame"s
        were recorded as part of the same frame, because the WebGL `<canvas>` would instead fall
        back to the timer to know when the "frame" had ended.

        Now, there is additional instrumentation for the WebGL specific rendering path.
        Additionally, replace the 0s timer with a microtask for more "immediate" calling.

        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::paint):
        Ensure that the `InspectorInstrumentation` call is last. This matches what we expect, as
        before we were instrumenting right before is it about to paint.

        * platform/graphics/GraphicsContext3D.h:
        (WebCore::GraphicsContext3D::Client::~Client): Added.
        (WebCore::GraphicsContext3D::addClient): Added.
        (WebCore::GraphicsContext3D::removeClient): Added.
        (WebCore::GraphicsContext3D::setWebGLContext): Deleted.
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::markLayerComposited):
        (WebCore::GraphicsContext3D::forceContextLost):
        (WebCore::GraphicsContext3D::recycleContext):
        (WebCore::GraphicsContext3D::dispatchContextChangedNotification):
        * html/canvas/WebGLRenderingContextBase.h:
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
        (WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
        (WebCore::WebGLRenderingContextBase::didComposite): Added.
        (WebCore::WebGLRenderingContextBase::forceContextLost):
        (WebCore::WebGLRenderingContextBase::recycleContext):
        (WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification): Added.
        (WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.
        Introduce a `GraphicsContext3DClient` abstract class, rather than passing the
        `WebGLRenderingContextBase` directly to the `GraphicsContext3D` (layering violation).
        Notify the client whenever the `GraphicsContext3D` composites, which will in turn notify the
        `InspectorCanvasAgent` so that it knows that the "frame" is over.

        * inspector/agents/InspectorCanvasAgent.h:
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
        (WebCore::InspectorCanvasAgent::requestNode):
        (WebCore::InspectorCanvasAgent::requestContent):
        (WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
        (WebCore::InspectorCanvasAgent::resolveCanvasContext):
        (WebCore::InspectorCanvasAgent::startRecording):
        (WebCore::InspectorCanvasAgent::stopRecording):
        (WebCore::InspectorCanvasAgent::requestShaderSource):
        (WebCore::InspectorCanvasAgent::updateShader):
        (WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
        (WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
        (WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
        (WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
        (WebCore::InspectorCanvasAgent::recordCanvasAction):
        (WebCore::InspectorCanvasAgent::canvasDestroyed):
        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
        (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
        (WebCore::InspectorCanvasAgent::didEnableExtension):
        (WebCore::InspectorCanvasAgent::didCreateProgram):
        (WebCore::InspectorCanvasAgent::willDeleteProgram):
        (WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
        (WebCore::InspectorCanvasAgent::isShaderProgramHighlighted):
        (WebCore::InspectorCanvasAgent::clearCanvasData):
        (WebCore::InspectorCanvasAgent::assertInspectorCanvas):
        (WebCore::InspectorCanvasAgent::findInspectorCanvas):
        (WebCore::InspectorCanvasAgent::assertInspectorProgram):
        (WebCore::InspectorCanvasAgent::findInspectorProgram):
        (WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): Deleted.
        Replace raw pointers with `RefPtr`s. This is primarily used so that the microtask (instead
        of a timer) that is enqueued after the first action of each frame  is recorded can access a
        ref-counted instance of an `InspectorCanvas`, ensuring that it isn't destructed.

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::canvasElement):
        (WebCore::InspectorCanvas::recordAction):
        (WebCore::InspectorCanvas::finalizeFrame):
        (WebCore::InspectorCanvas::releaseObjectForRecording): Added.
        (WebCore::InspectorCanvas::getCanvasContentAsDataURL):
        (WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
        (WebCore::InspectorCanvas::buildInitialState):
        (WebCore::InspectorCanvas::releaseInitialState): Deleted.
        (WebCore::InspectorCanvas::releaseFrames): Deleted.
        (WebCore::InspectorCanvas::releaseData): Deleted.
        Move the recording payload construction logic to `InspectorCanvas` so the actual data
        doesn't need to leave that class.
        Drive-by: unify the logic for getting the contents of a canvas from `InspectorCanvasAgent`.

2019-03-22  Keith Rollin  <krollin@apple.com>

        Enable ThinLTO support in Production builds
        https://bugs.webkit.org/show_bug.cgi?id=190758
        <rdar://problem/45413233>

        Reviewed by Daniel Bates.

        Enable building with Thin LTO in Production when using Xcode 10.2 or
        later. This change results in a 1.45% progression in PLT5. Full
        Production build times increase about 2-3%. Incremental build times
        are more severely affected, and so LTO is not enabled for local
        engineering builds.

        LTO is enabled only on macOS for now, until rdar://problem/49013399,
        which affects ARM builds, is fixed.

        Removed the conditionals that disabled LTO on 32-bit systems since we
        no longer build for those.

        To change the LTO setting when building locally:

        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
          command line.
        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
          on the command line.
        - If building with `build-root`, specify --lto={none,thin,full} on the
          command line.
        - If building with Xcode, create a LocalOverrides.xcconfig file at the
          top level of your repository directory (if needed) and define
          WK_LTO_MODE to full, thin, or none.

        No new tests since there should be no observable behavior difference.

        * Configurations/Base.xcconfig:

2019-03-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243356.

        Causes assertion failures with WebGL layout tests on macOS and
        iOS.

        Reverted changeset:

        "Web Inspector: Safari Canvas Inspector seems to show the
        canvas being rendered twice per frame."
        https://bugs.webkit.org/show_bug.cgi?id=196082
        https://trac.webkit.org/changeset/243356

2019-03-22  Antti Koivisto  <antti@apple.com>

        Handle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
        https://bugs.webkit.org/show_bug.cgi?id=196100
        <rdar://problem/49117933>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::positionedNodesWithRelatedOverflow):

        Add a separate map of positioned node ids for easy access.

        * page/scrolling/cocoa/ScrollingTreePositionedNode.h:
        (WebCore::ScrollingTreePositionedNode::scrollPositioningBehavior const):
        (WebCore::ScrollingTreePositionedNode::relatedOverflowScrollingNodes const):
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
        (WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):

2019-03-22  Antoine Quint  <graouts@apple.com>

        [Web Animations] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::WebAnimation::timeToNextTick const + 757
        https://bugs.webkit.org/show_bug.cgi?id=196125
        <rdar://problem/46520059>

        Reviewed by Dean Jackson.

        Because of floating point math in playState() that wouldn't account for timeEpsilon, we would get into a state where the animation phase
        was "after" but the play state was "running" when the current time was about a microsecond away from the active time boundary. This meant
        that the early return statement in WebAnimation::timeToNextTick() would not be hit while we would not handle the possibility of being in
        the "after" phase in the rest of the function, therefore eventually hitting the ASSERT_NOT_REACHED() at the end of the function.

        We now account for timeEpsilon in playState() and correctly report we're in the "finished" play state when in the "after" phase also.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::playState const):

2019-03-22  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Don't construct segments on PlaybackPipeline::flush
        https://bugs.webkit.org/show_bug.cgi?id=195867

        Reviewed by Xabier Rodriguez-Calvar.

        The previous approach did not really work for flushes on only one
        branch, as setting reset-time in FLUSH_STOP affects the running time
        of the entire pipeline, causing timing issues in the other branch.

        Since it's preferable not to interfere with the other branch if
        possible, setting reset-time to FALSE fixes that problem.

        Also, it's not necessary to fabricate a segment. Since we are not
        seeking, only the base needs to be adjusted, and gstbasesrc already
        handles this correctly by default.

        This fixes an audio/video synchronization bug in YT when some
        automatic quality changes occur.

        Tests: imported/w3c/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
               imported/w3c/web-platform-tests/media-source/mediasource-correct-frames.html

        * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
        (WebCore::PlaybackPipeline::flush):

2019-03-22  Frederic Wang  <fwang@igalia.com>

        Move implementation of mathsize to a single place
        https://bugs.webkit.org/show_bug.cgi?id=196129

        Reviewed by Ryosuke Niwa.

        Currently, mathsize is partially implemented in the MathML UA stylesheet and partially
        implemented in the MathML DOM classes using addPropertyToPresentationAttributeStyle. This
        patch moves the whole implementation to the latter place, so that it's easier to understand.
        It will also allow to conditionally disable the mathsize values removed from MathML Core.

        No new tests, already covered by existing tests.

        * css/mathml.css: Remove mathsize rules.
        * mathml/MathMLElement.cpp:
        (WebCore::convertMathSizeIfNeeded): Convert "small", "normal" and "big" to the values that
        used to be in the UA stylesheet. Also add a comment that we don't support all MathML lengths.
        (WebCore::MathMLElement::collectStyleForPresentationAttribute): Don't skip "small", "normal"
        or "big".
        (WebCore::convertToPercentageIfNeeded): Renamed to convertMathSizeIfNeeded.

2019-03-21  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG tear off objects for SVGNumber, SVGNumberList and SVGAnimatedNumberList
        https://bugs.webkit.org/show_bug.cgi?id=196084

        Reviewed by Simon Fraser.

        To remove the tear off objects for these interfaces, we need to do the
        following:

        -- SVGNumber will be a superclass of SVGValueProperty<float>. It provides
           the DOM interface functions.

        -- SVGNumberList will be a superclass of SVGValuePropertyList<SVGNumber>.
           It provides creation, parsing and converting to string functions.

        -- SVGAnimatedNumberList will be defined as SVGAnimatedPropertyList<SVGNumberList>.

        To make things work as expected:

        -- Properties of type SVGAnimatedNumberList have to be registered with
           SVGPropertyOwnerRegistry.
        -- An accessor, an animator and an animation function should be defined
           for SVGAnimatedNumberList.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
        (WebCore::updateCharacterData):
        (WebCore::SVGTextLayoutAttributesBuilder::fillCharacterDataMap):
        * svg/SVGAnimatedNumberList.cpp: Removed.
        * svg/SVGAnimatedNumberList.h: Removed.
        * svg/SVGAnimatedPointList.cpp: Removed.
        * svg/SVGAnimatedPointList.h: Removed.
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type const):
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGComponentTransferFunctionElement.cpp:
        (WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
        (WebCore::SVGComponentTransferFunctionElement::registerAttributes):
        (WebCore::SVGComponentTransferFunctionElement::parseAttribute):
        * svg/SVGComponentTransferFunctionElement.h:
        (WebCore::SVGComponentTransferFunctionElement::tableValues const):
        (WebCore::SVGComponentTransferFunctionElement::tableValuesAnimated):
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
        (WebCore::SVGFEColorMatrixElement::registerAttributes):
        (WebCore::SVGFEColorMatrixElement::parseAttribute):
        (WebCore::SVGFEColorMatrixElement::build const):
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        (WebCore::SVGFEConvolveMatrixElement::build const):
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGNumber.h:
        (WebCore::SVGNumber::create):
        (WebCore::SVGNumber::clone const):
        (WebCore::SVGNumber::valueForBindings):
        (WebCore::SVGNumber::setValueForBindings):
        (WebCore::SVGNumber::SVGNumber): Deleted.
        * svg/SVGNumberList.h:
        (WebCore::SVGNumberList::create):
        (WebCore::SVGNumberList::parse):
        (WebCore::SVGNumberList::SVGNumberList): Deleted.
        * svg/SVGNumberListValues.cpp: Removed.
        * svg/SVGNumberListValues.h: Removed.
        * svg/SVGTextPositioningElement.cpp:
        (WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
        (WebCore::SVGTextPositioningElement::registerAttributes):
        (WebCore::SVGTextPositioningElement::parseAttribute):
        * svg/SVGTextPositioningElement.h:
        (WebCore::SVGTextPositioningElement::rotate const):
        (WebCore::SVGTextPositioningElement::rotateAnimated):
        * svg/SVGValue.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
        (WebCore::SVGAnimationNumberListFunction::progress):
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-21  Devin Rousso  <drousso@apple.com>

        Web Inspector: Safari Canvas Inspector seems to show the canvas being rendered twice per frame.
        https://bugs.webkit.org/show_bug.cgi?id=196082
        <rdar://problem/49113496>

        Reviewed by Dean Jackson.

        Tests: inspector/canvas/recording-2d.html
               inspector/canvas/recording-bitmaprenderer.html
               inspector/canvas/recording-html-2d.html
               inspector/canvas/recording-webgl.html
               inspector/canvas/setRecordingAutoCaptureFrameCount.html

        WebGL `<canvas>` follow a different "rendering" path such that `HTMLCanvasElement::paint`
        isn't called. Previously, there was a 0s timer that was started after the first action of a
        frame was recorded (for the case that the `<canvas>` isn't attached to the DOM) that would
        automatically stop the recording. It was possible that actions in two different "frame"s
        were recorded as part of the same frame, because the WebGL `<canvas>` would instead fall
        back to the timer to know when the "frame" had ended.

        Now, there is additional instrumentation for the WebGL specific rendering path.
        Additionally, replace the 0s timer with a microtask for more "immediate" calling.

        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::paint):
        Ensure that the `InspectorInstrumentation` call is last. This matches what we expect, as
        before we were instrumenting right before is it about to paint.

        * platform/graphics/GraphicsContext3D.h:
        (WebCore::GraphicsContext3D::Client::~Client): Added.
        (WebCore::GraphicsContext3D::addClient): Added.
        (WebCore::GraphicsContext3D::removeClient): Added.
        (WebCore::GraphicsContext3D::setWebGLContext): Deleted.
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::markLayerComposited):
        (WebCore::GraphicsContext3D::forceContextLost):
        (WebCore::GraphicsContext3D::recycleContext):
        (WebCore::GraphicsContext3D::dispatchContextChangedNotification):
        * html/canvas/WebGLRenderingContextBase.h:
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
        (WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
        (WebCore::WebGLRenderingContextBase::didComposite): Added.
        (WebCore::WebGLRenderingContextBase::forceContextLost):
        (WebCore::WebGLRenderingContextBase::recycleContext):
        (WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification): Added.
        (WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.
        Introduce a `GraphicsContext3DClient` abstract class, rather than passing the
        `WebGLRenderingContextBase` directly to the `GraphicsContext3D` (layering violation).
        Notify the client whenever the `GraphicsContext3D` composites, which will in turn notify the
        `InspectorCanvasAgent` so that it knows that the "frame" is over.

        * inspector/agents/InspectorCanvasAgent.h:
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
        (WebCore::InspectorCanvasAgent::requestNode):
        (WebCore::InspectorCanvasAgent::requestContent):
        (WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
        (WebCore::InspectorCanvasAgent::resolveCanvasContext):
        (WebCore::InspectorCanvasAgent::startRecording):
        (WebCore::InspectorCanvasAgent::stopRecording):
        (WebCore::InspectorCanvasAgent::requestShaderSource):
        (WebCore::InspectorCanvasAgent::updateShader):
        (WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
        (WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
        (WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
        (WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
        (WebCore::InspectorCanvasAgent::recordCanvasAction):
        (WebCore::InspectorCanvasAgent::canvasDestroyed):
        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
        (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
        (WebCore::InspectorCanvasAgent::didEnableExtension):
        (WebCore::InspectorCanvasAgent::didCreateProgram):
        (WebCore::InspectorCanvasAgent::willDeleteProgram):
        (WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
        (WebCore::InspectorCanvasAgent::isShaderProgramHighlighted):
        (WebCore::InspectorCanvasAgent::clearCanvasData):
        (WebCore::InspectorCanvasAgent::assertInspectorCanvas):
        (WebCore::InspectorCanvasAgent::findInspectorCanvas):
        (WebCore::InspectorCanvasAgent::assertInspectorProgram):
        (WebCore::InspectorCanvasAgent::findInspectorProgram):
        (WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): Deleted.
        Replace raw pointers with `RefPtr`s. This is primarily used so that the microtask (instead
        of a timer) that is enqueued after the first action of each frame  is recorded can access a
        ref-counted instance of an `InspectorCanvas`, ensuring that it isn't destructed.

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::canvasElement):
        (WebCore::InspectorCanvas::recordAction):
        (WebCore::InspectorCanvas::finalizeFrame):
        (WebCore::InspectorCanvas::releaseObjectForRecording): Added.
        (WebCore::InspectorCanvas::getCanvasContentAsDataURL):
        (WebCore::InspectorCanvas::appendActionSnapshotIfNeeded):
        (WebCore::InspectorCanvas::buildInitialState):
        (WebCore::InspectorCanvas::releaseInitialState): Deleted.
        (WebCore::InspectorCanvas::releaseFrames): Deleted.
        (WebCore::InspectorCanvas::releaseData): Deleted.
        Move the recording payload construction logic to `InspectorCanvas` so the actual data
        doesn't need to leave that class.
        Drive-by: unify the logic for getting the contents of a canvas from `InspectorCanvasAgent`.

2019-03-21  Tim Horton  <timothy_horton@apple.com>

        Adopt UIWKDocumentContext
        https://bugs.webkit.org/show_bug.cgi?id=196040
        <rdar://problem/48642440>

        Reviewed by Ryosuke Niwa.

        New API test: WebKit.DocumentEditingContext

        * dom/Range.h:
        * editing/TextGranularity.h:
        Make TextGranularity encodable by providing EnumTraits.

        * editing/TextIterator.cpp:
        (WebCore::plainTextReplacingNoBreakSpace):
        * editing/TextIterator.h:
        Expose an nbsp-replacing variant of plainText that takes Positions instead of Ranges.

2019-03-21  Sihui Liu  <sihui_liu@apple.com>

        Fix key path extraction code in IndexedDB to check own property
        https://bugs.webkit.org/show_bug.cgi?id=196099

        Reviewed by Ryosuke Niwa.

        Covered by existing tests.

        * Modules/indexeddb/IDBFactory.cpp:
        (WebCore::IDBFactory::cmp):
        We don't need to check the second parameters if the first is already invalid.

        * Modules/indexeddb/IDBKeyRange.cpp:
        (WebCore::IDBKeyRange::bound):
        Ditto.

        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::putOrAdd):
        we should not clear the exception during serialization because the execeptions may be explicitly thrown by parameters.

        * bindings/js/IDBBindingUtilities.cpp:
        (WebCore::get):
        Fix implementation according to https://www.w3.org/TR/IndexedDB-2/#extract-key-from-value.

        (WebCore::canInjectNthValueOnKeyPath):
        Check the last identifier.

2019-03-21  Antoine Quint  <graouts@apple.com>

        [Web Animations] JS wrapper may be deleted while animation is yet to dispatch its finish event
        https://bugs.webkit.org/show_bug.cgi?id=196118
        <rdar://problem/46614137>

        Reviewed by Ryosuke Niwa.

        Test: webanimations/js-wrapper-kept-alive.html

        We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::stop): Drive-by fix for the missing superclass method call.
        (WebCore::WebAnimation::hasPendingActivity const):
        * animation/WebAnimation.h:

2019-03-21  Jer Noble  <jer.noble@apple.com>

        Inband Text Track cues interspersed with Data cues can display out of order.
        https://bugs.webkit.org/show_bug.cgi?id=196095

        Reviewed by Eric Carlson.

        The compareCueIntervalForDisplay() comparator depends on a virtual function, isPositionedAbove(TextTrackCue* other),
        but this comparison returns inconsistent results for cueA->isPositionedAbove(cueB) and cueB->isPositionedAbove(cueA)
        if the two cues are different subclasses of TextTrackCue.

        The underlying algorithm should be fixed in a future patch, but for now, remove all non-displaying cues from the array
        of activeCues before sorting, rather than after when iterating over the sorted list of activeCues.

        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlTextTrackContainerElement::updateDisplay):

2019-03-21  Youenn Fablet  <youenn@apple.com>

        Cache API and IDB space usages should be initialized on first quota check
        https://bugs.webkit.org/show_bug.cgi?id=195707

        Reviewed by Chris Dumez.

        Add a way to require IDBServer to create a quota user for a given origin.
        Make sure that removing a user might kick-in processing of pending requests.
        In the case of processing pending requests, we should not decide on the first task
        except if it is triggered by a request space response.
        Update processPendingRequests accordingly.

        Tests: http/tests/IndexedDB/storage-limit-1.https.html
               http/tests/IndexedDB/storage-limit-2.https.html

        * Modules/indexeddb/server/IDBServer.h:
        (WebCore::IDBServer::IDBServer::initializeQuotaUser):
        * storage/StorageQuotaManager.cpp:
        (WebCore::StorageQuotaManager::removeUser):
        (WebCore::StorageQuotaManager::askForMoreSpace):
        (WebCore::StorageQuotaManager::processPendingRequests):
        * storage/StorageQuotaManager.h:

2019-03-21  Alex Christensen  <achristensen@webkit.org>

        Fix iOS build after r243337
        https://bugs.webkit.org/show_bug.cgi?id=195935

        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
        (WebCore::playbackSessionModel const): Deleted.

2019-03-21  Brent Fulgham  <bfulgham@apple.com>

        Hardening: Use WeakPtrs in PlaybackSessionInterface{Mac,AVKit}
        https://bugs.webkit.org/show_bug.cgi?id=195935
        <rdar://problem/49007015>

        Reviewed by Eric Carlson.

        The PlaybackSessionInterface{Mac,AVKit} implementations store their playback session model
        and playback controls manager members as bare pointers, something we've been working
        to eliminate.
        
        This patch corrects this oversight.

        No new tests since no changes in behavior.

        * platform/cocoa/PlaybackSessionModel.h:
        * platform/ios/PlaybackSessionInterfaceAVKit.h:
        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
        (WebCore::playbackSessionModel const): Moved to implementation since WEBCORE_EXPORT is not
        supposed to be used with inline methods.
        * platform/mac/PlaybackSessionInterfaceMac.h:
        * platform/mac/PlaybackSessionInterfaceMac.mm:
        (WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
        (WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
        (WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::endScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::playBackControlsManager):
        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
        * platform/mac/WebPlaybackControlsManager.mm:
        (-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
        (-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
        (-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):

2019-03-21  Said Abou-Hallawa  <said@apple.com>

        Remove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList
        https://bugs.webkit.org/show_bug.cgi?id=195905

        Reviewed by Simon Fraser.

        To remove the SVG tear off objects for SVGPoint, SVGPointList and 
        SVGAnimatedPointList, these changes are needed:

        -- Define SVGPoint to be a superclass of SVGValueProperty<FloatPoint>.

        -- Define SVGAnimatedPointList to be a superclass of SVGAnimatedPropertyList<SVGPointList>

        -- Add SVGPropertyList which is a superclass of SVGList. Its items are
           defined to RefCounted. It is the base class of SVGValuePropertyList
           and it will be  the base class of SVGPathSegList in a later patch.

        -- Add SVGValuePropertyList which is the base class of all the lists whose
           items are backed by a value objects like SVGPoint. The difference between
           SVGPropertyList and SVGValuePropertyList is the former class can store
           a Ref pointer of the base class like SVGPathSeg while the later type
           has to store the same type for all the items.

        -- Add SVGAnimatedPropertyList which is the base class for all the animated
           lists. Note that:
           1) SVGElement owns SVGAnimatedPropertyList
           2) SVGAnimatedPropertyList owns m_baseVal whose type is SVGList
           3) m_baseVal owns the items whose type is a superclass of SVGProperty.
           When changing an item, it calls its owner which is an SVGList.
           SVGList calls its owner which is SVGAnimatedPropertyList.
           SVGAnimatedPropertyList calls its owner which SVGElement to commit
           the change. Later SVGAnimatedPropertyList::synchronize() is called 
           which returns the property valueAsString() to update the reflecting
           attribute.

        -- New accessor, animator and animation function are added to access
           and animate a member of type SVGAnimatedPropertyList.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * rendering/svg/SVGPathData.cpp:
        (WebCore::pathFromCircleElement):
        (WebCore::pathFromEllipseElement):
        (WebCore::pathFromLineElement):
        (WebCore::pathFromPathElement):
        (WebCore::pathFromPolygonElement):
        (WebCore::pathFromPolylineElement):
        (WebCore::pathFromRectElement):
        (WebCore::pathFromGraphicsElement):
        * rendering/svg/SVGPathData.h:
        The IDL of SVGPolyElement interface requires the following attribute:
            readonly attribute SVGPointList points;
        For which we return:
            SVGPointList& points() { return m_points->baseVal(); }
        But for all the other properties we return the currentValue(). So to have
        the two functions with the same name, the following function is added:
            const SVGPointList& points() const { return m_points->currentValue(); }
        This definition requires changing all callers to be const.

        * rendering/svg/SVGRenderTreeAsText.cpp:
        (WebCore::operator<<):
        * svg/SVGAnimatedPointList.cpp: Removed.
        * svg/SVGAnimatedPointList.h: Removed.
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type const):
        This function had a bad design. It was designed to use the index of the
        variant as the AnimatedPropertyType. But when some of the types are removed
        from SVGValueVariant, this broke things. This fix is temporary till the 
        class SVGValueVariant is removed.

        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGExternalResourcesRequired.cpp:
        * svg/SVGParserUtilities.cpp:
        (WebCore::pointsListFromSVGData): Deleted.
        * svg/SVGParserUtilities.h:
        * svg/SVGPoint.h:
        (WebCore::SVGPoint::create):
        (WebCore::SVGPoint::clone const):
        (WebCore::SVGPoint::x):
        (WebCore::SVGPoint::setX):
        (WebCore::SVGPoint::y):
        (WebCore::SVGPoint::setY):
        (WebCore::SVGPoint::matrixTransform const):
        (WebCore::SVGPoint::matrixTransform): Deleted.
        (WebCore::SVGPoint::SVGPoint): Deleted.
        * svg/SVGPoint.idl:
        matrixTransform() should not throw an exception.

        * svg/SVGPointList.h:
        (WebCore::SVGPointList::create):
        (WebCore::SVGPointList::parse):
        (WebCore::SVGPointList::SVGPointList): Deleted.
        Move the parse() and valueAsString() methods to SVGPointList. It is now
        a superclass of SVGValuePropertyList. Its items are of type Ref<SVGPoint>.

        * svg/SVGPointListValues.cpp: Removed.
        * svg/SVGPointListValues.h: Removed.
        * svg/SVGPolyElement.cpp:
        (WebCore::SVGPolyElement::SVGPolyElement):
        (WebCore::SVGPolyElement::parseAttribute):
        (WebCore::SVGPolyElement::approximateMemoryCost const):
        (WebCore::SVGPolyElement::registerAttributes): Deleted.
        (WebCore::SVGPolyElement::points): Deleted.
        (WebCore::SVGPolyElement::animatedPoints): Deleted.
        * svg/SVGPolyElement.h:
        (WebCore::SVGPolyElement::points const):
        (WebCore::SVGPolyElement::points):
        (WebCore::SVGPolyElement::animatedPoints):
        (WebCore::SVGPolyElement::pointList const): Deleted.
        (WebCore::SVGPolyElement::attributeRegistry): Deleted.
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::setCurrentTranslate):
        (WebCore::SVGSVGElement::currentTranslate): Deleted.
        * svg/SVGSVGElement.h:
        * svg/SVGSVGElement.idl:
        Define currentTranslate property to be of type Ref<SVGPoint>. When requesting
        it just return a reference to it.

        * svg/SVGValue.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimatedPropertyList.h: Added.
        Define the accessor, the animator and the animated type of SVGPointList.

        (WebCore::SVGAnimatedPropertyList::create):
        (WebCore::SVGAnimatedPropertyList::~SVGAnimatedPropertyList):
        (WebCore::SVGAnimatedPropertyList::baseVal const):
        (WebCore::SVGAnimatedPropertyList::baseVal):
        (WebCore::SVGAnimatedPropertyList::animVal const):
        (WebCore::SVGAnimatedPropertyList::animVal):
        (WebCore::SVGAnimatedPropertyList::currentValue const):
        (WebCore::SVGAnimatedPropertyList::SVGAnimatedPropertyList):
        (WebCore::SVGAnimatedPropertyList::ensureAnimVal):
        * svg/properties/SVGAnimationAdditiveListFunction.h: Added.
        (WebCore::SVGAnimationAdditiveListFunction::SVGAnimationAdditiveListFunction):
        (WebCore::SVGAnimationAdditiveListFunction::toAtEndOfDuration const):
        (WebCore::SVGAnimationAdditiveListFunction::adjustAnimatedList):
        * svg/properties/SVGAnimationAdditiveListFunctionImpl.h: Added.
        (WebCore::SVGAnimationPointListFunction::progress):
        Define the animation function for animating SVGPointList.

        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyList.h: Added.
        (WebCore::SVGPropertyList::SVGPropertyList):
        (WebCore::SVGPropertyList::~SVGPropertyList):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        * svg/properties/SVGValuePropertyList.h: Added.
        (WebCore::SVGValuePropertyList::operator=):
        (WebCore::SVGValuePropertyList::operator Vector<typename PropertyType::ValueType> const):
        (WebCore::SVGValuePropertyList::resize):
        (WebCore::SVGValuePropertyList::SVGValuePropertyList):

2019-03-21  Said Abou-Hallawa  <said@apple.com>

        Remove the SVG property tear off objects for SVGAnimatedString
        https://bugs.webkit.org/show_bug.cgi?id=196065

        Reviewed by Simon Fraser.

        -- Define SVGAnimatedString to be SVGAnimatedPrimitiveProperty<String>.

        -- Add SVGAnimatedStringAccessor to associate an attribute name with a 
           pointer to an SVGAnimatedString member of an SVGElement. Given a 
           pointer to an SVGElement, this accessor will and create an animator
           for the animated property.

        -- Add SVGAnimatedStringAnimator to animated an SVGAnimatedString.

        -- Add SVGAnimationStringFunction which is a discrete function and is 
           responsible for progressing an animated String over a period of time.

        -- Define SVGStringAnimator to be SVGPrimitivePropertyAnimator<String,
           SVGAnimationStringFunction>. SVGStringAnimator is responsible for
           animating attributes with no reflecting animated properties, e.g.
           "font-family".

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAElement.cpp:
        (WebCore::SVGAElement::SVGAElement):
        (WebCore::SVGAElement::parseAttribute):
        (WebCore::SVGAElement::registerAttributes): Deleted.
        * svg/SVGAElement.h:
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::hasValidAttributeType const):
        (WebCore::SVGAnimateElementBase::isDiscreteAnimator const):
        * svg/SVGAnimateElementBase.h:
        * svg/SVGAnimatedString.cpp: Removed.
        * svg/SVGAnimatedString.h: Removed.
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::currentValuesForValuesAnimation):
        The animation controller has to tell whether the animator is discrete or
        not. The properties are now registered either in SVGAttributeRegistry which
        relies on the tear off objects to know the AnimatedPropertyType of the
        property. Or it is registered in SVGPropertyOwnerRegistry which creates
        the animators through the accessors. Each animator knows whether it is
        discrete or not.

        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGAttributeAnimationController.cpp:
        (WebCore::SVGAttributeAnimationController::isDiscreteAnimator const):
        * svg/SVGAttributeAnimationController.h:
        * svg/SVGAttributeAnimationControllerBase.h:
        * svg/SVGCursorElement.h:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::SVGElement):
        (WebCore::SVGElement::parseAttribute):
        (WebCore::SVGElement::registerAttributes): Deleted.
        * svg/SVGElement.h:
        (WebCore::SVGElement::isKnownAttribute):
        (WebCore::SVGElement::className const):
        (WebCore::SVGElement::classNameAnimated):
        (WebCore::SVGElement::attributeRegistry): Deleted.
        * svg/SVGExternalResourcesRequired.cpp:
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::SVGFEBlendElement):
        (WebCore::SVGFEBlendElement::registerAttributes):
        (WebCore::SVGFEBlendElement::parseAttribute):
        * svg/SVGFEBlendElement.h:
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
        (WebCore::SVGFEColorMatrixElement::registerAttributes):
        (WebCore::SVGFEColorMatrixElement::parseAttribute):
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEComponentTransferElement.cpp:
        (WebCore::SVGFEComponentTransferElement::SVGFEComponentTransferElement):
        (WebCore::SVGFEComponentTransferElement::parseAttribute):
        (WebCore::SVGFEComponentTransferElement::registerAttributes): Deleted.
        * svg/SVGFEComponentTransferElement.h:
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::SVGFECompositeElement):
        (WebCore::SVGFECompositeElement::registerAttributes):
        (WebCore::SVGFECompositeElement::parseAttribute):
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
        (WebCore::SVGFEDiffuseLightingElement::parseAttribute):
        (WebCore::SVGFEDiffuseLightingElement::registerAttributes): Deleted.
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
        (WebCore::SVGFEDisplacementMapElement::registerAttributes):
        (WebCore::SVGFEDisplacementMapElement::parseAttribute):
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::SVGFEDropShadowElement):
        (WebCore::SVGFEDropShadowElement::parseAttribute):
        (WebCore::SVGFEDropShadowElement::svgAttributeChanged):
        (WebCore::SVGFEDropShadowElement::registerAttributes): Deleted.
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
        (WebCore::SVGFEGaussianBlurElement::registerAttributes):
        (WebCore::SVGFEGaussianBlurElement::parseAttribute):
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEMergeNodeElement.cpp:
        (WebCore::SVGFEMergeNodeElement::SVGFEMergeNodeElement):
        (WebCore::SVGFEMergeNodeElement::parseAttribute):
        (WebCore::SVGFEMergeNodeElement::registerAttributes): Deleted.
        * svg/SVGFEMergeNodeElement.h:
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
        (WebCore::SVGFEMorphologyElement::registerAttributes):
        (WebCore::SVGFEMorphologyElement::parseAttribute):
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
        (WebCore::SVGFEOffsetElement::parseAttribute):
        (WebCore::SVGFEOffsetElement::svgAttributeChanged):
        (WebCore::SVGFEOffsetElement::registerAttributes): Deleted.
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
        (WebCore::SVGFESpecularLightingElement::parseAttribute):
        (WebCore::SVGFESpecularLightingElement::registerAttributes): Deleted.
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETileElement.cpp:
        (WebCore::SVGFETileElement::SVGFETileElement):
        (WebCore::SVGFETileElement::parseAttribute):
        (WebCore::SVGFETileElement::registerAttributes): Deleted.
        * svg/SVGFETileElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
        (WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
        (WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes):
        (WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        (WebCore::SVGFilterPrimitiveStandardAttributes::result const):
        (WebCore::SVGFilterPrimitiveStandardAttributes::resultAnimated):
        * svg/SVGLegacyAttributeAnimationController.cpp:
        (WebCore::SVGLegacyAttributeAnimationController::isDiscreteAnimator const):
        * svg/SVGLegacyAttributeAnimationController.h:
        * svg/SVGMPathElement.h:
        * svg/SVGScriptElement.h:
        * svg/SVGURIReference.cpp:
        (WebCore::SVGURIReference::SVGURIReference):
        (WebCore::SVGURIReference::isKnownAttribute):
        (WebCore::SVGURIReference::parseAttribute):
        (WebCore::SVGURIReference::registerAttributes): Deleted.
        (WebCore::SVGURIReference::href const): Deleted.
        (WebCore::SVGURIReference::hrefAnimated): Deleted.
        * svg/SVGURIReference.h:
        (WebCore::SVGURIReference::href const):
        (WebCore::SVGURIReference::hrefAnimated):
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPrimitivePropertyAnimatorImpl.h:
        * svg/properties/SVGPropertyAnimatorFactory.h:
        (WebCore::SVGPropertyAnimatorFactory::createStringAnimator):
        (WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        Do not insert the first-letter anonymous container until after we've constructed the first-letter renderer.
        https://bugs.webkit.org/show_bug.cgi?id=195919
        <rdar://problem/48573434>

        Reviewed by Brent Fulgham.

        When the container is injected too early, we might end up removing it as part of the collapsing logic
        while the text renderer is being removed (replaced with the first letter + remaining text).

        Test: fast/css/first-letter-and-float-crash.html

        * rendering/updating/RenderTreeBuilderFirstLetter.cpp:
        (WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

2019-03-21  Eric Carlson  <eric.carlson@apple.com>

        Add UI process WebRTC runtime logging.
        https://bugs.webkit.org/show_bug.cgi?id=196020
        <rdar://problem/49071443>

        Reviewed by Youenn Fablet.

        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::getLoggingChannels): Deleted.
        (WebCore::channelConfigurationForString): Deleted.
        (WebCore::WebConsoleAgent::setLoggingChannelLevel): Deleted.
        * inspector/agents/WebConsoleAgent.h:
        * inspector/agents/page/PageConsoleAgent.cpp:
        (WebCore::PageConsoleAgent::PageConsoleAgent): Change 'context' parameter from 
        WebAgentContext to PageAgentContext. Store the inspected page for later use.
        (WebCore::PageConsoleAgent::getLoggingChannels): Moved from WebConsoleAgent.
        (WebCore::channelConfigurationForString): Ditto.
        (WebCore::PageConsoleAgent::setLoggingChannelLevel): Moved from WebConsoleAgent.
        Call the inspected page to actually change the log channel configuration.
        * inspector/agents/page/PageConsoleAgent.h:
        * page/ChromeClient.h:
        * page/Page.cpp:
        (WebCore::Page::configureLoggingChannel): New.
        * page/Page.h:

2019-03-21  Andy Estes  <aestes@apple.com>

        [iOS] Apple Pay should be available in documents with no user agent scripts
        https://bugs.webkit.org/show_bug.cgi?id=196061
        <rdar://problem/48649391>

        Reviewed by Brady Eidson.

        On platforms that support APPLE_PAY_REMOTE_UI, we can enable Apple Pay JS and Payment Request
        by default in all WebKit clients.

        In order to protect the privacy of Apple Pay transactions, this patch implements the
        following restrictions on API usage:

        1. If user agent scripts have been evaluated in a document, Apple Pay APIs will no longer be
        available for the duration of the document's lifetime.
        2. If an Apple Pay transaction has started in a document, user agent scripts will no longer
        be evaluated for the duration of the document's lifetime.

        These restrictions are disabled for clients with the
        com.apple.private.WebKit.UnrestrictedApplePay entitlement and platforms that do support
        Apple Pay but don't support APPLE_PAY_REMOTE_UI.

        Added new API tests.

        * Modules/applepay/ApplePayRequestBase.cpp:
        (WebCore::convertAndValidate):
        * Modules/applepay/ApplePayRequestBase.h:
        * Modules/applepay/ApplePaySession.cpp:
        (WebCore::convertAndValidate):
        (WebCore::ApplePaySession::create):
        (WebCore::ApplePaySession::supportsVersion):
        (WebCore::ApplePaySession::canMakePayments):
        (WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
        (WebCore::ApplePaySession::openPaymentSetup):
        (WebCore::ApplePaySession::begin):
        * Modules/applepay/ApplePaySession.h:
        * Modules/applepay/ApplePaySession.idl:
        * Modules/applepay/PaymentCoordinator.cpp:
        (WebCore::PaymentCoordinator::supportsVersion const):
        (WebCore::PaymentCoordinator::canMakePayments):
        (WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebCore::PaymentCoordinator::openPaymentSetup):
        (WebCore::PaymentCoordinator::beginPaymentSession):
        (WebCore::PaymentCoordinator::validatedPaymentNetwork const):
        (WebCore::PaymentCoordinator::shouldAllowApplePay const):
        (WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
        * Modules/applepay/PaymentCoordinator.h:
        * Modules/applepay/PaymentCoordinatorClient.h:
        (WebCore::PaymentCoordinatorClient::supportsUnrestrictedApplePay const):
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::show):
        (WebCore::ApplePayPaymentHandler::canMakePayment):
        (WebCore::ApplePayPaymentHandler::version const):
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
        * Modules/paymentrequest/PaymentHandler.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::show):
        (WebCore::PaymentRequest::canMakePayment):

        Plumbed a Document& through to the various places that call into PaymentCoordinator for use
        by shouldAllowApplePay and shouldAllowUserAgentScripts.

        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::executeUserAgentScriptInWorld):
        (WebCore::ScriptController::shouldAllowUserAgentScripts const):
        * bindings/js/ScriptController.h:

        Added executeUserAgentScriptInWorld, which calls executeScriptInWorld if allowed.

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

        Changed to only evaluate the chrome client's plug-in extra script if allowed, and to mark
        the document as having evaluated user agent scripts.

        (WebCore::Document::hasEvaluatedUserAgentScripts const):
        (WebCore::Document::isRunningUserScripts const):
        (WebCore::Document::setAsRunningUserScripts):
        (WebCore::Document::setHasEvaluatedUserAgentScripts):
        (WebCore::Document::hasStartedApplePaySession const):
        (WebCore::Document::setHasStartedApplePaySession):
        * dom/Document.h:

        Added helper functions to set state on the top document.

        * loader/DocumentThreadableLoader.cpp:
        (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

        Removed call to topDocument() now that isRunningUserScripts() always checks the top document.

        * page/Frame.cpp:
        (WebCore::Frame::injectUserScriptImmediately):

        Changed to only inject the user script if allowed.

        * page/Settings.yaml:
        * page/SettingsDefaultValues.h:

        Enabled Apple Pay by default on platforms that enable APPLE_PAY_REMOTE_UI.

        * testing/Internals.cpp:
        (WebCore::Internals::setAsRunningUserScripts):
        (WebCore::Internals::setHasStartedApplePaySession):
        * testing/Internals.h:
        * testing/Internals.idl:
        * testing/MockPaymentCoordinator.h:
        * testing/MockPaymentCoordinator.idl:

        Added some internal interfaces for use by TestWebKitAPI.

2019-03-21  Alex Christensen  <achristensen@webkit.org>

        Add SPI to inform applications of WKContentRuleList actions
        https://bugs.webkit.org/show_bug.cgi?id=195965
        <rdar://problem/42664365>

        Reviewed by Geoff Garen.

        We already had SPI to inform the application of notifications.
        In order to inform it about other actions, I needed to put them in a different structure.
        Basically, instead of a Vector<Action> I use a Vector<Vector<Action>> that contains the same actions.
        That way we can give one callback per WKContentRuleList.

        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::connect):
        * WebCore.xcodeproj/project.pbxproj:
        * contentextensions/ContentExtensionActions.h:
        * contentextensions/ContentExtensionParser.cpp:
        (WebCore::ContentExtensions::loadEncodedRules):
        * contentextensions/ContentExtensionRule.cpp:
        (WebCore::ContentExtensions::Action::isolatedCopy const):
        * contentextensions/ContentExtensionRule.h:
        (WebCore::ContentExtensions::Action::operator== const):
        (WebCore::ContentExtensions::Action::setExtensionIdentifier): Deleted.
        (WebCore::ContentExtensions::Action::extensionIdentifier const): Deleted.
        * contentextensions/ContentExtensionsBackend.cpp:
        (WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad const):
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForPingLoad):
        (WebCore::ContentExtensions::applyResultsToRequest):
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad): Deleted.
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad): Deleted.
        (WebCore::ContentExtensions::applyBlockedStatusToRequest): Deleted.
        * contentextensions/ContentExtensionsBackend.h:
        * contentextensions/ContentRuleListResults.h: Added.
        (WebCore::ContentRuleListResults::Result::shouldNotifyApplication const):
        (WebCore::ContentRuleListResults::shouldNotifyApplication const):
        (WebCore::ContentRuleListResults::encode const):
        (WebCore::ContentRuleListResults::decode):
        (WebCore::ContentRuleListResults::Result::encode const):
        (WebCore::ContentRuleListResults::Result::decode):
        (WebCore::ContentRuleListResults::Summary::encode const):
        (WebCore::ContentRuleListResults::Summary::decode):
        * css/StyleSheetContents.cpp:
        (WebCore::StyleSheetContents::subresourcesAllowReuse const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::loadResource):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadResourceSynchronously):
        * loader/PingLoader.cpp:
        (WebCore::processContentRuleListsForLoad):
        (WebCore::PingLoader::loadImage):
        (WebCore::PingLoader::sendPing):
        (WebCore::PingLoader::sendViolationReport):
        (WebCore::processContentExtensionRulesForLoad): Deleted.
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::willSendRequestInternal):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):
        * loader/cache/CachedResourceRequest.cpp:
        (WebCore::CachedResourceRequest::applyResults):
        (WebCore::CachedResourceRequest::applyBlockedStatus): Deleted.
        * loader/cache/CachedResourceRequest.h:
        * page/ChromeClient.h:
        (WebCore::ChromeClient::contentRuleListNotification):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::open):
        * page/UserContentProvider.cpp:
        (WebCore::UserContentProvider::processContentRuleListsForLoad):
        (WebCore::UserContentProvider::actionsForResourceLoad):
        (WebCore::UserContentProvider::processContentExtensionRulesForLoad): Deleted.
        * page/UserContentProvider.h:

2019-03-21  Simon Fraser  <simon.fraser@apple.com>

        Add an internal feature flag to disable the -webkit-overflow-scrolling CSS property
        https://bugs.webkit.org/show_bug.cgi?id=196058
        rdar://problem/49078202

        Reviewed by Antti Koivisto.

        Add an internal setting called "legacyOverflowScrollingTouchEnabled", initially
        on by default.

        When disabled, it makes the -webkit-overflow-scrolling property be unsupported.

        Tests: fast/scrolling/ios/overflow-scrolling-touch-disabled-stacking.html
               fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html

        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        (WebCore::operator==):
        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContextHash::hash):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * css/parser/CSSParserFastPaths.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):
        * page/Settings.yaml:

2019-03-21  Antti Koivisto  <antti@apple.com>

        UI-process hit-testing needs to know about containing block relationships
        https://bugs.webkit.org/show_bug.cgi?id=195845
        <rdar://problem/48949633>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/overflow-scroll-overlap-5.html

        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/cocoa/ScrollingTreePositionedNode.h:
        (WebCore::ScrollingTreePositionedNode::layer const):

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Cleanup reset state.
        https://bugs.webkit.org/show_bug.cgi?id=196076
        <rdar://problem/49107931>

        Reviewed by Simon Fraser.

        stopObservingPendingActivities() is a subset of reset() and call it when we've observed a visible change.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::willNotProceedWithClick):
        (WebCore::ContentChangeObserver::stopObservingPendingActivities):
        (WebCore::ContentChangeObserver::reset):
        (WebCore::ContentChangeObserver::didSuspendActiveDOMObjects):
        (WebCore::ContentChangeObserver::willDetachPage):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::cancelPendingActivities): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        Unreviewed build fix.

        * page/ios/ContentChangeObserver.h:

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Start tracking implicit transitions at mousemove
        https://bugs.webkit.org/show_bug.cgi?id=196054
        <rdar://problem/49093840>

        Reviewed by Simon Fraser.

        This patch fixes the hover menu issue on seriouseats.com. After tapping on the menu items, the submenus show up now.

        1. Start observing at mousemove
        2. Check if the style change is synchronous or not and start observing it accordingly.

        Tests: fast/events/touch/ios/content-observation/0ms-delay-0ms-transition-on-mousemove.html
               fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove.html
               fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-mousemove.html
               fast/events/touch/ios/content-observation/10ms-delay-0ms-transition-on-touch-start.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::adjustObservedState):

2019-03-21  Simon Fraser  <simon.fraser@apple.com>

        Absolute in stacking-context scroller jiggles when scrolled
        https://bugs.webkit.org/show_bug.cgi?id=196010

        Reviewed by Zalan Bujtas.

        Updating compositing layers after a scroll (in a compositing update on the main thread)
        failed to traverse to an absolute layer inside a stacking-context overflow:scroll,
        because the overflow's layer didn't have the "hasCompositingAncestor" bit set on it.

        This happened because childState.subtreeIsCompositing wasn't being set when indirect
        reasons trigger compositing. So clean up RenderLayerCompositor::computeCompositingRequirements()
        to set childState.subtreeIsCompositing for "late" compositing decisions, and move the
        "Subsequent layers in the parent stacking context also need to composite" chunk
        down to after the last compositing decision has been made.

        Test: compositing/overflow/absolute-in-overflow.html

        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::scrollTo):
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Start tracking implicit transitions at touchStart
        https://bugs.webkit.org/show_bug.cgi?id=196051
        <rdar://problem/49092952>

        Reviewed by Simon Fraser.

        This patch enables transition tracking on touchStart.

        1. Start observing for new transitions at touchStart
        2. Stop observing at touchEnd
        3. Check the next style recalc when the transition is finished (at onAnimationEnd we don't yet have the final computed style).
        4. Remove the tracked transition when it is canceled.

        Tests: fast/events/touch/ios/content-observation/0ms-transition-on-touch-start.html
               fast/events/touch/ios/content-observation/100ms-transition-on-touch-start.html
               fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start.html
               fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didAddTransition):
        (WebCore::ContentChangeObserver::didFinishTransition):
        (WebCore::ContentChangeObserver::didRemoveTransition):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::setShouldObserveTransitions):
        (WebCore::ContentChangeObserver::clearObservedTransitions):
        (WebCore::ContentChangeObserver::hasObservedTransition const):
        (WebCore::ContentChangeObserver::hasPendingActivity const):

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Track hidden elements only while transitioning.
        https://bugs.webkit.org/show_bug.cgi?id=196050
        <rdar://problem/49092037>

        Reviewed by Simon Fraser.

        Use the existing isConsideredHidden() logic to decide whether the current transition should be tracked.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::isConsideredHidden):
        (WebCore::ContentChangeObserver::didAddTransition):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredHidden const): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-03-21  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add support for observing implicit transitions
        https://bugs.webkit.org/show_bug.cgi?id=195914
        <rdar://problem/49091959>

        Reviewed by Simon Fraser.

        This patch is in preparation for observing elements with property "left" implicit transitions.

        This is not a continuous tracking, we are only interested in the start and the end state.
        The idea here is to register hidden elements only and check if they become visible by
        the end of the transition (and ignore if the transition gets "canceled").

        * page/animation/AnimationBase.h:
        * page/animation/ImplicitAnimation.cpp:
        (WebCore::ImplicitAnimation::ImplicitAnimation):
        (WebCore::ImplicitAnimation::~ImplicitAnimation):
        (WebCore::ImplicitAnimation::clear):
        (WebCore::ImplicitAnimation::onAnimationEnd):
        * page/animation/ImplicitAnimation.h:
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didAddTransition):
        (WebCore::ContentChangeObserver::removeTransitionIfNeeded):
        (WebCore::ContentChangeObserver::didFinishTransition):
        (WebCore::ContentChangeObserver::didRemoveTransition):
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingTransitions const):
        (WebCore::ContentChangeObserver::isObservedPropertyForTransition const):

2019-03-21  Devin Rousso  <drousso@apple.com>

        Web Inspector: Page: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195592
        <rdar://problem/48791916>

        Reviewed by Timothy Hatcher.

        No change in functionality.

        Have more agents save the inspected `Page` so they don't need to access it via the
        `InspectorPageAgent`. Make some of `InspectorPageAgent`'s functions `static` so other
        agents can use them without needing to have access to an enabled `InspectorPageAgent`.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):

        * inspector/agents/InspectorPageAgent.h:
        (WebCore::InspectorPageAgent::page): Deleted.
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::InspectorPageAgent):
        (WebCore::InspectorPageAgent::enable):
        (WebCore::InspectorPageAgent::disable):
        (WebCore::InspectorPageAgent::reload):
        (WebCore::InspectorPageAgent::navigate):
        (WebCore::InspectorPageAgent::overrideSetting):
        (WebCore::InspectorPageAgent::getCookies):
        (WebCore::InspectorPageAgent::deleteCookie):
        (WebCore::InspectorPageAgent::getResourceTree):
        (WebCore::InspectorPageAgent::searchInResources):
        (WebCore::InspectorPageAgent::didPaint):
        (WebCore::InspectorPageAgent::didLayout):
        (WebCore::InspectorPageAgent::didScroll):
        (WebCore::InspectorPageAgent::didRecalculateStyle):
        (WebCore::InspectorPageAgent::setEmulatedMedia):
        (WebCore::InspectorPageAgent::setForcedAppearance):
        (WebCore::InspectorPageAgent::getCompositingBordersVisible):
        (WebCore::InspectorPageAgent::setCompositingBordersVisible):
        (WebCore::InspectorPageAgent::snapshotNode):
        (WebCore::InspectorPageAgent::snapshotRect):
        (WebCore::InspectorPageAgent::archive):
        (WebCore::InspectorPageAgent::mainFrame): Deleted.
        (WebCore::InspectorPageAgent::hasIdForFrame const): Deleted.

        * inspector/agents/InspectorApplicationCacheAgent.h:
        * inspector/agents/InspectorApplicationCacheAgent.cpp:
        (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
        (WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
        (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
        (WebCore::InspectorApplicationCacheAgent::assertFrameWithDocumentLoader):

        * inspector/agents/InspectorCanvasAgent.h:
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
        (WebCore::InspectorCanvasAgent::enable):

        * inspector/agents/InspectorDOMStorageAgent.h:
        * inspector/agents/InspectorDOMStorageAgent.cpp:
        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
        (WebCore::InspectorDOMStorageAgent::findStorageArea):

        * inspector/agents/InspectorIndexedDBAgent.h:
        * inspector/agents/InspectorIndexedDBAgent.cpp:
        (WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
        (WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
        (WebCore::InspectorIndexedDBAgent::requestDatabase):
        (WebCore::InspectorIndexedDBAgent::requestData):
        (WebCore::InspectorIndexedDBAgent::clearObjectStore):

        * inspector/agents/page/PageDebuggerAgent.h:
        * inspector/agents/page/PageDebuggerAgent.cpp:
        (WebCore::PageDebuggerAgent::PageDebuggerAgent):
        (WebCore::PageDebuggerAgent::sourceMapURLForScript):
        (WebCore::PageDebuggerAgent::breakpointActionLog):
        (WebCore::PageDebuggerAgent::injectedScriptForEval):

        * inspector/agents/page/PageNetworkAgent.h:
        * inspector/agents/page/PageNetworkAgent.cpp:
        (WebCore::PageNetworkAgent::PageNetworkAgent):
        (WebCore::PageNetworkAgent::loaderIdentifier):
        (WebCore::PageNetworkAgent::frameIdentifier):
        (WebCore::PageNetworkAgent::setResourceCachingDisabled):
        (WebCore::PageNetworkAgent::scriptExecutionContext):

        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):

2019-03-21  Brent Fulgham  <bfulgham@apple.com>

        Hardening: Use WeakPtrs in VideoFullscreenInterface{Mac,AVKit}
        https://bugs.webkit.org/show_bug.cgi?id=196052
        <rdar://problem/48778571>

        Reviewed by Eric Carlson.

        The VideoFullscreenInterface{Mac,AVKit} implementations store their fullscreen model
        and fullscreen change observer members as bare pointers, something we've been working
        to eliminate.
        
        This patch corrects this oversight.

        No new tests since no changes in behavior.

        * platform/cocoa/VideoFullscreenChangeObserver.h:
        * platform/cocoa/VideoFullscreenModel.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
        (VideoFullscreenInterfaceAVKit::presentingViewController):
        (VideoFullscreenInterfaceAVKit::invalidate):
        (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
        (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
        (VideoFullscreenInterfaceAVKit::doSetup):
        * platform/mac/VideoFullscreenInterfaceMac.h:
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel):
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
        (WebCore::VideoFullscreenInterfaceMac::enterFullscreen):
        (WebCore::VideoFullscreenInterfaceMac::invalidate):

2019-03-21  Megan Gardner  <megan_gardner@apple.com>

        Smart delete for paragraphs.
        https://bugs.webkit.org/show_bug.cgi?id=195837

        Reviewed by Ryosuke Niwa.

        Remove additional newlines to maintain spacing around paragraphs.

        Tests: editing/pasteboard/smart-delete-paragraph-001.html
               editing/pasteboard/smart-delete-paragraph-002.html
               editing/pasteboard/smart-delete-paragraph-003.html
               editing/pasteboard/smart-delete-paragraph-004.html

        * editing/DeleteSelectionCommand.cpp:
        (WebCore::isBlankLine):
        (WebCore::DeleteSelectionCommand::initializePositionData):

2019-03-21  Cathie Chen  <cathiechen@igalia.com>

        Fixed ContentChangeObserver build error.
        https://bugs.webkit.org/show_bug.cgi?id=195993

        Reviewed by Rob Buis.

        EWS IOS compiler complains after adding new files in Bug 157743.
        ContentChangeObserver.h should have forward declaration for Element.

        * page/ios/ContentChangeObserver.cpp:
        * page/ios/ContentChangeObserver.h:

2019-03-21  Charlie Turner  <cturner@igalia.com>

        [GStreamer][EME][Clearkey] Take a lock in keys() method
        https://bugs.webkit.org/show_bug.cgi?id=195900

        Reviewed by Xabier Rodriguez-Calvar.

        This isn't ideal, since we're taking a lock for every frame to
        decode. But there's no good way around it when keys can be
        made unavailable at any time via an update() call, so we can't
        cache key IDs in the decryptor.

        Covered by test imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.https.html

        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
        (WebCore::CDMInstanceClearKey::keys const): This method is called
        from GStreamer's decode() method, which runs off the main thread,
        therefore we need to take a lock.
        * platform/encryptedmedia/clearkey/CDMClearKey.h:

2019-03-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to provide geolocation information
        https://bugs.webkit.org/show_bug.cgi?id=195940

        Reviewed by Michael Catanzaro.

        Replace ENABLE(GEOLOCATION) with USE(GEOCLUE).

        * PlatformGTK.cmake:
        * platform/geoclue/GeolocationProviderGeoclue.cpp:
        * platform/geoclue/GeolocationProviderGeoclue.h:
        * platform/geoclue/GeolocationProviderGeoclueClient.h:

2019-03-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Confusing messages in stderr when surfaceless context is not supported
        https://bugs.webkit.org/show_bug.cgi?id=195742

        Reviewed by Žan Doberšek.

        The messages shown are:

        Cannot create EGL surfaceless context: missing EGL_KHR_surfaceless_{context,opengl} extension.
        Cannot create EGL WPE context: EGL_SUCCESS

        It seems like there's anything wrong, while there isn't. It's also confusing an error message where the error is
        EGL_SUCCESS. I think we should not show those messages at all, not suporting surfaceless contexts is not an
        error and it's correctly handled. Failing to get a native window handle from render backend offscreen egl target
        is not an error either, since most of the backends don't implement the interface (they actually have an empty
        implementation).

        * platform/graphics/egl/GLContextEGL.cpp:
        (WebCore::GLContextEGL::createSurfacelessContext): Remove the message when extensions are not present
        * platform/graphics/egl/GLContextEGLLibWPE.cpp:
        (WebCore::GLContextEGL::createWPEContext): Handle the case of wpe_renderer_backend_egl_offscreen_target_create()
        returning nullptr, which can happen if the backend doesn't implement the interface. Move the context creation
        after the target initialization, to avoid leaking the context when the target doesn't have a native window.

2019-03-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use finalizer in JSGlobalLexicalEnvironment and JSGlobalObject
        https://bugs.webkit.org/show_bug.cgi?id=195992

        Reviewed by Keith Miller and Mark Lam.

        Use cellHeapCellType since JSSegmentedVariableObject already set finalizer.

        * bindings/js/WebCoreJSClientData.cpp:
        (WebCore::JSVMClientData::JSVMClientData):

2019-03-20  Youenn Fablet  <youenn@apple.com>

        Compute quota after network process restart based on default quota and space used
        https://bugs.webkit.org/show_bug.cgi?id=195804

        Reviewed by Chris Dumez.

        At creation of quota manager, a default quota will be assigned.
        This value is the same for all origins.
        Some origins may have been granted a bigger quota by the user.
        In that case, the space used might be greater for these origins.
        Update at initialization time the quota according the space used as follows:
        - If space used is below default quota, stick with default quota.
        - If space used is above, set quota to space used rounded by one tenth of the default quota.
        The rounding ensures that quota requests will not happen too quickly after a page is loaded.

        Test: http/wpt/cache-storage/cache-quota-after-restart.any.html

        * Modules/cache/CacheStorageConnection.h:
        (WebCore::CacheStorageConnection::setQuotaBasedOnSpaceUsage):
        * storage/StorageQuotaManager.cpp:
        (WebCore::StorageQuotaManager::setQuotaBasedOnSpaceUsage):
        (WebCore::StorageQuotaManager::addUser):
        * storage/StorageQuotaManager.h:
        * testing/Internals.cpp:
        (WebCore::Internals::updateQuotaBasedOnSpaceUsage):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
        https://bugs.webkit.org/show_bug.cgi?id=196049

        Reviewed by Tim Horton.

        This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
        overflow scrolling in general, so rename it.

        * Configurations/FeatureDefines.xcconfig:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::adjustRenderStyle):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * dom/Element.cpp:
        * dom/Element.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::canUseCompositedScrolling const):
        * rendering/style/RenderStyle.cpp:
        (WebCore::rareInheritedDataChangeRequiresLayout):
        * rendering/style/RenderStyle.h:
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:
        * rendering/style/WillChangeData.cpp:
        (WebCore::WillChangeData::propertyCreatesStackingContext):

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195589
        <rdar://problem/48791742>

        Reviewed by Timothy Hatcher.

        No change in functionality.

        * inspector/agents/InspectorDOMAgent.h:
        (WebCore::InspectorDOMAgent::DOMListener): Deleted.
        (WebCore::InspectorDOMAgent::pageAgent): Deleted.
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent):
        (WebCore::InspectorDOMAgent::unbind):
        (WebCore::InspectorDOMAgent::setSearchingForNode):
        (WebCore::InspectorDOMAgent::highlightSelector):
        (WebCore::InspectorDOMAgent::highlightFrame):
        (WebCore::InspectorDOMAgent::buildObjectForNode):
        (WebCore::InspectorDOMAgent::didModifyDOMAttr):
        (WebCore::InspectorDOMAgent::didRemoveDOMAttr):
        (WebCore::InspectorDOMAgent::styleAttributeInvalidated):
        (WebCore::InspectorDOMAgent::didInvalidateStyleAttr):
        (WebCore::InspectorDOMAgent::setDOMListener): Deleted.

        * inspector/agents/InspectorCSSAgent.h:
        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::InspectorCSSAgent::InspectorCSSAgent):
        (WebCore::InspectorCSSAgent::willDestroyFrontendAndBackend):
        (WebCore::InspectorCSSAgent::reset):
        (WebCore::InspectorCSSAgent::enable):
        (WebCore::InspectorCSSAgent::disable):
        (WebCore::InspectorCSSAgent::forcePseudoState):
        (WebCore::InspectorCSSAgent::collectAllStyleSheets):
        (WebCore::InspectorCSSAgent::setStyleSheetText):
        (WebCore::InspectorCSSAgent::setStyleText):
        (WebCore::InspectorCSSAgent::setRuleSelector):
        (WebCore::InspectorCSSAgent::createStyleSheet):
        (WebCore::InspectorCSSAgent::addRule):
        (WebCore::InspectorCSSAgent::asInspectorStyleSheet):
        (WebCore::InspectorCSSAgent::elementForId):
        (WebCore::InspectorCSSAgent::bindStyleSheet):
        (WebCore::InspectorCSSAgent::~InspectorCSSAgent): Deleted.
        (WebCore::InspectorCSSAgent::discardAgent): Deleted.
        (WebCore::InspectorCSSAgent::resetNonPersistentData): Deleted.
        * inspector/InspectorStyleSheet.cpp:

        * inspector/agents/InspectorDOMDebuggerAgent.h:
        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
        (WebCore::InspectorDOMDebuggerAgent::setDOMBreakpoint):
        (WebCore::InspectorDOMDebuggerAgent::removeDOMBreakpoint):
        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
        (WebCore::InspectorDOMDebuggerAgent::willHandleEvent):

        * inspector/agents/page/PageConsoleAgent.h:
        * inspector/agents/page/PageConsoleAgent.cpp:
        (WebCore::PageConsoleAgent::PageConsoleAgent):
        (WebCore::PageConsoleAgent::clearMessages):

        * inspector/InspectorController.h:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):
        (WebCore::InspectorController::inspect):
        (WebCore::InspectorController::hideHighlight):

2019-03-20  Youenn Fablet  <youenn@apple.com>

        Include WAL and SHM file size in IDB database size computation
        https://bugs.webkit.org/show_bug.cgi?id=195688

        Reviewed by Brady Eidson.

        Count WAL and SHM files as part of IDB quota checks.
        This makes some IDB tests go over the testing quota which then
        triggers some IDB tasks to happen sooner than other write IDB tasks.
        The IDB implementation requires these tasks to remain ordered.
        In case a write task is pending quota check, queue all tasks,
        write or read, to keep the order.

        This patch specials case aborting a transaction.
        In case it is called as part of clearing a database,
        the task should not be queued and all pending tasks are errored.
        When transaction is aborted by the web page, queue the task.

        When we can make a decision to run tasks with size 0,
        do not check quota. This ensures that read operations
        succeed even if we are above quota.

        Covered by existing tests.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion):
        (WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
        (WebCore::IDBServer::UniqueIDBDatabase::getRecord):
        (WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
        (WebCore::IDBServer::UniqueIDBDatabase::getCount):
        (WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
        (WebCore::IDBServer::UniqueIDBDatabase::openCursor):
        (WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
        (WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:
        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::usage):
        * platform/sql/SQLiteFileSystem.cpp:
        (WebCore::SQLiteFileSystem::getDatabaseFileSize):
        * storage/StorageQuotaManager.h:
        * storage/StorageQuotaManager.cpp:
        (WebCore::StorageQuotaManager::requestSpace):

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timeline should show when events preventDefault() was called on an event or not
        https://bugs.webkit.org/show_bug.cgi?id=176824
        <rdar://problem/34290931>

        Reviewed by Timothy Hatcher.

        Original patch by Joseph Pecoraro <pecoraro@apple.com>.

        Tests: inspector/timeline/timeline-event-CancelAnimationFrame.html
               inspector/timeline/timeline-event-EventDispatch.html
               inspector/timeline/timeline-event-FireAnimationFrame.html
               inspector/timeline/timeline-event-RequestAnimationFrame.html
               inspector/timeline/timeline-event-TimerFire.html
               inspector/timeline/timeline-event-TimerInstall.html
               inspector/timeline/timeline-event-TimerRemove.html

        * dom/EventTarget.cpp:
        (WebCore::EventTarget::innerInvokeEventListeners):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::dispatchEvent):
        Include `defaultPrevented` when notifying inspector.

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::didDispatchEvent):
        (WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::didDispatchEventImpl):
        (WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):
        Pass `defaultPrevented` on to agent.

        * inspector/agents/InspectorTimelineAgent.h:
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::didDispatchEvent):
        Append a boolean `defaultPrevented` property on the `EventDispatch` timeline record's data.

2019-03-20  Antoine Quint  <graouts@apple.com>

        DumpRenderTree crashes under WebAnimation::isRelevant when running imported/mozilla/css-transitions/test_document-get-animations.html in GuardMalloc
        https://bugs.webkit.org/show_bug.cgi?id=196028
        <rdar://problem/46842707>

        Reviewed by Dean Jackson.

        Instead of keeping a ListHashSet of raw pointers, we are now using a Vector of WeakPtrs.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::forgetAnimation):
        (WebCore::AnimationTimeline::animationTimingDidChange):
        (WebCore::AnimationTimeline::cancelDeclarativeAnimation):
        * animation/AnimationTimeline.h:
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::getAnimations const):

2019-03-20  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects for SVGAnimatedNumber
        https://bugs.webkit.org/show_bug.cgi?id=196037

        Reviewed by Simon Fraser.

        -- Define SVGAnimatedNumber to be SVGAnimatedPrimitiveProperty<float>.

        -- Add SVGAnimatedNumberAccessor to associate an attribute name with a 
           pointer to an SVGAnimatedNumber. Given a pointer to an SVGElement,
           this accessor will and create an animator for the animated property.

        -- Add SVGAnimatedNumberPairAccessor to associate an attribute name
           with a pair of pointers to SVGAnimatedNumbers. Given a pointer to an
           SVGElement, this accessor will and create an animator for these
           animated properties.

        -- Add SVGAnimatedNumberAnimator to animated an SVGAnimatedNumber.

        -- Add SVGAnimatedNumberPairAnimator to animated a pair of SVGAnimatedNumbers.

        -- Add SVGAnimationNumberFunction which will be responsible for progressing
           a float over a period of time.

        -- Define SVGNumberAnimator to be SVGPrimitivePropertyAnimator<float,
           SVGAnimationNumberFunction>. SVGNumberAnimator will be responsible 
           for animating attributes with no reflecting animated properties, e.g.
           "fill-opacity".

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimatedLength.cpp:
        * svg/SVGAnimatedLengthList.cpp:
        * svg/SVGAnimatedNumber.cpp: Removed.
        * svg/SVGAnimatedNumber.h: Removed.
        * svg/SVGAnimatedNumberList.cpp:
        * svg/SVGAnimatedNumberOptionalNumber.cpp: Removed.
        * svg/SVGAnimatedNumberOptionalNumber.h: Removed.
        * svg/SVGAnimatedTransformList.cpp:
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGComponentTransferFunctionElement.cpp:
        (WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
        (WebCore::SVGComponentTransferFunctionElement::registerAttributes):
        (WebCore::SVGComponentTransferFunctionElement::parseAttribute):
        * svg/SVGComponentTransferFunctionElement.h:
        (WebCore::SVGComponentTransferFunctionElement::slope const):
        (WebCore::SVGComponentTransferFunctionElement::intercept const):
        (WebCore::SVGComponentTransferFunctionElement::amplitude const):
        (WebCore::SVGComponentTransferFunctionElement::exponent const):
        (WebCore::SVGComponentTransferFunctionElement::offset const):
        (WebCore::SVGComponentTransferFunctionElement::slopeAnimated):
        (WebCore::SVGComponentTransferFunctionElement::interceptAnimated):
        (WebCore::SVGComponentTransferFunctionElement::amplitudeAnimated):
        (WebCore::SVGComponentTransferFunctionElement::exponentAnimated):
        (WebCore::SVGComponentTransferFunctionElement::offsetAnimated):
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::SVGFECompositeElement):
        (WebCore::SVGFECompositeElement::registerAttributes):
        (WebCore::SVGFECompositeElement::parseAttribute):
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        (WebCore::SVGFEConvolveMatrixElement::setKernelUnitLength):
        (WebCore::SVGFEConvolveMatrixElement::kernelUnitLengthXIdentifier): Deleted.
        (WebCore::SVGFEConvolveMatrixElement::kernelUnitLengthYIdentifier): Deleted.
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
        (WebCore::SVGFEDiffuseLightingElement::registerAttributes):
        (WebCore::SVGFEDiffuseLightingElement::parseAttribute):
        (WebCore::SVGFEDiffuseLightingElement::kernelUnitLengthXIdentifier): Deleted.
        (WebCore::SVGFEDiffuseLightingElement::kernelUnitLengthYIdentifier): Deleted.
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
        (WebCore::SVGFEDisplacementMapElement::registerAttributes):
        (WebCore::SVGFEDisplacementMapElement::parseAttribute):
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::SVGFEDropShadowElement):
        (WebCore::SVGFEDropShadowElement::setStdDeviation):
        (WebCore::SVGFEDropShadowElement::registerAttributes):
        (WebCore::SVGFEDropShadowElement::parseAttribute):
        (WebCore::SVGFEDropShadowElement::stdDeviationXIdentifier): Deleted.
        (WebCore::SVGFEDropShadowElement::stdDeviationYIdentifier): Deleted.
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
        (WebCore::SVGFEGaussianBlurElement::setStdDeviation):
        (WebCore::SVGFEGaussianBlurElement::registerAttributes):
        (WebCore::SVGFEGaussianBlurElement::parseAttribute):
        (WebCore::SVGFEGaussianBlurElement::stdDeviationXIdentifier): Deleted.
        (WebCore::SVGFEGaussianBlurElement::stdDeviationYIdentifier): Deleted.
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFELightElement.cpp:
        (WebCore::SVGFELightElement::SVGFELightElement):
        (WebCore::SVGFELightElement::parseAttribute):
        (WebCore::SVGFELightElement::svgAttributeChanged):
        (WebCore::SVGFELightElement::registerAttributes): Deleted.
        * svg/SVGFELightElement.h:
        (WebCore::SVGFELightElement::azimuth const):
        (WebCore::SVGFELightElement::elevation const):
        (WebCore::SVGFELightElement::x const):
        (WebCore::SVGFELightElement::y const):
        (WebCore::SVGFELightElement::z const):
        (WebCore::SVGFELightElement::pointsAtX const):
        (WebCore::SVGFELightElement::pointsAtY const):
        (WebCore::SVGFELightElement::pointsAtZ const):
        (WebCore::SVGFELightElement::specularExponent const):
        (WebCore::SVGFELightElement::limitingConeAngle const):
        (WebCore::SVGFELightElement::azimuthAnimated):
        (WebCore::SVGFELightElement::elevationAnimated):
        (WebCore::SVGFELightElement::xAnimated):
        (WebCore::SVGFELightElement::yAnimated):
        (WebCore::SVGFELightElement::zAnimated):
        (WebCore::SVGFELightElement::pointsAtXAnimated):
        (WebCore::SVGFELightElement::pointsAtYAnimated):
        (WebCore::SVGFELightElement::pointsAtZAnimated):
        (WebCore::SVGFELightElement::specularExponentAnimated):
        (WebCore::SVGFELightElement::limitingConeAngleAnimated):
        (WebCore::SVGFELightElement::attributeRegistry): Deleted.
        (WebCore::SVGFELightElement::isKnownAttribute): Deleted.
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
        (WebCore::SVGFEMorphologyElement::setRadius):
        (WebCore::SVGFEMorphologyElement::registerAttributes):
        (WebCore::SVGFEMorphologyElement::parseAttribute):
        (WebCore::SVGFEMorphologyElement::radiusXIdentifier): Deleted.
        (WebCore::SVGFEMorphologyElement::radiusYIdentifier): Deleted.
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
        (WebCore::SVGFEOffsetElement::registerAttributes):
        (WebCore::SVGFEOffsetElement::parseAttribute):
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
        (WebCore::SVGFESpecularLightingElement::registerAttributes):
        (WebCore::SVGFESpecularLightingElement::parseAttribute):
        (WebCore::SVGFESpecularLightingElement::kernelUnitLengthXIdentifier): Deleted.
        (WebCore::SVGFESpecularLightingElement::kernelUnitLengthYIdentifier): Deleted.
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
        (WebCore::SVGFETurbulenceElement::registerAttributes):
        (WebCore::SVGFETurbulenceElement::parseAttribute):
        (WebCore::SVGFETurbulenceElement::baseFrequencyXIdentifier): Deleted.
        (WebCore::SVGFETurbulenceElement::baseFrequencyYIdentifier): Deleted.
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGGeometryElement.cpp:
        (WebCore::SVGGeometryElement::SVGGeometryElement):
        (WebCore::SVGGeometryElement::parseAttribute):
        (WebCore::SVGGeometryElement::registerAttributes): Deleted.
        * svg/SVGGeometryElement.h:
        (WebCore::SVGGeometryElement::pathLength const):
        (WebCore::SVGGeometryElement::pathLengthAnimated):
        (WebCore::SVGGeometryElement::attributeRegistry): Deleted.
        (WebCore::SVGGeometryElement::isKnownAttribute): Deleted.
        * svg/SVGPathElement.h:
        * svg/SVGStopElement.cpp:
        (WebCore::SVGStopElement::SVGStopElement):
        (WebCore::SVGStopElement::parseAttribute):
        (WebCore::SVGStopElement::registerAttributes): Deleted.
        * svg/SVGStopElement.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimatedPropertyPairAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationNumberFunction::progress):
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPrimitivePropertyAnimatorImpl.h:
        * svg/properties/SVGPropertyAnimatorCreator.h:
        (WebCore::SVGPropertyAnimatorCreator::createNumberAnimator):
        (WebCore::SVGPropertyAnimatorCreator::attributeAnimatorCreator):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-20  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG tear off objects for SVGColorAnimator
        https://bugs.webkit.org/show_bug.cgi?id=196025

        Reviewed by Simon Fraser.

        SVG attributes like "fill" and "stroke" do not have reflecting properties
        in SVGElement but they are animatable by SMIL. Animating such attributes
        is different from animating the SVG animated properties. These new classes
        will be added to handle the first type of this kind of attribute: the Color:

        -- SVGPropertyAnimatorCreator is added to SVGElement. It is responsible 
           for creating SVGPropertyAnimators for the attribute which do not have
           reflecting animated properties stored by SVGElement. It will maintain
           a HashMap for the animated values for these attributes which is indexed
           by the attribute name. The animated values has to be RefCounted because
           the same attribute can be animated by multiple animators. So the values
           of this HashMap will be of type Ref<SVGProperty>, e.g.
            <circle cx="80" cy="120" r="35">
                <animate attributeName="fill" values="#080" begin="2s" />
                <animate attributeName="fill" values="#602;#004" begin="4s" dur="5s"/>
            </circle>

        -- SVGPropertyAnimator is the a new type which animates an attribute with
           no reflecting animated property.

        -- SVGPrimitivePropertyAnimator is a template class which is responsible
           for animating attributes with primitive types, e.g. Color, string and 
           float. It is derived form SVGPropertyAnimator and it is initialized 
           with a Ref<SVGValueProperty<PropertyType>> which is created and maintained
           by SVGPropertyAnimatorFactory.

        -- SVGAnimationColorFunction is the animation function that animates the
           attributes whose type are Color. Note the conversion form String to 
           Color in this class has to handle the case when its value is "attributeName="
           e.g. <animate attributeName="fill" from="attributeName="r"/>

        -- SVGColorAnimator will be defined to be
           SVGPrimitivePropertyAnimator<Color, SVGAnimationColorFunction>.

        The life cycle of the RefCounted properties can be explained as follows:

        -- SVGPropertyAnimatorFactory checks whether its HashMap has an entry
           for the given attribute name. If it does not have, it will create a
           new value through the value creation method for this attribute.

        -- SVGPropertyAnimatorFactory passes the shared animated value to the
           animator creation method. So multiple animators will be accessing the
           same value through their RefCounted pointers.

        -- When the animator is about to be deleted, it will notify the target
           SVGElement which will notify its SVGPropertyAnimatorFactory.
           SVGPropertyAnimatorFactory will check its HashMap and retrieves the
           entry for the given attribute name. If the refCount is 2, it is going
           to remove the entry form the HashMap.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimateColorElement.cpp:
        (WebCore::attributeValueIsCurrentColor): Deleted.
        (WebCore::SVGAnimateColorElement::determinePropertyValueTypes): Deleted.
        * svg/SVGAnimateColorElement.h:
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::attributeAnimationController):
        * svg/SVGAnimatedColor.cpp: Removed.
        * svg/SVGAnimatedColor.h: Removed.
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGAttributeAnimationController.cpp:
        (WebCore::SVGAttributeAnimationController::~SVGAttributeAnimationController):
        * svg/SVGAttributeAnimationController.h:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::SVGElement):
        (WebCore::SVGElement::isAnimatedAttribute const):
        (WebCore::SVGElement::createAnimator):
        (WebCore::SVGElement::animatorWillBeDeleted):
        * svg/SVGElement.h:
        (WebCore::SVGElement::propertyAnimatorFactory):
        * svg/SVGFitToViewBox.h:
        * svg/SVGMPathElement.cpp:
        * svg/graphics/filters/SVGFEImage.h:
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.cpp: Added.
        (WebCore::SVGAnimationColorFunction::colorFromString):
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationColorFunction::progress):
        * svg/properties/SVGAnimationFunction.h:
        * svg/properties/SVGAttributeAnimator.cpp:
        (WebCore::SVGAttributeAnimator::applyAnimatedStylePropertyChange):
        (WebCore::SVGAttributeAnimator::removeAnimatedStyleProperty):
        * svg/properties/SVGAttributeAnimator.h:
        * svg/properties/SVGPrimitivePropertyAnimator.h: Added.
        (WebCore::SVGPrimitivePropertyAnimator::create):
        (WebCore::SVGPrimitivePropertyAnimator::SVGPrimitivePropertyAnimator):
        * svg/properties/SVGPrimitivePropertyAnimatorImpl.h: Added.
        * svg/properties/SVGPropertyAnimator.h: Added.
        (WebCore::SVGPropertyAnimator::SVGPropertyAnimator):
        (WebCore::SVGPropertyAnimator::adjustForInheritance const):
        (WebCore::SVGPropertyAnimator::computeCSSPropertyValue const):
        (WebCore::SVGPropertyAnimator::computeInheritedCSSPropertyValue const):
        * svg/properties/SVGPropertyAnimatorFactory.h: Added.
        (WebCore::SVGPropertyAnimatorFactory::isKnownAttribute):
        (WebCore::SVGPropertyAnimatorFactory::createAnimator):
        (WebCore::SVGPropertyAnimatorFactory::animatorWillBeDeleted):
        (WebCore::SVGPropertyAnimatorFactory::createColorAnimator):
        (WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):

2019-03-20  Alex Christensen  <achristensen@webkit.org>

        Use WeakPtr instead of storing raw pointers in WebSocket code
        https://bugs.webkit.org/show_bug.cgi?id=196034

        Reviewed by Geoff Garen.

        This could prevent using freed memory if we forget to reset a pointer somewhere.

        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::WebSocketChannel):
        (WebCore::WebSocketChannel::connect):
        (WebCore::WebSocketChannel::fail):
        (WebCore::WebSocketChannel::disconnect):
        (WebCore::WebSocketChannel::didOpenSocketStream):
        (WebCore::WebSocketChannel::didCloseSocketStream):
        (WebCore::WebSocketChannel::didFailSocketStream):
        (WebCore::WebSocketChannel::processBuffer):
        (WebCore::WebSocketChannel::processFrame):
        (WebCore::WebSocketChannel::processOutgoingFrameQueue):
        (WebCore::WebSocketChannel::sendFrame):
        * Modules/websockets/WebSocketChannel.h:
        * Modules/websockets/WebSocketChannelClient.h:
        * Modules/websockets/WebSocketHandshake.cpp:
        (WebCore::WebSocketHandshake::WebSocketHandshake):
        * Modules/websockets/WebSocketHandshake.h:

2019-03-20  Dean Jackson  <dino@apple.com>

        [iOS] Crash in WebCore::Node::renderRect
        https://bugs.webkit.org/show_bug.cgi?id=196035
        <rdar://problem/49076783>

        Reviewed by Antoine Quint.

        When renderRect was called on an HTMLAreaElement, it would
        ASSERT because it doesn't have a renderer. We hadn't noticed
        this before because none of our tests were hitting this in
        debug mode.

        The fix is to ask the corresponding HTMLImageElement for
        its renderer, and use that for the returned rectangle.

        Covered by these tests that had become flakey:
            fast/images/imagemap-in-shadow-tree.html
            http/tests/download/area-download.html

        * dom/Node.cpp:
        (WebCore::Node::renderRect):

2019-03-20  Youenn Fablet  <youenn@apple.com>

        Have smaller default quotas for third party frames
        https://bugs.webkit.org/show_bug.cgi?id=195841

        Reviewed by Geoffrey Garen.

        Test: http/wpt/cache-storage/quota-third-party.https.html

        * storage/StorageQuotaManager.h:
        (WebCore::StorageQuotaManager::defaultQuota):
        Change default quota to 1GB.

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM: include window as part of any event listener chain
        https://bugs.webkit.org/show_bug.cgi?id=195730
        <rdar://problem/48916872>

        Reviewed by Timothy Hatcher.

        Test: inspector/dom/getEventListenersForNode.html

        * inspector/agents/InspectorDOMAgent.h:
        (WebCore::EventListenerInfo::EventListenerInfo): Deleted.
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::getEventListenersForNode):
        (WebCore::InspectorDOMAgent::buildObjectForEventListener):
        (WebCore::InspectorDOMAgent::getEventListeners): Deleted.

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Runtime: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195972
        <rdar://problem/49039655>

        Reviewed by Timothy Hatcher.

        No change in functionality.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):

        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):
        (WebCore::WorkerInspectorController::createLazyAgents):

        * inspector/agents/page/PageRuntimeAgent.h:
        * inspector/agents/page/PageRuntimeAgent.cpp:
        (WebCore::PageRuntimeAgent::PageRuntimeAgent):
        (WebCore::PageRuntimeAgent::enable):
        (WebCore::PageRuntimeAgent::disable):
        (WebCore::PageRuntimeAgent::didCreateMainWorldContext):
        (WebCore::PageRuntimeAgent::reportExecutionContextCreation):
        (WebCore::PageRuntimeAgent::didCreateFrontendAndBackend): Deleted.
        (WebCore::PageRuntimeAgent::willDestroyFrontendAndBackend): Deleted.

        * inspector/agents/worker/WorkerRuntimeAgent.h:
        * inspector/agents/worker/WorkerRuntimeAgent.cpp:
        (WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend): Deleted.
        (WebCore::WorkerRuntimeAgent::willDestroyFrontendAndBackend): Deleted.

2019-03-19  Ryosuke Niwa  <rniwa@webkit.org>

        [CSS OM] StyledElementInlineStylePropertyMap creates a Ref cycle with its owner element
        https://bugs.webkit.org/show_bug.cgi?id=195987

        Reviewed by Simon Fraser.

        StyledElementInlineStylePropertyMap was leaking every element for which it was created because due to
        a reference cycle. The StyledElementInlineStylePropertyMap holds onto its element using Ref and
        the element also stores StyledElementInlineStylePropertyMap in ElementRareData using RefPtr.

        Fixed the cycle by making the reference from StyledElementInlineStylePropertyMap weak. For now we use
        a raw pointer because we can't create a WeakPtr of an element yet.

        Test: css-typedom/attribute-style-map-should-not-leak-every-element.html

        * css/typedom/StylePropertyMap.h:
        (WebCore::StylePropertyMap): Added clearElement as a virtual function.
        * dom/Element.cpp:
        (WebCore::Element::~Element): Clear the element pointer in StyledElementInlineStylePropertyMap.
        * dom/StyledElement.cpp:
        (WebCore::StyledElementInlineStylePropertyMap::get): Added a null check for m_element.
        (WebCore::StyledElementInlineStylePropertyMap::StyledElementInlineStylePropertyMap):
        (WebCore::StyledElementInlineStylePropertyMap::clearElement): Added.
        (WebCore::StyledElementInlineStylePropertyMap): Use a raw pointer instead of Ref to StyledElement
        to avoid the leak.
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::HashMapStylePropertyMap::clearElement): Added.

2019-03-19  Ryosuke Niwa  <rniwa@webkit.org>

        appendChild should throw when inserting an ancestor of a template into its content adopted to another document
        https://bugs.webkit.org/show_bug.cgi?id=195984

        Reviewed by Darin Adler.

        The WPT test caught a bug that appendChild and other DOM insertion functions were incorrectly assuming that
        any node that's in a HTML template element has the current document's template document as its owner.
        The assumption is wrong when the template element's content DocumentFragment is adopted to another document.

        Fixed the bug by always checking the ancestor host elements in checkAcceptChild. Also

        Test: fast/dom/insert-template-parent-into-adopted-content.html

        * dom/ContainerNode.cpp:
        (WebCore::isInTemplateContent): Deleted. This code is simply wrong.
        (WebCore::containsConsideringHostElements): Deleted. Call sites are updated to use containsIncludingHostElements.
        (WebCore::containsIncludingHostElements): Moved from Node.cpp and optimized this code a bit. It's more efficient
        to get the parent node and check for ShadowRoot and DocumentFragment only when the parent is null than to check
        for those two node types before getting the parent node.
        (WebCore::checkAcceptChild): Merged two code paths to call containsIncludingHostElements. The early return for
        a pseudo element is there only to prevent tree corruption in release build even in the presence of a major bug
        so it shouldn't be an spec compliance issue.
        * dom/Node.cpp:
        (WebCore::Node::containsIncludingHostElements const): Deleted.
        * dom/Node.h:

2019-03-20  Timothy Hatcher  <timothy@apple.com>

        Unreviewed followup to r243169 to fix test failures.

        * DerivedSources.make: Add HAVE_OS_DARK_MODE_SUPPORT to FEATURE_AND_PLATFORM_DEFINES.

2019-03-20  Keith Rollin  <krollin@apple.com>

        Update the location for XProtect.meta.plist file
        https://bugs.webkit.org/show_bug.cgi?id=195764

        Reviewed by Alexey Proskuryakov.

        The location of this file is changing in the future, so adjust for
        that.

        No new tests since there should be no observable behavior difference.

        * platform/mac/BlacklistUpdater.mm:

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Database: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195587
        <rdar://problem/48791735>

        Reviewed by Timothy Hatcher.

        No change in functionality.

        * inspector/agents/InspectorDatabaseAgent.h:
        * inspector/agents/InspectorDatabaseAgent.cpp:
        (WebCore::InspectorDatabaseAgent::didCommitLoad): Added.
        (WebCore::InspectorDatabaseAgent::didOpenDatabase):
        (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
        (WebCore::InspectorDatabaseAgent::enable):
        (WebCore::InspectorDatabaseAgent::disable):
        (WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
        (WebCore::InspectorDatabaseAgent::executeSQL):
        (WebCore::InspectorDatabaseAgent::databaseId):
        (WebCore::InspectorDatabaseAgent::findByFileName):
        (WebCore::InspectorDatabaseAgent::databaseForId):
        (WebCore::InspectorDatabaseAgent::clearResources): Deleted.
        (WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent): Deleted.
        * inspector/InspectorDatabaseResource.h:
        (WebCore::InspectorDatabaseResource::database const):
        (WebCore::InspectorDatabaseResource::setDatabase):
        (WebCore::InspectorDatabaseResource::database): Deleted.
        * inspector/InspectorDatabaseResource.cpp:
        (WebCore::InspectorDatabaseResource::create):
        (WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
        (WebCore::InspectorDatabaseResource::bind):
        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::didOpenDatabase):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::didCommitLoadImpl):
        (WebCore::InspectorInstrumentation::didOpenDatabaseImpl):
        Pass the `Database` as a reference instead of a pointer. Retrieve any information directly
        from the `Database`, rather than using the arguments that were used to create it.

        * Modules/webdatabase/Database.h:
        (WebCore::Database::expectedVersion const): Deleted.
        * Modules/webdatabase/Database.cpp:
        (WebCore::Database::expectedVersion const): Added.
        * Modules/webdatabase/DatabaseManager.cpp:
        (WebCore::DatabaseManager::openDatabase):
        * Modules/webdatabase/DatabaseTracker.h:
        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::closeAllDatabases):
        (WebCore::DatabaseTracker::openDatabases): Added.
        Expose various values used by `InspectorDatabaseAgent` and `InspectorDatabaseResource`.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):
        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):

        * inspector/CommandLineAPIHost.h:
        (WebCore::CommandLineAPIHost::init):
        * inspector/CommandLineAPIHost.cpp:
        (WebCore::CommandLineAPIHost::disconnect):
        (WebCore::CommandLineAPIHost::inspect):
        (WebCore::CommandLineAPIHost::clearConsoleMessages):
        (WebCore::CommandLineAPIHost::databaseId):
        (WebCore::CommandLineAPIHost::storageId):
        Rather than pass each agent individually, pass the entire `InstrumentingAgents` so that the
        current agent can be used instead of whatever was initially created.

2019-03-20  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Always consider baseline shim for the minimum contribution
        https://bugs.webkit.org/show_bug.cgi?id=195964

        Reviewed by Javier Fernandez.

        Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html

        Before this patch, the shim used for baseline alignment is not taken
        into consideration when calculating the minimum contribution of a grid
        item if its preferred size is auto, its minimum size is auto, and the
        max track sizing function is a fixed small value. In this case, the
        auto minimum size can produce a smaller track than if it was 0.

        The specification needs to clarify how baseline shims interact with
        minimum contributions (https://github.com/w3c/csswg-drafts/issues/3660),
        but the above doesn't make sense.

        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Some elements lag behind async overflow scrolling on palace-games.com
        https://bugs.webkit.org/show_bug.cgi?id=195934

        Reviewed by Zalan Bujtas.

        The logic added in r242997 was wrong for an absolutely-positioned layer whose containig block was
        inside an overflow:scroll, but whose compositing ancestor was outside. This is a case where
        we need to make a Positioning node for the absolute layer, because it needs to move along
        with the scrolled content.
        
        There are six permutations of overflow, containing block and compositing ancestor that we care about.
        Showing renderer (aka DOM) order, they are (where <- indicates child <- parent):
        
        layer <- cb <- ca <- os -- no positioned node required
        layer <- cb <- os <- ca -- compositing parent skips overflow, need a "Moved" Positioned node.
        layer <- ov <- cb <- ca -- no positioned node required
        layer <- ov <- ca <- cb -- no positioned node required
        layer <- ca <- cb <- ov -- no positioned node required
        layer <- ca <- ov <- cb -- containing block skips overflow, need a "Stationary" Positioned node.
        
        [cb = containing block, ca = compositing ancestor, ov = overflow scroll]

        Test: scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html

        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::layerParentedAcrossCoordinatedScrollingBoundary):
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Explicitly trigger compositing for layers that need to be moved by ScrollingTreePositionedNodes
        https://bugs.webkit.org/show_bug.cgi?id=195710
        <rdar://problem/48867502>

        Reviewed by Zalan Bujtas.

        A position:absolute layer whose containing block is outside an enclosing overflow:scroll, but
        whose compositing ancestor is the overflow or is inside it, needs to be composited so that
        we can make a Positioning scrolling tree node for it.

        Handle this case as a "OverflowScrollPositioning" indirect compositing reason.

        Test: compositing/layer-creation/absolute-in-async-overflow-scroll.html

        * inspector/agents/InspectorLayerTreeAgent.cpp:
        (WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::logReasonsForCompositing):
        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
        (WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary):
        (WebCore::layerContainingBlockCrossesCoordinatedScrollingBoundary): Deleted.
        * rendering/RenderLayerCompositor.h: Generalize OverflowScrollingTouch to OverflowScrolling.

2019-03-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Search: allow DOM searches to be case sensitive
        https://bugs.webkit.org/show_bug.cgi?id=194673
        <rdar://problem/48087577>

        Reviewed by Timothy Hatcher.

        Tests: inspector/dom/dom-search.html
               inspector/dom/dom-search-caseSensitive.html

        Since `DOM.performSearch` also searches by selector and XPath, some results may appear
        as unexpected. As an example, searching for "BoDy" will still return the <body> as a result,
        as although the literal node name ("BODY") didn't match, it did match via selector/XPath.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::performSearch):

        * inspector/InspectorNodeFinder.h:
        * inspector/InspectorNodeFinder.cpp:
        (WebCore::InspectorNodeFinder::InspectorNodeFinder):
        (WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
        (WebCore::InspectorNodeFinder::checkEquals): Added.
        (WebCore::InspectorNodeFinder::checkContains): Added.
        (WebCore::InspectorNodeFinder::checkStartsWith): Added.
        (WebCore::InspectorNodeFinder::checkEndsWith): Added.
        (WebCore::InspectorNodeFinder::matchesAttribute):
        (WebCore::InspectorNodeFinder::matchesElement):
        (WebCore::InspectorNodeFinder::searchUsingXPath):
        (WebCore::InspectorNodeFinder::searchUsingCSSSelectors):

2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove copyRef() calls added in r243163
        https://bugs.webkit.org/show_bug.cgi?id=195962

        Reviewed by Chris Dumez.

        The first two cases here can just directly return the RefPtr.

        In the third case, we have to work around a GCC 6 bug because GCC 6 is unable to pick the
        right constructor to use, unlike modern compilers.

        * Modules/fetch/FetchBody.cpp:
        (WebCore::FetchBody::bodyAsFormData const):
        (WebCore::FetchBody::take):

2019-03-20  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Fix handling of resolution changes in AppendPipeline
        https://bugs.webkit.org/show_bug.cgi?id=195855

        Reviewed by Xabier Rodriguez-Calvar.

        MediaSample instances produced by the AppendPipeline were not
        accounting for resolution changes. The causes of this are twofold:

        1) m_presentationSize is set by connectDemuxerSrcPadToAppsink() (by
        calling parseDemuxerSrcPadCaps()), but not by appsinkCapsChanged().

        2) appsinkCapsChanged() was being called in the main thread as an
        asynchronous task. In consequence, even if m_presentationSize is set
        there, many samples with the new resolution would still be wrapped in
        a MediaSampleGStreamer using the old resolution by the main thread
        running consumeAppsinkAvailableSamples() before appsinkCapsChanged()
        is dispatched.

        This patch fixes these problems by updating m_presentationSize in
        appsinkCapsChanged() and making the streaming thread block until the
        main thread has dispatched appsinkCapsChanged(). This way the handling
        of caps changes is serialized with the handling of frames.

        Test: media/media-source/media-source-samples-resolution-change.html

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::appsinkCapsChanged):

2019-03-20  Joanmarie Diggs  <jdiggs@igalia.com>

        AX: Implement support for new meter ARIA role
        https://bugs.webkit.org/show_bug.cgi?id=195966

        Reviewed by Chris Fleizach.

        Add the new ARIA role to the internal rolemap so that it is treated
        in the same fashion as its HTML element counterpart.

        No new tests. Instead add the role to the existing role-exposure tests.

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::isMeter const):
        (WebCore::initializeRoleMap):
        (WebCore::AccessibilityObject::computedRoleString const):
        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
        (atkRole):

2019-03-20  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Switch back to webkitwebsrc for adaptive streaming fragments downloading
        https://bugs.webkit.org/show_bug.cgi?id=195948

        Reviewed by Xabier Rodriguez-Calvar.

        The webkitwebsrc element now behaves much better when used through
        GStreamer's adaptivedemux, so use it for all WebKit media
        downloads. The MediaPlayer needed by the webkitwebsrc element now
        travels through GstContext messages and queries so that it can be
        shared by multiple elements, typically the first webkitwebsrc
        element downloads the HLS manifest and then adaptivedemux, through
        uridownloader, will create new webkitwebsrc elements for fragments
        downloading. Those new elements will query the first webkitwebsrc
        element for its context.

        The previous hack used to check SecurityOrigins can
        also be cleaned-up. The origins are now cached upon reception of
        the HTTP headers message from webkitwebsrc.

        No new tests, existing http/tests/media/hls tests cover this change.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        (WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
        (WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):
        (WebCore::convertToInternalProtocol): Deleted.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage):
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webkit_web_src_class_init):
        (webKitWebSrcSetContext):
        (webKitWebSrcStart):
        (webKitWebSrcGetProtocols):
        (webKitWebSrcSetUri):
        (CachedResourceStreamingClient::responseReceived):
        (convertPlaybinURI): Deleted.
        (webKitSrcWouldTaintOrigin): Deleted.
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

2019-03-20  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC]: Refactor to make the encoding happen synchronously
        https://bugs.webkit.org/show_bug.cgi?id=195674

        This simplifies the code and make sure that everything is called from the right
        thread. It also makes it so we follow the same way of doing things as other libwebrtc
        encoders.

        Also "s/codecSpecifiInfos/codecSpecificInfos/"

        Reviewed by Philippe Normand.

        No new test as this is just a refactoring

        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):
        (WebCore::GStreamerVideoEncoder::returnFromFlowReturn):

2019-03-20  Tim Horton  <timothy_horton@apple.com>

        Add an platform-driven spell-checking mechanism
        https://bugs.webkit.org/show_bug.cgi?id=195795

        Reviewed by Ryosuke Niwa.

        * dom/Document.cpp:
        (WebCore::Document::textInserted):
        PlatformTextChecking markers are not expected
        to propagate to newly inserted text, so remove them.

        * dom/DocumentMarker.h:
        (WebCore::DocumentMarker::allMarkers):
        Add a new type of DocumentMarker, PlatformTextChecking,
        and a new data variant that stores a key value pair of strings.

        * dom/DocumentMarkerController.cpp:
        (WebCore::DocumentMarkerController::addPlatformTextCheckingMarker):
        (WebCore::DocumentMarkerController::removeMarkers):
        (WebCore::DocumentMarkerController::filterMarkers):
        (WebCore::shouldInsertAsSeparateMarker):
        * dom/DocumentMarkerController.h:
        Export some things.
        Add addPlatformTextCheckingMarker, like the others.
        Make it possible to filter out markers of a particular type
        in a range with a predicate function.

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers):
        Propagate PlatformTextChecking data.
        A future change should probably make it possible for
        any DocumentMarker to copy its data here, instead of
        special-casing each type that is important.

        * editing/Editor.cpp:
        (WebCore::Editor::markMisspellingsAfterTypingToWord):
        (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
        (WebCore::Editor::markMisspellingsAndBadGrammar):
        * editing/TextCheckingHelper.cpp:
        (WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
        (WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
        (WebCore::platformDrivenTextCheckerEnabled):
        * editing/TextCheckingHelper.h:
        Bail from traditional spell checking if this mechanism is
        enabled. (I wrote it this way to make it runtime switchable
        in the near future, and to be similar to unifiedTextCheckerEnabled).

2019-03-19  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Implement FIDO AppID extension
        https://bugs.webkit.org/show_bug.cgi?id=143491
        <rdar://problem/48298273>

        Reviewed by Brent Fulgham.

        This patch adds support for FIDO AppID extension: https://www.w3.org/TR/webauthn/#sctn-appid-extension.
        To be noticed, this implementation follows what spec suggested in the 'Note' session and what Chrome/Firefox
        do in practice to avoid some unnecessary steps of
        https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-appid-and-facets-v2.0-id-20180227.html#determining-if-a-caller-s-facetid-is-authorized-for-an-appid.

        In fido::convertToU2fSignCommand, the checkOnly flag is deleted as it is never used.

        Covered by new tests in existing files.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/webauthn/AuthenticationExtensionsClientInputs.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
        (WebCore::AuthenticationExtensionsClientInputs::encode const):
        (WebCore::AuthenticationExtensionsClientInputs::decode):
        * Modules/webauthn/AuthenticationExtensionsClientInputs.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialRequestOptions.idl.
        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinatorInternal::processAppIdExtension):
        (WebCore::AuthenticatorCoordinator::create const):
        (WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
        * Modules/webauthn/PublicKeyCredential.cpp:
        (WebCore::PublicKeyCredential::tryCreate):
        (WebCore::PublicKeyCredential::PublicKeyCredential):
        (WebCore::PublicKeyCredential::getClientExtensionResults const):
        (WebCore::PublicKeyCredential::create): Deleted.
        * Modules/webauthn/PublicKeyCredential.h:
        * Modules/webauthn/PublicKeyCredential.idl:
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        * Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
        * Modules/webauthn/PublicKeyCredentialData.h:
        (WebCore::PublicKeyCredentialData::encode const):
        (WebCore::PublicKeyCredentialData::decode):
        * Modules/webauthn/PublicKeyCredentialRequestOptions.h:
        (WebCore::PublicKeyCredentialRequestOptions::encode const):
        (WebCore::PublicKeyCredentialRequestOptions::decode):
        * Modules/webauthn/PublicKeyCredentialRequestOptions.idl:
        * Modules/webauthn/fido/DeviceResponseConverter.cpp:
        (fido::readCTAPMakeCredentialResponse):
        (fido::readCTAPGetAssertionResponse):
        * Modules/webauthn/fido/U2fCommandConstructor.cpp:
        (fido::convertToU2fSignCommand):
        * Modules/webauthn/fido/U2fCommandConstructor.h:
        * Modules/webauthn/fido/U2fResponseConverter.cpp:
        (fido::readU2fRegisterResponse):
        (fido::readU2fSignResponse):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-03-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Debugger: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195973
        <rdar://problem/49039674>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):
        (WebCore::WorkerInspectorController::createLazyAgents):

        * inspector/agents/WebDebuggerAgent.cpp:
        (WebCore::WebDebuggerAgent::disable):

        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
        (WebCore::InspectorDOMDebuggerAgent::discardAgent):

2019-03-18  Maciej Stachowiak  <mjs@apple.com>

        Simplify Cocoa platform user agent logic by using string constants instead of function calls for the frozen parts
        https://bugs.webkit.org/show_bug.cgi?id=195936

        Reviewed by Dean Jackson.

        No new tests because no behavior changes. Existing behavior is tested by fast/dom/navigator-userAgent-frozen.html

        * platform/UserAgent.h: Remove prototype of removed function.
        * platform/cocoa/UserAgentCocoa.mm:
        (WebCore::userAgentBundleVersion): Deleted.
        * platform/ios/UserAgentIOS.mm:
        * platform/ios/UserAgentIOS.mm:
        (WebCore::osNameForUserAgent): Use WTF String instead of NSString
        (WebCore::deviceNameForUserAgent): dutto
        (WebCore::standardUserAgentWithApplicationName): Simplify this
        function to account for WebKit version now being frozen. Also
        use String instead of NSString.
        * platform/mac/UserAgentMac.mm:
        (WebCore::standardUserAgentWithApplicationName): Simplify this
        function to account for CPU and WEbKit version now being
        frozen. Also avoid two separate but very similar calls to
        makeString().

2019-03-19  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed adjustment to r242842 per Darin's request.

        * platform/win/LoggingWin.cpp:
        (WebCore::logLevelString):

2019-03-19  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects of SVGAnimatedPreserveAspectRatio
        https://bugs.webkit.org/show_bug.cgi?id=195960

        Reviewed by Simon Fraser.

        -- Define SVGAnimatedPreserveAspectRatio to be SVGAnimatedValueProperty<
           SVGPreserveAspectRatio>.

        -- Make SVGPreserveAspectRatio be derived form SVGValueProperty<
           SVGPreserveAspectRatioValue>.

        -- Add SVGAnimatedPreserveAspectRatioAccessor to access the animated 
           property.

        -- Add SVGAnimatedPreserveAspectRatioAnimator to animate the animated
           property of the target element and all its instances.

        -- Add SVGAnimationPreserveAspectRatioFunction to progress animVal of
           animated property in a period of time.

        SVGFilterPrimitiveStandardAttributes::build() should be const function.
        This is required for this patch because SVGFEImageElement::build() calls
        SVGFEImageElement::preserveAspectRatio() which is const.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimatedPreserveAspectRatio.cpp: Removed.
        * svg/SVGAnimatedPreserveAspectRatio.h: Removed.
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::build const):
        (WebCore::SVGFEBlendElement::build): Deleted.
        * svg/SVGFEBlendElement.h:
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::build const):
        (WebCore::SVGFEColorMatrixElement::build): Deleted.
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEComponentTransferElement.cpp:
        (WebCore::SVGFEComponentTransferElement::build const):
        (WebCore::SVGFEComponentTransferElement::build): Deleted.
        * svg/SVGFEComponentTransferElement.h:
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::build const):
        (WebCore::SVGFECompositeElement::build): Deleted.
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::build const):
        (WebCore::SVGFEConvolveMatrixElement::build): Deleted.
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::build const):
        (WebCore::SVGFEDiffuseLightingElement::build): Deleted.
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::build const):
        (WebCore::SVGFEDisplacementMapElement::build): Deleted.
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::build const):
        (WebCore::SVGFEDropShadowElement::build): Deleted.
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEFloodElement.cpp:
        (WebCore::SVGFEFloodElement::build const):
        (WebCore::SVGFEFloodElement::build): Deleted.
        * svg/SVGFEFloodElement.h:
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::build const):
        (WebCore::SVGFEGaussianBlurElement::build): Deleted.
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEImageElement.cpp:
        (WebCore::SVGFEImageElement::SVGFEImageElement):
        (WebCore::SVGFEImageElement::parseAttribute):
        (WebCore::SVGFEImageElement::build const):
        (WebCore::SVGFEImageElement::registerAttributes): Deleted.
        (WebCore::SVGFEImageElement::build): Deleted.
        * svg/SVGFEImageElement.h:
        * svg/SVGFEMergeElement.cpp:
        (WebCore::SVGFEMergeElement::build const):
        (WebCore::SVGFEMergeElement::build): Deleted.
        * svg/SVGFEMergeElement.h:
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::build const):
        (WebCore::SVGFEMorphologyElement::build): Deleted.
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::build const):
        (WebCore::SVGFEOffsetElement::build): Deleted.
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::build const):
        (WebCore::SVGFESpecularLightingElement::build): Deleted.
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETileElement.cpp:
        (WebCore::SVGFETileElement::build const):
        (WebCore::SVGFETileElement::build): Deleted.
        * svg/SVGFETileElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::build const):
        (WebCore::SVGFETurbulenceElement::build): Deleted.
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        * svg/SVGFitToViewBox.cpp:
        (WebCore::SVGFitToViewBox::SVGFitToViewBox):
        (WebCore::SVGFitToViewBox::parseViewBox):
        (WebCore::SVGFitToViewBox::registerAttributes): Deleted.
        * svg/SVGFitToViewBox.h:
        (WebCore::SVGFitToViewBox::preserveAspectRatio const):
        (WebCore::SVGFitToViewBox::preserveAspectRatioAnimated):
        (WebCore::SVGFitToViewBox::setPreserveAspectRatio):
        (WebCore::SVGFitToViewBox::resetPreserveAspectRatio):
        (WebCore::SVGFitToViewBox::preserveAspectRatioString const):
        * svg/SVGImageElement.cpp:
        (WebCore::SVGImageElement::SVGImageElement):
        (WebCore::SVGImageElement::registerAttributes):
        (WebCore::SVGImageElement::parseAttribute):
        * svg/SVGImageElement.h:
        * svg/SVGMarkerElement.h:
        * svg/SVGPatternElement.h:
        * svg/SVGPreserveAspectRatio.h:
        (WebCore::SVGPreserveAspectRatio::create):
        (WebCore::SVGPreserveAspectRatio::align const):
        (WebCore::SVGPreserveAspectRatio::setAlign):
        (WebCore::SVGPreserveAspectRatio::meetOrSlice const):
        (WebCore::SVGPreserveAspectRatio::setMeetOrSlice):
        (WebCore::SVGPreserveAspectRatio::align): Deleted.
        (WebCore::SVGPreserveAspectRatio::meetOrSlice): Deleted.
        (WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio): Deleted.
        * svg/SVGSVGElement.h:
        * svg/SVGStringList.h:
        * svg/SVGSymbolElement.h:
        * svg/SVGViewSpec.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimationDiscreteFunctionImpl.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-19  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects of SVGAnimatedRect
        https://bugs.webkit.org/show_bug.cgi?id=195949

        Reviewed by Simon Fraser.

        SVGRect is an SVG type, so we need to introduce two classes to represent
        it and its animated property SVGAnimatedRect.

        -- SVGValueProperty: It is derived from SVGProperty and it will be the 
           base class of all the SVG type based properties. It is basically a
           RefCounted object with m_value member. For SVGRect, m_value will be
           of type FloatRect.

        -- SVGAnimatedValueProperty: It is derived from SVGAnimatedProperty and
           it will be the base class of all the animated SVG type based properties.
           It is RefCounted object with two RefCounted members: baseVal and animVal.
           These two members are of type SVGValueProperty. For SVGAnimatedRect,
           baseVal and animVal will be of type SVGRect.

        SVGAnimatedValueProperty will be responsible for:

        1) Providing access to its baseVal and animVal. Note the same interface
           is used internally and used by the DOM.

        2) Managing the animation of the property by starting and stopping it.

        3) Coordinating the changes in its baseVal and animVal with the owner
           element.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimatedRect.cpp: Removed.
        * svg/SVGAnimatedRect.h: Removed.
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGAttributeAnimationController.cpp:
        (WebCore::SVGAttributeAnimationController::calculateAnimatedValue):
        This is a bug from r243036. The <set> can be the tag of m_animationElement
        not m_targetElement.
        * svg/SVGAttributeAnimationController.h:
        * svg/SVGAttributeAnimationControllerBase.h:
        * svg/SVGFitToViewBox.cpp:
        (WebCore::SVGFitToViewBox::SVGFitToViewBox):
        (WebCore::SVGFitToViewBox::registerAttributes):
        (WebCore::SVGFitToViewBox::setViewBox):
        (WebCore::SVGFitToViewBox::resetViewBox):
        * svg/SVGFitToViewBox.h:
        (WebCore::SVGFitToViewBox::viewBox const):
        (WebCore::SVGFitToViewBox::viewBoxAnimated):
        (WebCore::SVGFitToViewBox::viewBoxString const):
        * svg/SVGMarkerElement.h:
        * svg/SVGPatternElement.h:
        * svg/SVGRect.h:
        (WebCore::SVGRect::create):
        (WebCore::SVGRect::x):
        (WebCore::SVGRect::setX):
        (WebCore::SVGRect::y):
        (WebCore::SVGRect::setY):
        (WebCore::SVGRect::width):
        (WebCore::SVGRect::setWidth):
        (WebCore::SVGRect::height):
        (WebCore::SVGRect::setHeight):
        (WebCore::SVGRect::SVGRect): Deleted.
        * svg/SVGSVGElement.cpp:
        (WebCore::checkIntersectionWithoutUpdatingLayout):
        (WebCore::checkEnclosureWithoutUpdatingLayout):
        * svg/SVGSVGElement.h:
        * svg/SVGSymbolElement.h:
        * svg/SVGViewSpec.cpp:
        (WebCore::SVGViewSpec::SVGViewSpec):
        * svg/SVGViewSpec.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimatedValueProperty.h: Added.
        (WebCore::SVGAnimatedValueProperty::create):
        (WebCore::SVGAnimatedValueProperty::~SVGAnimatedValueProperty):
        (WebCore::SVGAnimatedValueProperty::setBaseValInternal):
        (WebCore::SVGAnimatedValueProperty::baseVal const):
        (WebCore::SVGAnimatedValueProperty::baseVal):
        (WebCore::SVGAnimatedValueProperty::setAnimVal):
        (WebCore::SVGAnimatedValueProperty::animVal const):
        (WebCore::SVGAnimatedValueProperty::animVal):
        (WebCore::SVGAnimatedValueProperty::currentValue const):
        (WebCore::SVGAnimatedValueProperty::SVGAnimatedValueProperty):
        (WebCore::SVGAnimatedValueProperty::ensureAnimVal):
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
        (WebCore::SVGAnimationRectFunction::progress):
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        * svg/properties/SVGValueProperty.h: Added.
        (WebCore::SVGValueProperty::create):
        (WebCore::SVGValueProperty::value const):
        (WebCore::SVGValueProperty::setValue):
        (WebCore::SVGValueProperty::value):
        (WebCore::SVGValueProperty::SVGValueProperty):

2019-03-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics (experimental): Clear non-cookie website data for sites that have been navigated to, with link decoration, by a prevalent resource
        https://bugs.webkit.org/show_bug.cgi?id=195923
        <rdar://problem/49001272>

        Reviewed by Alex Christensen.

        Adds a new experimental feature.

        Test: http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setIsITPFirstPartyWebsiteDataRemovalEnabled):
        (WebCore::RuntimeEnabledFeatures::isITPFirstPartyWebsiteDataRemovalEnabled const):

2019-03-19  Ryosuke Niwa  <rniwa@webkit.org>

        Reparenting during a mutation event inside appendChild could result in a circular DOM tree
        https://bugs.webkit.org/show_bug.cgi?id=192825

        Reviewed by Zalan Bujtas.

        The bug was caused by appendChildWithoutPreInsertionValidityCheck, insertBefore and replaceChild
        checking the circular dependency against newChild instead of targets even though when newChild
        is a document fragment, appendChildWithoutPreInsertionValidityCheck inserts the children of
        the document fragment. Fixed the bug by checking the circular dependency against each target child.

        Also fixed the bug that checkAcceptChildGuaranteedNodeTypes was not considering shadow inclusive
        ancestors or template host elements.

        Tests: fast/dom/append-child-with-mutation-event-removal-and-circular-insertion.html
               fast/dom/append-child-with-mutation-event-removal-and-circular-shadow-insertion.html
               fast/dom/append-child-with-mutation-event-removal-and-circular-template-insertion.html
               fast/dom/insert-child-with-mutation-event-removal-and-circular-insertion.html
               fast/dom/insert-child-with-mutation-event-removal-and-circular-shadow-insertion.html
               fast/dom/insert-child-with-mutation-event-removal-and-circular-template-insertion.html
               fast/dom/replace-child-with-mutation-event-removal-and-circular-insertion.html
               fast/dom/replace-child-with-mutation-event-removal-and-circular-shadow-insertion.html
               fast/dom/replace-child-with-mutation-event-removal-and-circular-template-insertion.html

        * dom/ContainerNode.cpp:
        (WebCore::checkAcceptChildGuaranteedNodeTypes):
        (WebCore::ContainerNode::insertBefore):
        (WebCore::ContainerNode::replaceChild):
        (WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck):

2019-03-19  Brent Fulgham  <bfulgham@apple.com>

        Add default prompt implementation for the Storage Access API
        https://bugs.webkit.org/show_bug.cgi?id=195866
        <rdar://problem/45150009>

        Reviewed by Chris Dumez.

        * en.lproj/Localizable.strings: Update with new strings used by the
        Storage Access API dialog.

2019-03-19  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=195677

        Reviewed by Xabier Rodriguez-Calvar.

        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
        (gst_webrtc_video_encoder_set_format):
        (register_known_encoder):
        (setup_x264enc):
        (setup_openh264enc):
        (setup_omxh264enc):
        (set_bitrate_bit_per_sec):
        (gst_webrtc_video_encoder_class_init):

2019-03-19  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r239904): Update dark mode defines in a few places that got missed.
        https://bugs.webkit.org/show_bug.cgi?id=195958

        Reviewed by Megan Gardner.

        * DerivedSources.make: Support HAVE_OS_DARK_MODE_SUPPORT in html.css.
        * css/html.css: Update dark mode defines.
        * page/FrameView.cpp:
        (WebCore::FrameView::updateBackgroundRecursively): Ditto.

2019-03-19  Chris Dumez  <cdumez@apple.com>

        media/track/track-in-band-style.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=195922

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
        (WebCore::InbandTextTrackPrivateAVF::processCueAttributes):
        Small optimization: some of the if checks were missing their "continue;"
        statement. This would cause us to keep checking following keys even though
        we already got a match.

2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Build cleanly with GCC 9
        https://bugs.webkit.org/show_bug.cgi?id=195920

        Reviewed by Chris Dumez.

        WebKit triggers three new GCC 9 warnings:

        """
        -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
        declared copy constructor and assignment operator if one of them is user-provided.
        """

        Solution is to either add a copy constructor or copy assignment operator, if required, or
        else remove one if it is redundant.

        """
        -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
        -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
        """

        These account for most of this patch. Solution is to just remove the bad WTFMove().

        Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
        These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
        would be safer to not use memcpy on nontrivial types, but that's too complex for this
        patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)

        * Modules/encryptedmedia/CDM.cpp:
        (WebCore::CDM::getSupportedConfiguration):
        * Modules/encryptedmedia/MediaKeys.cpp:
        (WebCore::MediaKeys::createSession):
        * Modules/entriesapi/DOMFileSystem.cpp:
        (WebCore::listDirectoryWithMetadata):
        (WebCore::toFileSystemEntries):
        * Modules/fetch/FetchBody.cpp:
        (WebCore::FetchBody::fromFormData):
        (WebCore::FetchBody::bodyAsFormData const):
        (WebCore::FetchBody::take):
        * Modules/fetch/FetchRequest.cpp:
        (WebCore::FetchRequest::create):
        (WebCore::FetchRequest::clone):
        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::create):
        (WebCore::FetchResponse::redirect):
        (WebCore::FetchResponse::clone):
        * Modules/indexeddb/IDBCursor.cpp:
        (WebCore::IDBCursor::update):
        (WebCore::IDBCursor::deleteFunction):
        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::transaction):
        * Modules/indexeddb/IDBDatabaseIdentifier.h:
        (WebCore::IDBDatabaseIdentifier::decode):
        * Modules/indexeddb/IDBKeyData.h:
        (WebCore::IDBKeyData::decode):
        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::createIndex):
        (WebCore::IDBObjectStore::index):
        * Modules/indexeddb/IDBValue.h:
        (WebCore::IDBValue::decode):
        * Modules/indexeddb/shared/IDBError.cpp:
        (WebCore::IDBError::operator=): Deleted.
        * Modules/indexeddb/shared/IDBError.h:
        * Modules/indexeddb/shared/IDBResultData.h:
        (WebCore::IDBResultData::decode):
        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::create):
        * Modules/mediasource/MediaSource.cpp:
        (WebCore::MediaSource::addSourceBuffer):
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::iceServersFromConfiguration):
        (WebCore::RTCPeerConnection::certificatesFromConfiguration):
        (WebCore::certificateTypeFromAlgorithmIdentifier):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::getStats):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
        (WebCore::LibWebRTCPeerConnectionBackend::addUnifiedPlanTransceiver):
        * Modules/webaudio/AudioBuffer.cpp:
        (WebCore::AudioBuffer::create):
        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::createMediaElementSource):
        (WebCore::AudioContext::createMediaStreamSource):
        (WebCore::AudioContext::createScriptProcessor):
        * Modules/webaudio/OfflineAudioContext.cpp:
        (WebCore::OfflineAudioContext::create):
        * Modules/webdatabase/DatabaseManager.cpp:
        (WebCore::DatabaseManager::tryToOpenDatabaseBackend):
        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::canEstablishDatabase):
        (WebCore::DatabaseTracker::retryCanEstablishDatabase):
        * Modules/webdatabase/SQLResultSetRowList.cpp:
        (WebCore::SQLResultSetRowList::item const):
        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::create):
        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::rangeForNodeContents):
        (WebCore::AXObjectCache::rangeForUnorderedCharacterOffsets):
        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::create):
        (WebCore::KeyframeEffect::backingAnimationForCompositedRenderer const):
        * bindings/js/JSCustomElementInterface.cpp:
        (WebCore::JSCustomElementInterface::constructElementWithFallback):
        * bindings/js/JSDOMConvertVariadic.h:
        (WebCore::VariadicConverter::convert):
        (WebCore::convertVariadicArguments):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readDOMPointInit):
        (WebCore::transferArrayBuffers):
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateCallbackImplementationContent):
        * bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
        (WebCore::JSTestCallbackFunction::handleEvent):
        * bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp:
        (WebCore::JSTestCallbackFunctionRethrow::handleEvent):
        * bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
        (WebCore::JSTestCallbackInterface::callbackWithAReturnValue):
        (WebCore::JSTestCallbackInterface::callbackThatRethrowsExceptions):
        (WebCore::JSTestCallbackInterface::callbackThatSkipsInvokeCheck):
        (WebCore::JSTestCallbackInterface::callbackWithThisObject):
        * contentextensions/ContentExtensionParser.cpp:
        (WebCore::ContentExtensions::getStringList):
        (WebCore::ContentExtensions::loadTrigger):
        (WebCore::ContentExtensions::loadEncodedRules):
        (WebCore::ContentExtensions::parseRuleList):
        * crypto/SubtleCrypto.cpp:
        (WebCore::normalizeCryptoAlgorithmParameters):
        * crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:
        (WebCore::calculateSignature):
        * crypto/keys/CryptoKeyEC.cpp:
        (WebCore::CryptoKeyEC::exportJwk const):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::computedTransform):
        (WebCore::ComputedStyleExtractor::valueForShadow):
        (WebCore::ComputedStyleExtractor::valueForFilter):
        (WebCore::specifiedValueForGridTrackSize):
        (WebCore::valueForGridTrackList):
        (WebCore::valueForGridPosition):
        (WebCore::willChangePropertyValue):
        (WebCore::fontVariantLigaturesPropertyValue):
        (WebCore::fontVariantNumericPropertyValue):
        (WebCore::fontVariantEastAsianPropertyValue):
        (WebCore::touchActionFlagsToCSSValue):
        (WebCore::renderTextDecorationFlagsToCSSValue):
        (WebCore::renderEmphasisPositionFlagsToCSSValue):
        (WebCore::speakAsToCSSValue):
        (WebCore::hangingPunctuationToCSSValue):
        (WebCore::fillRepeatToCSSValue):
        (WebCore::fillSizeToCSSValue):
        (WebCore::counterToCSSValue):
        (WebCore::fontVariantFromStyle):
        (WebCore::fontSynthesisFromStyle):
        (WebCore::shapePropertyValue):
        (WebCore::paintOrder):
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand):
        * css/CSSFontFaceSet.cpp:
        (WebCore::CSSFontFaceSet::matchingFacesExcludingPreinstalledFonts):
        * css/CSSGradientValue.cpp:
        (WebCore::CSSGradientValue::image):
        * css/CSSStyleSheet.cpp:
        (WebCore::CSSStyleSheet::rules):
        * css/DOMMatrixReadOnly.cpp:
        (WebCore::DOMMatrixReadOnly::parseStringIntoAbstractMatrix):
        * css/FontFace.cpp:
        (WebCore::FontFace::create):
        * css/FontVariantBuilder.cpp:
        (WebCore::computeFontVariant):
        * css/PropertySetCSSStyleDeclaration.cpp:
        (WebCore::PropertySetCSSStyleDeclaration::removeProperty):
        * css/SVGCSSComputedStyleDeclaration.cpp:
        (WebCore::strokeDashArrayToCSSValueList):
        (WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor const):
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertReflection):
        * css/WebKitCSSMatrix.cpp:
        (WebCore::WebKitCSSMatrix::create):
        (WebCore::WebKitCSSMatrix::multiply const):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeFontVariationSettings):
        (WebCore::consumeBasicShapePath):
        (WebCore::consumeImplicitGridAutoFlow):
        * cssjit/StackAllocator.h:
        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::createDocument):
        * dom/Document.cpp:
        (WebCore::Document::cloneNodeInternal):
        * dom/DocumentFragment.cpp:
        (WebCore::DocumentFragment::cloneNodeInternal):
        * dom/Element.cpp:
        (WebCore::Element::setAttributeNode):
        (WebCore::Element::setAttributeNodeNS):
        (WebCore::Element::removeAttributeNode):
        (WebCore::Element::parseAttributeName):
        (WebCore::Element::animate):
        * dom/MessagePort.cpp:
        (WebCore::MessagePort::disentanglePorts):
        * dom/NodeIterator.cpp:
        (WebCore::NodeIterator::nextNode):
        (WebCore::NodeIterator::previousNode):
        * dom/Range.cpp:
        (WebCore::Range::processContents):
        (WebCore::processContentsBetweenOffsets):
        (WebCore::processAncestorsAndTheirSiblings):
        * dom/RangeBoundaryPoint.h:
        * dom/ScriptDisallowedScope.h:
        (WebCore::ScriptDisallowedScope::operator=):
        * dom/Text.cpp:
        (WebCore::Text::splitText):
        * dom/TextDecoder.cpp:
        (WebCore::TextDecoder::create):
        (WebCore::TextDecoder::decode):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::insertBlockPlaceholder):
        (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
        * editing/Editing.cpp:
        (WebCore::createTabSpanElement):
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::styleAtSelectionStart):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::rangeFromLocationAndLength):
        * editing/VisibleSelection.cpp:
        (WebCore::makeSearchRange):
        * editing/markup.cpp:
        (WebCore::styleFromMatchedRulesAndInlineDecl):
        (WebCore::createFragmentForInnerOuterHTML):
        (WebCore::createContextualFragment):
        * html/FormController.cpp:
        (WebCore::deserializeFormControlState):
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::captureStream):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
        * html/HTMLOptionElement.cpp:
        (WebCore::HTMLOptionElement::createForJSConstructor):
        * html/HTMLPlugInImageElement.cpp:
        (WebCore::HTMLPlugInImageElement::createElementRenderer):
        * html/HTMLTableElement.cpp:
        (WebCore::HTMLTableElement::createSharedCellStyle):
        * html/HTMLTableRowElement.cpp:
        (WebCore::HTMLTableRowElement::insertCell):
        * html/ImageData.cpp:
        (WebCore::ImageData::create):
        * html/OffscreenCanvas.cpp:
        (WebCore::OffscreenCanvas::transferToImageBitmap):
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::CanvasRenderingContext2DBase::createLinearGradient):
        (WebCore::CanvasRenderingContext2DBase::createRadialGradient):
        * html/canvas/OESVertexArrayObject.cpp:
        (WebCore::OESVertexArrayObject::createVertexArrayOES):
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::createBuffer):
        (WebCore::WebGLRenderingContextBase::createFramebuffer):
        (WebCore::WebGLRenderingContextBase::createTexture):
        (WebCore::WebGLRenderingContextBase::createProgram):
        (WebCore::WebGLRenderingContextBase::createRenderbuffer):
        (WebCore::WebGLRenderingContextBase::createShader):
        (WebCore::WebGLRenderingContextBase::getContextAttributes):
        (WebCore::WebGLRenderingContextBase::getUniform):
        * html/shadow/TextControlInnerElements.cpp:
        (WebCore::TextControlInnerContainer::resolveCustomStyle):
        (WebCore::TextControlPlaceholderElement::resolveCustomStyle):
        * html/track/BufferedLineReader.cpp:
        (WebCore::BufferedLineReader::nextLine):
        * html/track/VTTCue.cpp:
        (WebCore::VTTCue::getCueAsHTML):
        (WebCore::VTTCue::createCueRenderingTree):
        * html/track/WebVTTElement.cpp:
        (WebCore::WebVTTElement::cloneElementWithoutAttributesAndChildren):
        * inspector/InspectorStyleSheet.cpp:
        (WebCore::asCSSRuleList):
        (WebCore::InspectorStyle::buildObjectForStyle const):
        (WebCore::InspectorStyleSheet::buildObjectForStyleSheet):
        (WebCore::InspectorStyleSheet::buildObjectForRule):
        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
        (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
        * loader/FetchOptions.h:
        (WebCore::FetchOptions::decode):
        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResourceLoader::requestResource):
        * loader/appcache/ApplicationCacheStorage.cpp:
        (WebCore::ApplicationCacheStorage::loadCache):
        (WebCore::ApplicationCacheStorage::manifestURLs):
        * loader/archive/mhtml/MHTMLParser.cpp:
        (WebCore::MHTMLParser::parseArchiveWithHeader):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::getMatchedCSSRules const):
        * page/DragController.cpp:
        (WebCore::documentFragmentFromDragData):
        * page/EventSource.cpp:
        (WebCore::EventSource::create):
        * page/PerformanceUserTiming.cpp:
        (WebCore::UserTiming::mark):
        (WebCore::UserTiming::measure):
        * page/SecurityOrigin.h:
        (WebCore::SecurityOrigin::decode):
        * page/scrolling/ScrollingConstraints.h:
        (WebCore::FixedPositionViewportConstraints::FixedPositionViewportConstraints):
        (WebCore::LayoutConstraints::LayoutConstraints): Deleted.
        * platform/Length.h:
        (WebCore::Length::Length):
        * platform/animation/TimingFunction.cpp:
        (WebCore::TimingFunction::createFromCSSText):
        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
        (WebCore::parseLicenseFormat):
        * platform/graphics/FloatPoint3D.h:
        * platform/graphics/Font.cpp:
        (WebCore::createAndFillGlyphPage):
        * platform/graphics/GLContext.cpp:
        (WebCore::GLContext::createContextForWindow):
        (WebCore::GLContext::createSharingContext):
        * platform/graphics/GraphicsContext.cpp:
        * platform/graphics/HEVCUtilities.cpp:
        (WebCore::parseHEVCCodecParameters):
        * platform/graphics/gtk/ImageGtk.cpp:
        (WebCore::loadImageFromGResource):
        (WebCore::loadMissingImageIconFromTheme):
        * platform/graphics/wayland/PlatformDisplayWayland.cpp:
        (WebCore::PlatformDisplayWayland::create):
        * platform/mediastream/MediaConstraints.h:
        (WebCore::MediaTrackConstraintSetMap::decode):
        * platform/mediastream/MediaStreamRequest.h:
        (WebCore::MediaStreamRequest::decode):
        * platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp:
        (WebCore::GStreamerSampleFromLibWebRTCVideoFrame):
        * platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeIncomingAudioSource::create):
        * platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:
        (WebCore::RealtimeIncomingVideoSource::create):
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID):
        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
        (WebCore::MockMediaSample::createNonDisplayingCopy const):
        * platform/network/BlobRegistryImpl.cpp:
        (WebCore::BlobRegistryImpl::createResourceHandle):
        * platform/network/CookieRequestHeaderFieldProxy.h:
        (WebCore::CookieRequestHeaderFieldProxy::decode):
        * platform/network/FormData.h:
        (WebCore::FormData::decode):
        * platform/network/MIMEHeader.cpp:
        (WebCore::MIMEHeader::parseHeader):
        * platform/network/ResourceHandle.cpp:
        (WebCore::ResourceHandle::create):
        * platform/network/soup/DNSResolveQueueSoup.cpp:
        (WebCore::DNSResolveQueueSoup::takeCompletionAndCancelHandlers):
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::createFor):
        * rendering/shapes/Shape.cpp:
        (WebCore::Shape::createRasterShape):
        (WebCore::Shape::createBoxShape):
        * rendering/style/BasicShapes.cpp:
        (WebCore::BasicShapeCircle::blend const):
        (WebCore::BasicShapeEllipse::blend const):
        (WebCore::BasicShapePolygon::blend const):
        (WebCore::BasicShapePath::blend const):
        (WebCore::BasicShapeInset::blend const):
        * rendering/style/BasicShapes.h:
        (WebCore::BasicShapeRadius::BasicShapeRadius):
        * rendering/style/ContentData.cpp:
        (WebCore::ImageContentData::createContentRenderer const):
        (WebCore::TextContentData::createContentRenderer const):
        (WebCore::QuoteContentData::createContentRenderer const):
        * rendering/style/ContentData.h:
        * rendering/svg/RenderSVGInline.cpp:
        (WebCore::RenderSVGInline::createInlineFlowBox):
        * rendering/svg/RenderSVGInlineText.cpp:
        (WebCore::RenderSVGInlineText::createTextBox):
        * rendering/svg/RenderSVGText.cpp:
        (WebCore::RenderSVGText::createRootInlineBox):
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::build):
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::build):
        * svg/SVGFEComponentTransferElement.cpp:
        (WebCore::SVGFEComponentTransferElement::build):
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::build):
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::build):
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::build):
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::build):
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::build):
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::build):
        * svg/SVGFEMergeElement.cpp:
        (WebCore::SVGFEMergeElement::build):
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::build):
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::build):
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::build):
        * svg/SVGFETileElement.cpp:
        (WebCore::SVGFETileElement::build):
        * svg/SVGTransformList.h:
        * svg/properties/SVGList.h:
        (WebCore::SVGList::initialize):
        (WebCore::SVGList::insertItemBefore):
        (WebCore::SVGList::replaceItem):
        (WebCore::SVGList::removeItem):
        (WebCore::SVGList::appendItem):
        * svg/properties/SVGListProperty.h:
        (WebCore::SVGListProperty::initializeValuesAndWrappers):
        (WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers):
        (WebCore::SVGListProperty::replaceItemValuesAndWrappers):
        (WebCore::SVGListProperty::removeItemValues):
        (WebCore::SVGListProperty::appendItemValuesAndWrappers):
        * svg/properties/SVGPrimitiveList.h:
        * testing/Internals.cpp:
        (WebCore::Internals::elementRenderTreeAsText):
        (WebCore::parseFindOptions):
        * workers/AbstractWorker.cpp:
        (WebCore::AbstractWorker::resolveURL):
        * workers/Worker.cpp:
        (WebCore::Worker::create):
        * workers/service/ServiceWorkerJobData.h:
        (WebCore::ServiceWorkerJobData::decode):
        * xml/DOMParser.cpp:
        (WebCore::DOMParser::parseFromString):
        * xml/XPathExpression.cpp:
        (WebCore::XPathExpression::evaluate):

2019-03-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Provide $event in the console when paused on an event listener
        https://bugs.webkit.org/show_bug.cgi?id=188672

        Reviewed by Timothy Hatcher.

        Implement similiar methods/logic as to the way that `$exception` is set.

        * inspector/CommandLineAPIModuleSource.js:
        (CommandLineAPI):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::willHandleEvent):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::willHandleEventImpl):
        (WebCore::InspectorInstrumentation::didHandleEventImpl):

        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        * inspector/agents/InspectorDOMDebuggerAgent.h:
        (WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
        (WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
        (WebCore::InspectorDOMDebuggerAgent::didHandleEvent): Added.

2019-03-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: ScriptProfiler: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195591
        <rdar://problem/48791756>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):

2019-03-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOMStorage: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195588
        <rdar://problem/48791878>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        Make functions used by `CommandLineAPIHost` static so that an `InspectorDOMStorageAgent`
        doesn't need to be created to call them.

        * inspector/agents/InspectorDOMStorageAgent.h:
        * inspector/agents/InspectorDOMStorageAgent.cpp:
        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
        (WebCore::InspectorDOMStorageAgent::enable):
        (WebCore::InspectorDOMStorageAgent::disable):
        (WebCore::InspectorDOMStorageAgent::storageId):
        (WebCore::InspectorDOMStorageAgent::didDispatchDOMStorageEvent):
        (WebCore::InspectorDOMStorageAgent::findStorageArea):
        (WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent): Deleted.

        * inspector/CommandLineAPIHost.h:
        (WebCore::CommandLineAPIHost::init):
        * inspector/CommandLineAPIHost.cpp:
        (WebCore::CommandLineAPIHost::disconnect):
        (WebCore::CommandLineAPIHost::storageId):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):
        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):

2019-03-19  Youenn Fablet  <youenn@apple.com>

        REGRESSION: Layout Test http/tests/security/cross-origin-indexeddb.html is crashing
        https://bugs.webkit.org/show_bug.cgi?id=195779

        Reviewed by Chris Dumez.

        When requesting space, we might delay execution of the task.
        In such a case, a task to close the database might be done before the task continues.
        Check that the database is not closing to continue the task.
        This should ensure that the cross thread queue is not already killed.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::requestSpace):

2019-03-19  Zalan Bujtas  <zalan@apple.com>

        RenderElement::startAnimation should take const Animation&
        https://bugs.webkit.org/show_bug.cgi?id=195929

        Reviewed by Daniel Bates.

        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::startAnimation):
        (WebCore::KeyframeAnimation::endAnimation):
        * rendering/RenderElement.h:
        (WebCore::RenderElement::startAnimation):
        (WebCore::RenderElement::animationFinished):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::startAnimation):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerModelObject.cpp:
        (WebCore::RenderLayerModelObject::startAnimation):
        (WebCore::RenderLayerModelObject::animationFinished):
        * rendering/RenderLayerModelObject.h:

2019-03-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Heap: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195590
        <rdar://problem/48791750>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/agents/page/PageHeapAgent.cpp:
        (WebCore::PageHeapAgent::disable):
        * inspector/agents/WebHeapAgent.h:
        * inspector/agents/WebHeapAgent.cpp:
        (WebCore::WebHeapAgent::WebHeapAgent):
        (WebCore::WebHeapAgent::enable): Added.
        (WebCore::WebHeapAgent::disable):

        * inspector/agents/page/PageConsoleAgent.h:
        * inspector/agents/page/PageConsoleAgent.cpp:
        (WebCore::PageConsoleAgent::PageConsoleAgent):
        * inspector/agents/WebConsoleAgent.h:
        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::WebConsoleAgent):
        * inspector/agents/worker/WorkerConsoleAgent.h:
        * inspector/agents/worker/WorkerConsoleAgent.cpp:
        (WebCore::WorkerConsoleAgent::WorkerConsoleAgent):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):
        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):
        (WebCore::WorkerInspectorController::createLazyAgents):

2019-03-19  Simon Fraser  <simon.fraser@apple.com>

        Fix GraphicsLayer-related crashes after r243129
        https://bugs.webkit.org/show_bug.cgi?id=195953

        Reviewed by Dean Jackson.

        Extending the lifetime of GraphicsLayers by referencing them in the scrolling tree (r243129)
        revealed a bug where RenderLayerCompositor was failing to clear itself as the client of
        GraphicsLayers that it owned, causing crashes.

        Fix by using the GraphicsLayer::unparentAndClear() helper to clean up all the GraphicsLayers
        owned by RenderLayerCompositor.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::~RenderLayerCompositor):
        * rendering/RenderLayerCompositor.h:

2019-03-19  Simon Fraser  <simon.fraser@apple.com>

        [Async overflow] Handle positioned nodes in a few more places
        https://bugs.webkit.org/show_bug.cgi?id=195946

        Reviewed by Zalan Bujtas.

        When I added support for positioned nodes in the scrolling tree I missed handling
        the ScrollCoordinationRole::Positioning in a few places.

        I wasn't able to come up with a test for this; when a positioned node toggles between
        tiled and non-tiled, hitting the code in didChangePlatformLayerForLayer(), we already
        update the node with the new layer.

        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeRecursive): Logging.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::operator<<): Logging.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer): Update the node's layer.
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer): Handle detaching of this node type.

2019-03-19  Alex Christensen  <achristensen@webkit.org>

        Make WTFLogChannelState and WTFLogLevel enum classes
        https://bugs.webkit.org/show_bug.cgi?id=195904

        Reviewed by Eric Carlson.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::removeSamplesFromTrackBuffer):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
        (WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
        * dom/Document.cpp:
        (WebCore::messageLevelFromWTFLogLevel):
        * html/FTPDirectoryDocument.cpp:
        (WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::seekTask):
        (WebCore::HTMLMediaElement::selectNextSourceChild):
        (WebCore::HTMLMediaElement::sourceWasAdded):
        (WebCore::HTMLMediaElement::sourceWasRemoved):
        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::getLoggingChannels):
        (WebCore::channelConfigurationForString):
        * platform/Logging.cpp:
        (WebCore::isLogChannelEnabled):
        (WebCore::setLogChannelToAccumulate):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::initializePeerConnectionFactoryAndThreads):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::compositingLogEnabled):

2019-03-19  Philippe Normand  <pnormand@igalia.com>

        REGRESSION(r243058): [GStreamer] 3 tests now timing out
        https://bugs.webkit.org/show_bug.cgi?id=195888

        Reviewed by Xabier Rodriguez-Calvar.

        A breaking change was introduced in r243058. Now on-disk-buffering
        is disabled when the reported Content-Length is 0 or not present
        at all. This broke the progress event logic in didLoadProgress()
        because leading to progress events not being fired as expected.

        The proposed solution is to make webkitwebsrc notify the player
        every time the network process receives data from the network. So
        the player can now easily determine if the load progressed by
        checking the reported statistics.

        No new tests, existing media tests cover this change.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        (WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (CachedResourceStreamingClient::dataReceived):

2019-03-19  Alicia Boya García  <aboya@igalia.com>

        [MSE] Use tolerance in eraseBeginTime
        https://bugs.webkit.org/show_bug.cgi?id=195911

        Reviewed by Jer Noble.

        https://bugs.webkit.org/show_bug.cgi?id=190085 introduced tolerance
        when erasing frames during the Coded Frame Processing algorithm in
        such a way that, in files with less than perfect timestamps, a frame
        existing before after the current append is not erased accidentally
        due to small overlaps.

        This patch takes care of the opposite problem: we don't want an old
        frame being accidentally NOT erased by a new one with the same
        timestamps just because these overlaps make
        highestPresentationTimestamp very slightly higher than the frame PTS.

        This bug in practice causes some frames of the old quality to not be
        erased when the new quality is appended, resulting in some seemingly
        still frames from a different quality appearing at some points during
        WebM video in presence of quality changes.

        This bug can be reduced to this minimal test case that illustrates the
        timestamp imprecission of a typical WebM file:

        function sampleRun(generation) {
            return concatenateSamples([
                makeASample(     0,      0, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation),
                makeASample(167000, 167000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
                makeASample(333000, 333000, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation), // overlaps previous frame
                makeASample(500000, 500000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
            ]);
        }

        After appending this twice it would be expected that the second
        generation takes fully over the first, since the timestamps are
        completely the same. Due to the bug, sync frames with an overlap, like
        the third one in that list, actually persist from the first
        generation, due to lack of tolerance when comparing the start of a new
        frame with highestPresentationTimestamp.

        This patch introduces the tolerance in that case too to fix this
        problem.

        Test: media/media-source/media-source-append-twice-overlapping-sync-frame.html

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed GTK build fix
        https://bugs.webkit.org/show_bug.cgi?id=195863
        <rdar://problem/49006248>

        Patch by Diego Pino.

        * svg/SVGTests.h:

2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r243132.

        Broke GTK build

        Reverted changeset:

        "Make WTFLogChannelState and WTFLogLevel enum classes"
        https://bugs.webkit.org/show_bug.cgi?id=195904
        https://trac.webkit.org/changeset/243132

2019-03-19  Antti Koivisto  <antti@apple.com>

        Layer with no backing store should still hit-test over a scroller
        https://bugs.webkit.org/show_bug.cgi?id=195378
        <rdar://problem/48652078>

        Reviewed by Simon Fraser.

        Tests: fast/scrolling/ios/overflow-scroll-overlap-3.html
               fast/scrolling/ios/overflow-scroll-overlap-4.html

        Move collecting event region from paint to compositing update time.
        This solves a number of problems including regions for non-painting layers.

        * platform/graphics/GraphicsLayer.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):

        Use the existing visibleToHitTesting() helper.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayerContents):

        Use flag for event region collecting, don't paint content.

        (WebCore::RenderLayer::paintList):

        We can bail out immediately if there is no overflow.

        (WebCore::RenderLayer::paintForegroundForFragments):
        (WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
        (WebCore::RenderLayer::collectEventRegionForFragments):

        Move to a separate function.

        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):

        Update event region on backing configuration update. This is called after anything interesting changes on a sublayer.

        (WebCore::RenderLayerBacking::updateEventRegion):
        (WebCore::RenderLayerBacking::paintIntoLayer):
        * rendering/RenderLayerBacking.h:

2019-03-18  Alex Christensen  <achristensen@webkit.org>

        Make WTFLogChannelState and WTFLogLevel enum classes
        https://bugs.webkit.org/show_bug.cgi?id=195904

        Reviewed by Eric Carlson.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::removeSamplesFromTrackBuffer):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
        (WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
        * dom/Document.cpp:
        (WebCore::messageLevelFromWTFLogLevel):
        * html/FTPDirectoryDocument.cpp:
        (WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::seekTask):
        (WebCore::HTMLMediaElement::selectNextSourceChild):
        (WebCore::HTMLMediaElement::sourceWasAdded):
        (WebCore::HTMLMediaElement::sourceWasRemoved):
        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::getLoggingChannels):
        (WebCore::channelConfigurationForString):
        * platform/Logging.cpp:
        (WebCore::isLogChannelEnabled):
        (WebCore::setLogChannelToAccumulate):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::initializePeerConnectionFactoryAndThreads):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::compositingLogEnabled):

2019-03-18  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects for SVGStringList
        https://bugs.webkit.org/show_bug.cgi?id=195863

        Reviewed by Simon Fraser.

        SVGStringList is not animated list. So we need to introduce two new classes:

        -- SVGProperty: This will be the base of all the non-animated properties.
           Like the SVGAnimatedProperty, SVGProperty will be registered with the
           attribute name in SVGPropertyRegistery. It will also commit changes
           to the reflecting attribute. And it will provide a synchronize string
           for lazy attribute update.

        -- SVGList: It will be the base of all the list properties. It can hold
           primitive types or SVG types. In this patch primitive types will be 
           supported only. To do that, a superclass called SVGPrimitiveList is
           added. Its items are of primitive type such as String type.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
        (WebCore::SVGElement::commitPropertyChange):
        * svg/SVGElement.h:
        * svg/SVGStringList.h:
        * svg/SVGStringListValues.cpp: Removed.
        * svg/SVGStringListValues.h: Removed.
        * svg/SVGTests.cpp:
        (WebCore::SVGTests::SVGTests):
        (WebCore::SVGTests::isKnownAttribute):
        (WebCore::SVGTests::isValid const):
        (WebCore::SVGTests::parseAttribute):
        (WebCore::SVGTests::registerAttributes): Deleted.
        (WebCore::SVGTests::requiredFeatures): Deleted.
        (WebCore::SVGTests::requiredExtensions): Deleted.
        (WebCore::SVGTests::systemLanguage): Deleted.
        * svg/SVGTests.h:
        (WebCore::SVGTests::requiredFeatures):
        (WebCore::SVGTests::requiredExtensions):
        (WebCore::SVGTests::systemLanguage):
        (): Deleted.
        * svg/SVGTests.idl:
        * svg/SVGTextPositioningElement.h:
        * svg/SVGViewElement.cpp:
        (WebCore::SVGViewElement::SVGViewElement):
        (WebCore::SVGViewElement::parseAttribute):
        (WebCore::SVGViewElement::viewTarget): Deleted.
        * svg/SVGViewElement.h:
        * svg/properties/SVGAnimatedListPropertyTearOff.h:
        * svg/properties/SVGAnimatedPrimitiveProperty.h:
        (WebCore::SVGAnimatedPrimitiveProperty::setBaseVal):
        * svg/properties/SVGAnimatedProperty.cpp:
        (WebCore::SVGAnimatedProperty::commitPropertyChange):
        * svg/properties/SVGAnimatedProperty.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGList.h: Added.
        (WebCore::SVGList::numberOfItems const):
        (WebCore::SVGList::clear):
        (WebCore::SVGList::getItem):
        (WebCore::SVGList::initialize):
        (WebCore::SVGList::insertItemBefore):
        (WebCore::SVGList::replaceItem):
        (WebCore::SVGList::removeItem):
        (WebCore::SVGList::appendItem):
        (WebCore::SVGList::items):
        (WebCore::SVGList::items const):
        (WebCore::SVGList::size const):
        (WebCore::SVGList::isEmpty const):
        (WebCore::SVGList::clearItems):
        (WebCore::SVGList::canAlterList const):
        (WebCore::SVGList::canGetItem):
        (WebCore::SVGList::canReplaceItem):
        (WebCore::SVGList::canRemoveItem):
        (WebCore::SVGList::detachItems):
        * svg/properties/SVGMemberAccessor.h:
        (WebCore::SVGMemberAccessor::matches const):
        * svg/properties/SVGPrimitiveList.h: Added.
        * svg/properties/SVGProperty.h:
        (WebCore::SVGProperty::isAttached const):
        (WebCore::SVGProperty::attach):
        (WebCore::SVGProperty::detach):
        (WebCore::SVGProperty::contextElement const):
        (WebCore::SVGProperty::commitChange):
        (WebCore::SVGProperty::access const):
        (WebCore::SVGProperty::isReadOnly const):
        (WebCore::SVGProperty::isDirty const):
        (WebCore::SVGProperty::setDirty):
        (WebCore::SVGProperty::synchronize):
        (WebCore::SVGProperty::valueAsString const):
        (WebCore::SVGProperty::SVGProperty):
        * svg/properties/SVGPropertyAccessor.h: Added.
        * svg/properties/SVGPropertyAccessorImpl.h: Added.
        * svg/properties/SVGPropertyOwner.h:
        (WebCore::SVGPropertyOwner::commitPropertyChange):
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        * svg/properties/SVGPropertyRegistry.h:
        * svg/properties/SVGStaticListPropertyTearOff.h: Removed.

2019-03-18  Simon Fraser  <simon.fraser@apple.com>

        Unreviewed followup to r243126.

        LayerRepresentation operator=() needs to copy m_graphicsLayer now that it doesn't
        share a pointer with m_typelessPlatformLayer. Also make the LayerRepresentation construction
        from a GraphiscLayer* explicit.

        * page/scrolling/ScrollingStateNode.h:
        (WebCore::LayerRepresentation::operator=):
        (WebCore::LayerRepresentation::toRepresentation const):

2019-03-18  Simon Fraser  <simon.fraser@apple.com>

        Scrolling state nodes should hold references to GraphicsLayers
        https://bugs.webkit.org/show_bug.cgi?id=195844
        <rdar://problem/48949634>

        Reviewed by Tim Horton.

        GraphicsLayers are refcounted, and the scrolling tree keeps GraphicsLayer pointers,
        so for safely the scrolling tree should store RefPtr<GraphicsLayer> instead.

        I removed the union (since it would be weird with a RefPtr and raw pointer). This code
        should probably use WTF::Variant<> in future.

        * page/scrolling/ScrollingStateNode.h:
        (WebCore::LayerRepresentation::LayerRepresentation):
        (WebCore::LayerRepresentation::operator GraphicsLayer* const):

2019-03-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243092 and r243096.
        https://bugs.webkit.org/show_bug.cgi?id=195926

        Caused assertions in tests (Requested by smfr on #webkit).

        Reverted changesets:

        "Layer with no backing store should still hit-test over a
        scroller"
        https://bugs.webkit.org/show_bug.cgi?id=195378
        https://trac.webkit.org/changeset/243092

        "Try to fix Windows build."
        https://trac.webkit.org/changeset/243096

2019-03-18  Megan Gardner  <megan_gardner@apple.com>

        Smart Insert for paragraphs.
        https://bugs.webkit.org/show_bug.cgi?id=194880

        Reviewed by Ryosuke Niwa.

        Add additional newlines to maintain spacing around paragraphs.

        Tests: editing/pasteboard/smart-paste-paragraph-001.html
               editing/pasteboard/smart-paste-paragraph-002.html
               editing/pasteboard/smart-paste-paragraph-003.html
               editing/pasteboard/smart-paste-paragraph-004.html

        * dom/Document.cpp:
        (WebCore::Document::editingBehavior const):
        * dom/Document.h:

        Expose editing behaviour through document so that is can be access from the selection commands
        and allow the editing behaviour to be used.

        * editing/CompositeEditCommand.h:
        * editing/EditingBehavior.h:
        (WebCore::EditingBehavior::shouldSmartInsertDeleteParagraphs const):

        Only have editing insert paragraphs on iOS and in editing elements that support multiple lines.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        (WebCore::ReplaceSelectionCommand::shouldPerformSmartParagraphReplace const):
        (WebCore::ReplaceSelectionCommand::addNewLinesForSmartReplace):
        * editing/ReplaceSelectionCommand.h:

        Add addititional newlines when pasting full paragraphs to maintian two newlines between paragraphs
        if that is what the original document had. If there are not multiple lines between paragraphs, do not
        add additional new lines.

2019-03-18  Ryosuke Niwa  <rniwa@webkit.org>

        Reduce the size of Node::deref by eliminating an explicit parentNode check
        https://bugs.webkit.org/show_bug.cgi?id=195776

        Reviewed by Geoffrey Garen.

        This patch eliminates the nullity check of m_parentNode in Node::deref as well as the store to
        m_refCount in the case of invoking Node::removedLastRef() as done for RefCounted in r30042.
        Together, this patch shrinks WebCore's size by 46KB or ~0.7%.

        To do this, we take we take a similar approach as WTF::String by using the lowest bit of m_refCount
        to indicate whether a node has a parent or not. Regular ref-counting is done on the upper 31 bits.
        Node::setParentNode updates this flag, and Node::deref() would only `delete this` if m_refCount
        is identically equal to 0.

        For a Document, we set m_refCounted to 0 before in the case of non-zero m_referencingNodeCount
        since decrementReferencingNodeCount needs to be able to tell if there is an outstanding Ref/RefPtr
        or not when m_referencingNodeCount becomes 0.

        No new tests since there should be no behavioral change.

        * dom/Document.cpp:
        (WebCore::Document::removedLastRef):
        * dom/Document.h:
        (WebCore::Document::decrementReferencingNodeCount):
        * dom/Node.cpp:
        (WebCore::Node::Node): Moved the initialization of m_refCount to the member variable declaration.
        (WebCore::Node::~Node):
        (WebCore::Node::removedLastRef):
        * dom/Node.h:
        (WebCore::Node): Changed the type of m_refCount from signed int to uint32_t. It was changed from
        unsigned int to signed int back in r11492 but I don't think the signedness is needed.
        (WebCore::Node::ref): Increment the ref count by 2 (upper 31-bit).
        (WebCore::Node::deref): Implemented the optimization. This is what shrinks the WebCore binary size.
        (WebCore::Node::hasOneRef const):
        (WebCore::Node::refCount const): Ignore the lowest bit. Without this fix, the optimization in
        replaceChildrenWithFragment to avoid replacing the text node is disabled whenever there is a parent.
        (WebCore::Node::setParentNode): Sets the lowest bit to 1 if the node has a parent and 0 otherwise.

2019-03-18  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects for SVGAnimatedBoolean
        https://bugs.webkit.org/show_bug.cgi?id=195862

        Reviewed by Simon Fraser.

        -- SVGAnimatedBoolean will be defined as SVGAnimatedPrimitiveProperty<bool>.
        -- SVGAnimatedBooleanAccessor is added to access a member of this type.
        -- A function registerProperty() is added to SVGPropertyOwnerRegistry
           to register this type.
        -- SVGAnimatedBooleanAnimator is added to animate a member of this type.
        -- SVGAnimationBooleanFunction is added to handle the progress of this
           new type over a period of time.

        SVGAnimationDiscreteFunction is the base class of SVGAnimationBooleanFunction.
        It will be the base class of all the discrete animation function types:
        string, bool, enum and PreserveAspectRatio types.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAnimationElement.h:
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGClipPathElement.h:
        * svg/SVGCursorElement.h:
        * svg/SVGDefsElement.h:
        * svg/SVGExternalResourcesRequired.cpp:
        (WebCore::SVGExternalResourcesRequired::SVGExternalResourcesRequired):
        (WebCore::SVGExternalResourcesRequired::parseAttribute):
        (WebCore::SVGExternalResourcesRequired::registerAttributes): Deleted.
        * svg/SVGExternalResourcesRequired.h:
        (WebCore::SVGExternalResourcesRequired::externalResourcesRequired const):
        (WebCore::SVGExternalResourcesRequired::externalResourcesRequiredAnimated):
        (WebCore::SVGExternalResourcesRequired::setExternalResourcesRequired): Deleted.
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEImageElement.h:
        * svg/SVGFontElement.h:
        * svg/SVGForeignObjectElement.h:
        * svg/SVGGElement.h:
        * svg/SVGGradientElement.h:
        * svg/SVGMPathElement.h:
        * svg/SVGMarkerElement.h:
        * svg/SVGMaskElement.h:
        * svg/SVGPathElement.h:
        * svg/SVGPatternElement.h:
        * svg/SVGRectElement.h:
        * svg/SVGSVGElement.h:
        * svg/SVGScriptElement.h:
        * svg/SVGSwitchElement.h:
        * svg/SVGSymbolElement.h:
        * svg/SVGTextContentElement.h:
        * svg/SVGUseElement.h:
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h:
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
        * svg/properties/SVGAnimatedPropertyImpl.h:
        * svg/properties/SVGAnimationDiscreteFunction.h: Added.
        (WebCore::SVGAnimationDiscreteFunction::SVGAnimationDiscreteFunction):
        (WebCore::SVGAnimationDiscreteFunction::progress):
        * svg/properties/SVGAnimationDiscreteFunctionImpl.h: Added.
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGPropertyOwnerRegistry.h:
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):

2019-03-18  Simon Fraser  <simon.fraser@apple.com>

        Crash when reloading test with async overflow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=195629
        <rdar://problem/48814045>

        Reviewed by Antoine Quint.

        RenderLayerCompositor::removeFromScrollCoordinatedLayers needs to pass the Positioning
        bit to make sure we remove RenderLayers added m_scrollingNodeToLayerMap for Positioning
        scrolling nodes.

        Fixes crashes seen in compositing/clipping/border-radius-async-overflow-non-stacking.html
        and scrollingcoordinator/scrolling-tree/remove-coordinated-frame.html.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::~RenderLayerBacking):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):

2019-03-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timeline: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195865
        <rdar://problem/48965403>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/agents/InspectorTimelineAgent.h:
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
        (WebCore::InspectorTimelineAgent::toggleScriptProfilerInstrument):
        (WebCore::InspectorTimelineAgent::toggleHeapInstrument):
        (WebCore::InspectorTimelineAgent::setFrameIdentifier):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::startProfiling):
        (WebCore::InspectorInstrumentation::stopProfiling):
        (WebCore::InspectorInstrumentation::didRequestAnimationFrame):
        (WebCore::InspectorInstrumentation::didCancelAnimationFrame):

        * inspector/InstrumentingAgents.h:
        (WebCore::InstrumentingAgents::inspectorScriptProfilerAgent const): Added.
        (WebCore::InstrumentingAgents::setInspectorScriptProfilerAgent): Added.
        * inspector/InstrumentingAgents.cpp:
        (WebCore::InstrumentingAgents::reset):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):

2019-03-18  Darin Adler  <darin@apple.com>

        Cut down on use of StringBuffer, possibly leading toward removing it entirely
        https://bugs.webkit.org/show_bug.cgi?id=195870

        Reviewed by Daniel Bates.

        * dom/Document.cpp:
        (WebCore::canonicalizedTitle): Fixed all the problems mentioned in "FIXME".
        Made this a single function rather than a function template. Switch to
        StringBuilder instead of StringBuffer. Return the original string if the
        canonicalize operation doesn't change anything.
        (WebCore::Document::updateTitle): Updated for the change above.

        * platform/Length.cpp:
        (WebCore::newCoordsArray): Use createUninitialized instead of StringBuffer.
        Also got rid of unneeded use of upconvertedCharacters on a temporary string
        that we explicitly created with 16-bit characters. The performance of this
        function could be considerably simplified by not copying the original string
        at all, but didn't do that at this time.

        * platform/text/TextCodecUTF16.cpp:
        (WebCore::TextCodecUTF16::decode): Use createUninitialized instead of
        StringBuffer. Also renamed numChars to numCodeUnits to both switch to complete
        words and to be slightly more accurate.

        * rendering/RenderText.cpp:
        (WebCore::convertNoBreakSpace): Added.
        (WebCore::capitalize): Use Vector instead of StringBuffer. Simplify code by
        using convertNoBreakSpace function. Removed code that was using StringImpl
        directly for a tiny speed boost; if we want to optimize the performance of
        this function we would need to do more than that. Return the original string
        if it happens to already be capitalized.

2019-03-18  Timothy Hatcher  <timothy@apple.com>

        WKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
        https://bugs.webkit.org/show_bug.cgi?id=195916

        Reviewed by Tim Horton.

        * WebCore.xcodeproj/project.pbxproj: Make ColorIOS.h a private header.
        * platform/ios/ColorIOS.h: Export colorFromUIColor.

2019-03-18  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Define the type of SVGPropertyOwnerRegistry for all SVG elements
        https://bugs.webkit.org/show_bug.cgi?id=195859

        Reviewed by Simon Fraser.

        SVGPropertyOwnerRegistry will eventually replace SVGAttributeOwnerProxyImpl.

        * svg/SVGAElement.h:
        * svg/SVGAltGlyphElement.h:
        * svg/SVGAnimationElement.h:
        * svg/SVGCircleElement.h:
        * svg/SVGClipPathElement.h:
        * svg/SVGComponentTransferFunctionElement.h:
        (WebCore::SVGComponentTransferFunctionElement::attributeRegistry):
        (WebCore::SVGComponentTransferFunctionElement::isKnownAttribute):
        * svg/SVGCursorElement.h:
        * svg/SVGDefsElement.h:
        * svg/SVGElement.h:
        * svg/SVGEllipseElement.h:
        * svg/SVGExternalResourcesRequired.h:
        (WebCore::SVGExternalResourcesRequired::isKnownAttribute):
        * svg/SVGFEBlendElement.h:
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEComponentTransferElement.h:
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEImageElement.h:
        * svg/SVGFELightElement.h:
        (WebCore::SVGFELightElement::attributeRegistry):
        (WebCore::SVGFELightElement::isKnownAttribute):
        * svg/SVGFEMergeNodeElement.h:
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETileElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::svgAttributeChanged):
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        (WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute):
        * svg/SVGFitToViewBox.h:
        (WebCore::SVGFitToViewBox::isKnownAttribute):
        * svg/SVGFontElement.h:
        * svg/SVGForeignObjectElement.h:
        * svg/SVGGElement.h:
        * svg/SVGGeometryElement.h:
        (WebCore::SVGGeometryElement::isKnownAttribute):
        * svg/SVGGlyphRefElement.h:
        * svg/SVGGradientElement.h:
        (WebCore::SVGGradientElement::isKnownAttribute):
        * svg/SVGGraphicsElement.h:
        (WebCore::SVGGraphicsElement::isKnownAttribute):
        * svg/SVGImageElement.h:
        * svg/SVGLineElement.h:
        * svg/SVGLinearGradientElement.h:
        * svg/SVGMPathElement.h:
        * svg/SVGMarkerElement.h:
        * svg/SVGMaskElement.h:
        * svg/SVGPathElement.h:
        * svg/SVGPatternElement.h:
        * svg/SVGPolyElement.h:
        (WebCore::SVGPolyElement::attributeRegistry):
        (WebCore::SVGPolyElement::isKnownAttribute):
        * svg/SVGRadialGradientElement.h:
        * svg/SVGRectElement.h:
        * svg/SVGSVGElement.h:
        * svg/SVGScriptElement.h:
        * svg/SVGStopElement.h:
        * svg/SVGSwitchElement.h:
        * svg/SVGSymbolElement.h:
        * svg/SVGTRefElement.h:
        * svg/SVGTests.h:
        * svg/SVGTextContentElement.h:
        (WebCore::SVGTextContentElement::isKnownAttribute):
        * svg/SVGTextPathElement.h:
        * svg/SVGTextPositioningElement.h:
        (WebCore::SVGTextPositioningElement::isKnownAttribute):
        * svg/SVGURIReference.h:
        * svg/SVGUseElement.h:
        * svg/SVGViewElement.h:
        * svg/SVGViewSpec.h:
        * svg/SVGZoomAndPan.cpp:
        (WebCore::SVGZoomAndPan::parseZoomAndPan):
        (WebCore::SVGZoomAndPan::parseAttribute):
        (WebCore::SVGZoomAndPan::SVGZoomAndPan): Deleted.
        (WebCore::SVGZoomAndPan::registerAttributes): Deleted.
        * svg/SVGZoomAndPan.h:
        (WebCore::SVGZoomAndPan::zoomAndPan const):
        (WebCore::SVGZoomAndPan::setZoomAndPan):
        (WebCore::SVGZoomAndPan::reset):
        (WebCore::SVGZoomAndPan::attributeRegistry): Deleted.
        (WebCore::SVGZoomAndPan::isKnownAttribute): Deleted.

2019-03-18  Timothy Hatcher  <timothy@apple.com>

        Add new NSAttributedString API for converting HTML.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Tim Horton.

        * en.lproj/Localizable.strings: Updated.

2019-03-18  Zalan Bujtas  <zalan@apple.com>

        Call transition and animation callbacks on non-composited renderers too.
        https://bugs.webkit.org/show_bug.cgi?id=195907

        Reviewed by Simon Fraser.

        These callbacks are not composited specific functions.

        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::freezeAtTime):
        (WebCore::AnimationBase::compositedRenderer const): Deleted.
        * page/animation/AnimationBase.h:
        * page/animation/ImplicitAnimation.cpp:
        (WebCore::ImplicitAnimation::startAnimation):
        (WebCore::ImplicitAnimation::pauseAnimation):
        (WebCore::ImplicitAnimation::endAnimation):
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::startAnimation):
        (WebCore::KeyframeAnimation::pauseAnimation):
        (WebCore::KeyframeAnimation::endAnimation):
        * rendering/RenderLayerModelObject.cpp:
        (WebCore::RenderLayerModelObject::startTransition):
        (WebCore::RenderLayerModelObject::transitionPaused):
        (WebCore::RenderLayerModelObject::transitionFinished):
        (WebCore::RenderLayerModelObject::startAnimation):
        (WebCore::RenderLayerModelObject::animationPaused):
        (WebCore::RenderLayerModelObject::animationSeeked):
        (WebCore::RenderLayerModelObject::animationFinished):
        (WebCore::RenderLayerModelObject::suspendAnimations):

2019-03-18  Jer Noble  <jer.noble@apple.com>

        Add experimental "alphaChannel" property to VideoConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=195853

        Reviewed by Eric Carlson.

        Test: media/mediacapabilities/mock-decodingInfo-alphaChannel.html

        Add a new, experimental addition to Media Capabilities to allow pages to query for
        alpha channel support.

        * Modules/mediacapabilities/MediaCapabilities.cpp:
        (WebCore::MediaCapabilities::decodingInfo):
        * Modules/mediacapabilities/MediaCapabilities.h:
        * Modules/mediacapabilities/MediaCapabilities.idl:
        * Modules/mediacapabilities/VideoConfiguration.idl:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/cocoa/VideoToolboxSoftLink.cpp:
        * platform/cocoa/VideoToolboxSoftLink.h:
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.h:
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.mm: Renamed from Source/WebCore/platform/graphics/cocoa/HEVCUtilitiesCocoa.cpp.
        (WebCore::validateHEVCParameters):
        * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
        (WebCore::createMediaPlayerDecodingConfigurationCocoa):
        * platform/mediacapabilities/VideoConfiguration.h:
        * platform/mock/MediaEngineConfigurationFactoryMock.cpp:
        (WebCore::canDecodeMedia):
        (WebCore::canEncodeMedia):

2019-03-18  Ryosuke Niwa  <rniwa@webkit.org>

        Remove unused webkitEditableContentChanged event
        https://bugs.webkit.org/show_bug.cgi?id=195909

        Reviewed by Wenson Hsieh.

        Removed webkitEditableContentChanged event which is no longer used after r206944.

        Note that only WebKit's C++ code can fire events in TextControlInnerElements
        since the element is an implementation detail of input and textarea elements.

        * dom/EventNames.h:
        * html/shadow/TextControlInnerElements.cpp:
        (WebCore::TextControlInnerTextElement::defaultEventHandler):

2019-03-18  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Hook up the compiler to our WebGPU implementation
        https://bugs.webkit.org/show_bug.cgi?id=195509

        Unreviewed.

        Update after r243091.

        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

2019-03-18  Chris Dumez  <cdumez@apple.com>

        REGRESSION(r236862): early frame decoupling leaves JSC ArrayBuffer objects lingering
        https://bugs.webkit.org/show_bug.cgi?id=195322

        Reviewed by Ryosuke Niwa.

        Since r236862, DOMWindow objects get disconnected from their Frame object as soon as
        their iframe element gets removed from the document. Previously, DOMWindow was a
        FrameDestructionObserver and would stay connected to its frame until the frame died.

        This means that some of the work that we were doing in DOMWindow::frameDestroyed() and
        Document::willDetachPage() no longer happens for subframe windows because they get
        disconnected from their frame because they get a chance to get such notifications.
        To address this issue, we now also do this work in DOMWindow::willDetachDocumentFromFrame()
        which gets called when the iframe gets removed from the document and the document / window
        get disconnected from the Frame element.

        No new tests, verified locally that the leak is gone on JetStream.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::willDetachDocumentFromFrame):

2019-03-18  Zalan Bujtas  <zalan@apple.com>

        Move animation and transition functions from RenderBoxModelObject to RenderElement
        https://bugs.webkit.org/show_bug.cgi?id=195903

        Reviewed by Simon Fraser.

        Transitions and animations do not require RenderBoxModelObject. Move these functions to RenderElement and override them at RenderLayerModelObject to support
        composition related callbacks.

        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::compositedRenderer const):
        * page/animation/AnimationBase.h:
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::startTransition): Deleted.
        (WebCore::RenderBoxModelObject::transitionPaused): Deleted.
        (WebCore::RenderBoxModelObject::transitionFinished): Deleted.
        (WebCore::RenderBoxModelObject::startAnimation): Deleted.
        (WebCore::RenderBoxModelObject::animationPaused): Deleted.
        (WebCore::RenderBoxModelObject::animationSeeked): Deleted.
        (WebCore::RenderBoxModelObject::animationFinished): Deleted.
        (WebCore::RenderBoxModelObject::suspendAnimations): Deleted.
        * rendering/RenderBoxModelObject.h:
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::startTransition):
        (WebCore::RenderElement::transitionPaused):
        (WebCore::RenderElement::transitionFinished):
        (WebCore::RenderElement::startAnimation):
        (WebCore::RenderElement::animationPaused):
        (WebCore::RenderElement::animationSeeked):
        (WebCore::RenderElement::animationFinished):
        (WebCore::RenderElement::suspendAnimations):
        * rendering/RenderElement.h:

2019-03-18  Antti Koivisto  <antti@apple.com>

        Try to fix Windows build.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateEventRegion):

2019-03-18  Antti Koivisto  <antti@apple.com>

        Layer with no backing store should still hit-test over a scroller
        https://bugs.webkit.org/show_bug.cgi?id=195378
        <rdar://problem/48652078>

        Reviewed by Simon Fraser.

        Tests: fast/scrolling/ios/overflow-scroll-overlap-3.html
               fast/scrolling/ios/overflow-scroll-overlap-4.html

        Move collecting event region from paint to compositing update time.
        This solves a number of problems including regions for non-painting layers.

        * platform/graphics/GraphicsLayer.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):

        Use the existing visibleToHitTesting() helper.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayerContents):

        Use flag for event region collecting, don't paint content.

        (WebCore::RenderLayer::paintList):

        We can bail out immediately if there is no overflow.

        (WebCore::RenderLayer::paintForegroundForFragments):
        (WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
        (WebCore::RenderLayer::collectEventRegionForFragments):

        Move to a separate function.

        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):

        Update event region on backing configuration update. This is called after anything interesting changes on a sublayer.

        (WebCore::RenderLayerBacking::updateEventRegion):
        (WebCore::RenderLayerBacking::paintIntoLayer):
        * rendering/RenderLayerBacking.h:

2019-03-18  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Hook up the compiler to our WebGPU implementation
        https://bugs.webkit.org/show_bug.cgi?id=195509

        Reviewed by Dean Jackson.

        This represents a collection of changes necessary to compile and run the first WHLSL program in WebKit.

        Because WHLSL isn't fully implemented yet, this patch doesn't remove the existing method for supplying
        Metal shaders to WebGPU. Instead, it adds a new boolean to WebGPUShaderModuleDescriptor, "isWHLSL" which
        causes us to run the WHLSL compiler.

        More details below.

        Test: webgpu/whlsl.html

        * Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h: Use raw pointer instead of Optional<std::reference_wrapper>.
        (WebCore::WHLSL::AST::CallExpression::setCastData):
        (WebCore::WHLSL::AST::CallExpression::isCast):
        (WebCore::WHLSL::AST::CallExpression::castReturnType):
        * Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isAtomic const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsAtomic):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::name const): Deleted. The parent class already has a name string.
        (WebCore::WHLSL::AST::NativeTypeDeclaration::name): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
        * Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
        (WebCore::WHLSL::AST::TypeReference::cloneTypeReference const): When cloning a type reference, make sure to
        clone the pointer to its resolved type, too.
        * Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp: Incorporate resolution from
        https://github.com/gpuweb/gpuweb/pull/188.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::resourceSignature):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::unpack):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack): Support semantics being placed directly on the
        entry point, instead of being placed on a structure member.
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack): Ditto.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::mappedBindGroups const): Deleted.
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding):
        (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding):
        (WebCore::WHLSL::Metal::metalFunctions):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeVertexMappedBindGroups): Deleted. After
        https://github.com/gpuweb/gpuweb/pull/188, we don't need the mappings.
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeFragmentMappedBindGroups): Deleted. Ditto.
        (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::takeMappedBindGroups): Deleted. Ditto.
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h: Ditto.
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp: Ditto.
        (WebCore::WHLSL::Metal::generateMetalCodeShared):
        (WebCore::WHLSL::Metal::generateMetalCode):
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h: Ditto.
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp: Support compiler-generated functions. Change
        CRASH() to notImplemented().
        (WebCore::WHLSL::Metal::writeNativeFunction):
        (WebCore::WHLSL::Metal::getNativeName): Deleted.
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
        (WebCore::WHLSL::Metal::writeNativeType): 
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: The dependency graph needs to track all unnamed types. Also,
        we need to track types that are the results of expressions (not just types literally spelled out in the
        program). Enumerations need to be emitted after their base types are emitted.
        (WebCore::WHLSL::Metal::TypeNamer::visit):
        (WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter):
        (WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations):
        (WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
        (WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
        (WebCore::WHLSL::Metal::TypeNamer::emitAllUnnamedTypeDefinitions):
        (WebCore::WHLSL::Metal::TypeNamer::metalTypeDefinitions):
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
        (WebCore::WHLSL::checkDuplicateFunctions):
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp: Wrap ResolvingType in a class to make sure it plays nicely with
        HashMap. Also, use raw pointers instead of Optional<std::reference_wrapper>s.
        (WebCore::WHLSL::resolveWithReferenceComparator):
        (WebCore::WHLSL::resolveByInstantiation):
        (WebCore::WHLSL::checkOperatorOverload):
        (WebCore::WHLSL::Checker::assignTypes):
        (WebCore::WHLSL::Checker::checkShaderType):
        (WebCore::WHLSL::Checker::visit):
        (WebCore::WHLSL::matchAndCommit):
        (WebCore::WHLSL::Checker::recurseAndGetInfo):
        (WebCore::WHLSL::Checker::assignType):
        (WebCore::WHLSL::Checker::forwardType):
        (WebCore::WHLSL::getUnnamedType):
        (WebCore::WHLSL::Checker::finishVisitingPropertyAccess):
        (WebCore::WHLSL::Checker::isBoolType):
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
        (WebCore::WHLSL::Gatherer::visit):
        * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
        (WebCore::WHLSL::inferTypesForCall):
        * Modules/webgpu/WHLSL/WHLSLInferTypes.h:
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
        (WebCore::WHLSL::Intrinsics::addPrimitive):
        (WebCore::WHLSL::Intrinsics::addFullTexture):
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
        (WebCore::WHLSL::Intrinsics::ucharType const):
        (WebCore::WHLSL::Intrinsics::ushortType const):
        (WebCore::WHLSL::Intrinsics::charType const):
        (WebCore::WHLSL::Intrinsics::shortType const):
        (WebCore::WHLSL::Intrinsics::intType const):
        (WebCore::WHLSL::Intrinsics::uchar2Type const):
        (WebCore::WHLSL::Intrinsics::uchar4Type const):
        (WebCore::WHLSL::Intrinsics::ushort2Type const):
        (WebCore::WHLSL::Intrinsics::ushort4Type const):
        (WebCore::WHLSL::Intrinsics::uint2Type const):
        (WebCore::WHLSL::Intrinsics::uint4Type const):
        (WebCore::WHLSL::Intrinsics::char2Type const):
        (WebCore::WHLSL::Intrinsics::char4Type const):
        (WebCore::WHLSL::Intrinsics::short2Type const):
        (WebCore::WHLSL::Intrinsics::short4Type const):
        (WebCore::WHLSL::Intrinsics::int2Type const):
        (WebCore::WHLSL::Intrinsics::int4Type const):
        * Modules/webgpu/WHLSL/WHLSLLexer.cpp:
        (WebCore::WHLSL::Lexer::recognizeKeyword):
        * Modules/webgpu/WHLSL/WHLSLNameContext.cpp:
        (WebCore::WHLSL::NameContext::add):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
        (WebCore::WHLSL::NameResolver::visit): Don't visit recursive types.
        Also, make sure we preserve the CurrentFunction in our recursive scopes.
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h:
        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
        (WebCore::WHLSL::Parser::fail):
        (WebCore::WHLSL::Parser::peek):
        (WebCore::WHLSL::Parser::parseType):
        (WebCore::WHLSL::Parser::parseBuiltInSemantic):
        * Modules/webgpu/WHLSL/WHLSLParser.h:
        * Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        (WebCore::WHLSL::prepareShared):
        (WebCore::WHLSL::prepare):
        * Modules/webgpu/WHLSL/WHLSLPrepare.h:
        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp: Move big inline functions out-of-line.
        (WebCore::WHLSL::RecursiveTypeChecker::visit):
        (WebCore::WHLSL::checkRecursiveTypes):
        (): Deleted.
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
        (WebCore::WHLSL::conversionCost):
        (WebCore::WHLSL::resolveFunctionOverloadImpl):
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.h:
        * Modules/webgpu/WHLSL/WHLSLResolvingType.h:
        (WebCore::WHLSL::ResolvingType::ResolvingType):
        (WebCore::WHLSL::ResolvingType::operator=):
        (WebCore::WHLSL::ResolvingType::getUnnamedType):
        (WebCore::WHLSL::ResolvingType::visit):
        * Modules/webgpu/WHLSL/WHLSLScopedSetAdder.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLMappedBindings.h.
        (WebCore::WHLSL::ScopedSetAdder::ScopedSetAdder):
        (WebCore::WHLSL::ScopedSetAdder::~ScopedSetAdder):
        (WebCore::WHLSL::ScopedSetAdder::isNewEntry const):
        * Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
        (WebCore::WHLSL::isAcceptableFormat):
        * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: Turns out a bunch of texture types don't exist in MSL.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
        (WebCore::WHLSL::synthesizeArrayOperatorLength):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Adding to the program can fail.
        (WebCore::WHLSL::synthesizeConstructors): Some constructors shouldn't be generated for "void" and for atomic types.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h: Adding to the program can fail.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp: Ditto.
        (WebCore::WHLSL::synthesizeEnumerationFunctions):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h: Ditto.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp: Ditto.
        (WebCore::WHLSL::synthesizeStructureAccessors):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h: Ditto.
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):
        * Modules/webgpu/WebGPUDevice.cpp: Add flag that triggers the WHLSL compiler.
        (WebCore::WebGPUDevice::createShaderModule const):
        * Modules/webgpu/WebGPUShaderModuleDescriptor.h: Ditto.
        * Modules/webgpu/WebGPUShaderModuleDescriptor.idl: Ditto.
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUPipelineLayout.h:
        (WebCore::GPUPipelineLayout::bindGroupLayouts const):
        * platform/graphics/gpu/GPUShaderModule.h: Add a string that represents the WHLSL shader source. The compiler currently
        needs the rest of the pipeline state descriptor, so we defer compilation until create*Pipeline().
        (WebCore::GPUShaderModule::platformShaderModule const):
        (WebCore::GPUShaderModule::whlslSource const):
        * platform/graphics/gpu/GPUShaderModuleDescriptor.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Convert GPU types into WHLSL types, and invoke the compiler.
        (WebCore::convertVertexFormat):
        (WebCore::convertShaderStageFlags):
        (WebCore::convertBindingType):
        (WebCore::convertTextureFormat):
        (WebCore::convertLayout):
        (WebCore::convertRenderPipelineDescriptor):
        (WebCore::trySetMetalFunctionsForPipelineDescriptor):
        (WebCore::trySetWHLSLFunctionsForPipelineDescriptor):
        (WebCore::trySetFunctionsForPipelineDescriptor):
        (WebCore::tryCreateMtlRenderPipelineState):
        * platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
        (WebCore::GPUShaderModule::create):
        (WebCore::GPUShaderModule::GPUShaderModule):

2019-03-18  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPUAdapter.createDevice -> GPUAdapter.requestDevice
        https://bugs.webkit.org/show_bug.cgi?id=195781

        Reviewed by Myles C. Maxfield.

        A Web GPU device is now acquired via a promise returned from GPUAdapter.requestDevice().

        Existing tests updated for new behavior.

        * Modules/webgpu/WebGPUAdapter.cpp:
        (WebCore::WebGPUAdapter::requestDevice const):
        (WebCore::WebGPUAdapter::createDevice): Deleted.
        * Modules/webgpu/WebGPUAdapter.h:
        * Modules/webgpu/WebGPUAdapter.idl:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::tryCreate):
        (WebCore::WebGPUDevice::WebGPUDevice):
        (WebCore::WebGPUDevice::create): Deleted.
        * Modules/webgpu/WebGPUDevice.h:
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::tryCreate):
        (WebCore::GPUDevice::create): Deleted.

2019-03-18  Justin Fan  <justin_fan@apple.com>

        [Web GPU] API updates: GPUTexture.createDefaultView and type-safe GPURenderPassEncoder.setPipeline
        https://bugs.webkit.org/show_bug.cgi?id=195896

        Reviewed by Jon Lee.

        Rename createDefaultTextureView -> createDefaultView and move setPipeline from GPUProgrammablePassEncoder to GPURenderPassEncoder.

        Existing tests updated for createDefaultView name.

        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setPipeline): Deleted.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setPipeline):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * Modules/webgpu/WebGPUTexture.cpp:
        (WebCore::WebGPUTexture::createDefaultView):
        (WebCore::WebGPUTexture::createDefaultTextureView): Deleted.
        * Modules/webgpu/WebGPUTexture.h:
        * Modules/webgpu/WebGPUTexture.idl:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h:

2019-03-18  Chris Dumez  <cdumez@apple.com>

        [iOS] The network process sometimes gets killed for trying to suspend while holding locked files
        https://bugs.webkit.org/show_bug.cgi?id=195890
        <rdar://problem/48934338>

        Reviewed by Geoffrey Garen.

        The network process sometimes gets killed for trying to suspend while holding locked files while
        under SQLiteDatabase::open(). The SQLiteDatabaseTracker normally keeps tracking of "transactions"
        in progress so we know that we're holding locked files and the WebSQLiteDatabaseTracker takes
        care of notifying the UIProcess via IPC that it should hold a background assertion on our behalf
        to avoid trying to suspend while holding locked files.
        However, we were missing a SQLiteTransactionInProgressAutoCounter when trying to execute the
        PRAGMA statement.

        Note that we have a similar SQLiteTransactionInProgressAutoCounter in SQLiteDatabase::useWALJournalMode()
        when executing such PRAGMA statement already.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2019-03-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243037.

        Broke the Windows build

        Reverted changeset:

        "Reduce the size of Node::deref by eliminating an explicit
        parentNode check"
        https://bugs.webkit.org/show_bug.cgi?id=195776
        https://trac.webkit.org/changeset/243037

2019-03-18  Eric Carlson  <eric.carlson@apple.com>

        Change some logging levels
        https://bugs.webkit.org/show_bug.cgi?id=195861
        <rdar://problem/48961669>

        Reviewed by Jer Noble.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::dispatchEvent):
        * Modules/webaudio/AudioNode.cpp:
        (WebCore::AudioNode::addInput):
        (WebCore::AudioNode::addOutput):
        (WebCore::AudioNode::connect):
        (WebCore::AudioNode::disconnect):
        * Modules/webaudio/AudioParam.cpp:
        (WebCore::AudioParam::connect):
        (WebCore::AudioParam::disconnect):
        * Modules/webaudio/WaveShaperNode.cpp:
        (WebCore::WaveShaperNode::setOversample):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::canPlayType const):
        (WebCore::HTMLMediaElement::seekTask):
        (WebCore::HTMLMediaElement::dispatchEvent):
        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
        (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
        (WebCore::HTMLMediaElement::setMediaControlsDependOnPageScaleFactor):
        * html/track/InbandGenericTextTrack.cpp:
        (WebCore::InbandGenericTextTrack::addGenericCue):
        (WebCore::InbandGenericTextTrack::removeGenericCue):
        (WebCore::InbandGenericTextTrack::newCuesParsed):
        * html/track/InbandWebVTTTextTrack.cpp:
        (WebCore::InbandWebVTTTextTrack::newCuesParsed):
        * html/track/LoadableTextTrack.cpp:
        (WebCore::LoadableTextTrack::newCuesAvailable):
        * html/track/TextTrack.cpp:
        (WebCore::TextTrack::removeCue):
        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::getLoggingChannels):
        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
        (WebCore::InbandTextTrackPrivateAVF::processAttributedStrings):
        (WebCore::InbandTextTrackPrivateAVF::removeCompletedCues):
        (WebCore::InbandTextTrackPrivateAVF::processNativeSamples):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isCurrentPlaybackTargetWireless const):

2019-03-15  Antoine Quint  <graouts@apple.com>

        Make mouse event simulation a quirk
        https://bugs.webkit.org/show_bug.cgi?id=195218
        <rdar://problem/48516794>

        Reviewed by Dean Jackson.

        Add new quirks to control whether we should dispatch simulated mouse events and whether we should assume
        preventDefault() was called when a simulated "mousemove" event was handled. Currently both return false
        but will be made to return more interesting results as we determine heuristics or specific sites that
        may require such quirks.

        * page/Quirks.cpp:
        (WebCore::Quirks::shouldDispatchSimulateMouseEvents const):
        (WebCore::Quirks::shouldMousemoveEventHandlingPreventDefault const):
        * page/Quirks.h:

2019-03-18  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Rewrite HTTP source element using pushsrc base class
        https://bugs.webkit.org/show_bug.cgi?id=195631

        Reviewed by Xabier Rodriguez-Calvar.

        If we want to use webkitwebsrc in adaptivedemux (HLS, DASH, etc)
        we need a source element that behaves like souphttpsrc, which is
        implemented using pushsrc. This rewrite might also fix some seek
        issues.

        No new tests, existing http/tests/media tests cover this patch.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webkit_web_src_class_init):
        (webkitWebSrcReset):
        (webkit_web_src_init):
        (webKitWebSrcCreate):
        (webKitWebSrcStart):
        (webKitWebSrcCloseSession):
        (webKitWebSrcStop):
        (webKitWebSrcGetSize):
        (webKitWebSrcIsSeekable):
        (webKitWebSrcDoSeek):
        (webKitWebSrcQuery):
        (webKitWebSrcUnLock):
        (webKitWebSrcUnLockStop):
        (webKitWebSrcChangeState):
        (CachedResourceStreamingClient::checkUpdateBlocksize):
        (CachedResourceStreamingClient::responseReceived):
        (CachedResourceStreamingClient::dataReceived):
        (CachedResourceStreamingClient::accessControlCheckFailed):
        (CachedResourceStreamingClient::loadFailed):
        (CachedResourceStreamingClient::loadFinished):
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

2019-03-18  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [WPE][GTK] Fix a build warning because of missing to handle an enum value
        https://bugs.webkit.org/show_bug.cgi?id=195876

        Reviewed by Žan Doberšek.

        When building WPE or GTK port, there is a build warning. The switch-case needs to
        handle *Positioned* enum value as well in order to avoid the build warning.

        * page/scrolling/nicosia/ScrollingTreeNicosia.cpp:
        (WebCore::ScrollingTreeNicosia::createScrollingTreeNode): Add case ScrollingNodeType::Positioned.

2019-03-17  Yusuke Suzuki  <ysuzuki@apple.com>

        REGRESSION: !vm.isInitializingObject() void* JSC::tryAllocateCellHelper<JSC::Structure> JSC::Structure::create
        https://bugs.webkit.org/show_bug.cgi?id=195858

        Reviewed by Mark Lam.

        Changed the accessor names.

        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readTerminal):

2019-03-16  Darin Adler  <darin@apple.com>

        Improve normalization code, including moving from unorm.h to unorm2.h
        https://bugs.webkit.org/show_bug.cgi?id=195330

        Reviewed by Michael Catanzaro.

        * editing/TextIterator.cpp: Include unorm2.h.
        (WebCore::normalizeCharacters): Rewrote to use unorm2_normalize rather than
        unorm_normalize, but left the logic otherwise the same.

        * platform/graphics/SurrogatePairAwareTextIterator.cpp: Include unorm2.h.
        (WebCore::SurrogatePairAwareTextIterator::normalizeVoicingMarks):
        Use unorm2_composePair instead of unorm_normalize.

        * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
        (characterSequenceIsEmoji): Changed to use existing SurrogatePairAwareTextIterator.
        (FontCascade::fontForCombiningCharacterSequence): Use normalizedNFC instead of
        calling unorm2_normalize directly.

        * WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        Removed unneeded include of <unicode/normlzr.h>.

        * platform/text/TextEncoding.cpp:
        (WebCore::TextEncoding::encode const): Use normalizedNFC instead of the
        code that was here. The normalizedNFC function is better in multiple ways,
        but primarily it handles 8-bit strings and other already-normalized
        strings much more efficiently.

2019-03-16  Jer Noble  <jer.noble@apple.com>

        Unreviewed unified-build fix; GPUBindGroupMetal uses symbols from the Metal.framework; it should import it.

        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:

2019-03-16  Jer Noble  <jer.noble@apple.com>

        Add a new MediaCapabilitiesExtensionsEnabled setting
        https://bugs.webkit.org/show_bug.cgi?id=195843

        Reviewed by Geoffrey Garen.

        Add a new setting, MediaCapabilitiesExtensionsEnabled, which controls whether extensions
        to the Media Capabilities API are available.

        Drive-by fix: make sure that the configuration is passed through to MediaCapabilitiesInfo
        when no factory can support the configuration.

        * Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
        * Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateDictionaryImplementationContent):
        * bindings/scripts/IDLAttributes.json:
        * page/Settings.yaml:
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):

2019-03-16  Zalan Bujtas  <zalan@apple.com>

        [iOS] Unable to close trending window on naver.com.
        https://bugs.webkit.org/show_bug.cgi?id=195842
        <rdar://problem/48067338>

        This patch issues a synthetic mouse move to the tap location after we decided to hover.
        It ensures that the node under the mouse is up-to-date and when a new tap comes in we can
        send the mouseout event to the correct node. It fixes the case when the hover content is positioned over
        the tap target so that the tap target is no longer "under the mouse".
        On desktop this "transition" happens automatically since the mouse is always present. 

        Reviewed by Simon Fraser.

        Tests: fast/events/touch/ios/content-observation/new-content-covers-tap-target.html
               fast/events/touch/ios/content-observation/prevent-default-on-touch-start.html

        * page/EventHandler.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::dispatchSyntheticMouseMove):

2019-03-16  Sihui Liu  <sihui_liu@apple.com>

        Layout tests imported/w3c/web-platform-tests/IndexedDB/*-exception-order.html are failing
        https://bugs.webkit.org/show_bug.cgi?id=195650

        Reviewed by Ryosuke Niwa.

        Fix some exception orders in IDB.

        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::createObjectStore):
        Step 6 of https://www.w3.org/TR/IndexedDB-2/#dom-idbdatabase-createobjectstore.

        (WebCore::IDBDatabase::transaction):
        Step 1 of https://www.w3.org/TR/IndexedDB-2/#dom-idbdatabase-transaction.

        * Modules/indexeddb/IDBIndex.cpp:
        (WebCore::IDBIndex::doOpenCursor):
        (WebCore::IDBIndex::openCursor):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-opencursor.

        (WebCore::IDBIndex::doOpenKeyCursor):
        (WebCore::IDBIndex::openKeyCursor):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-openkeycursor.

        (WebCore::IDBIndex::count):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-count.

        (WebCore::IDBIndex::doCount):
        (WebCore::IDBIndex::get):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-get.

        (WebCore::IDBIndex::doGet):
        (WebCore::IDBIndex::getKey):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-getkey.

        (WebCore::IDBIndex::doGetKey):
        (WebCore::IDBIndex::doGetAll):
        (WebCore::IDBIndex::getAll):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-getkey.
        (WebCore::IDBIndex::doGetAllKeys):
        (WebCore::IDBIndex::getAllKeys):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbindex-getallkeys.

        * Modules/indexeddb/IDBIndex.h:
        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::doOpenCursor):
        (WebCore::IDBObjectStore::openCursor):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbobjectstore-opencursor.

        (WebCore::IDBObjectStore::doOpenKeyCursor):
        (WebCore::IDBObjectStore::openKeyCursor):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbobjectstore-openkeycursor.

        (WebCore::IDBObjectStore::deleteFunction):
        (WebCore::IDBObjectStore::doDelete):
        (WebCore::IDBObjectStore::count):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbobjectstore-count.

        (WebCore::IDBObjectStore::doCount):
        (WebCore::IDBObjectStore::doGetAll):
        (WebCore::IDBObjectStore::getAll):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbobjectstore-getall.

        (WebCore::IDBObjectStore::doGetAllKeys):
        (WebCore::IDBObjectStore::getAllKeys):
        Step 5 of https://www.w3.org/TR/IndexedDB-2/#dom-idbobjectstore-getallkeys.
        * Modules/indexeddb/IDBObjectStore.h:

2019-03-16  Ryosuke Niwa  <rniwa@webkit.org>

        Reduce the size of Node::deref by eliminating an explicit parentNode check
        https://bugs.webkit.org/show_bug.cgi?id=195776

        Reviewed by Geoffrey Garen.

        This patch eliminates the nullity check of m_parentNode in Node::deref as well as the store to
        m_refCount in the case of invoking Node::removedLastRef() as done for RefCounted in r30042.
        Together, this patch shrinks WebCore's size by 46KB or ~0.7%.

        To do this, we take we take a similar approach as WTF::String by using the lowest bit of m_refCount
        to indicate whether a node has a parent or not. Regular ref-counting is done on the upper 31 bits.
        Node::setParentNode updates this flag, and Node::deref() would only `delete this` if m_refCount
        is identically equal to 0.

        For a Document, we set m_refCounted to 0 before in the case of non-zero m_referencingNodeCount
        since decrementReferencingNodeCount needs to be able to tell if there is an outstanding Ref/RefPtr
        or not when m_referencingNodeCount becomes 0.

        No new tests since there should be no behavioral change.

        * dom/Document.cpp:
        (WebCore::Document::removedLastRef):
        * dom/Document.h:
        (WebCore::Document::decrementReferencingNodeCount):
        * dom/Node.cpp:
        (WebCore::Node::Node): Moved the initialization of m_refCount to the member variable declaration.
        (WebCore::Node::~Node):
        (WebCore::Node::removedLastRef):
        * dom/Node.h:
        (WebCore::Node): Changed the type of m_refCount from signed int to uint32_t. It was changed from
        unsigned int to signed int back in r11492 but I don't think the signedness is needed.
        (WebCore::Node::ref): Increment the ref count by 2 (upper 31-bit).
        (WebCore::Node::deref): Implemented the optimization. This is what shrinks the WebCore binary size.
        (WebCore::Node::hasOneRef const):
        (WebCore::Node::refCount const): Ignore the lowest bit. Without this fix, the optimization in
        replaceChildrenWithFragment to avoid replacing the text node is disabled whenever there is a parent.
        (WebCore::Node::setParentNode): Sets the lowest bit to 1 if the node has a parent and 0 otherwise.

2019-03-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the SVG property tear off objects for SVGAnimatedInteger
        https://bugs.webkit.org/show_bug.cgi?id=195722

        Reviewed by Simon Fraser.

        Instead of saving a raw integer value in the SVGElement and then wrapping
        the pointer to this raw data in a tear off object, we will represent the
        integer as Ref<SVGAnimatedInteger> in SVGElement. This will make the 
        representation of the property in IDL file match the C++ header file.

        When the DOM requests the SVGAnimatedInteger, we get return a reference
        to the new animated property. When the rendering code asks for the current
        value of the this animated property, we return the animVal() or the
        baseVal() depending on whether the property is animating or not.

        A pointer to a member in the SVGElement will be registered along with the
        associated attribute name in SVGPropertyRegistry. Registering the property
        creates an SVGMemberAccessor and links to the associated attribute. The
        function of SVGMemberAccessor is to retrieve the value of the property
        given a pointer to an SVGElement.

        SVGPropertyRegistry manages all the properties of SVGElement. It takes
        into account the inherited properties as well.

        SVGElement will have a virtual method called propertyRegistry(). Every
        superclass will override this method to return a reference to its registry
        which includes all the registered properties of this class and its bases.

        One important function of the SVGPropertyRegistry and SVGAccessor is they
        create the appropriate SVGAttributeAnimator for this property.

        SVGAttributeAnimator is just a connection between the animated property
        and SVGAnimationFunction. SVGAnimationFunction calculates the values of
        the animated property within a time interval. SVGAnimatedPropertyAnimator
        updates animVal of the animated property and invalidates the associated
        SVGElement and all the instances that references this element.

        The plan is to remove all the SVG tear off objects like what this patch
        does for SVGAnimatedInteger. So for a period of time the old code and the
        new code will co-exist together. These things to consider when reviewing
        this patch:

        -- SVGAnimatedElementBase was re-factored to use SVGAttributeAnimationControllerBase
        which is inherited by SVGLegacyAttributeAnimationController and
        SVGAttributeAnimationController. The tear-off properties code which uses
        SVGAnimatedType now lives in SVGLegacyAttributeAnimationController. The
        new code was added to SVGAttributeAnimationController. The plan is to 
        remove the three animation controllers and to move the code of
        SVGAttributeAnimationController to SVGAnimatedElementBase when all the tear
        off code is removed.

        -- SVGElement now keeps two registries one for the tear-off world and the
        other for the new world. Eventually we need to get rid of tear-off registry.

        -- SVGElement will differentiate between the type of the property by the
        the method isAnimatedAttribute().

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateHeader):
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::SVGAnimateElementBase):
        (WebCore::SVGAnimateElementBase::attributeAnimationController):
        (WebCore::SVGAnimateElementBase::attributeAnimationControllerIfExists):
        (WebCore::SVGAnimateElementBase::hasValidAttributeType const):
        (WebCore::SVGAnimateElementBase::determineAnimatedPropertyType const):
        (WebCore::SVGAnimateElementBase::calculateAnimatedValue):
        (WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
        (WebCore::SVGAnimateElementBase::calculateFromAndToValues):
        (WebCore::SVGAnimateElementBase::calculateFromAndByValues):
        (WebCore::SVGAnimateElementBase::resetAnimatedType):
        (WebCore::SVGAnimateElementBase::clearAnimatedType):
        (WebCore::SVGAnimateElementBase::applyResultsToTarget):
        (WebCore::SVGAnimateElementBase::isAdditive const):
        (WebCore::SVGAnimateElementBase::calculateDistance):
        (WebCore::SVGAnimateElementBase::setTargetElement):
        (WebCore::SVGAnimateElementBase::setAttributeName):
        (WebCore::SVGAnimateElementBase::resetAnimation):
        (WebCore::SVGAnimateElementBase::hasInvalidCSSAttributeType const):
        (WebCore::SVGAnimateElementBase::hasValidAttributeType): Deleted.
        (WebCore::propertyTypesAreConsistent): Deleted.
        (WebCore::applyCSSPropertyToTarget): Deleted.
        (WebCore::removeCSSPropertyFromTarget): Deleted.
        (WebCore::applyCSSPropertyToTargetAndInstances): Deleted.
        (WebCore::removeCSSPropertyFromTargetAndInstances): Deleted.
        (WebCore::notifyTargetAboutAnimValChange): Deleted.
        (WebCore::notifyTargetAndInstancesAboutAnimValChange): Deleted.
        (WebCore::SVGAnimateElementBase::animatedPropertyTypeSupportsAddition const): Deleted.
        (WebCore::SVGAnimateElementBase::resetAnimatedPropertyType): Deleted.
        (WebCore::SVGAnimateElementBase::ensureAnimator): Deleted.
        * svg/SVGAnimateElementBase.h:
        * svg/SVGAnimateMotionElement.cpp:
        (WebCore::SVGAnimateMotionElement::hasValidAttributeType const):
        (WebCore::SVGAnimateMotionElement::hasValidAttributeName const):
        (WebCore::SVGAnimateMotionElement::hasValidAttributeType): Deleted.
        (WebCore::SVGAnimateMotionElement::hasValidAttributeName): Deleted.
        * svg/SVGAnimateMotionElement.h:
        * svg/SVGAnimateTransformElement.cpp:
        (WebCore::SVGAnimateTransformElement::hasValidAttributeType const):
        (WebCore::SVGAnimateTransformElement::hasValidAttributeType): Deleted.
        * svg/SVGAnimateTransformElement.h:
        * svg/SVGAnimatedInteger.cpp: Removed.
        * svg/SVGAnimatedInteger.h: Removed.
        * svg/SVGAnimatedIntegerOptionalInteger.cpp: Removed.
        * svg/SVGAnimatedIntegerOptionalInteger.h: Removed.
        * svg/SVGAnimatedPointList.h:
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::setAttributeType):
        (WebCore::SVGAnimationElement::resetAnimation):
        (WebCore::SVGAnimationElement::resetAnimatedPropertyType): Deleted.
        (WebCore::SVGAnimationElement::setTargetElement): Deleted.
        (WebCore::SVGAnimationElement::checkInvalidCSSAttributeType): Deleted.
        * svg/SVGAnimationElement.h:
        (WebCore::SVGAnimationElement::attributeType const):
        (WebCore::SVGAnimationElement::hasInvalidCSSAttributeType const): Deleted.
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGAttributeAnimationController.cpp: Added.
        (WebCore::SVGAttributeAnimationController::SVGAttributeAnimationController):
        (WebCore::SVGAttributeAnimationController::animator const):
        (WebCore::SVGAttributeAnimationController::isDiscreteAnimator const):
        (WebCore::SVGAttributeAnimationController::isAdditive const):
        (WebCore::SVGAttributeAnimationController::hasValidAttributeType const):
        (WebCore::SVGAttributeAnimationController::calculateFromAndToValues):
        (WebCore::SVGAttributeAnimationController::calculateFromAndByValues):
        (WebCore::SVGAttributeAnimationController::calculateToAtEndOfDurationValue):
        (WebCore::SVGAttributeAnimationController::resetAnimatedType):
        (WebCore::SVGAttributeAnimationController::calculateAnimatedValue):
        (WebCore::SVGAttributeAnimationController::applyResultsToTarget):
        (WebCore::SVGAttributeAnimationController::clearAnimatedType):
        (WebCore::SVGAttributeAnimationController::calculateDistance):
        * svg/SVGAttributeAnimationController.h: Added.
        (WebCore::SVGAttributeAnimationController::animatorIfExists const):
        * svg/SVGAttributeAnimationControllerBase.cpp: Added.
        (WebCore::SVGAttributeAnimationControllerBase::SVGAttributeAnimationControllerBase):
        (WebCore::SVGAttributeAnimationControllerBase::determineAnimatedPropertyType):
        * svg/SVGAttributeAnimationControllerBase.h: Added.
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute):
        (WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
        (WebCore::SVGElement::commitPropertyChange):
        (WebCore::SVGElement::isAnimatedPropertyAttribute const):
        (WebCore::SVGElement::isAnimatedAttribute const):
        (WebCore::SVGElement::createAnimator):
        * svg/SVGElement.h:
        (WebCore::SVGElement::propertyRegistry const):
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        (WebCore::SVGFEConvolveMatrixElement::registerAttributes):
        (WebCore::SVGFEConvolveMatrixElement::parseAttribute):
        (WebCore::SVGFEConvolveMatrixElement::setOrder):
        (WebCore::SVGFEConvolveMatrixElement::orderXIdentifier): Deleted.
        (WebCore::SVGFEConvolveMatrixElement::orderYIdentifier): Deleted.
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
        (WebCore::SVGFETurbulenceElement::registerAttributes):
        (WebCore::SVGFETurbulenceElement::parseAttribute):
        (WebCore::SVGFETurbulenceElement::svgAttributeChanged):
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterElement.h:
        * svg/SVGLegacyAttributeAnimationController.cpp: Added.
        (WebCore::SVGLegacyAttributeAnimationController::SVGLegacyAttributeAnimationController):
        (WebCore::SVGLegacyAttributeAnimationController::animatedTypeAnimator):
        (WebCore::SVGLegacyAttributeAnimationController::isAdditive const):
        (WebCore::SVGLegacyAttributeAnimationController::hasValidAttributeType const):
        (WebCore::SVGLegacyAttributeAnimationController::calculateFromAndToValues):
        (WebCore::SVGLegacyAttributeAnimationController::calculateFromAndByValues):
        (WebCore::SVGLegacyAttributeAnimationController::calculateToAtEndOfDurationValue):
        (WebCore::propertyTypesAreConsistent):
        (WebCore::SVGLegacyAttributeAnimationController::resetAnimatedType):
        (WebCore::SVGLegacyAttributeAnimationController::calculateAnimatedValue):
        (WebCore::applyCSSPropertyToTarget):
        (WebCore::removeCSSPropertyFromTarget):
        (WebCore::applyCSSPropertyToTargetAndInstances):
        (WebCore::removeCSSPropertyFromTargetAndInstances):
        (WebCore::notifyTargetAboutAnimValChange):
        (WebCore::notifyTargetAndInstancesAboutAnimValChange):
        (WebCore::SVGLegacyAttributeAnimationController::applyResultsToTarget):
        (WebCore::SVGLegacyAttributeAnimationController::clearAnimatedType):
        (WebCore::SVGLegacyAttributeAnimationController::calculateDistance):
        * svg/SVGLegacyAttributeAnimationController.h: Added.
        * svg/animation/SVGSMILElement.cpp:
        (WebCore::SVGSMILElement::hasValidAttributeName const):
        (WebCore::SVGSMILElement::hasValidAttributeName): Deleted.
        * svg/animation/SVGSMILElement.h:
        * svg/properties/SVGAnimatedPrimitiveProperty.h: Added.
        (WebCore::SVGAnimatedPrimitiveProperty::create):
        (WebCore::SVGAnimatedPrimitiveProperty::setBaseVal):
        (WebCore::SVGAnimatedPrimitiveProperty::setBaseValInternal):
        (WebCore::SVGAnimatedPrimitiveProperty::baseVal const):
        (WebCore::SVGAnimatedPrimitiveProperty::setAnimVal):
        (WebCore::SVGAnimatedPrimitiveProperty::animVal const):
        (WebCore::SVGAnimatedPrimitiveProperty::animVal):
        (WebCore::SVGAnimatedPrimitiveProperty::currentValue const):
        (WebCore::SVGAnimatedPrimitiveProperty::SVGAnimatedPrimitiveProperty):
        * svg/properties/SVGAnimatedProperty.cpp: Added.
        (WebCore::SVGAnimatedProperty::owner const):
        (WebCore::SVGAnimatedProperty::commitPropertyChange):
        * svg/properties/SVGAnimatedProperty.h: Added.
        (WebCore::SVGAnimatedProperty::isAttached const):
        (WebCore::SVGAnimatedProperty::detach):
        (WebCore::SVGAnimatedProperty::contextElement const):
        (WebCore::SVGAnimatedProperty::baseValAsString const):
        (WebCore::SVGAnimatedProperty::animValAsString const):
        (WebCore::SVGAnimatedProperty::isDirty const):
        (WebCore::SVGAnimatedProperty::setDirty):
        (WebCore::SVGAnimatedProperty::synchronize):
        (WebCore::SVGAnimatedProperty::isAnimating const):
        (WebCore::SVGAnimatedProperty::startAnimation):
        (WebCore::SVGAnimatedProperty::stopAnimation):
        (WebCore::SVGAnimatedProperty::instanceStartAnimation):
        (WebCore::SVGAnimatedProperty::instanceStopAnimation):
        (WebCore::SVGAnimatedProperty::SVGAnimatedProperty):
        * svg/properties/SVGAnimatedPropertyAccessor.h: Added.
        * svg/properties/SVGAnimatedPropertyAccessorImpl.h: Added.
        * svg/properties/SVGAnimatedPropertyAnimator.h: Added.
        (WebCore::SVGAnimatedPropertyAnimator::appendAnimatedInstance):
        (WebCore::SVGAnimatedPropertyAnimator::SVGAnimatedPropertyAnimator):
        * svg/properties/SVGAnimatedPropertyAnimatorImpl.h: Added.
        * svg/properties/SVGAnimatedPropertyImpl.h: Added.
        * svg/properties/SVGAnimatedPropertyPairAccessor.h: Added.
        (WebCore::SVGAnimatedPropertyPairAccessor::SVGAnimatedPropertyPairAccessor):
        (WebCore::SVGAnimatedPropertyPairAccessor::singleton):
        (WebCore::SVGAnimatedPropertyPairAccessor::property1 const):
        (WebCore::SVGAnimatedPropertyPairAccessor::property2 const):
        * svg/properties/SVGAnimatedPropertyPairAccessorImpl.h: Added.
        * svg/properties/SVGAnimatedPropertyPairAnimator.h: Added.
        (WebCore::SVGAnimatedPropertyPairAnimator::appendAnimatedInstance):
        (WebCore::SVGAnimatedPropertyPairAnimator::SVGAnimatedPropertyPairAnimator):
        * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h: Added.
        * svg/properties/SVGAnimationAdditiveFunction.h: Added.
        (WebCore::SVGAnimationAdditiveFunction::SVGAnimationAdditiveFunction):
        (WebCore::SVGAnimationAdditiveFunction::progress):
        * svg/properties/SVGAnimationAdditiveValueFunction.h: Added.
        (WebCore::SVGAnimationAdditiveValueFunction::toAtEndOfDuration const):
        * svg/properties/SVGAnimationAdditiveValueFunctionImpl.h: Added.
        (WebCore::SVGAnimationIntegerFunction::progress):
        * svg/properties/SVGAnimationFunction.h: Added.
        (WebCore::SVGAnimationFunction::isDiscrete const):
        (WebCore::SVGAnimationFunction::calculateDistance const):
        (WebCore::SVGAnimationFunction::SVGAnimationFunction):
        (WebCore::SVGAnimationFunction::addFromAndToValues):
        * svg/properties/SVGAttributeAnimator.cpp: Added.
        (WebCore::SVGAttributeAnimator::applyAnimatedPropertyChange):
        * svg/properties/SVGAttributeAnimator.h: Added.
        (WebCore::SVGAttributeAnimator::SVGAttributeAnimator):
        (WebCore::SVGAttributeAnimator::isDiscrete const):
        (WebCore::SVGAttributeAnimator::setFromAndToValues):
        (WebCore::SVGAttributeAnimator::setFromAndByValues):
        (WebCore::SVGAttributeAnimator::setToAtEndOfDurationValue):
        (WebCore::SVGAttributeAnimator::calculateDistance const):
        * svg/properties/SVGAttributeOwnerProxy.cpp:
        * svg/properties/SVGAttributeOwnerProxy.h:
        * svg/properties/SVGAttributeRegistry.h:
        * svg/properties/SVGMemberAccessor.h: Added.
        (WebCore::SVGMemberAccessor::detach const):
        (WebCore::SVGMemberAccessor::isAnimatedProperty const):
        (WebCore::SVGMemberAccessor::isAnimatedLength const):
        (WebCore::SVGMemberAccessor::matches const):
        (WebCore::SVGMemberAccessor::synchronize const):
        (WebCore::SVGMemberAccessor::createAnimator const):
        (WebCore::SVGMemberAccessor::appendAnimatedInstance const):
        * svg/properties/SVGPointerMemberAccessor.h: Added.
        (WebCore::SVGPointerMemberAccessor::SVGPointerMemberAccessor):
        (WebCore::SVGPointerMemberAccessor::property const):
        (WebCore::SVGPointerMemberAccessor::singleton):
        * svg/properties/SVGProperty.h: Added.
        * svg/properties/SVGPropertyOwner.h: Added.
        (WebCore::SVGPropertyOwner::owner const):
        (WebCore::SVGPropertyOwner::attributeContextElement const):
        (WebCore::SVGPropertyOwner::commitPropertyChange):
        * svg/properties/SVGPropertyOwnerRegistry.h: Added.
        (WebCore::SVGPropertyOwnerRegistry::SVGPropertyOwnerRegistry):
        (WebCore::SVGPropertyOwnerRegistry::registerProperty):
        (WebCore::SVGPropertyOwnerRegistry::enumerateRecursively):
        (WebCore::SVGPropertyOwnerRegistry::isKnownAttribute):
        (WebCore::SVGPropertyOwnerRegistry::enumerateRecursivelyBaseTypes):
        (WebCore::SVGPropertyOwnerRegistry::findAccessor):
        * svg/properties/SVGPropertyRegistry.h: Added.

2019-03-16  Ryosuke Niwa  <rniwa@webkit.org>

        Remove LayoutAssertionDisableScope after r241289
        https://bugs.webkit.org/show_bug.cgi?id=195848

        Reviewed by Antti Koivisto.

        Remove LayoutAssertionDisableScope for good now that the underlying bug has been fixed in r241289.

        * dom/Document.cpp:
        (WebCore::isSafeToUpdateStyleOrLayout):
        * dom/ScriptDisallowedScope.h:
        (WebCore::ScriptDisallowedScope::LayoutAssertionDisableScope): Deleted.
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::layout):

2019-03-15  Eric Carlson  <eric.carlson@apple.com>

        Add media stream release logging
        https://bugs.webkit.org/show_bug.cgi?id=195823
        <rdar://problem/48939406>

        Reviewed by Youenn Fablet.

        No new tests, no behavioral change.

        * Modules/mediastream/MediaStream.cpp:
        (WebCore::MediaStream::MediaStream):
        (WebCore::MediaStream::clone):
        (WebCore::MediaStream::addTrack):
        (WebCore::MediaStream::removeTrack):
        (WebCore::MediaStream::addTrackFromPlatform):
        (WebCore::MediaStream::setIsActive):
        (WebCore::MediaStream::mediaCanStart):
        (WebCore::MediaStream::startProducingData):
        (WebCore::MediaStream::stopProducingData):
        (WebCore::MediaStream::endCaptureTracks):
        (WebCore::MediaStream::stop):
        (WebCore::MediaStream::logChannel const):
        * Modules/mediastream/MediaStream.h:
        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::MediaStreamTrack):
        (WebCore::MediaStreamTrack::logChannel const):
        * Modules/mediastream/MediaStreamTrack.h:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::addTrack):
        (WebCore::LibWebRTCMediaEndpoint::sourceFromNewReceiver):
        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::AudioContext):
        (WebCore::nextLogIdentifier): Deleted.
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::HTMLMediaElement):
        (WebCore::nextLogIdentifier): Deleted.
        * html/HTMLMediaElement.h:
        * platform/audio/PlatformMediaSession.cpp:
        (WebCore::PlatformMediaSession::PlatformMediaSession):
        (WebCore::nextLogIdentifier): Deleted.
        * platform/audio/PlatformMediaSession.h:
        * platform/graphics/IntSize.cpp:
        (WebCore::IntSize::toJSONObject const):
        (WebCore::IntSize::toJSONString const):
        * platform/graphics/IntSize.h:
        (WTF::LogArgument<WebCore::IntSize>::toString):
        * platform/mediastream/MediaStreamPrivate.cpp:
        (WebCore::MediaStreamPrivate::addTrack):
        (WebCore::MediaStreamPrivate::removeTrack):
        (WebCore::MediaStreamPrivate::startProducingData):
        (WebCore::MediaStreamPrivate::stopProducingData):
        (WebCore::MediaStreamPrivate::setCaptureTracksMuted):
        (WebCore::MediaStreamPrivate::trackMutedChanged):
        (WebCore::MediaStreamPrivate::trackEnabledChanged):
        (WebCore::MediaStreamPrivate::trackStarted):
        (WebCore::MediaStreamPrivate::trackEnded):
        (WebCore::MediaStreamPrivate::setLogger):
        (WebCore::MediaStreamPrivate::logChannel const):
        * platform/mediastream/MediaStreamPrivate.h:
        * platform/mediastream/MediaStreamTrackPrivate.cpp:
        (WebCore::MediaStreamTrackPrivate::setLogger):
        (WebCore::MediaStreamTrackPrivate::logChannel const):
        * platform/mediastream/MediaStreamTrackPrivate.h:
        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
        (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
        (WebCore::RealtimeIncomingAudioSource::logChannel const): Deleted.
        (WebCore::RealtimeIncomingAudioSource::logger const): Deleted.
        * platform/mediastream/RealtimeIncomingAudioSource.h:
        (WebCore::RealtimeIncomingAudioSource::setLogger): Deleted.
        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
        (WebCore::RealtimeIncomingVideoSource::logChannel const): Deleted.
        (WebCore::RealtimeIncomingVideoSource::logger const): Deleted.
        * platform/mediastream/RealtimeIncomingVideoSource.h:
        (WebCore::RealtimeIncomingVideoSource::setLogger): Deleted.
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::RealtimeMediaSource):
        (WebCore::RealtimeMediaSource::setInterrupted):
        (WebCore::RealtimeMediaSource::setMuted):
        (WebCore::RealtimeMediaSource::notifyMutedChange):
        (WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
        (WebCore::RealtimeMediaSource::videoSampleAvailable):
        (WebCore::RealtimeMediaSource::start):
        (WebCore::RealtimeMediaSource::stop):
        (WebCore::RealtimeMediaSource::captureFailed):
        (WebCore::RealtimeMediaSource::applyConstraint):
        (WebCore::RealtimeMediaSource::supportsConstraints):
        (WebCore::RealtimeMediaSource::applyConstraints):
        (WebCore::RealtimeMediaSource::setSize):
        (WebCore::RealtimeMediaSource::setIntrinsicSize):
        (WebCore::RealtimeMediaSource::setFrameRate):
        (WebCore::RealtimeMediaSource::setAspectRatio):
        (WebCore::RealtimeMediaSource::setFacingMode):
        (WebCore::RealtimeMediaSource::setVolume):
        (WebCore::RealtimeMediaSource::setSampleRate):
        (WebCore::RealtimeMediaSource::setSampleSize):
        (WebCore::RealtimeMediaSource::setEchoCancellation):
        (WebCore::RealtimeMediaSource::setLogger):
        (WebCore::RealtimeMediaSource::logChannel const):
        (WebCore::convertEnumerationToString):
        * platform/mediastream/RealtimeMediaSource.h:
        (WTF::LogArgument<WebCore::RealtimeMediaSource::Type>::toString):
        * platform/mediastream/RealtimeMediaSourceSettings.cpp:
        (WebCore::RealtimeMediaSourceSettings::convertFlagsToString):
        (WebCore::convertEnumerationToString):
        * platform/mediastream/RealtimeMediaSourceSettings.h:
        (WTF::LogArgument<WebCore::RealtimeMediaSourceSettings::VideoFacingMode>::toString):
        (WTF::LogArgument<OptionSet<WebCore::RealtimeMediaSourceSettings::Flag>>::toString):
        * platform/mediastream/RealtimeOutgoingAudioSource.cpp:
        (WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
        (WebCore::RealtimeOutgoingAudioSource::logChannel const):
        (WebCore::RealtimeOutgoingAudioSource::logger const): Deleted.
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        (WebCore::RealtimeOutgoingAudioSource::setLogger): Deleted.
        * platform/mediastream/RealtimeOutgoingVideoSource.cpp:
        (WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
        (WebCore::RealtimeOutgoingVideoSource::sendOneBlackFrame):
        (WebCore::RealtimeOutgoingVideoSource::sendFrame):
        (WebCore::RealtimeOutgoingVideoSource::logChannel const):
        (WebCore::RealtimeOutgoingVideoSource::logger const): Deleted.
        * platform/mediastream/RealtimeOutgoingVideoSource.h:
        (WebCore::RealtimeOutgoingVideoSource::setLogger): Deleted.
        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::setSizeAndFrameRate):
        (WebCore::SizeAndFrameRate::toJSONObject const):
        (WebCore::SizeAndFrameRate::toJSONString const):
        * platform/mediastream/RealtimeVideoSource.h:
        (WTF::LogArgument<WebCore::SizeAndFrameRate>::toString):
        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::clearSession):
        (WebCore::AVVideoCaptureSource::startProducingData):
        (WebCore::AVVideoCaptureSource::stopProducingData):
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::setupSession):
        (WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureSessionIsRunningDidChange):
        (WebCore::AVVideoCaptureSource::captureDeviceSuspendedDidChange):
        (WebCore::AVVideoCaptureSource::captureSessionRuntimeError):
        (WebCore::AVVideoCaptureSource::captureSessionBeginInterruption):
        (WebCore::AVVideoCaptureSource::captureSessionEndInterruption):
        (WebCore::AVVideoCaptureSource::deviceDisconnected):
        (-[WebCoreAVVideoCaptureSourceObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVVideoCaptureSourceObserver deviceConnectedDidChange:]):
        (-[WebCoreAVVideoCaptureSourceObserver sessionRuntimeError:]):
        (-[WebCoreAVVideoCaptureSourceObserver beginSessionInterrupted:]):
        (-[WebCoreAVVideoCaptureSourceObserver endSessionInterrupted:]):
        (WebCore::AVVideoCaptureSource::initializeSession): Deleted.
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioSharedUnit::setupAudioUnit):
        (WebCore::CoreAudioSharedUnit::verifyIsCapturing):
        (WebCore::CoreAudioSharedUnit::captureFailed):
        (WebCore::CoreAudioCaptureSource::initializeToStartProducingData):
        (WebCore::CoreAudioCaptureSource::addEchoCancellationSource):
        (WebCore::CoreAudioCaptureSource::removeEchoCancellationSource):
        (WebCore::CoreAudioCaptureSource::startProducingData):
        (WebCore::CoreAudioCaptureSource::stopProducingData):
        (WebCore::CoreAudioCaptureSource::scheduleReconfiguration):
        (WebCore::CoreAudioCaptureSource::beginInterruption):
        (WebCore::CoreAudioCaptureSource::endInterruption):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
        (WebCore::ScreenDisplayCaptureSourceMac::startProducingData):
        (WebCore::ScreenDisplayCaptureSourceMac::stopProducingData):
        (WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream):

2019-03-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: remove agent as observer when disabling
        https://bugs.webkit.org/show_bug.cgi?id=195825
        <rdar://problem/48940255>

        Reviewed by Joseph Pecoraro.

        No change in functionality.

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::disable):

2019-03-15  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION (r239814): Most classes that user Timer have 7 bytes of padding after the Timer
        https://bugs.webkit.org/show_bug.cgi?id=194196

        Reviewed by Simon Fraser.

        Use std::nan as the value of m_unalignedNextFireTime to indicate the timer had been deleted
        instead of having a dedicated boolean, which consumes 7 extra bytes for padding.

        Note that some code in WebKit uses +Infinity as a fire time so we can't use that.

        * platform/Timer.cpp:
        (WebCore::TimerBase::TimerBase):
        (WebCore::TimerBase::~TimerBase):
        (WebCore::TimerBase::setNextFireTime):
        (WebCore::TimerBase::nextUnalignedFireInterval const):
        * platform/Timer.h:

2019-03-15  Sihui Liu  <sihui_liu@apple.com>

        [ Mojave WK1 ] Layout Test storage/indexeddb/database-odd-names.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=190350
        <rdar://problem/45089503>

        Reviewed by Geoffrey Garen.

        Start to use hash for database file names so that the files can work on any filesystem.

        We created v0 folder in IndexedDB directory to put the legacy databases, and v1 folder to put the upgraded 
        databases.

        Tests: TestWebKitAPI.IndexedDB.IndexedDBFileName
               TestWebKitAPI.IndexedDB.IndexedDBFileNameV0
               TestWebKitAPI.IndexedDB.IndexedDBFileNameV1
               TestWebKitAPI.IndexedDB.IndexedDBFileNameAPI
               TestWebKitAPI.IndexedDB.HashCollision

        * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
        (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
        (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot):
        * Modules/indexeddb/IDBDatabaseIdentifier.h:
        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::m_quotaManagerGetter):
        (WebCore::IDBServer::IDBServer::performGetAllDatabaseNames):
        (WebCore::IDBServer::removeAllDatabasesForFullOriginPath):
        (WebCore::IDBServer::removeAllDatabasesForOriginPath):
        (WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
        (WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
        (WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
        (WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
        (WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
        (WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):
        * Modules/indexeddb/server/IDBServer.h:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabasePathForDirectory):
        (WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabasePath const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameFromFile):
        (WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
        (WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectory const): Deleted.
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        (WebCore::IDBServer::SQLiteIDBBackingStore::databaseDirectory const):
        * Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
        (WebCore::IDBServer::SQLiteIDBTransaction::moveBlobFilesIfNecessary):
        (WebCore::IDBServer::SQLiteIDBTransaction::deleteBlobFilesIfNecessary):
        * platform/sql/SQLiteFileSystem.cpp:
        (WebCore::SQLiteFileSystem::computeHashForFileName):
        * platform/sql/SQLiteFileSystem.h:

2019-03-15  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] HTMLImageElement::willRespondToMouseClickEvents returns quirk value.
        https://bugs.webkit.org/show_bug.cgi?id=195657
        <rdar://problem/48834987>

        Reviewed by Simon Fraser.

        Images should not trigger hover by default (only when they actually respond to mouse events).

        Test: fast/events/touch/ios/content-observation/visibility-change-with-image-content.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

2019-03-15  Jer Noble  <jer.noble@apple.com>

        Add a "supportedConfiguration" dictionary to MediaCapabilitiesDecodingInfo and MediaCapabilitiesEncodingInfo
        https://bugs.webkit.org/show_bug.cgi?id=195763

        Reviewed by Jon Lee.

        Test: media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html

        Add support for a proposed addition to the Media Capabilities spec that would future-proof additional changes
        to Media Capabilities by allowing sites to check exactly what properties were queried by the browser when
        answering a decodeInfo() or enocdeInfo() query.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/mediacapabilities/AudioConfiguration.idl:
        * Modules/mediacapabilities/MediaCapabilities.cpp:
        (WebCore::MediaCapabilities::decodingInfo):
        (WebCore::MediaCapabilities::encodingInfo):
        * Modules/mediacapabilities/MediaCapabilities.idl:
        * Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
        * Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
        * Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
        * Modules/mediacapabilities/MediaDecodingConfiguration.idl:
        * Modules/mediacapabilities/MediaEncodingConfiguration.idl:
        * Modules/mediacapabilities/VideoConfiguration.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/MediaCapabilitiesDecodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.
        (WebCore::MediaCapabilitiesDecodingInfo::MediaCapabilitiesDecodingInfo):
        * platform/MediaCapabilitiesEncodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.
        (WebCore::MediaCapabilitiesEncodingInfo::MediaCapabilitiesEncodingInfo):
        * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
        (WebCore::createMediaPlayerDecodingConfigurationCocoa):
        * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h:
        * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp:
        (WebCore::createMediaPlayerDecodingConfigurationGStreamer):
        * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h:
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
        (WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
        * platform/mediacapabilities/MediaEngineConfigurationFactory.h:
        * platform/mock/MediaEngineConfigurationFactoryMock.cpp:
        (WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
        (WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
        * platform/mock/MediaEngineConfigurationFactoryMock.h:

2019-03-15  Antti Koivisto  <antti@apple.com>

        Use Region for event region even when it is a rectangle
        https://bugs.webkit.org/show_bug.cgi?id=195803

        Reviewed by Simon Fraser.

        Region type is now optimized for the common single-rectangle case so we can simplify code.

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setEventRegion):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::eventRegion const):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setEventRegion):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintIntoLayer):

2019-03-15  Jer Noble  <jer.noble@apple.com>

        Unreviewed unified build fix: GPUBindGroup has a default public constructor and destructor, so all its member
        variables must be fully defined.

        * platform/graphics/gpu/GPUBindGroup.h:

2019-03-15  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Broker access to Speech Synthesis
        https://bugs.webkit.org/show_bug.cgi?id=195645
        <rdar://problem/35369026>

        Reviewed by Brent Fulgham.

        To be able to close the connection to the speech synthesis daemon in the WebContent process,
        speech synthesis should be performed in the UI process. This patch forwards speech synthesis
        requests to the UI process by sending messages. On the UI process side, the speech synthesis
        is performed by simply using the existing platform speech synthesizer. Speech synthesis
        events are sent back to the WebContent process. All messages are async, except for the
        message to get the list of available voices.

        No new tests, covered by existing tests.

        * Modules/speech/DOMWindowSpeechSynthesis.cpp:
        (WebCore::DOMWindowSpeechSynthesis::speechSynthesis):
        * Modules/speech/SpeechSynthesis.cpp:
        (WebCore::SpeechSynthesis::create):
        (WebCore::SpeechSynthesis::SpeechSynthesis):
        (WebCore::SpeechSynthesis::setPlatformSynthesizer):
        (WebCore::SpeechSynthesis::getVoices):
        (WebCore::SpeechSynthesis::startSpeakingImmediately):
        (WebCore::SpeechSynthesis::cancel):
        (WebCore::SpeechSynthesis::pause):
        (WebCore::SpeechSynthesis::resume):
        (WebCore::SpeechSynthesis::boundaryEventOccurred):
        (WebCore::SpeechSynthesis::didStartSpeaking):
        (WebCore::SpeechSynthesis::didFinishSpeaking):
        (WebCore::SpeechSynthesis::didPauseSpeaking):
        (WebCore::SpeechSynthesis::didResumeSpeaking):
        (WebCore::SpeechSynthesis::speakingErrorOccurred):
        (WebCore::SpeechSynthesis::voicesChanged):
        * Modules/speech/SpeechSynthesis.h:
        * WebCore.xcodeproj/project.pbxproj:
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        (WebCore::Page::speechSynthesisClient const):
        * page/PageConfiguration.cpp:
        * page/PageConfiguration.h:
        * page/SpeechSynthesisClient.h: Added.
        * platform/PlatformSpeechSynthesisUtterance.h:
        * platform/PlatformSpeechSynthesizer.h:
        * platform/ios/PlatformSpeechSynthesizerIOS.mm:
        (-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakRangeOfSpeechString:utterance:]):
        * platform/mac/PlatformSpeechSynthesizerMac.mm:
        (-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakWord:ofString:]):
        * platform/mock/PlatformSpeechSynthesizerMock.cpp:
        (WebCore::PlatformSpeechSynthesizerMock::speak):

2019-03-15  Antti Koivisto  <antti@apple.com>

        Try to fix watchOS build.

        * platform/graphics/Region.h:
        (WebCore::Region::Span::decode):

2019-03-15  Simon Fraser  <simon.fraser@apple.com>

        [Async overflow Scrolling] Update positioned node layers when overflows are scrolled
        https://bugs.webkit.org/show_bug.cgi?id=195733
        rdar://problem/11642295

        Reviewed by Antti Koivisto.

        Make ScrollingTree positioned nodes in the two cases where we need them, as
        detected by RenderLayerCompositor::computeCoordinatedPositioningForLayer().

        For "Moves" layers we know that the overflow is not in the z-order ancestor chain,
        so ScrollingTree needs a map of overflow node -> affected positioned nodes which
        notifyRelatedNodesAfterScrollPositionChange() uses to find nodes to update after
        a scroll. Computing these dependent nodes in RenderLayerCompositor() would require
        correct dependency analysis between an overflow layers and "positioned" layers which
        is hard. It's easier to have "positioned" layers figure out which overflow nodes
        affect them, then compute the inverse relationship when the scrolling tree is updated
        which happens in ScrollingTreePositionedNode::commitStateBeforeChildren().

        Tests: scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html
               scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::applyLayerPositions):
        (WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):
        (WebCore::ScrollingTree::scrollingTreeAsText):
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::overflowRelatedNodes):
        * page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
        (WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingTreeOverflowScrollingNode.h:
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
        (WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
        (WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::layerContainingBlockCrossesCoordinatedScrollingBoundary):
        (WebCore::layerParentedAcrossCoordinatedScrollingBoundary):
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
        (WebCore::collectRelatedCoordinatedScrollingNodes):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):

2019-03-15  Antti Koivisto  <antti@apple.com>

        Optimize Region for single rectangle case
        https://bugs.webkit.org/show_bug.cgi?id=195743

        Reviewed by Simon Fraser.

        Instrumentation shows vast majority of Region objects consist of a single rectangle. However it always allocates
        the large Shape data structure. This makes it unsuitable to use as a member in any popular objects.

        This patch optimizes the single rectangle case by using only the bounds rectangle to describe it.
        Shape is allocated on demand. This makes it safe to use Region as a data member where a rectangle is the common case.

        The patch also modernizes Region encoding/decoding support.

        * platform/graphics/Region.cpp:
        (WebCore::Region::Region):
        (WebCore::Region::~Region):
        (WebCore::Region::operator=):
        (WebCore::Region::rects const):
        (WebCore::Region::contains const):
        (WebCore::Region::intersects const):
        (WebCore::Region::Shape::Shape):
        (WebCore::Region::Shape::appendSpan):
        (WebCore::Region::dump const):
        (WebCore::Region::intersect):
        (WebCore::Region::unite):
        (WebCore::Region::subtract):
        (WebCore::Region::translate):
        (WebCore::Region::setShape):
        (WebCore::Region::Shape::isValid const): Deleted.
        (WebCore::Region::Shape::swap): Deleted.
        (WebCore::Region::updateBoundsFromShape): Deleted.

        Remove some now unused function.

        * platform/graphics/Region.h:
        (WebCore::Region::isRect const):
        (WebCore::Region::gridSize const):
        (WebCore::Region::copyShape const):
        (WebCore::operator==):
        (WebCore::Region::Span::encode const):
        (WebCore::Region::Span::decode):
        (WebCore::Region::Shape::encode const):
        (WebCore::Region::Shape::decode):
        (WebCore::Region::encode const):
        (WebCore::Region::decode):

        This is now part of type.

        (WebCore::Region::isValid const): Deleted.
        (WebCore::Region::Span::Span): Deleted.
        (WebCore::Region::shapeSegments const): Deleted.
        (WebCore::Region::shapeSpans const): Deleted.
        (WebCore::Region::setShapeSegments): Deleted.
        (WebCore::Region::setShapeSpans): Deleted.
        (WebCore::Region::Shape::segments const): Deleted.
        (WebCore::Region::Shape::spans const): Deleted.
        (WebCore::Region::Shape::setSegments): Deleted.
        (WebCore::Region::Shape::setSpans): Deleted.

        No need to expose these for encoding anymore.

2019-03-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to capture a screenshot of a node from within the page
        https://bugs.webkit.org/show_bug.cgi?id=194279
        <rdar://problem/10731573>

        Reviewed by Joseph Pecoraro.

        Test: inspector/console/console-screenshot.html

        Add `console.screenshot` functionality, which displays a screenshot of a given object (if
        able) within Web Inspector's Console tab. From there, it can be viewed and saved.

        Currently, `console.screenshot` will
         - capture an image of a `Node` (if provided)
         - capture an image of the viewport if nothing is provided

        * page/PageConsoleClient.h:
        * page/PageConsoleClient.cpp:
        (WebCore::PageConsoleClient::addMessage):
        (WebCore::PageConsoleClient::screenshot): Added.

        * workers/WorkerConsoleClient.h:
        * workers/WorkerConsoleClient.cpp:
        (WebCore::WorkerConsoleClient::screenshot): Added.
        * worklets/WorkletConsoleClient.h:
        * worklets/WorkletConsoleClient.cpp:
        (WebCore::WorkletConsoleClient::screenshot): Added.

        * inspector/CommandLineAPIModuleSource.js:
        (CommandLineAPIImpl.prototype.screenshot): Added.

        * inspector/InspectorInstrumentation.h:

2019-03-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Retain PrivateName of Symbol before passing it to operations potentially incurring GC
        https://bugs.webkit.org/show_bug.cgi?id=195791
        <rdar://problem/48806130>

        Reviewed by Mark Lam.

        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::setupModuleScriptHandlers):

2019-03-14  Brent Fulgham  <bfulgham@apple.com>

        Move CoreCrypto SPI declarations to an appropriate PAL/spi header
        https://bugs.webkit.org/show_bug.cgi?id=195754
        <rdar://problem/48591957>

        Reviewed by Jiewen Tan.

        Move the forward declarations of various CoreCrypto SPI to an appropriate PAL/spi header.
        Update the const correctness of one function call to match new SDK declaration.

        No tests because there are no changes in behavior.

        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoAlgorithmHKDFMac.cpp:
        (WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

2019-03-14  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: re-enable some leak tests
        https://bugs.webkit.org/show_bug.cgi?id=194806

        Reviewed by Geoffrey Garen.

        Protected JSIDBCursor object when advance/continue request on IDBCursor is not finished, because after the 
        advance operation completes on success, we need to return the same JSIDBCursor object as before the advance, 
        and during the wait for advance operation to complete, we need to return error as the result. 
 
        Covered by existing tests.

        * Modules/indexeddb/IDBCursor.cpp:
        (WebCore::IDBCursor::setGetResult):
        (WebCore::IDBCursor::clearWrappers):
        * Modules/indexeddb/IDBCursor.h:
        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::stop):
        (WebCore::IDBRequest::setResult):
        (WebCore::IDBRequest::setResultToStructuredClone):
        (WebCore::IDBRequest::setResultToUndefined):
        (WebCore::IDBRequest::willIterateCursor):
        (WebCore::IDBRequest::didOpenOrIterateCursor):
        (WebCore::IDBRequest::clearWrappers):
        * Modules/indexeddb/IDBRequest.h:
        (WebCore::IDBRequest::cursorWrapper):
        * bindings/js/JSIDBRequestCustom.cpp:
        (WebCore::JSIDBRequest::visitAdditionalChildren):
        * bindings/js/JSValueInWrappedObject.h:
        (WebCore::JSValueInWrappedObject::JSValueInWrappedObject):
        (WebCore::JSValueInWrappedObject::operator=):
        (WebCore::JSValueInWrappedObject::clear):

2019-03-14  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r242981.

        Causing internal build failures on watch/tv OS

        Reverted changeset:

        "Move CoreCrypto SPI declarations to an appropriate PAL/spi
        header"
        https://bugs.webkit.org/show_bug.cgi?id=195754
        https://trac.webkit.org/changeset/242981

2019-03-14  Sihui Liu  <sihui_liu@apple.com>

        Web process is put to suspended when holding locked WebSQL files
        https://bugs.webkit.org/show_bug.cgi?id=195768

        Reviewed by Geoffrey Garen.

        We need to keep processes active during database close, because SQLite database may run a checkpoint operation
        and lock database files.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::useWALJournalMode):
        (WebCore::SQLiteDatabase::close):
        * platform/sql/SQLiteDatabase.h:

2019-03-14  Brent Fulgham  <bfulgham@apple.com>

        Move CoreCrypto SPI declarations to an appropriate PAL/spi header
        https://bugs.webkit.org/show_bug.cgi?id=195754
        <rdar://problem/48591957>

        Reviewed by Jiewen Tan.

        Move the forward declarations of various CoreCrypto SPI to an appropriate PAL/spi header.
        Update the const correctness of one function call to match new SDK declaration.

        No tests because there are no changes in behavior.

        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoAlgorithmHKDFMac.cpp:
        (WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

2019-03-14  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Rename SVGProperty to SVGLegacyProperty and rename SVGAnimatedProperty to SVGLegacyAnimatedProperty
        https://bugs.webkit.org/show_bug.cgi?id=195767

        Reviewed by Tim Horton.

        This is a step towards removing the SVG properties tear off objects.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * svg/SVGAngle.h:
        (WebCore::SVGAngle::create):
        (WebCore::SVGAngle::SVGAngle):
        * svg/SVGAnimateElement.h:
        * svg/SVGAnimatedTypeAnimator.h:
        (WebCore::SVGAnimatedTypeAnimator::castAnimatedPropertyToActualType):
        * svg/SVGElement.h:
        (WebCore::SVGElement::lookupAnimatedProperty const):
        (WebCore::SVGElement::lookupOrCreateAnimatedProperty):
        (WebCore::SVGElement::lookupOrCreateAnimatedProperties):
        * svg/SVGLength.h:
        (WebCore::SVGLength::create):
        (WebCore::SVGLength::SVGLength):
        * svg/SVGMatrix.h:
        (WebCore::SVGMatrix::create):
        (WebCore::SVGMatrix::SVGMatrix):
        * svg/SVGNumber.h:
        (WebCore::SVGNumber::create):
        (WebCore::SVGNumber::SVGNumber):
        * svg/SVGPathElement.cpp:
        (WebCore::SVGPathElement::lookupOrCreateDWrapper):
        * svg/SVGPathElement.h:
        * svg/SVGPathSegList.cpp:
        (WebCore::SVGPathSegList::processIncomingListItemValue):
        * svg/SVGPathSegWithContext.h:
        (WebCore::SVGPathSegWithContext::animatedProperty const):
        * svg/SVGPoint.h:
        (WebCore::SVGPoint::create):
        (WebCore::SVGPoint::SVGPoint):
        * svg/SVGPreserveAspectRatio.h:
        (WebCore::SVGPreserveAspectRatio::create):
        (WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio):
        * svg/SVGRect.h:
        (WebCore::SVGRect::create):
        (WebCore::SVGRect::SVGRect):
        * svg/SVGTransform.h:
        (WebCore::SVGTransform::create):
        (WebCore::SVGTransform::SVGTransform):
        * svg/properties/SVGAnimatedListPropertyTearOff.h:
        (WebCore::SVGAnimatedListPropertyTearOff::findItem):
        (WebCore::SVGAnimatedListPropertyTearOff::SVGAnimatedListPropertyTearOff):
        * svg/properties/SVGAnimatedProperty.cpp: Removed.
        * svg/properties/SVGAnimatedProperty.h: Removed.
        * svg/properties/SVGAnimatedPropertyTearOff.h:
        * svg/properties/SVGAnimatedStaticPropertyTearOff.h:
        (WebCore::SVGAnimatedStaticPropertyTearOff::SVGAnimatedStaticPropertyTearOff):
        * svg/properties/SVGAttributeAccessor.h:
        (WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperty const):
        (WebCore::SVGAttributeAccessor::lookupAnimatedProperty const):
        (WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperties const):
        (WebCore::SVGAnimatedAttributeAccessor::lookupOrCreateAnimatedProperty):
        (WebCore::SVGAnimatedAttributeAccessor::lookupAnimatedProperty):
        * svg/properties/SVGAttributeOwnerProxy.h:
        * svg/properties/SVGAttributeOwnerProxyImpl.h:
        * svg/properties/SVGAttributeRegistry.h:
        (WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperty const):
        (WebCore::SVGAttributeRegistry::lookupAnimatedProperty const):
        (WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperties const):
        (WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertyBaseTypes):
        (WebCore::SVGAttributeRegistry::lookupAnimatedPropertyBaseTypes):
        (WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertiesBaseTypes):
        * svg/properties/SVGLegacyAnimatedProperty.cpp: Copied from Source/WebCore/svg/properties/SVGAnimatedProperty.cpp.
        (WebCore::SVGLegacyAnimatedProperty::SVGLegacyAnimatedProperty):
        (WebCore::SVGLegacyAnimatedProperty::~SVGLegacyAnimatedProperty):
        (WebCore::SVGLegacyAnimatedProperty::commitChange):
        (WebCore::SVGAnimatedProperty::SVGAnimatedProperty): Deleted.
        (WebCore::SVGAnimatedProperty::~SVGAnimatedProperty): Deleted.
        (WebCore::SVGAnimatedProperty::commitChange): Deleted.
        * svg/properties/SVGLegacyAnimatedProperty.h: Copied from Source/WebCore/svg/properties/SVGAnimatedProperty.h.
        (WebCore::SVGLegacyAnimatedProperty::lookupOrCreateAnimatedProperty):
        (WebCore::SVGLegacyAnimatedProperty::lookupAnimatedProperty):
        (WebCore::SVGAnimatedProperty::isAnimating const): Deleted.
        (WebCore::SVGAnimatedProperty::isAnimatedListTearOff const): Deleted.
        (WebCore::SVGAnimatedProperty::contextElement const): Deleted.
        (WebCore::SVGAnimatedProperty::attributeName const): Deleted.
        (WebCore::SVGAnimatedProperty::animatedPropertyType const): Deleted.
        (WebCore::SVGAnimatedProperty::isReadOnly const): Deleted.
        (WebCore::SVGAnimatedProperty::setIsReadOnly): Deleted.
        (WebCore::SVGAnimatedProperty::lookupOrCreateAnimatedProperty): Deleted.
        (WebCore::SVGAnimatedProperty::lookupAnimatedProperty): Deleted.
        (WebCore::SVGAnimatedProperty::animatedPropertyCache): Deleted.
        * svg/properties/SVGLegacyProperty.h: Copied from Source/WebCore/svg/properties/SVGProperty.h.
        * svg/properties/SVGListProperty.h:
        * svg/properties/SVGProperty.h: Removed.
        * svg/properties/SVGPropertyTearOff.h:
        (WebCore::SVGPropertyTearOff::create):
        (WebCore::SVGPropertyTearOff::animatedProperty const):
        (WebCore::SVGPropertyTearOff::setAnimatedProperty):
        (WebCore::SVGPropertyTearOff::SVGPropertyTearOff):

2019-03-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242963.

        Breaks watchOS build.

        Reverted changeset:

        "Move CommonCrypto SPI declarations to an appropriate PAL/spi
        header"
        https://bugs.webkit.org/show_bug.cgi?id=195754
        https://trac.webkit.org/changeset/242963

2019-03-14  Chris Dumez  <cdumez@apple.com>

        Unreviewed, update xcfilelist files as they are out of sync.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-03-14  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Updates to GPUCommandBuffer for new GPUCommandEncoder concept
        https://bugs.webkit.org/show_bug.cgi?id=195083
        <rdar://problem/48423591>

        Reviewed by Dean Jackson.

        Fixing build error and re-introducing rolled-out changes.
        WebGPUCommandBuffer now represents a completed GPUCommandBuffer that can only be used in queue submits. The previous WebGPUCommandBuffer
        is now WebGPUCommandEncoder.

        Affected Web GPU tests updated to match new API.

        New files and symbols:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Implement new WebGPUCommandBuffer, now just a DOM object carrier for a finished GPUCommandBuffer:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::create):
        (WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
        (WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const): Deleted.
        (WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const): Deleted.
        (WebCore::WebGPUCommandBuffer::beginRenderPass): Deleted.
        (WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Deleted.
        (WebCore::WebGPUCommandBuffer::copyBufferToTexture): Deleted.
        (WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Deleted.
        (WebCore::WebGPUCommandBuffer::copyTextureToTexture): Deleted.
        * Modules/webgpu/WebGPUCommandBuffer.h:
        (WebCore::WebGPUCommandBuffer::commandBuffer):
        (WebCore::WebGPUCommandBuffer::commandBuffer const): Deleted.
        * Modules/webgpu/WebGPUCommandBuffer.idl:

        Rename old WebGPUCommandBuffer to WebGPUCommandEncoder:
        * Modules/webgpu/WebGPUCommandEncoder.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp.
        (WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
        (WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
        (WebCore::WebGPUCommandEncoder::create):
        (WebCore::WebGPUCommandEncoder::WebGPUCommandEncoder):
        (WebCore::WebGPUCommandEncoder::beginRenderPass):
        (WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
        (WebCore::WebGPUCommandEncoder::copyBufferToTexture):
        (WebCore::WebGPUCommandEncoder::copyTextureToBuffer):
        (WebCore::WebGPUCommandEncoder::copyTextureToTexture):
        (WebCore::WebGPUCommandEncoder::finish): Added. "Completes" this and invalidates it. Returns its GPUCommandBuffer, ready for submission.
        * Modules/webgpu/WebGPUCommandEncoder.h: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h.
        * Modules/webgpu/WebGPUCommandEncoder.idl: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createCommandEncoder const): Renamed fom createCommandBuffer. Now returns non-nullable.
        (WebCore::WebGPUDevice::createCommandBuffer const): Deleted.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
        (WebCore::WebGPUProgrammablePassEncoder::endPass): No longer returns the original WebGPUCommandBuffer.
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
        (WebCore::WebGPUProgrammablePassEncoder::setPipeline):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::submit): Replace unnecessary rvalue reference parameter.
        * Modules/webgpu/WebGPUQueue.h:
        * Modules/webgpu/WebGPUQueue.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        (WebCore::WebGPURenderPassEncoder::draw):
        (WebCore::WebGPURenderPassEncoder::passEncoder const): Now returns a pointer since it is properly backed by a RefPtr.
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::getCurrentTexture): No longer invalidates m_currentTexture. Doh!
        * platform/graphics/gpu/GPUCommandBuffer.h: Missing includes for the *CopyView structs.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateCommandBuffer const): Renamed from createCommandBuffer.
        (WebCore::GPUDevice::createCommandBuffer): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::tryCreate): Renamed from create.
        (WebCore::GPUCommandBuffer::create): Deleted.

2019-03-14  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Enum cleanup
        https://bugs.webkit.org/show_bug.cgi?id=195766

        Reviewed by Myles C. Maxfield.

        Clean up enum implementations in Web GPU. Enums referenced by only one class now share implementation files with that class to reduce clutter.
        
        No change in behavior.

        * DerivedSources.make:
        * Modules/webgpu/GPUBindGroupLayoutBinding.h:
        * Modules/webgpu/GPUBindGroupLayoutBinding.idl:
        * Modules/webgpu/GPUInputStateDescriptor.idl:
        * Modules/webgpu/GPURequestAdapterOptions.idl:
        * Modules/webgpu/GPUSamplerDescriptor.idl:
        * Modules/webgpu/GPUTextureDescriptor.idl:
        * Modules/webgpu/GPUTextureDimension.idl: Removed.
        * Modules/webgpu/GPUVertexAttributeDescriptor.idl:
        * Modules/webgpu/GPUVertexInputDescriptor.idl:
        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::validateBufferBindingType):
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUInputStateDescriptor.h:
        * platform/graphics/gpu/GPURequestAdapterOptions.h:
        * platform/graphics/gpu/GPUSamplerDescriptor.h:
        * platform/graphics/gpu/GPUTextureDescriptor.h:
        * platform/graphics/gpu/GPUTextureDimension.h: Removed.
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::MTLDataTypeForBindingType):
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
        (WebCore::GPUBindGroup::tryCreate):
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::create):
        * platform/graphics/gpu/cocoa/GPUSamplerMetal.mm:
        (WebCore::mtlAddressModeForAddressMode):
        (WebCore::mtlMinMagFilterForFilterMode):
        (WebCore::mtlMipFilterForFilterMode):

2019-03-14  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Use enum class for AnimationMode
        https://bugs.webkit.org/show_bug.cgi?id=195762

        Reviewed by Tim Horton.

        Convert AnimationMode into an enum class.

        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::calculateFromAndByValues):
        (WebCore::SVGAnimateElementBase::isAdditive const):
        * svg/SVGAnimateMotionElement.cpp:
        (WebCore::SVGAnimateMotionElement::calculateFromAndByValues):
        (WebCore::SVGAnimateMotionElement::calculateAnimatedValue):
        (WebCore::SVGAnimateMotionElement::updateAnimationMode):
        * svg/SVGAnimatedAngle.cpp:
        (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedBoolean.cpp:
        (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedColor.cpp:
        (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedEnumeration.cpp:
        (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedInteger.cpp:
        (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedIntegerOptionalInteger.cpp:
        (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedLength.cpp:
        (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedLengthList.cpp:
        (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedNumber.cpp:
        (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedNumberList.cpp:
        (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedNumberOptionalNumber.cpp:
        (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedPath.cpp:
        (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedPointList.cpp:
        (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedPreserveAspectRatio.cpp:
        (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedRect.cpp:
        (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue):
        * svg/SVGAnimatedTransformList.cpp:
        (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue):
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::updateAnimationMode):
        (WebCore::SVGAnimationElement::isAdditive const):
        (WebCore::SVGAnimationElement::isAccumulated const):
        (WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced):
        (WebCore::SVGAnimationElement::startedActiveInterval):
        (WebCore::SVGAnimationElement::updateAnimation):
        * svg/SVGAnimationElement.h:
        (WebCore::SVGAnimationElement::adjustFromToListValues):
        (WebCore::SVGAnimationElement::animateDiscreteType):
        (WebCore::SVGAnimationElement::animateAdditiveNumber):
        * svg/SVGSetElement.cpp:
        (WebCore::SVGSetElement::SVGSetElement):
        (WebCore::SVGSetElement::updateAnimationMode):

2019-03-14  Ryosuke Niwa  <rniwa@webkit.org>

        Storing a Node in Ref/RefPtr inside its destructor results in double delete
        https://bugs.webkit.org/show_bug.cgi?id=195661

        Reviewed by Brent Fulgham.

        Set Node::m_refCount to 1 before calling its virtual destructor.

        This is a security mitigation to prevent any code which ends up storing the node to Ref / RefPtr
        inside the destructor, which is a programming error caught by debug assertions, from triggering
        a double-delete on the same Node.

        Such a code would hit the debug assertions in Node::deref() because m_inRemovedLastRefFunction
        had been set to true by then.

        * dom/Document.cpp:
        (WebCore::Document::removedLastRef):
        * dom/Document.h:
        (WebCore::Document::decrementReferencingNodeCount):
        * dom/Node.cpp:
        (WebCore::Node::~Node):
        (WebCore::Node::removedLastRef):

2019-03-14  Brent Fulgham  <bfulgham@apple.com>

        Move CommonCrypto SPI declarations to an appropriate PAL/spi header
        https://bugs.webkit.org/show_bug.cgi?id=195754
        <rdar://problem/48591957>

        Reviewed by Jiewen Tan.

        Move the forward declarations of various CommonCrypto SPI to an appropriate PAL/spi header.
        Update the const correctness of one function call to match new SDK declaration.

        No tests because there are no changes in behavior.

        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoAlgorithmHKDFMac.cpp:
        (WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

2019-03-14  Chris Dumez  <cdumez@apple.com>

        Add WebsitePolicy for the client to specify the device orientation & motion access policy
        https://bugs.webkit.org/show_bug.cgi?id=195750

        Reviewed by Geoffrey Garen.

        Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
        the client already knows access to the device motion & orientation API will be granted / denied,
        it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
        permission is requested by JS.

        * dom/DeviceOrientationAndMotionAccessController.cpp:
        (WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
        (WebCore::DeviceOrientationAndMotionAccessController::setAccessState):
        (WebCore::DeviceOrientationAndMotionAccessController::accessState const):
        * dom/DeviceOrientationAndMotionAccessController.h:
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::deviceOrientationAndMotionAccessState const):
        (WebCore::DocumentLoader::setDeviceOrientationAndMotionAccessState):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::isAllowedToUseDeviceMotionOrientation const):

2019-03-14  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r242931.

        Causing internal watch/tv OS build failures

        Reverted changeset:

        "[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue
        concept"
        https://bugs.webkit.org/show_bug.cgi?id=195083
        https://trac.webkit.org/changeset/242931

2019-03-14  Chris Dumez  <cdumez@apple.com>

        Device orientation's permission should only require a user gesture to prompt the user
        https://bugs.webkit.org/show_bug.cgi?id=195731

        Reviewed by Geoffrey Garen.

        Device orientation's permission should only require a user gesture to prompt the user. If the
        user already made a decision, we should resolve the promise with this decision, even without
        user gesture.

        This is useful for JS to figure out if they are access to device orientation or not because
        showing UI for the user to give permission.

        No new tests, updated existing tests.

        * dom/DeviceOrientationAndMotionAccessController.cpp:
        (WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
        * dom/DeviceOrientationAndMotionAccessController.h:
        * dom/DeviceOrientationOrMotionEvent.cpp:
        (WebCore::DeviceOrientationOrMotionEvent::requestPermission):

2019-03-14  Youenn Fablet  <youenn@apple.com>

        Reset storage quota when clearing IDB/Cache API entries
        https://bugs.webkit.org/show_bug.cgi?id=195716

        Reviewed by Chris Dumez.

        On clearing of databases, reset all quota users.
        This will ensure all layout test runs start with a clean state.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
        * storage/StorageQuotaManager.h:
        (WebCore::StorageQuotaManager::resetQuota):

2019-03-14  Jer Noble  <jer.noble@apple.com>

        Certain videos are causing a crash when used as WebGL texture
        https://bugs.webkit.org/show_bug.cgi?id=195700
        <rdar://problem/48869347>

        Reviewed by Eric Carlson.

        CFEqual is not null-safe, so perform a null and type check before comparing.

        * platform/graphics/cv/VideoTextureCopierCV.cpp:
        (WebCore::transferFunctionFromString):

2019-03-14  Zalan Bujtas  <zalan@apple.com>

        Cleanup inline boxes when list marker gets blockified
        https://bugs.webkit.org/show_bug.cgi?id=195746
        <rdar://problem/48049175>

        Reviewed by Antti Koivisto.

        Normally when an element gets blockified (inline -> block) we destroy its renderer and construct a new one (RenderInline -> RenderBlock).
        During this process the associated inline boxtree gets destroyed as well. Since RenderListMarker is just a generic RenderBox, the blockifying
        change does not require a new renderer.
        This patch takes care of destroying the inline boxtree when the marker gains block display type. 

        Test: fast/block/float/list-marker-is-float-crash.html

        * rendering/RenderListMarker.cpp:
        (WebCore::RenderListMarker::styleDidChange):

2019-03-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: provide a way to get the contents of resources
        https://bugs.webkit.org/show_bug.cgi?id=195266
        <rdar://problem/48550911>

        Reviewed by Joseph Pecoraro.

        Test: inspector/audit/run-resources.html

        * inspector/InspectorAuditResourcesObject.idl: Added.
        * inspector/InspectorAuditResourcesObject.h: Added.
        (WebCore::InspectorAuditResourcesObject::create):
        (WebCore::InspectorAuditResourcesObject::Resource):
        (WebCore::InspectorAuditResourcesObject::ResourceContent):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedResourceClient):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedFontClient):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedImageClient):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedRawResourceClient):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedStyleSheetClient):
        (WebCore::InspectorAuditResourcesObject::InspectorAuditCachedSVGDocumentClient):
        * inspector/InspectorAuditResourcesObject.cpp: Added.
        (WebCore::InspectorAuditResourcesObject::InspectorAuditResourcesObject):
        (WebCore::InspectorAuditResourcesObject::getResources):
        (WebCore::InspectorAuditResourcesObject::getResourceContent):
        (WebCore::InspectorAuditResourcesObject::clientForResource):

        * inspector/agents/InspectorPageAgent.h:
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::cachedResourcesForFrame): Added.
        (WebCore::allResourcesURLsForFrame):
        Moved a file static function to be a class static function so it can be used elsewhere.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-03-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Console: getEventListeners should work for any EventTarget
        https://bugs.webkit.org/show_bug.cgi?id=195713

        Reviewed by Joseph Pecoraro.

        Test: inspector/console/command-line-api-getEventListeners.html

        * dom/EventTarget.h:
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::eventTypes): Added.

        * inspector/CommandLineAPIHost.idl:
        * inspector/CommandLineAPIHost.h:
        (WebCore::CommandLineAPIHost::init):
        * inspector/CommandLineAPIHost.cpp:
        (WebCore::CommandLineAPIHost::disconnect):
        (WebCore::CommandLineAPIHost::getEventListeners):
        (WebCore::listenerEntriesFromListenerInfo): Deleted.

        * inspector/CommandLineAPIModuleSource.js:
        (CommandLineAPIImpl.prototype.getEventListeners):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):

2019-03-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Styles: `::-webkit-scrollbar*` rules aren't shown
        https://bugs.webkit.org/show_bug.cgi?id=195123
        <rdar://problem/48450148>

        Reviewed by Joseph Pecoraro.

        Test: inspector/css/getMatchedStylesForNode.html

        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::protocolValueForPseudoId): Added.
        (WebCore::InspectorCSSAgent::getMatchedStylesForNode):

2019-03-13  Benjamin Poulain  <benjamin@webkit.org>

        Fix the argument type of RenderView::resumePausedImageAnimationsIfNeeded()
        https://bugs.webkit.org/show_bug.cgi?id=195659

        Reviewed by Saam Barati.

        The two callers of resumePausedImageAnimationsIfNeeded() both get the IntRect
        as a reference. The rect was going on the stack then used as a reference again.

        * rendering/RenderView.cpp:
        (WebCore::RenderView::resumePausedImageAnimationsIfNeeded):
        * rendering/RenderView.h:

2019-03-13  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Stop content observation when content calls preventDefault() on touch events
        https://bugs.webkit.org/show_bug.cgi?id=195724
        <rdar://problem/48873456>

        Reviewed by Simon Fraser.

        Call willNotProceedWithClick on preventDefault. This is very similar to the long press case.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::willNotProceedWithClick):
        (WebCore::ContentChangeObserver::didRecognizeLongPress):
        (WebCore::ContentChangeObserver::didPreventDefaultForEvent):
        * page/ios/ContentChangeObserver.h:

2019-03-13  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue concept
        https://bugs.webkit.org/show_bug.cgi?id=195083
        <rdar://problem/48423591>

        Reviewed by Dean Jackson.

        WebGPUCommandBuffer now represents a completed GPUCommandBuffer that can only be used in queue submits. The previous WebGPUCommandBuffer
        is now WebGPUCommandEncoder.

        Affected Web GPU tests updated to match new API.

        New files and symbols:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Implement new WebGPUCommandBuffer, now just a DOM object carrier for a finished GPUCommandBuffer:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::create):
        (WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
        (WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const): Deleted.
        (WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const): Deleted.
        (WebCore::WebGPUCommandBuffer::beginRenderPass): Deleted.
        (WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Deleted.
        (WebCore::WebGPUCommandBuffer::copyBufferToTexture): Deleted.
        (WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Deleted.
        (WebCore::WebGPUCommandBuffer::copyTextureToTexture): Deleted.
        * Modules/webgpu/WebGPUCommandBuffer.h:
        (WebCore::WebGPUCommandBuffer::commandBuffer):
        (WebCore::WebGPUCommandBuffer::commandBuffer const): Deleted.
        * Modules/webgpu/WebGPUCommandBuffer.idl:

        Rename old WebGPUCommandBuffer to WebGPUCommandEncoder:
        * Modules/webgpu/WebGPUCommandEncoder.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp.
        (WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
        (WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
        (WebCore::WebGPUCommandEncoder::create):
        (WebCore::WebGPUCommandEncoder::WebGPUCommandEncoder):
        (WebCore::WebGPUCommandEncoder::beginRenderPass):
        (WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
        (WebCore::WebGPUCommandEncoder::copyBufferToTexture):
        (WebCore::WebGPUCommandEncoder::copyTextureToBuffer):
        (WebCore::WebGPUCommandEncoder::copyTextureToTexture):
        (WebCore::WebGPUCommandEncoder::finish): Added. "Completes" this and invalidates it. Returns its GPUCommandBuffer, ready for submission.
        * Modules/webgpu/WebGPUCommandEncoder.h: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h.
        * Modules/webgpu/WebGPUCommandEncoder.idl: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createCommandEncoder const): Renamed fom createCommandBuffer. Now returns non-nullable.
        (WebCore::WebGPUDevice::createCommandBuffer const): Deleted.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
        (WebCore::WebGPUProgrammablePassEncoder::endPass): No longer returns the original WebGPUCommandBuffer.
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
        (WebCore::WebGPUProgrammablePassEncoder::setPipeline):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::submit): Replace unnecessary rvalue reference parameter.
        * Modules/webgpu/WebGPUQueue.h:
        * Modules/webgpu/WebGPUQueue.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        (WebCore::WebGPURenderPassEncoder::draw):
        (WebCore::WebGPURenderPassEncoder::passEncoder const): Now returns a pointer since it is properly backed by a RefPtr.
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::getCurrentTexture): No longer invalidates m_currentTexture. Doh!
        * platform/graphics/gpu/GPUCommandBuffer.h: Missing includes for the *CopyView structs.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateCommandBuffer const): Renamed from createCommandBuffer.
        (WebCore::GPUDevice::createCommandBuffer): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::tryCreate): Renamed from create.
        (WebCore::GPUCommandBuffer::create): Deleted.

2019-03-13  Zalan Bujtas  <zalan@apple.com>

        [WeakPtr] RenderListMarker::m_listItem should be a WeakPtr
        https://bugs.webkit.org/show_bug.cgi?id=195704
        <rdar://problem/48486278>

        Reviewed by Simon Fraser.

        * rendering/RenderListMarker.cpp:
        (WebCore::RenderListMarker::RenderListMarker):
        (WebCore::RenderListMarker::paint):
        (WebCore::RenderListMarker::layout):
        (WebCore::RenderListMarker::updateContent):
        (WebCore::RenderListMarker::computePreferredLogicalWidths):
        (WebCore::RenderListMarker::lineHeight const):
        (WebCore::RenderListMarker::baselinePosition const):
        (WebCore::RenderListMarker::suffix const):
        (WebCore::RenderListMarker::isInside const):
        (WebCore::RenderListMarker::getRelativeMarkerRect):
        * rendering/RenderListMarker.h:

2019-03-13  Dean Jackson  <dino@apple.com>

        Block all plugins smaller than 5x5px
        https://bugs.webkit.org/show_bug.cgi?id=195702
        <rdar://problem/28435204>

        Reviewed by Sam Weinig.

        Block all plugins that are smaller than a threshold, in this case
        5px x 5px. Other browsers have implemented this for a while, and now
        that we have Intersection Observers, small plugins are no longer
        necessary.

        Test: plugins/small-plugin-blocked.html

        * en.lproj/Localizable.strings: New message for a small plugin.
        * platform/LocalizedStrings.cpp:
        (WebCore::pluginTooSmallText):
        * platform/LocalizedStrings.h:

        * html/HTMLPlugInElement.cpp: Helper function for Internals testing.
        (WebCore::HTMLPlugInElement::isBelowSizeThreshold const):
        * html/HTMLPlugInElement.h:

        * loader/EmptyClients.cpp: Removed an unused function.
        (WebCore::EmptyFrameLoaderClient::recreatePlugin): Deleted.
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoaderClient.h:

        * page/Settings.yaml: Add flag for new feature.

        * rendering/RenderEmbeddedObject.cpp: New unavailability reason for
        embedded objects.
        (WebCore::unavailablePluginReplacementText):
        * rendering/RenderEmbeddedObject.h:
        (WebCore::RenderEmbeddedObject::pluginUnavailabilityReason const):

        * testing/Internals.cpp: Helper function for testing.
        (WebCore::Internals::pluginIsBelowSizeThreshold):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-03-13  Zalan Bujtas  <zalan@apple.com>

        Use RenderBox::previousSiblingBox/nextSiblingBox in RenderMultiColumnFlow
        https://bugs.webkit.org/show_bug.cgi?id=195701
        <rdar://problem/48448658>

        Reviewed by Simon Fraser.

        It's safer to use existing RenderBox functions to get sibling boxes.

        Test: fast/ruby/crash-when-paginated-ruby.html

        * rendering/RenderMultiColumnFlow.cpp:
        (WebCore::RenderMultiColumnFlow::nextColumnSetOrSpannerSiblingOf):
        (WebCore::RenderMultiColumnFlow::previousColumnSetOrSpannerSiblingOf):

2019-03-13  Keith Rollin  <krollin@apple.com>

        Add support for new StagedFrameworks layout
        https://bugs.webkit.org/show_bug.cgi?id=195543

        Reviewed by Alexey Proskuryakov.

        When creating the WebKit layout for out-of-band Safari/WebKit updates,
        use an optional path prefix when called for.

        No new tests since there should be no observable behavior difference.

        * Configurations/WebCore.xcconfig:

2019-03-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix an edge case where HTMLFormElement::removeFormElement is invoked twice with the same element
        https://bugs.webkit.org/show_bug.cgi?id=195663
        <rdar://problem/48576391>

        Reviewed by Ryosuke Niwa.

        Currently, it's possible for HTMLFormControlElement's destructor to be reentrant. This may happen if the form
        control element is ref'd while carrying out its destructor's logic. This may happen in two places in
        HTMLFormControlElement (didChangeForm and resetDefaultButton), both of which actually don't require ensuring a
        protected reference to the form control element since they should never result in any script execution.

        To fix the bug, convert these strong references into raw pointers, and add ScriptDisallowedScope to ensure that
        we don't change these codepaths in the future, such that they trigger arbitrary script execution.

        Test: fast/forms/remove-associated-element-after-gc.html

        * html/HTMLFormControlElement.cpp:
        (WebCore::HTMLFormControlElement::didChangeForm):
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::resetDefaultButton):

2019-03-13  Daniel Bates  <dabates@apple.com>

        Remove some unnecessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards
        https://bugs.webkit.org/show_bug.cgi?id=195703

        Reviewed by Tim Horton.

        Remove out-of-date comment and unncessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards. Following
        r240604 we now make use of WebCore::windowsKeyCodeForCharCode() even for hardware key events
        when USE(UIKIT_KEYBOARD_ADDITIONS) is enabled.

        No functionality changed. So, no new tests.

        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForCharCode):
        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping):

2019-03-13  Simon Fraser  <simon.fraser@apple.com>

        Scrolling tree should reposition non-stacking order descendents of overflow:scroll
        https://bugs.webkit.org/show_bug.cgi?id=195608

        Reviewed by Zalan Bujtas.
        
        Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

        Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
        an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
        the values of ScrollPositioningBehavior:

        ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an
            async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
            When the overflow scrolls, this layer has to move along with the overflow.

        ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the
            overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
            This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

        PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.
        
        This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
        is just a stub so the new node types aren't created yet.
        
        RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
        role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
        the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

        Test: scrollingcoordinator/scrolling-tree/positioned-nodes.html

        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::setPositionedNodeGeometry):
        (WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingConstraints.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingConstraints.h:
        (WebCore::LayoutConstraints::LayoutConstraints):
        (WebCore::LayoutConstraints::operator== const):
        (WebCore::LayoutConstraints::operator!= const):
        (WebCore::LayoutConstraints::alignmentOffset const):
        (WebCore::LayoutConstraints::setAlignmentOffset):
        (WebCore::LayoutConstraints::layerPositionAtLastLayout const):
        (WebCore::LayoutConstraints::setLayerPositionAtLastLayout):
        (WebCore::LayoutConstraints::scrollPositioningBehavior const):
        (WebCore::LayoutConstraints::setScrollPositioningBehavior):
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::setPositionedNodeGeometry):
        (WebCore::ScrollingCoordinator::setRelatedOverflowScrollingNodes):
        * page/scrolling/ScrollingCoordinatorTypes.h:
        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::isPositionedNode const):
        * page/scrolling/ScrollingStatePositionedNode.cpp: Added.
        (WebCore::ScrollingStatePositionedNode::create):
        (WebCore::ScrollingStatePositionedNode::ScrollingStatePositionedNode):
        (WebCore::ScrollingStatePositionedNode::clone):
        (WebCore::ScrollingStatePositionedNode::setAllPropertiesChanged):
        (WebCore::ScrollingStatePositionedNode::setRelatedOverflowScrollingNodes):
        (WebCore::ScrollingStatePositionedNode::updateConstraints):
        (WebCore::ScrollingStatePositionedNode::dumpProperties const):
        * page/scrolling/ScrollingStatePositionedNode.h: Added.
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::createNode):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::updateTreeFromStateNode):
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeNode.h:
        (WebCore::ScrollingTreeNode::isPositionedNode const):
        * page/scrolling/cocoa/ScrollingTreePositionedNode.h: Copied from Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h.
        * page/scrolling/cocoa/ScrollingTreePositionedNode.mm: Added.
        (WebCore::ScrollingTreePositionedNode::create):
        (WebCore::ScrollingTreePositionedNode::ScrollingTreePositionedNode):
        (WebCore::ScrollingTreePositionedNode::~ScrollingTreePositionedNode):
        (WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
        (WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreePositionedNode::dumpProperties const):
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h:
        * page/scrolling/mac/ScrollingTreeMac.cpp:
        (ScrollingTreeMac::createScrollingTreeNode):
        * platform/ScrollTypes.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::coordinatedScrollingRoles const):
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
        (WebCore::scrollCoordinationRoleForNodeType):
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):
        * rendering/RenderLayerCompositor.h:

2019-03-13  Youenn Fablet  <youenn@apple.com>

        Check IDB quota usage through QuotaManager
        https://bugs.webkit.org/show_bug.cgi?id=195302

        Reviewed by Chris Dumez.

        For every write operation, compute an estimate size and check for quota before proceeding.
        When proceeding, store the estimate size in a map.
        If size of the database is to be computed when the task is not done,
        the estimate size will be added to the current size of the databases.
        At the end of the task, the estimate size is removed from the map,
        and the databases size is refreshed.

        This patch implements size estimation for write tasks.
        Put/add operations might overestimate the size
        when an old value will be replaced by a new value.
        In that case, we do not substract the old value size since we do not know it.

        This patch implements database opening by adding a fixed small cost,
        as we do not know whether the database is new or not.

        For the first IDB request, we have not computed the size of the database.
        To do so, we need to go to a background thread and do that file size computation.
        For that purpose, we add support for being-initialized quota user.
        Quota manager is calling whenInitialized on its quota user and will
        delay any quota check requests until its quota user is answering this callback.

        For in process IDB, use the default storage quota per origin and do not increase it.
        Future work should move it to NetworkProcess and implement some quota checking.

        Cache API and IDB quota management are not yet fully unified.
        If IDB is used on start-up, we should check for Cache API storage size.
        Conversely, on Cache API first wite task, even if IDB is not being used,
        we should compute the size of the IDB data for the given origin.

        Test: http/tests/IndexedDB/storage-limit.https.html

        * Modules/indexeddb/server/IDBBackingStore.h:
        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::create):
        (WebCore::IDBServer::IDBServer::IDBServer):
        (WebCore::IDBServer::m_quotaManagerGetter):
        (WebCore::IDBServer::IDBServer::QuotaUser::QuotaUser):
        (WebCore::IDBServer::IDBServer::QuotaUser::~QuotaUser):
        (WebCore::IDBServer::IDBServer::QuotaUser::clearSpaceUsed):
        (WebCore::IDBServer::IDBServer::QuotaUser::whenInitialized):
        (WebCore::IDBServer::IDBServer::QuotaUser::initializeSpaceUsed):
        (WebCore::IDBServer::IDBServer::quotaUser):
        (WebCore::IDBServer::IDBServer::startComputingSpaceUsedForOrigin):
        (WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
        (WebCore::IDBServer::IDBServer::finishComputingSpaceUsedForOrigin):
        (WebCore::IDBServer::IDBServer::requestSpace):
        (WebCore::IDBServer::IDBServer::clearSpaceUsed):
        (WebCore::IDBServer::IDBServer::setSpaceUsed):
        (WebCore::IDBServer::IDBServer::increasePotentialSpaceUsed):
        (WebCore::IDBServer::IDBServer::decreasePotentialSpaceUsed):
        * Modules/indexeddb/server/IDBServer.h:
        (WebCore::IDBServer::IDBServer::create):
        * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
        (WebCore::IDBServer::MemoryIDBBackingStore::databasesSizeForOrigin const):
        * Modules/indexeddb/server/MemoryIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForFolder):
        (WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::estimateSize):
        (WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
        (WebCore::IDBServer::quotaErrorMessageName):
        (WebCore::IDBServer::UniqueIDBDatabase::requestSpace):
        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
        (WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError):
        (WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::createIndex):
        (WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
        (WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
        (WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck):
        (WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        (WebCore::IDBServer::UniqueIDBDatabase::updateSpaceUsedIfNeeded):
        (WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:
        (WebCore::IDBServer::UniqueIDBDatabase::server):
        * Modules/indexeddb/shared/InProcessIDBServer.cpp:
        (WebCore::InProcessIDBServer::create):
        (WebCore::InProcessIDBServer::quotaManager):
        (WebCore::storageQuotaManagerGetter):
        (WebCore::InProcessIDBServer::InProcessIDBServer):
        * Modules/indexeddb/shared/InProcessIDBServer.h:
        * loader/EmptyClients.cpp:
        * storage/StorageQuotaManager.cpp:
        (WebCore::StorageQuotaManager::addUser):
        (WebCore::StorageQuotaManager::requestSpace):
        * storage/StorageQuotaManager.h:
        (WebCore::StorageQuotaManager::defaultQuota):
        (WebCore::StorageQuotaManager::removeUser):
        * storage/StorageQuotaUser.h:
        (WebCore::StorageQuotaUser::whenInitialized):

2019-03-13  Chris Dumez  <cdumez@apple.com>

        Better build fix after r242901.

        Reviewed by Jer Noble.

        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::sessionWillBeginPlayback):
        (MediaSessionManagerCocoa::updateNowPlayingInfo):

2019-03-13  Timothy Hatcher  <timothy@apple.com>

        Consolidate ArgumentCodersMac and ArgumentCodersCocoa.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Ryosuke Niwa.

        * editing/DictionaryPopupInfo.h:
        (WebCore::DictionaryPopupInfo::encodingRequiresPlatformData const): Added.
        * editing/FontAttributes.h:
        (WebCore::FontAttributes::encodingRequiresPlatformData const): Added.

2019-03-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed build fix after r242901.

        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::updateNowPlayingInfo):

2019-03-13  Chris Dumez  <cdumez@apple.com>

        Use a ServiceWorker process per registrable domain
        https://bugs.webkit.org/show_bug.cgi?id=195649

        Reviewed by Youenn Fablet.

        Use a ServiceWorker process per registrable domain instead of one per security origin. This is
        more in line with PSON and avoids launching too many processes.

        * page/ClientOrigin.h:
        (WebCore::ClientOrigin::clientRegistrableDomain const):
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::tryInstallContextData):
        (WebCore::SWServer::serverToContextConnectionCreated):
        (WebCore::SWServer::runServiceWorkerIfNecessary):
        (WebCore::SWServer::markAllWorkersForRegistrableDomainAsTerminated):
        (WebCore::SWServer::registerServiceWorkerClient):
        (WebCore::SWServer::unregisterServiceWorkerClient):
        (WebCore::SWServer::needsServerToContextConnectionForRegistrableDomain const):
        * workers/service/server/SWServer.h:
        * workers/service/server/SWServerToContextConnection.cpp:
        (WebCore::SWServerToContextConnection::SWServerToContextConnection):
        (WebCore::SWServerToContextConnection::~SWServerToContextConnection):
        (WebCore::SWServerToContextConnection::connectionForRegistrableDomain):
        * workers/service/server/SWServerToContextConnection.h:
        (WebCore::SWServerToContextConnection::registrableDomain const):
        * workers/service/server/SWServerWorker.cpp:
        (WebCore::SWServerWorker::contextConnection):
        * workers/service/server/SWServerWorker.h:
        (WebCore::SWServerWorker::registrableDomain const):

2019-03-13  Chris Dumez  <cdumez@apple.com>

        REGRESSION(PSON, r240660): Navigation over process boundary is flashy when using Cmd-left/right arrow to navigate
        https://bugs.webkit.org/show_bug.cgi?id=195684
        <rdar://problem/48294714>

        Reviewed by Antti Koivisto.

        The issue was caused by us failing to suspend the current page on navigation because the source and
        target WebBackForwardListItem are identical. The source WebBackForwardListItem was wrong.

        When a navigation is triggered by the WebContent process (and not the UIProcess), we create the Navigation
        object in WebPageProxy::decidePolicyForNavigationAction(). For the navigation's targetItem, we use the
        target item identifier provided by the WebContent process via the NavigationActionData. However,
        for the source item, we would use the WebBackForwardList's currentItem in the UIProcess. The issue
        is that the WebBackForwardList's currentItem usually has already been updated to be the target
        item via a WebPageProxy::BackForwardGoToItem() synchronous IPC.

        To avoid raciness and given that the current history management is fragile (as it is managed by
        both the UIProcess and the WebProcess), I am now passing the source item identifier in
        addition to the target item identifier in the NavigationActionData that is sent by the WebProcess.
        This is a lot less error prone, the WebProcess knows more accurately which history items it is going
        from and to.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURLIntoChildFrame):
        (WebCore::FrameLoader::loadDifferentDocumentItem):
        (WebCore::FrameLoader::loadItem):
        (WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):
        * loader/FrameLoader.h:
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::recursiveGoToItem):
        * loader/NavigationAction.cpp:
        (WebCore::NavigationAction::setSourceBackForwardItem):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::sourceBackForwardItemIdentifier const):

2019-03-13  Jer Noble  <jer.noble@apple.com>

        Add AggregateLogger, a Logger specialization for singleton classes.
        https://bugs.webkit.org/show_bug.cgi?id=195644

        Reviewed by Eric Carlson.

        Convert debug logging over to release logging through the use of AggregateLogger.

        * platform/audio/PlatformMediaSession.h:
        (WebCore::PlatformMediaSession::client const):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::PlatformMediaSessionManager):
        (WebCore::PlatformMediaSessionManager::beginInterruption):
        (WebCore::PlatformMediaSessionManager::endInterruption):
        (WebCore::PlatformMediaSessionManager::addSession):
        (WebCore::PlatformMediaSessionManager::removeSession):
        (WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
        (WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
        (WebCore::PlatformMediaSessionManager::setCurrentSession):
        (WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const):
        (WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const):
        (WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const):
        (WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const):
        (WebCore::PlatformMediaSessionManager::logChannel const):
        * platform/audio/PlatformMediaSessionManager.h:
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::updateSessionState):
        (MediaSessionManagerCocoa::sessionWillBeginPlayback):
        (MediaSessionManagerCocoa::removeSession):
        (MediaSessionManagerCocoa::sessionWillEndPlayback):
        (MediaSessionManagerCocoa::clientCharacteristicsChanged):
        (MediaSessionManagerCocoa::updateNowPlayingInfo):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::resetRestrictions):
        (WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):

2019-03-13  Chris Dumez  <cdumez@apple.com>

        Drop legacy WebCore::toRegistrableDomain() utility function
        https://bugs.webkit.org/show_bug.cgi?id=195637

        Reviewed by Geoffrey Garen.

        Drop legacy toRegistrableDomain() / registrableDomainAreEqual() utility functions.
        Update call sites to use modern RegistrableDomain type instead.

        * loader/CrossOriginAccessControl.cpp:
        (WebCore::shouldCrossOriginResourcePolicyCancelLoad):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::setFirstPartyForCookies):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::failedToRegisterDeviceMotionEventListener):
        * platform/RegistrableDomain.h:
        (WebCore::registrableDomainsAreEqual):
        * platform/network/ResourceRequestBase.h:
        * platform/network/cf/ResourceRequestCFNet.cpp:
        * platform/network/cocoa/ResourceRequestCocoa.mm:

2019-03-13  Alex Christensen  <achristensen@webkit.org>

        Prevent checked_cf_cast crashes in ResourceResponse::platformCertificateInfo
        https://bugs.webkit.org/show_bug.cgi?id=195686

        Reviewed by Tim Horton.

        This covers up a type confusion bug on some OSes until rdar://problem/48853137 is resolved.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/network/cocoa/ResourceResponseCocoa.mm:

2019-03-13  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add support for omxh264enc encoder
        https://bugs.webkit.org/show_bug.cgi?id=195676

        Reviewed by Philippe Normand.

        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
        (setup_omxh264enc):
        (set_bitrate_bit_per_sec):
        (gst_webrtc_video_encoder_class_init):

2019-03-13  Antoine Quint  <graouts@apple.com>

        REGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value directly into a HashMap as a key
        https://bugs.webkit.org/show_bug.cgi?id=195683
        <rdar://problem/48659950>

        Reviewed by Alex Christensen.

        While PointerID is defined as int32_t, we now use int64_t as the key of the HashMap mapping PointerID to CapturingData so that we use
        a value outside of the int32_t range as a safe empty and removed values, allowing any int32_t to be provided through the API for
        lookup in this HashMap.

        Test: pointerevents/pointer-id-crash.html

        * page/PointerCaptureController.h:

2019-03-12  Brady Eidson  <beidson@apple.com>

        Take UnboundedNetworking assertion when a file upload is in progress.
        https://bugs.webkit.org/show_bug.cgi?id=195497

        Reviewed by Geoff Garen.

        * platform/network/ResourceRequestBase.cpp:
        (WebCore::ResourceRequestBase::hasUpload const):
        * platform/network/ResourceRequestBase.h:

2019-03-13  Youenn Fablet  <youenn@apple.com>

        Enable libwebrtc logging control through WebCore
        https://bugs.webkit.org/show_bug.cgi?id=195658

        Reviewed by Eric Carlson.

        Add support for WebCore logging of libwebrtc messages.
        This is controlled by WebRTC log channel state and level.
        In case of private browsing mode, any logging is disabled.
        This will stay for the lifetime of the process.
        No change of behavior.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::create):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::doReleaseLogging):
        (WebCore::setLogging):
        (WebCore::computeLogLevel):
        (WebCore::initializePeerConnectionFactoryAndThreads):
        (WebCore::LibWebRTCProvider::setEnableLogging):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:

2019-03-13  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Do not sync encoder on the clock
        https://bugs.webkit.org/show_bug.cgi?id=195673

        we should encode as fast as possible and totally ignore timestamp while
        doing so.

        Reviewed by Philippe Normand.

        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):

2019-03-13  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC]: Use codec setting video height/width as fallback
        https://bugs.webkit.org/show_bug.cgi?id=195675

        Reviewed by Philippe Normand.

        In some cases the frame height and width is not set (not sure why/ in
        what conditions but it happens) so make sure to get the information from
        the VideoCodec when configuring the encoder.

        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
        (WebCore::GStreamerVideoDecoder::GetCapsForFrame):

2019-03-13  Miguel Gomez  <magomez@igalia.com>

        [CoordinatedGraphics] Null dereference in CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded
        https://bugs.webkit.org/show_bug.cgi?id=195615

        Reviewed by Carlos Garcia Campos.

        Exit early if we don't receive a valid coordinator.

        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):

2019-03-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][PlayStation] Remove WebCore::standardUserAgentForURL
        https://bugs.webkit.org/show_bug.cgi?id=195662

        Reviewed by Ryosuke Niwa.

        WebCore::standardUserAgentForURL is just a stub in Windows port.

        No new tests because there is no behavior change.

        * platform/win/UserAgentWin.cpp:
        (WebCore::standardUserAgentForURL): Deleted.
        * platform/playstation/UserAgentPlayStation.cpp:
        (WebCore::standardUserAgentForURL): Deleted.

2019-03-12  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Fix a slew of simple clang-cl warnings.
        https://bugs.webkit.org/show_bug.cgi?id=195652

        Reviewed by Don Olmstead.

        * page/AutoscrollController.cpp:
        (WebCore::AutoscrollController::handleMouseReleaseEvent): -Wswitch
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::willSetupSslCtx):
        (WebCore::CurlHandle::appendRequestHeaders): -Wunused-variable
        * platform/network/curl/CurlFormDataStream.cpp:
        (WebCore::CurlFormDataStream::computeContentLength): -Wunused-variable
        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::CurlRequest): -Wreorder
        (WebCore::CurlRequest::setupTransfer): -Wunused-variable
        * platform/network/curl/CurlSSLVerifier.cpp:
        (WebCore::CurlSSLVerifier::CurlSSLVerifier):
        * platform/network/curl/CurlSSLVerifier.h: -Wunused-private-field
        * platform/win/LoggingWin.cpp:
        (WebCore::logLevelString): -Wwritable-strings
        * rendering/RenderThemeWin.cpp: -Wunused-const-variable (x2)
        (WebCore::RenderThemeWin::getThemeData): -Wswitch

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        Move the code for determining the need for touch bar quirks to Quirks class
        https://bugs.webkit.org/show_bug.cgi?id=195654

        Reviewed by Brent Fulgham.

        Moved the code to determine whether the touch bar quirks are needed or not from WebKit2.

        * WebCore.xcodeproj/project.pbxproj:
        * page/Quirks.cpp:
        (WebCore::Quirks::isTouchBarUpdateSupressedForHiddenContentEditable const):
        (WebCore::Quirks::isNeverRichlyEditableForTouchBar const):
        * page/Quirks.h:

2019-03-12  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Update GPURenderPipelineDescriptor and add GPUColorStateDescriptor.format
        https://bugs.webkit.org/show_bug.cgi?id=195518
        <rdar://problem/46322356>

        Reviewed by Myles C. Maxfield.

        Upgrade the implementation of GPURenderPipelineDescriptor and GPURenderPipeline and match the updated Web GPU API.
        Add stubs for GPUColorStateDescriptor so attachment format can be provided by GPURenderPipelineDescriptor.

        All affected Web GPU tests updated to cover existing behavior.

        Update file names and symbols:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Updates to GPURenderPipeline, GPURenderPipelineDescriptor, and its components:
        * Modules/webgpu/GPUColorStateDescriptor.idl: Added. Provide the expected texture format of the render pipeline's color attachments.
        * Modules/webgpu/GPUInputStateDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUInputStateDescriptor.idl.
        * Modules/webgpu/GPUTextureFormat.idl: Update the existing values to match the new style.
        * Modules/webgpu/GPUVertexAttributeDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexAttributeDescriptor.idl.
        * Modules/webgpu/GPUVertexInputDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexInputDescriptor.idl.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createPipelineLayout const): Remove unnecessary comment.
        (WebCore::WebGPUDevice::createRenderPipeline const): Descriptor validation and conversion moved into WebGPURenderPipelineDescriptor.
        (WebCore::validateAndConvertPipelineStage): Deleted.
        * Modules/webgpu/WebGPUDevice.h: create* functions should not return nullable.
        * Modules/webgpu/WebGPUIndexFormat.h: Removed. Moved into GPUInputStateDescriptor.idl.
        * Modules/webgpu/WebGPUInputStateDescriptor.h: Removed.
        * Modules/webgpu/WebGPUInputStepMode.idl: Removed. Moved into GPUVertexInputDescriptor.idl.
        * Modules/webgpu/WebGPUPipelineLayout.h:
        (WebCore::WebGPUPipelineLayout::pipelineLayout): Getters should return raw references.
        * Modules/webgpu/WebGPUPipelineStageDescriptor.h: Now shares a common base with GPUPipelineStageDescriptor.
        * Modules/webgpu/WebGPURenderPipeline.cpp:
        (WebCore::WebGPURenderPipeline::create):
        (WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
        * Modules/webgpu/WebGPURenderPipeline.h:  Now internally nullable.
        (WebCore::WebGPURenderPipeline::renderPipeline const):
        (WebCore::WebGPURenderPipeline::renderPipeline): Deleted.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
        (WebCore::WebGPUPipelineStageDescriptor::asGPUPipelineStageDescriptor const): Validate and convert a WebGPUPipelineStageDescriptor to GPU version.
        (WebCore::WebGPURenderPipelineDescriptor::asGPURenderPipelineDescriptor const): Ditto for WebGPURenderPipelineDescriptor.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h: Now shares a base class and some instance variables with GPURenderPipelineDescriptor.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl: Update GPUPrimitiveTopology for new style and add colorStates.
        * Modules/webgpu/WebGPUShaderModule.idl: Small pilot to test using InterfaceName to easily rename DOM-facing interfaces.
        * Modules/webgpu/WebGPUVertexAttributeDescriptor.h: Removed.
        * Modules/webgpu/WebGPUVertexFormat.idl: Removed. Moved and updated in GPUVertexAttributeDescriptor.idl.
        * Modules/webgpu/WebGPUVertexInputDescriptor.h: Removed.
        * platform/graphics/gpu/GPUInputStateDescriptor.h:
        * platform/graphics/gpu/GPUPipelineStageDescriptor.h:
        (WebCore::GPUPipelineStageDescriptor::GPUPipelineStageDescriptor):
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Add shared base class for Web/GPURenderPipelineDescriptor.
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
        * platform/graphics/gpu/GPUTextureFormat.h:
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setFunctionsForPipelineDescriptor): Make fragment required since descriptor validation fails if fragment function is not found right now.
        (WebCore::mtlVertexFormatForGPUVertexFormat): Renamed from validateAndConvertVertexFormatToMTLVertexFormat.
        (WebCore::mtlStepFunctionForGPUInputStepMode): Renamed from validateAndConvertStepModeToMTLStepFunction
        (WebCore::trySetInputStateForPipelineDescriptor):
        (WebCore::trySetColorStatesForColorAttachmentArray):
        (WebCore::tryCreateMtlRenderPipelineState):
        (WebCore::GPURenderPipeline::create):
        (WebCore::validateAndConvertVertexFormatToMTLVertexFormat): Deleted.
        (WebCore::validateAndConvertStepModeToMTLStepFunction): Deleted.
        * platform/graphics/gpu/cocoa/GPUUtilsMetal.mm:
        (WebCore::platformTextureFormatForGPUTextureFormat):
        * platform/graphics/gpu/GPUColorStateDescriptor.h: Added.

        Misc:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setPipeline):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/GPURenderPipeline.h:
        (WebCore::GPURenderPipeline::primitiveTopology const):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setPipeline):
        (WebCore::primitiveTypeForGPUPrimitiveTopology):
       
2019-03-12  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Reset state when touchStart does not turn into click.
        https://bugs.webkit.org/show_bug.cgi?id=195603
        <rdar://problem/48796582>

        Reviewed by Simon Fraser.

        Add reset() function to assert and reset the current state.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::willNotProceedWithClick):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:

2019-03-12  Timothy Hatcher  <timothy@apple.com>

        Expose document attributes and body background color through HTMLConverter.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Tim Horton.

        * editing/cocoa/HTMLConverter.h:
        * editing/cocoa/HTMLConverter.mm:
        (HTMLConverter::convert):
        (WebCore::attributedStringFromRange):
        (WebCore::attributedStringFromSelection):
        (WebCore::attributedStringBetweenStartAndEnd):

2019-03-12  Antti Koivisto  <antti@apple.com>

        Compositing layer that renders two positioned elements should not hit test
        https://bugs.webkit.org/show_bug.cgi?id=195371
        <rdar://problem/48649586>

        Reviewed by Simon Fraser.

        Followup to fix the test case (fast/scrolling/ios/overflow-scroll-overlap-2.html)

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setEventRegion):

        Revert a last minute change (that was done to fix a Mac displaylist test).

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintIntoLayer):

        Compute the region on iOS only for now (it is not used on other platforms).

2019-03-12  Dean Jackson  <dino@apple.com>

        [WebGL] WebGLBuffer can be too large
        https://bugs.webkit.org/show_bug.cgi?id=195068
        <rdar://problem/48414289>

        Reviewed by Antoine Quint.

        When creating an element array buffer, make sure to
        test against the maximum size of an ArrayBuffer, rather
        than just assume it can be created.

        Test: fast/canvas/webgl/largeBuffer.html

        * html/canvas/WebGLBuffer.cpp:
        (WebCore::WebGLBuffer::associateBufferDataImpl):

2019-03-12  Sihui Liu  <sihui_liu@apple.com>

        Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-*-event-exception.html are failing
        https://bugs.webkit.org/show_bug.cgi?id=195581

        Reviewed by Brady Eidson.

        Uncaught exceptions should be handled after IDBRequest dispatches events so that IDBTransaction would stay 
        active during event dispatch.

        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::dispatchEvent):
        (WebCore::IDBRequest::uncaughtExceptionInEventHandler):
        * Modules/indexeddb/IDBRequest.h:

2019-03-12  Sihui Liu  <sihui_liu@apple.com>

        Layout Test imported/w3c/web-platform-tests/IndexedDB/transaction-abort-request-error.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=195570

        Reviewed by Brady Eidson.

        IDBRequest result should be undefined if it is never set.

        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::IDBRequest):

2019-03-12  Youenn Fablet  <youenn@apple.com>

        Rename originsMatch in originSerializationsMatch
        https://bugs.webkit.org/show_bug.cgi?id=195572

        Reviewed by Jiewen Tan.

        In addition to renaming, make use of SecurityOrigin::isSameOriginAs
        where it makes more sense than to compare origin serialization.
        The main difference is that isSameOriginAs will return false for two different unique origins
        while originsSerializationsMatch will not.

        * Modules/credentialmanagement/CredentialsContainer.cpp:
        (WebCore::CredentialsContainer::doesHaveSameOriginAsItsAncestors):
        * Modules/mediastream/RTCController.cpp:
        (WebCore::matchDocumentOrigin):
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::certificatesFromConfiguration):
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::shouldOpenExternalURLsPolicyToPropagate const):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):
        * page/SecurityOrigin.cpp:
        (WebCore::serializedOriginsMatch):
        (WebCore::originsMatch): Deleted.
        * page/SecurityOrigin.h:

2019-03-12  Zalan Bujtas  <zalan@apple.com>

        [Synthetic Click] Dispatch mouseout soon after mouseup
        https://bugs.webkit.org/show_bug.cgi?id=195575
        <rdar://problem/47093049>

        Reviewed by Simon Fraser.

        Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

        Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

        * page/EventHandler.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::dispatchFakeMouseOut):

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        In CachedFrame's constructor, release-assert that DOMWindow still has a frame after page-caching subframes
        https://bugs.webkit.org/show_bug.cgi?id=195609

        Reviewed by Chris Dumez.

        r242677 added release assertions to DOMWindow::suspendForPageCache. But when the first release assert in
        that function is hit, we still can't tell whether active DOM objects are detaching frames, or if creating
        CachedFrame's on one of subframes is causing the frame to go way.

        Add a release assertion immediately after creating CachedFrame on subframes to detect this case.

        * history/CachedFrame.cpp:
        (WebCore::CachedFrame::CachedFrame):

2019-03-12  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Stop content change observation when the touch event turns into long press
        https://bugs.webkit.org/show_bug.cgi?id=195601
        <rdar://problem/48796324>

        Reviewed by Wenson Hsieh.

        Cancel the ongoing content observation (started at touchStart) when the touch event does not turn into a tap gesture.

        Not testable because any subsequent tap would reset the state anyway (though it might be measurable through some code triggering heavy content change).

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didRecognizeLongPress):
        (WebCore::ContentChangeObserver::willNotProceedWithClick):
        * page/ios/ContentChangeObserver.h:

2019-03-12  Antti Koivisto  <antti@apple.com>

        Compositing layer that renders two positioned elements should not hit test
        https://bugs.webkit.org/show_bug.cgi?id=195371
        <rdar://problem/48649586>

        Reviewed by Simon Fraser.

        Compute and pass an event region for layers if it differs from layer bounds.

        This patch fixes various block overflow and layer expansion cases. It does not handle
        overflowing line boxes yet (it adds tests for those too).

        Test: fast/scrolling/ios/overflow-scroll-overlap-2.html

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setEventRegion):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::eventRegion):
        * platform/graphics/Region.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setEventRegion):
        (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
        (WebCore::GraphicsLayerCA::updateEventRegion):

        Pass the region via the main platform layer of the graphics layer.

        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
        * rendering/PaintInfo.h:
        * rendering/PaintPhase.h:

        Add EventRegion paint phase that computes the region instead of painting anything.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintObject):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintForegroundForFragments):
        (WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):

        Invoke EventRegion paint phase.

        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintIntoLayer):

        Request event region when pointing a layer.

2019-03-12  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][v4l2] Synchronous video texture flushing support
        https://bugs.webkit.org/show_bug.cgi?id=195453

        Reviewed by Xabier Rodriguez-Calvar.

        The v4l2 video decoder currently requires that downstream users of
        the graphics resources complete any pending draw call and release
        resources before returning from the DRAIN query.

        To accomplish this the player monitors the pipeline and whenever a
        v4l2 decoder is added, synchronous video texture flushing support
        is enabled. Additionally and for all decoder configurations, a
        flush is performed before disposing of the player.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
        Monitor elements added to the decodebin bin.
        (WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
        a flag if a v4l2 decoder was added in decodebin.
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
        to the deep-element-added signal so as to monitor pipeline
        topology updates.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
        Flush video texture before disposing of the player.
        (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
        Synchronously flush if the pipeline contains a v4l2 decoder.
        (WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
        (WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
        boolean flag used mostly to trigger synchronous flush conditions.
        (WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
        Optionally drop the current buffer in a synchronous manner. By
        default the method keeps operating asynchronously.
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        Move the remaining code to decide whether site specific quirks are needed to Quirks class
        https://bugs.webkit.org/show_bug.cgi?id=195610

        Reviewed by Antti Koivisto.

        Moved the remaining code scattered across WebCore to decide whether a site specific quirk
        is needed or not to Quirks class introduced in r236818.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::needsSignalQuirk): Deleted.
        (WebCore::processInvalidSignal):
        * html/HTMLFormControlElement.cpp:
        (WebCore::HTMLFormControlElement::needsMouseFocusableQuirk const):
        * html/HTMLMediaElement.cpp:
        (WebCore::needsAutoplayPlayPauseEventsQuirk): Deleted.
        (WebCore::HTMLMediaElement::dispatchPlayPauseEventsIfNeedsQuirks):
        (WebCore::needsSeekingSupportQuirk): Deleted.
        (WebCore::HTMLMediaElement::supportsSeeking const):
        * html/MediaElementSession.cpp:
        (WebCore::needsArbitraryUserGestureAutoplayQuirk): Deleted.
        (WebCore::needsPerDocumentAutoplayBehaviorQuirk): Deleted.
        (WebCore::MediaElementSession::playbackPermitted const):
        * page/Quirks.cpp:
        (WebCore::allowedAutoplayQuirks): Added.
        (WebCore::Quirks::needsQuirks const): Added.
        (WebCore::Quirks::shouldIgnoreInvalidSignal const): Added.
        (WebCore::Quirks::needsFormControlToBeMouseFocusable const): Added.
        (WebCore::Quirks::needsAutoplayPlayPauseEvents const): Added.
        (WebCore::Quirks::needsSeekingSupportDisabled const): Addd.
        (WebCore::Quirks::needsPerDocumentAutoplayBehavior const): Added.
        (WebCore::Quirks::shouldAutoplayForArbitraryUserGesture const): Added.
        (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const): Added.
        (WebCore::Quirks::hasWebSQLSupportQuirk const): Fixed the coding style.
        * page/Quirks.h:

2019-03-12  Enrique Ocaña González  <eocanha@igalia.com>

        [Media][MSE] Don't emit timeUpdate after play() if currentTime hasn't changed
        https://bugs.webkit.org/show_bug.cgi?id=195454

        Reviewed by Jer Noble.

        This change fixes YouTube 2019 MSE Conformance Tests "26. SFRPausedAccuracy"
        and "27. HFRPausedAccuracy".

        The first timeUpdate event after play() is omitted, because currentTime
        doesn't actually change in that scenario.

        Tests 26 and 27 measure the time drift (real time vs. media time) on playback
        and start counting since the first timeUpdate event. In WebKit, that event
        happens at play(), before the pipeline has completed the transition to playing.
        Therefore, the real time inherits this startup delay and the test thinks that
        the player has drifted.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::playInternal): Don't emit a timeUpdated event unless currentTime has changed.

2019-03-12  Enrique Ocaña González  <eocanha@igalia.com>

        [EME][GStreamer] Speculative build fix
        https://bugs.webkit.org/show_bug.cgi?id=195614

        Unreviewed speculative WPE build fix after r242776.

        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h: Added missing include.

2019-03-12  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] remove legacy GStreamer version checks
        https://bugs.webkit.org/show_bug.cgi?id=195552

        Reviewed by Xabier Rodriguez-Calvar.

        We require GStreamer 1.8.x so version checks below that make
        little sense. Also checks for odd minor version numbers make sense
        only for the latest GStreamer git development version.

        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::initializeGStreamerAndRegisterWebKitElements):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

2019-03-12  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [EME] generateRequest was not using the sanitized init data
        https://bugs.webkit.org/show_bug.cgi?id=195555

        Reviewed by Jer Noble.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::generateRequest): Use sanitized init
        data instead of the original one.

2019-03-12  Rob Buis  <rbuis@igalia.com>

        Implement further CORS restrictions
        https://bugs.webkit.org/show_bug.cgi?id=188644

        Reviewed by Darin Adler.

        Verify that header value length is not greater than 128 [1]. Also implement
        Step 5 of [2] to append values to existing header value when calling
        Headers.append.

        Tests: fetch/api/cors/cors-preflight-not-cors-safelisted.any.html
               fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker.html
               fetch/api/headers/headers-no-cors.window.html

        [1] https://fetch.spec.whatwg.org/#cors-safelisted-request-header
        [2] https://fetch.spec.whatwg.org/#concept-headers-append

        * Modules/fetch/FetchHeaders.cpp:
        (WebCore::canWriteHeader):
        (WebCore::appendToHeaderMap):
        (WebCore::FetchHeaders::remove):
        (WebCore::FetchHeaders::set):
        (WebCore::FetchHeaders::filterAndFill):
        * platform/network/HTTPParsers.cpp:
        (WebCore::isCrossOriginSafeRequestHeader): verify that header length is not greater than 128

2019-03-11  Ryosuke Niwa  <rniwa@webkit.org>

        Remove OS X Server QuickTime plugin quirks
        https://bugs.webkit.org/show_bug.cgi?id=195607

        Reviewed by Brent Fulgham.

        r87244 added a site specific quirk for Mac OS X Sever wiki pages.
        However, the issue has since been resolved as of OS X Mountain Lion,
        of which Apple has ended the support in September 2015.

        Because the latest versions of Safari no longer supports non-Flash plugins,
        the only scenario in which this quirk comes into play is when a third party app
        which embeds WKWebView or WebKitLegacy loaded web pages on a OS X Server
        running OS X Mountain Lion or earlier.

        Given these observations, it's probably safe to remove this quirk from WebKit.

        * html/HTMLObjectElement.cpp:
        (WebCore::HTMLObjectElement::hasFallbackContent const):
        (WebCore::HTMLObjectElement::hasValidClassId):
        (WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk): Deleted.
        * html/HTMLObjectElement.h:

2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed speculative WPE build fix after r195586.

        * platform/encryptedmedia/CDMInstance.h:

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        Remove MediaWiki site specific quirks
        https://bugs.webkit.org/show_bug.cgi?id=195597

        Reviewed by Simon Fraser.

        r47383 added a site specific quirk for the KHTML workaround in MediaWiki.

        Blink since removed this workaround:
        https://github.com/chromium/chromium/commit/ecf84fc9c1a51c8ede7adfd0b0cba446d9a8caa0

        Given Chrome has been shipping without this quirk for six years, it's safe to assume
        this site specific quirk is no longer neeed for Web compatibility.

        * css/StyleSheetContents.cpp:
        (WebCore::StyleSheetContents::parseAuthorStyleSheet):
        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        (WebCore::operator==):
        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContextHash::hash):

2019-03-11  Ryosuke Niwa  <rniwa@webkit.org>

        Remove OpenCube QuickMenu quirks from navigator.appVersion
        https://bugs.webkit.org/show_bug.cgi?id=195600

        Reviewed by Simon Fraser.

        Remove the site specific quirk added in r35050 for OpenCube QuickMenu library for nwa.com

        Blink removed this code back in 2013. The fact Chrome has been shipping successfully without
        this quirk for six years is a good evidence that it's no longer needed for the Web compatibility.

        * page/Navigator.cpp:
        (WebCore::Navigator::appVersion const):
        (WebCore::shouldHideFourDot): Deleted.

2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242763.

        Causes layout test crashes on iOS simulator

        Reverted changeset:

        "[Synthetic Click] Dispatch mouseout soon after mouseup"
        https://bugs.webkit.org/show_bug.cgi?id=195575
        https://trac.webkit.org/changeset/242763

2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>

        Add Optional to Forward.h.
        https://bugs.webkit.org/show_bug.cgi?id=195586

        Reviewed by Darin Adler.

        * Modules/encryptedmedia/MediaKeyStatusMap.cpp:
        * Modules/encryptedmedia/MediaKeyStatusMap.h:
        * Modules/webauthn/apdu/ApduCommand.cpp:
        * Modules/webauthn/apdu/ApduCommand.h:
        * Modules/webauthn/apdu/ApduResponse.cpp:
        * Modules/webauthn/apdu/ApduResponse.h:
        * Modules/webauthn/fido/FidoHidMessage.cpp:
        * Modules/webauthn/fido/FidoHidMessage.h:
        * Modules/webauthn/fido/U2fCommandConstructor.cpp:
        * Modules/webauthn/fido/U2fCommandConstructor.h:
        * Modules/webdatabase/SQLTransaction.cpp:
        * Modules/webdatabase/SQLTransaction.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
        * Modules/webgpu/WHLSL/WHLSLPrepare.h:
        * Modules/webgpu/WebGPU.cpp:
        * Modules/webgpu/WebGPU.h:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        * Modules/webgpu/WebGPUCommandBuffer.h:
        * animation/WebAnimation.cpp:
        * animation/WebAnimation.h:
        * crypto/gcrypt/GCryptUtilities.cpp:
        * crypto/gcrypt/GCryptUtilities.h:
        * css/CSSStyleDeclaration.cpp:
        * css/CSSStyleDeclaration.h:
        * dom/TextDecoder.cpp:
        * dom/TextDecoder.h:
        * dom/UserGestureIndicator.cpp:
        * dom/UserGestureIndicator.h:
        * editing/ChangeListTypeCommand.cpp:
        * editing/ChangeListTypeCommand.h:
        * editing/EditingStyle.cpp:
        * editing/EditingStyle.h:
        * html/DOMFormData.cpp:
        * html/DOMFormData.h:
        * html/HTMLAllCollection.cpp:
        * html/HTMLAllCollection.h:
        * html/HTMLAnchorElement.cpp:
        * html/HTMLAnchorElement.h:
        * html/ImageBitmap.cpp:
        * html/ImageBitmap.h:
        * html/canvas/Path2D.h:
        * html/canvas/WebMetalEnums.cpp:
        * html/canvas/WebMetalEnums.h:
        * html/parser/HTMLParserIdioms.cpp:
        * html/parser/HTMLParserIdioms.h:
        * loader/ResourceCryptographicDigest.cpp:
        * loader/ResourceCryptographicDigest.h:
        * mathml/MathMLOperatorDictionary.cpp:
        * mathml/MathMLOperatorDictionary.h:
        * page/PerformanceEntry.cpp:
        * page/PerformanceEntry.h:
        * page/ResourceUsageData.h:
        * platform/ReferrerPolicy.cpp:
        * platform/ReferrerPolicy.h:
        * platform/Theme.cpp:
        * platform/Theme.h:
        * platform/encryptedmedia/CDMInstance.h:
        * platform/graphics/gpu/GPUDevice.cpp:
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/transforms/AffineTransform.cpp:
        * platform/graphics/transforms/AffineTransform.h:
        * platform/graphics/transforms/TransformState.cpp:
        * platform/graphics/transforms/TransformState.h:
        * platform/graphics/transforms/TransformationMatrix.cpp:
        * platform/graphics/transforms/TransformationMatrix.h:
        * platform/graphics/win/ImageDecoderDirect2D.cpp:
        * platform/graphics/win/ImageDecoderDirect2D.h:
        * platform/mediacapabilities/AudioConfiguration.h:
        * platform/network/CacheValidation.cpp:
        * platform/network/CacheValidation.h:
        * platform/network/DataURLDecoder.cpp:
        * platform/network/DataURLDecoder.h:
        * platform/network/HTTPParsers.cpp:
        * platform/network/HTTPParsers.h:
        * platform/network/curl/CookieJarDB.cpp:
        * platform/network/curl/CookieJarDB.h:
        * platform/win/SearchPopupMenuDB.cpp:
        * platform/win/SearchPopupMenuDB.h:
        * rendering/ImageQualityController.cpp:
        * rendering/ImageQualityController.h:
        * svg/SVGToOTFFontConversion.cpp:
        * svg/SVGToOTFFontConversion.h:
        Remove unnecessary includes from headers.

2019-03-11  Jer Noble  <jer.noble@apple.com>

        REGRESSION(r236281): YouTube Movies fail with "video format" error
        https://bugs.webkit.org/show_bug.cgi?id=195598
        <rdar://problem/48782842>

        Reviewed by Jon Lee.

        Partially revert r236281 for YouTube.com.

        * page/Quirks.cpp:
        (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

2019-03-11  Justin Fan  <justin_fan@apple.com>

        [Web GPU] BindGroups/Argument buffers: Move MTLBuffer creation from and GPUBindGroup validation to GPUDevice.createBindGroup
        https://bugs.webkit.org/show_bug.cgi?id=195519
        <rdar://problem/48781297>

        Reviewed by Myles C. Maxfield.

        Metal's Argument Buffers should not be tied directly to GPUBindGroupLayout; rather, create the MTLBuffer 
        in GPUBindGroup creation process.
        Move GPUBindGroup validation out of setBindGroup and to GPUBindGroup creation for performance.

        Covered by existing tests. No behavior change.

        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBindGroup const):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUBindGroup.cpp: Removed.
        * platform/graphics/gpu/GPUBindGroup.h:
        (WebCore::GPUBindGroup::vertexArgsBuffer): A buffer that arguments will be encoded into during setBindGroup.
        (WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
        (WebCore::GPUBindGroup::boundBuffers const): A list of resources that are bound by this GPUBindGroup.
        (WebCore::GPUBindGroup::boundTextures const): Ditto.
        (WebCore::GPUBindGroup::layout const): Deleted.
        (WebCore::GPUBindGroup::bindings const): Deleted.
        * platform/graphics/gpu/GPUBindGroupLayout.h: No longer creating and retaining MTLBuffers.
        (WebCore::GPUBindGroupLayout::vertexEncoder const):
        (WebCore::GPUBindGroupLayout::fragmentEncoder const):
        (WebCore::GPUBindGroupLayout::computeEncoder const):
        (WebCore::GPUBindGroupLayout::ArgumentEncoderBuffer::isValid const): Deleted.
        (WebCore::GPUBindGroupLayout::vertexArguments const): Deleted.
        (WebCore::GPUBindGroupLayout::fragmentArguments const): Deleted.
        (WebCore::GPUBindGroupLayout::computeArguments const): Deleted.
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::tryCreateMtlArgumentEncoder):
        (WebCore::GPUBindGroupLayout::tryCreate):
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
        (WebCore::tryCreateArgumentEncoderAndBuffer): Deleted.
        * platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm: Added.
        (WebCore::tryCreateArgumentBuffer): Create and associate the MTLBuffer that backs the MTLArgumentEncoder.
        (WebCore::tryGetResourceAsBufferBinding): Validate a GPUBindingResource.
        (WebCore::trySetBufferOnEncoder): Encodes a GPUBufferBinding's MTLBuffer on a MTLArgumentEncoder.
        (WebCore::tryGetResourceAsSampler): Ditto, for GPUSamplers.
        (WebCore::trySetSamplerOnEncoder):
        (WebCore::tryGetResourceAsTexture): Ditto, for GPUTextures.
        (WebCore::trySetTextureOnEncoder):
        (WebCore::GPUBindGroup::tryCreate): Most setBindGroup validation moved here.
        (WebCore::GPUBindGroup::GPUBindGroup): Retains the resource references needed for setBindGroup. 
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::setBindGroup): Most validation moved to GPUBindGroup::tryCreate().
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Deleted.
        (WebCore::GPUProgrammablePassEncoder::setResourceAsSamplerOnEncoder): Deleted.
        (WebCore::GPUProgrammablePassEncoder::setResourceAsTextureOnEncoder): Deleted.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::useResource):
        (WebCore::GPURenderPassEncoder::setVertexBuffer):
        (WebCore::GPURenderPassEncoder::setFragmentBuffer):

        Misc:
        * platform/graphics/gpu/GPUCommandBuffer.cpp/h: Move missing includes to header.

2019-03-11  Zalan Bujtas  <zalan@apple.com>

        [Synthetic Click] Dispatch mouseout soon after mouseup
        https://bugs.webkit.org/show_bug.cgi?id=195575
        <rdar://problem/47093049>

        Reviewed by Simon Fraser.

        Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

        Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

        * page/EventHandler.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::dispatchFakeMouseOut):

2019-03-11  Youenn Fablet  <youenn@apple.com>

        REGRESSION: (r242181) API test DragAndDropTests.ExternalSourcePlainTextToIFrame is Timing out
        https://bugs.webkit.org/show_bug.cgi?id=195362

        Reviewed by Alexey Proskuryakov.

        Covered by API test no longer crashing.

        * page/SecurityOrigin.cpp:
        (WebCore::originsMatch):
        String representation should only match if originsMatch returns true.

2019-03-11  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Update GPUSwapChainDescriptor, GPUSwapChain and implement GPUCanvasContext
        https://bugs.webkit.org/show_bug.cgi?id=194406
        <rdar://problem/47892466>

        Reviewed by Myles C. Maxfield.

        GPUSwapChain no longer inherits from GPUBasedRenderingContext, and is now created from a GPUDevice. 
        WebGPURenderingContext is now GPUCanvasContext and delegates functionality to the GPUSwapChain, if it exists. 
        GPUQueue now implicitly presents the GPUSwapChain's current drawable at the task boundary, if one exists.
        Creating a new GPUSwapChain with the same GPUCanvasContext invalidates the previous one and its drawable and pipeline attachments.
        Calling GPUSwapChain::getCurrentTexture returns the same drawable within one task cycle. 
        Some mentions of "WebGPU" have been renamed to "Web GPU" and "gpu".

        All Web GPU tests updated to match.

        Add new files and symbols.
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Rename some mentions of "webgpu" to "gpu".
        * Modules/webgpu/DOMWindowWebGPU.cpp:
        (WebCore::DOMWindowWebGPU::gpu):
        (WebCore::DOMWindowWebGPU::gpu const):
        * Modules/webgpu/DOMWindowWebGPU.h:
        * Modules/webgpu/DOMWindowWebGPU.idl:

        Replace WebGPURenderingContext with GPUCanvasContext.
        * Modules/webgpu/GPUCanvasContext.cpp: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.cpp.
        (WebCore::GPUCanvasContext::create):
        (WebCore::GPUCanvasContext::GPUCanvasContext):
        (WebCore::GPUCanvasContext::replaceSwapChain):
        (WebCore::GPUCanvasContext::platformLayer const):
        (WebCore::GPUCanvasContext::reshape):
        (WebCore::GPUCanvasContext::markLayerComposited):
        * Modules/webgpu/GPUCanvasContext.h: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.h.
        * Modules/webgpu/GPUCanvasContext.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.idl.
        * dom/Document.cpp:
        (WebCore::Document::getCSSCanvasContext):
        * dom/Document.h:
        * dom/Document.idl:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::getContext):
        (WebCore::HTMLCanvasElement::isWebGPUType):
        (WebCore::HTMLCanvasElement::createContextWebGPU):
        (WebCore::HTMLCanvasElement::getContextWebGPU):
        * html/HTMLCanvasElement.h:
        * html/HTMLCanvasElement.idl:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildObjectForCanvas):
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::contextAsScriptValue):

        Update WebGPUSwapChain.
        * Modules/webgpu/GPUTextureDescriptor.idl:
        * Modules/webgpu/GPUTextureFormat.idl: Add the other two texture formats supported by CAMetalLayer.
        * Modules/webgpu/WebGPUDevice.cpp: Implement createSwapChain.
        (WebCore::WebGPUDevice::createSwapChain const):
        (WebCore::WebGPUDevice::getQueue const):
        (WebCore::WebGPUDevice::getQueue): Deleted.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::create):
        (WebCore::WebGPUSwapChain::WebGPUSwapChain):
        (WebCore::WebGPUSwapChain::getCurrentTexture): Renamed from getNextTexture. Only returns the next drawable if the last was presented.
        (WebCore::WebGPUSwapChain::destroy): Invalidate this GPUSwapChain and its textures and views.
        (WebCore::WebGPUSwapChain::configure): Deleted.
        (WebCore::WebGPUSwapChain::getNextTexture): Deleted.
        (WebCore::WebGPUSwapChain::present): Deleted.
        (WebCore::WebGPUSwapChain::reshape): Deleted.
        (WebCore::WebGPUSwapChain::markLayerComposited): Deleted.
        * Modules/webgpu/WebGPUSwapChain.h: Now a device-based object rather than a rendering context.
        (WebCore::WebGPUSwapChain::swapChain const):
        (WebCore::WebGPUSwapChain::WebGPUSwapChain): Deleted.
        * Modules/webgpu/WebGPUSwapChain.idl:
        * Modules/webgpu/WebGPUSwapChainDescriptor.h: Added.
        * platform/graphics/gpu/GPUDevice.cpp: Implement tryCreateSwapChain.
        (WebCore::GPUDevice::tryCreateSwapChain const):
        (WebCore::GPUDevice::getQueue const):
        (WebCore::GPUDevice::getQueue): Deleted.
        * platform/graphics/gpu/GPUDevice.h: Retain a reference to the current GPUSwapChain, if one exists.
        (WebCore::GPUDevice::swapChain const):
        * platform/graphics/gpu/GPUQueue.h:
        * platform/graphics/gpu/GPUSwapChain.h:
        (WebCore::GPUSwapChain::destroy):
        * platform/graphics/gpu/GPUSwapChainDescriptor.h: Added.
        * platform/graphics/gpu/GPUTextureFormat.h: Add the other two texture formats supported by CAMetalLayer.
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::commandBufferCommitted):
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::tryCreate): Renamed from create to better fit functionality. Now retain a reference to the GPUDevice.
        (WebCore::GPUQueue::GPUQueue):
        (WebCore::GPUQueue::submit): Now checks state of all resources before marking them as committed or committing any resource.
                In addition, schedules the current drawable to be presented after all commands have been submitted during this task cycle.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::useAttachments): Ensure that the command buffer is aware of any texture resources used as attachments.
        (WebCore::GPURenderPassEncoder::tryCreate):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::tryGetSupportedPixelFormat): Supported texture formats are the intersection of Web GPU's texture formats and CAMetalLayer's.
        (WebCore::setLayerShape):
        (WebCore::tryCreateSwapLayer): Create and configure the CAMetalLayer backing the swap chain.
        (WebCore::GPUSwapChain::tryCreate):
        (WebCore::GPUSwapChain::GPUSwapChain):
        (WebCore::GPUSwapChain::tryGetCurrentTexture): Renamed from getNextTexture. Only returns a texture if the last one was presented.
        (WebCore::GPUSwapChain::present):
        (WebCore::GPUSwapChain::reshape):
        (WebCore::GPUSwapChain::takeDrawable): Swaps out the current drawable so that it can be presented. The GPUSwapChain thus releases its reference to it.
        (WebCore::GPUSwapChain::create): Deleted.
        (WebCore::GPUSwapChain::setDevice): Deleted.
        (WebCore::GPUSwapChain::setFormat): Deleted.
        (WebCore::GPUSwapChain::getNextTexture): Deleted.
        * platform/graphics/gpu/cocoa/GPUUtilsMetal.mm:
        (WebCore::platformTextureFormatForGPUTextureFormat):

        Misc:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: Missing include.

2019-03-11  Chris Dumez  <cdumez@apple.com>

        Update device orientation & motion permission native SPI as per latest proposal
        https://bugs.webkit.org/show_bug.cgi?id=195567

        Reviewed by Youenn Fablet.

        * dom/DeviceOrientationAndMotionAccessController.cpp:
        (WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
        * page/ChromeClient.h:

2019-03-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Dispatching reentrant "contextmenu" events may cause crashes
        https://bugs.webkit.org/show_bug.cgi?id=195571
        <rdar://problem/48086046>

        Reviewed by Andy Estes.

        Make ContextMenuController::handleContextMenuEvent robust against reentrancy by guarding it with a boolean flag.
        As demonstrated in the test case, it is currently possible to force WebKit into a bad state by dispatching a
        synthetic "contextmenu" event from within the scope of one of the "before(copy|cut|paste)" events triggered as
        a result of handling a context menu event.

        Test: fast/events/contextmenu-reentrancy-crash.html

        * page/ContextMenuController.cpp:
        (WebCore::ContextMenuController::handleContextMenuEvent):
        * page/ContextMenuController.h:

2019-03-11  Andy Estes  <aestes@apple.com>

        [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195530
        <rdar://problem/48747164>

        Reviewed by Alex Christensen.

        * Modules/applepay/PaymentCoordinatorClient.h: Defined isWebPaymentCoordinator.
        * page/Settings.yaml: Defined the applePayRemoteUIEnabled setting and reordered the other
        Apple Pay settings.

2019-03-11  Alex Christensen  <achristensen@webkit.org>

        Soft linking to Reveal framework should be optional
        https://bugs.webkit.org/show_bug.cgi?id=195576
        <rdar://problem/46822452>

        Reviewed by Megan Gardner.

        Systems exist with ENABLE(REVEAL) true and the Reveal framework does not exist.

        * editing/cocoa/DictionaryLookup.mm:
        (WebCore::showPopupOrCreateAnimationController):

2019-03-11  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Reduce # of structures in JSGlobalObject initialization
        https://bugs.webkit.org/show_bug.cgi?id=195498

        Reviewed by Darin Adler.

        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::serialize):

2019-03-11  Brent Fulgham  <bfulgham@apple.com>

        Remove obsolete runtime flag for StorageAccess API Prompt
        https://bugs.webkit.org/show_bug.cgi?id=195564
        <rdar://problem/37279014>

        Reviewed by Chris Dumez.

        This bug tracks the work of removing the obsolete flag that had been used to optionally
        prevent display of the StorageAccess API prompt. We have since shipped the final version
        of this feature with an always-on prompt, and should have removed this runtime flag.

        No test changes because this has no change in behavior. Tests already assume the prompt
        behavior, and did not test turning the flag off.

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setStorageAccessPromptsEnabled): Deleted.
        (WebCore::RuntimeEnabledFeatures::storageAccessPromptsEnabled const): Deleted.
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setStorageAccessPromptsEnabled): Deleted.
        * testing/InternalSettings.h:
        (): Deleted.
        * testing/InternalSettings.idl:

2019-03-11  Eric Carlson  <eric.carlson@apple.com>

        Add web audio release logging
        https://bugs.webkit.org/show_bug.cgi?id=195554
        <rdar://problem/48767211>

        Reviewed by Jer Noble.

        No new tests, no functional change.

        * Modules/webaudio/AudioBasicInspectorNode.cpp:
        (WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode):
        * Modules/webaudio/AudioBufferSourceNode.cpp:
        (WebCore::AudioBufferSourceNode::setBuffer):
        (WebCore::AudioBufferSourceNode::startPlaying):
        * Modules/webaudio/AudioContext.cpp:
        (WebCore::nextLogIdentifier):
        (WebCore::AudioContext::AudioContext):
        (WebCore::AudioContext::uninitialize):
        (WebCore::AudioContext::stop):
        (WebCore::AudioContext::createBufferSource):
        (WebCore::AudioContext::createMediaElementSource):
        (WebCore::AudioContext::createMediaStreamSource):
        (WebCore::AudioContext::createScriptProcessor):
        (WebCore::AudioContext::createBiquadFilter):
        (WebCore::AudioContext::createWaveShaper):
        (WebCore::AudioContext::createPanner):
        (WebCore::AudioContext::createConvolver):
        (WebCore::AudioContext::createDynamicsCompressor):
        (WebCore::AudioContext::createAnalyser):
        (WebCore::AudioContext::createGain):
        (WebCore::AudioContext::createDelay):
        (WebCore::AudioContext::createChannelSplitter):
        (WebCore::AudioContext::createChannelMerger):
        (WebCore::AudioContext::createOscillator):
        (WebCore::AudioContext::createPeriodicWave):
        (WebCore::AudioContext::willBeginPlayback):
        (WebCore::AudioContext::startRendering):
        (WebCore::AudioContext::fireCompletionEvent):
        (WebCore::AudioContext::logChannel const):
        * Modules/webaudio/AudioContext.h:
        (WebCore::AudioContext::nextAudioNodeLogIdentifier):
        (WebCore::AudioContext::nextAudioParameterLogIdentifier):
        * Modules/webaudio/AudioDestinationNode.cpp:
        (WebCore::AudioDestinationNode::AudioDestinationNode):
        * Modules/webaudio/AudioNode.cpp:
        (WebCore::convertEnumerationToString):
        (WebCore::AudioNode::AudioNode):
        (WebCore::AudioNode::~AudioNode):
        (WebCore::AudioNode::setNodeType):
        (WebCore::AudioNode::addInput):
        (WebCore::AudioNode::addOutput):
        (WebCore::AudioNode::connect):
        (WebCore::AudioNode::disconnect):
        (WebCore::AudioNode::setChannelCount):
        (WebCore::AudioNode::setChannelCountMode):
        (WebCore::AudioNode::setChannelInterpretation):
        (WebCore::AudioNode::logChannel const):
        * Modules/webaudio/AudioNode.h:
        (WTF::LogArgument<WebCore::AudioNode::NodeType>::toString):
        * Modules/webaudio/AudioParam.cpp:
        (WebCore::AudioParam::AudioParam):
        (WebCore::AudioParam::setValue):
        (WebCore::AudioParam::connect):
        (WebCore::AudioParam::disconnect):
        (WebCore::AudioParam::logChannel const):
        * Modules/webaudio/AudioParam.h:
        * Modules/webaudio/AudioScheduledSourceNode.cpp:
        (WebCore::AudioScheduledSourceNode::start):
        (WebCore::AudioScheduledSourceNode::stop):
        * Modules/webaudio/BiquadFilterNode.cpp:
        (WebCore::BiquadFilterNode::BiquadFilterNode):
        * Modules/webaudio/ChannelMergerNode.cpp:
        (WebCore::ChannelMergerNode::ChannelMergerNode):
        * Modules/webaudio/ChannelSplitterNode.cpp:
        (WebCore::ChannelSplitterNode::ChannelSplitterNode):
        * Modules/webaudio/ConvolverNode.cpp:
        (WebCore::ConvolverNode::ConvolverNode):
        * Modules/webaudio/DefaultAudioDestinationNode.cpp:
        (WebCore::DefaultAudioDestinationNode::initialize):
        (WebCore::DefaultAudioDestinationNode::uninitialize):
        (WebCore::DefaultAudioDestinationNode::enableInput):
        (WebCore::DefaultAudioDestinationNode::setChannelCount):
        * Modules/webaudio/DelayNode.cpp:
        (WebCore::DelayNode::DelayNode):
        * Modules/webaudio/DynamicsCompressorNode.cpp:
        (WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
        * Modules/webaudio/GainNode.cpp:
        (WebCore::GainNode::GainNode):
        * Modules/webaudio/MediaElementAudioSourceNode.cpp:
        (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):
        * Modules/webaudio/MediaStreamAudioSourceNode.cpp:
        (WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode):
        * Modules/webaudio/OfflineAudioDestinationNode.cpp:
        (WebCore::OfflineAudioDestinationNode::startRendering):
        * Modules/webaudio/OscillatorNode.cpp:
        (WebCore::OscillatorNode::setType):
        (WebCore::OscillatorNode::setPeriodicWave):
        * Modules/webaudio/OscillatorNode.h:
        (WTF::LogArgument<WebCore::OscillatorNode::Type>::toString):
        * Modules/webaudio/PannerNode.cpp:
        (WebCore::PannerNode::PannerNode):
        * Modules/webaudio/ScriptProcessorNode.cpp:
        (WebCore::ScriptProcessorNode::ScriptProcessorNode):
        * Modules/webaudio/WaveShaperNode.cpp:
        (WebCore::WaveShaperNode::WaveShaperNode):
        (WebCore::WaveShaperNode::setCurve):
        (WebCore::WaveShaperNode::setOversample):
        * Modules/webaudio/WaveShaperNode.h:
        (WTF::LogArgument<WebCore::WaveShaperNode::OverSampleType>::toString):

2019-03-11  Youenn Fablet  <youenn@apple.com>

        Make IDBDatabaseIdentifier take a ClientOrigin as member
        https://bugs.webkit.org/show_bug.cgi?id=195544

        Reviewed by Geoffrey Garen.

        Instead of taking a top and a frame origin, make
        make IDBDatabaseIdentifier take a ClientOrigin.

        This allows reusing some ClientOrigin code
        and will ease implementation of storage quota checking in
        NetworkProcess, as quota managers are keyed by client origins.

        No change of behavior.

        * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
        (WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
        (WebCore::IDBDatabaseIdentifier::isolatedCopy const):
        (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
        (WebCore::IDBDatabaseIdentifier::debugString const):
        * Modules/indexeddb/IDBDatabaseIdentifier.h:
        (WebCore::IDBDatabaseIdentifier::hash const):
        (WebCore::IDBDatabaseIdentifier::operator== const):
        (WebCore::IDBDatabaseIdentifier::origin const):
        (WebCore::IDBDatabaseIdentifier::isRelatedToOrigin const):
        (WebCore::IDBDatabaseIdentifier::encode const):
        (WebCore::IDBDatabaseIdentifier::decode):
        * page/ClientOrigin.h:
        (WebCore::ClientOrigin::isRelated const):

2019-03-11  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Manually rolling out r242701 and r242703 since the changes
        are causing test timeouts and crashes on GTK and WPE.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
        (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
        (WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
        (WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer):
        (WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
        (): Deleted.

2019-03-11  Jer Noble  <jer.noble@apple.com>

        Use AVContentKeySession for "com.apple.fps.2_0" CDM version when AVStreamSession is absent
        https://bugs.webkit.org/show_bug.cgi?id=195462
        <rdar://problem/48712306>

        Reviewed by Eric Carlson.

        The difference between "com.apple.fps.2_0" and "3_0" is a protocol difference more than an
        implementation difference. In "2_0", the "EME nitialization" data comes in the form of a "content
        identifier", while the true initialization data is retrieved through a side channel directly from
        the attached element. In "3_0", the "EME initialization data" is the exact initialization data
        given by the parser, with no "content identifier" at all.

        In the original implementation, the "2_0" used AVStreamSession, and "3_0" used AVContentKeySession,
        but in the absense of AVStreamSession, those protocol differences are minor and can be implemented
        using AVContentKeySession.

        Changes:

        - Add a new helper struct in CDMPrivateMediaSourceAVFObjC that represents the parsed parameters
          of the CDM string.
        - Add an "initData()" accessor to SourceBufferPrivateAVFObjC so that the "2_0" path can implement
          the side channel access to the necessary initialization data.
        - Refactor some of the SPI code to not re-declare unnecessary APIs.
        - In CDMSessionAVContentKeySession::generateKeyRequest(), this function can never be called twice
          so it is a logical impossibility to have a certificate at this point. Remove all this if() code.

        * Modules/encryptedmedia/legacy/LegacyCDM.cpp:
        * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
        (WebCore::CDMPrivateMediaSourceAVFObjC::parseKeySystem):
        (WebCore::queryDecoderAvailability):
        (WebCore::CDMPrivateMediaSourceAVFObjC::supportsKeySystem):
        (WebCore::CDMPrivateMediaSourceAVFObjC::createSession):
        (WebCore::validKeySystemRE): Deleted.
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        (WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession):
        (WebCore::CDMSessionAVContentKeySession::generateKeyRequest):
        (WebCore::CDMSessionAVContentKeySession::update):
        (WebCore::CDMSessionAVContentKeySession::addParser):
        (WebCore::CDMSessionAVContentKeySession::removeParser):
        (WebCore::CDMSessionAVContentKeySession::contentKeySession):
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242688, r242643, r242624.

        Caused multiple layout test failures and crashes on iOS and macOS.

        Reverted changeset:

        "requestAnimationFrame should execute before the next frame"
        https://bugs.webkit.org/show_bug.cgi?id=177484
        https://trac.webkit.org/changeset/242624/webkit

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
        * animation/DocumentAnimationScheduler.cpp: Added.
        (WebCore::DocumentAnimationScheduler::create):
        (WebCore::DocumentAnimationScheduler::DocumentAnimationScheduler):
        (WebCore::DocumentAnimationScheduler::detachFromDocument):
        (WebCore::DocumentAnimationScheduler::scheduleWebAnimationsResolution):
        (WebCore::DocumentAnimationScheduler::unscheduleWebAnimationsResolution):
        (WebCore::DocumentAnimationScheduler::scheduleScriptedAnimationResolution):
        (WebCore::DocumentAnimationScheduler::displayRefreshFired):
        (WebCore::DocumentAnimationScheduler::windowScreenDidChange):
        (WebCore::DocumentAnimationScheduler::createDisplayRefreshMonitor const):
        * animation/DocumentAnimationScheduler.h: Renamed from Source/WebCore/page/RenderingUpdateScheduler.h.
        (WebCore::DocumentAnimationScheduler::lastTimestamp):
        (WebCore::DocumentAnimationScheduler::isFiring const):
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        (WebCore::DocumentTimeline::updateThrottlingState):
        (WebCore::DocumentTimeline::suspendAnimations):
        (WebCore::DocumentTimeline::resumeAnimations):
        (WebCore::DocumentTimeline::liveCurrentTime const):
        (WebCore::DocumentTimeline::currentTime):
        (WebCore::DocumentTimeline::cacheCurrentTime):
        (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded):
        (WebCore::DocumentTimeline::animationTimingDidChange):
        (WebCore::DocumentTimeline::scheduleAnimationResolution):
        (WebCore::DocumentTimeline::unscheduleAnimationResolution):
        (WebCore::DocumentTimeline::animationResolutionTimerFired):
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
        (WebCore::DocumentTimeline::scheduleNextTick):
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement):
        (WebCore::DocumentTimeline::resolveAnimationsForElement):
        (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): Deleted.
        * animation/DocumentTimeline.h:
        * dom/Document.cpp:
        (WebCore::Document::resolveStyle):
        (WebCore::Document::prepareForDestruction):
        (WebCore::Document::windowScreenDidChange):
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::scheduleForcedIntersectionObservationUpdate):
        (WebCore::Document::animationScheduler):
        (WebCore::Document::updateAnimationsAndSendEvents): Deleted.
        (WebCore::Document::serviceRequestAnimationFrameCallbacks): Deleted.
        * dom/Document.h:
        * dom/ScriptedAnimationController.cpp:
        (WebCore::ScriptedAnimationController::serviceScriptedAnimations):
        (WebCore::ScriptedAnimationController::scheduleAnimation):
        (WebCore::ScriptedAnimationController::animationTimerFired):
        (WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire):
        (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): Deleted.
        * dom/ScriptedAnimationController.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportContentsChanged):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):
        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::willDisplayPage):
        (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate):
        (WebCore::Page::updateIntersectionObservations):
        (WebCore::Page::scheduleForcedIntersectionObservationUpdate):
        (WebCore::Page::layoutIfNeeded): Deleted.
        (WebCore::Page::renderingUpdate): Deleted.
        (WebCore::Page::renderingUpdateScheduler): Deleted.
        * page/Page.h:
        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::didChangeViewExposedRect):
        (WebCore::PageOverlayController::notifyFlushRequired):
        * page/RenderingUpdateScheduler.cpp: Removed.
        * page/ios/ContentChangeObserver.h:
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::scheduleLayerFlushNow):

2019-03-11  Darin Adler  <darin@apple.com>

        Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
        https://bugs.webkit.org/show_bug.cgi?id=195533

        Reviewed by Brent Fulgham.

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::changeValueByStep): Use numberToStringFixedPrecision.
        (WebCore::AccessibilityNodeObject::changeValueByPercent): Ditto.
        * accessibility/AccessibilityScrollbar.cpp:
        (WebCore::AccessibilityScrollbar::setValue): Ditto.
        * css/CSSFontVariationValue.cpp:
        (WebCore::CSSFontVariationValue::customCSSText const): Use appendFixedPrecisionNumber.
        * css/CSSGradientValue.cpp:
        (WebCore::CSSLinearGradientValue::customCSSText const): Ditto.
        (WebCore::CSSRadialGradientValue::customCSSText const): Ditto.
        * css/CSSKeyframeRule.cpp:
        (WebCore::StyleRuleKeyframe::keyText const): Ditto.
        * css/CSSTimingFunctionValue.cpp:
        (WebCore::CSSCubicBezierTimingFunctionValue::customCSSText const): Ditto.
        (WebCore::CSSSpringTimingFunctionValue::customCSSText const): Ditto.
        * css/parser/CSSParserToken.cpp:
        (WebCore::CSSParserToken::serialize const): Ditto.
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::completeURLsInAttributeValue const): Ditto.
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::drawRulers): Use numberToStringFixedPrecision.
        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::toString const): Use appendFixedPrecisionNumber.
        * page/PrintContext.cpp:
        (WebCore::PrintContext::pageProperty): Use numberToStringFixedPrecision.
        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::gcTimerString): Use numberToStringFixedPrecision.
        * platform/LayoutUnit.h:
        (WTF::ValueToString<WebCore::LayoutUnit>::string): Ditto.
        * platform/graphics/Color.cpp:
        (WebCore::Color::cssText const): Use appendFixedPrecisionNumber.
        * platform/graphics/ExtendedColor.cpp:
        (WebCore::ExtendedColor::cssText const): Ditto.
        * svg/SVGAngleValue.cpp:
        (WebCore::SVGAngleValue::valueAsString const): Use numberToStringFixedPrecision.
        * svg/SVGNumberListValues.cpp:
        (WebCore::SVGNumberListValues::valueAsString const): Use appendFixedPrecisionNumber.
        * svg/SVGPathStringBuilder.cpp:
        (WebCore::appendNumber): Ditto.
        (WebCore::appendPoint): Ditto.
        * svg/SVGPointListValues.cpp:
        (WebCore::SVGPointListValues::valueAsString const): Ditto.
        * svg/SVGTransformValue.cpp:
        (WebCore::SVGTransformValue::valueAsString const): Ditto.
        * svg/properties/SVGPropertyTraits.h:
        (WebCore::SVGPropertyTraits<float>::toString): Use numberToStringFixedPrecision.
        (WebCore::SVGPropertyTraits<FloatPoint>::toString): Use appendFixedPrecisionNumber.
        (WebCore::SVGPropertyTraits<FloatRect>::toString): Ditto.
        * testing/Internals.cpp:
        (WebCore::Internals::dumpMarkerRects): Use appendFixedPrecisionNumber.
        (WebCore::Internals::getCurrentCursorInfo): Ditto.
        * xml/XPathValue.cpp:
        (WebCore::XPath::Value::toString const): Use numberToStringFixedPrecision.

2019-03-11  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, Non-GStreamer-GL build fix after r242701.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):

2019-03-11  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][v4l2] Synchronous video texture flushing support
        https://bugs.webkit.org/show_bug.cgi?id=195453

        Reviewed by Xabier Rodriguez-Calvar.

        The v4l2 video decoder currently requires that downstream users of
        the graphics resources complete any pending draw call and release
        resources before returning from the DRAIN query.

        To accomplish this the player monitors the pipeline and whenever a
        v4l2 decoder is added, synchronous video texture flushing support
        is enabled. Additionally and for all decoder configurations, a
        flush is performed before disposing of the player.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
        Monitor elements added to the decodebin bin.
        (WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
        a flag if a v4l2 decoder was added in decodebin.
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
        to the deep-element-added signal so as to monitor pipeline
        topology updates.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
        Flush video texture before disposing of the player.
        (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
        Synchronously flush if the pipeline contains a v4l2 decoder.
        (WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
        (WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
        boolean flag used mostly to trigger synchronous flush conditions.
        (WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
        Optionally drop the current buffer in a synchronous manner. By
        default the method keeps operating asynchronously.
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

2019-03-11  Antti Koivisto  <antti@apple.com>

        Rename contentOffsetInCompostingLayer to contentOffsetInCompositingLayer
        https://bugs.webkit.org/show_bug.cgi?id=195553

        Reviewed by Simon Fraser.

        Less composting, more compositing.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateBackdropFiltersGeometry):
        (WebCore::RenderLayerBacking::resetContentsRect):
        (WebCore::RenderLayerBacking::updateChildClippingStrategy):
        (WebCore::RenderLayerBacking::updateImageContents):
        (WebCore::RenderLayerBacking::contentOffsetInCompositingLayer const):
        (WebCore::RenderLayerBacking::contentsBox const):
        (WebCore::RenderLayerBacking::backgroundBoxForSimpleContainerPainting const):
        (WebCore::RenderLayerBacking::contentOffsetInCompostingLayer const): Deleted.
        * rendering/RenderLayerBacking.h:

2019-03-10  Ross Kirsling  <ross.kirsling@sony.com>

        Invalid flags in a RegExp literal should be an early SyntaxError
        https://bugs.webkit.org/show_bug.cgi?id=195514

        Reviewed by Darin Adler.

        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readTerminal):
        Consume YarrFlags.

2019-03-10  Tim Horton  <timothy_horton@apple.com>

        Add SPI to retrieve the set of text inputs in a given rect, and later focus one
        https://bugs.webkit.org/show_bug.cgi?id=195499

        Reviewed by Darin Adler.

        New API tests: WebKit.RequestTextInputContext and WebKit.FocusTextInputContext

        * WebCore.xcodeproj/project.pbxproj:
        * dom/Document.cpp:
        (WebCore::Document::identifierForElement):
        (WebCore::Document::elementWithIdentifier):
        (WebCore::Document::identifiedElementWasRemovedFromDocument):
        * dom/Document.h:
        Add a mechanism where Document will vend an ObjectIdentifier for a given
        element, and can (if possible) retrieve that element later.

        * dom/Element.cpp:
        (WebCore::Element::removedFromAncestor):
        If an Element has an identifier created for it, inform Document to remove
        it from the identifier map when the element is detached.

        (WebCore::Element::createElementIdentifier):
        * dom/Element.h:
        * dom/ElementIdentifier.h: Added.
        * dom/ElementRareData.cpp:
        * dom/ElementRareData.h:
        (WebCore::ElementRareData::hasElementIdentifier const):
        (WebCore::ElementRareData::setHasElementIdentifier):
        (WebCore::ElementRareData::ElementRareData):
        Store a bit indicating if the Element has had a identifier created for it,
        so that we can avoid a hash lookup on every Element removal.

        * dom/Node.h:
        * html/HTMLTextFormControlElement.h:

2019-03-10  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Fix failing test cases
        https://bugs.webkit.org/show_bug.cgi?id=195524
        <rdar://problem/48745101>

        Reviewed by Simon Fraser.

        1. Do not start DOM timer install observation when we already detected change at touchstart.
        2. hasPendingActivity() should only care about ContentChangeObserver flags.
        3. Do not try to notify the client when we are in the mouseMoved dispatch call (currently it could happen
        when a timer gets intalled and removed right away).

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::hasPendingActivity const):
        (WebCore::ContentChangeObserver::isObservationTimeWindowActive const):

2019-03-10  Simon Fraser  <simon.fraser@apple.com>

        ScrollingTree should have the final say on where layers go
        https://bugs.webkit.org/show_bug.cgi?id=195507

        Reviewed by Antti Koivisto.

        Main thread layer flushing can race with scrolling tree layer changes on macOS, causing
        flashing as layers jump around sometimes. We go to some lengths to avoid this by trying
        not to touch properties on layers that are being interacted with (scrollableArea->setIsUserScroll in
        updateScrollPositionAfterAsyncScroll()), but that's fragile.

        This patch adds ScrollingTree::applyScrollingTreeLayerPositions(), which enters
        ScrollingTree::applyLayerPositions() on the main thread/UI process. This traverses
        the tree allowing each node to run their layer positioning logic.

        For macOS WK2, this is called from TiledCoreAnimationDrawingArea::flushLayers() after flushCompositingStateIncludingSubframes().
        For macOS WK2 with UI-side compositing, RemoteLayerTreeDrawingAreaProxy::commitLayerTree()
        calls m_webPageProxy.scrollingCoordinatorProxy()->applyScrollingTreeLayerPositions().
        iOS WK2 is unchanged, using viewportChangedViaDelegatedScrolling() which does the same thing, allowing
        for the dynamic viewport changes that happen when zooming on iOS.

        Testing this requires infrastructure that we don't have yet.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::applyScrollingTreeLayerPositions):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::applyScrollingTreeLayerPositions):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::handleWheelEvent):
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::applyLayerPositions):
        (WebCore::ScrollingTree::applyLayerPositionsRecursive):
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::applyLayerPositions):
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::applyLayerPositions):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::relatedNodeScrollPositionDidChange):
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h:
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::applyLayerPositions):
        (WebCore::ScrollingTreeStickyNode::relatedNodeScrollPositionDidChange):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::applyLayerPositions):

2019-03-09  Andy Estes  <aestes@apple.com>

        [Apple Pay] CanMakePaymentsWithActiveCard and OpenPaymentSetup should be async messages
        https://bugs.webkit.org/show_bug.cgi?id=195526
        <rdar://problem/48745636>

        Reviewed by Chris Dumez.

        * Modules/applepay/PaymentCoordinatorClient.h:
        * loader/EmptyClients.cpp:
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebCore::MockPaymentCoordinator::openPaymentSetup):
        * testing/MockPaymentCoordinator.h:

2019-03-09  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Click event fires immediately on hover menu at seriouseats.com
        https://bugs.webkit.org/show_bug.cgi?id=195520
        <rdar://problem/48740098>

        Reviewed by Simon Fraser.

        Unfortunately seriouseats has a 300ms hover intent delay to deal with accidental menupane pop-ups. This page also hides this
        non-fixed width menupane using absolute positioning and negative left.  

        Test: fast/events/touch/ios/content-observation/move-content-from-offscreen.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredHidden const): Content auhtors tend to use x - 1 values (where x = 10^y)

2019-03-09  Chris Dumez  <cdumez@apple.com>

        Add assertions to help debug crash under DOMWindowExtension::suspendForPageCache()
        https://bugs.webkit.org/show_bug.cgi?id=195488

        Reviewed by Ryosuke Niwa.

        Try and figure out how the document can be detached from its frame while we're suspending
        DOMWindowExtensions.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        (WebCore::DOMWindow::suspendForPageCache):
        * page/DOMWindow.h:

2019-03-09  Chris Dumez  <cdumez@apple.com>

        Simplify DOMWindowProperty code / handling
        https://bugs.webkit.org/show_bug.cgi?id=195495

        Reviewed by Ryosuke Niwa.

        DOMWindowProperty code was unnecessarily complex because DOMWindowExtension inherited
        from it and DOMWindowExtension needs a lot of information about the global object's
        lifetime to communicate to the injected bbundle client. This subclassing is also
        very confusing because a DOMWindowExtension is not a *property* on the Window object.

        This patch updates DOMWindowExtension to stop subclassing DOMWindowProperty and
        moves all the complexity from DOMWindowProperty to DOMWindowExtension.
        DOMWindowProperty is now a very simple base class which merely has a WeakPtr to
        the window and getters for the window and the frame.

        * Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
        (WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
        (WebCore::DOMWindowIndexedDatabase::indexedDB):
        * Modules/indexeddb/DOMWindowIndexedDatabase.h:
        There is no reason for DOMWindowIndexedDatabase to move its IDBFactory to a
        separate data member which in PageCache. Script do not run while in PageCache.
        Also, frames are nulled out while in the PageCache so the indexedDB() getter
        would return null anyway while in PageCache.

        * css/StyleMedia.idl:
        * loader/appcache/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::setDOMApplicationCache):
        Store a WeakPtr to the DOMApplicationCache for safety.

        (WebCore::ApplicationCacheHost::dispatchDOMEvent):
        Do not fire events on the DOMApplicationCache if it is frameless to maintain
        previous behavior. Previously, the DOMApplicationCache would have been nulled
        out when detached from its frame so we would not have fired events.

        * loader/appcache/ApplicationCacheHost.h:
        * loader/appcache/DOMApplicationCache.cpp:
        * loader/appcache/DOMApplicationCache.h:
        Remove some unnecessary complexity. The ApplicationCacheHost is owned by the
        DocumentLoader, which changes on navigation. There is therefore no reason to
        null out the DOMApplicationCache on the ApplicationCacheHost when its gets
        detached from its frame or enters PageCache.

        * page/BarProp.idl:
        * page/DOMSelection.idl:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::willDestroyCachedFrame):
        (WebCore::DOMWindow::willDestroyDocumentInFrame):
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        (WebCore::DOMWindow::registerExtension):
        (WebCore::DOMWindow::unregisterExtension):

        (WebCore::DOMWindow::resetDOMWindowProperties): Removed.
        Stop clearing some of the DOMWindow's properties when the document gets destroyed or when
        the Window for the initial empty document gets reused on navigation. I think we used to
        need this because DOMWindowProperty used to hold pointers to their frame. However, this
        is no longer the case nowadays as DOMWindowProperty objects get their frame from their
        Window.

        (WebCore::DOMWindow::resetUnlessSuspendedForDocumentSuspension):
        (WebCore::DOMWindow::suspendForPageCache):
        (WebCore::DOMWindow::resumeFromPageCache):
        * page/DOMWindow.h:
        * page/DOMWindowExtension.cpp:
        (WebCore::DOMWindowExtension::DOMWindowExtension):
        (WebCore::DOMWindowExtension::~DOMWindowExtension):
        (WebCore::DOMWindowExtension::frame const):
        (WebCore::DOMWindowExtension::suspendForPageCache):
        (WebCore::DOMWindowExtension::resumeFromPageCache):
        (WebCore::DOMWindowExtension::willDestroyGlobalObjectInCachedFrame):
        (WebCore::DOMWindowExtension::willDestroyGlobalObjectInFrame):
        (WebCore::DOMWindowExtension::willDetachGlobalObjectFromFrame):
        * page/DOMWindowExtension.h:
        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::DOMWindowProperty):
        * page/DOMWindowProperty.h:
        (WebCore::DOMWindowProperty::window const):
        * page/History.idl:
        * page/Location.idl:
        * page/Navigator.cpp:
        (WebCore::Navigator::plugins):
        (WebCore::Navigator::mimeTypes):
        * page/PerformanceNavigation.idl:
        * page/PerformanceTiming.idl:
        * page/Screen.idl:
        * page/VisualViewport.cpp:
        (WebCore::VisualViewport::scriptExecutionContext const):
        * plugins/DOMMimeTypeArray.idl:
        * plugins/DOMPluginArray.idl:

2019-03-09  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Start observing for content change between touchEnd and mouseMoved start
        https://bugs.webkit.org/show_bug.cgi?id=195510
        <rdar://problem/48735695>

        Reviewed by Simon Fraser.

        This patch covers the observation of async changes triggered by touchStart/touchEnd (animations, timers, style recalcs).

        Test: fast/events/touch/ios/content-observation/visibility-change-after-touch-end.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didCancelTouchEvent):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::setIsInBetweenTouchEndAndMouseMoved):
        (WebCore::ContentChangeObserver::isInBetweenTouchEndAndMouseMoved const):
        (WebCore::ContentChangeObserver::isObservingContentChanges const):

2019-03-08  Simon Fraser  <simon.fraser@apple.com>

        Make it clearer which data is protected by the two locks in ScrollingTree
        https://bugs.webkit.org/show_bug.cgi?id=195501

        Reviewed by Tim Horton.

        Gather ScrollingTree member variables into two structs, and name the struct
        members and the locks to make it clear which data is protected by each lock.
        
        We only need to protect data read by multiple threads; these are the scrolling
        thread, the event handling thread (which runs ThreadedScrollingTree::tryToHandleWheelEvent()),
        and the main thread, which pokes various bits of pin/rubber-banding state.
        Ideally the main thread would always push data to the scrolling thread via a commit,
        but that's not what happens now.

        Suspiciously, ScrollingTree::shouldHandleWheelEventSynchronously() uses the root node,
        so should probably hold a lock shared with the scrolling thread (webkit.org/b/195502).
        
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::setAsyncFrameOrOverflowScrollingEnabled):
        (WebCore::ScrollingTree::setMainFrameScrollPosition):
        (WebCore::ScrollingTree::eventTrackingTypeForPoint):
        (WebCore::ScrollingTree::isRubberBandInProgress):
        (WebCore::ScrollingTree::setMainFrameIsRubberBanding):
        (WebCore::ScrollingTree::isScrollSnapInProgress):
        (WebCore::ScrollingTree::setMainFrameIsScrollSnapping):
        (WebCore::ScrollingTree::setMainFramePinState):
        (WebCore::ScrollingTree::setCanRubberBandState):
        (WebCore::ScrollingTree::setScrollPinningBehavior):
        (WebCore::ScrollingTree::scrollPinningBehavior):
        (WebCore::ScrollingTree::willWheelEventStartSwipeGesture):
        (WebCore::ScrollingTree::latchedNode):
        (WebCore::ScrollingTree::setLatchedNode):
        (WebCore::ScrollingTree::clearLatchedNode):
        (WebCore::ScrollingTree::scrollingTreeAsText):
        (WebCore::ScrollingTree::touchActionDataAtPoint const):
        (WebCore::ScrollingTree::mainFrameScrollPosition): Deleted.
        (WebCore::ScrollingTree::mainFrameLayoutViewport): Deleted.
        (WebCore::ScrollingTree::rubberBandsAtLeft): Deleted.
        (WebCore::ScrollingTree::rubberBandsAtRight): Deleted.
        (WebCore::ScrollingTree::rubberBandsAtBottom): Deleted.
        (WebCore::ScrollingTree::rubberBandsAtTop): Deleted.
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::hasLatchedNode const):
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount):
        * platform/graphics/FloatPoint.h:
        (WebCore::FloatPoint::isZero const):

2019-03-08  Simon Fraser  <simon.fraser@apple.com>

        Share some code that sets CALayer positions
        https://bugs.webkit.org/show_bug.cgi?id=195485

        Reviewed by Zalan Bujtas.

        Share some code between ScrollingTreeStickyNode and ScrollingTreeFixedNode that sets the position
        of a CALayer given the top-left location.

        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreeFixedNodeInternal::operator*): Deleted.
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreeStickyNodeInternal::operator*): Deleted.
        * platform/graphics/cocoa/WebCoreCALayerExtras.h:
        * platform/graphics/cocoa/WebCoreCALayerExtras.mm:
        (-[CALayer _web_setLayerTopLeftPosition:]):

2019-03-08  Chris Dumez  <cdumez@apple.com>

        Add support for Device Orientation / Motion permission API
        https://bugs.webkit.org/show_bug.cgi?id=195329
        <rdar://problem/47645367>

        Reviewed by Geoffrey Garen.

        Add support for Device Orientation / Motion permission API:
        - https://github.com/w3c/deviceorientation/issues/57

        Pages can add event listeners for 'deviceorientation' / 'devicemotion' events but
        such events will not be fired until the page's JavaScript calls
        DeviceOrientationEvent.requestPermission() / DeviceMotionEvent.requestPermission()
        and the user grants the request.

        The feature is currently behind an experimental feature flag, off by default.

        Tests: fast/device-orientation/device-motion-request-permission-denied.html
               fast/device-orientation/device-motion-request-permission-granted.html
               fast/device-orientation/device-motion-request-permission-user-gesture.html
               fast/device-orientation/device-orientation-request-permission-denied.html
               fast/device-orientation/device-orientation-request-permission-granted.html
               fast/device-orientation/device-orientation-request-permission-user-gesture.html

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/DeviceMotionEvent.h:
        * dom/DeviceMotionEvent.idl:
        * dom/DeviceOrientationAndMotionAccessController.cpp: Added.
        (WebCore::DeviceOrientationAndMotionAccessController::DeviceOrientationAndMotionAccessController):
        (WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
        (WebCore::DeviceOrientationAndMotionAccessController::setAccessState):
        * dom/DeviceOrientationAndMotionAccessController.h: Added.
        (WebCore::DeviceOrientationAndMotionAccessController::accessState const):
        * dom/DeviceOrientationEvent.h:
        * dom/DeviceOrientationEvent.idl:
        * dom/DeviceOrientationOrMotionEvent.cpp: Added.
        (WebCore::DeviceOrientationOrMotionEvent::requestPermission):
        * dom/DeviceOrientationOrMotionEvent.h: Added.
        * dom/DeviceOrientationOrMotionEvent.idl: Added.
        * dom/DeviceOrientationOrMotionPermissionState.h: Added.
        * dom/DeviceOrientationOrMotionPermissionState.idl: Added.
        * dom/Document.cpp:
        (WebCore::Document::deviceOrientationAndMotionAccessController):
        * dom/Document.h:
        * dom/Event.cpp:
        * dom/MessagePort.cpp:
        * dom/Microtasks.cpp:
        * page/ChromeClient.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        (WebCore::DOMWindow::deviceOrientationController const):
        (WebCore::DOMWindow::deviceMotionController const):
        (WebCore::DOMWindow::isAllowedToUseDeviceMotionOrientation const):
        (WebCore::DOMWindow::isAllowedToAddDeviceMotionOrientationListener const):
        (WebCore::DOMWindow::startListeningForDeviceOrientationIfNecessary):
        (WebCore::DOMWindow::stopListeningForDeviceOrientationIfNecessary):
        (WebCore::DOMWindow::startListeningForDeviceMotionIfNecessary):
        (WebCore::DOMWindow::stopListeningForDeviceMotionIfNecessary):
        (WebCore::DOMWindow::removeEventListener):
        (WebCore::DOMWindow::removeAllEventListeners):
        * page/DOMWindow.h:
        * page/DeviceController.cpp:
        (WebCore::DeviceController::hasDeviceEventListener const):
        * page/DeviceController.h:
        * page/Settings.yaml:

2019-03-08  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Expand "isConsideredClickable" to descendants
        https://bugs.webkit.org/show_bug.cgi?id=195478
        <rdar://problem/48724935>

        Reviewed by Simon Fraser.

        In StyleChangeScope we try to figure out whether newly visible content should stick (menu panes etc) by checking if it is clickable.
        This works fine as long as all the visible elements are gaining new renderers through this style update processs.
        However when an element becomes visible by a change other than display: (not)none, it's not sufficient to just check the element itself,
        since it might not respond to click at all, while its descendants do.
        A concrete example is a max-height value change on usps.com, where the max-height is on a container (menu pane).
        This container itself is not clickable while most of its children are (menu items).    

        Test: fast/events/touch/ios/content-observation/clickable-content-is-inside-a-container.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredHidden const):
        (WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):
        (WebCore::isConsideredHidden): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-03-08  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Cleanup adjustObservedState
        https://bugs.webkit.org/show_bug.cgi?id=195470
        <rdar://problem/48717823>

        Reviewed by Simon Fraser.

        This is in preparation for introducing an observation window from touchStart -> mouseMoved.
        1. Cancel pending activities (future timers, pending stylesheet recalcs) when visible content change is detected.
        2. The fixed time window takes care of notifying the client -timers, style recalcs during the window should not signal themselves.  
        3. Reset m_isObservingPendingStyleRecalc at StartedStyleRecalc instead of EndedStyleRecalc. 

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
        (WebCore::ContentChangeObserver::styleRecalcDidStart):
        (WebCore::ContentChangeObserver::styleRecalcDidFinish):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::hasPendingActivity const):
        (WebCore::ContentChangeObserver::isObservationTimeWindowActive const):

2019-03-08  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add StartedDOMTimerExecution and StartedStyleRecalc
        https://bugs.webkit.org/show_bug.cgi?id=195463
        <rdar://problem/48714762>

        Reviewed by Simon Fraser.

        This is in preparation for introducing m_isObservingContentChanges flag to track observing state across events (touchStart -> mouseMoved).

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::domTimerExecuteDidStart):
        (WebCore::ContentChangeObserver::styleRecalcDidStart):
        (WebCore::ContentChangeObserver::styleRecalcDidFinish):
        (WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingPendingStyleRecalc const):
        (WebCore::ContentChangeObserver::isObservingStyleRecalc const): Deleted.

2019-03-08  Chris Fleizach  <cfleizach@apple.com>

        AX: AOM accessibleclick does not work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195423
        <rdar://problem/48682110>

        Reviewed by Joanmarie Diggs.

        Return this value of this method so it can be surfaced to a higher level.

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _accessibilityActivate]):

2019-03-08  Chris Dumez  <cdumez@apple.com>

        imported/w3c/web-platform-tests/FileAPI/reading-data-section/filereader_error.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=195441
        <rdar://problem/43437394>

        Reviewed by Alexey Proskuryakov.

        FileReader is an ActiveDOMObject, which means that FileReader::stop() gets called when
        its script execution context is about to get destroyed. FileReader::stop() sets m_state
        to DONE. FileReader::abort() would schedule an asynchronous task and then ASSERT that
        m_state is not DONE, which would hit if FileReader::stop() had been called in between
        the task being scheduled and its execution. To address the issue, have the task abort
        early if isContextStopped() returns true.

        Also replace calls to setPendingActivity() / unsetPendingActivity() with a
        PendingActivity data member as mismatched call to those can lead to leaks.

        * fileapi/FileReader.cpp:
        (WebCore::FileReader::canSuspendForDocumentSuspension const):
        No reason not to suspend if there is no pending read.

        (WebCore::FileReader::stop):
        (WebCore::FileReader::readInternal):
        (WebCore::FileReader::abort):
        (WebCore::FileReader::didFinishLoading):
        (WebCore::FileReader::didFail):
        * fileapi/FileReader.h:

2019-03-08  Zan Dobersek  <zdobersek@igalia.com>

        GLContextEGL: desired EGL config should search for 8-bit components by default
        https://bugs.webkit.org/show_bug.cgi?id=195413

        Reviewed by Carlos Garcia Campos.

        The EGL config search in GLContextEGL should by default look for
        RGBA8888 configurations while allowing RGB565 as an alternative.
        This prevents from accidentally landing on an RGBA1010102
        configuration that is available with some graphics stacks, and which is
        not expected in e.g. window snapshotting that's done for layout test
        output comparison.

        * platform/graphics/egl/GLContextEGL.cpp:
        (WebCore::GLContextEGL::getEGLConfig): EGL config search should by
        default request 8-bit color channels.

2019-03-08  Miguel Gomez  <magomez@igalia.com>

        Use a thread safe refcounter for FilterOperation.
        https://bugs.webkit.org/show_bug.cgi?id=194149

        Reviewed by Carlos Garcia Campos.

        Use a thread safe refcounter for FilterOperation.

        * platform/graphics/filters/FilterOperation.h:

2019-03-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make more fields lazy in JSGlobalObject
        https://bugs.webkit.org/show_bug.cgi?id=195449

        Reviewed by Mark Lam.

        Use arrayBufferConstructor() since getDirect does not work with lazy property.

        * bindings/js/JSDOMGlobalObject.cpp:
        (WebCore::JSDOMGlobalObject::addBuiltinGlobals):

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver][REGRESSION] Check if visibility change happens while dispatching mouseMoved
        https://bugs.webkit.org/show_bug.cgi?id=195421
        <rdar://problem/48682004>

        Reviewed by Simon Fraser.

        Visibility change might be triggered synchronously while dispatching mouseMoved event.

        Test: fast/events/touch/ios/content-observation/visibility-change-happens-while-in-mousemoved.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::mouseMovedDidStart):
        (WebCore::ContentChangeObserver::mouseMovedDidFinish):
        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingContentChanges const):

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Check if max-height change triggers visible content change.
        https://bugs.webkit.org/show_bug.cgi?id=195417
        <rdar://problem/48680631>

        Reviewed by Simon Fraser.

        A fixed max-height non-zero value could indicate visible content change. usps.com uses this technique to show menu panes.  

        Test: fast/events/touch/ios/content-observation/visibility-change-is-max-height-change.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::isConsideredHidden):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::elementImplicitVisibility): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-03-07  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix failing EWS build for ios-sim

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::touchEventDidStart):

2019-03-07  Eric Carlson  <eric.carlson@apple.com>

        [MSE] Adopt new AVSampleBufferDisplayLayer SPI
        https://bugs.webkit.org/show_bug.cgi?id=195445
        <rdar://problem/48480516>

        Reviewed by Jer Noble.

        No new tests, no functional change.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC): Only register for 
        kCMSampleBufferConsumerNotification_BufferConsumed notiication when
        -[AVSampleBufferDisplayLayer prerollDecodeWithCompletionHandler:] isn't available.
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC): Ditto, for unregistering.
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample): Use 
        -[AVSampleBufferDisplayLayer prerollDecodeWithCompletionHandler:] when possible.

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Click event fires immediately on hover menu at Ebbets.com
        https://bugs.webkit.org/show_bug.cgi?id=195397

        Reviewed by Simon Fraser.

        This patch introduces TouchEventScope to track changes triggered by touch start.

        Test: fast/events/touch/ios/content-observation/visibility-change-on-touch-start-simple.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::touchEventDidStart):
        (WebCore::ContentChangeObserver::touchEventDidFinish):
        (WebCore::ContentChangeObserver::mouseMovedDidStart):
        (WebCore::ContentChangeObserver::mouseMovedDidFinish):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::TouchEventScope::TouchEventScope):
        (WebCore::ContentChangeObserver::TouchEventScope::~TouchEventScope):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingContentChanges const):

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce fixed duration content observation
        https://bugs.webkit.org/show_bug.cgi?id=195295
        <rdar://problem/48579913>

        Reviewed by Simon Fraser.

        Some pages have a runloop-like scheduling setup where the content triggering change happens at a nested timer firing.
        This patch helps finding cases like that using a 32ms long fixed window. Currently nested timers get dropped on the floor and
        we stop observing for content changes before they even get fired.

        Test: fast/events/touch/ios/content-observation/visibility-change-happens-on-timer-hops.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::ContentChangeObserver):
        (WebCore::ContentChangeObserver::startContentObservationForDuration):
        (WebCore::ContentChangeObserver::completeDurationBasedContentObservation):
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::domTimerExecuteDidStart):
        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
        (WebCore::ContentChangeObserver::styleRecalcDidStart):
        (WebCore::ContentChangeObserver::styleRecalcDidFinish):
        (WebCore::ContentChangeObserver::cancelPendingActivities):
        (WebCore::ContentChangeObserver::didSuspendActiveDOMObjects):
        (WebCore::ContentChangeObserver::willDetachPage):
        (WebCore::ContentChangeObserver::contentVisibilityDidChange):
        (WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::clearTimersAndReportContentChange): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::clearObservedDOMTimers):
        (WebCore::ContentChangeObserver::isObservingContentChanges const):
        (WebCore::ContentChangeObserver::hasPendingActivity const):

2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        This change fixes two issues with animation timing:

        1. Calling the requestAnimationFrame callbacks would have happened when
           the DisplayLink fires. This may have happened even if the frame is
           missed and no display is committed.

        2. Style changes and layout triggered by script could trigger painting
           at more than 60fps. CoreAnimation commits could happen at more than
           60fps, although WindowServer will throttle those, and only some will
           be shown on the screen.

        This change introduces a new paint scheduling model where painting is
        driven by a "RenderingUpdateScheduler", which only triggers paints once
        per 16.7ms frame.

        Code that previously scheduled a compositing layer flush now schedules a
        "RenderingUpdate", and that update is driven by a DisplayRefreshMonitor
        callback. When the render happens, we service requestAnimationFrame callbacks,
        Web Animations and intersection observations per the "Update the rendering"
        step of the HTML Event Loop specification
        <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>.

        In the future, more rendering steps will be added to this code.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/mac/AXObjectCacheMac.mm:
        Fix layout tests by adding null check.

        * animation/DocumentAnimationScheduler.cpp: Removed.
        * animation/DocumentAnimationScheduler.h: Removed.
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        (WebCore::DocumentTimeline::updateThrottlingState):
        (WebCore::DocumentTimeline::resumeAnimations):
        (WebCore::DocumentTimeline::liveCurrentTime const):
        (WebCore::DocumentTimeline::currentTime):
        (WebCore::DocumentTimeline::animationTimingDidChange):
        (WebCore::DocumentTimeline::scheduleAnimationResolution):
        (WebCore::DocumentTimeline::unscheduleAnimationResolution):
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
        (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents):
        (WebCore::DocumentTimeline::scheduleNextTick):
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement):
        Simplify this function by handling the case of no-animations separately.

        (WebCore::DocumentTimeline::resolveAnimationsForElement):
        Simplify the loop and delete hasPendingAcceleratedAnimations because it
        is initialized to true and is not changed inside the loop.

        (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Deleted.
        (WebCore::DocumentTimeline::animationResolutionTimerFired): Deleted.
        * animation/DocumentTimeline.h:
        * dom/Document.cpp:
        (WebCore::Document::resolveStyle):
        There is no need to force update in resolveStyle(). notifyFlushRequired()
        will be called eventually which will scheduleRenderingUpdate().

        (WebCore::Document::prepareForDestruction):
        (WebCore::Document::updateAnimationsAndSendEvents):
        (WebCore::Document::serviceRequestAnimationFrameCallbacks):
        (WebCore::Document::windowScreenDidChange):
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::scheduleForcedIntersectionObservationUpdate): Deleted.
        (WebCore::Document::animationScheduler): Deleted.
        * dom/Document.h:
        (WebCore::Document::numberOfIntersectionObservers const):
        * dom/ScriptedAnimationController.cpp:
        (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
        (WebCore::ScriptedAnimationController::scheduleAnimation):
        (WebCore::ScriptedAnimationController::animationTimerFired):
        (WebCore::ScriptedAnimationController::serviceScriptedAnimations): Deleted.
        (WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire): Deleted.
        * dom/ScriptedAnimationController.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportContentsChanged):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):
        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::layoutIfNeeded):
        (WebCore::Page::renderingUpdate):
        (WebCore::Page::renderingUpdateScheduler):
        (WebCore::Page::willDisplayPage): Deleted.
        (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate): Deleted.
        (WebCore::Page::updateIntersectionObservations): Deleted.
        (WebCore::Page::scheduleForcedIntersectionObservationUpdate): Deleted.
        * page/Page.h:
        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::didChangeViewExposedRect):
        (WebCore::PageOverlayController::notifyFlushRequired):
        * page/ResourceUsageData.h:
        Include header files that become missing because of adding 
        RenderingUpdateScheduler.cpp.

        * page/RenderingUpdateScheduler.cpp: Added.
        (WebCore::RenderingUpdateScheduler::RenderingUpdateScheduler):
        (WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
        (WebCore::RenderingUpdateScheduler::startTimer):
        (WebCore::RenderingUpdateScheduler::clearTimer):
        (WebCore::RenderingUpdateScheduler::windowScreenDidChange):
        (WebCore::RenderingUpdateScheduler::createDisplayRefreshMonitor const):
        (WebCore::RenderingUpdateScheduler::displayRefreshFired):
        * page/RenderingUpdateScheduler.h: Added.
        (WebCore::RenderingUpdateScheduler::create):
        * page/ios/ContentChangeObserver.h:
        Include header files that become missing because of adding 
        RenderingUpdateScheduler.cpp.

        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::scheduleLayerFlushNow):

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add a setting to be able to turn content change observation on/off
        https://bugs.webkit.org/show_bug.cgi?id=195353
        <rdar://problem/48626394>

        Reviewed by Simon Fraser.

        Move content observation tests to a dedicated directory.

        Tests: fast/events/touch/ios/content-observation/click-instead-of-hover-simple.html
               fast/events/touch/ios/content-observation/hover-when-style-change-is-async.html
               fast/events/touch/ios/content-observation/stuck-with-hover-state.html
               fast/events/touch/ios/content-observation/style-recalc-schedule-and-force-relalc.html
               fast/events/touch/ios/content-observation/visibility-change-happens-at-the-second-timer.html

        * page/Settings.yaml:
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const): Deleted.
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::resetToConsistentState):

2019-03-07  John Wilander  <wilander@apple.com>

        Make sure an empty host matches the internal representation "nullOrigin" in WebCore::RegistrableDomain::matches()
        https://bugs.webkit.org/show_bug.cgi?id=195435

        Reviewed by Brent Fulgham.

        No new tests. Tests are currently failing and will pass again with
        this patch.

        WebCore::RegistrableDomain::matches() is a quick way to compare a
        RegistrableDomain with a URL. Since RegistrableDomain represents the
        empty host as "nullOrigin," a URL with an empty host needs to match
        that representation in WebCore::RegistrableDomain::matches().
        Failure to do so caused debug assertions in fast/ layout tests after
        https://trac.webkit.org/changeset/242603/webkit.

        * platform/RegistrableDomain.h:
        (WebCore::RegistrableDomain::matches const):

2019-03-07  Justin Fan  <justin_fan@apple.com>

        Unreviewed build fixes since MTLClampToBorderColor is only supported on macOS.

        * Modules/webgpu/GPUSamplerDescriptor.idl:
        * platform/graphics/gpu/GPUSamplerDescriptor.h:
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Forgot include.
        * platform/graphics/gpu/cocoa/GPUSamplerMetal.mm:
        (WebCore::mtlAddressModeForAddressMode):
        (WebCore::tryCreateMtlSamplerState):
        (WebCore::mtlBorderColorForBorderColor): Deleted.

2019-03-07  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPUSampler implementation
        https://bugs.webkit.org/show_bug.cgi?id=195427
        <rdar://problem/48686011>

        Reviewed by Dean Jackson.

        Implement ability to create GPUSamplers and use them as pipeline resource bindings.

        Test: texture-triangle-strip.html updated.

        Add symbols to project:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        GPUSampler creation:
        * Modules/webgpu/GPUSamplerDescriptor.idl: Added.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createSampler const): Added.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUSampler.cpp: Added.
        (WebCore::WebGPUSampler::create):
        (WebCore::WebGPUSampler::WebGPUSampler):
        * Modules/webgpu/WebGPUSampler.h: Added.
        (WebCore::WebGPUSampler::sampler const):
        * Modules/webgpu/WebGPUSampler.idl: Added.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateSampler const): Added.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUSampler.h: Added.
        (WebCore::GPUSampler::platformSampler const):
        * platform/graphics/gpu/GPUSamplerDescriptor.h: Added.
        * platform/graphics/gpu/cocoa/GPUSamplerMetal.mm: Added.
        (WebCore::mtlAddressModeForAddressMode):
        (WebCore::mtlBorderColorForBorderColor):
        (WebCore::mtlMinMagFilterForFilterMode):
        (WebCore::mtlMipFilterForFilterMode):
        (WebCore::tryCreateMtlSamplerState):
        (WebCore::GPUSampler::tryCreate):
        (WebCore::GPUSampler::GPUSampler):

        Move GPUCompareFunction to Utils for shared use.
        * platform/graphics/gpu/GPUCompareFunction.h:
        * platform/graphics/gpu/GPUUtils.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::tryCreateMtlDepthStencilState):
        (WebCore::validateAndConvertDepthCompareFunctionToMtl): Deleted.
        * platform/graphics/gpu/cocoa/GPUUtilsMetal.mm:
        (WebCore::platformTextureFormatForGPUTextureFormat):
        (WebCore::platformCompareFunctionForGPUCompareFunction):

        Expand bind groups to accept GPUSamplers:
        * Modules/webgpu/WebGPUBindGroupBinding.h:
        * Modules/webgpu/WebGPUBindGroupBinding.idl:
        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const):
        * platform/graphics/gpu/GPUBindGroupBinding.h:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::setBindGroup):
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder):
        (WebCore::GPUProgrammablePassEncoder::setResourceAsSamplerOnEncoder): Added.
        (WebCore::GPUProgrammablePassEncoder::setResourceAsTextureOnEncoder):

        Misc:
        * Modules/webgpu/WebGPUTexture.cpp: Missing includes.
        * Modules/webgpu/WebGPUTexture.h:
        * Modules/webgpu/WebGPUSwapChain.cpp: Removed extra include.

2019-03-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r242297.
        https://bugs.webkit.org/show_bug.cgi?id=195430

        Broke Microsoft Visio. (Requested by dydz on #webkit).

        Reverted changeset:

        "[iOS] Turn mouse event simulation on by default"
        https://bugs.webkit.org/show_bug.cgi?id=195218
        https://trac.webkit.org/changeset/242297

2019-03-07  Sihui Liu  <sihui_liu@apple.com>

        Crash in com.apple.WebCore: WebCore::IDBTransaction::pendingOperationTimerFired + 72
        https://bugs.webkit.org/show_bug.cgi?id=195214
        <rdar://problem/48461116>

        Reviewed by Geoffrey Garen.

        When IDBTransaction is ready to commit, a commit operation would be schedule to 
        m_pendingTransactionOperationQueue. If connection to IDBServer is lost, pending operations are moved to 
        m_transactionOperationsInProgressQueue and will be completed with TransactionOperation::doComplete. doComplete 
        executes complete function of the operation, clears the complete function, and then removes the operation from 
        m_transactionOperationsInProgressQueue. In doComplete, we do early return when complete function is null, 
        since the doComplete could be invoked twice due to the race conditions between receiving "operation complete" 
        message from server and client-side abort.

        However, commit operation does not have a complete function because it should be the last operation of 
        transaction and it gets removed from queue in its perform function. A commit operation would not be removed from 
        m_transactionOperationsInProgressQueue because of the early return. It would be removed from 
        m_transactionOperationMap, which may hold the last ref to the commit operation, in 
        IDBTransaction::connectionClosedFromServer. In this case, when pendingOperationTimerFired is called later, the 
        commit operation left in m_transactionOperationsInProgressQueue would be used and found to be freed. We should
        not use null check of complete function to decide whether an operation is completed.

        * Modules/indexeddb/client/TransactionOperation.h:
        (WebCore::IDBClient::TransactionOperation::doComplete):

2019-03-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Log first-party navigations with link decoration
        https://bugs.webkit.org/show_bug.cgi?id=195301
        <rdar://problem/48569971>

        Reviewed by Brent Fulgham.

        Test: http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html

        This patch adds two new members to WebCore::ResourceLoadStatistics:
        - topFrameLinkDecorationsFrom, a set of domains
        - gotLinkDecorationFromPrevalentResource, a boolean state

        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::encode const):
        (WebCore::ResourceLoadStatistics::decode):
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
        * loader/ResourceLoadStatistics.h:

2019-03-07  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK] REGRESSION (r242132): Fixed position banners flicker and move when scrolling (Apple, Tesla, YouTube, Reddit)
        https://bugs.webkit.org/show_bug.cgi?id=195396
        rdar://problem/48518959

        Reviewed by Antti Koivisto.
        
        r242132 introduced two issues that contributed to jumpiness of position:fixed layers when scrolling.
        
        First, ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling() would early return if the scroll position
        hadn't changed. It also needs to check the supplied layoutViewport (if any), but in some cases running the
        notifyRelatedNodesAfterScrollPositionChange() code is necessary even without a scroll position change:
        if the web process has committed new scrolling tree state (e.g. with new fixed constraints) since
        the last call, we have to run the layer positioning code to have fixed layers re-adjust their position relative
        to the root. This was the primary bug fix.

        Secondly, a layer tree commit can give ScrollingTreeFrameScrollingNode a new layout viewport, but we need to
        adjust this by the scrolling tree's current scroll position in case it gets used before the next scroll.

        Currently no way to test this, as it's very timing-dependent.

        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNode::scrollPositionAndLayoutViewportMatch):
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::scrollPositionAndLayoutViewportMatch):
        (WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
        * page/scrolling/ScrollingTreeScrollingNode.h:

2019-03-07  Youenn Fablet  <youenn@apple.com>

        Introduce a quota manager for Cache API/Service Worker/IDB storage
        https://bugs.webkit.org/show_bug.cgi?id=195283

        Reviewed by Chris Dumez.

        Introduce a generic quota manager and quota users to be used in Network Process.
        Quota manager/users are scoped by client origin.
        Quota manager is used to check for quota by an entity wanting to execute a storage task of a given taskSize.
        Quota manager will check the current space used by all its quota users.
        If the size + taskSize is above quota, it will call a function to try extend the quota.
        In the meantime, the task (and all tasks that may be added) are queued.

        Once the new quota is received, the quota manager will either allow or disallow the first task in the queue.
        The quota manager will try to execute as many tasks as possible with the provided quota.
        If some tasks are remaining and quota limit is hit, the quota manager will compute the space needed for all remaining requests
        and do another quota extension request.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/ClientOrigin.h:
        * storage/StorageQuotaManager.cpp: Added.
        (WebCore::StorageQuotaManager::~StorageQuotaManager):
        (WebCore::StorageQuotaManager::spaceUsage const):
        (WebCore::StorageQuotaManager::requestSpace):
        (WebCore::StorageQuotaManager::askForMoreSpace):
        (WebCore::StorageQuotaManager::processPendingRequests):
        * storage/StorageQuotaManager.h: Added.
        (WebCore::StorageQuotaManager::StorageQuotaManager):
        (WebCore::StorageQuotaManager::addUser):
        (WebCore::StorageQuotaManager::removeUser):
        * storage/StorageQuotaUser.h: Added.

2019-03-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make it possible to purge only script-accessible cookies
        https://bugs.webkit.org/show_bug.cgi?id=195383
        <rdar://problem/48570136>

        Reviewed by Brent Fulgham.

        Test: http/tests/resourceLoadStatistics/delete-script-accessible-cookies.html

        This patch provides the ability to purge all script-accessible cookies while leaving
        HttpOnly cookies in place.

        * loader/CookieJar.h:
            Added boolean enum IncludeHttpOnlyCookies for use as function parameter.
        * platform/network/NetworkStorageSession.h:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames):
            Support for the new IncludeHttpOnlyCookies flag.
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames):
            Stubbed out the new function and added a FIXME comment.
        * platform/network/soup/NetworkStorageSessionSoup.cpp:
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames):
            Stubbed out the new function and added a FIXME comment.

2019-03-06  Mark Lam  <mark.lam@apple.com>

        Exception is a JSCell, not a JSObject.
        https://bugs.webkit.org/show_bug.cgi?id=195392

        Reviewed by Saam Barati.

        * bridge/objc/objc_utility.h:
        * bridge/objc/objc_utility.mm:
        (JSC::Bindings::throwError):
        * bridge/runtime_object.cpp:
        (JSC::Bindings::RuntimeObject::throwInvalidAccessError):
        * bridge/runtime_object.h:

2019-03-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: lazily create the agent
        https://bugs.webkit.org/show_bug.cgi?id=195241

        Reviewed by Joseph Pecoraro.

        No functionality change.

        * html/canvas/CanvasRenderingContext.h:
        * html/canvas/CanvasRenderingContext.cpp:
        (WebCore::CanvasRenderingContext::instances): Added.
        (WebCore::CanvasRenderingContext::instancesMutex): Added.
        (WebCore::CanvasRenderingContext::CanvasRenderingContext):
        (WebCore::CanvasRenderingContext::~CanvasRenderingContext):

        * html/canvas/WebGLProgram.h:
        * html/canvas/WebGLProgram.cpp:
        (WebCore::WebGLProgram::instances): Added.
        (WebCore::WebGLProgram::instancesMutex): Added.
        (WebCore::WebGLProgram::WebGLProgram):
        (WebCore::WebGLProgram::~WebGLProgram):
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::InspectorController):
        (WebCore::InspectorController::createLazyAgents):

        * inspector/agents/InspectorCanvasAgent.h:
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::enable):
        (WebCore::InspectorCanvasAgent::disable):
        (WebCore::InspectorCanvasAgent::frameNavigated):
        (WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
        (WebCore::InspectorCanvasAgent::canvasDestroyed):
        (WebCore::InspectorCanvasAgent::didCreateProgram):
        (WebCore::InspectorCanvasAgent::willDeleteProgram):
        (WebCore::InspectorCanvasAgent::bindCanvas): Added.
        (WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
        (WebCore::InspectorInstrumentation::didCreateProgram):
        (WebCore::InspectorInstrumentation::willDeleteProgram):

2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
        https://bugs.webkit.org/show_bug.cgi?id=195346

        Reviewed by Fujii Hironori.

        * platform/graphics/win/FontCacheWin.cpp:
        (WebCore::appendLinkedFonts):
        (WebCore::getLinkedFonts):
        (WebCore::FontCache::systemFallbackForCharacters):
        (WebCore::FontCache::fontFromDescriptionAndLogFont):
        (WebCore::createGDIFont):
        (WebCore::FontCache::getFontSelectionCapabilitiesInFamily):
        * platform/graphics/win/FontCustomPlatformDataCairo.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):
        * platform/graphics/win/GlyphPageTreeNodeCairoWin.cpp:
        (WebCore::GlyphPage::fill):
        * platform/graphics/win/IconWin.cpp:
        (WebCore::Icon::createIconForFiles):
        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
        (WebCore::mimeTypeCache):
        (WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):
        * platform/graphics/win/UniscribeController.cpp:
        (WebCore::UniscribeController::itemizeShapeAndPlace):
        (WebCore::UniscribeController::shape):
        * platform/network/win/DownloadBundleWin.cpp:
        (WebCore::DownloadBundle::appendResumeData):
        (WebCore::DownloadBundle::extractResumeData):
        * platform/text/win/LocaleWin.cpp:
        (WebCore::LCIDFromLocaleInternal):
        (WebCore::LCIDFromLocale):
        (WebCore::LocaleWin::getLocaleInfoString):
        * platform/win/BString.cpp:
        (WebCore::BString::BString):
        * platform/win/ClipboardUtilitiesWin.cpp:
        (WebCore::getWebLocData):
        (WebCore::createGlobalData):
        (WebCore::getFileDescriptorData):
        (WebCore::getURL):
        (WebCore::getCFData):
        (WebCore::setCFData):
        * platform/win/DragDataWin.cpp:
        (WebCore::DragData::asFilenames const):
        * platform/win/DragImageWin.cpp:
        (WebCore::createDragImageIconForCachedImageFilename):
        (WebCore::dragLabelFont):
        * platform/win/MIMETypeRegistryWin.cpp:
        (WebCore::mimeTypeForExtension):
        (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
        * platform/win/PasteboardWin.cpp:
        (WebCore::Pasteboard::read):
        (WebCore::filesystemPathFromUrlOrTitle):
        (WebCore::Pasteboard::writeURLToDataObject):
        (WebCore::createGlobalImageFileDescriptor):
        (WebCore::createGlobalHDropContent):
        * platform/win/SSLKeyGeneratorWin.cpp:
        (WebCore::signedPublicKeyAndChallengeString):
        * platform/win/SharedBufferWin.cpp:
        (WebCore::SharedBuffer::createFromReadingFile):
        * rendering/RenderThemeWin.cpp:
        (WebCore::fillFontDescription):
        Use wchar helpers as needed.

2019-03-06  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM Debugger: event breakpoints still fire when breakpoints are disabled
        https://bugs.webkit.org/show_bug.cgi?id=195377
        <rdar://problem/48651645>

        Reviewed by Joseph Pecoraro and Matt Baker.

        Test: inspector/dom-debugger/event-listener-breakpoints.html

        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
        (WebCore::InspectorDOMDebuggerAgent::willFireTimer):
        (WebCore::InspectorDOMDebuggerAgent::willFireAnimationFrame):

2019-03-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Crash when attempting to change input type while dismissing datalist suggestions
        https://bugs.webkit.org/show_bug.cgi?id=195384
        <rdar://problem/48563718>

        Reviewed by Brent Fulgham.

        When closing a datalist suggestion menu, WebPageProxy sends a message to WebPage instructing it to tell its
        active datalist suggestions picker to close. However, for a myriad of reasons, the suggestions picker (kept
        alive by its text input type) may have already gone away by this point. To mitigate this, make WebPage weakly
        reference its active datalist suggestions picker.

        Test: fast/forms/datalist/change-input-type-after-closing-datalist-suggestions.html

        * platform/DataListSuggestionPicker.h:

        Make DataListSuggestionPicker capable of being weakly referenced. Additionally, fix some minor preexisting
        issues in this header (#imports instead of #includes, as well as an unnecessary include of IntRect.h).

2019-03-06  Ryan Haddad  <ryanhaddad@apple.com>

        Remove an unneeded assert that was added with r242113
        https://bugs.webkit.org/show_bug.cgi?id=195391

        Reviewed by Simon Fraser.

        Many layout tests are failing ASSERT(m_mediaBufferingIsSuspended). Since m_mediaBufferingIsSuspended is
        protected by an 'if' statement directly afterwards, the assertion should be safe to remove.

        * page/Page.cpp:
        (WebCore::Page::resumeAllMediaBuffering):

2019-03-06  Justin Fan  <justin_fan@apple.com>

        Unreviewed build fix. Replace a forward declaration with an include.

        * Modules/webgpu/WebGPUTextureView.cpp:
        * Modules/webgpu/WebGPUTextureView.h:

2019-03-06  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPUTexture and GPUTextureView updates, and related GPUBindGroup updates
        https://bugs.webkit.org/show_bug.cgi?id=195347

        Reviewed by Dean Jackson.

        Implement the ability to display image data as a GPUTexture in the rendering pipeline. Improve GPUTexture and 
        GPUTextureView implementations. Rename various bind group classes to GPU* to match API.

        Test: webgpu/texture-triangle-strip.html

        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const): Update to validate GPUTextureView resources.
        * Modules/webgpu/WebGPUCommandBuffer.cpp: Move instead of copy the converted view objects.
        (WebCore::WebGPUCommandBuffer::copyBufferToTexture):
        (WebCore::WebGPUCommandBuffer::copyTextureToBuffer):
        (WebCore::WebGPUCommandBuffer::copyTextureToTexture):
        * Modules/webgpu/WebGPUCommandBuffer.h:
        (WebCore::WebGPUCommandBuffer::commandBuffer const): No longer returns const so used resources can be registered on it.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBindGroupLayout const): Rename WebGPUBindGroupLayoutDescriptor and replace unnecessary rvalue reference.
        * Modules/webgpu/WebGPUDevice.h: Ditto.
        * Modules/webgpu/WebGPUDevice.idl: Ditto.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::submit):
        * Modules/webgpu/WebGPURenderPassDescriptor.cpp:
        (WebCore::WebGPURenderPassDescriptor::asGPURenderPassDescriptor const):
        * Modules/webgpu/WebGPUTexture.cpp:
        (WebCore::WebGPUTexture::~WebGPUTexture): Clean up any resources created for and from this WebGPUTexture.
        (WebCore::WebGPUTexture::createDefaultTextureView): Now returns an empty object other than null on failure.
        (WebCore::WebGPUTexture::destroy):
        (WebCore::WebGPUTexture::destroyImpl):
        * Modules/webgpu/WebGPUTexture.h: Keep a list of any views created from this texture.
        * Modules/webgpu/WebGPUTexture.idl: Enable destroy.
        * Modules/webgpu/WebGPUTextureView.cpp:
        (WebCore::WebGPUTextureView::create):
        (WebCore::WebGPUTextureView::WebGPUTextureView):
        (WebCore::WebGPUTextureView::destroy):
        * Modules/webgpu/WebGPUTextureView.h:
        (WebCore::WebGPUTextureView::~WebGPUTextureView): Clean up any resources backing this WebGPUTextureView.
        (WebCore::WebGPUTextureView::texture const):
        (WebCore::WebGPUTextureView::texture): Deleted.
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        * platform/graphics/gpu/GPUCommandBuffer.h:
        (WebCore::GPUCommandBuffer::usedTextures const): Keep a list of all texture resources that will be used by this command buffer on submit.
        (WebCore::GPUCommandBuffer::isEncodingPass const): Added to prevent multiple pass encoders from being active on one command buffer.
        (WebCore::GPUCommandBuffer::setIsEncodingPass):
        (WebCore::GPUCommandBuffer::useTexture):
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBindGroupLayout const):
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUPipelineLayout.cpp:
        (WebCore::GPUPipelineLayout::GPUPipelineLayout):
        * platform/graphics/gpu/GPUProgrammablePassEncoder.cpp:
        (WebCore::GPUProgrammablePassEncoder::GPUProgrammablePassEncoder):
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        (WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
        (WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
        (): Deleted.
        * platform/graphics/gpu/GPUQueue.h:
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/GPUTexture.h:
        (WebCore::GPUTexture::isReadOnly const):
        (WebCore::GPUTexture::destroy):
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::MTLDataTypeForBindingType):
        (WebCore::GPUBindGroupLayout::tryCreate):
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::create):
        (WebCore::GPUCommandBuffer::~GPUCommandBuffer): Ensure blitEncoder is ended before releasing it.
        (WebCore::GPUCommandBuffer::endBlitEncoding):
        (WebCore::GPUCommandBuffer::copyBufferToTexture): Ensure textures are marked for usage before submission occurs.
        (WebCore::GPUCommandBuffer::copyTextureToBuffer):
        (WebCore::GPUCommandBuffer::copyTextureToTexture):
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::create):
        (WebCore::GPUDevice::GPUDevice):
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::endPass):
        (WebCore::GPUProgrammablePassEncoder::setBindGroup): Now supports texture resources.
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Just moved.
        (WebCore::GPUProgrammablePassEncoder::setResourceAsTextureOnEncoder):
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::submit): Ensures destroyed GPUTextures are not submitted.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::tryCreate): Ensure any other encoders are ended before attempting to activate a new one.
        (WebCore::GPURenderPassEncoder::platformPassEncoder const):
        (WebCore::GPURenderPassEncoder::endPass): Invalidates the MTLCommandEncoder upon success.
        (WebCore::GPURenderPassEncoder::setPipeline):
        (WebCore::GPURenderPassEncoder::setVertexBuffers):
        (WebCore::GPURenderPassEncoder::draw):
        (WebCore::GPURenderPassEncoder::useResource):
        (WebCore::GPURenderPassEncoder::setVertexBuffer):
        (WebCore::GPURenderPassEncoder::setFragmentBuffer):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::getNextTexture):
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::storageModeForPixelFormatAndSampleCount): 
                Always create MTLStorageModePrivate textures on macOS, as Web GPU doesn't provide CPU access to textures anyway.
        (WebCore::tryCreateMtlTextureDescriptor):
        (WebCore::GPUTexture::create):
        (WebCore::GPUTexture::GPUTexture):
        (WebCore::GPUTexture::tryCreateDefaultTextureView): Renamed from createDefaultTextureView.

        Update files and symbols in project:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/streams/WebGPUBindGroupLayoutDescriptor.h: Removed.
        * Modules/webgpu/GPUBindGroupLayoutBinding.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUBindGroupLayoutBinding.h.
        * Modules/webgpu/GPUBindGroupLayoutBinding.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUBindGroupLayoutBinding.idl.
        * Modules/webgpu/GPUBindGroupLayoutDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUBindGroupLayoutDescriptor.h.
        * Modules/webgpu/GPUBindGroupLayoutDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUBindGroupLayoutDescriptor.idl.
        * Modules/webgpu/GPUShaderStageBit.h: Renamed from Source/WebCore/Modules/webgpu/WebGPUShaderStageBit.h.
        * Modules/webgpu/GPUShaderStageBit.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUShaderStageBit.idl.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2019-03-06  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Pack and unpack data at entry points and exit points
        https://bugs.webkit.org/show_bug.cgi?id=193877

        Reviewed by Dean Jackson.

        This implements the bulk of the rest of the Metal code generation piece.
        Specifically, this patch adds support for the packing and unpacking steps
        at the beginning of the entry point functions and all returns from those
        functions. It does this by creating an object, EntryPointScaffolding, that
        knows how to emit all the helper types, packing / unpacking code, and the
        function signature. This patch also accepts parts of the
        PipelineStateDescriptor so we know the data layout we should be packing and
        unpacking.

        This is the last patch before enough of the compiler is present that we can
        start testing it. The next patch will start porting the test suite.

        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
        (WebCore::WHLSL::Metal::attributeForSemantic):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::mappedBindGroups const):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::resourceSignature):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::mangledOutputPath):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::signature):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::unpack):
        (WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::FragmentEntryPointScaffolding):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::signature):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack):
        (WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack):
        (WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::ComputeEntryPointScaffolding):
        (WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature):
        (WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::unpack):
        (WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::pack):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::helperTypes): Deleted.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::signature): Deleted.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::unpack): Deleted.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::pack): Deleted.
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
        (WebCore::WHLSL::Metal::EntryPointScaffolding::parameterVariables):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
        (WebCore::WHLSL::Metal::FunctionDeclarationWriter::toString):
        (WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::generateNextVariableName):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::RenderFunctionDefinitionWriter):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeVertexMappedBindGroups):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::takeFragmentMappedBindGroups):
        (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding):
        (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::ComputeFunctionDefinitionWriter):
        (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::takeMappedBindGroups):
        (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding):
        (WebCore::WHLSL::Metal::sharedMetalFunctions):
        (WebCore::WHLSL::Metal::metalFunctions):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h:
        * Modules/webgpu/WHLSL/Metal/WHLSLMappedBindings.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h.
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
        (WebCore::WHLSL::Metal::generateMetalCodeShared):
        (WebCore::WHLSL::Metal::generateMetalCode):
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h:
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
        (WebCore::WHLSL::Intrinsics::float2Type const):
        * Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h: Added.
        * Modules/webgpu/WHLSL/WHLSLPrepare.cpp: Added.
        (WebCore::WHLSL::prepareShared):
        (WebCore::WHLSL::prepare):
        * Modules/webgpu/WHLSL/WHLSLPrepare.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h.
        * Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp: Added.
        (WebCore::WHLSL::findEntryPoint):
        (WebCore::WHLSL::matchMode):
        (WebCore::WHLSL::matchResources):
        (WebCore::WHLSL::matchInputsOutputs):
        (WebCore::WHLSL::isAcceptableFormat):
        (WebCore::WHLSL::matchVertexAttributes):
        (WebCore::WHLSL::matchColorAttachments):
        (WebCore::WHLSL::matchDepthAttachment):
        (WebCore::WHLSL::matchSemantics):
        * Modules/webgpu/WHLSL/WHLSLSemanticMatcher.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-03-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Move RenderObject::isTransparentOrFullyClippedRespectingParentFrames() to RenderLayer
        https://bugs.webkit.org/show_bug.cgi?id=195300

        Reviewed by Simon Fraser.

        Move isTransparentOrFullyClippedRespectingParentFrames() from RenderObject to RenderLayer, since this function
        asks questions about RenderLayers rather than their renderers. No change in behavior.

        * rendering/RenderLayer.cpp:
        (WebCore::enclosingFrameRenderLayer):
        (WebCore::parentLayerCrossFrame):

        Some static helpers currently in RenderObject that walk up the layer hierarchy through subframes are redundant
        with static helpers in RenderLayer. Now that isTransparentOrFullyClippedRespectingParentFrames exists in
        RenderLayer, simply use this existing helper instead and split logic to grab the enclosing layer around the
        owner element of a frame into a separate helper.

        * rendering/RenderLayer.h:
        * rendering/RenderObject.cpp:
        (WebCore::enclosingFrameRenderLayer): Deleted.
        (WebCore::parentLayerCrossingFrameBoundaries): Deleted.
        (WebCore::RenderObject::isTransparentOrFullyClippedRespectingParentFrames const): Deleted.

        Moved from RenderObject.

        * rendering/RenderObject.h:

2019-03-06  Sihui Liu  <sihui_liu@apple.com>

        Assertion Failed: m_databaseQueue.isKilled() in UniqueIDBDatabase::~UniqueIDBDatabase()
        https://bugs.webkit.org/show_bug.cgi?id=195073
        <rdar://problem/48285200>

        Reviewed by Geoffrey Garen.

        r240931 removed a retain cycle between IDBConnectionToServer and IDBConnectionToServerDelegate, so 
        IDBConnectionToServerDelegate, or InProcessIDBServer would not live forever. When IDBDatabase is gone, 
        InProcessIDBServer would schedule a notifification to IDBServer with databaseConnectionClosed. IDBServer would 
        then notify UniqueIDBDatabase. When UniqueIDBDatabase finds all database connections are gone, it would acquires
        its only reference pointer from IDBServer schedule and perform a shutdown that kills its database task queue.

        The assertion failure tells us UniqueIDBDatabase was destructed at when IDBServer was destructed, which means 
        UniqueIDBDatabase had not acquired its pointer. It's probably because UniqueIDBDatabase had unfinished tasks or
        the operation timer function had not been executed. Since UniqueIDBDatabase needs to complete shutdown process,
        we should make IDBServer live as long as UniqueIDBDatabase by keeping a reference pointer of IDBServer in 
        UniqueIDBDatabase. 

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
        (WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose):
        (WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
        (WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        (WebCore::IDBServer::UniqueIDBDatabase::notifyServerAboutClose):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:
        (WebCore::IDBServer::UniqueIDBDatabase::server):

2019-03-06  Rob Buis  <rbuis@igalia.com>

        Consider supporting the `referrerpolicy` attribute.
        https://bugs.webkit.org/show_bug.cgi?id=179053

        Reviewed by Darin Adler.

        This patch adds 'referrerpolicy' attribute support for iframe.
        If set, the value is restricted to the ReferrerPolicy enum, and
        if valid it is used for the subframe load.
        If not set or invalid, the current behavior is kept.

        Tests: http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/no-referrer-when-downgrade/same-origin.html
               http/tests/referrer-policy-iframe/no-referrer/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/no-referrer/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/no-referrer/same-origin.html
               http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/origin-when-cross-origin/same-origin.html
               http/tests/referrer-policy-iframe/origin/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/origin/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/origin/same-origin.html
               http/tests/referrer-policy-iframe/same-origin/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/same-origin/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/same-origin/same-origin.html
               http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/same-origin.html
               http/tests/referrer-policy-iframe/strict-origin/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/strict-origin/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/strict-origin/same-origin.html
               http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http-http.html
               http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http.https.html
               http/tests/referrer-policy-iframe/unsafe-url/same-origin.html

        * html/HTMLAttributeNames.in:
        * html/HTMLFrameOwnerElement.h:
        (WebCore::HTMLFrameOwnerElement::referrerPolicy const):
        * html/HTMLIFrameElement.cpp:
        (WebCore::HTMLIFrameElement::setReferrerPolicyForBindings):
        (WebCore::HTMLIFrameElement::referrerPolicyForBindings const):
        (WebCore::HTMLIFrameElement::referrerPolicy const):
        * html/HTMLIFrameElement.h:
        * html/HTMLIFrameElement.idl:
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::loadSubframe):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::referrerPolicyAttributeEnabled const):
        (WebCore::RuntimeEnabledFeatures::setReferrerPolicyAttributeEnabled):
        * platform/ReferrerPolicy.cpp:
        (WebCore::parseReferrerPolicy):
        * platform/ReferrerPolicy.h:

2019-03-05  Takashi Komori  <Takashi.Komori@sony.com>

        [curl] Remove unnecessary file.
        https://bugs.webkit.org/show_bug.cgi?id=195350

        Reviewed by Fujii Hironori.

        Removed unused file.

        No new tests. No change in behavior.

        * platform/network/curl/CookieJarCurlDatabase.cpp: Removed.

2019-03-05  Eric Liang  <ericliang@apple.com>

        AX: Add remote search support for keyboard focusable element search type
        https://bugs.webkit.org/show_bug.cgi?id=195336

        Reviewed by Chris Fleizach.

        Added AXKeyboardFocusable search key to return default keyboard-focusable elements for accessibility.

        Test: accessibility/mac/search-predicate-keyboard-focusable.html

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
        (WebCore::AccessibilityObject::isKeyboardFocusable const):
        * accessibility/AccessibilityObject.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (createAccessibilitySearchKeyMap):

2019-03-05  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Enable CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=195340

        Reviewed by Myles C. Maxfield.

        * bindings/js/CallTracerTypes.h:

2019-03-05  Sihui Liu  <sihui_liu@apple.com>

        Fix a typo in Web SQL quirk
        https://bugs.webkit.org/show_bug.cgi?id=195338

        Reviewed by Geoffrey Garen.

        * page/Quirks.cpp:
        (WebCore::Quirks::hasWebSQLSupportQuirk const):

2019-03-05  Daniel Bates  <dabates@apple.com>

        [iOS] Should not scroll when checkbox, radio, submit, reset, or button is spacebar activated
        https://bugs.webkit.org/show_bug.cgi?id=195281
        <rdar://problem/48564347>

        Reviewed by Simon Fraser.

        Do not call the base class's default event handler (HTMLTextFormControlElement::defaultEventHandler())
        when WebCore sees a keydown of the spacebar as we consider such an event as handled.
        Otherwise, calling the base class's default event handler ultimately gives the embedding
        client a chance to wrongly handle the event. In the case of iOS, keydown of the spacebar
        causes the page to scroll.

        WebCore implements spacebar activation on keydown for form controls. For IE compatibility
        WebCore does not mark such keydown events as handled so that a DOM keypress event will
        be subsequently dispatched. The current logic only skips calling the base class's default
        event handler if the DOM event was not marked handled. This is insufficient. We need to
        know whether WebCore handled the event. If asking the input type to handle the key down
        marks the DOM event as handled then, clearly, WebCore handled the event. However, if the
        event is not marked as handled, but WebCore actually accounted for this event then we need
        to know this so that we do not call the base class's default event handler and ultimately
        the embedding client asking for an interpretation of the key event. Towards this, have
        InputType::handleKeydownEvent() return a bit whether or not the base class's default
        event handler should be invoked.

        Tests: fast/events/ios/activating-button-should-not-scroll-page.html
               fast/events/ios/activating-checkbox-should-not-scroll-page.html
               fast/events/ios/activating-radio-button-should-not-scroll-page.html
               fast/events/ios/activating-reset-button-should-not-scroll-page.html
               fast/events/ios/activating-submit-button-should-not-scroll-page.html

        * html/BaseCheckableInputType.cpp:
        (WebCore::BaseCheckableInputType::handleKeydownEvent): Return ShouldCallBaseEventHandler::No
        if WebCore handled the spacebar activation. Otherewise, return ShouldCallBaseEventHandler::Yes.
        * html/BaseCheckableInputType.h:
        * html/BaseChooserOnlyDateAndTimeInputType.cpp:
        (WebCore::BaseChooserOnlyDateAndTimeInputType::handleKeydownEvent): Ditto.
        * html/BaseChooserOnlyDateAndTimeInputType.h:
        * html/BaseClickableWithKeyInputType.cpp:
        (WebCore::BaseClickableWithKeyInputType::handleKeydownEvent): Keep our current behavior by returning ShouldCallBaseEventHandler::Yes.
        * html/BaseClickableWithKeyInputType.h:
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::defaultEventHandler): Do not fallthrough and call the base class's default
        event handler if the input type told us it handled the event regardless of whether the event was handled
        from the perspective of the DOM.
        * html/InputType.cpp:
        (WebCore::InputType::handleKeydownEvent): Keep our current behavior by returning ShouldCallBaseEventHandler::Yes.
        * html/InputType.h:

        * html/NumberInputType.cpp:
        (WebCore::NumberInputType::handleKeydownEvent):
        * html/NumberInputType.h:
        * html/RadioInputType.cpp:
        (WebCore::RadioInputType::handleKeydownEvent):
        * html/RadioInputType.h:
        * html/RangeInputType.cpp:
        (WebCore::RangeInputType::handleKeydownEvent):
        * html/RangeInputType.h:
        * html/SearchInputType.cpp:
        (WebCore::SearchInputType::handleKeydownEvent):
        * html/SearchInputType.h:
        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::handleKeydownEvent):
        * html/TextFieldInputType.h:
        Keep our current behavior by returning ShouldCallBaseEventHandler::Yes.

2019-03-05  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Implement Cookie Accept Policy.
        https://bugs.webkit.org/show_bug.cgi?id=191645

        Reviewed by Fujii Hironori.

        Make Curl network layer respect to coookie accept policy.
        This patch fixes tests below on TestRunner, but doesn't fix tests on DumpRenderTree.

        Tests: http/tests/cookies/only-accept-first-party-cookies.html
               http/tests/cookies/third-party-cookie-relaxing.html
               http/tests/security/cookies/third-party-cookie-blocking-redirect.html
               http/tests/security/cookies/third-party-cookie-blocking-user-action.html
               http/tests/security/cookies/third-party-cookie-blocking-xslt.xml
               http/tests/security/cookies/third-party-cookie-blocking.html

        * platform/network/curl/CookieJarCurl.cpp:
        (WebCore::cookiesForSession):
        (WebCore::CookieJarCurl::setCookiesFromDOM const):
        (WebCore::CookieJarCurl::setCookiesFromHTTPResponse const):
        (WebCore::CookieJarCurl::setCookieAcceptPolicy const):
        (WebCore::CookieJarCurl::cookieAcceptPolicy const):
        (WebCore::CookieJarCurl::getRawCookies const):
        * platform/network/curl/CookieJarCurl.h:
        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::openDatabase):
        (WebCore::CookieJarDB::isEnabled const):
        (WebCore::CookieJarDB::checkCookieAcceptPolicy):
        (WebCore::CookieJarDB::hasCookies):
        (WebCore::CookieJarDB::searchCookies):
        (WebCore::CookieJarDB::canAcceptCookie):
        (WebCore::CookieJarDB::setCookie):
        (WebCore::CookieJarDB::setEnabled): Deleted.
        * platform/network/curl/CookieJarDB.h:
        (WebCore::CookieJarDB::setAcceptPolicy):
        (WebCore::CookieJarDB::acceptPolicy const):
        * platform/network/curl/CookieUtil.cpp:
        (WebCore::CookieUtil::parseCookieAttributes):
        (WebCore::CookieUtil::parseCookieHeader):
        * platform/network/curl/CurlResourceHandleDelegate.cpp:
        (WebCore::handleCookieHeaders):
        (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):

2019-03-05  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Assert on if notify content change is allowed
        https://bugs.webkit.org/show_bug.cgi?id=195332
        <rdar://problem/48603276>

        Reviewed by Simon Fraser.

        Assert we don't notify the client about the state change while in handleSyntheticClick().

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::domTimerExecuteDidStart):
        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingContentChanges const):
        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const):

2019-03-05  Said Abou-Hallawa  <sabouhallawa@apple.com>

        SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList
        https://bugs.webkit.org/show_bug.cgi?id=195333
        <rdar://problem/48475802>

        Reviewed by Simon Fraser.

        Because the SVG1.1 specs states that the newItem should be removed from
        its original list before adding it to another list,
        SVGPathSegList.insertItemBefore() should fail if the new item belongs to
        an animating animPathSegList since it is read-only.

        Test: svg/dom/SVGPathSegList-insert-from-animating-animPathSegList.svg

        * svg/SVGPathSegList.cpp:
        (WebCore::SVGPathSegList::processIncomingListItemValue):

2019-03-05  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Send content change notification through adjustObservedState
        https://bugs.webkit.org/show_bug.cgi?id=195328
        <rdar://problem/48601143>

        Reviewed by Simon Fraser.

        Have a dedicated place for the notification logic.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::stopDurationBasedContentObservation):
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
        (WebCore::ContentChangeObserver::styleRecalcDidFinish):
        (WebCore::ContentChangeObserver::mouseMovedDidStart):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::registerDOMTimer): Deleted.
        (WebCore::ContentChangeObserver::unregisterDOMTimer): Deleted.
        (WebCore::ContentChangeObserver::notifyContentChangeIfNeeded): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::registerDOMTimer):
        (WebCore::ContentChangeObserver::unregisterDOMTimer):

2019-03-05  Youenn Fablet  <youenn@apple.com>

        MockLibWebRTCPeerConnection is leaking some session description
        https://bugs.webkit.org/show_bug.cgi?id=195315
        <rdar://problem/47840038>

        Reviewed by David Kilzer.

        Make sure to release raw pointers given from WebCore to mock libwebrtc layer.
        Covered by existing tests when run in leaks mode.

        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::MockLibWebRTCPeerConnection::SetLocalDescription):
        (WebCore::MockLibWebRTCPeerConnection::SetRemoteDescription):

2019-03-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242403.

        Caused layout test crashes on iOS simulator.

        Reverted changeset:

        "[ContentChangeObserver] Introduce fixed duration content
        observation"
        https://bugs.webkit.org/show_bug.cgi?id=195295
        https://trac.webkit.org/changeset/242403

2019-03-05  Frederic Wang  <fwang@igalia.com>

        Web Inspector: Better categorize CPU usage per-thread / worker
        https://bugs.webkit.org/show_bug.cgi?id=194564

        Unreviewed compilation fix.

        * page/ResourceUsageData.h: Add missing headers.

2019-03-05  Frederic Wang  <fwang@igalia.com>

        Share more code for updating the state of frame scrolling nodes
        https://bugs.webkit.org/show_bug.cgi?id=195254

        Unreviewed compilation warning fix.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated): Add UNUSED_PARAM on non-Cocoa
        platforms.

2019-03-05  Cathie Chen  <cathiechen@igalia.com>

        The include file in ScrollingStateFrameHostingNode.h is wrong.
        https://bugs.webkit.org/show_bug.cgi?id=195280

        Reviewed by Frédéric Wang.

        * page/scrolling/ScrollingStateFrameHostingNode.h:

2019-03-04  Justin Fan  <justin_fan@apple.com>

        Unreviewed build fix for High Sierra.

        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm: Should fix "global constructor" error.

2019-03-04  Brent Fulgham  <bfulgham@apple.com>

        Use a SQLite database to hold the ResourceLoadStatistics data
        https://bugs.webkit.org/show_bug.cgi?id=194867
        <rdar://problem/24240854>

        Reviewed by Chris Dumez.

        Add a new runtime feature flag to support use of an experimental database
        back-end. Also expose some SQLite function calls for use outside of WebCore.

        No change in functionality, so no new tests.

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setItpDatabaseModeEnabled):
        (WebCore::RuntimeEnabledFeatures::itpDatabaseModeEnabled const):
        * platform/sql/SQLiteDatabase.h:
        * platform/sql/SQLiteStatement.h:

2019-03-04  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Blitting function prototypes
        https://bugs.webkit.org/show_bug.cgi?id=195224
        <rdar://problem/48538902>

        Reviewed by Dean Jackson.

        Implement barebones GPUCommandBuffer::copy* prototypes while rounding out GPUTexture implementation details.

        Test: webgpu/blit-commands.html

        * Modules/webgpu/GPUOrigin3D.h: Added.
        * Modules/webgpu/GPUOrigin3D.idl: Added.
        * Modules/webgpu/WebGPUCommandBuffer.cpp: Add copy view struct implementations.
        (WebCore::WebGPUBufferCopyView::asGPUBufferCopyView const): Added.
        (WebCore::WebGPUTextureCopyView::asGPUTextureCopyView const): Added.
        (WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Added.
        (WebCore::WebGPUCommandBuffer::copyBufferToTexture): Added.
        (WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Added.
        (WebCore::WebGPUCommandBuffer::copyTextureToTexture): Added.
        * Modules/webgpu/WebGPUCommandBuffer.h: Add new functions and supporting structs.
        * Modules/webgpu/WebGPUCommandBuffer.idl: Ditto.
        * Modules/webgpu/WebGPURenderPassDescriptor.cpp: Refactor constructors to copy the entire base class.
        (WebCore::GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor):
        (WebCore::GPURenderPassDepthStencilAttachmentDescriptor::GPURenderPassDepthStencilAttachmentDescriptor):
        (WebCore::WebGPURenderPassDescriptor::asGPURenderPassDescriptor const):
        (WebCore::attachment): Deleted.
        * Modules/webgpu/WebGPUTexture.h:
        (WebCore::WebGPUTexture::texture const): Added.
        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::byteLength const): Added.
        (WebCore::GPUBuffer::isTransferSource const): Added.
        (WebCore::GPUBuffer::isTransferDestination const): Renamed from isTransferDst. Refactored for OptionSet API.
        (WebCore::GPUBuffer::isVertex const): Ditto.
        (WebCore::GPUBuffer::isUniform const): Ditto.
        (WebCore::GPUBuffer::isStorage const): Ditto.
        (WebCore::GPUBuffer::isMappable const): Ditto.
        (WebCore::GPUBuffer::isMapWrite const): Ditto.
        (WebCore::GPUBuffer::isMapRead const): Ditto.
        * platform/graphics/gpu/GPUBufferUsage.h: Refactored for better bit flag style.
        * platform/graphics/gpu/GPUCommandBuffer.h:
        (WebCore::GPUCommandBuffer::blitEncoder const): Added.
        * platform/graphics/gpu/GPURenderPassDescriptor.h: 
        * platform/graphics/gpu/GPUTexture.h: Cache usage flags for reference.
        (WebCore::GPUTexture::isTransferSrc const): Added.
        (WebCore::GPUTexture::isTransferDst const): Added.
        (WebCore::GPUTexture::isOutputAttachment const): Added.
        * platform/graphics/gpu/GPUTextureUsage.h: Refactor to match GPUBufferUsage.h.
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::validateBufferUsage): Renamed from validateBufferCreate, refactored for OptionSet.
        (WebCore::GPUBuffer::tryCreate):
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::isReadOnly const):
        (WebCore::GPUBuffer::setSubData): Add alignment check according to Metal docs.
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm: 
        (WebCore::GPUCommandBuffer::create): No need to use this alias here.
        (WebCore::GPUCommandBuffer::GPUCommandBuffer): Ditto.
        (WebCore::GPUCommandBuffer::copyBufferToBuffer): Added.
        (WebCore::GPUCommandBuffer::copyBufferToTexture): Added.
        (WebCore::GPUCommandBuffer::copyTextureToBuffer): Added. 
        (WebCore::GPUCommandBuffer::copyTextureToTexture): Added. 
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::submit): End encoding on the MTLCommandBuffer's blitCommandEncoder if it was used.
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::getNextTexture): Now provide usage flags to texture creation.
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::mtlTextureUsageForGPUTextureUsageFlags): Refactor validation.
        (WebCore::tryCreateMtlTextureDescriptor): Ditto.
        (WebCore::GPUTexture::tryCreate): Now provide usage flags to texture creation.
        (WebCore::GPUTexture::create): Ditto.
        (WebCore::GPUTexture::GPUTexture): Ditto.
        (WebCore::GPUTexture::createDefaultTextureView): Ditto.

2019-03-04  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce fixed duration content observation
        https://bugs.webkit.org/show_bug.cgi?id=195295
        <rdar://problem/48579913>

        Reviewed by Simon Fraser.

        Some pages have a runloop-like scheduling setup where the content triggering change happens at a nested timer firing.
        This patch helps finding cases like that using a 32ms long fixed window. Currently nested timers get dropped on the floor and
        we stop observing for content changes before they even get fired.

        Test: fast/events/touch/ios/visibility-change-happens-on-timer-hops.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::ContentChangeObserver):
        (WebCore::ContentChangeObserver::startContentObservationForDuration):
        (WebCore::ContentChangeObserver::stopDurationBasedContentObservation):
        (WebCore::ContentChangeObserver::hasDeterminateState const):
        (WebCore::ContentChangeObserver::adjustObservedState):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingContentChanges const):
        (WebCore::ContentChangeObserver::hasPendingActivity const):

2019-03-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        Native text selection UI is incorrectly suppressed in Microsoft Visio
        https://bugs.webkit.org/show_bug.cgi?id=195178
        <rdar://problem/48519394>

        Reviewed by Darin Adler.

        Currently, our heuristics for detecting hidden editable areas attempt to search for empty parent renderers with
        "overflow: hidden". It does this by ascending the layer tree in search of renderers that have an empty content
        size, and whose renderers' styles indicate that they have overflow: hidden in the X or Y directions. This fails
        in the case where a child renderer is positioned out of flow, relative to one of its parent layers, since the
        child will be visible, but we'll incorrectly believe that it is hidden. This leads to selection UI unexpectedly
        disappearing in the online version of Microsoft Visio.

        To fix this, we check whether the enclosing layer around the editable element has an empty clip rect; if the
        element is inside of a subframe, we additionally walk up to each enclosing frame's layer and check if that
        frame's layer has an empty clip rect.

        Test: editing/selection/ios/do-not-hide-selection-in-visible-container.html

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::isTransparentOrFullyClippedRespectingParentFrames const):

2019-03-01  Ryosuke Niwa  <rniwa@webkit.org>

        gPictureOwnerMap is unnecessary
        https://bugs.webkit.org/show_bug.cgi?id=195228

        Reviewed by Zalan Bujtas.

        Just store in HTMLImageElement. An extra pointer isn't going to affect the memory use here.
        If anything, we should worry about m_editableImage and m_pendingClonedAttachmentID instead.

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::pictureElement const):
        (WebCore::HTMLImageElement::setPictureElement):
        * html/HTMLImageElement.h:

2019-03-04  Daniel Bates  <dabates@apple.com>

        [iOS] Caret x-position in empty text area does not match text field
        https://bugs.webkit.org/show_bug.cgi?id=195125
        <rdar://problem/47161070>

        Remove the word "use" in the added comment to make it read well.

        * css/html.css:
        (textarea):

2019-03-04  Joseph Pecoraro  <pecoraro@apple.com>

        ITMLKit Inspector: Data Bindings / Associated Data for nodes
        https://bugs.webkit.org/show_bug.cgi?id=195290
        <rdar://problem/48304019>

        Reviewed by Devin Rousso.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::getDataBindingsForNode):
        (WebCore::InspectorDOMAgent::getAssociatedDataForNode):
        Stub these for web pages, they will only be used for ITMLKit right now.

2019-03-04  Daniel Bates  <dabates@apple.com>

        [iOS] Caret x-position in empty text area does not match text field
        https://bugs.webkit.org/show_bug.cgi?id=195125
        <rdar://problem/47161070>

        Reviewed by Darin Adler.

        Fix up User Agent styles for <textarea> on iOS such that they have the same left padding
        width and same text-indent as <input type="text">. This makes the x-position of the caret
        in an empty textarea match the position of the caret in an empty text field.

        Test: fast/forms/textarea/ios/caret-x-position-in-textarea-matches-textfield.html

        * css/html.css:
        (textarea): For iOS Family, do not use the padding shorthand property. Instead explicitly specify
        padding-top and padding-bottom to be 2px to keep our current behavior (because it looks reasonable)
        and do not specify left and right padding so that we inherit the padding set earlier in this file.
        (textarea::placeholder): Deleted. This was added to "try" to make fix up the position of the placeholder
        text so as to match the position of the textarea's inner text and the position of a text field's inner
        text. This fix up may have worked out visually when it was added, but based on the discovery of the
        hardcoded 3px left and right padding (see below remark) it looks like it was always one pixel too short.
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::createInnerTextStyle): Remove hardcoded 3px left and right padding.

2019-03-04  Youenn Fablet  <youenn@apple.com>

        Make sure to correctly notify of end of a ServiceWorkerJob when the context is stopped
        https://bugs.webkit.org/show_bug.cgi?id=195195

        Reviewed by Chris Dumez.

        Before the patch, we were notifying that some jobs were finished too aggressively at context stop time.
        This was confusing the Network Process.
        Only notify such jobs that have pending loads.
        Improve the tracking of jobs doing registration resolution to ensure the Network Process gets notified
        in case of a registration promise being resolved but the settling callback being not yet called while the context is stopped.

        Covered by existing tests not crashing anymore, in particular imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting.https.html.

        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
        (WebCore::ServiceWorkerContainer::notifyRegistrationIsSettled):
        (WebCore::ServiceWorkerContainer::stop):
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerJob.cpp:
        (WebCore::ServiceWorkerJob::cancelPendingLoad):
        * workers/service/ServiceWorkerJob.h:
        (WebCore::ServiceWorkerJob::isLoading const):

2019-03-04  Chris Dumez  <cdumez@apple.com>

        [iOS] Improve our file picker
        https://bugs.webkit.org/show_bug.cgi?id=195284
        <rdar://problem/45655856>

        Reviewed by Tim Horton and Wenson Hsieh.

        Export UTIUtilities.h so that it can be used from WebKit2.

        * WebCore.xcodeproj/project.pbxproj:

2019-03-04  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Decouple mouseMoved event and the "is observing content change" status.
        https://bugs.webkit.org/show_bug.cgi?id=195286

        Reviewed by Simon Fraser.

        Now isObservingContentChanges returns true only when we are actively observing content change during timer firing and/or style recalculating.
        This patch also renames a couple of functions to follow the didStart/didFinish pattern.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::domTimerExecuteDidStart):
        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
        (WebCore::ContentChangeObserver::styleRecalcDidStart):
        (WebCore::ContentChangeObserver::styleRecalcDidFinish):
        (WebCore::ContentChangeObserver::mouseMovedDidStart):
        (WebCore::ContentChangeObserver::mouseMovedDidFinish):
        (WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::MouseMovedScope::MouseMovedScope):
        (WebCore::ContentChangeObserver::MouseMovedScope::~MouseMovedScope):
        (WebCore::ContentChangeObserver::StyleRecalcScope::StyleRecalcScope):
        (WebCore::ContentChangeObserver::StyleRecalcScope::~StyleRecalcScope):
        (WebCore::ContentChangeObserver::DOMTimerScope::DOMTimerScope):
        (WebCore::ContentChangeObserver::DOMTimerScope::~DOMTimerScope):
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute): Deleted.
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute): Deleted.
        (WebCore::ContentChangeObserver::startObservingStyleRecalc): Deleted.
        (WebCore::ContentChangeObserver::stopObservingStyleRecalc): Deleted.
        (WebCore::ContentChangeObserver::startObservingMouseMoved): Deleted.
        (WebCore::ContentChangeObserver::stopObservingMouseMoved): Deleted.
        (WebCore::ContentChangeObserver::setShouldObserveStyleRecalc): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::setShouldObserveDOMTimerScheduling):
        (WebCore::ContentChangeObserver::isObservingDOMTimerScheduling const):
        (WebCore::ContentChangeObserver::isObservingStyleRecalc const):
        (WebCore::ContentChangeObserver::isObservingContentChanges const):
        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling): Deleted.
        (WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling): Deleted.
        (WebCore::ContentChangeObserver::shouldObserveStyleRecalc const): Deleted.

2019-03-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Offer @makeTypeError instead of exposing @TypeError
        https://bugs.webkit.org/show_bug.cgi?id=193858

        Reviewed by Mark Lam.

        Use @makeTypeError instead.

        * Modules/mediastream/RTCPeerConnection.js:
        * Modules/mediastream/RTCPeerConnectionInternals.js:
        * Modules/streams/ReadableByteStreamInternals.js:
        (readableByteStreamControllerClose):
        (readableByteStreamControllerPullInto):
        * Modules/streams/ReadableStream.js:
        (cancel):
        (pipeTo):
        * Modules/streams/ReadableStreamBYOBReader.js:
        (cancel):
        (read):
        * Modules/streams/ReadableStreamDefaultReader.js:
        (cancel):
        (read):
        * Modules/streams/ReadableStreamInternals.js:
        (readableStreamReaderGenericRelease):
        * Modules/streams/WritableStream.js:
        (abort):
        (close):
        (write):
        (getter.closed):
        (getter.ready):

2019-03-04  Simon Fraser  <simon.fraser@apple.com>

        Share more code between overflow and frame scrolling nodes, fixing overflow scrollbar display
        https://bugs.webkit.org/show_bug.cgi?id=195258

        Reviewed by Antti Koivisto.

        This patch moves management of scrollbar layers and scrollbar painters ("NSScrollerImp") down to
        ScrollingStateScrollingNode to be shared between frame and overflow nodes, allowing for
        scrolling thread updates of overflow scrollbars. It also moves some scrolling tree-side code
        to ScrollingTreeScrollingNodeDelegateMac to be shared between the "tree" nodes for overflow and frames.

        Layers for scrollbars are given to scrolling state nodes via setNodeLayers() now, and
        RenderLayerCompositor::updateScrollingNodeLayers() is added to provide a bottleneck to call that.
        At some point AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() should be relieved
        of the responsibility of pushing scrollbar layers (but the scrolling state tree needs to hold
        references to GraphicsLayers before that becomes safe).
        
        The actual fix that allows overflow scrollbars to show is the change in
        AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() that calls scrollableArea.*ScrollbarLayerDidChange()
        for all ScrollableAreas. This ensures that the CALayer is pushed onto the NSScrollerImp.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::setNodeLayers):
        (WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
        (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
        * page/scrolling/ScrollingCoordinator.h:
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateFrameScrollingNode::setVerticalScrollbarLayer): Deleted.
        (WebCore::ScrollingStateFrameScrollingNode::setHorizontalScrollbarLayer): Deleted.
        (WebCore::ScrollingStateFrameScrollingNode::setScrollerImpsFromScrollbars): Deleted.
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingStateScrollingNode.cpp:
        (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
        (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateScrollingNode::setHorizontalScrollbarLayer):
        (WebCore::ScrollingStateScrollingNode::setVerticalScrollbarLayer):
        (WebCore::ScrollingStateScrollingNode::setScrollerImpsFromScrollbars):
        * page/scrolling/ScrollingStateScrollingNode.h:
        (WebCore::ScrollingStateScrollingNode::horizontalScrollbarLayer const):
        (WebCore::ScrollingStateScrollingNode::verticalScrollbarLayer const):
        (WebCore::ScrollingStateScrollingNode::verticalScrollerImp const):
        (WebCore::ScrollingStateScrollingNode::horizontalScrollerImp const):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::setOrClearLatchedNode):
        (WebCore::ScrollingTree::handleWheelEvent):
        * page/scrolling/mac/ScrollingStateScrollingNodeMac.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm.
        (WebCore::ScrollingStateScrollingNode::setScrollerImpsFromScrollbars):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::releaseReferencesToScrollerImpsOnTheMainThread): Deleted.
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionRelatedLayers):
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::~ScrollingTreeScrollingNodeDelegateMac):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateScrollbarPainters):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::releaseReferencesToScrollerImpsOnTheMainThread):
        * platform/ScrollbarThemeComposite.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        * rendering/RenderLayerCompositor.h:

2019-03-04  Jer Noble  <jer.noble@apple.com>

        Remove HEVC as a codec requiring hardware support.
        https://bugs.webkit.org/show_bug.cgi?id=194960
        <rdar://problem/47741432>

        Reviewed by Eric Carlson.

        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::defaultMediaContentTypesRequiringHardwareSupport):

2019-03-04  Jer Noble  <jer.noble@apple.com>

        [iOS] Fullscreen "stay in page" option breaks video playback
        https://bugs.webkit.org/show_bug.cgi?id=195277
        <rdar://problem/48537317>

        Reviewed by Eric Carlson.

        Add a LOG entry when playback is rejected due to media playback suspension.

        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::playbackPermitted const):

2019-03-04  Tim Horton  <timothy_horton@apple.com>

        Fix the build.

        * dom/Document.h:

2019-03-03  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Content observation should be limited to the current document.
        https://bugs.webkit.org/show_bug.cgi?id=195256
        <rdar://problem/48544402>

        Move ContentChangeObserver from Page to Document.
        It limits content observation to the target node's owner document.

        Reviewed by Simon Fraser.

        * dom/Document.cpp:
        (WebCore::m_contentChangeObserver):
        (WebCore::Document::updateStyleIfNeeded):
        (WebCore::Document::willDetachPage):
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        (WebCore::m_undoManager): Deleted.
        * dom/Document.h:
        (WebCore::Document::contentChangeObserver):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::removeById):
        (WebCore::DOMTimer::fired):
        * page/Frame.cpp:
        (WebCore::Frame::willDetachPage):
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        (WebCore::Page::pointerLockController const):
        (WebCore::Page::contentChangeObserver): Deleted.
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::ContentChangeObserver):
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingStyleRecalc):
        (WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
        (WebCore::ContentChangeObserver::startObservingMouseMoved):
        (WebCore::ContentChangeObserver::hasDeterminateState const):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::notifyContentChangeIfNeeded):
        (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        (WebCore::ContentChangeObserver::MouseMovedScope::MouseMovedScope):
        (WebCore::ContentChangeObserver::MouseMovedScope::~MouseMovedScope):
        (WebCore::ContentChangeObserver::StyleRecalcScope::StyleRecalcScope):
        (WebCore::ContentChangeObserver::StyleRecalcScope::~StyleRecalcScope):
        (WebCore::ContentChangeObserver::DOMTimerScope::DOMTimerScope):
        (WebCore::ContentChangeObserver::DOMTimerScope::~DOMTimerScope):
        (WebCore::hasPendingStyleRecalc): Deleted.
        * page/ios/ContentChangeObserver.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateElementRenderer):

2019-03-02  Simon Fraser  <simon.fraser@apple.com>

        Share more code for updating the state of frame scrolling nodes
        https://bugs.webkit.org/show_bug.cgi?id=195254

        Reviewed by Antti Koivisto.

        Responsibility for updating state on ScrollingStateFrameScrolling nodes was split between
        AsyncScrollingCoordinator::frameViewLayoutUpdated(), which is called post-layout, and
        RenderLayerCompositor. This patch gives that responsibility entirely to RenderLayerCompositor,
        ensuring that we update frame scrolling nodes at the same time as the rest of the scrolling
        state tree.
        
        We also share code between updating ScrollingStateFrameScrollingNodes and
        ScrollingStateOverflowScrollingNodews, since both can be updated from a ScrollableArea.
        Some minor cleanup of ScrollableArea is doing to help. For the first time, we're pushing
        ScrollableAreaParameters for overflow scrolling nodes, allowing rubber-banding to work
        on macOS.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
        (WebCore::AsyncScrollingCoordinator::setRectRelativeToParentNode):
        (WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
        (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
        (WebCore::AsyncScrollingCoordinator::setViewportConstraintedNodeConstraints):
        (WebCore::AsyncScrollingCoordinator::setScrollingNodeGeometry): Deleted.
        (WebCore::AsyncScrollingCoordinator::setViewportConstraintedNodeGeometry): Deleted.
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::setRectRelativeToParentNode):
        (WebCore::ScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
        (WebCore::ScrollingCoordinator::setFrameScrollingNodeState):
        (WebCore::ScrollingCoordinator::setViewportConstraintedNodeConstraints):
        (WebCore::ScrollingCoordinator::setScrollingNodeGeometry): Deleted.
        (WebCore::ScrollingCoordinator::setViewportConstraintedNodeGeometry): Deleted.
        * platform/ScrollView.h:
        (WebCore::ScrollView::horizontalScrollbarMode const): Deleted.
        (WebCore::ScrollView::verticalScrollbarMode const): Deleted.
        * platform/ScrollableArea.cpp:
        (WebCore::ScrollableArea::reachableTotalContentsSize const):
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::horizontalScrollbarMode const):
        (WebCore::ScrollableArea::verticalScrollbarMode const):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::overhangAmount const):
        (WebCore::RenderLayer::reachableTotalContentsSize const):
        (WebCore::RenderLayer::scrollableContentsSize const): Deleted.
        * rendering/RenderLayer.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
        (WebCore::RenderLayerCompositor::rootParentRelativeScrollableRect const):
        (WebCore::RenderLayerCompositor::parentRelativeScrollableRect const):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):
        (WebCore::RenderLayerCompositor::computeFrameScrollingGeometry const): Deleted.
        (WebCore::RenderLayerCompositor::computeFrameHostingGeometry const): Deleted.
        (WebCore::RenderLayerCompositor::computeOverflowScrollingGeometry const): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-03-02  Darin Adler  <darin@apple.com>

        Retire legacy dtoa function and DecimalNumber class
        https://bugs.webkit.org/show_bug.cgi?id=195253

        Reviewed by Daniel Bates.

        * css/CSSPrimitiveValue.cpp:
        (WebCore::CSSPrimitiveValue::formatNumberValue const): Use makeString instead
        of DecimalNumber. Also changed return type to String and use StringView and
        removed special handling of literals.
        (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const): Removed an
        unnecessary use of StringBuilder.

        * css/CSSPrimitiveValue.h: Updated for changes to formatNumberValue.

2019-03-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Cleanups in SoupNetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=195247

        Reviewed by Daniel Bates.

        This renames clientCertificates to allowedCertificates, since they are not client
        certificates at all, but server certificates. It also adds a using statement to avoid
        repeating the long type of the map, and avoids an unnecessary copy.

        * platform/network/soup/SoupNetworkSession.cpp:
        (WebCore::allowedCertificates):
        (WebCore::SoupNetworkSession::checkTLSErrors):
        (WebCore::SoupNetworkSession::allowSpecificHTTPSCertificateForHost):
        (WebCore::clientCertificates): Deleted.

2019-03-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wformat error in SharedBuffer::tryCreateArrayBuffer
        https://bugs.webkit.org/show_bug.cgi?id=195004

        Reviewed by Darin Adler.

        Seems C++ has no format specifier appropriate for printing the result of sizeof. We should
        just not try to print it. Anyway, that's easy in this case, because sizeof(char) is
        guaranteed to be 1. This code was an attempt to be pedantic to account for mythical systems
        with char larger than one byte, but perhaps it didn't realize sizeof always returns
        multiples of char and so sizeof(char) is always one even on such mythical systems.

        Note the sizeof(char) use two lines up is left since it's not clear that switching it to 1
        would actually be more readable.

        * platform/SharedBuffer.cpp:
        (WebCore::SharedBuffer::tryCreateArrayBuffer const):

2019-03-03  Tim Horton  <timothy_horton@apple.com>

        Remove some more unused 32-bit code
        https://bugs.webkit.org/show_bug.cgi?id=195255

        Reviewed by Darin Adler.

        * platform/gamepad/cocoa/GameControllerGamepad.h:
        * platform/gamepad/cocoa/GameControllerGamepad.mm:
        * platform/gamepad/cocoa/GameControllerGamepadProvider.h:
        * platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::globalPointForEvent):
        (WebCore::pointForEvent):
        (WebCore::mouseButtonForEvent):
        (WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::servicesRolloverButtonCell const):
        (WebCore::RenderThemeMac::paintImageControlsButton):
        (WebCore::RenderThemeMac::imageControlsButtonSize const):
        (WebCore::RenderThemeMac::imageControlsButtonPositionOffset const):

2019-03-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce ContentChangeObserver::MouseMovedScope
        https://bugs.webkit.org/show_bug.cgi?id=195252
        <rdar://problem/48539446>

        Reviewed by Simon Fraser.

        Scope the mouse-moved event to make the callsites less error-prone. 

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::startObservingMouseMoved):
        (WebCore::ContentChangeObserver::stopObservingMouseMoved):
        (WebCore::ContentChangeObserver::MouseMovedScope::MouseMovedScope):
        (WebCore::ContentChangeObserver::MouseMovedScope::~MouseMovedScope):
        (WebCore::ContentChangeObserver::startObservingContentChanges): Deleted.
        (WebCore::ContentChangeObserver::stopObservingContentChanges): Deleted.
        * page/ios/ContentChangeObserver.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):

2019-03-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce ContentChangeObserver::adjustObservedState
        https://bugs.webkit.org/show_bug.cgi?id=195244
        <rdar://problem/48536737>

        Reviewed by Simon Fraser.

        Move state change handling code to adjustObservedState() and introduce signalContentChangeIfNeeded() to
        let the client know about the state change (or lack of state change).

        Test: fast/events/touch/ios/visibility-change-happens-at-the-second-timer.html

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingStyleRecalc):
        (WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
        (WebCore::ContentChangeObserver::didContentVisibilityChange):
        (WebCore::ContentChangeObserver::addObservedDOMTimer):
        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
        (WebCore::ContentChangeObserver::setShouldObserveStyleRecalc):
        (WebCore::ContentChangeObserver::adjustObservedState):
        (WebCore::ContentChangeObserver::signalContentChangeIfNeeded):
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::isObservingDOMTimerScheduling const):
        (WebCore::ContentChangeObserver::addObservedDOMTimer): Deleted.
        (WebCore::ContentChangeObserver::setShouldObserveStyleRecalc): Deleted.

2019-03-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move away from WKContentChange values
        https://bugs.webkit.org/show_bug.cgi?id=195240
        <rdar://problem/48532358>

        Reviewed by Simon Fraser.

        This is in preparation for moving towards a state machine-like implementation.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didInstallDOMTimer): Do not install the timer if we are already in "hover" state.
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::startObservingStyleRecalc): No need to start observing the style recalc if we are already in "hover" state.
        (WebCore::ContentChangeObserver::stopObservingStyleRecalc):
        (WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
        (WebCore::ContentChangeObserver::didContentVisibilityChange):
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::observedContentChange const):
        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
        (WebCore::ContentChangeObserver::hasDeterminedState const):
        (WebCore::ContentChangeObserver::observedContentChange): Deleted.
        (WebCore::ContentChangeObserver::resetObservedContentChange): Deleted.
        (WebCore::ContentChangeObserver::setObservedContentChange): Deleted.
        (WebCore::ContentChangeObserver::addObservedDOMTimer): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::addObservedDOMTimer):
        (WebCore::ContentChangeObserver::clearObservedDOMTimers):
        (WebCore::ContentChangeObserver::hasVisibleChangeState const):
        (WebCore::ContentChangeObserver::hasObservedDOMTimer const):
        (WebCore::ContentChangeObserver::setHasNoChangeState):
        (WebCore::ContentChangeObserver::setHasIndeterminateState):
        (WebCore::ContentChangeObserver::setHasVisibleChangeState):
        (WebCore::ContentChangeObserver::countOfObservedDOMTimers const): Deleted.

2019-03-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Programmatic paste access should be granted when copying and pasting within the same origin
        https://bugs.webkit.org/show_bug.cgi?id=195053
        <rdar://problem/48134710>

        Reviewed by Ryosuke Niwa.

        Plumb the document pasteboard identifier through the client when making a DOM paste access request. See WebKit
        ChangeLog for more details.

        Test: editing/pasteboard/ios/dom-paste-same-origin.html

        * WebCore.xcodeproj/project.pbxproj:
        * dom/DOMPasteAccess.h: Renamed from Source/WebCore/dom/DOMPasteAccessPolicy.h.

        Introduce DOMPasteAccessResponse, which is either DeniedForGesture, GrantedForCommand, or GrantedForGesture. In
        particular, when pasteboard identifiers match, we only grant access for the current paste command, rather than
        throughout the user gesture.

        * dom/UserGestureIndicator.h:
        (WebCore::UserGestureToken::didRequestDOMPasteAccess):
        * loader/EmptyClients.cpp:
        * page/EditorClient.h:
        * page/Frame.cpp:
        (WebCore::Frame::requestDOMPasteAccess):

2019-02-27  Darin Adler  <darin@apple.com>

        Fixed makeString(float) to do shortest-form serialization without first converting to double
        https://bugs.webkit.org/show_bug.cgi?id=195142

        Reviewed by Daniel Bates.

        * platform/graphics/Color.cpp: Removed unneeded include of DecimalNumber.h.

2019-03-02  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r242132): Incorrect positioning with multiple position:fixed elements
        https://bugs.webkit.org/show_bug.cgi?id=195246

        Reviewed by Frederic Wang.

        r242132 introduced a bug where the management of 'cumulativeDelta' in ScrollingTree::notifyRelatedNodesRecursive
        was incorrect. This value should propagate from ancestors to descendants, but not between siblings in the scrolling
        tree, which it did, causing sibling position:fixed to behave incorrectly.

        Test: scrollingcoordinator/mac/multiple-fixed.html

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::notifyRelatedNodesRecursive):
        * page/scrolling/ScrollingTree.h:

2019-03-02  Darin Adler  <darin@apple.com>

        Improve some comments
        https://bugs.webkit.org/show_bug.cgi?id=195243

        Reviewed by Daniel Bates.

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _addAccessibilityObject:toTextMarkerArray:]):
        Fix a typo in a comment.

        * dom/RadioButtonGroups.cpp: Fix a typo in a comment.
        (WebCore::RadioButtonGroups::checkedButtonForGroup const): Use nullptr instead of 0.

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::~HTMLInputElement): Improved a comment, but sadly made
        it a bit longer. Use nullptr instead of 0.
        (WebCore::HTMLInputElement::didMoveToNewDocument): Added a comment.

2019-03-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Datalist] fast/forms/datalist/datalist-child-validation.html crashes with a debug assertion in isValidFormControlElement()
        https://bugs.webkit.org/show_bug.cgi?id=190620
        <rdar://problem/19226679>

        Reviewed by Ryosuke Niwa.

        Fixes and re-enables an existing layout test that is asserting on debug builds (and failing on release builds).
        To understand why we hit this assertion, we first note several observations:

            -   The validity of a form control (`isValid()`) depends on the value of `willValidate()`.
            -   Both of these results are cached in member variables: `m_isValid` and `m_willValidate`, respectively.
            -   `willValidate()` changes the cached value of `m_willValidate` if necessary, but `isValid()` uses the
                cached value without update.

        Now, consider the following scenario:

            1.  Something changes in the DOM that changes the result of `willValidate()`. This can happen as a result of
                several things:
                a.  The form control changes readonly state
                b.  The form control changes disabled state
                c.  The form control is added to a datalist element
                d.  The form control is removed from a datalist element
            2.  Call `willValidate()`.
            3.  Call `isValid()`.

        In scenarios (a) - (c), we ensure that cached form control validity (`m_isValid`) is updated alongside
        `m_willValidate` by invoking `setNeedsWillValidateCheck()`, such that the result of `isValid()` matches the
        result of `m_isValid` in step (3). However, in the last scenario (d), we don't do this, which causes form
        control validity to fall out of sync with the result of `isValid()`. To fix the bug, we update willValidate and
        isValid when a form control is removed from an ancestor, only if one of its ancestors is a datalist element.

        * html/HTMLFormControlElement.cpp:
        (WebCore::HTMLFormControlElement::insertedIntoAncestor):
        (WebCore::HTMLFormControlElement::removedFromAncestor):

        Make a couple of minor tweaks:
          - Currently, we always invalidate `m_dataListAncestorState` by resetting the state to `Unknown` when the form
            control is removed from an ancestor or inserted. Instead, we only need to reset it when the form control
            already has an ancestor that is a datalist (in the case where it's being removed) or when the form control
            does not yet have an ancestor (in the case where it is being added).
          - If the form control was inside a datalist prior to removal, recompute its cached value of `m_willValidate`,
            as well as its cached validity (`m_isValid`).

2019-03-01  Darin Adler  <darin@apple.com>

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * dom/Document.cpp:
        (WebCore::Document::lastModified const): Use makeString and pad.
        * html/FTPDirectoryDocument.cpp:
        (WebCore::processFileDateString): Ditto.

        * mathml/MathMLElement.cpp:
        (WebCore::convertToPercentageIfNeeded): Use makeString and FormattedNumber.

        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::ResourceUsageOverlay::platformDraw): Use makeString and pad.

        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::cpuUsageString): Use makeString, FormattedNumber, and pad.
        (WebCore::gcTimerString): Use String::number.

        * platform/DateComponents.cpp:
        (WebCore::DateComponents::toStringForTime const): Use makeString and pad.
        (WebCore::DateComponents::toString const): Ditto.

        * platform/LocalizedStrings.cpp: Removed comment that mentioned String::format,
        and that was also inaccurate.

        * platform/audio/HRTFElevation.cpp:
        (WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
        Use makeString and pad.
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText): Ditto.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo): Ditto.
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::formatMediaControlsTime const): Ditto.

2019-03-01  Chris Dumez  <cdumez@apple.com>

        Do not attempt to set WAL Journal mode on a readonly SQLite database
        https://bugs.webkit.org/show_bug.cgi?id=195237

        Reviewed by Simon Fraser.

        This avoids logging errors when opening the database.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):
        (WebCore::SQLiteDatabase::useWALJournalMode):
        * platform/sql/SQLiteDatabase.h:

2019-03-01  Antoine Quint  <graouts@apple.com>

        [iOS] Turn mouse event simulation on by default
        https://bugs.webkit.org/show_bug.cgi?id=195218
        <rdar://problem/48516794>

        Reviewed by Dean Jackson.

        * page/RuntimeEnabledFeatures.h:

2019-03-01  Chris Dumez  <cdumez@apple.com>

        Disable NetworkStateNotifier::singleton()'s isMainThread() assertion when the WebThread is enabled
        https://bugs.webkit.org/show_bug.cgi?id=195230
        <rdar://problem/47925359>

        Reviewed by Ryosuke Niwa.

        Disable NetworkStateNotifier::singleton()'s isMainThread() assertion when the WebThread is enabled
        to address crashes on iOS WK1.

        * platform/network/NetworkStateNotifier.cpp:
        (WebCore::shouldSuppressThreadSafetyCheck):
        (WebCore::NetworkStateNotifier::singleton):

2019-03-01  Simon Fraser  <simon.fraser@apple.com>

        Show mouse event regions in the overlay
        https://bugs.webkit.org/show_bug.cgi?id=195227

        Reviewed by Tim Horton.

        Enhance event region overlays to show more kinds of events.

        * page/DebugPageOverlays.cpp:
        (WebCore::touchEventRegionColors):
        (WebCore::NonFastScrollableRegionOverlay::drawRect):

2019-03-01  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Check for pending style recalcs at the end of each timer run.
        https://bugs.webkit.org/show_bug.cgi?id=195220
        <rdar://problem/48518979>

        Reviewed by Simon Fraser.

        didScheduleStyleRecalc callback was introduced to see if a style recalc is scheduled while firing the DOM timer. However it does not handle the case
        when in addition to this style recalc scheduling, something later (though during the same timer firing) triggers a sync style recalc.
        Let's just check if we've got a pending style recalc when the DOM timer comes back.

        Test: fast/events/touch/ios/style-recalc-schedule-and-force-relalc.html

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::hasPendingStyleRecalc):
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::didScheduleStyleRecalc): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling): Deleted.
        (WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling): Deleted.
        (WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling const): Deleted.

2019-03-01  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Further restrict client-side cookie persistence after cross-site navigations with link decoration
        https://bugs.webkit.org/show_bug.cgi?id=195196
        <rdar://problem/48006419>

        Reviewed by Brent Fulgham.

        Tests: http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site.html
               http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource.html
               http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource.html
               http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource.html
               http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource.html

        Trackers abuse link query parameters to transport user identifiers cross-site.
        This patch detects such navigations and applies further restrictions to
        client-site cookies on the destination page.

        * platform/network/NetworkStorageSession.cpp:
        (WebCore::NetworkStorageSession::setAgeCapForClientSideCookies):
            Now sets the regular 7-day cap and a reduced 1-day cap.
        (WebCore::NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics):
            Renamed NetworkStorageSession::removeStorageAccessForAllFramesOnPage() to
            NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics since
            it now clears out two types of page-specific data.
        (WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration):
            This function receives a cross-site navigation and checks if the originating
            site is a prevalent resource. If so, it marks the page or stricter cookie
            rules.
        (WebCore::NetworkStorageSession::resetCrossSiteLoadsWithLinkDecorationForTesting):
            Test infrastructure. This sets a state that overrides the regular per-page
            clear of data. The reason is that the double clear was racy and caused test
            failures.
        (WebCore::NetworkStorageSession::clientSideCookieCap const):
            New function that returns the current cookie lifetime cap.
        (WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage): Deleted.
            Renamed to NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics().
        * platform/network/NetworkStorageSession.h:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):
            Now calls NetworkStorageSession::clientSideCookieCap() to set the cap.

2019-03-01  Rob Buis  <rbuis@igalia.com>

        Adjust XMLHttpRequest Content-Type handling
        https://bugs.webkit.org/show_bug.cgi?id=184645

        Reviewed by Youenn Fablet.

        Implement steps 4.4.1.2 and 4.4.1.3 of send() [1].

        Test: web-platform-tests/xhr/send-content-type-charset.htm

        [1] https://xhr.spec.whatwg.org/#dom-xmlhttprequest-send

        * platform/network/ParsedContentType.cpp:
        (WebCore::ParsedContentType::setCharset):
        * platform/network/ParsedContentType.h:
        * xml/XMLHttpRequest.cpp:
        (WebCore::replaceCharsetInMediaTypeIfNeeded):
        (WebCore::XMLHttpRequest::send):
        (WebCore::replaceCharsetInMediaType): Deleted.

2019-03-01  Youenn Fablet  <youenn@apple.com>

        Update originsMatch to handle the case of file origins which enforce file path separation
        https://bugs.webkit.org/show_bug.cgi?id=195216

        Reviewed by Brady Eidson.

        Covered by the assertion and existing tests like fast/xmlhttprequest/xmlhttprequest-no-file-access.html.
        Make sure originsMatch returns true if either compared origins are the same object
        or they have the same file path separation behavior.

        * page/SecurityOrigin.cpp:
        (WebCore::areOriginsMatching):
        (WebCore::originsMatch):

2019-03-01  Youenn Fablet  <youenn@apple.com>

        Serialize IndexedDB::ObjectStoreOverwriteMode as an enum
        https://bugs.webkit.org/show_bug.cgi?id=195213

        Reviewed by Alex Christensen.

        Add traits to enable enum IPC encoding.
        No change of behavior.

        * Modules/indexeddb/IndexedDB.h:

2019-03-01  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Enable service worker
        https://bugs.webkit.org/show_bug.cgi?id=188318

        Reviewed by Youenn Fablet.

        * WebCorePrefix.h:
        * testing/ServiceWorkerInternals.h:
        * workers/service/context/SWContextManager.cpp:
        (WebCore::SWContextManager::serviceWorkerFailedToTerminate):
        * workers/service/context/SWContextManager.h:

2019-03-01  Sihui Liu  <sihui_liu@apple.com>

        Add a quirk for bostongloble.com and latimes.com
        https://bugs.webkit.org/show_bug.cgi?id=195155

        Reviewed by Geoffrey Garen.

        Covered by manual testing.

        * Modules/webdatabase/DOMWindowWebDatabase.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateRuntimeEnableConditionalString):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/preprocess-idls.pl:
        (GenerateConstructorAttributes):
        * page/Quirks.cpp:
        (WebCore::Quirks::hasWebSQLSupportQuirk const):
        * page/Quirks.h:

2019-03-01  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Rename members and move implementation to header.
        https://bugs.webkit.org/show_bug.cgi?id=195198
        <rdar://problem/48499967>

        Reviewed by Simon Fraser.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::startObservingStyleRecalc):
        (WebCore::ContentChangeObserver::stopObservingStyleRecalc):
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::stopObservingContentChanges):
        (WebCore::ContentChangeObserver::StyleRecalcScope::StyleRecalcScope):
        (WebCore::ContentChangeObserver::StyleRecalcScope::~StyleRecalcScope):
        (WebCore::ContentChangeObserver::startObservingStyleResolve): Deleted.
        (WebCore::ContentChangeObserver::stopObservingStyleResolve): Deleted.
        (WebCore::ContentChangeObserver::isObservingContentChanges): Deleted.
        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling): Deleted.
        (WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling): Deleted.
        (WebCore::ContentChangeObserver::isObservingDOMTimerScheduling): Deleted.
        (WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling): Deleted.
        (WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling): Deleted.
        (WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling): Deleted.
        (WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc): Deleted.
        (WebCore::ContentChangeObserver::shouldObserveNextStyleRecalc): Deleted.
        (WebCore::ContentChangeObserver::countOfObservedDOMTimers): Deleted.
        (WebCore::ContentChangeObserver::clearObservedDOMTimers): Deleted.
        (WebCore::ContentChangeObserver::containsObservedDOMTimer): Deleted.
        * page/ios/ContentChangeObserver.h:
        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling):
        (WebCore::ContentChangeObserver::isObservingDOMTimerScheduling const):
        (WebCore::ContentChangeObserver::containsObservedDOMTimer const):
        (WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling):
        (WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling):
        (WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling const):
        (WebCore::ContentChangeObserver::setShouldObserveStyleRecalc):
        (WebCore::ContentChangeObserver::shouldObserveStyleRecalc const):
        (WebCore::ContentChangeObserver::isObservingContentChanges const):
        (WebCore::ContentChangeObserver::countOfObservedDOMTimers const):
        (WebCore::ContentChangeObserver::clearObservedDOMTimers):

2019-03-01  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] ContentChangeObserver::StyleChangeScope should not set WKContentVisibilityChange directly
        https://bugs.webkit.org/show_bug.cgi?id=195197
        <rdar://problem/48498332>

        Reviewed by Simon Fraser.

        Add didContentVisibilityChange to hide WKContentVisibilityChange value. We might also want to add some logic to didContentVisibilityChange at some point.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::didContentVisibilityChange):
        (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
        * page/ios/ContentChangeObserver.h:

2019-03-01  Jer Noble  <jer.noble@apple.com>

        [EME] Make sure the hasSessionSemaphore is set even if HAVE(AVSTREAMSESSION) is false
        https://bugs.webkit.org/show_bug.cgi?id=195217

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

2019-03-01  Justin Fan  <justin_fan@apple.com>

        [Web GPU] 32-bit builds broken by attempt to disable WebGPU on 32-bit
        https://bugs.webkit.org/show_bug.cgi?id=195191

        Rubber-stamped by Dean Jackson.

        Dropping support for 32-bit entirely, so I'm intentionally leaving 32-bit broken.

        * Configurations/FeatureDefines.xcconfig:

2019-02-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        HTTPSUpgradeList.db database should be opened in readonly mode
        https://bugs.webkit.org/show_bug.cgi?id=195194
        <rdar://problem/47103889>

        Unreviewed build fix for curl.

        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::openDatabase): Removed the second arguemnt of SQLiteDatabase::open.

2019-02-28  Chris Dumez  <cdumez@apple.com>

        Unreviewed Windows build fix after r242251.

        * platform/win/SearchPopupMenuDB.cpp:
        (WebCore::SearchPopupMenuDB::openDatabase):

2019-02-28  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
        https://bugs.webkit.org/show_bug.cgi?id=195143
        <rdar://problem/48462351>

        Reviewed by Simon Fraser.

        Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::removeById):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-02-28  Chris Dumez  <cdumez@apple.com>

        HTTPSUpgradeList.db database should be opened in readonly mode
        https://bugs.webkit.org/show_bug.cgi?id=195194
        <rdar://problem/47103889>

        Reviewed by Youenn Fablet.

        Add parameter to SQLiteDatabase::open() to specific the open flags.

        * Modules/webdatabase/Database.cpp:
        (WebCore::Database::performOpenAndVerify):
        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):
        * platform/sql/SQLiteDatabase.h:
        * platform/sql/SQLiteFileSystem.cpp:
        * platform/sql/SQLiteFileSystem.h:

2019-02-28  Brady Eidson  <beidson@apple.com>

        Followup to:
        Universal links from Google search results pages don't open the app
        https://bugs.webkit.org/show_bug.cgi?id=195126

        Unreviewed.

        * page/SecurityOrigin.cpp:
        (WebCore::originsMatch): Remove a bogus assertion (reasoning in bugzilla)

2019-02-28  Simon Fraser  <simon.fraser@apple.com>

        [iOS] Dark flash when opening Google AMP pages
        https://bugs.webkit.org/show_bug.cgi?id=195193
        rdar://problem/48326442

        Reviewed by Zalan Bujtas.

        After the incremental compositing updates changes, it was possible for a change in the size
        of an overflow:hidden element to fail to update the "ancestor clipping layer" geometry on
        a composited descendant that is not a descendant in z-order. When Google search results
        create the <iframe> that contain AMP contents, we'd fail to update a zero-sized clipping layer,
        leaving the #222 background of an intermediate element visible.

        Fix by setting a flag in RenderLayer::updateLayerPosition() (which is called in containing block order)
        that sets the "needs geometry update" dirty bit on containing-block-descendant layers. Currently
        this flag affects all descendants; in future, we might be able to clear it for grand-children.

        Tests: compositing/geometry/ancestor-clip-change-interleaved-stacking-context.html
               compositing/geometry/ancestor-clip-change.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateLayerPositions):
        (WebCore::RenderLayer::updateLayerPosition):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateAfterLayout):
        * rendering/RenderLayerBacking.h:

2019-02-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Use-after-move in RenderCombineText::combineTextIfNeeded()
        https://bugs.webkit.org/show_bug.cgi?id=195188

        Reviewed by Zalan Bujtas.

        r241288 uncovered an existing problem with our text-combine code. r242204 alleviated the
        symptom, but this patch fixes the source of the problem (and reverts r242204).

        The code in RenderCombineText::combineTextIfNeeded() has a bit that’s like:

        FontDescription bestFitDescription;
        while (...) {
            FontCascade compressedFont(WTFMove(bestFitDescription), ...);
            ...
        }

        Clearly this is wrong.

        Test: fast/text/text-combine-crash-2.html

        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::FontDescription::platformResolveGenericFamily):
        * rendering/RenderCombineText.cpp:
        (WebCore::RenderCombineText::combineTextIfNeeded):

2019-02-28  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce observer subclasses to scope content change observing.
        https://bugs.webkit.org/show_bug.cgi?id=195172
        <rdar://problem/48479259>

        Reviewed by Simon Fraser.

        Let's scope start/stopObserving call pairs.

        * dom/Document.cpp:
        (WebCore::Document::updateStyleIfNeeded):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::fired):
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::StyleChangeObserver::StyleChangeObserver):
        (WebCore::ContentChangeObserver::StyleChangeObserver::~StyleChangeObserver):
        (WebCore::ContentChangeObserver::StyleRecalcObserver::StyleRecalcObserver):
        (WebCore::ContentChangeObserver::StyleRecalcObserver::~StyleRecalcObserver):
        (WebCore::ContentChangeObserver::DOMTimerObserver::DOMTimerObserver):
        (WebCore::ContentChangeObserver::DOMTimerObserver::~DOMTimerObserver):
        (WebCore::ContentChangeObserver::StyleChange::StyleChange): Deleted.
        (WebCore::ContentChangeObserver::StyleChange::~StyleChange): Deleted.
        * page/ios/ContentChangeObserver.h:
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateElementRenderer):

2019-02-28  Antoine Quint  <graouts@apple.com>

        Enable the Pointer Events runtime flag by default
        https://bugs.webkit.org/show_bug.cgi?id=195156

        Reviewed by Dean Jackson.

        * page/RuntimeEnabledFeatures.h:

2019-02-28  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Make observed state reset explicit.
        https://bugs.webkit.org/show_bug.cgi?id=195185
        <rdar://problem/48488342>

        Reviewed by Simon Fraser.

        Use setObservedContentChange only for setting the observed change while observing.

        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::resetObservedContentChange):
        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
        * page/ios/ContentChangeObserver.h:

2019-02-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r242210.
        https://bugs.webkit.org/show_bug.cgi?id=195179

        it broke hover menus on losaltosonline.com (Requested by zalan
        on #webkit).

        Reverted changeset:

        "[ContentChangeObserver] Move timer removal code from
        DOMWindow::clearTimeout to DOMTimer::removeById"
        https://bugs.webkit.org/show_bug.cgi?id=195143
        https://trac.webkit.org/changeset/242210

2019-02-28  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
        https://bugs.webkit.org/show_bug.cgi?id=195143
        <rdar://problem/48462351>

        Reviewed by Simon Fraser.

        Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::removeById):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/ios/ContentChangeObserver.cpp:
        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
        (WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
        * page/ios/ContentChangeObserver.h:

2019-02-28  Charles Vazac  <cvazac@akamai.com>

        Fix Resource Timing buffer edge cases for WPT
        https://bugs.webkit.org/show_bug.cgi?id=193213

        Reviewed by Youenn Fablet.

        Test coverage by LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer*.html

        * page/Performance.cpp:
        (WebCore::Performance::resourceTimingBufferFullTimerFired): Only dispatch the
        resourcetimingbufferfull event if the buffer is still full (as it may have been cleared or
        expanded). Also, avoid infinite loops if we aren't able to decrease the number of entries in
        the secondary buffer.

2019-02-28  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] HTTP Body is missing with redirection.
        https://bugs.webkit.org/show_bug.cgi?id=191651

        Reviewed by Don Olmstead.

        Implement updateFromDelegatePreservingOldProperties for curl port.

        Tests: http/tests/navigation/post-301-response.html
               http/tests/navigation/post-302-response.html
               http/tests/navigation/post-303-response.html
               http/tests/navigation/post-307-response.html
               http/tests/navigation/post-308-response.html

        * platform/Curl.cmake:
        * platform/network/curl/ResourceRequest.h:
        (WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties): Deleted.
        * platform/network/curl/ResourceRequestCurl.cpp: Added.
        (WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):

2019-02-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
        https://bugs.webkit.org/show_bug.cgi?id=195159

        Reviewed by Don Olmstead.

        Use COORDINATED_GRAPHICS instead.

        * platform/graphics/GraphicsContext3D.h:
        * platform/graphics/PlatformLayer.h:
        * platform/graphics/cairo/ImageBufferCairo.cpp:
        (WebCore::ImageBufferData::ImageBufferData):
        (WebCore::ImageBufferData::~ImageBufferData):
        * platform/graphics/cairo/ImageBufferDataCairo.h:
        * platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:
        * platform/graphics/nicosia/NicosiaPaintingEngineThreaded.h:
        * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp:
        (Nicosia::GC3DLayer::swapBuffersIfNeeded):
        * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
        (WebCore::GraphicsContext3D::reshapeFBOs):
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::prepareTexture):
        * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
        (WebCore::GraphicsContext3D::reshapeFBOs):
        * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
        (WebCore::TextureMapperGC3DPlatformLayer::TextureMapperGC3DPlatformLayer):
        (WebCore::TextureMapperGC3DPlatformLayer::~TextureMapperGC3DPlatformLayer):
        * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
        * platform/graphics/texmap/TextureMapperPlatformLayerProxyProvider.h:
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
        (WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
        (WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintsIntoWindow const):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::shouldCompositeOverflowControls const):

2019-02-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Locale names can be nullptr
        https://bugs.webkit.org/show_bug.cgi?id=195171
        <rdar://problem/48262376>

        Reviewed by Dean Jackson.

        Nullptr can't be used in keys to HashMaps, so take an early out in this case.

        This is a partial revert of r241288.

        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::FontDescription::platformResolveGenericFamily):

2019-02-28  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Enable Web GPU only on 64-bit
        https://bugs.webkit.org/show_bug.cgi?id=195139

        Because Metal is only supported on 64 bit apps.

        Unreviewed build fix.

        * Configurations/FeatureDefines.xcconfig:

2019-02-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move WKSetObservedContentChange logic to ContentChangeObserver class.
        https://bugs.webkit.org/show_bug.cgi?id=195128
        <rdar://problem/48456752>

        Reviewed by Simon Fraser.

        Move the final bits over to ContentChangeObserver and delete WKContentObservationInternal.h.

        * WebCore.xcodeproj/project.pbxproj:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::setObservedContentChange):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKSetObservedContentChange):
        * platform/ios/wak/WKContentObservation.h:
        * platform/ios/wak/WKContentObservationInternal.h: Removed.

2019-02-27  Simon Fraser  <simon.fraser@apple.com>

        Roll out r242014; it caused crashes in compositing logging (webkit.org/b/195141)

        * dom/Document.cpp:
        (WebCore::Document::lastModified const):
        * html/FTPDirectoryDocument.cpp:
        (WebCore::processFileDateString):
        * mathml/MathMLElement.cpp:
        (WebCore::convertToPercentageIfNeeded):
        (WebCore::MathMLElement::collectStyleForPresentationAttribute):
        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::ResourceUsageOverlay::platformDraw):
        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::cpuUsageString):
        (WebCore::gcTimerString):
        * platform/DateComponents.cpp:
        (WebCore::DateComponents::toStringForTime const):
        (WebCore::DateComponents::toString const):
        * platform/LocalizedStrings.cpp:
        (WebCore::localizedString):
        * platform/audio/HRTFElevation.cpp:
        (WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::formatMediaControlsTime const):

2019-02-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move _WKObservingContentChanges from global to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195091
        <rdar://problem/48427271>

        Reviewed by Tim Horton.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::stopObservingContentChanges):
        (WebCore::ContentChangeObserver::isObservingContentChanges):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKObservingContentChanges): Deleted.
        (WKStartObservingContentChanges): Deleted.
        (WKStopObservingContentChanges): Deleted.
        * platform/ios/wak/WKContentObservation.h:
        * platform/ios/wak/WKContentObservationInternal.h:

2019-02-27  Brady Eidson  <beidson@apple.com>

        Universal links from Google search results pages don't open the app.
        <rdar://problem/46887179> and https://bugs.webkit.org/show_bug.cgi?id=195126

        Reviewed by Geoffrey Garen.

        Covered by new API tests.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::shouldOpenExternalURLsPolicyToPropagate const): Propagate the external URL policy from
          an iframe if it is from the same security origin as the main frame.

2019-02-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move DOMTimer schedule handling from global to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195090
        <rdar://problem/48426771>

        Reviewed by Tim Horton.

        Also remove some unused functions from WKContentObservationInternal.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
        (WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling):
        (WebCore::ContentChangeObserver::isObservingDOMTimerScheduling):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKStartObservingDOMTimerScheduling): Deleted.
        (WKStopObservingDOMTimerScheduling): Deleted.
        (WKIsObservingDOMTimerScheduling): Deleted.
        * platform/ios/wak/WKContentObservation.h:
        * platform/ios/wak/WKContentObservationInternal.h:

2019-02-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move style recalc handling from global to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195087

        Reviewed by Simon Fraser.

        Add m_observingNextStyleRecalc/m_observingStyleRecalcScheduling to ContentChangeObserver and move the related code over from WK functions.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling):
        (WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling):
        (WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling):
        (WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc):
        (WebCore::ContentChangeObserver::shouldObserveNextStyleRecalc):
        (WebCore::ContentChangeObserver::setObservedContentChange):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKSetObservedContentChange):
        (WKStartObservingStyleRecalcScheduling): Deleted.
        (WKStopObservingStyleRecalcScheduling): Deleted.
        (WKIsObservingStyleRecalcScheduling): Deleted.
        (WKSetShouldObserveNextStyleRecalc): Deleted.
        (WKShouldObserveNextStyleRecalc): Deleted.
        * platform/ios/wak/WKContentObservation.h:

2019-02-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195070
        <rdar://problem/48417650>

        Reviewed by Tim Horton.

        Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
        (WebCore::ContentChangeObserver::countOfObservedDOMTimers):
        (WebCore::ContentChangeObserver::clearObservedDOMTimers):
        (WebCore::ContentChangeObserver::setObservedContentChange):
        (WebCore::ContentChangeObserver::containsObservedDOMTimer):
        (WebCore::ContentChangeObserver::addObservedDOMTimer):
        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKStartObservingDOMTimerScheduling):
        (WKSetObservedContentChange):
        (WebThreadGetObservedDOMTimers): Deleted.
        (WebThreadCountOfObservedDOMTimers): Deleted.
        (WebThreadClearObservedDOMTimers): Deleted.
        (WebThreadContainsObservedDOMTimer): Deleted.
        (WebThreadAddObservedDOMTimer): Deleted.
        (WebThreadRemoveObservedDOMTimer): Deleted.
        * platform/ios/wak/WKContentObservation.h:

2019-02-27  Justin Fan  <justin_fan@apple.com>
        Fix build errors after Web GPU buffer updates changed some IDL fields from unsigned long to unsigned long long.

        Unreviewed build fix.

        * Modules/webgpu/WebGPUBuffer.cpp:
        (WebCore::WebGPUBuffer::setSubData):
        * Modules/webgpu/WebGPUBuffer.h:
        * Modules/webgpu/WebGPUBufferBinding.h:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * platform/graphics/gpu/GPUBufferBinding.h:
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:

2019-02-27  John Wilander  <wilander@apple.com>

        Adopt WebCore::RegistrableDomain in WebCore::ResourceLoadStatistics and WebKit::NetworkProcessProxy
        https://bugs.webkit.org/show_bug.cgi?id=195071
        <rdar://problem/48417690>

        Reviewed by Alex Christensen and Brent Fulgham.

        No new tests. This patch maintains functionality covered by plenty of layout
        tests under http/tests/resourceLoadStatistics/ and http/tests/storageAccess.

        This patch adopts WebCore::RegistrableDomain in WebCore::ResourceLoadStatistics
        and makes the necessary infrastructure changes to support that.

        The previous HashCountedSets in WebCore::ResourceLoadStatistics are now just
        HashSets since we never used the counts for anything. This change simplified
        encoding and decoding for IPC and will eventually simplify encoding and
        decoding in loader/ResourceLoadStatistics.cpp when we obsolete statistics
        model version 14 and below.

        The patch also makes WebCore::RegistrableDomain's String constructor private.
        A new create function WebCore::RegistrableDomain::uncheckedCreateFromString()
        is introduced to better signal to users that creating a registrable domain
        object with a string may create an object that doesn't match a registrable
        domain in a valid HTTP-family URL. This change (private String constructor)
        motivated a change in WebCore::AdClickAttribution where the Source and
        Destination structs now take a URL as parameter instead of a String.

        Finally, this patch harmonizes parameter and variable naming, going from
        "origin" to "domain" and "mainFrame" to "topFrame."

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaSessionTitle const):
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Source::Source):
        (WebCore::AdClickAttribution::Source::deletedValue):
        (WebCore::AdClickAttribution::Destination::Destination):
        (WebCore::AdClickAttribution::Destination::deletedValue):
        (WebCore::AdClickAttribution::decode):
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logSubresourceLoading):
        (WebCore::ResourceLoadObserver::logWebSocketLoading):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        (WebCore::ResourceLoadObserver::statisticsForURL):
        (WebCore::ResourceLoadObserver::statisticsForOrigin): Deleted.
        * loader/ResourceLoadObserver.h:
        * loader/ResourceLoadStatistics.cpp:
        (WebCore::encodeHashSet):
        (WebCore::ResourceLoadStatistics::encode const):
        (WebCore::decodeHashCountedSet):
        (WebCore::decodeHashSet):
        (WebCore::ResourceLoadStatistics::decode):
        (WebCore::appendHashSet):
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
        (WebCore::encodeHashCountedSet): Deleted.
        (WebCore::encodeOriginHashSet): Deleted.
        (WebCore::decodeOriginHashSet): Deleted.
        (WebCore::appendHashCountedSet): Deleted.
        * loader/ResourceLoadStatistics.h:
        * platform/RegistrableDomain.h:
        (WebCore::RegistrableDomain::uncheckedCreateFromString):
        (WebCore::RegistrableDomain::RegistrableDomain):
        * testing/Internals.cpp:
        (WebCore::Internals::resourceLoadStatisticsForURL):
        (WebCore::Internals::resourceLoadStatisticsForOrigin): Deleted.
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-27  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Buffer updates part 2: setSubData, GPU/CPU synchronization
        https://bugs.webkit.org/show_bug.cgi?id=195077
        <rdar://problem/47805229>

        Reviewed by Dean Jackson.

        Implement GPUBuffer.setSubData and prevent the resolving of mapping promises if the buffer is scheduled to be 
        used on the GPU, and add handlers to resolve such promises after command buffer execution completes. In addition,
        update buffer sizes to u64 (unsigned long in C++) as per the updated Web GPU API.

        Tests: webgpu/buffer-command-buffer-races.html
               webgpu/map-read-buffers.html

        * Modules/webgpu/WebGPUBindGroup.h:
        (WebCore::WebGPUBindGroup::bindGroup const):
        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
        (WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const): Rename binding -> bufferBinding to reduce confusion.
        * Modules/webgpu/WebGPUBuffer.cpp: Small tweaks.
        (WebCore::WebGPUBuffer::setSubData):
        (WebCore::WebGPUBuffer::unmap): Correctly fail if buffer is destroyed.
        (WebCore::WebGPUBuffer::destroy):
        (WebCore::WebGPUBuffer::rejectOrRegisterPromiseCallback):
        * Modules/webgpu/WebGPUBuffer.h:
        (WebCore::WebGPUBuffer::buffer const): Returned buffer is no longer const so that it can be used in completed handler callbacks.
        * Modules/webgpu/WebGPUBuffer.idl: Enable setSubData.
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::beginRenderPass):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::isTransferDst const): Added various state and flag getters.
        (WebCore::GPUBuffer::isVertex const):
        (WebCore::GPUBuffer::isUniform const):
        (WebCore::GPUBuffer::isStorage const):
        (WebCore::GPUBuffer::isReadOnly const):
        (WebCore::GPUBuffer::isMappable const):
        (WebCore::GPUBuffer::isMapWrite const):
        (WebCore::GPUBuffer::isMapRead const):
        (WebCore::GPUBuffer::isMapWriteable const):
        (WebCore::GPUBuffer::isMapReadable const):
        * platform/graphics/gpu/GPUBufferBinding.h:
        * platform/graphics/gpu/GPUCommandBuffer.h:
        (WebCore::GPUCommandBuffer::usedBuffers const):
        (WebCore::GPUCommandBuffer::useBuffer):
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBuffer): Pass Ref of itself for Buffer to request the Queue later, if needed.
        (WebCore::GPUDevice::tryCreateBuffer const): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUProgrammablePassEncoder.cpp: Retain the encoder's commandBuffer to reference its used resource buffers.
        (WebCore::GPUProgrammablePassEncoder::GPUProgrammablePassEncoder):
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        (WebCore::GPUProgrammablePassEncoder::commandBuffer const):
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::validateBufferCreate): Move validation out of tryCreate.
        (WebCore::GPUBuffer::tryCreate): Create both shared and private buffers, depending on usage.
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::~GPUBuffer): Call destroy instead of just unmap.
        (WebCore::GPUBuffer::state const):
        (WebCore::GPUBuffer::setSubData): Uses a cached collection of staging MTLBuffers to encode data copies to the implementation MTLBuffer.
        (WebCore::GPUBuffer::commandBufferCommitted): Register on the GPUBuffer that the provided MTLCommandBuffer uses it, and is about to be committed.
        (WebCore::GPUBuffer::commandBufferCompleted): MTLCommandBuffer's onCompletedHandler calls this.
        (WebCore::GPUBuffer::reuseSubDataBuffer): SetSubData's blit command buffers call this to return a staging buffer to the pool.
        (WebCore::GPUBuffer::registerMappingCallback):
        (WebCore::GPUBuffer::runMappingCallback):
        (WebCore::GPUBuffer::unmap):
        (WebCore::GPUBuffer::destroy):
        (WebCore::GPUBuffer::tryCreateSharedBuffer): Deleted.
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder):
        (WebCore::GPUProgrammablePassEncoder::setBindGroup):
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::submit): Ensure submitted buffers are in the correct state, and add completed handlers for synchronization.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::tryCreate):
        (WebCore::GPURenderPassEncoder::GPURenderPassEncoder): Retain the commandBuffer for later reference.
        (WebCore::GPURenderPassEncoder::setVertexBuffers): Mark vertex buffers as used before submission.
        (WebCore::GPURenderPassEncoder::create): Deleted.

        Buffer size updates in the IDL:
        * Modules/webgpu/GPUBufferDescriptor.idl:
        * Modules/webgpu/WebGPUBuffer.idl:
        * Modules/webgpu/WebGPUBufferBinding.idl:
        * Modules/webgpu/WebGPUCommandBuffer.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * Modules/webgpu/WebGPUVertexAttributeDescriptor.idl:
        * Modules/webgpu/WebGPUVertexInputDescriptor.idl:

2019-02-27  Youenn Fablet  <youenn@apple.com>

        Remove LeetCode FetchRequest quirk
        https://bugs.webkit.org/show_bug.cgi?id=195100

        Reviewed by Alex Christensen.

        Covered by manual testing.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::needsSignalQuirk):

2019-02-27  Chris Dumez  <cdumez@apple.com>

        Unable to log into chase.com on iPad when DeviceMotionEvent API is disabled
        https://bugs.webkit.org/show_bug.cgi?id=195101
        <rdar://problem/48423023>

        Reviewed by Geoffrey Garen.

        Add site-specific quirk for chase.com on iOS where we fire a dummy DeviceMotionEvent if the page
        tries to register a "devicemotion" event listener and fails because the API is disabled. This is
        needed to unblock the site and proceed with the login flow.

        Unfortunately, document()->settings().needsSiteSpecificQuirks() is false on iOS so I could not
        guard the quirk behind this flag.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        (WebCore::DOMWindow::failedToRegisterDeviceMotionEventListener):
        * page/DOMWindow.h:

2019-02-27  Antoine Quint  <graouts@apple.com>

        Support Pointer Events on macOS
        https://bugs.webkit.org/show_bug.cgi?id=195008
        <rdar://problem/47454419>

        Reviewed by Dean Jackson.

        We now dispatch relevant pointer events as we prepare to dispatch mouse events. In most cases, this means we dispatch
        a pointer event of the same type, with "mouse" being substituted by "pointer", and with the same properties with the
        exception that if preventDefault() is called for a "pointerdown" event, the matching "mousedown" will not be dispatched,
        and the same behavior also extends to "pointerup".

        Tests: pointerevents/mouse/over-enter-out-leave.html
               pointerevents/mouse/pointer-capture.html
               pointerevents/mouse/pointer-event-basic-properties.html
               pointerevents/mouse/pointer-events-before-mouse-events.html
               pointerevents/mouse/pointerdown-prevent-default.html

        * Configurations/FeatureDefines.xcconfig:
        * dom/Document.cpp: All of the touch-action related members and functions should be iOS-specific since the touch-action
        property does not have any effect on macOS.
        (WebCore::Document::invalidateRenderingDependentRegions):
        (WebCore::Document::nodeWillBeRemoved):
        (WebCore::Document::updateTouchActionElements):
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::dispatchMouseEvent): Dispatch a pointer event matching the mouse event that is about to be dispatched.
        If preventDefault() is called in the event handler for either "pointerdown" or "pointerup", do not proceed with dispatching
        the mouse event.
        * dom/PointerEvent.cpp:
        (WebCore::pointerEventType):
        (WebCore::PointerEvent::create):
        * dom/PointerEvent.h:
        * page/EventHandler.cpp: Check both the pointer and mouse events to see if we need to dispatch "enter" and "leave" events.
        (WebCore::hierarchyHasCapturingEventListeners):
        (WebCore::EventHandler::updateMouseEventTargetNode):
        * page/PointerCaptureController.cpp: Fix a build error which only happened on macOS.
        (WebCore::PointerCaptureController::PointerCaptureController): Create the CapturingData for the unique mouse pointer.
        (WebCore::PointerCaptureController::hasPointerCapture): The code did not match the spec cited in the comment, only the
        pending target override needs to be considered to determine whether a given element has pointer capture enabled.
        (WebCore::PointerCaptureController::dispatchEvent): Dispatch the provided pointer event, accounting for pointer capture if
        it is set.
        * page/PointerLockController.cpp: Fix a build error which only happened on macOS.
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::resolveElement): Code related to touch-action is only relevant to iOS.

2019-02-27  Sihui Liu  <sihui_liu@apple.com>

        Network Process is put to suspended when holding locked IndexedDB files
        https://bugs.webkit.org/show_bug.cgi?id=195024
        <rdar://problem/45194169>

        Reviewed by Geoffrey Garen.

        We found network process was suspended when IDBDatabase was being closed in the background database thread, 
        holding locks to its database file. To avoid starvation or deadlock, we need to keep network process alive by 
        taking background assertion in UI process until the closes are done and locks are released.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::create):
        (WebCore::IDBServer::IDBServer::IDBServer):
        (WebCore::IDBServer::IDBServer::createBackingStore):
        (WebCore::IDBServer::IDBServer::closeDatabase):
        (WebCore::IDBServer::IDBServer::didCloseDatabase):
        * Modules/indexeddb/server/IDBServer.h:
        (WebCore::IDBServer::IDBServer::create):
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentDeleteOperation):
        (WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose):
        (WebCore::IDBServer::UniqueIDBDatabase::didShutdownForClose):
        (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        (WebCore::IDBServer::UniqueIDBDatabase::notifyServerAboutClose):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:

2019-02-26  Simon Fraser  <simon.fraser@apple.com>

        Have a single notion of scroll position in the scrolling tree and derive layoutViewport from it
        https://bugs.webkit.org/show_bug.cgi?id=194973

        Reviewed by Antti Koivisto.

        This patch cleans up how the scrolling tree responds to scrolls.

        First, ScrollingTreeScrollingNode::m_currentScrollPosition is "truth" for scrolling thread/
        UI process scroll position.

        On macOS where handleWheelEvent on the scrolling thread changes scroll position, the
        bottleneck is ScrollingTreeScrollingNode::scrollTo() which sets the new scroll position,
        update the visual viewport (for frame scrolls) updates the scrolledContentsLayer position,
        updates related layers on this node (counter-scrolling layers etc), and then tells the
        scrolling tree, which recurses through descendant nodes so they can adjust their layer
        positions.

        On iOS, the bottleneck is ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling(),
        which does the above other than setting scrolledContentsLayer (since we're reacting to
        layer state changes, not producing them).

        updateLayersAfterAncestorChange() is renamed to relatedNodeScrollPositionDidChange(), and
        ScrollingTree does the tree walk so classes don't have to implement
        updateLayersAfterAncestorChange() just to talk children. The ScrollingTree tree walk knows
        how to get the correct layoutViewport and to stop at frame boundaries (layer updates never
        need to cross frame boundaries).

        We preserve 'cumulativeDelta'; it's necessary for things like fixed inside overflow:scroll,
        since the fixed state was computed with the "layout" scroll position, so we have to account
        for the scroll delta since the last committed position. It's possible we could improve this
        in future.

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling):
        (WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):
        (WebCore::ScrollingTree::notifyRelatedNodesRecursive):
        (WebCore::ScrollingTree::mainFrameLayoutViewport):
        (WebCore::ScrollingTree::scrollPositionChangedViaDelegatedScrolling): Deleted.
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::updateLayersAfterAncestorChange): Deleted.
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::updateViewportForCurrentScrollPosition):
        (WebCore::ScrollingTreeFrameScrollingNode::localToContentsPoint const):
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreeNode::enclosingScrollingNodeIncludingSelf):
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::minimumScrollPosition const):
        (WebCore::ScrollingTreeScrollingNode::scrollLimitReached const):
        (WebCore::ScrollingTreeScrollingNode::adjustedScrollPosition const):
        (WebCore::ScrollingTreeScrollingNode::scrollBy):
        (WebCore::ScrollingTreeScrollingNode::scrollTo):
        (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged):
        (WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
        (WebCore::ScrollingTreeScrollingNode::localToContentsPoint const):
        (WebCore::ScrollingTreeScrollingNode::updateLayersAfterAncestorChange): Deleted.
        (WebCore::ScrollingTreeScrollingNode::setScrollPosition): Deleted.
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNodeDelegate.h:
        (WebCore::ScrollingTreeScrollingNodeDelegate::currentScrollPosition const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::scrollPosition const): Deleted.
        * page/scrolling/ThreadedScrollingTree.cpp:
        (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
        * page/scrolling/ThreadedScrollingTree.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange): Deleted.
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h:
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::relatedNodeScrollPositionDidChange):
        (WebCore::ScrollingTreeStickyNode::updateLayersAfterAncestorChange): Deleted.
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustedScrollPosition const):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::repositionRelatedLayers):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinState):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea const):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::updateLayersAfterViewportChange): Deleted.
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        (): Deleted.
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::adjustedScrollPosition const):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::~ScrollingTreeOverflowScrollingNodeMac): Deleted.
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterAncestorChange): Deleted.
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const): Deleted.
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition): Deleted.
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition): Deleted.
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterDelegatedScroll): Deleted.
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::adjustScrollPositionToBoundsIfNecessary):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollOffset const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollOnAxis):

2019-02-22  Simon Fraser  <simon.fraser@apple.com>

        Have a single notion of scroll position in the scrolling tree and derive layoutViewport from it
        https://bugs.webkit.org/show_bug.cgi?id=194973

        Reviewed by Antti Koivisto.

        The "master" value for the scroll position of a ScrollingTreeScrollingNode is now its m_scrollPosition member;
        layout viewports and layer positions will be set from this. This allows scrollPosition() to no longer be virtual
        and require different code for each scrolling node subclass, and adds a choke point that we can use to update
        the layout viewport.
        
        We can remove m_probableMainThreadScrollPosition on ScrollingTreeFrameScrollingNodeMac because this was really just
        an alias for the scroll position.

        Add some isRootNode() checks for things that should only affect the main frame.

        * page/scrolling/ScrollingTree.h: Remove fixedPositionRect() which was unused, and is a per-frame thing so makes
        no sense here.
        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::didChangeScrollPosition):
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        (WebCore::ScrollingTreeFrameScrollingNode::layoutViewport const):
        (WebCore::ScrollingTreeFrameScrollingNode::setLayoutViewport):
        (WebCore::ScrollingTreeFrameScrollingNode::fixedPositionRect): Deleted.
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::setScrollPosition):
        (WebCore::ScrollingTreeScrollingNode::setScrollPositionInternal):
        (WebCore::ScrollingTreeScrollingNode::didChangeScrollPosition):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::scrollPosition const):
        * page/scrolling/ios/ScrollingTreeIOS.cpp:
        (WebCore::ScrollingTreeIOS::fixedPositionRect): Deleted.
        * page/scrolling/ios/ScrollingTreeIOS.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinState):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition const): Deleted.
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const): Deleted.

2019-02-27  Ulrich Pflueger  <up@nanocosmos.de>

        [MSE] SourceBuffer sample time increment vs. last frame duration check is broken
        https://bugs.webkit.org/show_bug.cgi?id=194747
        <rdar://problem/48148469>

        Reviewed by Jer Noble.

        Prevent unintended frame drops by including last frame duration in discontinuity check. 

        Test: media/media-source/media-source-append-variable-frame-lengths-with-matching-durations.html

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2019-02-27  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: WebKit content crash in Base System (because NSAppearance is NULL).
        https://bugs.webkit.org/show_bug.cgi?id=195086
        rdar://problem/48419124

        Reviewed by Tim Horton.

        * platform/mac/ScrollAnimatorMac.mm:
        (-[WebScrollerImpDelegate effectiveAppearanceForScrollerImp:]): Always return a valid NSAppearance.

2019-02-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove conditional compile guard for InsertIntoTextNodeCommand::doReapply
        https://bugs.webkit.org/show_bug.cgi?id=195067
        <rdar://problem/44812080>

        Reviewed by Tim Horton.

        This iOS-specific override was introduced to fix <rdar://problem/7114425>, in which the last typed character
        would be revealed when redoing text input on iOS inside a password field. The associated change fixed this bug
        by overriding doReapply on iOS to only insert text (instead of additionally handling password echo); however, it
        really makes sense to skip password echo when redoing on all platforms, so we can just remove the platform-
        specific guards around this logic.

        Doing this allows us to add the `hasEditableStyle()` check on iOS when redoing text insertion, which results in
        a very subtle behavior change covered by the new layout test below.

        Test: editing/undo/redo-text-insertion-in-non-editable-node.html

        * editing/InsertIntoTextNodeCommand.cpp:
        (WebCore::InsertIntoTextNodeCommand::doReapply):
        * editing/InsertIntoTextNodeCommand.h:

2019-02-26  Keith Miller  <keith_miller@apple.com>

        Code quality cleanup in NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=194824

        Reviewed by Mark Lam.

        name_names.pl should not just assume the layout of LazyNeverDestroyed.

        * dom/make_names.pl:
        (printNamesCppFile):

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        Do not try to observe the timer when Page is nullptr
        https://bugs.webkit.org/show_bug.cgi?id=195076

        Reviewed by Tim Horton.

        Covered by fast/dom/Window/timer-null-script-execution-context.html.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):

2019-02-20  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Media elements will restart network buffering just before suspending
        https://bugs.webkit.org/show_bug.cgi?id=193691

        Reviewed by Eric Carlson.

        API Test: WebKit.ProcessSuspendMediaBuffering

        Allow the Page to suspend all media buffering in its child Documents.

        * dom/Document.cpp:
        (WebCore::Document::suspendAllMediaBuffering):
        (WebCore::Document::resumeAllMediaBuffering):
        * dom/Document.h:
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::dataBufferingPermitted const):
        (WebCore::MediaElementSession::suspendBuffering):
        (WebCore::MediaElementSession::resumeBuffering):
        (WebCore::MediaElementSession::bufferingSuspended const):
        * html/MediaElementSession.h:
        * page/Page.cpp:
        (WebCore::Page::suspendAllMediaBuffering):
        (WebCore::Page::resumeAllMediaBuffering):
        * page/Page.h:
        (WebCore::Page::mediaPlaybackIsSuspended const):
        (WebCore::Page::mediaBufferingIsSuspended const):
        (WebCore::Page::mediaPlaybackIsSuspended): Deleted.
        * platform/audio/PlatformMediaSession.h:
        (WebCore::PlatformMediaSession::suspendBuffering):
        (WebCore::PlatformMediaSession::resumeBuffering):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
        (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
        * platform/audio/PlatformMediaSessionManager.h:

2019-02-26  Youenn Fablet  <youenn@apple.com>

        Move service worker response validation from the service worker client to the service worker itself
        https://bugs.webkit.org/show_bug.cgi?id=194716

        Reviewed by Geoffrey Garen.

        Added response validation at service worker side.

        No change of behavior except for now logging validation error messages in the console.
        Covered by rebased tests.

        * workers/service/context/ServiceWorkerFetch.cpp:
        (WebCore::ServiceWorkerFetch::validateResponse):
        (WebCore::ServiceWorkerFetch::processResponse):
        (WebCore::ServiceWorkerFetch::dispatchFetchEvent):

2019-02-26  Sihui Liu  <sihui_liu@apple.com>

        [Mac WK2] storage/indexeddb/IDBObject-leak.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=195036

        Reviewed by Geoffrey Garen.

        When connection to IDBServer is lost, IDBDatabase in web process should not only stop active transactions, but 
        also transactions in committing process.

        Also, TransactionOpration should clear its perform function when the operation is being completed, otherwise 
        there is a reference cycle of TransactionOpration.

        Covered by existing tests storage/indexeddb/IDBObject-leak.html.

        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::connectionToServerLost): notify committing transasctions that connection is lost.
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::connectionClosedFromServer): notify IDBConnectionProxy that transaction ends.
        * Modules/indexeddb/client/IDBConnectionProxy.cpp:
        (WebCore::IDBClient::IDBConnectionProxy::forgetTransaction): clear finished transactions.
        * Modules/indexeddb/client/IDBConnectionProxy.h:
        * Modules/indexeddb/client/TransactionOperation.h:
        (WebCore::IDBClient::TransactionOperation::doComplete): clear perform function unconditionally when the 
        operation is in completion process. 

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195066
        <rdar://problem/48411682>

        Reviewed by Tim Horton.

        Now all the empty clearContentChangeObservers() implementations can be removed.

        * dom/Document.cpp:
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        * loader/EmptyClients.h:
        * page/ChromeClient.h:
        * page/Frame.cpp:
        (WebCore::Frame::willDetachPage):
        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
        (WebCore::ContentChangeObserver::didSuspendActiveDOMObjects): Might need to merge them.
        (WebCore::ContentChangeObserver::willDetachPage):

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move style recalc schedule observation logic to ContentChangeObserver
        https://bugs.webkit.org/show_bug.cgi?id=195062
        <rdar://problem/48409258>

        Reviewed by Tim Horton.

        Also rename registerDOMTimerForContentObservationIfNeeded to be consistent with the did* naming style.

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::didInstallDOMTimer):
        (WebCore::ContentChangeObserver::didScheduleStyleRecalc):
        (WebCore::ContentChangeObserver::registerDOMTimerForContentObservationIfNeeded): Deleted.

2019-02-26  Chris Dumez  <cdumez@apple.com>

        [iOS] Regression(PSON) Scroll position is no longer restored when navigating back to reddit.com
        https://bugs.webkit.org/show_bug.cgi?id=195054
        <rdar://problem/48330549>

        Reviewed by Geoff Garen.

        Add MaintainMemoryCache flag to indicate that the memory cache should not get purged.

        * page/MemoryRelease.cpp:
        (WebCore::releaseNoncriticalMemory):
        (WebCore::releaseCriticalMemory):
        (WebCore::releaseMemory):
        * page/MemoryRelease.h:

2019-02-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241970.
        https://bugs.webkit.org/show_bug.cgi?id=195057

        made the QuickLook.LegacyQuickLookContent API test flakey
        (Requested by estes on #webkit).

        Reverted changeset:

        "[iOS] Break a reference cycle between PreviewLoader and
        ResourceLoader"
        https://bugs.webkit.org/show_bug.cgi?id=194964
        https://trac.webkit.org/changeset/241970

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Simplify content observation API by removing explicit DOMTimer observation.
        https://bugs.webkit.org/show_bug.cgi?id=195023
        <rdar://problem/48381885>

        Reviewed by Tim Horton.

        In the future we might decide that certain activities don't require DOMTimer observation, but that should
        be internal to ContentChangeObserver.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingContentChanges):
        (WebCore::ContentChangeObserver::stopObservingContentChanges):
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move observing logic from Document::updateStyleIfNeeded to ContentChangeObserver
        https://bugs.webkit.org/show_bug.cgi?id=195032
        <rdar://problem/48388063>

        Reviewed by Tim Horton.

        This might eventually turn into a regular start/stop content observing call.

        * dom/Document.cpp:
        (WebCore::Document::updateStyleIfNeeded):
        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingStyleResolve):
        (WebCore::ContentChangeObserver::stopObservingStyleResolve):

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move CheckForVisibilityChange to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195035
        <rdar://problem/48389123>

        Reviewed by Tim Horton.

        Visibility checking logic belongs to ContentChangeObserver.

        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::elementImplicitVisibility):
        (WebCore::ContentChangeObserver::StyleChange::StyleChange):
        (WebCore::ContentChangeObserver::StyleChange::~StyleChange):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateElementRenderer):
        (WebCore::elementImplicitVisibility): Deleted.
        (WebCore::CheckForVisibilityChange::CheckForVisibilityChange): Deleted.
        (WebCore::CheckForVisibilityChange::~CheckForVisibilityChange): Deleted.

2019-02-26  Philippe Normand  <pnormand@igalia.com>

        [EGL] Runtime support for RGB565 pixel layout
        https://bugs.webkit.org/show_bug.cgi?id=194817

        Reviewed by Carlos Garcia Campos.

        Currently our graphics pipeline always relies on a ARGB8888 (32
        bpp) pixel configuration. On some low-end (old) embedded platforms
        the graphics driver is sometimes optimized for 16 bpp
        configurations, such as RGB565. On those platforms the application
        can now set the WEBKIT_EGL_PIXEL_LAYOUT environment variable to
        "RGB565" to adjust to the best pixel configuration supported by
        the screen and graphics driver.

        * platform/graphics/egl/GLContextEGL.cpp:
        (WebCore::GLContextEGL::getEGLConfig):

2019-02-26  Philippe Normand  <pnormand@igalia.com> and Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add API for webview background color configuration
        https://bugs.webkit.org/show_bug.cgi?id=192305

        Reviewed by Michael Catanzaro.

        Adapt the FrameView API to allow a default non-white background color.

        * page/Frame.cpp:
        (WebCore::Frame::createView): Replace isTransparent argument with a background color one.
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::recalculateBaseBackgroundColor): Use Color::transparent if m_isTransparent is true.
        (WebCore::FrameView::updateBackgroundRecursively): Allow the fallback background color to be non-white, this is
        used only in non-dark-mode-css build configurations.
        * page/FrameView.h:
        * testing/Internals.cpp:
        (WebCore::Internals::setViewIsTransparent): Use Color::transparent if transparent is true.

2019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>

        scalableNativeWebpageParameters() is not preserved on new page navigation.
        https://bugs.webkit.org/show_bug.cgi?id=194892
        <rdar://problem/47538280>

        If a page's current default viewport configuration is scalableNativeWebpageParameters due to
        the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
        configuration until we derive the right values from viewport meta-tag.

        Reviewed by Wenson Hsieh.

        Test: fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::canOverrideConfigurationParameters const): Use fixedNativeWebpageParameters().
        (WebCore::ViewportConfiguration::updateDefaultConfiguration): Use nativeWebpageParameters.
        (WebCore::ViewportConfiguration::nativeWebpageParameters): Return the appropriate default configuration
            based on m_canIgnoreScalingConstraints and shouldIgnoreMinimumEffectiveDeviceWidth().
        (WebCore::ViewportConfiguration::fixedNativeWebpageParameters): Renamed from nativeWebpageParameters()
        (WebCore::ViewportConfiguration::scalableNativeWebpageParameters): Use fixedNativeWebpageParameters.
        * page/ViewportConfiguration.h: Make nativeWebpageParameters() an instance method and change the old
            static method to fixedNativeWebpageParameters which better reflects the actual behavior.

2019-02-25  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move observing logic from DOMWindow::clearTimeout to ContentChangeObserver
        https://bugs.webkit.org/show_bug.cgi?id=194988
        <rdar://problem/48343040>

        Reviewed by Tim Horton.

        ContentChangeObserver::removeDOMTimer takes care of the canceled timer removal.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::startObservingDOMTimer):
        (WebCore::ContentChangeObserver::stopObservingDOMTimer):
        (WebCore::ContentChangeObserver::removeDOMTimer):

2019-02-25  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Move observing logic from DOMTimer to ContentChangeObserver
        https://bugs.webkit.org/show_bug.cgi?id=194987
        <rdar://problem/48342910>

        Reviewed by Tim Horton.

        Content obvservation logic should all move to the ContentChangeObserver class.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        (WebCore::Page::contentChangeObserver):
        * page/ios/ContentChangeObserver.h:
        * page/ios/ContentChangeObserver.mm:
        (WebCore::ContentChangeObserver::ContentChangeObserver):
        (WebCore::ContentChangeObserver::registerDOMTimerForContentObservationIfNeeded):
        (WebCore::ContentChangeObserver::startObservingDOMTimer):
        (WebCore::ContentChangeObserver::stopObservingDOMTimer):
        (WebCore::ContentChangeObserver::containsObservedDOMTimer):
        (WebCore::ContentChangeObserver::addObservedDOMTimer):
        (WebCore::ContentChangeObserver::removeObservedDOMTimer):

2019-02-25  John Wilander  <wilander@apple.com>

        Introduce and adopt new class RegistrableDomain for eTLD+1
        https://bugs.webkit.org/show_bug.cgi?id=194791
        <rdar://problem/48179240>

        Reviewed by Alex Christensen, Fujii Hironori, and Brent Fulgham.

        A new API test was added. Plenty of existing layout tests under
        http/tests/resourceLoadStatistics/ and http/tests/storageAccess/ test the code.

        This patch introduces and adopts a new class called WebCore::RegistrableDomain
        which represents a domain's eTLD+1 (effective top level domain plus one) and is
        the basis for the term "site," as in same-site. Other popular names include
        high-level domain, primary domain, and top privately controlled/owned domain.
        Effective top level domains are enumerated on the Public Suffix List
        (https://publicsuffix.org).

        This class just uses the full domain for when the Public Suffix List cannot help
        finding the registrable domain and for WebKit ports that haven't enabled
        PUBLIC_SUFFIX_LIST. It also uses the string "nullOrigin" as a representation
        for the null or unique origin (this matches how these origins were handled
        before).

        The implementation is a wrapper around a String and the functions and class
        members that now make use of this new class used to handle regular String
        objects which didn't help much in terms of type safety or guarantees that the
        string had already been converted to an eTLD+1.

        We've at least two bad bugs in the Storage Access API because of confusion
        between a URL's eTLD+1 and its host. The usage of WebCore::RegistrableDomain
        will prohibit such bugs in the future.

        Partitioning in WebKit also uses eTLD+1 to a large extent. I plan to adopt
        WebCore::RegistrableDomain for partitioning in a later patch.

        This patch also enhances parameter naming by:
        - Removing parts that refer to "primary" as in primaryDomain.
        - Replacing references to "TopPrivatelyControlledDomain" with "RegistrableDomain."
        - Replacing references to "TopPrivatelyOwnedDomain" with "RegistrableDomain."
        - Using the term "domain" consistently instead of e.g. "host."

        * WebCore.xcodeproj/project.pbxproj:
        * dom/Document.cpp:
        (WebCore::Document::hasRequestedPageSpecificStorageAccessWithUserInteraction):
        (WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction):
        * dom/Document.h:
        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaSessionTitle const):
        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::url const):
        (WebCore::AdClickAttribution::referrer const):
        (WebCore::AdClickAttribution::toString const):
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Source::Source):
        (WebCore::AdClickAttribution::Source::matches const):
        (WebCore::AdClickAttribution::Source::deleteValue):
        (WebCore::AdClickAttribution::Destination::Destination):
        (WebCore::AdClickAttribution::Destination::matches const):
        (WebCore::AdClickAttribution::Destination::deleteValue):
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
        (WebCore::ResourceLoadObserver::setLogUserInteractionNotificationCallback):
        (WebCore::ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback):
        (WebCore::ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback):
        (WebCore::ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback):
        (WebCore::ResourceLoadObserver::logSubresourceLoading):
        (WebCore::ResourceLoadObserver::logWebSocketLoading):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
        (WebCore::ResourceLoadObserver::logFontLoad):
        (WebCore::ResourceLoadObserver::logCanvasRead):
        (WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
        (WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
        (WebCore::ResourceLoadObserver::logScreenAPIAccessed):
        (WebCore::ResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
        (WebCore::ResourceLoadObserver::statisticsForOrigin):
        (WebCore::primaryDomain): Deleted.
        (WebCore::ResourceLoadObserver::ensureResourceStatisticsForPrimaryDomain): Deleted.
        * loader/ResourceLoadObserver.h:
        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::encode const):
        (WebCore::ResourceLoadStatistics::decode):
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
        (WebCore::ResourceLoadStatistics::primaryDomain): Deleted.
        * loader/ResourceLoadStatistics.h:
        (WebCore::ResourceLoadStatistics::ResourceLoadStatistics):
        * page/Page.cpp:
        (WebCore::Page::logNavigation):
        (WebCore::Page::mainFrameLoadStarted):
        * page/Page.h:
        * page/PerformanceMonitor.cpp:
        (WebCore::reportPageOverPostLoadResourceThreshold):
        * platform/RegistrableDomain.h: Added.
        (WebCore::RegistrableDomain::RegistrableDomain):
        (WebCore::RegistrableDomain::isEmpty const):
        (WebCore::RegistrableDomain::string const):
        (WebCore::RegistrableDomain::operator!= const):
        (WebCore::RegistrableDomain::operator== const):
        (WebCore::RegistrableDomain::matches const):
        (WebCore::RegistrableDomain::isolatedCopy const):
        (WebCore::RegistrableDomain::isHashTableDeletedValue const):
        (WebCore::RegistrableDomain::hash const):
        (WebCore::RegistrableDomain::RegistrableDomainHash::hash):
        (WebCore::RegistrableDomain::RegistrableDomainHash::equal):
        (WebCore::RegistrableDomain::encode const):
        (WebCore::RegistrableDomain::decode):
        * platform/network/NetworkStorageSession.cpp:
        (WebCore::NetworkStorageSession::shouldBlockThirdPartyCookies const):
        (WebCore::NetworkStorageSession::shouldBlockCookies const):
        (WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor):
        (WebCore::NetworkStorageSession::removePrevalentDomains):
        (WebCore::NetworkStorageSession::hasStorageAccess const):
        (WebCore::NetworkStorageSession::getAllStorageAccessEntries const):
        (WebCore::NetworkStorageSession::grantStorageAccess):
        (WebCore::getPartitioningDomain): Deleted.
        * platform/network/NetworkStorageSession.h:

2019-02-25  Chris Fleizach  <cfleizach@apple.com>

        AX: <footer> HTML5 tag not reading as ARIA Landmark to VoiceOver
        https://bugs.webkit.org/show_bug.cgi?id=190138
        <rdar://problem/44907695>

        Reviewed by Joanmarie Diggs.

        Make sure that footer elements use the right role depending on their context.
        If scoped to body, they become contentinfo. Otherwise they are just delineated by
        a footer subrole.

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::isLandmark const):
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
        (WebCore::AccessibilityRenderObject::isDescendantOfElementType const):
        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
        * accessibility/AccessibilityRenderObject.h:
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _accessibilityIsLandmarkRole:]):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper subrole]):

2019-02-25  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: IDBDatabase and IDBTransaction are leaked in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=194709

        Reviewed by Geoffrey Garen.

        When connection to IDB server is closed, IDBTransaction would abort without notifying IDBDatabase, so 
        IDBDatabase didn't clear its reference to IDBTransaction which created a reference cycle. 
 
        Also IDBTransaction didn't clear its reference to IDBRequest in this case and it led to another reference cycle
        between IDBOpenDBRequest and IDBTransaction.

        Test: storage/indexeddb/IDBObject-leak.html

        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::connectionToServerLost):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::IDBTransaction):
        (WebCore::IDBTransaction::~IDBTransaction):
        (WebCore::IDBTransaction::connectionClosedFromServer):
        * Modules/indexeddb/IDBTransaction.h:
        * testing/Internals.cpp:
        (WebCore::Internals::numberOfIDBTransactions const):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-25  Zalan Bujtas  <zalan@apple.com>

        Add missing stream parameter. Unreviewed.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::fired):

2019-02-25  Zalan Bujtas  <zalan@apple.com>

        Unreviewed build fix after r242032.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):

2019-02-20  Darin Adler  <darin@apple.com>

        Incorrect use of String::foldCase for font family names
        https://bugs.webkit.org/show_bug.cgi?id=194895

        Reviewed by Myles C. Maxfield.

        * platform/graphics/FontCascadeDescription.cpp:
        (WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing): Use
        familyNamesAreEqual instead of calling convertToASCIILowercase directly.
        (WebCore::FontCascadeDescription::familyNamesAreEqual): Use AtomicString's
        operator== when we want case sensitive family name comparisons. This is a special
        case to accomodate CoreText, which uses "."-prefix names for internal fonts that
        are treated case sensitively. (Ideally webpages would not use these fonts at all.)
        (WebCore::FontCascadeDescription::familyNameHash): Use AtomicString's existingHash
        when we want case sensitive family name hashing.
        (WebCore::FontCascadeDescription::foldedFamilyName): Take a String instead of an
        AtomicString so we can use this at an additional call site. Converting from an
        AtomicString to a String if free and automatic at the existing call sites. Use
        convertToASCIILowercase instead of foldCase for three reasons: 1) Other functions
        here are folding only ASCII case by using ASCIICaseInsensitiveHash, and this one
        must be consistent. 2) this is considerably faster, and 3) font family names don't
        need arbitrary Unicode case folding, it's only A-Z that should be folded.
        * platform/graphics/FontCascadeDescription.h: Take a String instead of AtomicString
        in the foldedFamilyName function.

        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontDatabase::collectionForFamily): Instead of calling foldCase, use
        FontCascadeDescription::foldedFamilyName to correctly fold font family names.

2019-02-25  Charlie Turner  <cturner@igalia.com>

        [EME][GStreamer] Replace caps field loop with gst_structure_remove_fields
        https://bugs.webkit.org/show_bug.cgi?id=194992

        Reviewed by Xabier Rodriguez-Calvar.

        Refactoring, no new tests.

        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (transformCaps): Simplify the code a little. The idea to use this
        utility function came from a review upstream here:
        https://gitlab.freedesktop.org/gstreamer/gst-devtools/merge_requests/67

2019-02-25  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Batch player duration updates
        https://bugs.webkit.org/show_bug.cgi?id=194220

        Reviewed by Xabier Rodriguez-Calvar.

        This saves up a ton of CPU cycles doing layout unnecessarily when all
        the appended frames extend the duration of the movie, like in
        YTTV 2018 59.DASHLatencyVP9.

        This patch is an optimization that introduces no new behavior.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::blockDurationChanges):
        (WebCore::MediaPlayerPrivateGStreamerMSE::unblockDurationChanges):
        (WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:

2019-02-25  Miguel Gomez  <magomez@igalia.com>

        [WPE] Add support for holepunch using an external video player
        https://bugs.webkit.org/show_bug.cgi?id=194899

        Reviewed by Xabier Rodriguez-Calvar.

        Implement the holepunch feature to allow playback using an external player. This creates
        a new dummy MediaPlayerPrivateHolePunch that accepts only the type "video/holepunch", and
        whose goal is to just draw a transparent rectangle in the position where the video should be.
        This can be used to allow a player placed on a lower plane than the browser to become visible.

        Added ManualTest wpe/video-player-holepunch-external.html to test the feature.

        * PlatformWPE.cmake:
        * platform/HolePunch.cmake: Added.
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::buildMediaEnginesVector):
        * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: Added.
        (WebCore::MediaPlayerPrivateHolePunch::MediaPlayerPrivateHolePunch):
        (WebCore::MediaPlayerPrivateHolePunch::~MediaPlayerPrivateHolePunch):
        (WebCore::MediaPlayerPrivateHolePunch::platformLayer const):
        (WebCore::MediaPlayerPrivateHolePunch::naturalSize const):
        (WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer):
        (WebCore::MediaPlayerPrivateHolePunch::swapBuffersIfNeeded):
        (WebCore::MediaPlayerPrivateHolePunch::proxy const):
        (WebCore::mimeTypeCache):
        (WebCore::MediaPlayerPrivateHolePunch::getSupportedTypes):
        (WebCore::MediaPlayerPrivateHolePunch::supportsType):
        (WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine):
        (WebCore::MediaPlayerPrivateHolePunch::notifyReadyState):
        * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: Added.
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
        (WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):

2019-02-24  Zalan Bujtas  <zalan@apple.com>

        Introduce ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=194977
        <rdar://problem/48338115>

        Reviewed by Simon Fraser.

        This patch is about piping through all the related WK* calls. 

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::updateStyleIfNeeded):
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        * loader/FrameLoader.cpp:
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/Frame.cpp:
        (WebCore::Frame::willDetachPage):
        * page/Page.h:
        (WebCore::Page::contentChangeObserver):
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateElementRenderer):
        (WebCore::CheckForVisibilityChange::CheckForVisibilityChange):
        (WebCore::CheckForVisibilityChange::~CheckForVisibilityChange):

2019-02-24  Simon Fraser  <simon.fraser@apple.com>

        Migrate from "fixedPositionRect" to "layoutViewport" in the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=194984

        Reviewed by Sam Weinig.

        Rename "fixedPositionRect" to "layoutViewport" in scrolling tree code.

        Remove ScrollingTree::fixedPositionRect() which was only used on iOS, to fetch the
        current layout viewport rect. Instead, set the layout viewport on the root
        node in ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling().

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling):
        (WebCore::ScrollingTree::viewportChangedViaDelegatedScrolling): Deleted.
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::updateLayersAfterAncestorChange):
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::updateLayersAfterAncestorChange):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.h:
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange):
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h:
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::updateLayersAfterAncestorChange):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterAncestorChange):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):

2019-02-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Change the InspectorOverlay to use native rather than canvas
        https://bugs.webkit.org/show_bug.cgi?id=105023
        <rdar://problem/13443692>

        Reviewed by Brian Burg.

        Should be no change in observed functionality.

        * inspector/InspectorOverlay.h:
        * inspector/InspectorOverlay.cpp:
        (WebCore::truncateWithEllipsis): Added.
        (WebCore::localPointToRootPoint): Added.
        (WebCore::contentsQuadToCoordinateSystem):
        (WebCore::effectiveElementForNode): Added.
        (WebCore::quadToPath): Added.
        (WebCore::drawOutlinedQuadWithClip): Added.
        (WebCore::drawOutlinedQuad): Added.
        (WebCore::drawFragmentHighlight): Added.
        (WebCore::drawShapeHighlight): Added.
        (WebCore::InspectorOverlay::paint):
        (WebCore::InspectorOverlay::setIndicating):
        (WebCore::InspectorOverlay::shouldShowOverlay const):
        (WebCore::InspectorOverlay::update):
        (WebCore::InspectorOverlay::setShowPaintRects): Added.
        (WebCore::InspectorOverlay::showPaintRect):
        (WebCore::InspectorOverlay::updatePaintRectsTimerFired):
        (WebCore::InspectorOverlay::drawNodeHighlight):
        (WebCore::InspectorOverlay::drawQuadHighlight):
        (WebCore::InspectorOverlay::drawPaintRects):
        (WebCore::InspectorOverlay::drawBounds): Added.
        (WebCore::InspectorOverlay::drawRulers):
        (WebCore::InspectorOverlay::drawElementTitle): Added.
        (WebCore::contentsQuadToPage): Deleted.
        (WebCore::InspectorOverlay::setPausedInDebuggerMessage): Deleted.
        (WebCore::buildObjectForPoint): Deleted.
        (WebCore::buildObjectForRect): Deleted.
        (WebCore::buildArrayForQuad): Deleted.
        (WebCore::buildObjectForHighlight): Deleted.
        (WebCore::buildObjectForSize): Deleted.
        (WebCore::InspectorOverlay::setShowingPaintRects): Deleted.
        (WebCore::buildArrayForRendererFragments): Deleted.
        (WebCore::localPointToRoot): Deleted.
        (WebCore::appendPathCommandAndPoints): Deleted.
        (WebCore::appendPathSegment): Deleted.
        (WebCore::buildObjectForShapeOutside): Deleted.
        (WebCore::buildObjectForElementData): Deleted.
        (WebCore::InspectorOverlay::buildHighlightObjectForNode const): Deleted.
        (WebCore::InspectorOverlay::buildObjectForHighlightedNodes const): Deleted.
        (WebCore::InspectorOverlay::drawPausedInDebuggerMessage): Deleted.
        (WebCore::InspectorOverlay::overlayPage): Deleted.
        (WebCore::InspectorOverlay::forcePaint): Deleted.
        (WebCore::InspectorOverlay::reset): Deleted.
        (WebCore::evaluateCommandInOverlay): Deleted.
        (WebCore::InspectorOverlay::evaluateInOverlay): Deleted.
        (WebCore::InspectorOverlay::freePage): Deleted.

        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::disable):
        (WebCore::InspectorPageAgent::setShowPaintRects):
        Drive-by: rename `setShowingPaintRects` to better match the protocol.

        * inspector/agents/page/PageDebuggerAgent.h:
        * inspector/agents/page/PageDebuggerAgent.cpp:
        (WebCore::PageDebuggerAgent::PageDebuggerAgent):
        (WebCore::PageDebuggerAgent::setOverlayMessage): Deleted.
        Remove `Debugger.setOverlayMessage` command as it hasn't been used and is no longer supported.

        * inspector/InspectorController.h:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::createLazyAgents):
        (WebCore::InspectorController::disconnectFrontend):
        (WebCore::InspectorController::disconnectAllFrontends):
        (WebCore::InspectorController::buildObjectForHighlightedNodes const): Deleted.

        * testing/Internals.h:
        * testing/Internals.idl:
        * testing/Internals.cpp:
        (WebCore::Internals::inspectorHighlightObject): Deleted.

        * inspector/InspectorOverlayPage.css: Removed.
        * inspector/InspectorOverlayPage.html: Removed.
        * inspector/InspectorOverlayPage.js: Removed.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:

2019-02-20  Darin Adler  <darin@apple.com>

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * dom/Document.cpp:
        (WebCore::Document::lastModified const): Use makeString and pad.
        * html/FTPDirectoryDocument.cpp:
        (WebCore::processFileDateString): Ditto.

        * mathml/MathMLElement.cpp:
        (WebCore::convertToPercentageIfNeeded): Use makeString and FormattedNumber.

        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::ResourceUsageOverlay::platformDraw): Use makeString and pad.

        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::cpuUsageString): Use makeString, FormattedNumber, and pad.
        (WebCore::gcTimerString): Use String::number.

        * platform/DateComponents.cpp:
        (WebCore::DateComponents::toStringForTime const): Use makeString and pad.
        (WebCore::DateComponents::toString const): Ditto.

        * platform/LocalizedStrings.cpp: Removed comment that mentioned String::format,
        and that was also inaccurate.

        * platform/audio/HRTFElevation.cpp:
        (WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
        Use makeString and pad.
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText): Ditto.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo): Ditto.
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::formatMediaControlsTime const): Ditto.

2019-02-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Remove user agent quirk for washingtonpost.com
        https://bugs.webkit.org/show_bug.cgi?id=194981

        Reviewed by Žan Doberšek.

        Remove user agent quirk for washingtonpost.com because we support JPEG 2000 now.

        * platform/UserAgentQuirks.cpp:
        (WebCore::urlRequiresChromeBrowser):

2019-02-23  Simon Fraser  <simon.fraser@apple.com>

        Remove remnants of iOS WK1 scrolling tree code
        https://bugs.webkit.org/show_bug.cgi?id=194980

        Reviewed by Sam Weinig.

        Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated,
        to reduce maintenance costs and simplify.

        Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS
        since that was the only concrete subclass, removing code which never applies to iOS WK2
        (e.g. the synchronous scrolling code path).

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/FrameView.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::handleWheelEvent):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::updateLayersAfterDelegatedScroll): Deleted.
        (WebCore::ScrollingTreeScrollingNode::scrollableAreaSize const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::totalContentsSize const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsets const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::verticalSnapOffsets const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsetRanges const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::verticalSnapOffsetRanges const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::currentHorizontalSnapPointIndex const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::currentVerticalSnapPointIndex const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::setCurrentHorizontalSnapPointIndex): Deleted.
        (WebCore::ScrollingTreeScrollingNode::setCurrentVerticalSnapPointIndex): Deleted.
        (WebCore::ScrollingTreeScrollingNode::useDarkAppearanceForScrollbars const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::reachableContentsSize const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::parentRelativeScrollableRect const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::scrollOrigin const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::totalContentsSizeForRubberBand const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::setTotalContentsSizeForRubberBand): Deleted.
        (WebCore::ScrollingTreeScrollingNode::horizontalScrollElasticity const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::verticalScrollElasticity const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::hasEnabledHorizontalScrollbar const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::hasEnabledVerticalScrollbar const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::canHaveScrollbars const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::expectsWheelEventTestTrigger const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const): Deleted.
        (WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const): Deleted.
        * page/scrolling/ios/ScrollingCoordinatorIOS.h: Removed.
        * page/scrolling/ios/ScrollingCoordinatorIOS.mm: Removed.
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Removed.
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Removed.
        * page/scrolling/ios/ScrollingTreeIOS.cpp: Removed.
        * page/scrolling/ios/ScrollingTreeIOS.h: Removed.
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):

2019-02-23  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Buffer updates part 1: async mapping functions, unmap, and destroy
        https://bugs.webkit.org/show_bug.cgi?id=194665

        Reviewed by Dean Jackson.

        Test: map-write-buffers.html. Other tests updated to match new API.

        * Modules/webgpu/WebGPUBindGroupDescriptor.cpp: Added.
        (WebCore::validateBufferBindingType): Ensure buffer binding usages match the binding type.
        (WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const): Logic moved out from WebGPUDevice.cpp.
        * Modules/webgpu/WebGPUBindGroupDescriptor.h:
        * Modules/webgpu/WebGPUBuffer.cpp: Added GPUBuffer functionality.
        (WebCore::WebGPUBuffer::create):
        (WebCore::WebGPUBuffer::WebGPUBuffer):
        (WebCore::WebGPUBuffer::mapReadAsync):
        (WebCore::WebGPUBuffer::mapWriteAsync):
        (WebCore::WebGPUBuffer::unmap):
        (WebCore::WebGPUBuffer::destroy):
        (WebCore::WebGPUBuffer::rejectOrRegisterPromiseCallback): Register a mapping request on the GPUBuffer, if valid.
        * Modules/webgpu/WebGPUBuffer.h:
        (WebCore::WebGPUBuffer::buffer const):
        (WebCore::WebGPUBuffer::mapping const): Deleted.
        * Modules/webgpu/WebGPUBuffer.idl: Update to latest API and enable every function except setSubData.
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::beginRenderPass): Renamed descriptor conversion method.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBuffer const): Update to non-nullable return type.
        (WebCore::WebGPUDevice::createBindGroup const): Move descriptor validation logic to descriptor implementation.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPURenderPassDescriptor.cpp:
        (WebCore::WebGPURenderPassDescriptor::asGPURenderPassDescriptor const): Renamed from validateAndConvertToGPUVersion.
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers): Add validation for submitted buffers.
        * platform/graphics/gpu/GPUBuffer.cpp: Added.
        (WebCore::GPUBuffer::PendingMappingCallback::PendingMappingCallback): New struct for retaining a reference to mapping callbacks.
        * platform/graphics/gpu/GPUBuffer.h: Add functionality to retain callbacks and usage bits.
        (WebCore::GPUBuffer::isVertex const):
        (WebCore::GPUBuffer::isUniform const):
        (WebCore::GPUBuffer::isStorage const):
        (WebCore::GPUBuffer::isReadOnly const):
        (WebCore::GPUBuffer::PendingMapPromise::create):
        (WebCore::GPUBuffer::isMappable const):
        (WebCore::GPUBuffer::isMapWriteable const):
        (WebCore::GPUBuffer::isMapReadable const):
        (WebCore::GPUBuffer::mapping const): Deleted.
        * platform/graphics/gpu/GPUBufferUsage.h: enum class cannot be logical ORed together.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBuffer const): Renamed from createBuffer. 
        (WebCore::GPUDevice::createBuffer const): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::tryCreateSharedBuffer): Attempt to create a MTLBuffer with shared memory.
        (WebCore::GPUBuffer::tryCreate): No longer use Gigacage-allocated memory for MTLBuffer.
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::~GPUBuffer):
        (WebCore::GPUBuffer::registerMappingCallback): Register the provided callback to be executed when the staging buffer can be safely exposed.
        (WebCore::GPUBuffer::stagingBufferForRead): Prepare the arrayBuffer for reading and run the mapping callback.
        (WebCore::GPUBuffer::stagingBufferForWrite): Ditto, but for writing.
        (WebCore::GPUBuffer::unmap): If needed, copy the staging ArrayBuffer to the MTLBuffer. Unregister any mapping callback.
        (WebCore::GPUBuffer::destroy): Stub implementation for now. Frees the MTLBuffer as soon as possible.
        (WebCore::GPUBuffer::create): Deleted.
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Ensure only read-only GPUBuffers are used as read-only on the GPU.

        Add symbols for new files:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-02-23  Keith Miller  <keith_miller@apple.com>

        Add new mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=194955

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2019-02-23  chris fleizach  <cfleizach@apple.com>

        AX: WebKit is incorrectly mapping the <meter> element to progressbar
        https://bugs.webkit.org/show_bug.cgi?id=164051
        <rdar://problem/29055615>

        Reviewed by Joanmarie Diggs.

        Add a specific role for meter and map that to the appropriate mac role. 

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::canHaveChildren const):
        (WebCore::AccessibilityNodeObject::isProgressIndicator const):
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::accessibleNameDerivesFromContent const):
        (WebCore::AccessibilityObject::isRangeControl const):
        (WebCore::AccessibilityObject::computedRoleString const):
        * accessibility/AccessibilityObjectInterface.h:
        * accessibility/AccessibilityProgressIndicator.cpp:
        (WebCore::AccessibilityProgressIndicator::roleValue const):
        * accessibility/AccessibilityProgressIndicator.h:
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::shouldFocusActiveDescendant const):
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (createAccessibilityRoleMap):

2019-02-22  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in SWServerJobQueue::runNextJobSynchronously
        https://bugs.webkit.org/show_bug.cgi?id=194974

        Reviewed by Geoffrey Garen.

        We suspect the crash is happening due to m_jobQueue being empty in runNextJobSynchronously
        or there is a timer heap corruption again :(

        Exit early when m_jobQueue is empty. Also add a debug assert that this should never happen
        but convert an existing release assert to a debug assert since this appears to be hitting
        too frequently in wild.

        * workers/service/server/SWServerJobQueue.cpp:
        (WebCore::SWServerJobQueue::runNextJobSynchronously):

2019-02-22  Simon Fraser  <simon.fraser@apple.com>

        Clean up the setScrollPosition/setScrollPositionWithoutContentEdgeConstraints confusion in the scrolling tree nodes
        https://bugs.webkit.org/show_bug.cgi?id=194968

        Reviewed by Antti Koivisto.

        Having both setScrollPosition() and setScrollPositionWithoutContentEdgeConstraints() is confusing because
        you can't tell which is the bottleneck. So add a 'clamp' parameter to setScrollPosition() and merge them.

        ScrollingTreeFrameScrollingNodeMac::setScrollPosition() replicates a bit of code but future cleanups will
        reduce that.

        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::setScrollPosition): Deleted. This was the same as the base class method.
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::setScrollPosition):
        (WebCore::ScrollingTreeScrollingNode::clampScrollPosition const):
        (WebCore::ScrollingTreeScrollingNode::scrollBy):
        (WebCore::ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints): Deleted.
        (WebCore::ScrollingTreeScrollingNode::scrollByWithoutContentEdgeConstraints): Deleted.
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints): Deleted. Did nothing.
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):
        * platform/PlatformWheelEvent.h:
        (WebCore::PlatformWheelEvent::delta const):
        * platform/ScrollTypes.h:

2019-02-22  Eric Liang  <ericliang@apple.com>

        AX: Treat AXChildrenInNavigationOrder as AXChildren before adding support for aria-flowto
        https://bugs.webkit.org/show_bug.cgi?id=194923

        Reviewed by Chris Fleizach.

        Added AXChildrenInNavigationOrder attribute that returns the same array as from AXChildren. It prevents AppKit from reordering elements from the fallback AXChildren attribute.

        Test: accessibility/mac/children-in-navigation-order-returns-children.html

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

2019-02-22  Tim Horton  <timothy_horton@apple.com>

        ProcessSwap.PageOverlayLayerPersistence fails on iOS and in debug builds
        https://bugs.webkit.org/show_bug.cgi?id=194963

        Reviewed by Dean Jackson.

        Tested by existing failing API test.

        * page/Page.cpp:
        (WebCore::Page::installedPageOverlaysChanged): Deleted.
        * page/Page.h:
        (WebCore::Page::pageOverlayController):
        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::installedPageOverlaysChanged):
        (WebCore::PageOverlayController::detachViewOverlayLayers):
        (WebCore::PageOverlayController::installPageOverlay):
        (WebCore::PageOverlayController::uninstallPageOverlay):
        (WebCore::PageOverlayController::willDetachRootLayer): Deleted.
        * page/PageOverlayController.h:
        As intended by r240940, move installedPageOverlaysChanged to PageOverlayController.
        Also, make it ignore isInWindow state; otherwise, if you install a overlay
        and then come into window, nothing installs the root layer. There is no
        need for this code to follow in-window state manually anymore since
        the DrawingArea and RenderLayerCompositor just hook the layers up when needed.

        Make some methods private, and make detachViewOverlayLayers only touch
        *view* overlays, so that we don't detach the document-relative root
        layer when you drop to having no view overlays. This maintains
        existing behavior because nothing was calling PageOverlayController::detachViewOverlayLayers.

        Now there are no callers of willDetachRootLayer, so remove it.

2019-02-22  Andy Estes  <aestes@apple.com>

        [iOS] Break a reference cycle between PreviewLoader and ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194964
        <rdar://problem/48279441>

        Reviewed by Alex Christensen.

        When a document's QuickLook preview is loaded, a reference cycle is created between
        PreviewLoader and ResourceLoader. Break the cycle by clearing m_previewLoader in
        ResourceLoader::releaseResources().

        Fixes leaks detected by `run-webkit-tests --leaks LayoutTests/quicklook`.

        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::releaseResources):

2019-02-22  Sihui Liu  <sihui_liu@apple.com>

        Crash under IDBServer::IDBConnectionToClient::identifier() const
        https://bugs.webkit.org/show_bug.cgi?id=194843
        <rdar://problem/48203102>

        Reviewed by Geoffrey Garen.

        UniqueIDBDatabase should ignore requests from connections that are already closed.

        Tests are hard to create without some tricks on UniqueIDBDatabase so this fix is verified manually. 
        One test is created by adding delay to UniqueIDBDatabase::openBackingStore on the background thread to make sure
        disconnection of web process happens before UniqueIDBDatabase::didOpenBackingStore, because didOpenBackingStore
        may start a version change transaction and ask for identifier from the connection that is already gone.

        * Modules/indexeddb/server/IDBConnectionToClient.cpp:
        (WebCore::IDBServer::IDBConnectionToClient::connectionToClientClosed):
        * Modules/indexeddb/server/IDBConnectionToClient.h:
        (WebCore::IDBServer::IDBConnectionToClient::isClosed):
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::clearStalePendingOpenDBRequests):
        (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
        (WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:

2019-02-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Input type "formatSetInlineTextDirection" is dispatched when changing paragraph-level text direction
        https://bugs.webkit.org/show_bug.cgi?id=194703
        <rdar://problem/48111775>

        Reviewed by Ryosuke Niwa.

        Currently, when changing text direction, WebKit always sends input events of type formatSetInlineTextDirection,
        even when changing paragraph text direction. Instead, we should be emitting formatSetBlockTextDirection in this
        scenario. This is problematic when using the context menus on macOS to change writing direction, since changing
        "Selection Direction" is currently indistinguishable from changing "Paragraph Direction".

        To fix this, we split EditAction::SetWritingDirection into EditAction::SetInlineWritingDirection and
        EditAction::SetBlockWritingDirection, which emit inline and block text direction input events, respectively.

        Tests: fast/events/before-input-events-prevent-block-text-direction.html
               fast/events/before-input-events-prevent-inline-text-direction.html

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::apply):
        * editing/EditAction.cpp:
        (WebCore::undoRedoLabel):
        * editing/EditAction.h:
        * editing/EditCommand.cpp:
        (WebCore::inputTypeNameForEditingAction):
        * editing/Editor.cpp:
        (WebCore::inputEventDataForEditingStyleAndAction):
        (WebCore::Editor::setBaseWritingDirection):
        * editing/EditorCommand.cpp:
        (WebCore::executeMakeTextWritingDirectionLeftToRight):
        (WebCore::executeMakeTextWritingDirectionNatural):
        (WebCore::executeMakeTextWritingDirectionRightToLeft):

2019-02-22  Rob Buis  <rbuis@igalia.com>

        Remove stripLeadingAndTrailingWhitespace from MathMLElement.cpp
        https://bugs.webkit.org/show_bug.cgi?id=160172

        Reviewed by Frédéric Wang.

        Remove stripLeadingAndTrailingWhitespace and use stripLeadingAndTrailingHTTPSpaces
        from HTTPParsers instead.

        No new tests, already covered by MathML tests.

        * mathml/MathMLElement.cpp:
        (WebCore::MathMLElement::stripLeadingAndTrailingWhitespace): Deleted.
        * mathml/MathMLElement.h:
        * mathml/MathMLPresentationElement.cpp:
        (WebCore::MathMLPresentationElement::parseMathMLLength):
        * mathml/MathMLTokenElement.cpp:
        (WebCore::MathMLTokenElement::convertToSingleCodePoint):

2019-02-22  Eric Carlson  <eric.carlson@apple.com>

        Update some media logging
        https://bugs.webkit.org/show_bug.cgi?id=194915

        Reviewed by Jer Noble.

        No new tests, no functional change.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::evictCodedFrames):
        (WebCore::SourceBuffer::provideMediaData):
        (WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued):

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::checkPlaybackTargetCompatablity):
        (WebCore::HTMLMediaElement::loadResource):
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        (WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const):
        (WebCore::HTMLMediaElement::seekTask):
        (WebCore::HTMLMediaElement::playInternal):
        (WebCore::HTMLMediaElement::pauseInternal):
        (WebCore::HTMLMediaElement::setLoop):
        (WebCore::HTMLMediaElement::setControls):
        (WebCore::HTMLMediaElement::sourceWasRemoved):

        * html/MediaElementSession.cpp:
        (WebCore::convertEnumerationToString):

        * html/MediaElementSession.h:
        (WTF::LogArgument<WebCore::MediaPlaybackDenialReason>::toString):

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):

2019-02-22  Rob Buis  <rbuis@igalia.com>

        Fix unitless usage of mathsize
        https://bugs.webkit.org/show_bug.cgi?id=194940

        Reviewed by Frédéric Wang.

        Convert unitless lengths to percentage values to correct the computed
        font size.

        * mathml/MathMLElement.cpp:
        (WebCore::convertToPercentageIfNeeded):
        (WebCore::MathMLElement::collectStyleForPresentationAttribute):

2019-02-21  Simon Fraser  <simon.fraser@apple.com>

        Hardcode Visual Viewports on everywhere except iOS WK1
        https://bugs.webkit.org/show_bug.cgi?id=194928

        Reviewed by Zalan Bujtas.

        Remove the WK1 and WK2 preferences and MiniBrowser menu item for "visual viewports",
        change the default value of the Setting to 'true', and hardcode WebView on iOS to
        set it to false. The setting has shipped for several years and there's no need to turn
        it off now.

        Similarly, disable the "Visual Viewport API" on iOS WK1, since it makes no sense if
        Visual Viewports are not enabled.
        
        Remove the "visualViewportEnabled" flag and unused code paths from scrolling tree code
        that only runs in WK2

        * page/Settings.yaml:
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        (WebCore::AsyncScrollingCoordinator::visualViewportEnabled const): Deleted.
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
        (WebCore::ScrollingStateFrameScrollingNode::setVisualViewportEnabled): Deleted.
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::visualViewportEnabled const): Deleted.
        (WebCore::ScrollingTree::setVisualViewportEnabled): Deleted.
        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):

2019-02-21  Darin Adler  <darin@apple.com>

        Some refinements for Node and Document
        https://bugs.webkit.org/show_bug.cgi?id=194764

        Reviewed by Ryosuke Niwa.

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::press): Use shadowHost instead of
        deprecatedShadowAncestorNode.
        (WebCore::AccessibilityObject::axObjectCache const): Tweak coding style.
        (WebCore::AccessibilityObject::focusedUIElement const): Use existing page
        function to streamline.

        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::accessKey const): Use
        attributeWithoutSynchronization for efficiency and consistency with other
        code working with the accesskey attribute.

        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::childrenChanged): Added call to
        invalidateAccessKeyCache, replacing old scheme tied to style recalculation.

        * dom/DecodedDataDocumentParser.cpp:
        (WebCore::DecodedDataDocumentParser::appendBytes): Update for name and return
        type change of createDecoderIfNeeded to decoder.
        (WebCore::DecodedDataDocumentParser::flush): Ditto.

        * dom/Document.cpp:
        (WebCore::Document::elementForAccessKey): Renamed from getElementForAccessKey
        to match WebKit coding style. Changed to use unique_ptr instead of separate
        boolean to keep track of map validity status.
        (WebCore::Document::buildAccessKeyCache): Renamed from buildAccessKeyMap to
        clarify that this is a cache. Changed to use composedTreeDescendants rather
        than explicit calls to shadowRoot. Use add instead of set so that first element
        in document order wins, instead of last element in document order. Updated
        to make a new map in a new unique_ptr instead of populating a map.
        (WebCore::Document::invalidateAccessKeyCacheSlowCase): Renamed from
        invalidateAccessKeyMap, and left an inline part in the header so the fast case
        of quickly checking for a null pointer can be inlined.
        (WebCore::Document::doctype const): Use downcast instead of static_cast.
        (WebCore::Document::scheduleStyleRecalc): Moved call to invalidateAccessKeyMap
        from here to childrenChanged and accesskey attribute change handling.
        (WebCore::Document::processFormatDetection): Set m_isTelephoneNumberParsingAllowed
        directly since this is the only place that does it and we don't need to factor
        that one line of code into a function.
        (WebCore::Document::getOverrideStyle): Moved to header since it's just a stub
        that always returns nullptr and can be inlined.
        (WebCore::Document::setIsTelephoneNumberParsingAllowed): Deleted.
        (WebCore::Document::ensureTemplateDocument): Removed nullptr frame argument to
        the create function, since Document::create now always involves no frame.
        (WebCore::Document::didAssociateFormControl): Changed argument type to a reference
        and simplified the logic with a local variable.
        (WebCore::Document::didAssociateFormControlsTimerFired): Simplified the null
        checks and rearranged things so that m_associatedFormControls will always
        get cleared even if the document is no longer associated with a page.

        * dom/Document.h: Removed unnnecessary explicit values for enumerations (first
        value is always zero, etc.) and formatted simple enumerations in a single line
        for easier reading. Moved Document::create fucntion bodies out of line, removed
        the frame argument from the simple "create with URL" overload and made the frame
        argument for createNonRenderedPlaceholder be a reference rather than a pointer.
        Renamed getElementByAccessKey to elementForAccessKey, invalidateAccessKeyMap to
        invalidateAccessKeyCache, buildAccessKeyMap to buildAccessKeCache,
        m_elementsByAccessKey to m_accessKeyCache and changed its type.
        Removed bogus "DOM methods" comment, unused setParserFeature friend declaration,
        setIsTelephoneNumberParsingAllowed function, and m_accessKeyMapValid flag.

        * dom/Document.idl: Added comment highlighting that getOverrideStyle is just a
        placeholder returning null.

        * dom/Element.cpp:
        (WebCore::Element::attributeChanged): Call invalidateAccessKeyCache when the
        value of the accesskey attribute is changed. Also moved the class attribute code
        so the attributes here are in alphabetical order (only class and id were out of
        alphabetical order).

        * dom/Node.cpp:
        (WebCore::Node::isDescendantOrShadowDescendantOf const): Rewrote to no longer
        use deprecatedShadowAncestorNode and used boolean operators to make it a
        single line and easier to understand. Also added a FIXME since the
        containsIncludingShadowDOM function is so similar, yet differently written.
        (WebCore::Node::contains const): Rewrote as a single line to make this easier
        to read and to *slightly* improve the speed in the "this == node" case.
        (WebCore::Node::containsIncludingHostElements const): Use downcast.
        (WebCore::Node::deprecatedShadowAncestorNode const): Deleted.

        * dom/Node.h: Deleted now-unused deprecatedShadowAncestorNode.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment): Rewrote to use shadowHost
        instead of deprecatedShadowAncestorNode.

        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::resetFormOwner): Pass reference to
        didAssociateFormControl.
        (WebCore::FormAssociatedElement::formAttributeChanged): Ditto.

        * html/HTMLAreaElement.cpp:
        (WebCore::HTMLAreaElement::parseAttribute): Removed special case for accesskey
        attribute, because we want to call the base class parseAttribute in that case.

        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::insertedIntoAncestor): Pass reference to
        didAssociateFormControl.

        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::parseAttribute): Removed special case for accesskey
        attribute with mysterious FIXME, because we want to call the base class
        parseAttribute in that case. The old code had no effect before; the access key
        logic would still find the attribute; if the goal is to ignore the attribute
        for these elements we will need a different solution.
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::parseAttribute): Ditto.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::DocumentLoader): Removed code that was always passing
        nullptr as the frame for the newly created DocumentWriter. It used m_frame, but
        m_frame was always null.
        (WebCore::DocumentLoader::attachToFrame): Pass reference to DocumentWriter::setFrame.

        * loader/DocumentWriter.cpp:
        (WebCore::DocumentWriter::DocumentWriter): Deleted. The old version set m_frame to
        the passed in frame, which was always nullptr, and initialized some booleans and an
        enumeration, which are now initialized in the class definition.
        (WebCore::DocumentWriter::createDocument): Pass a reference for the frame.
        (WebCore::DocumentWriter::begin): Updated now that State is an enum class.
        (WebCore::DocumentWriter::decoder): Renamed from createDecoderIfNeeded and changed
        to return a reference.
        (WebCore::DocumentWriter::addData): Use RELEASE_ASSERT instead of if/CRASH and
        updated now that State is an enum class.
        (WebCore::DocumentWriter::insertDataSynchronously): Updated now that State is an
        enum class.
        (WebCore::DocumentWriter::end): Ditto.

        * loader/DocumentWriter.h: Removed unneeded include and forward declaration.
        Removed the frame pointer argument to the constructor, caller was always passing a
        nullptr. Changed argument to setFrame to be a reference. Renamed createDecoderIfNeeded
        to decoder and changed it to return a reference. Initialized m_frame,
        m_hasReceivedSomeData, m_encodingWasChosenByUser, and m_state here so we don't need
        to initialize them in a constructor. Renamed the enum from WriterState to State since
        it's a member of DocumentWriter already, and made it an enum class rather than ending
        each enumeration value with WritingState.

        * page/DragController.cpp:
        (WebCore::isEnabledColorInput): Removed boolean argument setToShadowAncestor. The
        one caller that formerly passed true now calls the new hasEnabledColorInputAsShadowHost
        function instead.
        (WebCore::hasEnabledColorInputAsShadowHost): Added.
        (WebCore::elementUnderMouse): Use shadowHost instead of deprecatedShadowAncestorNode.
        Also added FIXME since it seems this should instead be using parentElementInComposedTree.
        (WebCore::DragController::concludeEditDrag): Removed "false" argument to isEnabledColorInput.
        (WebCore::DragController::canProcessDrag): Removed "true" argument to isEnabledColorInput
        and added call to hasEnabledColorInputAsShadowHost. Also put the value of the node to drag
        into a local variable to simplify code.
        (WebCore::DragController::draggableElement const): Removed "false" argument to isEnabledColorInput.

        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleAccessKey): Update name of elementForAccessKey.

        * page/FocusController.cpp:
        (WebCore::clearSelectionIfNeeded): Use shadowHost instead of deprecatedShadowAncestorNode.

        * workers/service/context/ServiceWorkerThreadProxy.cpp:
        (WebCore::createPageForServiceWorker): Pass reference instead of pointer for frame to
        Document::createNonRenderedPlaceholder.

2019-02-21  Daniel Bates  <dabates@apple.com>

        Same Site Lax cookies are not sent with cross-site redirect from client-initiated load
        https://bugs.webkit.org/show_bug.cgi?id=194906
        <rdar://problem/44305947>

        Reviewed by Brent Fulgham.

        Ensure that a request for a top-level navigation is annotated as such regardless of whether
        the request has a computed Same Site policy.

        "New loads" initiated by a the client (Safari) either by API or a human either explicitly
        typing a URL in the address bar or Command + clicking a hyperlink to open it in a new window/tab
        are always considered Same Site. This is by definition from the spec. [1] as we aren't navigating
        from an existing page. (Command + click should be thought of as a convenience to the user from
        having to copy the hyperlink's URL, create a new window, and paste the URL into the address bar).
        Currently the frame loader marks a request as a top-level navigation if and only if the request
        does not have a pre-computed Same Site policy. However, "New loads" have a pre-computed Same Site
        policy. So, these loads would never be marked as a top-level navigation by the frame loading code.
        Therefore, if the "new load" turned out to be a cross-site redirect then WebKit would incorrectly
        tell the networking stack that the load was a cross-site, non-top-level navigation, and per the
        Same Site spec [2], the networking stack would not send Same Site Lax cookies. Instead,
        WebKit should unconditionally ensure that requests are marked as a top-level navigation, if applicable.

        [1] See Note for (1) in  <https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.2>
        [2] <https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02#section-5.3.7.1>

        Test: http/tests/cookies/same-site/user-load-cross-site-redirect.php

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::addExtraFieldsToRequest): Unconditionally update the request's top-
        level navigation bit.
        * platform/network/ResourceRequestBase.cpp:
        (WebCore::ResourceRequestBase::setAsIsolatedCopy): Unconditionally copy a request's top-
        level navigation bit.

2019-02-21  Per Arne Vollan  <pvollan@apple.com>

        Layout Test fast/text/international/khmer-selection.html is crashing
        https://bugs.webkit.org/show_bug.cgi?id=191368

        Reviewed by Brent Fulgham.

        GlyphBuffer's offset array wasn't getting filled by UniscribeController.
        Our underlining code requires this array.

        Uniscribe gives us a character -> glyph mapping, so we just have to compute
        the inverse and give it to the GlyphBuffer.

        This patch is written by Myles C. Maxfield.

        Test: fast/text/international/khmer-selection.html.

        * platform/graphics/GlyphBuffer.h:
        (WebCore::GlyphBuffer::add):
        * platform/graphics/displaylists/DisplayListItems.cpp:
        (WebCore::DisplayList::DrawGlyphs::generateGlyphBuffer const):
        * platform/graphics/win/UniscribeController.cpp:
        (WebCore::UniscribeController::advance):
        (WebCore::UniscribeController::itemizeShapeAndPlace):
        (WebCore::UniscribeController::shapeAndPlaceItem):
        * platform/graphics/win/UniscribeController.h:

2019-02-21  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak UniqueIDBDatabase in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=194870
        <rdar://problem/48163812>

        Reviewed by Geoffrey Garen.

        UniqueIDBDatabase owns a pointer to itself after it is hard closed. It should release the pointer when it 
        receives confirmation from clients and all pending tasks are done. UniqueIDBDatabase already checks whether the
        pointer should be released when a database task finishes, but it didn't perform a check when a confirm message 
        is received. 

        No new test as the order of task completion and confirmation arrival is uncertain.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::confirmDidCloseFromServer):

2019-02-21  Andy Estes  <aestes@apple.com>

        contentfiltering tests leak documents
        https://bugs.webkit.org/show_bug.cgi?id=189434
        <rdar://44239943>

        Reviewed by Simon Fraser.

        Changed ContentFilter to capture the blocked Frame as a WeakPtr to break a reference cycle.

        This fixes world leaks in several tests in LayoutTests/contentfiltering/.

        * bindings/js/ScriptController.h:
        * loader/ContentFilter.cpp:
        (WebCore::ContentFilter::didDecide):

2019-02-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Fix !USE(CF) build of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=194879

        Reviewed by Konstantin Tokarev.

        * PlatformAppleWin.cmake:
        * PlatformWin.cmake:
        * PlatformWinCairo.cmake:

2019-02-21  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Add support for placing formatting roots in-between floats.
        https://bugs.webkit.org/show_bug.cgi?id=194902

        Reviewed by Antti Koivisto.

        This patch add support for placing a formatting root box in-between existing floats.
        The initial vertical position of a formatting root is its static position which can make the box
        placed above exsiting floats (whereas we can never place a regular float above existing floats.)

        Test: fast/block/block-only/floats-and-block-formatting-roots.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatPair::LeftRightIndex::isEmpty const):
        (WebCore::Layout::FloatPair::isEmpty const):
        (WebCore::Layout::FloatPair::operator* const):
        (WebCore::Layout::Iterator::operator* const):
        (WebCore::Layout::begin):
        (WebCore::Layout::end):
        (WebCore::Layout::FloatingContext::positionForFloat const):
        (WebCore::Layout::FloatingContext::positionForFormattingContextRoot const):
        (WebCore::Layout::findAvailablePosition):
        (WebCore::Layout::FloatingContext::findPositionForFloatBox const):
        (WebCore::Layout::FloatingContext::findPositionForFormattingContextRoot const):
        (WebCore::Layout::FloatPair::FloatPair):
        (WebCore::Layout::FloatPair::left const):
        (WebCore::Layout::FloatPair::right const):
        (WebCore::Layout::FloatPair::intersects const):
        (WebCore::Layout::FloatPair::operator == const):
        (WebCore::Layout::FloatPair::horizontalConstraints const):
        (WebCore::Layout::FloatPair::bottom const):
        (WebCore::Layout::Iterator::operator++):
        (WebCore::Layout::Iterator::set):
        (WebCore::Layout::FloatingPair::isEmpty const): Deleted.
        (WebCore::Layout::FloatingPair::verticalConstraint const): Deleted.
        (WebCore::Layout::FloatingContext::positionForFloatAvoiding const): Deleted.
        (WebCore::Layout::FloatingContext::floatingPosition const): Deleted.
        (WebCore::Layout::FloatingPair::FloatingPair): Deleted.
        (WebCore::Layout::FloatingPair::left const): Deleted.
        (WebCore::Layout::FloatingPair::right const): Deleted.
        (WebCore::Layout::FloatingPair::intersects const): Deleted.
        (WebCore::Layout::FloatingPair::operator == const): Deleted.
        (WebCore::Layout::FloatingPair::horizontalConstraints const): Deleted.
        (WebCore::Layout::FloatingPair::bottom const): Deleted.
        * layout/floats/FloatingContext.h:

2019-02-21  Rob Buis  <rbuis@igalia.com>

        Update MIME type parser
        https://bugs.webkit.org/show_bug.cgi?id=180526

        Reviewed by Darin Adler.

        Further testing showed the MIME parser needs these fixes:
        - stripWhitespace is wrong for removing HTTP whitespace, use
          stripLeadingAndTrailingHTTPSpaces instead.
        - HTTP Token code points checking for Rfc2045 and Mimesniff were
          mixed up, use the dedicated isValidHTTPToken for Mimesniff mode.
        - Quoted Strings were not unescaped/escaped, this seems ok for
          serializing but is wrong when gettings individual parameter values.
          Implement [1] and [2] Step 2.4 to properly unescape and escape.

        This change also tries to avoid hard to read uses of find.

        Test: ParsedContentType.Serialize

        [1] https://fetch.spec.whatwg.org/#collect-an-http-quoted-string
        [2] https://mimesniff.spec.whatwg.org/#serializing-a-mime-type

        * platform/network/ParsedContentType.cpp:
        (WebCore::skipSpaces):
        (WebCore::parseToken):
        (WebCore::isNotQuoteOrBackslash):
        (WebCore::collectHTTPQuotedString):
        (WebCore::containsNonTokenCharacters):
        (WebCore::parseQuotedString):
        (WebCore::ParsedContentType::parseContentType):
        (WebCore::ParsedContentType::create):
        (WebCore::ParsedContentType::setContentType):
        (WebCore::containsNonQuoteStringTokenCharacters):
        (WebCore::ParsedContentType::setContentTypeParameter):
        (WebCore::ParsedContentType::serialize const):
        (WebCore::substringForRange): Deleted.
        (WebCore::isNonTokenCharacter): Deleted.
        (WebCore::isNonQuotedStringTokenCharacter): Deleted.
        * platform/network/ParsedContentType.h:

2019-02-20  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (240698): Fixed position banners flicker and move when scrolling on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194889
        rdar://problem/47755552

        Reviewed by Tim Horton.
        
        After r240698 we could commit scrolling changes for a fixed node where the "viewportRectAtLastLayout" and the layer
        position were mismatched; this happened when AsyncScrollingCoordinator::reconcileScrollingState() came back from the UI process
        with an unstable update and set a new layoutViewport, then some other layout triggered a compositing tree update. During the tree
        update, we'd update the fixed scrolling node with the new viewport, and an old layer position.
        
        Fix by ensuring that we only update the geometry info for a scrolling tree node when we update layer geometry for the corresponding
        layer.

        Not currently testable.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):

2019-02-20  Dean Jackson  <dino@apple.com>

        Rotation animations sometimes use the wrong origin (affects apple.com)
        https://bugs.webkit.org/show_bug.cgi?id=194878
        <rdar://problem/43908047>

        Reviewed by Simon Fraser.

        Some versions of CoreAnimation apply additive animations in reverse
        order. Detect this and reverse the list of animations we provide.

        Update the existing animations/additive-transform-animations.html test to
        be a ref-test that would identify this failure. Previously it relied on
        a pixel test.

        * platform/graphics/ca/GraphicsLayerCA.cpp: Use 
            HAVE_CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED to decide whether or
            not to flip the list of animations (and mark the correct ones as
            additive).
        (WebCore::GraphicsLayerCA::appendToUncommittedAnimations):
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

2019-02-20  Don Olmstead  <don.olmstead@sony.com>

        [Win] Guard CF usage in RenderThemeWin
        https://bugs.webkit.org/show_bug.cgi?id=194875

        Reviewed by Alex Christensen.

        No new tests. No change in behavior.

        Add #if USE(CF) checks to RenderThemeWin so it can compile without CF support.

        * rendering/RenderThemeWin.cpp:
        (WebCore::RenderThemeWin::stringWithContentsOfFile):
        (WebCore::RenderThemeWin::mediaControlsStyleSheet):
        (WebCore::RenderThemeWin::mediaControlsScript):
        * rendering/RenderThemeWin.h:

2019-02-20  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in DOMWindowExtension::suspendForPageCache
        https://bugs.webkit.org/show_bug.cgi?id=194871

        Reviewed by Chris Dumez.

        This is a speculative fix for a crash in DOMWindowExtension::suspendForPageCache.

        We think it's possible for DOMWindowExtension::suspendForPageCache notifying the clients via
        dispatchWillDisconnectDOMWindowExtensionFromGlobalObject to remove other DOMWindowExtension's.
        Check that each DOMWindowProperty is still in m_properties before invoking suspendForPageCache
        to avoid the crash.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::willDestroyCachedFrame):
        (WebCore::DOMWindow::willDestroyDocumentInFrame):
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        (WebCore::DOMWindow::suspendForPageCache):
        (WebCore::DOMWindow::resumeFromPageCache):
        * page/DOMWindowExtension.cpp:
        (WebCore::DOMWindowExtension::suspendForPageCache):

2019-02-20  Alex Christensen  <achristensen@webkit.org>

        Always call CompletionHandlers after r240909
        https://bugs.webkit.org/show_bug.cgi?id=194823

        Reviewed by Ryosuke Niwa.

        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        (WebCore::PolicyChecker::checkNewWindowPolicy):

2019-02-20  Andy Estes  <aestes@apple.com>

        [Xcode] Add SDKVariant.xcconfig to various Xcode projects
        https://bugs.webkit.org/show_bug.cgi?id=194869

        Rubber-stamped by Jer Noble.

        * WebCore.xcodeproj/project.pbxproj:

2019-02-20  Said Abou-Hallawa  <sabouhallawa@apple.com>

        drawImage() clears the canvas if it's the source of the image and globalCompositeOperation is "copy"
        https://bugs.webkit.org/show_bug.cgi?id=194746

        Reviewed by Dean Jackson.

        Test: fast/canvas/canvas-drawImage-composite-copy.html

        If the source canvas of drawImage() is the same as the destination and
        globalCompositeOperation is set to "copy", copy the srcRect from the 
        canvas to a temporary buffer before calling clearCanvas() then drawImage
        from this temporary buffer.

        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::CanvasRenderingContext2DBase::drawImage):
        * platform/graphics/ImageBuffer.cpp:
        (WebCore::ImageBuffer::copyRectToBuffer):
        * platform/graphics/ImageBuffer.h:

2019-02-20  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r241788>): ASSERTION FAILED: !m_normalFlowListDirty in TestWebKitAPI.WebKit.ResizeReversePaginatedWebView test
        https://bugs.webkit.org/show_bug.cgi?id=194866

        Reviewed by Antti Koivisto.

        r241788 removed some calls that updated layer lists (normal flow and z-order) during compositing updates, causing
        a later call to RenderLayerCompositor::recursiveRepaintLayer() to assert when the lists were dirty. Fix by updating
        the lists in RenderLayerCompositor::recursiveRepaintLayer(), as we do in various other places.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::recursiveRepaintLayer):

2019-02-20  Daniel Bates  <dabates@apple.com>

        [iOS] Tweak UI for focus rings
        https://bugs.webkit.org/show_bug.cgi?id=194864
        <rdar://problem/47831886>

        Reviewed by Brent Fulgham.

        Make use of UIKit constants to make focus rings pretty.

        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::drawFocusRingAtTime):

2019-02-20  Timothy Hatcher  <timothy@apple.com>

        RenderThemeIOS should use RenderTheme's color cache instead of its own.
        https://bugs.webkit.org/show_bug.cgi?id=194822
        rdar://problem/48208296

        Reviewed by Tim Horton.

        Tested by fast/css/apple-system-colors.html.

        * css/CSSValueKeywords.in:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::isAppleLegacyCssValueKeyword):
        * platform/graphics/Color.h:
        * platform/graphics/cg/ColorCG.cpp:
        (WebCore::makeRGBAFromCGColor):
        (WebCore::Color::Color):
        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::systemColor const):
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::systemColor const):

2019-02-20  Loïc Yhuel  <loic.yhuel@softathome.com>

        Fix crash when opening Web Inspector after a WebSocket was blocked by content extensions
        https://bugs.webkit.org/show_bug.cgi?id=194819

        Reviewed by Joseph Pecoraro.

        Test: http/tests/inspector/network/contentextensions/blocked-websocket-crash.html

        * Modules/websockets/WebSocketChannel.h:
        (WebCore::WebSocketChannel::hasCreatedHandshake):
        * inspector/agents/page/PageNetworkAgent.cpp:
        Ignore WebSocketChannel without an WebSocketHandshake, which would crash in InspectorNetworkAgent::enable.

2019-02-20  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Make FloatAvoider::resetPosition implicit
        https://bugs.webkit.org/show_bug.cgi?id=194855

        Reviewed by Antti Koivisto.

        Let's compute the initial top/left position during c'tor time.
        This is in preparation for fixing formatting root box placement in a float context.

        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::resetPosition): Deleted.
        * layout/floats/FloatAvoider.h:
        (WebCore::Layout::FloatAvoider::displayBox):
        (WebCore::Layout::FloatAvoider::initialVerticalPosition const): Deleted.
        * layout/floats/FloatBox.cpp:
        (WebCore::Layout::FloatBox::FloatBox):
        (WebCore::Layout::FloatBox::initialVerticalPosition const):
        * layout/floats/FloatBox.h:
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::floatingPosition const):

2019-02-20  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Fix compilation errors with lambdas in Service Workers
        https://bugs.webkit.org/show_bug.cgi?id=194841

        Reviewed by Alex Christensen.

        No new tests. No change in behavior.

        MSVC has problems with the scoping of `this` within a nested lambda. In these cases `this` is
        referring to the enclosing lambda according to MSVC. This patch works around this behavior
        through by using the `protectedThis` pattern in WebKit code.

        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::RegistrationDatabase::openSQLiteDatabase):

2019-02-20  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Enable support for CONTENT_EXTENSIONS
        https://bugs.webkit.org/show_bug.cgi?id=167941

        Reviewed by Carlos Garcia Campos.

        * platform/gtk/po/POTFILES.in: Added WebKitUserContentFilterStore.cpp
        to the list of files with translatable strings.

2019-02-19  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): Toggling visibility on the <html> element can result in a blank web view
        https://bugs.webkit.org/show_bug.cgi?id=194827
        rdar://problem/47620594

        Reviewed by Antti Koivisto.

        Incremental compositing updates, added in rr238090, use repaints as a trigger for re-evaluating
        layer configurations, since a repaint implies that a layer gains painted content. This is done
        via the call to setNeedsCompositingConfigurationUpdate() in RenderLayerBacking::setContentsNeedDisplay{InRect}.
        The RenderView's layer is opted out of this to avoid doing lots of redundant layer config recomputation
        for the root. The configuration state that matters here is whether the layer contains painted content,
        and therefore needs backing store; this is computed by RenderLayerBacking::isSimpleContainerCompositingLayer(),
        and feeds into GraphicsLayer::drawsContent().

        However, if <html> starts as "visibility:hidden" or "opacity:0", as some sites do to hide incremental loading,
        then we'll fail to recompute 'drawsContent' for the root and leave the root with drawsContent=false, which
        causes RenderLayerBacking::setContentsNeedDisplay{InRect} to short-circuit, and then we paint nothing.

        Ironically, 'drawsContent' doesn't actually save any backing store for the root, since it has no affect on
        the root tile caches; we always make tiles. So the simple fix here is to change RenderLayerBacking::isSimpleContainerCompositingLayer()
        to always return false for the RenderView's layer (the root).
        
        Testing this was tricky; ref testing doesn't work because we force repaint, and we normally skip
        properties of the root in layer tree dumps to hide WK1/WK2 differences. Therefore I had to add
        LAYER_TREE_INCLUDES_ROOT_LAYER_PROPERTIES and fix RenderLayerBacking::shouldDumpPropertyForLayer to
        respect it.

        Test: compositing/visibility/root-visibility-toggle.html

        * page/Frame.h:
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::dumpProperties const):
        * platform/graphics/GraphicsLayerClient.h:
        (WebCore::GraphicsLayerClient::shouldDumpPropertyForLayer const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer const):
        (WebCore::RenderLayerBacking::shouldDumpPropertyForLayer const):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerTreeAsText):
        * testing/Internals.cpp:
        (WebCore::toLayerTreeFlags):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-19  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r240909): Release assertion in FrameLoader::loadPostRequest when opening new window
        https://bugs.webkit.org/show_bug.cgi?id=194820

        Reviewed by Geoffrey Garen.

        This release assertion was wrong. The invocation of PolicyChecker::checkNewWindowPolicy in FrameLoader
        doesn’t require PolicyChecker's load type to be set in PolicyChecker because FrameLoader's
        continueLoadAfterNewWindowPolicy invokes loadWithNavigationAction which sets the load type later,
        and we don't rely on PolicyChecker's load type until then.

        Fixed the crash by removing relese asserts before invoking checkNewWindowPolicy accordingly.

        This patch reverts r241015 since it too was asserting that PolicyChecker's load type is set before
        invoking checkNewWindowPolicy which is not the right assumption.

        Test: fast/loader/navigate-with-post-to-new-target-after-back-forward-navigation.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::loadPostRequest):

2019-02-19  Zalan Bujtas  <zalan@apple.com>

        Fix post-commit feedback.

        Unreviewed. 

        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingPair::intersects const):

2019-02-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Remove redundant intersecting logic
        https://bugs.webkit.org/show_bug.cgi?id=194804

        Reviewed by Antti Koivisto.

        floatAvoider.overflowsContainingBlock() check already (and properly) takes care of the far left/right case (see comment).

        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::floatingPosition const):
        (WebCore::Layout::FloatingPair::intersects const):

2019-02-19  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241722.
        https://bugs.webkit.org/show_bug.cgi?id=194801

        Causing time outs and EWS failures after expectation file was
        added. (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "IndexedDB: leak IDBDatabase and IDBTransacstion in layout
        tests"
        https://bugs.webkit.org/show_bug.cgi?id=194709
        https://trac.webkit.org/changeset/241722

2019-02-16  Darin Adler  <darin@apple.com>

        Continue reducing use of String::format, now focusing on hex: "%p", "%x", etc.
        https://bugs.webkit.org/show_bug.cgi?id=194752

        Reviewed by Daniel Bates.

        * Modules/websockets/WebSocket.cpp: Added an include of HexNumber.h. This previously
        got included because of Logger.h, but that no longer pulls in HexNumber.h.

        * css/CSSMarkup.cpp: Removed unneeded include of StringBuffer.h.
        * css/CSSPrimitiveValue.cpp: Ditto.

        * css/CSSUnicodeRangeValue.cpp:
        (WebCore::CSSUnicodeRangeValue::customCSSText const): Use makeString and hex instead
        of String::format and "%x".

        * html/HTMLMediaElement.h:
        (WTF::ValueToString<WebCore::TextTrackCue::string): Use a non-template function,
        TextTrackCure::debugString, so we don't need to use HextNumber.h in a header.

        * html/canvas/WebGLRenderingContextBase.cpp:
        (GetErrorString): Use makeString and hex instead of String::format and "%04x".

        * html/track/TextTrackCue.cpp:
        (WebCore::TextTrackCue::debugString const): Added. Moved string conversion here
        from HTMLMediaElement.h and use makeString instead of String::format. Also use
        the word "debug" to make it clear that it's not OK to use this string, with a
        pointer value serialized into it, outside of debugging.
        * html/track/TextTrackCue.h: Added TextTrackCue::debugString.

        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::formatByteNumber): Use makeString and FormattedNumber::fixedWidth
        instead of String::format and "%.1f" etc.

        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::keyIdentifierForCharCode): Use the new hex function here instead of
        the old code that did each of the four characters explicitly.

        * platform/gamepad/mac/HIDGamepad.cpp:
        (WebCore::HIDGamepad::HIDGamepad): Use makeString instead of String::format.

        * platform/graphics/Color.cpp:
        (WebCore::Color::nameForRenderTreeAsText const): Use hex instead of doing each
        digit separately.

        * platform/graphics/FloatPolygon.cpp:
        (WebCore::FloatPolygonEdge::debugString const): Added. Moved string conversion here
        from the header and use makeString instead of String::format. Also use
        the word "debug" to make it clear that it's not OK to use this string, with a
        pointer value serialized into it, outside of debugging.
        * platform/graphics/FloatPolygon.h: Updated for the above.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setName): Use makeString instead of String::format.
        (WebCore::GraphicsLayerCA::recursiveCommitChanges): DItto.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::load): Ditto.
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Ditto.
        * platform/gtk/PlatformKeyboardEventGtk.cpp:
        (WebCore::PlatformKeyboardEvent::keyIdentifierForGdkKeyCode): Ditto.
        * platform/libwpe/PlatformKeyboardEventLibWPE.cpp:
        (WebCore::PlatformKeyboardEvent::keyIdentifierForWPEKeyCode): Ditto.
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::makeElement): Ditto.
        (WebCore::GStreamerVideoEncoder::InitEncode): Ditto.

        * platform/text/TextCodecLatin1.cpp: Removed unneeded include of StringBuffer.h
        and "using namespace WTF".

        * platform/win/GDIObjectCounter.cpp:
        (WebCore::GDIObjectCounter::GDIObjectCounter): Use makeString instead of String::format.
        * platform/win/KeyEventWin.cpp:
        (WebCore::keyIdentifierForWindowsKeyCode): Ditto.

        * rendering/FloatingObjects.cpp:
        (WebCore::FloatingObject::debugString const): Added. Moved string conversion here
        from the header and use makeString instead of String::format. Also use
        the word "debug" to make it clear that it's not OK to use this string, with a
        pointer value serialized into it, outside of debugging.
        * rendering/FloatingObjects.h: Updated for the above.

        * rendering/RenderFragmentContainer.cpp:
        (WebCore::RenderFragmentContainer::debugString const): Added. Moved string
        conversion here from the header and use makeString instead of String::format.
        Also use the word "debug" to make it clear that it's not OK to use this string,
        with a pointer value serialized into it, outside of debugging.
        * rendering/RenderFragmentContainer.h: Updated for the above.
        * rendering/RenderFragmentedFlow.h: Ditto.

        * testing/Internals.cpp:
        (WebCore::Internals::address): Use makeString instead of String::format.

2019-02-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Support pasting item-provider-backed data on the pasteboard as attachment elements
        https://bugs.webkit.org/show_bug.cgi?id=194670
        <rdar://problem/39066529>

        Reviewed by Tim Horton.

        Adds support for pasting files on the pasteboard as attachment elements, if the attachment element runtime
        switch is enabled. Currently, the only types of data that can be pasted as attachments are images, which take a
        special codepath in WebContentReader::readImage.

        This patch adds a readDataBuffer method that converts a given blob of data from the pasteboard into an
        attachment-element-backed representation in the DOM (i.e. either an attachment element or image element that
        contains an attachment element). In the case where the given pasteboard item has been explicitly marked as an
        attachment (via the preferredPresentationStyle hint) and the item has at least one type representation that
        conforms to "public.content", we take this codepath instead of first attempting the web content reading types
        supported by default in WebKit.

        See below for more detail.

        Test: WKAttachmentTestsIOS.InsertPastedFilesAsAttachments

        * editing/Editor.cpp:
        (WebCore::Editor::clientReplacementURLForResource): Deleted.
        * editing/Editor.h:
        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::mimeTypeFromContentType):
        (WebCore::contentTypeIsSuitableForInlineImageRepresentation):
        (WebCore::createFragmentAndAddResources):
        (WebCore::sanitizeMarkupWithArchive):

        Remove all logic for handling subresource URL replacement. See WebKit ChangeLog for more details on this.

        (WebCore::WebContentReader::readImage):
        (WebCore::attachmentForFilePath):
        (WebCore::attachmentForData):

        Add a helper that creates an attachment element for a given blob of data and content type. The logic here is
        quite similar to that of attachmentForFilePath, and we should find a way to either merge them, or pull out more
        of their similarities into helper functions.

        (WebCore::WebContentReader::readDataBuffer):
        (WebCore::replaceSubresourceURLsWithURLsFromClient): Deleted.

        Remove more logic for handling subresource URL replacement. See WebKit ChangeLog for more details on this.

        * loader/EmptyClients.cpp:
        * page/EditorClient.h:
        * platform/Pasteboard.h:
        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::contentTypeForHighestFidelityItem const):
        (WebCore::PasteboardItemInfo::pathForHighestFidelityItem const):
        (WebCore::PasteboardItemInfo::encode const):
        (WebCore::PasteboardItemInfo::decode):

        Add contentTypesByFidelity to PasteboardItemInfo, instead of requesting this information using a separate IPC
        message. This means we can also remove getTypesByFidelityForItemAtIndex, and just use the item's types in
        fidelity order instead.

        * platform/PasteboardStrategy.h:
        * platform/PlatformPasteboard.h:
        * platform/ios/AbstractPasteboard.h:
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::read):

        Shave off (potentially many) sync IPC messages to the UI process by pulling each call to
        informationForItemAtIndex out of the inner loop when reading web content.

        (WebCore::Pasteboard::readRespectingUTIFidelities):

        Shave off one extraneous sync IPC message by rolling the types in fidelity order into the request for
        PasteboardItemInfo, instead of being sent in a separate message.

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::informationForItemAtIndex):

        Populate contentTypesForFileUpload in the case where UIPasteboard is used (i.e. copy and paste).

        (WebCore::PlatformPasteboard::getTypesByFidelityForItemAtIndex): Deleted.
        * platform/ios/WebItemProviderPasteboard.h:
        * platform/ios/WebItemProviderPasteboard.mm:
        (-[WebItemProviderPasteboard pasteboardTypesByFidelityForItemAtIndex:]): Deleted.

2019-02-18  Daniel Bates  <dabates@apple.com>

        Clean up and modernize RenderThemeIOS::paintCheckboxDecorations()
        https://bugs.webkit.org/show_bug.cgi?id=194785

        Reviewed by Simon Fraser.

        Change from early return to else-clause to make the states clearer and make it more straightforward
        to share more common code. Use constexpr, allocate temporary vectors with inline capacity, and
        switch to uniform initializer syntax.

        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::paintCheckboxDecorations):

2019-02-18  Daniel Bates  <dabates@apple.com>

        [iOS] Focus ring for checkboxes, radio buttons, buttons and search fields should hug tighter to the contour
        https://bugs.webkit.org/show_bug.cgi?id=193599
        <rdar://problem/47399602>

        Reviewed by Simon Fraser.

        For now, iOS uses a 3px outline width for its focus rings. Do not inset the focus ring on iOS
        for text fields, textareas, keygens, and selects so as to match the visual appearance of all
        the other controls.

        Tests: fast/forms/ios/focus-button.html
               fast/forms/ios/focus-checkbox.html
               fast/forms/ios/focus-checked-checkbox.html
               fast/forms/ios/focus-checked-radio.html
               fast/forms/ios/focus-radio.html
               fast/forms/ios/focus-reset-button.html
               fast/forms/ios/focus-search-field.html
               fast/forms/ios/focus-submit-button.html
               fast/forms/ios/focus-text-field.html
               fast/forms/ios/focus-textarea.html

        * css/html.css:
        (:focus): Use 3px outline width.
        (input:focus, textarea:focus, keygen:focus, select:focus): Guard this code to exclude it when building for iOS.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBoxDecorations): Add FIXME comment.
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::paintOutline): Call RenderTheme::adjustPaintRect() to adjust the paint rect.
        Otherwise, the focus rings for radios and checkboxes are drawn at the wrong y-coordinate and are not snug.

2019-02-18  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Handle indefinite percentages in fit-content()
        https://bugs.webkit.org/show_bug.cgi?id=194509

        Reviewed by Javier Fernandez.

        Test: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html

        If the size of the grid container depends on the size of its tracks,
        a percentage in fit-content() is indefinite. Without this patch, some
        places treated this case as fit-content(0), which prevented the grid
        container from growing enough to contain the max-content contribution
        of its grid items.

        This patch treats such fit-content() as minmax(auto, max-content),
        but once the size of the grid container is known and it is laid out
        "for real", then the percentage is definite and it's used.

        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::GridTrackSizingAlgorithm::gridTrackSize const):
        (WebCore::GridTrackSizingAlgorithm::initializeTrackSizes):

2019-02-18  John Wilander  <wilander@apple.com>

        Check the existence of the frame in Document::hasFrameSpecificStorageAccess() and Document::setHasFrameSpecificStorageAccess()
        https://bugs.webkit.org/show_bug.cgi?id=194777
        <rdar://problem/47731945>

        Reviewed by Geoffrey Garen and Chris Dumez.

        Test: http/tests/storageAccess/remove-requesting-iframe.html

        * dom/Document.cpp:
        (WebCore::Document::hasFrameSpecificStorageAccess const):
            Now checks for the existence of the frame.
        (WebCore::Document::setHasFrameSpecificStorageAccess):
            Now checks for the existence of the frame.
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
            Now checks that the session ID is valid.

2019-02-18  Jer Noble  <jer.noble@apple.com>

        -[AVSampleBufferDisplayLayer player]: Unrecognized selector crash
        https://bugs.webkit.org/show_bug.cgi?id=194790
        <rdar://problem/33866742>

        Reviewed by Jon Lee.

        Ensure that a WebVideoContainerLayer's sole sublayer is actually an AVPlayerLayer (and not
        an AVSampleBufferDisplayLayer) before reporting that the layer type is LayerTypeAVPlayerLayer.

        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):

2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Better categorize CPU usage per-thread / worker
        https://bugs.webkit.org/show_bug.cgi?id=194564

        Reviewed by Devin Rousso.

        Test: inspector/cpu-profiler/threads.html

        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::workerThreadsMutex):
        (WebCore::WorkerThread::workerThreadCount):
        (WebCore::WorkerThread::WorkerThread):
        (WebCore::WorkerThread::~WorkerThread):
        (WebCore::WorkerThread::workerThread):
        (WebCore::WorkerThread::releaseFastMallocFreeMemoryInAllThreads):
        * workers/WorkerThread.h:
        (WebCore::WorkerThread::identifier const):
        Expose the set of all WorkerThreads.

        * inspector/agents/InspectorCPUProfilerAgent.cpp:
        (WebCore::InspectorCPUProfilerAgent::collectSample):
        Send inspector additional per-thread data.

        * page/ResourceUsageData.h:
        (WebCore::WorkerCPUInfo::WorkerCPUInfo):
        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::ThreadInfo::ThreadInfo):
        (WebCore::threadInfos):
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        (WebCore::threadSendRights): Deleted.
        (WebCore::cpuUsage): Deleted.
        Compute per-thread values on cocoa ports.

        * page/linux/ResourceUsageThreadLinux.cpp:
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        Stub per-thread values on linux ports.

2019-02-18  Jer Noble  <jer.noble@apple.com>

        Uncaught Exception crash in MediaPlayerPrivateAVFoundationObjC::setShouldObserveTimeControlStatus()
        https://bugs.webkit.org/show_bug.cgi?id=194786

        Reviewed by Eric Carlson.

        Convert a runtime crash to a debug assert by wrapping the call to -[AVPlayer removeObserver:forKeyPath:]
        in an exception handler.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldObserveTimeControlStatus):

2019-02-18  Daniel Bates  <dabates@apple.com>

        [iOS] Keyups for non-modifier keys identified as "Dead" when not focused in a content-editable element
        https://bugs.webkit.org/show_bug.cgi?id=192824
        <rdar://problem/47100332>

        Reviewed by Wenson Hsieh.

        When building with USE(UIKIT_KEYBOARD_ADDITIONS) enabled, normalize input strings for some more key codes
        now that hardware key events to non-editable elements use the same code path as for editable elements. 

        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForCharCode): Demarcate mappings that are only needed when building with
        !USE(UIKIT_KEYBOARD_ADDITIONS) in the hope that one day we can remove this code.
        (WebCore::isFunctionKey): Ditto.
        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping): Normalize some more input strings when building with
        USE(UIKIT_KEYBOARD_ADDITIONS) enabled.

2019-02-18  Eric Carlson  <eric.carlson@apple.com>

        Add MSE logging configuration
        https://bugs.webkit.org/show_bug.cgi?id=194719
        <rdar://problem/48122151>

        Reviewed by Joseph Pecoraro.

        No new tests, updated inspector/console/webcore-logging.html.

        * dom/Document.cpp:
        (WebCore::messageSourceForWTFLogChannel): Recognize the MSE logging channel.

        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::getLoggingChannels): Ditto.

2019-02-18  Antoine Quint  <graouts@apple.com>

        [iOS] Dispatch additional events along with pointerdown and pointerup
        https://bugs.webkit.org/show_bug.cgi?id=194776
        <rdar://problem/48164284>

        Reviewed by Brent Fulgham.

        The Pointer Events specification mandates that "pointerover" and "pointerenter" events precede a "pointerdown" event and that "pointerout"
        and "pointerleave" events follow a "pointerup" event. We remove the EventHandler::dispatchPointerEventForTouchAtIndex() method and replace
        it with a PointerCaptureController::dispatchEventForTouchAtIndex() that can handle the dispatch of such additional events correctly, also
        allowing for two PointerCaptureController methods (pointerEventWillBeDispatched and pointerEventWasDispatched) to become private.

        Test: pointerevents/ios/over-enter-out-leave.html

        * dom/EventNames.h: Add the new "pointerover", "pointerenter", "pointerout" and "pointerleave" event types.
        * dom/PointerEvent.h:
        * dom/ios/PointerEventIOS.cpp:
        (WebCore::PointerEvent::create):
        * page/EventHandler.cpp:
        (WebCore::EventHandler::dispatchPointerEventForTouchAtIndex): Deleted.
        * page/EventHandler.h:
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::dispatchEventForTouchAtIndex): Take the existing code from EventHandler::dispatchPointerEventForTouchAtIndex()
        and extend it to dispatch additional events as mandated. Since several events may be dispatched we check whether the dispatch of any of those events
        had defaultPrevented() or defaultHanded() return true and return those values as a pair.
        (WebCore::PointerCaptureController::pointerEventWasDispatched):
        * page/PointerCaptureController.h:

2019-02-18  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak IDBDatabase and IDBTransacstion in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=194709

        Reviewed by Geoffrey Garen.

        When connection to IDB server is closed, IDBTransaction would abort without notifying IDBDatabase, so 
        IDBDatabase didn't clear its reference to IDBTransaction which created a reference cycle. 

        Also IDBTransaction didn't clear its reference to IDBRequest in this case and it led to another reference cycle
        between IDBOpenDBRequest and IDBTransaction.

        Test: storage/indexeddb/IDBObject-leak.html

        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::connectionToServerLost):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::IDBTransaction):
        (WebCore::IDBTransaction::~IDBTransaction):
        (WebCore::IDBTransaction::finishedDispatchEventForRequest):
        (WebCore::IDBTransaction::connectionClosedFromServer):
        * Modules/indexeddb/IDBTransaction.h:
        * testing/Internals.cpp:
        (WebCore::Internals::numberOfIDBTransactions const):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-18  Chris Fleizach  <cfleizach@apple.com>

        AX: PSON: Going back from apple.com to search results, cannot interact with HTML content. Disabling Swap Processes on Cross-Site Navigation resolves the issue.
        https://bugs.webkit.org/show_bug.cgi?id=194742

        Reviewed by Chris Dumez.

        With the new process model, WebProcess hits a case where it tries to send the "page loaded" notification before VoiceOver
        had a chance to register for any notifications. This leads to those notifications being dropped (and thus this bug).

        This change instead asks the UIProcess to send the notification, which we know VoiceOver has registered for, and can reliably
        receive notifications.

        It also sends the notification for "load failures," which to the VO users' perspective amounts to the same thing as a successful
        page load.

        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::frameLoadingEventPlatformNotification):

2019-02-18  Megan Gardner  <megan_gardner@apple.com>

        Turn On Smart Delete
        https://bugs.webkit.org/show_bug.cgi?id=194320

        Reviewed by Ryosuke Niwa.

        Updated the following tests to work with iOS:
        * editing/deleting/smart-delete-001.html:
        * editing/deleting/smart-delete-002.html:
        * editing/deleting/smart-delete-003.html:
        * editing/deleting/smart-delete-004.html:
        * editing/deleting/smart-delete-across-editable-boundaries-2.html:
        * editing/selection/delete-word-granularity-text-control.html:

        Turn on Smart delete for iOS at all times. Modify checks to allow Mac and iOS and other 
        platforms to turn on smart delete when desired.

        * editing/Editor.cpp:
        (WebCore::Editor::shouldSmartDelete):
        Allow platfroms to determine if smart delete should be on.
        On mac, this is via word granularity, on iOS this is just on all the time.
        (WebCore::Editor::canSmartCopyOrDelete):
        (WebCore::Editor::performCutOrCopy):
        * editing/Editor.h:
        * editing/EditorCommand.cpp:
        (WebCore::executeDelete):
        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::shouldSmartDelete):
        * editing/mac/EditorMac.mm:
        (WebCore::Editor::shouldSmartDelete):

2019-02-17  David Kilzer  <ddkilzer@apple.com>

        Unreviewed, rolling out r241620.

        "Causes use-after-free crashes running layout tests with ASan and GuardMalloc."
        (Requested by ddkilzer on #webkit.)

        Reverted changeset:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241620

2019-02-16  Zalan Bujtas  <zalan@apple.com>

        [LFC] RenderImage's default intrinsic size is 0.
        https://bugs.webkit.org/show_bug.cgi?id=194745

        Reviewed by Antti Koivisto.

        While the images are being loaded, their intrinsic size is set to 0 (RenderImage c'tor). Note that this code is temporary.
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):

2019-02-16  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Add support for block replaced intrinsic width.
        https://bugs.webkit.org/show_bug.cgi?id=194705

        Reviewed by Simon Fraser.

        Replaced boxes should report their intrinsic width as preferred widths.

        Test: fast/block/block-only/replaced-intrinsic-width-simple.html

        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):

2019-02-16  Zalan Bujtas  <zalan@apple.com>

        [LFC] Apply min/max width constraints to preferred width computation
        https://bugs.webkit.org/show_bug.cgi?id=194739

        Reviewed by Simon Fraser.

        Ensure that both min-height and max-height are taken into account while computing the preferred width.

        Test: fast/block/block-only/min-max-and-preferred-width-simple.html

        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):

2019-02-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make builtin objects more lazily initialized under non-JIT mode
        https://bugs.webkit.org/show_bug.cgi?id=194727

        Reviewed by Saam Barati.

        * Modules/streams/ReadableByteStreamInternals.js:
        (privateInitializeReadableByteStreamController):
        (readableByteStreamControllerRespond):

2019-02-15  Dean Jackson  <dino@apple.com>

        Allow emulation of user gestures from Web Inspector console
        https://bugs.webkit.org/show_bug.cgi?id=194725
        <rdar://problem/48126604>

        Reviewed by Joseph Pecoraro and Devin Rousso.

        Test: inspector/runtime/evaluate-userGestureEmulation.html

        * inspector/agents/page/PageRuntimeAgent.cpp: Override the emulate method and create
        a UserGestureIndicator based on the emulateUserGesture option.
        (WebCore::PageRuntimeAgent::evaluate):
        * inspector/agents/page/PageRuntimeAgent.h:

2019-02-15  Chris Dumez  <cdumez@apple.com>

        Sample domainsVisited diagnostic logging
        https://bugs.webkit.org/show_bug.cgi?id=194657

        Reviewed by Ryosuke Niwa.

        Sample domainsVisited diagnostic logging, we are getting a lot of data from
        this key and this is hurting our other keys.

        * page/Page.cpp:
        (WebCore::Page::logNavigation):

2019-02-15  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in the hit testing code via HTMLPlugInElement::isReplacementObscured()
        https://bugs.webkit.org/show_bug.cgi?id=194691

        Reviewed by Simon Fraser.

        The crash was caused by HTMLPlugInElement::isReplacementObscured updating the document
        without updating the layout of ancestor documents (i.e. documents in which frame owner
        elements appear) even though it hit-tests against the top-level document's RenderView.

        Fixed the bug by updating the layout of the top-level document as needed.

        Test: plugins/unsupported-plugin-with-replacement-in-iframe-crash.html

        * html/HTMLPlugInElement.cpp:
        (WebCore::HTMLPlugInElement::isReplacementObscured):

2019-02-15  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * platform/NotImplemented.h:
        * platform/cocoa/SystemVersion.mm:
        (WebCore::createSystemMarketingVersion):
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::initializeGStreamer):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
        * platform/graphics/nicosia/NicosiaPaintingEngine.cpp:
        (Nicosia::PaintingEngine::create):
        * platform/graphics/texmap/TextureMapperFPSCounter.cpp:
        (WebCore::TextureMapperFPSCounter::TextureMapperFPSCounter):
        * platform/graphics/x11/PlatformDisplayX11.cpp:
        (WebCore::PlatformDisplayX11::create):
        * platform/gtk/RenderThemeWidget.cpp:
        (WebCore::RenderThemeScrollbar::RenderThemeScrollbar):
        * platform/gtk/ScrollbarThemeGtk.cpp:
        (WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk):
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlContext::CurlContext):
        (WebCore::EnvironmentVariableReader::read): Deleted.
        (WebCore::EnvironmentVariableReader::defined): Deleted.
        (WebCore::EnvironmentVariableReader::readAs): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate<signed>): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate<unsigned>): Deleted.
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::defaultCookieJarPath):
        * platform/network/playstation/CurlSSLHandlePlayStation.cpp:
        (WebCore::getCACertPathEnv):
        * platform/network/win/CurlSSLHandleWin.cpp:
        (WebCore::getCACertPathEnv):
        * platform/text/hyphen/HyphenationLibHyphen.cpp:
        (WebCore::topLevelPath):
        (WebCore::webkitBuildDirectory):
        * platform/unix/LoggingUnix.cpp:
        (WebCore::logLevelString):
        * platform/win/LoggingWin.cpp:
        (WebCore::logLevelString):
        Utilize WTF::Environment where possible.

2019-02-15  Antoine Quint  <graouts@apple.com>

        Add a method to dispatch a PointerEvent based on a PlatformTouchEvent
        https://bugs.webkit.org/show_bug.cgi?id=194702
        <rdar://problem/48109355>

        Reviewed by Dean Jackson.

        * page/EventHandler.cpp:
        (WebCore::EventHandler::dispatchPointerEventForTouchAtIndex):
        * page/EventHandler.h:

2019-02-15  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Inline WebVTT styles should start with '::cue'
        https://bugs.webkit.org/show_bug.cgi?id=194227

        Reviewed by Eric Carlson.

        The original fix in r241203 is not sufficient, since it only checks if the CSS string starts
        with '::cue'. Before accepting a CSS string from a WebVTT file, it should be checked that
        all selectors starts with '::cue'.

        Test: media/track/track-cue-css.html

        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::checkAndStoreStyleSheet):

2019-02-15  Youenn Fablet  <youenn@apple.com>

        Add binding tests for ContextAllowsMediaDevices and ContextHasServiceWorkerScheme
        https://bugs.webkit.org/show_bug.cgi?id=194713

        Reviewed by Eric Carlson.

        Binding tests covering mediaDevices and serviceWorker attributes.

        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::JSTestObjPrototype::finishCreation):
        (WebCore::jsTestObjMediaDevices1Getter):
        (WebCore::jsTestObjMediaDevices1):
        (WebCore::jsTestObjMediaDevices2Getter):
        (WebCore::jsTestObjMediaDevices2):
        (WebCore::jsTestObjServiceWorkers1Getter):
        (WebCore::jsTestObjServiceWorkers1):
        (WebCore::jsTestObjServiceWorkers2Getter):
        (WebCore::jsTestObjServiceWorkers2):
        * bindings/scripts/test/TestObj.idl:

2019-02-15  Beth Dakin  <bdakin@apple.com>

        Build fix.

        * rendering/RenderThemeIOS.mm:
        (WebCore::iconForAttachment):

2019-02-15  Youenn Fablet  <youenn@apple.com>

        Make ServiceWorkerClientFetch closer to WebResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194651

        Reviewed by Alex Christensen.

        Check for redirection response and if so call a specific client API.
        Ensure ServiceWorkerFetch::Client gets called in the service worker thread proxy
        so that its m_connection is only accessed on that thread.

        Covered by existing tests.

        * platform/network/FormData.h:
        * platform/network/ResourceErrorBase.h:
        * workers/service/context/ServiceWorkerFetch.cpp:
        (WebCore::ServiceWorkerFetch::processResponse):
        * workers/service/context/ServiceWorkerFetch.h:
        * workers/service/context/ServiceWorkerThreadProxy.cpp:
        (WebCore::ServiceWorkerThreadProxy::cancelFetch):
        (WebCore::ServiceWorkerThreadProxy::continueDidReceiveFetchResponse):
        * workers/service/context/ServiceWorkerThreadProxy.h:

2019-02-15  Youenn Fablet  <youenn@apple.com>

        Make navigator.mediaDevices SecureContext
        https://bugs.webkit.org/show_bug.cgi?id=194666

        Reviewed by Eric Carlson.

        Make navigator.mediaDevices SecureContext.
        This can still be enabled for unsecure context using the existing page settings.
        To cover that case, introduce ContextHasMediaDevices custom IDL keyword.

        Covered by API test.

        * Modules/mediastream/NavigatorMediaDevices.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateRuntimeEnableConditionalString):
        * bindings/scripts/IDLAttributes.json:
        * dom/ScriptExecutionContext.cpp:
        (WebCore::ScriptExecutionContext::hasMediaDevices const):
        (WebCore::ScriptExecutionContext::hasServiceWorkerScheme const):
        * dom/ScriptExecutionContext.h:

2019-02-15  Youenn Fablet  <youenn@apple.com>

        WebSocket should not fire events after being stopped
        https://bugs.webkit.org/show_bug.cgi?id=194690

        Reviewed by Geoffrey Garen.

        dispatchOrQueueErrorEvent is scheduled using RunLoop::main().dispatch or dispatch_async.
        This makes it possible to dispatch an event while WebSocket is already stopped.
        Instead, use Document::postTask so that the task is only executed if WebSocket is not stopped.

        As a refactoring, make use of PendingActivity to keep track of setPendingActivity/unsetPendingActivity more easily.

        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::stop):
        (WebCore::WebSocket::connect):
        * Modules/websockets/WebSocket.h:

2019-02-15  Youenn Fablet  <youenn@apple.com>

        Performance should not fire events when its context is stopped
        https://bugs.webkit.org/show_bug.cgi?id=194689

        Reviewed by Alex Christensen.

        Stop the timer when its context is destroyed.
        Add an assertion to ensure the timer does not fire after context is destroyed.

        * page/Performance.cpp:
        (WebCore::Performance::stop):

2019-02-15  Alex Christensen  <achristensen@webkit.org>

        REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
        https://bugs.webkit.org/show_bug.cgi?id=194523

        Reviewed by Geoffrey Garen.

        The scope of the FormCreationContext was limited to the scope of createHTTPBodyCFReadStream,
        so when it was used in formCreate it was lucky to get the same context if the stack hadn't been overwritten
        and if the FormData hadn't been freed.  Instead, keep it alive with new/delete like we do the FormStreamFields.
        A younger me should've noticed this when reviewing r218517.

        * platform/network/cf/FormDataStreamCFNet.cpp:
        (WebCore::formCreate):
        (WebCore::createHTTPBodyCFReadStream):

2019-02-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241559 and r241566.
        https://bugs.webkit.org/show_bug.cgi?id=194710

        Causes layout test crashes under GuardMalloc (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241559

        "Unreviewed build fix for WinCairo Debug after r241559."
        https://trac.webkit.org/changeset/241566

2019-02-15  Youenn Fablet  <youenn@apple.com>

        Stop the endpoint synchronously in RTCPeerConnection::close
        https://bugs.webkit.org/show_bug.cgi?id=194688

        Reviewed by Eric Carlson.

        In the case where the peer connection is being closed, it was asynchronously stopping the endpoint.
        But the endpoint, before being stopped, could try to fire an event.
        If the context is gone in between, we end up with a null pointer dereference.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::close):

2019-02-15  Zalan Bujtas  <zalan@apple.com>

        [LFC] Out-of-flow box is never a float box
        https://bugs.webkit.org/show_bug.cgi?id=194704

        Reviewed by Antti Koivisto.

        We can't have it both ways. Absolute positioning wins.

        Test: fast/block/block-only/out-of-flow-is-never-float-box.html

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::isFloatingPositioned const):
        (WebCore::Layout::Box::isLeftFloatingPositioned const):
        (WebCore::Layout::Box::isRightFloatingPositioned const):

2019-02-15  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Simplify GObject class name check
        https://bugs.webkit.org/show_bug.cgi?id=194537

        Reviewed by Michael Catanzaro.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback):
        Use G_OBJECT_TYPE_NAME() to filter out uridecodebin child
        elements.

2019-02-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor EditingStyle::textDirection to return an Optional<WritingDirection> instead of a bool
        https://bugs.webkit.org/show_bug.cgi?id=194686

        Reviewed by Ryosuke Niwa.

        Changes EditingStyle::textDirection to return an Optional<WritingDirection>, instead of taking a reference to
        the resulting WritingDirection. No change in behavior.

        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::splitAncestorsWithUnicodeBidi):
        (WebCore::ApplyStyleCommand::applyInlineStyle):
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::textDirection const):
        (WebCore::EditingStyle::textDirectionForSelection):
        * editing/EditingStyle.h:

2019-02-10  Darin Adler  <darin@apple.com>

        Replace more uses of String::format with StringConcatenate (mostly non-Apple platform-specific cases)
        https://bugs.webkit.org/show_bug.cgi?id=194487

        Reviewed by Daniel Bates.

        * accessibility/win/AccessibilityObjectWrapperWin.cpp:
        (WebCore::AccessibilityObjectWrapper::accessibilityAttributeValue): Use makeString
        instead of String::format.

        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::formatByteNumber): Use String::number instead of String::format.

        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
        (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
        Use makeString instead of String::format.
        * platform/glib/UserAgentGLib.cpp:
        (WebCore::platformVersionForUAString): Ditto.
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::simpleBusMessageCallback): Ditto.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Ditto.
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline): Ditto.
        (WebCore::AppendPipeline::handleStateChangeMessage): Ditto.
        (WebCore::AppendPipeline::resetParserState): Ditto.
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::load): Ditto.
        (WebCore::MediaPlayerPrivateGStreamerMSE::doSeek): Ditto.

        * platform/graphics/gtk/ImageBufferGtk.cpp:
        (WebCore::encodeImage): Use String::number instead of String::format.

        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
        (WebCore::GStreamerAudioCaptureSource::create): Use makeString instead of
        String::format.
        * platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
        (WebCore::GStreamerCaptureDeviceManager::addDevice): Ditto.
        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
        (WebCore::webkitMediaStreamSrcAddPad): Ditto.
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoCaptureSource::create): Ditto.
        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::verifySchemaVersion): Ditto.
        * platform/win/SearchPopupMenuDB.cpp:
        (WebCore::SearchPopupMenuDB::verifySchemaVersion): Ditto.

2019-02-15  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Decoding media-capabilities configuration initial support
        https://bugs.webkit.org/show_bug.cgi?id=191191

        Reviewed by Xabier Rodriguez-Calvar.

        This patch enables basic platform probing for GStreamer decoders,
        optionally using Hardware decoding capabilities. The previous code
        for decoders/demuxers probing partially duplicated between the MSE
        player and its parent class was moved to a new module called
        GStreamerRegistryScanner. There is one instance of it for the MSE player
        and one for the parent class.

        The scanner can check for the presence of the GstElement Hardware
        metadata classifier in decoders and thus advise the
        MediaEngineConfigurationFactoryGStreamer that hardware decoding is
        supported or not. This is only a first step though. The scanner
        should also probably attempt a NULL->READY transition on decoders
        to validate specific input caps are supported. As this might
        require changes in GStreamer, this part of the patch wasn't
        included.

        This patch is covered by the existing media tests.

        * platform/GStreamer.cmake: New files.
        * platform/graphics/MediaPlayer.cpp: Add support for converting
        SupportsType enum to string.
        (WebCore::convertEnumerationToString):
        * platform/graphics/MediaPlayer.h: Ditto.
        * platform/graphics/MediaPlayerEnums.h: Ditto.
        * platform/graphics/gstreamer/GStreamerCommon.cpp: Move
        gstRegistryHasElementForMediaType to GStreamerRegistryScanner.
        * platform/graphics/gstreamer/GStreamerCommon.h: Ditto.
        * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: Added.
        (WebCore::GStreamerRegistryScanner::singleton):
        (WebCore::GStreamerRegistryScanner::GStreamerRegistryScanner): Initialize
        supported mime-types and codecs from the GStreamer registry.
        (WebCore::GStreamerRegistryScanner::~GStreamerRegistryScanner): Free the element factories.
        (WebCore::GStreamerRegistryScanner::gstRegistryHasElementForMediaType):
        Check the input caps are supported, optionally using hardware
        device.
        (WebCore::GStreamerRegistryScanner::fillMimeTypeSetFromCapsMapping):
        Moved from MediaPlayerPrivateGStreamer{,MSE}.
        (WebCore::GStreamerRegistryScanner::initialize): Ditto.
        (WebCore::GStreamerRegistryScanner::supportsCodec const): Ditto.
        (WebCore::GStreamerRegistryScanner::supportsAllCodecs const): Ditto.
        (WebCore::GStreamerRegistryScanner::isDecodingSupported const): Check
        the given configuration is supported. For now hardware support is
        checked for video configurations only as it is quite uncommon
        anyway to have hardware-enabled audio decoders.
        * platform/graphics/gstreamer/GStreamerRegistryScanner.h: Added.
        (WebCore::GStreamerRegistryScanner::mimeTypeSet):
        (WebCore::GStreamerRegistryScanner::supportsContainerType const):
        (WebCore::GStreamerRegistryScanner::RegistryLookupResult::operator bool const):
        * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp: Added.
        (WebCore::createMediaPlayerDecodingConfigurationGStreamer):
        * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h: Added.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        Rely on new GStreamerRegistryScanner and add some debugging macros.
        (WebCore::MediaPlayerPrivateGStreamer::getSupportedTypes):
        (WebCore::MediaPlayerPrivateGStreamer::supportsType):
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp: Ditto. Also
        plug qtdemux for AAC containers, this is an explicit consequence
        of finer-grained codecs probing.
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
        * platform/graphics/gstreamer/mse/GStreamerRegistryScannerMSE.cpp: Added.
        (WebCore::GStreamerRegistryScannerMSE::singleton):
        (WebCore::GStreamerRegistryScannerMSE::GStreamerRegistryScannerMSE):
        * platform/graphics/gstreamer/mse/GStreamerRegistryScannerMSE.h: Added.
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        Rely on new GStreamerRegistryScanner and add some debugging macros.
        (WebCore::MediaPlayerPrivateGStreamerMSE::getSupportedTypes):
        (WebCore::MediaPlayerPrivateGStreamerMSE::supportsType):
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::factories): GStreamer support.

2019-02-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Occasional crash under WebCore::CSSStyleSheet::item called from Inspector
        https://bugs.webkit.org/show_bug.cgi?id=194671
        <rdar://problem/47628191>

        Reviewed by Devin Rousso.

        * css/CSSStyleSheet.cpp:
        (WebCore::CSSStyleSheet::item):
        A crash may happen if the m_childRuleCSSOMWrappers Vector gets out of
        sync with the m_contents list of rules. In particular if the wrappers
        vector is shorter than the rule list. We tried exercising code paths
        that modify these lists but were not able to reproduce the crash.
        To avoid a crash we can make this access safer and avoid the original
        overflow. At the same time we will keep and promote the assertion that
        would catch the lists getting out of sync in debug builds.

2019-02-14  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed build fix for WinCairo Debug after r241559.

        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlContext::CurlContext):

2019-02-14  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * platform/NotImplemented.h:
        * platform/cocoa/SystemVersion.mm:
        (WebCore::createSystemMarketingVersion):
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::initializeGStreamer):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
        * platform/graphics/nicosia/NicosiaPaintingEngine.cpp:
        (Nicosia::PaintingEngine::create):
        * platform/graphics/texmap/TextureMapperFPSCounter.cpp:
        (WebCore::TextureMapperFPSCounter::TextureMapperFPSCounter):
        * platform/graphics/x11/PlatformDisplayX11.cpp:
        (WebCore::PlatformDisplayX11::create):
        * platform/gtk/RenderThemeWidget.cpp:
        (WebCore::RenderThemeScrollbar::RenderThemeScrollbar):
        * platform/gtk/ScrollbarThemeGtk.cpp:
        (WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk):
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlContext::CurlContext):
        (WebCore::EnvironmentVariableReader::read): Deleted.
        (WebCore::EnvironmentVariableReader::defined): Deleted.
        (WebCore::EnvironmentVariableReader::readAs): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate<signed>): Deleted.
        (WebCore::EnvironmentVariableReader::sscanTemplate<unsigned>): Deleted.
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::defaultCookieJarPath):
        * platform/network/playstation/CurlSSLHandlePlayStation.cpp:
        (WebCore::getCACertPathEnv):
        * platform/network/win/CurlSSLHandleWin.cpp:
        (WebCore::getCACertPathEnv):
        * platform/text/hyphen/HyphenationLibHyphen.cpp:
        (WebCore::topLevelPath):
        (WebCore::webkitBuildDirectory):
        * platform/unix/LoggingUnix.cpp:
        (WebCore::logLevelString):
        * platform/win/LoggingWin.cpp:
        (WebCore::logLevelString):
        Utilize WTF::Environment where possible.

2019-02-14  Chris Dumez  <cdumez@apple.com>

        [PSON] Introduce a WebContent Process cache
        https://bugs.webkit.org/show_bug.cgi?id=194594
        <rdar://problem/46793397>

        Reviewed by Geoff Garen.

        Update localizable strings.

        * en.lproj/Localizable.strings:

2019-02-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241486.
        https://bugs.webkit.org/show_bug.cgi?id=194655

        causing API failures in builds (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "[Cocoa] Media elements will restart network buffering just
        before suspending"
        https://bugs.webkit.org/show_bug.cgi?id=193691
        https://trac.webkit.org/changeset/241486

2019-02-13  Brian Burg  <bburg@apple.com>

        Web Inspector: don't include accessibility role in DOM.Node object payloads
        https://bugs.webkit.org/show_bug.cgi?id=194623
        <rdar://problem/36384037>

        Reviewed by Devin Rousso.

        Accessibility properties are complicated to fetch at all the points where we want to build and push nodes immediately.
        Turning on AX often indirectly causes style recalc and layout. This is bad because we are often building nodes in the
        first place due to a DOM node tree update (i.e., NodeInserted).

        It turns out that DOM.getAccessibilityPropertiesForNode is called every time we display
        the computed role in the Elements Tab > Nodes Sidebar > Accessibility Section. So it is not
        necessary to collect this information in a problematic way when initially pushing the node, as
        it will be updated anyway.

        No new tests, no change in behavior.

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::buildObjectForNode):

2019-02-14  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapse] Replaced boxes don't collapse through their margins
        https://bugs.webkit.org/show_bug.cgi?id=194622

        Reviewed by Antti Koivisto.

        Ensure that block replaced boxes don't collapse through their vertical margins. 

        Test: fast/block/block-only/block-replaced-with-vertical-margins.html

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-02-14  Zalan Bujtas  <zalan@apple.com>

        [LFC] Shrink-to-fit-width should be constrained by min/max width
        https://bugs.webkit.org/show_bug.cgi?id=194653

        Reviewed by Antti Koivisto.

        Use the fixed value of min-width/max-width to constrain the computed preferred width.

        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::constrainByMinMaxWidth):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):

2019-02-13  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in DOMTimer::fired
        https://bugs.webkit.org/show_bug.cgi?id=194638

        Reviewed by Brent Fulgham.

        This patch continues the saga of hunting down timer related crashes after r239814, r225985, r227934.

        The crash was caused by the bug that we don't remove a DOMTimer from NestedTimersMap if a DOMTimer
        is created & installed inside another DOMTimer's callback (via execute call in DOMTimer::fired).

        Fixed the crash by using a Ref in NestedTimersMap. This will keep the timer alive until we exit
        from DOMTimer::fired. Because DOMTimer::fired always calls stopTracking() which clears the map
        we would not leak these DOM timers.

        We could, alternatively, use WeakPtr in NestedTimersMap but that would unnecessarily increase the
        size of DOMTimer for a very marginal benefit of DOMTimer objcets being deleted slightly earlier.
        Deleting itself in DOMTimer's destructor involves more logic & house keeping in the timer code,
        and is no longer the preferred approach when dealing with these classes of bugs in WebKit.

        Test: fast/dom/timer-destruction-during-firing.html

        * page/DOMTimer.cpp:
        (WebCore::NestedTimersMap::add):
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):

2019-02-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Crash when inspecting an element that constantly changes visibility
        https://bugs.webkit.org/show_bug.cgi?id=194632
        <rdar://problem/48060258>

        Reviewed by Matt Baker and Devin Rousso.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::processAccessibilityChildren):
        (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
        Don't use rvalue-references as that was taking ownership and deleting
        the object we want to keep around. Instead simplify this to just use
        references so no ref counting changes happen.

2019-02-13  Chris Fleizach  <cfleizach@apple.com>

        AX: Crash in handleMenuOpen
        https://bugs.webkit.org/show_bug.cgi?id=194627

        Reviewed by Zalan Bujtas.

        Tests run under libGuardMalloc will cause crashes.

        This list of objects is a Node list, not an Element list, so we were
        not removing some nodes when they were being deallocated.

        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::remove):

2019-02-13  Jer Noble  <jer.noble@apple.com>

        [Mac] PiP window can get "stuck" if PiP is closed while Safari window is minimized.
        https://bugs.webkit.org/show_bug.cgi?id=194621
        <rdar://problem/48002560>

        Reviewed by Eric Carlson.

        When Safari is minimized, no rAF() requests are executed. Don't gate responding to presentation
        change events in the media-controller.js on rAF().

        * Modules/modern-media-controls/media/media-controller.js:
        (MediaController.prototype._returnMediaLayerToInlineIfNeeded):

2019-02-13  John Wilander  <wilander@apple.com>

        Ignore Ad Click Attribution where source and destination are same-site
        https://bugs.webkit.org/show_bug.cgi?id=194620
        <rdar://problem/47890018>

        Reviewed by Jiewen Tan.

        Updated the existing test.

        We should not accept Ad Click Attribution requests where the site of the
        anchor tag and its addestination attribute are same-site. Such attributions
        don’t make sense (the site can track intra-site clicks through better means)
        and would just lead to increased memory use where are the pending
        attributions are stored.

        For ports that don't have access to the Public Suffix List, this patch
        only checks that the hosts don't match, i.e. not just eTLD+1.

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
            Now returns WTF::nullopt if the current document and the
            addestination are same site. Also fixed a console message
            typo.

2019-02-13  Eric Carlson  <eric.carlson@apple.com> and Youenn Fablet  <youenn@apple.com>

        getUserMedia with an ideal deviceId constraint doesn't always select the correct device
        https://bugs.webkit.org/show_bug.cgi?id=193614

        Reviewed by Eric Carlson.

        Compute a fitness score based on constraints.
        For each constraint, a fitness score is computed from the distance.
        The smaller the distance, the higher the score.
        Fitness scores are then summed to give a device fitness score.
        Matching devices are then sorted according the fitness score.

        For important constraints, deviceId and facingMode, add a more important weight.
        This ensures that should any of these ideal constraints are set, they will be respected.

        Restrict our automatic setting of default constraints to not add a default ideal facingMode in case of existing deviceId constraint.
        Do not set a default ideal frameRate if width and height are already set.

        Covered by updated test.

        * platform/mediastream/MediaConstraints.cpp:
        (WebCore::FlattenedConstraint::set):
        (WebCore::MediaConstraints::setDefaultVideoConstraints):
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::fitnessDistance):
        (WebCore::RealtimeMediaSource::selectSettings):
        (WebCore::RealtimeMediaSource::supportsConstraints):
        (WebCore::RealtimeMediaSource::applyConstraints):
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):

2019-02-13  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Add a hack to work around buggy video control library
        https://bugs.webkit.org/show_bug.cgi?id=194615
        <rdar://problem/46146946>

        Reviewed by Jer Noble.

        Test: media/ios/video-volume-ios-quirk.html

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::setVolume): Change m_volume for one turn of the runloop.
        (WebCore::HTMLMediaElement::cancelPendingTasks): Clear the task queue used to restore m_volume.
        (WebCore::HTMLMediaElement::closeTaskQueues): Close it.
        * html/HTMLMediaElement.h:

2019-02-13  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Media elements will restart network buffering just before suspending
        https://bugs.webkit.org/show_bug.cgi?id=193691

        Reviewed by Eric Carlson.

        API Test: WebKit.ProcessSuspendMediaBuffering

        Allow the Page to suspend all media buffering in its child Documents.

        * dom/Document.cpp:
        (WebCore::Document::suspendAllMediaBuffering):
        (WebCore::Document::resumeAllMediaBuffering):
        * dom/Document.h:
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::dataBufferingPermitted const):
        (WebCore::MediaElementSession::suspendBuffering):
        (WebCore::MediaElementSession::resumeBuffering):
        (WebCore::MediaElementSession::bufferingSuspended const):
        * html/MediaElementSession.h:
        * page/Page.cpp:
        (WebCore::Page::suspendAllMediaBuffering):
        (WebCore::Page::resumeAllMediaBuffering):
        * page/Page.h:
        (WebCore::Page::mediaPlaybackIsSuspended const):
        (WebCore::Page::mediaBufferingIsSuspended const):
        (WebCore::Page::mediaPlaybackIsSuspended): Deleted.
        * platform/audio/PlatformMediaSession.h:
        (WebCore::PlatformMediaSession::suspendBuffering):
        (WebCore::PlatformMediaSession::resumeBuffering):
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
        (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
        * platform/audio/PlatformMediaSessionManager.h:

2019-02-13  Jer Noble  <jer.noble@apple.com>

        Entering fullscreen inside a shadow root will not set fullscreen pseudoclasses outside of root
        https://bugs.webkit.org/show_bug.cgi?id=194516
        <rdar://problem/44678353>

        Reviewed by Antoine Quint.

        Test: fast/shadow-dom/fullscreen-in-shadow-full-screen-ancestor.html

        When walking up the element ancestor chain, use parentElementInComposedTree() to
        walk past the shadow root boundary.

        * dom/Element.cpp:
        (WebCore::parentCrossingFrameBoundaries):

2019-02-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, update localizable strings.

        * en.lproj/Localizable.strings:

2019-02-12  Jiewen Tan  <jiewen_tan@apple.com>

        Further restricting webarchive loads
        https://bugs.webkit.org/show_bug.cgi?id=194567
        <rdar://problem/47610130>

        Reviewed by Youenn Fablet.

        This patch futher restricts main frame webarchive loads to the followings:
        1) loaded by clients;
        2) loaded by drag;
        3) reloaded from any of the previous two.

        It moves setAlwaysAllowLocalWebarchive, which is used for testing only, from Document
        to FrameLoader such that the option is remembered during redirections.

        Covered by API tests.

        * dom/Document.h:
        (WebCore::Document::setAlwaysAllowLocalWebarchive): Deleted.
        (WebCore::Document::alwaysAllowLocalWebarchive const): Deleted.
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::disallowWebArchive const):
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setAllowsWebArchiveForMainFrame):
        (WebCore::DocumentLoader::allowsWebArchiveForMainFrame):
        * loader/FrameLoadRequest.h:
        (WebCore::FrameLoadRequest::setIsRequestFromClientOrUserInput):
        (WebCore::FrameLoadRequest::isRequestFromClientOrUserInput):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::reload):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::setAlwaysAllowLocalWebarchive):
        (WebCore::FrameLoader::alwaysAllowLocalWebarchive const):
        * page/DragController.cpp:
        (WebCore::DragController::performDragOperation):
        * testing/Internals.cpp:
        (WebCore::Internals::setAlwaysAllowLocalWebarchive const):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-13  Jer Noble  <jer.noble@apple.com>

        Null-deref crash at SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged()
        https://bugs.webkit.org/show_bug.cgi?id=194613
        <rdar://problem/48023912>

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):

2019-02-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix unused variable warnings after r241148/r241251
        https://bugs.webkit.org/show_bug.cgi?id=194348
        <rdar://problem/47566449>

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveRenderingError):
        (WebCore::SourceBuffer::evictCodedFrames):
        (WebCore::SourceBuffer::provideMediaData):

2019-02-13  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION: [ Mac Debug WK2 ] Layout Test storage/indexeddb/key-type-infinity-private.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=194413
        <rdar://problem/47897254>

        Reviewed by Brady Eidson.

        IDB clients expected transaction operations to be executed in order, but in 
        UniqueIDBDatabase::immediateCloseForUserDelete, callbacks in callback map were errored out randomly.
        This patch added a callback queue to UniqueIDBDatabase to make sure callbacks will be called in the same order
        as IDB Server receives the request.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        (WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::performGetResultCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::performGetAllResultsCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::performCountCallback):
        (WebCore::IDBServer::UniqueIDBDatabase::forgetErrorCallback):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:

2019-02-13  John Wilander  <wilander@apple.com>

        Store Ad Click Attribution requests in the network process
        https://bugs.webkit.org/show_bug.cgi?id=194510
        <rdar://problem/47650118>

        Reviewed by Alex Christensen and Daniel Bates.

        Test: http/tests/adClickAttribution/store-ad-click-attribution.html

        This patch adds support functions for validation and storage of
        WebCore::AdClickAttribution objects. It also adds WTF::HashTraits so that
        WebCore::AdClickAttribution::Source and WebCore::AdClickAttribution::Destination
        can be used in a HashMap.

        * loader/AdClickAttribution.cpp:
        (WebCore::AdClickAttribution::toString const):
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::Source::operator== const):
        (WebCore::AdClickAttribution::Source::deletedValue):
        (WebCore::AdClickAttribution::Source::constructDeletedValue):
        (WebCore::AdClickAttribution::Source::deleteValue):
        (WebCore::AdClickAttribution::Source::isDeletedValue const):
        (WebCore::AdClickAttribution::SourceHash::hash):
        (WebCore::AdClickAttribution::SourceHash::equal):
        (WebCore::AdClickAttribution::Destination::operator== const):
        (WebCore::AdClickAttribution::Destination::matches const):
            This convenience function allows matching of a WTF::URL object.
        (WebCore::AdClickAttribution::Destination::deletedValue):
        (WebCore::AdClickAttribution::Destination::constructDeletedValue):
        (WebCore::AdClickAttribution::Destination::deleteValue):
        (WebCore::AdClickAttribution::Destination::isDeletedValue const):
        (WebCore::AdClickAttribution::DestinationHash::hash):
        (WebCore::AdClickAttribution::DestinationHash::equal):
        (WebCore::AdClickAttribution::source const):
        (WebCore::AdClickAttribution::destination const):
            Getters added to support mapped storage based on source and destination.
        (WTF::HashTraits<WebCore::AdClickAttribution::Source>::emptyValue):
        (WTF::HashTraits<WebCore::AdClickAttribution::Source>::constructDeletedValue):
        (WTF::HashTraits<WebCore::AdClickAttribution::Source>::isDeletedValue):
        (WTF::HashTraits<WebCore::AdClickAttribution::Destination>::emptyValue):
        (WTF::HashTraits<WebCore::AdClickAttribution::Destination>::constructDeletedValue):
        (WTF::HashTraits<WebCore::AdClickAttribution::Destination>::isDeletedValue):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::adClickAttribution const):
        (WebCore::NavigationAction::adClickAttribution): Deleted.
            Corrected the constness of this function.

2019-02-13  Eric Carlson  <eric.carlson@apple.com>

        Revert r240434
        https://bugs.webkit.org/show_bug.cgi?id=194600
        <rdar://problem/48044566>

        Reviewed by Brent Fulgham.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::setVolume):
        (WebCore::HTMLMediaElement::mediaPlayerVolumeChanged):
        (WebCore::HTMLMediaElement::updateVolume):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVolume):

2019-02-13  Alex Christensen  <achristensen@webkit.org>

        Stop using setDefersLoading from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=194315

        Reviewed by Jer Noble.

        That is what CompletionHandlers are for.

        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResource::responseReceived):
        (WebCore::MediaResource::setDefersLoading): Deleted.
        * loader/MediaResourceLoader.h:
        * platform/graphics/PlatformMediaResourceLoader.h:
        (WebCore::PlatformMediaResourceClient::responseReceived):
        (WebCore::PlatformMediaResource::stop):
        (WebCore::PlatformMediaResource::setDefersLoading): Deleted.
        * platform/network/cocoa/WebCoreNSURLSession.mm:
        (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived):
        (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]):
        (-[WebCoreNSURLSessionDataTask _setDefersLoading:]): Deleted.
        (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]): Deleted.

2019-02-13  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Switch to CVPixelBufferGetBytesPerRow() for calculating CVPixelBuffer base address size.
        https://bugs.webkit.org/show_bug.cgi?id=194580
        <rdar://problem/42727739>

        Reviewed by Eric Carlson.

        * platform/cocoa/CoreVideoSoftLink.cpp:
        * platform/cocoa/CoreVideoSoftLink.h:
        * platform/graphics/cv/PixelBufferConformerCV.cpp:
        (WebCore::CVPixelBufferGetBytePointerCallback):
        (WebCore::PixelBufferConformerCV::createImageFromPixelBuffer):

2019-02-13  Antoine Quint  <graouts@apple.com>

        Support simulated mouse events on iOS based on a PlatformTouchEvent
        https://bugs.webkit.org/show_bug.cgi?id=194501
        <rdar://problem/46910790>

        Reviewed by Dean Jackson.

        Add support for two new internal runtime flags to control whether simulated mouse events should be dipatched along with touch events and
        whether simulated mousemove events dispatched should automatically trigger the behavior preventDefault() would also trigger. To facilitate
        that, we allow for a MouseEvent to be created, much like a PointerEvent, based on a PlatformTouchEvent. Then, we set a flag on Event within
        EventTarget::innerInvokeEventListeners() to see whether any page code has been evaluated as a result of a mousemove event being dispatched.
        Finally, we also track mouse events when invalidating touch regions provided the required internal runtime flag is on.

        Test: fast/events/touch/ios/mouse-events-dispatch-with-touch.html

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Event.cpp:
        * dom/Event.h:
        (WebCore::Event::hasEncounteredListener const):
        (WebCore::Event::setHasEncounteredListener):
        * dom/EventNames.h:
        (WebCore::EventNames::isTouchRelatedEventType const):
        (WebCore::EventNames::touchRelatedEventNames const):
        (WebCore::EventNames::extendedTouchRelatedEventNames const):
        (WebCore::EventNames::isTouchEventType const): Deleted.
        (WebCore::EventNames::touchAndPointerEventNames const): Deleted.
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::innerInvokeEventListeners):
        * dom/MouseEvent.h:
        * dom/Node.cpp:
        (WebCore::Node::moveNodeToNewDocument):
        (WebCore::tryAddEventListener):
        (WebCore::tryRemoveEventListener):
        (WebCore::Node::defaultEventHandler):
        * dom/ios/MouseEventIOS.cpp: Added.
        (WebCore::mouseEventType):
        (WebCore::MouseEvent::create):
        * dom/ios/PointerEventIOS.cpp:
        (WebCore::pointerEventType):
        (WebCore::PointerEvent::create):
        (WebCore::eventType): Deleted.
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        (WebCore::DOMWindow::removeEventListener):
        * page/EventHandler.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::mouseEventsSimulationEnabled const):
        (WebCore::RuntimeEnabledFeatures::setMouseEventsSimulationEnabled):
        (WebCore::RuntimeEnabledFeatures::mousemoveEventHandlingPreventsDefaultEnabled const):
        (WebCore::RuntimeEnabledFeatures::setMousemoveEventHandlingPreventsDefaultEnabled):

2019-02-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Unable to render some Hebrew characters
        https://bugs.webkit.org/show_bug.cgi?id=194498

        Reviewed by Michael Catanzaro.

        We are failing to find a font for some of the combining character sequences because normalization is failing due
        to overflow error. In case of overflow, normalize returns the required length for the normalized characters, so
        we should handle that case to resize the output buffer and try again.

        * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
        (WebCore::FontCascade::fontForCombiningCharacterSequence const):

2019-02-13  Ryosuke Niwa  <rniwa@webkit.org>

        Release assert in PolicyCheckIdentifier::isValidFor via WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction
        https://bugs.webkit.org/show_bug.cgi?id=194582

        Reviewed by Antti Koivisto.

        Check the zero-ness of m_policyCheck first so that we can differentiate process ID being wrong
        from the non-generated identifier being sent to us as it was the case in this failure.

        * loader/PolicyChecker.cpp:
        (WebCore::PolicyCheckIdentifier::isValidFor):

2019-02-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241273.
        https://bugs.webkit.org/show_bug.cgi?id=194579

        This change is causing a flaky assertion failure crash in High
        Sierra Debug (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "Stop using setDefersLoading from WebCore"
        https://bugs.webkit.org/show_bug.cgi?id=194315
        https://trac.webkit.org/changeset/241273

2019-02-12  Mark Lam  <mark.lam@apple.com>

        Remove unnecessary null check in bindings.
        https://bugs.webkit.org/show_bug.cgi?id=194581

        Reviewed by Yusuke Suzuki.

        It is always safe to call visitor.containsOpaqueRoot(root) with a null root pointer.
        It will just return false.  Since we don't expect the root pointer to be null in
        the common case, having a null check here is also not optimal.  We'll remove this
        unneeded null check.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        (WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots):

2019-02-12  Rob Buis  <rbuis@igalia.com>

        Align with Fetch on data: URLs
        https://bugs.webkit.org/show_bug.cgi?id=182325

        Reviewed by Alex Christensen.

        The MIME type part of the data url should be serialized as
        specified in step 3 under "data" [1].

        Test: web-platform-tests/fetch/data-urls/processing.any.js

        [1] https://fetch.spec.whatwg.org/#concept-scheme-fetch 

        * platform/network/DataURLDecoder.cpp:
        (WebCore::DataURLDecoder::parseMediaType):

2019-02-12  Alex Christensen  <achristensen@webkit.org>

        Build fix after r241320
        https://bugs.webkit.org/show_bug.cgi?id=194271

        * page/Frame.cpp:
        (WebCore::Frame::requestDOMPasteAccess):

2019-02-12  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Remove WebGPUBufferDescriptor/Usage and use GPU versions
        https://bugs.webkit.org/show_bug.cgi?id=194552

        Reviewed by Dean Jackson.

        WebGPUBufferDescriptor/Usage have been renamed to GPUBufferDescriptor/Usage in the Web GPU API.
        Consolidate the two versions of these classes in our implementation.

        Affected layout tests updated with new names. No change in behavior.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Modules/webgpu/GPUBufferDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUBufferDescriptor.idl.
        * Modules/webgpu/GPUBufferUsage.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUBufferUsage.idl.
        * Modules/webgpu/WebGPUBufferUsage.h: Removed.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBuffer const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * platform/graphics/gpu/GPUBufferDescriptor.h: Moved out GPUBufferUsage.
        * platform/graphics/gpu/GPUBufferUsage.h: Moved from GPUBufferDescriptor.h.

2019-02-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the internal iOS build after r241321

        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

2019-02-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Allow pages to trigger programmatic paste from script on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194271
        <rdar://problem/47808810>

        Reviewed by Tim Horton.

        Tests: editing/pasteboard/ios/dom-paste-confirmation.html
               editing/pasteboard/ios/dom-paste-consecutive-confirmations.html
               editing/pasteboard/ios/dom-paste-rejection.html
               editing/pasteboard/ios/dom-paste-requires-user-gesture.html

        * dom/UserGestureIndicator.cpp:
        (WebCore::UserGestureIndicator::~UserGestureIndicator):

        Reset a gesture token's DOM paste access when exiting the scope of a user gesture. This prevents DOM paste
        access permissions from leaking into `setTimeout()` callbacks when we forward user gesture tokens.

        * dom/UserGestureIndicator.h:
        (WebCore::UserGestureToken::resetDOMPasteAccess):

2019-02-12  Chris Fleizach  <cfleizach@apple.com>

        AX: IsolatedTree: Implement more attributes
        https://bugs.webkit.org/show_bug.cgi?id=193911
        <rdar://problem/47599217>

        Reviewed by Daniel Bates.

        Make use of new HIServices SPI to use a secondary AX thread.
        Store root node/focused node status in IsolatedTree rather than on the element.
        Implement the following attributes: children, parent, isIgnored, isTree, isTreeItem, relativeFrame, speechHint, title, description.
        Implement hit-testing using relative-frames.
        Ensure that WKAccessibilityWebPageObject queries happen on main thread when they need to.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::generateIsolatedAccessibilityTree):
        * accessibility/AXObjectCache.h:
        (WebCore::AXObjectCache::focusedUIElementForPage):
        * accessibility/AccessibilityAttachment.cpp:
        (WebCore::AccessibilityAttachment::accessibilityText const):
        (WebCore::AccessibilityAttachment::accessibilityText): Deleted.
        * accessibility/AccessibilityAttachment.h:
        * accessibility/AccessibilityImageMapLink.cpp:
        (WebCore::AccessibilityImageMapLink::accessibilityText const):
        (WebCore::AccessibilityImageMapLink::accessibilityText): Deleted.
        * accessibility/AccessibilityImageMapLink.h:
        * accessibility/AccessibilityMediaControls.cpp:
        (WebCore::AccessibilityMediaControl::accessibilityText const):
        (WebCore::AccessibilityMediaControl::accessibilityText): Deleted.
        * accessibility/AccessibilityMediaControls.h:
        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::accessibilityText const):
        (WebCore::AccessibilityNodeObject::accessibilityText): Deleted.
        * accessibility/AccessibilityNodeObject.h:
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::convertFrameToSpace const):
        (WebCore::AccessibilityObject::relativeFrame const):
        (WebCore::AccessibilityObject::elementAccessibilityHitTest const):
        (WebCore::AccessibilityObject::focusedUIElement const):
        * accessibility/AccessibilityObject.h:
        (WebCore::AccessibilityObject::accessibilityText const):
        (WebCore::AccessibilityObject::isLink const): Deleted.
        (WebCore::AccessibilityObject::isImage const): Deleted.
        (WebCore::AccessibilityObject::isAttachment const): Deleted.
        (WebCore::AccessibilityObject::isFileUploadButton const): Deleted.
        (WebCore::AccessibilityObject::isImageMapLink const): Deleted.
        (WebCore::AccessibilityObject::isMediaControlLabel const): Deleted.
        (WebCore::AccessibilityObject::isTree const): Deleted.
        (WebCore::AccessibilityObject::isTreeItem const): Deleted.
        (WebCore::AccessibilityObject::isScrollbar const): Deleted.
        (WebCore::AccessibilityObject::accessibilityHitTest const): Deleted.
        (WebCore::AccessibilityObject::accessibilityText): Deleted.
        (WebCore::AccessibilityObject::roleValue const): Deleted.
        (WebCore::AccessibilityObject::wrapper const): Deleted.
        * accessibility/AccessibilityObjectInterface.h: Replaced.
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::isTabItemSelected const):
        (WebCore::AccessibilityRenderObject::remoteSVGElementHitTest const):
        (WebCore::AccessibilityRenderObject::elementAccessibilityHitTest const):
        (WebCore::AccessibilityRenderObject::accessibilityHitTest const):
        (WebCore::AccessibilityRenderObject::selectedChildren):
        * accessibility/AccessibilityRenderObject.h:
        * accessibility/AccessibilitySVGElement.cpp:
        (WebCore::AccessibilitySVGElement::accessibilityText const):
        (WebCore::AccessibilitySVGElement::accessibilityText): Deleted.
        * accessibility/AccessibilitySVGElement.h:
        * accessibility/AccessibilityScrollView.cpp:
        (WebCore::AccessibilityScrollView::accessibilityHitTest const):
        * accessibility/AccessibilityScrollView.h:
        * accessibility/ios/AccessibilityObjectIOS.mm:
        (WebCore::AccessibilityObject::fileUploadButtonReturnsValueInTitle const):
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper fileUploadButtonReturnsValueInTitle]): Deleted.
        * accessibility/isolatedtree: Replaced.
        * accessibility/isolatedtree/AXIsolatedTree.cpp: Added.
        (WebCore::AXIsolatedTree::treePageCache):
        (WebCore::AXIsolatedTree::AXIsolatedTree):
        (WebCore::AXIsolatedTree::nodeInTreeForID):
        (WebCore::AXIsolatedTree::nodeForID const):
        (WebCore::AXIsolatedTree::focusedUIElement):
        (WebCore::AXIsolatedTree::setRootNodeID):
        (WebCore::AXIsolatedTree::setFocusedNodeID):
        (WebCore::AXIsolatedTree::setInitialRequestInProgress):
        (WebCore::AXIsolatedTree::applyPendingChanges):
        * accessibility/isolatedtree/AXIsolatedTree.h: Added.
        * accessibility/isolatedtree/AXIsolatedTreeNode.cpp: Added.
        (WebCore::AXIsolatedTreeNode::AXIsolatedTreeNode):
        (WebCore::AXIsolatedTreeNode::~AXIsolatedTreeNode):
        (WebCore::AXIsolatedTreeNode::initializeAttributeData):
        (WebCore::AXIsolatedTreeNode::setProperty):
        (WebCore::AXIsolatedTreeNode::setParent):
        (WebCore::AXIsolatedTreeNode::setTreeIdentifier):
        (WebCore::AXIsolatedTreeNode::focusedUIElement const):
        (WebCore::AXIsolatedTreeNode::parentObjectInterfaceUnignored const):
        (WebCore::AXIsolatedTreeNode::accessibilityHitTest const):
        (WebCore::AXIsolatedTreeNode::tree const):
        (WebCore::AXIsolatedTreeNode::rectAttributeValue const):
        (WebCore::AXIsolatedTreeNode::stringAttributeValue const):
        * accessibility/isolatedtree/AXIsolatedTreeNode.h: Added.
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::associateIsolatedTreeNode):
        * accessibility/mac/AccessibilityObjectBase.mm: Added.
        (WebCore::AccessibilityObject::speechHintAttributeValue const):
        (WebCore::AccessibilityObject::descriptionAttributeValue const):
        (WebCore::AccessibilityObject::titleAttributeValue const):
        (WebCore::AccessibilityObject::helpTextAttributeValue const):
        * accessibility/mac/AccessibilityObjectMac.mm:
        (WebCore::AccessibilityObject::fileUploadButtonReturnsValueInTitle const):
        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (addChildToArray):
        (convertToNSArray):
        (-[WebAccessibilityObjectWrapperBase isolatedTreeNode]):
        (-[WebAccessibilityObjectWrapperBase detach]):
        (-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):
        (-[WebAccessibilityObjectWrapperBase accessibilityObject]):
        (-[WebAccessibilityObjectWrapperBase baseAccessibilityTitle]):
        (-[WebAccessibilityObjectWrapperBase axBackingObject]):
        (-[WebAccessibilityObjectWrapperBase baseAccessibilityDescription]):
        (-[WebAccessibilityObjectWrapperBase baseAccessibilitySpeechHint]):
        (-[WebAccessibilityObjectWrapperBase baseAccessibilityHelpText]):
        (convertPathToScreenSpaceFunction):
        (-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
        (-[WebAccessibilityObjectWrapperBase ariaLandmarkRoleDescription]):
        (-[WebAccessibilityObjectWrapperBase titleTagShouldBeUsedInDescriptionField]): Deleted.
        (-[WebAccessibilityObjectWrapperBase fileUploadButtonReturnsValueInTitle]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
        (-[WebAccessibilityObjectWrapper childrenVectorSize]):
        (-[WebAccessibilityObjectWrapper childrenVectorArray]):
        (-[WebAccessibilityObjectWrapper position]):
        (-[WebAccessibilityObjectWrapper subrole]):
        (-[WebAccessibilityObjectWrapper roleDescription]):
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        (-[WebAccessibilityObjectWrapper accessibilityFocusedUIElement]):
        (-[WebAccessibilityObjectWrapper accessibilityHitTest:]):
        (-[WebAccessibilityObjectWrapper accessibilityIndexOfChild:]):
        (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeCount:]):
        (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):

2019-02-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Allow pages to trigger programmatic paste from script on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194271
        <rdar://problem/47808810>

        Reviewed by Ryosuke Niwa.

        Add support for allowing script to trigger programmatic paste commands. Currently on macOS and iOS, the ability
        to trigger programmatic paste (i.e. `document.execCommand('Paste');`) is disabled by default, such that
        execCommand is simply a no-op that returns false. This policy is a privacy measure (common among other major
        browsers) that prevents untrusted web content from sniffing content from the system pasteboard (even on user
        interaction, since unintended user interaction occasionally happens as well!).

        In order to make it possible for web pages to programmatically paste without opening the door to privacy and
        security issues, we make paste commands triggered from bindings present platform UI on iOS, in the form of a
        callout bar with the single option to paste. This UI is dismissed upon any user interaction; furthermore, any
        user interaction short of explicitly triggering the "Paste" action subsequently prevents the page from executing
        the paste (and causes execCommand to return false). However, if the paste action is chosen by the user, we
        instead follow through with the programmatic paste command.

        New tests to come in a followup patch.

        * WebCore.xcodeproj/project.pbxproj:
        * dom/DOMPasteAccessPolicy.h: Added.
        * dom/UserGestureIndicator.h:
        (WebCore::UserGestureToken::domPasteAccessPolicy const):
        (WebCore::UserGestureToken::didRequestDOMPasteAccess):

        Add helpers on UserGestureToken to update and query the current DOM paste access policy. The access policies are
        "NotRequestedYet" (i.e. pending a response from the user), "Granted" (the user has granted DOM paste access to
        the page), or "Denied" (the user has prevented the page from reading the contents of the clipboard). When DOM
        paste access is granted or rejected, make this decision sticky until the end of the current user gesture.

        * editing/EditorCommand.cpp:
        (WebCore::executePaste):
        (WebCore::executePasteAndMatchStyle):
        (WebCore::executePasteAsPlainText):
        (WebCore::executePasteAsQuotation):

        When executing a paste command where the source is DOM bindings, request DOM paste if needed before proceeding
        with the paste.

        (WebCore::supportedPaste):
        * loader/EmptyClients.cpp:
        * page/EditorClient.h:
        * page/Frame.cpp:
        (WebCore::Frame::requestDOMPasteAccess):

        Add a helper method that requests access to the clipboard on behalf of script when pasting.

        * page/Frame.h:
        * page/Settings.yaml:

        Introduce a new WebCore setting, used to gate DOM paste access requests.

2019-02-12  Alex Christensen  <achristensen@webkit.org>

        Remove setDefersLoading infrastructure from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=194506

        Reviewed by Brady Eidson.

        setDefersLoading is inherently racy from WebCore to the NetworkProcess,
        it adds unwanted complexity to the initialization and use of network objects,
        and it has led to many unrecoverable hang bugs over the years.
        We needed to force it into WebKit2 to transition some existing clients who relied on it,
        but we have recently finished transitioning those clients to other solutions, mostly
        completion handlers.

        * inspector/PageScriptDebugServer.cpp:
        (WebCore::PageScriptDebugServer::setJavaScriptPaused):

2019-02-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix build warnings after content extensions enablement
        https://bugs.webkit.org/show_bug.cgi?id=193622
        <rdar://problem/47982850>

        * contentextensions/DFABytecode.h:
        (WebCore::ContentExtensions::instructionSizeWithArguments):
        * contentextensions/DFABytecodeCompiler.h:
        * contentextensions/URLFilterParser.cpp:
        (WebCore::ContentExtensions::URLFilterParser::statusString):

2019-02-12  Justin Fan  <justin_fan@apple.com>

        [Web GPU] DepthStencilAttachment implementation
        https://bugs.webkit.org/show_bug.cgi?id=194458
        <rdar://problem/47932446>

        Reviewed by Dean Jackson.

        Implement ability to provide a depth attachment to the render pass encoder. Also implement
        GPULoad/StoreOp and update color attachments' implementation for full functionality.

        Test: webgpu/depth-enabled-triangle-strip.html

        Update project files for new symbols:
        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

        * Modules/webgpu/GPUColor.idl: Renamed from WebGPUColor.idl
        * Modules/webgpu/GPULoadOp.idl: Added. Interface for attachment operation enum.
        * Modules/webgpu/GPUStoreOp.idl: Ditto.
        * Modules/webpug/WebGPUColor.h: Removed.
        * Modules/webgpu/WebGPUCommandBuffer.cpp: Refactored descriptor validation logic out of this file.
        (WebCore::WebGPUCommandBuffer::beginRenderPass):
        * Modules/webgpu/WebGPURenderPassDescriptor.cpp: Added. Now owns code for validating descriptors.
        (WebCore::WebGPURenderPassDescriptor::validateAndConvertToGPUVersion const):
        * Modules/webgpu/WebGPURenderPassColorAttachmentDescriptor.h/idl: Removed. Code moved into WebGPURenderPassDescriptor.
        * Modules/webgpu/WebGPURenderPassDescriptor.h: Move sub-descriptor definitions into this file.
        * Modules/webgpu/WebGPURenderPassDescriptor.idl: Ditto.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h: Make depthStencilState optional to match API update.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl: Ditto.
        * Modules/webgpu/WebGPUTextureView.h:
        * platform/graphics/gpu/GPULoadOp.h: Added.
        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h: Removed (moved into GPURenderPassDescriptor).
        * platform/graphics/gpu/GPURenderPassDescriptor.h: Mirror WebGPU* changes.
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Make depthStencilState optional.
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
        * platform/graphics/gpu/GPUStoreOp.h: Added.
        * platform/graphics/gpu/GPUTexture.h:
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::loadActionForGPULoadOp): Added.
        (WebCore::storeActionForGPUStoreOp): Added.
        (WebCore::populateMtlColorAttachmentsArray): Added. Create all expected color attachments, rather than just the first.
        (WebCore::populateMtlDepthStencilAttachment): Added.
        (WebCore::GPURenderPassEncoder::create):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Make depthStencilState optional.
        (WebCore::GPURenderPipeline::create):

2019-02-12  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r238955, r240494): Soft-linking optional Lookup.framework triggers release assertion when missing
        <https://webkit.org/b/194529>
        <rdar://problem/47924449>

        Reviewed by Eric Carlson.

        * SourcesCocoa.txt:
        - Do not include DataDetectorsCoreSoftLink.mm in unified
          sources.
        * WebCore.xcodeproj/project.pbxproj:
        - Add DataDetectorsCoreSoftLink.mm to the WebCore target now
          that it isn't part of the unifed sources.
        * platform/cocoa/DataDetectorsCoreSoftLink.mm:
        - Switch from using SOFT_LINK_PRIVATE_FRAMEWORK_OPTIONAL() to
          SOFT_LINK_PRIVATE_FRAMEWORK_FOR_SOURCE() when linking
          DataDetectorsCore.framework. None of the other macros assume
          this framework is optional, and it was likely made optional
          originally because the framework was new to iOS and thus
          didn't exist on older versions.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        - Change use of SOFT_LINK_CLASS_FOR_SOURCE() macros to
          SOFT_LINK_CLASS() since the latter can only be used with
          SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation).  This broke after
          the fix for <wtf/SoftLinking.h> was applied.

2019-02-12  Youenn Fablet  <youenn@apple.com>

        Make use of is<SubresourceLoader>
        https://bugs.webkit.org/show_bug.cgi?id=194541

        Reviewed by Alex Christensen.

        No change of behavior.

        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::didReceiveResponse):
        * loader/SubresourceLoader.h:
        (isType):

2019-02-12  Mark Lam  <mark.lam@apple.com>

        Add some null checks in JSNodeCustom.h's root() and generated isReachableFromOpaqueRoots() functions.
        https://bugs.webkit.org/show_bug.cgi?id=194530
        <rdar://problem/47973274>

        Reviewed by Chris Dumez.

        This is needed to fix a null pointer dereference that arises from the following scenario:
        1. a Document detaches from its StyleSheetList.
        2. the JSStyleSheetList that is associated with the detached StyleSheetList has yet
           to be scanned and collected by the GC.
        3. the GC eventually looks for the opaque root of the StyleSheetList's owner, and
           discovers a null owner pointer.

        This patch fixes this issue by applying the following null checks:

        1. Add a null check in JSNodeCustom.h's root().

           root() is called from a isReachableFromOpaqueRoots() generated by CodeGeneratorJS.pm.
           isReachableFromOpaqueRoots() calls a ownerNode() method and passes its result
           to root().  However, depending on which class the ownerNode() method belongs to,
           it can either return a pointer or a reference.  The null check only makes sense
           in the pointer case.

           To accommodate the 2 forms, root() itself is has an overload that takes a
           reference instead of a pointer.

           Since CodeGeneratorJS.pm can't tell what the generated class' ownerNode()
           returns, it can't discern when the result is a pointer and apply the null check.
           Instead, we just add the null check to the version of root() that takes a
           pointer.  If the node pointer is null, we'll return a null opaque root.

        2. Fix CodeGeneratorJS.pm to null check the opaque root before using it.

        * bindings/js/JSNodeCustom.h:
        (WebCore::root):
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        (WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots):

2019-02-12  Andy Estes  <aestes@apple.com>

        [iOSMac] Enable Parental Controls Content Filtering
        https://bugs.webkit.org/show_bug.cgi?id=194521
        <rdar://39732376>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * platform/ContentFilterUnblockHandler.h:
        * platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
        * platform/cocoa/ParentalControlsContentFilter.mm:

2019-02-11  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix; add a HAVE_CELESTIAL guard around Celestial framework usage.

        * platform/audio/ios/MediaSessionManagerIOS.h:
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::providePresentingApplicationPIDIfNecessary):

2019-02-12  Antti Koivisto  <antti@apple.com>

        Crash in WebCore::ScrollingTree::updateTreeFromStateNode
        https://bugs.webkit.org/show_bug.cgi?id=194538
        <rdar://problem/47841926>

        Reviewed by Zalan Bujtas.

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::updateTreeFromStateNode):

        Make sure we don't leave node entry behind in m_nodeMap in case we failed to add it to the parent.

2019-02-12  Zalan Bujtas  <zalan@apple.com>

        [LFC] Remove redundant InlineFormattingContext::computeBorderAndPadding
        https://bugs.webkit.org/show_bug.cgi?id=194540

        Reviewed by Antti Koivisto.

        Use FormattingContext::computeBorderAndPadding instead.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeBorderAndPadding const):
        * layout/FormattingContext.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeBorderAndPadding const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-12  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add intrinsic width support for float boxes.
        https://bugs.webkit.org/show_bug.cgi?id=194528

        Reviewed by Antti Koivisto.

        This patch implements a very simple float box support for intrinsic width.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFloatBox const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForInlineBlock const):
        (WebCore::Layout::InlineFormattingContext::computeMargin const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingContextRoot const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-12  Rob Buis  <rbuis@igalia.com>

        Implement serializing in MIME type parser
        https://bugs.webkit.org/show_bug.cgi?id=193909

        Reviewed by Darin Adler.

        Implement serializing in MIME type parser [1], to preserve the parameter
        order the Vector m_parameterNames is introduced, since HashMaps do not
        guarantee any order.

        Test: ParsedContentType.Serialize

        [1] https://mimesniff.spec.whatwg.org/#serializing-a-mime-type

        * platform/network/ParsedContentType.cpp:
        (WebCore::skipSpaces):
        (WebCore::parseQuotedString):
        (WebCore::ParsedContentType::parseContentType):
        (WebCore::ParsedContentType::parameterValueForName const):
        (WebCore::ParsedContentType::parameterCount const):
        (WebCore::ParsedContentType::setContentType):
        (WebCore::ParsedContentType::setContentTypeParameter):
        (WebCore::ParsedContentType::serialize const):
        * platform/network/ParsedContentType.h:

2019-02-08  Chris Fleizach  <cfleizach@apple.com>

        AXObjectCache::childrenChanged shouldn't update layout or style during another style recalc
        https://bugs.webkit.org/show_bug.cgi?id=182280
        <rdar://problem/37018386>

        Reviewed by Alan Bujtas.

        Remove the possibility that changing children calls back into updating layout by
        handling children changes in a deferred manner.

        This follows the same architecture as many other deferred changes, but also requires us to check deferred changes
        in updateBackingStore, because things like aria-hidden changes won't trigger a layout, but will require us to update children.

        A few tests had to be modified to no longer change the tree and then check the children immediately. 

        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::remove):
        (WebCore::AXObjectCache::childrenChanged):
        (WebCore::AXObjectCache::prepareForDocumentDestruction):
        (WebCore::AXObjectCache::performDeferredCacheUpdate):
        * accessibility/AXObjectCache.h:
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::updateBackingStore):
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (convertToNSArray):
        (-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):

2019-02-11  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Ask platform for generic font family mappings
        https://bugs.webkit.org/show_bug.cgi?id=187723
        <rdar://problem/41892438>

        Reviewed by Brent Fulgham.

        WebKit API allows setting the generic font families for the USCRIPT_COMMON script.
        When trying to style a character with a generic font family, we first look to see if
        we have a mapping for the particular script the character is rendered with, and if we
        don't find a match, we then check USCRIPT_COMMON.

        In the Cocoa ports, the only way families get set for non-USCRIPT_COMMON scripts (aka
        the only scripts which won't use the API families) is in
        SettingsBase::initializeDefaultFontFamilies(). That function only sets the families
        for the CJK scripts.

        The mappings inside SettingsBase are incorrect and conflict with our policy regarding
        user-installed fonts. Instead, we should be consulting with the platform for some of
        these mappings, by calling CTFontDescriptorCreateForCSSFamily(). However, the WebKit
        API still has to work to set the mappings for untagged content. Therefore, we use the
        system mappings for language-tagged content, and the API mappings for non-language-tagged
        content. This is a good balance that makes sure we always have a good mapping for every
        language, but API clients can still set the mappings, too.

        Test: fast/text/ja-sans-serif.html

        * css/CSSComputedStyleDeclaration.cpp:
        * css/CSSFontSelector.cpp:
        (WebCore::resolveGenericFamily):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeFontFamily):
        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::initializeDefaultFontFamilies):
        (WebCore::osakaMonoIsInstalled): Deleted.
        * platform/graphics/FontDescription.cpp:
        (WebCore::FontDescription::platformResolveGenericFamily):
        * platform/graphics/FontDescription.h:
        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::computeSpecializedChineseLocale):
        (WebCore::cachedSpecializedChineseLocale):
        (WebCore::languageChanged):
        (WebCore::FontDescription::platformResolveGenericFamily):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
        (WebCore::SystemFontDatabaseCoreText::clear):
        (WebCore::genericFamily):
        (WebCore::SystemFontDatabaseCoreText::serifFamily):
        (WebCore::SystemFontDatabaseCoreText::sansSerifFamily):
        (WebCore::SystemFontDatabaseCoreText::cursiveFamily):
        (WebCore::SystemFontDatabaseCoreText::fantasyFamily):
        (WebCore::SystemFontDatabaseCoreText::monospaceFamily):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.h:

2019-02-11  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Add content extensions support in WKTR and unskip layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193622

        Reviewed by Michael Catanzaro.

        No new tests needed.

        * SourcesCocoa.txt: Remove loader/ResourceLoadInfo.cpp, it's not Cocoa-specific anymore.
        * Sources.txt: Add loader/ResourceLoadInfo.cpp, all ports use it now.

2019-02-11  Daniel Bates  <dabates@apple.com>

        [iOS] Mouse/Touch/Pointer events are missing modifier keys
        https://bugs.webkit.org/show_bug.cgi?id=191446
        <rdar://problem/45929460>

        Reviewed by Tim Horton.

        Extract the modifier flags from the WebEvent. This code is only used by Legacy WebKit
        on iOS and we will need to fix <rdar://problem/47929759> in order for modifier flags
        to be passed to WebKit.

        Tests: fast/events/touch/ios/mouse-events-with-modifiers.html
               fast/events/touch/ios/pointer-events-with-modifiers.html
               fast/events/touch/ios/touch-events-with-modifiers.html

        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithMouseEventType:timeStamp:location:]):
        (-[WebEvent initWithMouseEventType:timeStamp:location:modifiers:]):

2019-02-11  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Notify AVSystemController of our presenting PID before registering as a Now Playing app.
        https://bugs.webkit.org/show_bug.cgi?id=194504

        Reviewed by Eric Carlson.

        This allows the MediaRemote framework to associate the WebContent process with its host application.

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::start):
        * platform/audio/PlatformMediaSessionManager.h:
        (WebCore::PlatformMediaSessionManager::prepareToSendUserMediaPermissionRequest):
        * platform/audio/cocoa/MediaSessionManagerCocoa.h:
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
        (MediaSessionManagerCocoa::prepareToSendUserMediaPermissionRequest):
        (MediaSessionManagerCocoa::providePresentingApplicationPIDIfNecessary):
        (MediaSessionManagerCocoa::updateNowPlayingInfo):

2019-02-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241272 and r241276.
        https://bugs.webkit.org/show_bug.cgi?id=194514

        Broke the Apple Internal build and the fix requires human
        intervention :( (Requested by dydz on #webkit).

        Reverted changesets:

        "[iOS] Mouse/Touch/Pointer events are missing modifier keys"
        https://bugs.webkit.org/show_bug.cgi?id=191446
        https://trac.webkit.org/changeset/241272

        "Fix internal iOS build after r241272"
        https://bugs.webkit.org/show_bug.cgi?id=191446
        https://trac.webkit.org/changeset/241276

2019-02-11  Alex Christensen  <achristensen@webkit.org>

        Stop using setDefersLoading from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=194315

        Reviewed by Jer Noble.

        That is what CompletionHandlers are for.

        * loader/MediaResourceLoader.cpp:
        (WebCore::MediaResource::responseReceived):
        (WebCore::MediaResource::setDefersLoading): Deleted.
        * loader/MediaResourceLoader.h:
        * platform/graphics/PlatformMediaResourceLoader.h:
        (WebCore::PlatformMediaResourceClient::responseReceived):
        (WebCore::PlatformMediaResource::stop):
        (WebCore::PlatformMediaResource::setDefersLoading): Deleted.
        * platform/network/cocoa/WebCoreNSURLSession.mm:
        (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived):
        (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]):
        (-[WebCoreNSURLSessionDataTask _setDefersLoading:]): Deleted.
        (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]): Deleted.

2019-02-11  Daniel Bates  <dabates@apple.com>

        [iOS] Mouse/Touch/Pointer events are missing modifier keys
        https://bugs.webkit.org/show_bug.cgi?id=191446
        <rdar://problem/45929460>

        Reviewed by Tim Horton.

        Extract the modifier flags from the WebEvent. This code is only used by Legacy WebKit
        on iOS and we will need to fix <rdar://problem/47929759> in order for modifier flags
        to be passed to WebKit.

        Tests: fast/events/touch/ios/mouse-events-with-modifiers.html
               fast/events/touch/ios/pointer-events-with-modifiers.html
               fast/events/touch/ios/touch-events-with-modifiers.html

        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithMouseEventType:timeStamp:location:]):
        (-[WebEvent initWithMouseEventType:timeStamp:location:modifiers:]):

2019-02-11  Daniel Bates  <dabates@apple.com>

        Separate out outline-style: auto user-agent appearance from Mac animated focus ring drawing
        https://bugs.webkit.org/show_bug.cgi?id=193591

        Reviewed by Simon Fraser.

        Untangle the Mac-specific concept of animated focus ring drawing from the concepts of using
        the fancy shrink-wrapped focus ring appearance and using the platform focus ring color when
        outline-style: auto.

        No functionality changed. So, no new tests.

        * platform/graphics/GraphicsContext.h:
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::drawFocusRing):
        (WebCore::drawFocusRingToContextAtTime):
        Change some macro guards.

        * rendering/RenderElement.cpp:
        (WebCore::usePlatformFocusRingColorForOutlineStyleAuto): Added.
        (WebCore::useShrinkWrappedFocusRingForOutlineStyleAuto): Added.
        (WebCore::drawFocusRing): Added.
        (WebCore::RenderElement::paintFocusRing): Write in terms of drawFocusRing().

2019-02-11  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241229.

        Revision broke internal builds for watchOS.

        Reverted changeset:

        "[Cocoa] Ask platform for generic font family mappings"
        https://bugs.webkit.org/show_bug.cgi?id=187723
        https://trac.webkit.org/changeset/241229

2019-02-11  Youenn Fablet  <youenn@apple.com>

        Make Request constructor throw if FetchRequestInit.signal is not undefined, null or an AbortSignal object
        https://bugs.webkit.org/show_bug.cgi?id=194404
        <rdar://problem/47891915>

        Reviewed by Geoffrey Garen.

        Align with the spec, except for known problematic web sites.
        Covered by updated test.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::needsSignalQuirk):
        (WebCore::processInvalidSignal):
        (WebCore::FetchRequest::initializeWith):

2019-02-11  Zalan Bujtas  <zalan@apple.com>

        [LFC] FormattingContext::Geometry::floatingHeightAndMargin should take UsedHorizontalValues
        https://bugs.webkit.org/show_bug.cgi?id=194490

        Reviewed by Antti Koivisto.

        This is in preparation for adding floating preferred width computation support. It requires height computaiton
        which uses containing block width to resolve vertical margins.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeBorderAndPadding const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin):
        * layout/FormattingContextQuirks.cpp:
        (WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
        * layout/LayoutUnits.h:
        (WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin):

2019-02-11  Zalan Bujtas  <zalan@apple.com>

        [LFC] FormattingContext::intrinsicWidthConstraints should compute and save the intrinsic widths consistently.
        https://bugs.webkit.org/show_bug.cgi?id=194483

        Reviewed by Antti Koivisto.

        Rename intrinsicWidthConstraints to computeIntrinsicWidthConstraints (it does not return the width values anymore).

        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeIntrinsicWidthConstraints const):
        (WebCore::Layout::BlockFormattingContext::intrinsicWidthConstraints const): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::intrinsicWidthConstraints const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-10  Zalan Bujtas  <zalan@apple.com>

        [LFC] Fix spelling error.
        https://bugs.webkit.org/show_bug.cgi?id=194489

        Reviewed by Simon Fraser.

        instrinsic -> intrinsic

        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        * layout/FormattingState.h:
        (WebCore::Layout::FormattingState::setIntrinsicWidthConstraints):
        (WebCore::Layout::FormattingState::clearIntrinsicWidthConstraints):
        (WebCore::Layout::FormattingState::intrinsicWidthConstraints const):
        (WebCore::Layout::FormattingState::setInstrinsicWidthConstraints): Deleted.
        (WebCore::Layout::FormattingState::clearInstrinsicWidthConstraints): Deleted.
        (WebCore::Layout::FormattingState::instrinsicWidthConstraints const): Deleted.
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::intrinsicWidthConstraints const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraintsNeedChildrenWidth):
        (WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
        (WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraintsNeedChildrenWidth): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints): Deleted.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::intrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-10  Darin Adler  <darin@apple.com>

        Switch uses of StringBuilder with String::format for hex numbers to use HexNumber.h instead
        https://bugs.webkit.org/show_bug.cgi?id=194485

        Reviewed by Daniel Bates.

        * Modules/websockets/WebSocket.cpp:
        (WebCore::encodeProtocolString): Use appendUnsignedAsHexFixedSize instead of String::format.

        * css/parser/CSSParserToken.cpp:
        (WebCore::CSSParserToken::serialize const): Fixed style of many return statements
        that called a function returning void; doesn't match WebKit's prevailing style.
        Also use break instead of return. Used appendLiteral instead of append in many
        cases, and append character instead of single-character literal in others.
        Use appendUnsignedAsHex instead of String::format.

        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::generateHashedName): Use appendUnsignedAsHex instad of appendUnsigned64AsHex.
        Should come back here and use makeString once we make HexNumber.h work with that.

        * platform/mac/WebCoreNSURLExtras.mm: Removed unnecessary include of HexNumber.h.

        * rendering/RenderTreeAsText.cpp:
        (WebCore::quoteAndEscapeNonPrintables): Use appendLiteral instead of multiple calls
        to character append. Touched because it was next to a call to appendUnsignedAsHex.

2019-02-10  Pablo Saavedra  <psaavedra@igalia.com>

        libWPEWebKit-0.1.so: undefined reference to `JSC::JSValue::asCell() const
        https://bugs.webkit.org/show_bug.cgi?id=194484

        Reviewed by Darin Adler.

        * bindings/js/JSUndoItemCustom.cpp:

2019-02-10  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK Debug build fix after r241148.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::removeSamplesFromTrackBuffer):
        SourceBuffer::logClassName and friends are declared for
        !RELEASE_LOG_DISABLED builds so adapt calling sites accordingly.

2019-02-10  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add intrinsic width support for inline-block boxes
        https://bugs.webkit.org/show_bug.cgi?id=194479

        Reviewed by Antti Koivisto.

        Compute the intrinsic width for the inline-block (formatting context root) and set it as the content box width while
        laying out the content for the min/max width.

        <div style="position: absolute">before<span id=inline-block style="display: inline-block">inline_block content<span>after</div>

        The "inline-block" formatting root returns "inline_block" width for the minimum and "inline_block width" for
        the maximum width. These min/max values are used to figure out the intrinsic width for the parent <div>.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeMargin const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-02-10  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add intrinsic width support for replaced boxes
        https://bugs.webkit.org/show_bug.cgi?id=194478

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeMargin const):
        (WebCore::Layout::InlineFormattingContext::computeBorderAndPadding const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const):
        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-10  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Add missing return type to lambda
        https://bugs.webkit.org/show_bug.cgi?id=194414

        Reviewed by Darin Adler.

        Since g_signal_connect() is untyped, a compiler error was not
        generated when a lambda with a missing GstFlowReturn return type was
        provided for a signal that expects it.

        This used to work before r240784 because a recent function call had
        set GST_FLOW_OK in the return value register and it happened to
        survive until the lambda function call ended. Starting on that commit
        such return value was removed and it stopped working on debug.

        Of course, the actual problem is in the signature of the lambda
        function, and this patch fixes that.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline):

2019-02-09  Darin Adler  <darin@apple.com>

        Eliminate unnecessary String temporaries by using StringConcatenateNumbers
        https://bugs.webkit.org/show_bug.cgi?id=194021

        Reviewed by Geoffrey Garen.

        For floating point numbers, String::number gives a fixed precision result,
        stripping trailing zeroes. When possible, I changed the code to instead use the
        equivalent of String::numberToStringECMAScript, which is what makeString does by
        default for floating point, gives the same results for many cases, and gives
        better results in many others. However, for floats, we do not yet have a good
        implementation, so instead I used FormattedNumber::fixedPrecision to match
        the old behavior.

        * Modules/indexeddb/shared/IDBTransactionInfo.cpp:
        (WebCore::IDBTransactionInfo::loggingString const): Remove String::number and let
        makeString do the conversion without allocating/destroying a String.
        * Modules/websockets/ThreadableWebSocketChannel.cpp:
        (WebCore::ThreadableWebSocketChannel::create): Ditto.
        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::connect): Ditto. Added a cast to "unsigned" to sidestep the
        ambiguity with 16-bit unsigned types that are sometimes used for numbers (uint16_t)
        and sometimes used for UTF-16 code units (UChar) and can be the same type.

        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::didFailSocketStream): Use ASCIILiteral when intializing
        a string instead of just a normal C literal. Switched to makeString so we could
        remove String::number and do the conversion without allocating/destroying a String.
        (WebCore::WebSocketChannel::didFail): Ditto.
        (WebCore::WebSocketChannel::processFrame): Ditto.
        * Modules/websockets/WebSocketFrame.cpp:
        (WebCore::WebSocketFrame::parseFrame): Ditto.
        * Modules/websockets/WebSocketHandshake.cpp:
        (WebCore::WebSocketHandshake::readServerHandshake): Ditto.
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::positionalDescriptionForMSAA const): Ditto.
        * bindings/js/JSDOMConvertNumbers.cpp:
        (WebCore::rangeErrorString): Ditto.
        * css/CSSAspectRatioValue.cpp:
        (WebCore::CSSAspectRatioValue::customCSSText const): Ditto. Used
        FormattedNumber::fixedPrecision since these are floats.

        * css/DOMMatrixReadOnly.cpp:
        (WebCore::DOMMatrixReadOnly::toString const): Use
        StringBuilder::builder.appendECMAScriptNumber instead of
        String::numberToStringECMAScript so we can do it without allocating/destroying
        a String.
        * css/WebKitCSSMatrix.cpp:
        (WebCore::WebKitCSSMatrix::toString const): Ditto.

        * dom/MessagePortIdentifier.h:
        (WebCore::MessagePortIdentifier::logString const): Remove String::number and let
        makeString do the conversion without allocating/destroying a String.

        * editing/cocoa/DataDetection.mm:
        (WebCore::dataDetectorStringForPath): Remove unnecessary type casts on values
        passed to String::number and to StringBuilder::appendNumber. These could do
        harm if the values were out of range, and should not be necessary.

        * history/BackForwardItemIdentifier.h:
        (WebCore::BackForwardItemIdentifier::logString const): Remove String::number
        and let makeString do the conversion without allocating/destroying a String.
        * html/FTPDirectoryDocument.cpp:
        (WebCore::processFileDateString): Ditto.
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::getUniformLocation): Ditto.
        (WebCore::WebGLRenderingContextBase::checkTextureCompleteness): Ditto.
        * inspector/agents/WebConsoleAgent.cpp:
        (WebCore::WebConsoleAgent::didReceiveResponse): Ditto.
        * loader/WorkerThreadableLoader.cpp:
        (WebCore::WorkerThreadableLoader::loadResourceSynchronously): Ditto.
        * loader/appcache/ApplicationCacheGroup.cpp:
        (WebCore::ApplicationCacheGroup::didFailLoadingManifest): Ditto.
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::urlForBlankFrame): Ditto.
        * page/PrintContext.cpp:
        (WebCore::PrintContext::pageProperty): Ditto.
        (WebCore::PrintContext::pageSizeAndMarginsInPixels): Ditto.

        * page/WheelEventTestTrigger.cpp:
        (WebCore::dumpState): Use StringBuilder::appendNumber instead of
        String::number so we can do it without allocating/destroying a String.
        Also use StringBuilder::appendLiteral on a literal.

        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::ResourceUsageOverlay::platformDraw): Pass explicit
        KeepTrailingZeros to FormattedNumber::fixedPrecision to preserve behavior,
        since default is now to truncate trailing zeros.

        * platform/graphics/Color.cpp:
        (WebCore::Color::cssText): Use StringBuilder::appendNumber instead of
        calling numberToFixedPrecisionString to do the same thing.
        * platform/graphics/ExtendedColor.cpp:
        (WebCore::ExtendedColor::cssText): Ditto.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::animationIdentifier): Remove String::number and let makeString
        do the conversion without allocating/destroying a String. Had to add
        a typecast to convert the enumeration into an integer.
        * platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
        (WebCore::PlatformCAFilters::setFiltersOnLayer): Ditto.
        * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
        (WebCore::FontPlatformData::description const): Ditto.

        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
        (WebCore::MockMediaSample::MockMediaSample): Use AtomicString::number
        instead of String::number to avoid unneccessarily allocating an additional
        temporary String when an AtomicString already exists.

        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
        (WebCore::SocketStreamHandleImpl::reportErrorToClient): Remove String::number
        and let makeString do the conversion without allocating/destroying a String.
        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::setMaximumSize): Ditto.
        (WebCore::SQLiteDatabase::setSynchronous): Ditto. Had to add a typecast to
        convert the enumeration into an integer.
        * svg/SVGAngleValue.cpp:
        (WebCore::SVGAngleValue::valueAsString const): Ditto.
        * svg/SVGLengthValue.cpp:
        (WebCore::SVGLengthValue::valueAsString const): Ditto.
        * testing/Internals.cpp:
        (WebCore::Internals::configurationForViewport): Ditto. Used
        FormattedNumber::fixedPrecision since these are floats.
        (WebCore::Internals::getCurrentCursorInfo): Use StringBuilder::appendNumber
        instead of calling numberToFixedPrecisionString to do the same thing.
        (WebCore::Internals::queueMicroTask): Remove String::number and let makeString
        do the conversion without allocating/destroying a String.
        (WebCore::appendOffsets): Use StringBuilder::appendNumber instead of
        String::number so we can do it without allocating/destroying a String.

        * workers/service/ServiceWorkerClientIdentifier.h:
        (WebCore::ServiceWorkerClientIdentifier::toString const): Remove String::number
        and let makeString do the conversion without allocating/destroying a String.
        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::databaseFilenameFromVersion): Ditto.

2019-02-09  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add intrinsic width support for basic inline containers
        https://bugs.webkit.org/show_bug.cgi?id=194473

        Reviewed by Antti Koivisto.

        Preferred width computation logic is very similar to normal layout.
        One of the main difference is that the preferred width codepath does not provide valid containing block width.
        This patch implement basic inline container support by passing nullopt containing block width in UsedHorizontalValues. 

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeBorderAndPadding const):
        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const):
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-08  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] CTLineGetGlyphRuns() might return nullptr
        https://bugs.webkit.org/show_bug.cgi?id=194467
        <rdar://problem/42423999>

        Reviewed by Simon Fraser.

        Be somewhat defensive to try to make sure this sort of thing doesn't happen in the future.

        Covered by find/text/find-backwards.html

        * platform/graphics/mac/ComplexTextControllerCoreText.mm:
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

2019-02-08  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Ask platform for generic font family mappings
        https://bugs.webkit.org/show_bug.cgi?id=187723
        <rdar://problem/41892438>

        Reviewed by Brent Fulgham.

        WebKit API allows setting the generic font families for the USCRIPT_COMMON script.
        When trying to style a character with a generic font family, we first look to see if
        we have a mapping for the particular script the character is rendered with, and if we
        don't find a match, we then check USCRIPT_COMMON.

        In the Cocoa ports, the only way families get set for non-USCRIPT_COMMON scripts (aka
        the only scripts which won't use the API families) is in
        SettingsBase::initializeDefaultFontFamilies(). That function only sets the families
        for the CJK scripts.

        The mappings inside SettingsBase are incorrect and conflict with our policy regarding
        user-installed fonts. Instead, we should be consulting with the platform for some of
        these mappings, by calling CTFontDescriptorCreateForCSSFamily(). However, the WebKit
        API still has to work to set the mappings for untagged content. Therefore, we use the
        system mappings for language-tagged content, and the API mappings for non-language-tagged
        content. This is a good balance that makes sure we always have a good mapping for every
        language, but API clients can still set the mappings, too.

        Test: fast/text/ja-sans-serif.html

        * css/CSSComputedStyleDeclaration.cpp:
        * css/CSSFontSelector.cpp:
        (WebCore::resolveGenericFamily):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeFontFamily):
        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::initializeDefaultFontFamilies):
        (WebCore::osakaMonoIsInstalled): Deleted.
        * platform/graphics/FontDescription.cpp:
        (WebCore::FontDescription::platformResolveGenericFamily):
        * platform/graphics/FontDescription.h:
        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::computeSpecializedChineseLocale):
        (WebCore::cachedSpecializedChineseLocale):
        (WebCore::languageChanged):
        (WebCore::FontDescription::platformResolveGenericFamily):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
        (WebCore::SystemFontDatabaseCoreText::clear):
        (WebCore::SystemFontDatabaseCoreText::serifFamily):
        (WebCore::SystemFontDatabaseCoreText::sansSerifFamily):
        (WebCore::SystemFontDatabaseCoreText::cursiveFamily):
        (WebCore::SystemFontDatabaseCoreText::fantasyFamily):
        (WebCore::SystemFontDatabaseCoreText::monospaceFamily):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.h:

2019-02-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Shrink sizeof(CodeBlock) more
        https://bugs.webkit.org/show_bug.cgi?id=194419

        Reviewed by Mark Lam.

        * testing/Internals.cpp:
        (WebCore::Internals::parserMetaData):

2019-02-08  Chris Dumez  <cdumez@apple.com>

        [Cocoa] Optimize ResourceResponse::platformLazyInit()
        https://bugs.webkit.org/show_bug.cgi?id=194438

        Reviewed by Alex Christensen.

        Optimize ResourceResponse::platformLazyInit(). Most of the CPU time currently goes into getting the
        HTTP headers from CFNetwork:
        """
        Sample Count, Samples %, CPU %, Symbol
        46, 0.0%, 0.0%, WebCore::initializeHTTPHeaders(WebCore::OnlyCommonHeaders, NSHTTPURLResponse*, WebCore::HTTPHeaderMap&) (in WebCore)
        34, 0.0%, 0.0%,     HTTPHeaderDict::copyAsOrdinaryDict(__CFAllocator const*) const (in CFNetwork)
        11, 0.0%, 0.0%,     CFDictionaryApplyFunction (in CoreFoundation)
        """

        We currently have 2 levels of initialization: CommonFieldsOnly & AllFields. With WebKit2, most ResourceResponses get sent over IPC
        and thus end up getting initialized twice, once with CommonFieldsOnly and then with AllFields.
        This would cause us to call the expensive HTTPHeaderDict::copyAsOrdinaryDict() twice instead of once, simply to initialize the common
        HTTP headers first and then the uncommon ones later.

        This patch updates ResourceResponse::platformLazyInit() to initialize all HTTP headers at once, as soon as CommonFieldsOnly
        initialization is requested, so that we no longer copy all HTTP headers twice.

        * platform/network/cocoa/ResourceResponseCocoa.mm:
        (WebCore::initializeHTTPHeaders):
        (WebCore::ResourceResponse::platformLazyInit):

2019-02-08  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Build fix for MTLStorageMode availability on different Cocoa platforms
        https://bugs.webkit.org/show_bug.cgi?id=194443

        Unreviewed build fix.

        For MTLTextures, MTLStorageModeManaged is only available on macOS. Other platforms,
        if not using MTLStorageModePrivate, must use MTLStorageModeShared.

        Behavior unchanged.

        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::storageModeForPixelFormatAndSampleCount):

2019-02-08  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Inline WebVTT styles should start with '::cue'
        https://bugs.webkit.org/show_bug.cgi?id=194227
        <rdar://problem/47791087>

        Reviewed by Eric Carlson.

        Check that the CSS string starts with '::cue' and is successfully parsed before adding it
        to the CSS stylesheet list. Also, the caption preferences CSS string should start with
        '::cue', since it is added inside the video shadow root element.

        Test: media/track/track-cue-css.html

        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::checkAndStoreStyleSheet):
        * page/CaptionUserPreferencesMediaAF.cpp:
        (WebCore::CaptionUserPreferencesMediaAF::captionsStyleSheetOverride const):

2019-02-08  Youenn Fablet  <youenn@apple.com>

        Running RTCRtpSender.getCapabilities("video") before initial offer breaks VP8
        https://bugs.webkit.org/show_bug.cgi?id=194380
        <rdar://problem/47916514>

        Reviewed by Eric Carlson.

        Set whether VP8 is supported at creation of the page.
        This ensures that any call creating a peer connection factory will end up supporting the runtime flag configuration.

        Add internal API to enable resetting the factory to enable proper testing.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::createLibWebRTCPeerConnectionBackend):
        * page/Page.cpp:
        (WebCore::m_applicationManifest):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * testing/Internals.cpp:
        (WebCore::Internals::clearPeerConnectionFactory):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-08  Andy Estes  <aestes@apple.com>

        [WebIDL] Support serializing sequences and FrozenArrays of non-interfaces
        https://bugs.webkit.org/show_bug.cgi?id=190997
        <rdar://problem/35983035>

        Reviewed by Brent Fulgham.

        Support serializing sequences and FrozenArrays of types that aren't interfaces. This is
        needed to properly serialize PaymentAddress, which has a FrozenArray of DOMStrings.

        We should support serializing sequences of interfaces too, but that's slightly more
        complicated since it involves iterating the sequence and serializing each of its items. I
        left that as a follow-up task, since I don't see any IDLs that currently need this.

        We also don't support serializing sequences with the CachedAttribute or CustomGetter
        extended attributes, because WebIDL specifies that a new array should be created when
        converting an IDL sequence into an ECMAScript value.

        Added bindings test cases to TestSerialization.idl and PaymentAddress test cases to
        http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https.html.

        * bindings/scripts/CodeGenerator.pm:
        (GetInterfaceForType): Renamed from GetInterfaceForAttribute.
        (IsSerializableType): Modified to allow sequences and FrozenArrays of non-interface types.
        (hasCachedAttributeOrCustomGetterExtendedAttribute): Added a helper to determine if an
        attribute has the CachedAttribute or CustomGetter extended attributes.
        (IsSerializableAttribute): Checked for sequences with the CachedAttribute or CustomGetter
        extended attributes before calling IsSerializableType.
        (GetInterfaceForAttribute): Renamed to GetInterfaceForType.
        * bindings/scripts/test/JS/JSTestSerialization.cpp:
        * bindings/scripts/test/TestSerialization.idl:

2019-02-08  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB tests leak documents
        https://bugs.webkit.org/show_bug.cgi?id=189435
        <rdar://problem/44240043>

        Reviewed by Geoffrey Garen.

        Remove use of JSC::Strong in IndexedDatabase.

        * Modules/indexeddb/IDBCursor.cpp:
        (WebCore::IDBCursor::update):
        (WebCore::IDBCursor::continuePrimaryKey):
        (WebCore::IDBCursor::continueFunction):
        (WebCore::IDBCursor::deleteFunction):
        (WebCore::IDBCursor::setGetResult):
        * Modules/indexeddb/IDBCursor.h:
        (WebCore::IDBCursor::key):
        (WebCore::IDBCursor::primaryKey):
        (WebCore::IDBCursor::value):
        (WebCore::IDBCursor::keyWrapper):
        (WebCore::IDBCursor::primaryKeyWrapper):
        (WebCore::IDBCursor::valueWrapper):
        (WebCore::IDBCursor::key const): Deleted.
        (WebCore::IDBCursor::primaryKey const): Deleted.
        (WebCore::IDBCursor::value const): Deleted.
        * Modules/indexeddb/IDBCursor.idl:
        * Modules/indexeddb/IDBCursorWithValue.idl:
        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::putForCursorUpdate):
        * Modules/indexeddb/IDBObjectStore.h:
        * Modules/indexeddb/IDBRequest.cpp:
        (WebCore::IDBRequest::IDBRequest):
        (WebCore::IDBRequest::~IDBRequest):
        (WebCore::IDBRequest::result const):
        (WebCore::IDBRequest::setResult):
        (WebCore::IDBRequest::setResultToStructuredClone):
        (WebCore::IDBRequest::setResultToUndefined):
        (WebCore::IDBRequest::resultCursor):
        (WebCore::IDBRequest::willIterateCursor):
        (WebCore::IDBRequest::didOpenOrIterateCursor):
        * Modules/indexeddb/IDBRequest.h:
        (WebCore::IDBRequest::resultWrapper):
        * Modules/indexeddb/IDBRequest.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSIDBCursorCustom.cpp:
        (WebCore::JSIDBCursor::key const):
        (WebCore::JSIDBCursor::primaryKey const):
        (WebCore::JSIDBCursor::visitAdditionalChildren):
        * bindings/js/JSIDBCursorWithValueCustom.cpp:
        (WebCore::JSIDBCursorWithValue::value const):
        (WebCore::JSIDBCursorWithValue::visitAdditionalChildren):
        * bindings/js/JSIDBRequestCustom.cpp: Added.
        (WebCore::JSIDBRequest::result const):
        (WebCore::JSIDBRequest::visitAdditionalChildren):
        * inspector/agents/InspectorIndexedDBAgent.cpp:

2019-02-08  Zalan Bujtas  <zalan@apple.com>

        [LFC] The used containing block width value is optional
        https://bugs.webkit.org/show_bug.cgi?id=194428

        Reviewed by Antti Koivisto.

        The preferred width codepath cannot provide a valid used containing block width value.

        "The percentage is calculated with respect to the width of the generated box's containing block.
        If the containing block's width depends on this element's width, then the resulting layout is undefined in CSS 2.2."

        Let's use 0 as used value for now.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedPadding):
        (WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin):
        * layout/LayoutUnits.h:
        (WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
        * page/FrameViewLayoutContext.cpp:

2019-02-08  Zalan Bujtas  <zalan@apple.com>

        [LFC] Horizontal geometry compute functions should take the containing block's width as a used value
        https://bugs.webkit.org/show_bug.cgi?id=194424

        Reviewed by Antti Koivisto.

        This is in preparation for passing optional containing block width for the preferred with codepath. 

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        (WebCore::Layout::FormattingContext::computeBorderAndPadding const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedBorder):
        (WebCore::Layout::FormattingContext::Geometry::computedPadding):
        (WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin):
        * layout/LayoutUnits.h:
        (WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

2019-02-08  Benjamin Poulain  <benjamin@webkit.org>

        clampTo(): do not convert the input to double when dealing with integers
        https://bugs.webkit.org/show_bug.cgi?id=194263
        <rdar://problem/47692312>

        Reviewed by Darin Adler.

        Make the calls to clampTo<float>() unambiguous.

        * page/FrameView.cpp:
        (WebCore::FrameView::computeUpdatedLayoutViewportRect):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::setOpacity):
        (WebCore::RenderStyle::setShapeImageThreshold):

2019-02-08  Eric Liang  <ericliang@apple.com>

        When performing AXPress, check to see if the menu list is disabled.
        https://bugs.webkit.org/show_bug.cgi?id=193878

        Reviewed by Chris Fleizach.

        Test: accessibility/mac/press-not-work-for-disabled-menu-list.html

        * accessibility/AXObjectCache.h:
        * accessibility/AccessibilityMenuList.cpp:
        (WebCore::AccessibilityMenuList::press):
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::postPlatformNotification):

2019-02-07  Devin Rousso  <drousso@apple.com>

        PseudoElement created for any ::before/::after selector regardless of whether a content property exists
        https://bugs.webkit.org/show_bug.cgi?id=194423
        <rdar://problem/46787260>

        Reviewed by Antti Koivisto.

        Test: inspector/css/pseudo-creation.html

        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::resolvePseudoStyle):
        We should only be creating `PseudoElement`s if we actually have a `content` proprety in the
        `PseudoElement`'s style. Otherwise, we end up creating `PseudoElement`s for every CSS rule
        that has a `::before`/`::after`, only to immediately destroy them as there is nothing to show.

2019-02-07  Chris Dumez  <cdumez@apple.com>

        Mark more heap-allocated classes as fast allocated
        https://bugs.webkit.org/show_bug.cgi?id=194422

        Reviewed by Ryosuke Niwa.

        * Modules/applepay/PaymentCoordinator.h:
        * Modules/beacon/NavigatorBeacon.h:
        * Modules/cache/DOMWindowCaches.h:
        * Modules/cache/WorkerGlobalScopeCaches.h:
        * Modules/credentialmanagement/NavigatorCredentials.h:
        * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.h:
        * Modules/gamepad/NavigatorGamepad.h:
        * Modules/indexeddb/IDBGetAllResult.h:
        * Modules/indexeddb/IDBGetResult.h:
        * Modules/indexeddb/IDBKeyData.h:
        * Modules/indexeddb/IDBValue.h:
        * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h:
        * Modules/indexeddb/server/IndexValueEntry.h:
        * Modules/indexeddb/server/IndexValueStore.h:
        * Modules/indexeddb/server/MemoryBackingStoreTransaction.h:
        * Modules/indexeddb/server/MemoryCursor.h:
        * Modules/indexeddb/server/MemoryIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBCursor.h:
        * Modules/indexeddb/server/SQLiteIDBTransaction.h:
        * Modules/indexeddb/server/UniqueIDBDatabase.h:
        * Modules/indexeddb/shared/IDBDatabaseInfo.h:
        * Modules/indexeddb/shared/IDBResourceIdentifier.h:
        * Modules/indexeddb/shared/IDBTransactionInfo.h:
        * Modules/mediacapabilities/NavigatorMediaCapabilities.h:
        * Modules/mediasession/WebMediaSessionManager.cpp:
        * Modules/mediastream/NavigatorMediaDevices.h:
        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.h:
        * Modules/navigatorcontentutils/NavigatorContentUtils.h:
        * Modules/quota/DOMWindowQuota.h:
        * Modules/quota/NavigatorStorageQuota.h:
        * Modules/quota/WorkerNavigatorStorageQuota.h:
        * Modules/speech/DOMWindowSpeechSynthesis.h:
        * Modules/webaudio/BiquadProcessor.h:
        * Modules/webaudio/DelayProcessor.h:
        * Modules/webauthn/fido/FidoHidPacket.h:
        * Modules/webdriver/NavigatorWebDriver.h:
        * Modules/webgpu/DOMWindowWebGPU.h:
        * Modules/websockets/WebSocketChannel.h:
        * Modules/webvr/NavigatorWebVR.h:
        * accessibility/AXObjectCache.h:
        * bindings/js/DOMGCOutputConstraint.h:
        * bindings/js/DOMPromiseProxy.h:
        * bridge/c/c_runtime.h:
        * contentextensions/CombinedURLFilters.cpp:
        * crypto/CryptoAlgorithmParameters.h:
        * css/CSSComputedStyleDeclaration.h:
        * css/CSSRegisteredCustomProperty.h:
        * css/DOMCSSPaintWorklet.h:
        * css/DOMCSSRegisterCustomProperty.h:
        * css/StyleRule.h:
        * dom/ConstantPropertyMap.h:
        * dom/CustomElementReactionQueue.h:
        * dom/Document.h:
        * dom/GenericEventQueue.h:
        * dom/RejectedPromiseTracker.h:
        * dom/UserGestureIndicator.h:
        * editing/ReplaceSelectionCommand.cpp:
        * editing/SelectionRectGatherer.h:
        * editing/TextIterator.h:
        * editing/cocoa/HTMLConverter.mm:
        * fileapi/AsyncFileStream.cpp:
        * fileapi/AsyncFileStream.h:
        * html/forms/FileIconLoader.h:
        * html/parser/HTMLTreeBuilder.h:
        * html/track/WebVTTParser.h:
        * inspector/DOMPatchSupport.cpp:
        * loader/FrameLoaderClient.h:
        * loader/WorkerThreadableLoader.cpp:
        * page/IntersectionObserver.h:
        * page/PerformanceMonitor.h:
        * page/PerformanceUserTiming.h:
        * page/PrintContext.h:
        * page/ValidationMessageClient.h:
        * platform/ColorChooser.h:
        * platform/ControlStates.h:
        * platform/DataListSuggestionPicker.h:
        * platform/FileStream.h:
        * platform/KeyedCoding.h:
        * platform/LowPowerModeNotifier.h:
        * platform/PlatformSpeechSynthesizer.h:
        * platform/WebGLStateTracker.h:
        * platform/audio/AudioArray.h:
        * platform/audio/AudioDestination.h:
        * platform/audio/DownSampler.h:
        * platform/audio/DynamicsCompressor.h:
        * platform/audio/FFTFrame.h:
        * platform/audio/HRTFDatabase.h:
        * platform/audio/MultiChannelResampler.h:
        * platform/audio/Panner.h:
        * platform/audio/Reverb.h:
        * platform/audio/ReverbConvolver.h:
        * platform/audio/ReverbConvolverStage.h:
        * platform/audio/UpSampler.h:
        * platform/audio/mac/AudioSessionMac.cpp:
        * platform/audio/mac/CAAudioStreamDescription.h:
        * platform/audio/mac/CARingBuffer.h:
        * platform/cocoa/ScrollSnapAnimatorState.h:
        * platform/gamepad/PlatformGamepad.h:
        * platform/graphics/GraphicsLayer.cpp:
        * platform/graphics/GraphicsLayerFactory.h:
        * platform/graphics/PlatformTimeRanges.h:
        * platform/graphics/TextTrackRepresentation.h:
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
        * platform/graphics/displaylists/DisplayListRecorder.h:
        * platform/network/cocoa/WebCoreNSURLSession.mm:
        * platform/sql/SQLiteDatabase.h:
        * platform/text/TextCodecICU.h:
        * rendering/GridBaselineAlignment.h:
        * rendering/GridTrackSizingAlgorithm.h:
        * rendering/RenderObject.h:
        * rendering/style/GridArea.h:
        * workers/service/context/SWContextManager.h:

2019-02-07  Justin Fan  <justin_fan@apple.com>

        [Web GPU] GPUDevice::createTexture implementation prototype
        https://bugs.webkit.org/show_bug.cgi?id=194409
        <rdar://problem/47894312>

        Reviewed by Myles C. Maxfield.

        Test: textures-textureviews.html updated to test new functionality.

        Implement GPUDevice::createTexture():
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createTexture const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUTexture.cpp:
        (WebCore::WebGPUTexture::create): Modified to return non-nullable to match direction of API.
        (WebCore::WebGPUTexture::WebGPUTexture):
        * Modules/webgpu/WebGPUTexture.h:

        Metal backend MTLTextureDescriptor and MTLTexture creation:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateTexture const):
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUTexture.h:
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::mtlTextureTypeForGPUTextureDescriptor):
        (WebCore::mtlTextureUsageForGPUTextureUsageFlags):
        (WebCore::storageModeForPixelFormatAndSampleCount):
        (WebCore::tryCreateMtlTextureDescriptor):
        (WebCore::GPUTexture::tryCreate):
        (WebCore::GPUTexture::createDefaultTextureView): Add ObjC try/catch guards.

        Add GPUUtils.h/cpp for shared utility functions:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUUtils.h: Added. Moved platformTextureFormatForGPUTextureFormat here.
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::setFormat):
        (WebCore::platformTextureFormatForGPUTextureFormat): Moved to GPUUtils.
        * platform/graphics/gpu/cocoa/GPUUtilsMetal.mm: Added.
        (WebCore::platformTextureFormatForGPUTextureFormat): Moved here to be referenced by multiple files.

2019-02-07  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION(r239887): Crash under IDBConnectionToClient::didDeleteDatabase(WebCore::IDBResultData const&)
        https://bugs.webkit.org/show_bug.cgi?id=194402
        <rdar://problem/47858241>

        Reviewed by Geoffrey Garen.

        r239887 removed a reference cycle of IDBConnectionToClient so that IDBConnectionToClient would no longer be
        around forever. Therefore, ServerOpenRequest should keep a reference to IDBConnectionToClient to make sure it
        is valid during access.

        * Modules/indexeddb/server/ServerOpenDBRequest.cpp:
        (WebCore::IDBServer::ServerOpenDBRequest::maybeNotifyRequestBlocked):
        (WebCore::IDBServer::ServerOpenDBRequest::notifyDidDeleteDatabase):
        * Modules/indexeddb/server/ServerOpenDBRequest.h:

2019-02-07  Timothy Hatcher  <timothy@apple.com>

        Overflow element scrollbar is light for dark mode content.
        https://bugs.webkit.org/show_bug.cgi?id=194407
        rdar://problem/45991585

        Reviewed by Beth Dakin.

        Tested by css-dark-mode/supported-color-schemes-scrollbar.html.

        * page/ChromeClient.h:
        (WebCore::FrameView::preferredScrollbarOverlayStyle): Return WTF::nullopt by default to avoid
        short-circuiting auto detection in recalculateScrollbarOverlayStyle() for clients, like WK1,
        that do not implement preferredScrollbarOverlayStyle().
        * page/FrameView.cpp:
        (WebCore::FrameView::recalculateScrollbarOverlayStyle): Use WTF::nullopt in the false case
        to auto detect overlay style when page() is null.
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::useDarkAppearance const): Added.
        * rendering/RenderLayer.h:
        * testing/Internals.cpp:
        (WebCore::Internals::scrollbarOverlayStyle const): Added Node argument.
        (WebCore::Internals::scrollbarUsingDarkAppearance const): Added.
        * testing/Internals.h:
        * testing/Internals.idl:

2019-02-07  Eric Carlson  <eric.carlson@apple.com>

        [MSE] Convert debug-only logging to runtime logging
        https://bugs.webkit.org/show_bug.cgi?id=194348
        <rdar://problem/47566449>

        Reviewed by Jer Noble.

        No new tests, this just changes existing logging.

        * Modules/mediasource/MediaSource.cpp:
        (WebCore::convertEnumerationToString):
        (WebCore::MediaSource::MediaSource):
        (WebCore::MediaSource::~MediaSource):
        (WebCore::MediaSource::setPrivateAndOpen):
        (WebCore::MediaSource::addedToRegistry):
        (WebCore::MediaSource::removedFromRegistry):
        (WebCore::MediaSource::durationChanged):
        (WebCore::MediaSource::seekToTime):
        (WebCore::MediaSource::completeSeek):
        (WebCore::MediaSource::setLiveSeekableRange):
        (WebCore::MediaSource::clearLiveSeekableRange):
        (WebCore::MediaSource::setDuration):
        (WebCore::MediaSource::setDurationInternal):
        (WebCore::MediaSource::setReadyState):
        (WebCore::MediaSource::endOfStream):
        (WebCore::MediaSource::streamEndedWithError):
        (WebCore::MediaSource::addSourceBuffer):
        (WebCore::MediaSource::removeSourceBuffer):
        (WebCore::MediaSource::isTypeSupported):
        (WebCore::MediaSource::detachFromElement):
        (WebCore::MediaSource::attachToElement):
        (WebCore::MediaSource::openIfInEndedState):
        (WebCore::MediaSource::suspend):
        (WebCore::MediaSource::resume):
        (WebCore::MediaSource::stop):
        (WebCore::MediaSource::onReadyStateChange):
        (WebCore::MediaSource::scheduleEvent):
        (WebCore::MediaSource::logChannel const):
        (WebCore::MediaSourceInternal::toString): Deleted.
        * Modules/mediasource/MediaSource.h:
        (WTF::LogArgument<WebCore::MediaSource::EndOfStreamError>::toString):
        (WTF::LogArgument<WebCore::MediaSource::ReadyState>::toString):
        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::SourceBuffer):
        (WebCore::SourceBuffer::~SourceBuffer):
        (WebCore::SourceBuffer::remove):
        (WebCore::SourceBuffer::seekToTime):
        (WebCore::SourceBuffer::appendBufferInternal):
        (WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveRenderingError):
        (WebCore::removeSamplesFromTrackBuffer):
        (WebCore::SourceBuffer::removeCodedFrames):
        (WebCore::SourceBuffer::evictCodedFrames):
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
        (WebCore::SourceBuffer::sourceBufferPrivateReenqueSamples):
        (WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples):
        (WebCore::SourceBuffer::provideMediaData):
        (WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued):
        (WebCore::SourceBuffer::monitorBufferingRate):
        (WebCore::SourceBuffer::logChannel const):
        * Modules/mediasource/SourceBuffer.h:
        * dom/Document.cpp:
        (WebCore::messageSourceForWTFLogChannel):
        (WebCore::Document::didLogMessage):
        * html/HTMLMediaElement.cpp:
        (WebCore::convertEnumerationToString):
        (WebCore::HTMLMediaElement::scheduleCheckPlaybackTargetCompatability):
        (WebCore::HTMLMediaElement::selectMediaResource):
        (WebCore::HTMLMediaElement::loadResource):
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        (WebCore::HTMLMediaElement::scheduleConfigureTextTracks):
        (WebCore::HTMLMediaElement::scheduleMediaEngineWasUpdated):
        (WebCore::HTMLMediaElement::scheduleUpdatePlayState):
        (WebCore::HTMLMediaElement::scheduleUpdateMediaState):
        * platform/ContentType.cpp:
        (WebCore::ContentType::toJSONString const):
        * platform/ContentType.h:
        (WTF::LogArgument<WebCore::ContentType>::toString):
        * platform/MediaSample.h:
        (WebCore::MediaSample::toJSONString const):
        (WTF::LogArgument<WebCore::MediaSample>::toString):
        * platform/graphics/FloatSize.cpp:
        (WebCore::FloatSize::toJSONObject const):
        (WebCore::FloatSize::toJSONString const):
        * platform/graphics/FloatSize.h:
        (WTF::LogArgument<WebCore::FloatSize>::toString):
        * platform/graphics/MediaSourcePrivate.h:
        (WebCore::MediaSourcePrivate::mediaSourceLogIdentifier):
        (WTF::LogArgument<WebCore::MediaSourcePrivate::AddStatus>::toString):
        (WTF::LogArgument<WebCore::MediaSourcePrivate::EndOfStreamStatus>::toString):
        * platform/graphics/SourceBufferPrivate.h:
        (WebCore::SourceBufferPrivate::sourceBufferLogger const):
        (WebCore::SourceBufferPrivate::sourceBufferLogIdentifier):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setMuted):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isCurrentPlaybackTargetWireless const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessVideoPlaybackDisabled const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessVideoPlaybackDisabled):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldBufferData):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogIdentifier):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogger):
        (WTF::LogArgument<WebCore::MediaPlayerPrivateMediaSourceAVFObjC::SeekState>::toString):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::convertEnumerationToString):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::play):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pause):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVolume):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setMuted):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVisible):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitForSeekCompleted):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekCompleted):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setPreservesPitch):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setHasAvailableVideoFrame):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateAllRenderersHaveAvailableSamples):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setNaturalSize):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceAttached):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceDetached):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::attemptToDecryptWithInstance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKeyChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initializationDataEncountered):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setReadyState):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setNetworkState):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setShouldPlayToPlaybackTarget):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isCurrentPlaybackTargetWireless const):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::logChannel const):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
        (WebCore::MediaSampleAVFObjC::toJSONString const):
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
        (WebCore::MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC):
        (WebCore::MediaSourcePrivateAVFObjC::~MediaSourcePrivateAVFObjC):
        (WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
        (WebCore::MediaSourcePrivateAVFObjC::logChannel const):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::bufferWasConsumedCallback):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):
        (WebCore::SourceBufferPrivateAVFObjC::didFailToParseStreamDataWithError):
        (WebCore::SourceBufferPrivateAVFObjC::processCodedFrame):
        (WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::append):
        (WebCore::SourceBufferPrivateAVFObjC::abort):
        (WebCore::SourceBufferPrivateAVFObjC::resetParserState):
        (WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource):
        (WebCore::SourceBufferPrivateAVFObjC::setReadyState):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):
        (WebCore::SourceBufferPrivateAVFObjC::layerDidReceiveError):
        (WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::SourceBufferPrivateAVFObjC::flush):
        (WebCore::SourceBufferPrivateAVFObjC::flushVideo):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        (WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed):
        (WebCore::SourceBufferPrivateAVFObjC::setActive):
        (WebCore::SourceBufferPrivateAVFObjC::willSeek):
        (WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples):
        (WebCore::SourceBufferPrivateAVFObjC::canSwitchToType):
        (WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession):
        (WebCore::SourceBufferPrivateAVFObjC::logChannel const):

2019-02-07  Youenn Fablet  <youenn@apple.com>

        Simplify applyConstraints callbacks
        https://bugs.webkit.org/show_bug.cgi?id=194297

        Reviewed by Eric Carlson.

        Make use of one callback for both success and failure cases.
        No changed of behavior.

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::applyConstraints):
        * platform/mediastream/MediaStreamTrackPrivate.cpp:
        (WebCore::MediaStreamTrackPrivate::applyConstraints):
        * platform/mediastream/MediaStreamTrackPrivate.h:
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::applyConstraints):
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::create):
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::create):
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
        (WebCore::MockGStreamerAudioCaptureSource::applyConstraints):
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
        (WebCore::MockGStreamerVideoCaptureSource::applyConstraints):
        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:

2019-02-07  Youenn Fablet  <youenn@apple.com>

        Unable to sign in leetcode.
        https://bugs.webkit.org/show_bug.cgi?id=194366
        rdar://problem/47259025.

        Reviewed by Chris Dumez.

        In case a signal is passed as part of a FetchRequestInit,
        the IDL binding code is throwing an exception in case signal is not an AbortSignal object.
        This breaks an AbortSignal shim used in some web sites.
        Relaxed the IDL binding rule by marking signal as any and doing the conversion in FetchRequest.

        Test: http/wpt/fetch/request-abort.html
        Also covered by manually signing in to leetcode.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::FetchRequest::initializeWith):
        * Modules/fetch/FetchRequestInit.h:
        (WebCore::FetchRequestInit::hasMembers const):
        * Modules/fetch/FetchRequestInit.idl:

2019-02-07  Youenn Fablet  <youenn@apple.com>

        Make to clear sources from UserMediaCaptureManagerProxy and UserMediaCaptureManager when no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=194312

        Reviewed by Eric Carlson.

        Add a way for sources to know when they are ended, i.e. that they will never be started again.
        No observable change of behavior.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::requestStop):
        * platform/mediastream/RealtimeMediaSource.h:

2019-02-07  Jer Noble  <jer.noble@apple.com>

        HTMLMediaElement registers wrong ScriptExecutionContext with its ActiveDOMObject parent class
        https://bugs.webkit.org/show_bug.cgi?id=194360

        HTMLMediaElement registers the Document used to create it with ActiveDOMObject, when it should
        really use that Document's contextDocument(). Rather than just fix this in HTMLMediaElement,
        make sure that the correct document is used everywhere by adding a new ActiveDOMObject constructor
        taking a Document&, and making an explicitly deleted Document* constructor to catch any new cases.

        Reviewed by Geoffrey Garen.

        * Modules/applepay/ApplePaySession.cpp:
        (WebCore::ApplePaySession::ApplePaySession):
        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::MediaRecorder):
        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::MediaDevices):
        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::UserMediaRequest):
        * Modules/notifications/Notification.cpp:
        (WebCore::Notification::Notification):
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::PaymentRequest):
        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::AudioContext):
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::WebAnimation):
        * css/FontFaceSet.cpp:
        (WebCore::FontFaceSet::FontFaceSet):
        * dom/ActiveDOMObject.cpp:
        (WebCore::ActiveDOMObject::ActiveDOMObject):
        * dom/ActiveDOMObject.h:
        * dom/Document.h:
        (WebCore::ActiveDOMObject::ActiveDOMObject):
        * html/HTMLMarqueeElement.cpp:
        (WebCore::HTMLMarqueeElement::HTMLMarqueeElement):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::HTMLMediaElement):
        * html/HTMLSourceElement.cpp:
        (WebCore::HTMLSourceElement::HTMLSourceElement):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::IntersectionObserver):

2019-02-07  Zalan Bujtas  <zalan@apple.com>

        [LFC][Out-of-flow] Use the containing block's padding width when computing min/max width.
        https://bugs.webkit.org/show_bug.cgi?id=194391

        Reviewed by Antti Koivisto.

        The spec is not clear about this but that's what matches the current behaviour.

        Test: fast/block/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):

2019-02-07  Zalan Bujtas  <zalan@apple.com>

        [LFC] Use dedicated data structures for optional used values (input to geometry functions)
        https://bugs.webkit.org/show_bug.cgi?id=194376

        Reviewed by Antti Koivisto.

        This is in preparation for being able to pass in the containing block's width as an optional used value.
        During layout we always have a valid width for the containing block, however it's not the case while computing the preferred width.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        * layout/FormattingContext.h:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin): Deleted.
        (): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin): Deleted.
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin): Deleted.
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        * layout/LayoutUnits.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin): Deleted.
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-02-07  Antti Koivisto  <antti@apple.com>

        Infinite recursion via CachedResource::~CachedResource
        https://bugs.webkit.org/show_bug.cgi?id=194378
        <rdar://problem/42023295>

        Reviewed by Daniel Bates.

        I don't know the exact steps to trigger this but the mechanism seems clear.

        1) An existing resource is removed from or replaced in CachedResourceLoader::m_documentResources map.
        2) This decrements the handle count of resource and causes it be deleted.
        3) CachedResource::~CachedResource calls m_owningCachedResourceLoader->removeCachedResource(*this). This only happens with
           resources that are "owned" by CachedResourceLoader which is a rare special case (used by image document and if memory cache is disabled).
        4) CachedResourceLoader::removeCachedResource looks up the resource from the map which causes a temporary CachedResourceHandle to be created.
           This increments the handle count of the resource from 0 back to 1.
        5) When the temporary dies, CachedResource::~CachedResource is called again and we cycle back to 3).

        The fix here is simply to remove CachedResourceLoader::removeCachedResource call from ~CachedResource.
        It is a leftover from when the map contained raw pointers instead of owning CachedResourceHandles.

        Since m_documentResources map has a handle to the resource, the only way we are in the destructor is that the resource
        has been removed from the map already (or is in process of being removed like in this crash). Any call that does anything
        other than bail out is going to crash.

        CachedResource::n_owningCachedResourceLoader member and CachedResourceLoader::removeCachedResource function only exist to
        support this erranous call so they are removed as well.

        * loader/ImageLoader.cpp:
        (WebCore::ImageLoader::updateFromElement):
        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::~CachedResource):

        This is the substantive change. The rest just removes now-dead code.

        * loader/cache/CachedResource.h:
        (WebCore::CachedResource::setOwningCachedResourceLoader): Deleted.
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::~CachedResourceLoader):
        (WebCore::CachedResourceLoader::requestUserCSSStyleSheet):
        (WebCore::CachedResourceLoader::requestResource):
        (WebCore::CachedResourceLoader::loadResource):
        (WebCore::CachedResourceLoader::garbageCollectDocumentResources):
        (WebCore::CachedResourceLoader::removeCachedResource): Deleted.
        * loader/cache/CachedResourceLoader.h:

2019-02-07  Miguel Gomez  <magomez@igalia.com>

        [WPE] Implement GStreamer based holepunch
        https://bugs.webkit.org/show_bug.cgi?id=193715

        Reviewed by Xabier Rodriguez-Calvar.

        Implement GStreamer based holepunch functionality. Instead of getting the video frames from the
        video sink and drawing then, the player just draws a transparent rectangle on the position where
        the video should be. MediaPlayerPrivateGStreamerBase will instantiate a platform dependant video
        sink which will be in charge of displaying the video frames in some way (usually on a plane below
        the browser), and will push empty frames to the compositor indicating that the rectangle to draw
        should overwrite the existent content. TextureMapperPlatformLayerBuffer::HolePunchClient is used
        to tell the video sink where to position the video so it's set below the browser transparent hole.

        Added ManualTest wpe/video-player-holepunch.html to test the feature.

        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::shouldIgnoreIntrinsicSize):
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/MediaPlayerPrivate.h:
        (WebCore::MediaPlayerPrivateInterface::shouldIgnoreIntrinsicSize):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::naturalSize const):
        (WebCore::MediaPlayerPrivateGStreamerBase::swapBuffersIfNeeded):
        (WebCore::setRectangleToVideoSink):
        (WebCore::GStreamerHolePunchClient::GStreamerHolePunchClient):
        (WebCore::MediaPlayerPrivateGStreamerBase::createHolePunchVideoSink):
        (WebCore::MediaPlayerPrivateGStreamerBase::pushNextHolePunchBuffer):
        (WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/texmap/TextureMapper.h:
        * platform/graphics/texmap/TextureMapperGL.cpp:
        (WebCore::TextureMapperGL::drawSolidColor):
        * platform/graphics/texmap/TextureMapperGL.h:
        * platform/graphics/texmap/TextureMapperLayer.cpp:
        (WebCore::TextureMapperLayer::paintSelf):
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
        (WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
        (WebCore::TextureMapperPlatformLayerBuffer::setHolePunchClient):
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
        * rendering/RenderVideo.cpp:
        (WebCore::RenderVideo::videoBox const):

2019-02-06  Benjamin Poulain  <benjamin@webkit.org>

        Unreviewed, rolling out r240759 and r240944.

        Some timer uses are done off the main thread, WebCore::Timer
        cannot be used

        Reverted changesets:

        "<rdar://problem/47570443> Responsiveness timers are too
        expensive for frequent events"
        https://bugs.webkit.org/show_bug.cgi?id=194003
        https://trac.webkit.org/changeset/240759

        "Use deferrable timer to restart the Responsiveness Timer on
        each wheel event"
        https://bugs.webkit.org/show_bug.cgi?id=194135
        https://trac.webkit.org/changeset/240944

2019-02-06  Keith Rollin  <krollin@apple.com>

        Update .xcfilelist files

        Unreviewed build fix.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-02-06  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM: don't send the entire function string with each event listener
        https://bugs.webkit.org/show_bug.cgi?id=194293
        <rdar://problem/47822809>

        Reviewed by Joseph Pecoraro.

        Test: inspector/dom/getEventListenersForNode.html

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::buildObjectForEventListener):

2019-02-06  Andy Estes  <aestes@apple.com>

        [Payment Request] It should be possible to require a phonetic name for shipping contacts
        https://bugs.webkit.org/show_bug.cgi?id=194311
        <rdar://46733045>

        Reviewed by Alex Christensen.

        It should be possible to require that a shipping contact has a phonetic name in Payment Request.
        To accomplish this, move requiredShippingContactFields from ApplePayPaymentRequest to
        ApplePayRequestBase so that it can be used as part of an Apple Pay payment method data.

        Since required shipping contact fields can now be specified both in
        requiredShippingContactFields and PaymentOptions, we merge the required fields from these
        two sources such that, e.g., email is required if it is specified in either place.

        So that clients can detect this new feature, the API version number is bumped from 5 to 6.

        Added test cases to ApplePayRequestShippingContact.https.html and ApplePayRequestShippingContactV3.https.html.

        * DerivedSources.make:
        * Modules/applepay/ApplePayPaymentRequest.h:
        * Modules/applepay/ApplePayPaymentRequest.idl:
        * Modules/applepay/ApplePayRequestBase.cpp:
        (WebCore::convertAndValidate):
        * Modules/applepay/ApplePayRequestBase.h:
        * Modules/applepay/ApplePayRequestBase.idl:
        * Modules/applepay/ApplePaySession.cpp:
        (WebCore::convertAndValidate):
        * Modules/applepay/PaymentCoordinatorClient.cpp: Added.
        (WebCore::PaymentCoordinatorClient::supportsVersion):
        * Modules/applepay/PaymentCoordinatorClient.h:
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::mergePaymentOptions):
        (WebCore::ApplePayPaymentHandler::show):
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * loader/EmptyClients.cpp:
        * testing/MockPaymentContactFields.h: Added.
        (WebCore::MockPaymentContactFields::MockPaymentContactFields):
        * testing/MockPaymentContactFields.idl: Added.
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::showPaymentUI):
        (WebCore::MockPaymentCoordinator::supportsVersion): Deleted.
        * testing/MockPaymentCoordinator.h:
        * testing/MockPaymentCoordinator.idl:

2019-02-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] PrivateName to PublicName hash table is wasteful
        https://bugs.webkit.org/show_bug.cgi?id=194277

        Reviewed by Michael Saboff.

        Use WebCoreBuiltinNames instead of adding WebCore names to JSC CommonIdentifiers.

        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::addCrossOriginPropertyNames):
        * bindings/js/JSLocationCustom.cpp:
        (WebCore::getOwnPropertySlotCommon):
        (WebCore::putCommon):
        * bindings/js/WebCoreBuiltinNames.h:

2019-02-06  Keith Rollin  <krollin@apple.com>

        Really enable the automatic checking and regenerations of .xcfilelists during builds
        https://bugs.webkit.org/show_bug.cgi?id=194357
        <rdar://problem/47861231>

        Reviewed by Chris Dumez.

        Bug 194124 was supposed to enable the automatic checking and
        regenerating of .xcfilelist files during the build. While related
        changes were included in that patch, the change to actually enable the
        operation somehow was omitted. This patch actually enables the
        operation. The check-xcfilelist.sh scripts now check
        WK_DISABLE_CHECK_XCFILELISTS, and if it's "1", opts-out the developer
        from the checking.

        No new tests since there should be no observable behavior difference.

        * Scripts/check-xcfilelists.sh:

2019-02-06  John Wilander  <wilander@apple.com>

        Forward Ad Click Attribution data from HTMLAnchorElement::handleClick() to WebKit::NavigationActionData
        https://bugs.webkit.org/show_bug.cgi?id=194325
        <rdar://problem/47840283>

        Reviewed by Chris Dumez.

        No new tests. This is just data forwarding. Once the data is stored, I will create
        test infrastructure to query it.

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::handleClick):
        * loader/AdClickAttribution.h:
        (WebCore::AdClickAttribution::encode const):
        (WebCore::AdClickAttribution::decode):
        (WebCore::AdClickAttribution::Conversion::encode const):
        (WebCore::AdClickAttribution::Conversion::decode):
            Infrastructure for IPC.
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::urlSelected):
        (WebCore::FrameLoader::loadURLIntoChildFrame):
        (WebCore::FrameLoader::loadFrameRequest):
        (WebCore::FrameLoader::loadURL):
            These functions forward the optional WebCore::AdClickAttribution object
            FrameLoader::loadURL() creates the NavigationAction object and sets the
            WebCore::AdClickAttribution object on there.
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::urlSelected):
        (WebCore::FrameLoader::loadURL):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::adClickAttribution):
        (WebCore::NavigationAction::setAdClickAttribution):

2019-02-06  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Implement supporting dictionaries for GPUTexture
        https://bugs.webkit.org/show_bug.cgi?id=194354

        Reviewed by Dean Jackson.

        Add dictionaries needed to create a GPUTextureDescriptor.

        No new tests; no change in behavior. 

        New interface and dictionaries added:
        * Modules/webgpu/GPUExtent3D.idl:
        * Modules/webgpu/GPUTextureDescriptor.idl:
        * Modules/webgpu/GPUTextureDimension.idl:
        * Modules/webgpu/GPUTextureUsage.idl:
        * platform/graphics/gpu/GPUExtent3D.h:
        * platform/graphics/gpu/GPUTextureDescriptor.h:
        * platform/graphics/gpu/GPUTextureDimension.h:
        * platform/graphics/gpu/GPUTextureUsage.h:

        Update WebGPUTextureFormatEnum to GPUTextureFormat:
        * Modules/webgpu/WebGPUTextureFormatEnum.h: Removed.
        * Modules/webgpu/GPUTextureFormat.idl: Renamed from WebGPUTextureFormatEnum.idl and updated to hyphen-case.
        * platform/graphics/gpu/GPUTextureFormat.h: Renamed from GPUTextureFormatEnum and updated for hyphen-case IDL.
        * Modules/webgpu/WebGPUSwapChain.cpp:
        * Modules/webgpu/WebGPUSwapChain.h:
        * Modules/webgpu/WebGPUSwapChain.idl:
        * platform/graphics/gpu/GPUSwapChain.h:
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::platformTextureFormatForGPUTextureFormat):
        (WebCore::GPUSwapChain::setFormat):

        Update project files with new symbols:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2019-02-12  Dean Jackson  <dino@apple.com>

        BitmapRenderer should handle existing ImageBuffers
        https://bugs.webkit.org/show_bug.cgi?id=194555
        <rdar://problem/47857150>

        Reviewed by Tim Horton.

        Our logic in ImageBitmapRenderingContext assumed that
        it had always created the ImageBuffer being used. However, it's
        valid to call something like toBlob() or toDataURL() before creating
        a context, so we need to handle the case where an ImageBuffer
        already exists.

        Test: fast/canvas/bitmaprenderer-created-after-toBlob.html

        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::createImageBuffer const): Move some logic into setImageBuffer.
        (WebCore::HTMLCanvasElement::setImageBuffer const): Make sure to clear the state saver.

2019-02-06  Daniel Bates  <dabates@apple.com>

        Standardize on ControlKey instead of CtrlKey
        https://bugs.webkit.org/show_bug.cgi?id=194317

        Reviewed by Tim Horton.

        * dom/UIEventWithKeyState.cpp:
        (WebCore::UIEventWithKeyState::modifiersFromInitializer):
        (WebCore::UIEventWithKeyState::setModifierKeys):
        * dom/UIEventWithKeyState.h:
        (WebCore::UIEventWithKeyState::ctrlKey const):
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::accessKeyModifiers):
        * page/mac/EventHandlerMac.mm:
        (WebCore::EventHandler::accessKeyModifiers):
        * platform/PlatformEvent.h:
        (WebCore::PlatformEvent::controlKey const):
        (WebCore::PlatformEvent::PlatformEvent):
        (WebCore::PlatformEvent::ctrlKey const): Deleted.
        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState):
        * platform/gtk/PlatformKeyboardEventGtk.cpp:
        (WebCore::modifiersForGdkKeyEvent):
        * platform/gtk/PlatformMouseEventGtk.cpp:
        (WebCore::PlatformMouseEvent::PlatformMouseEvent):
        * platform/gtk/PlatformWheelEventGtk.cpp:
        (WebCore::PlatformWheelEvent::PlatformWheelEvent):
        * platform/ios/KeyEventIOS.mm:
        (WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys):
        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::modifiersForEvent):
        * platform/mac/KeyEventMac.mm:
        (WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::modifiersForEvent):
        * testing/Internals.cpp:
        (WebCore::Internals::accessKeyModifiers const):

2019-02-06  Alex Christensen  <achristensen@webkit.org>

        Fix WatchOS build
        https://bugs.webkit.org/show_bug.cgi?id=194353

        Rubber stamped by Tim Horton and Wenson Hsieh.

        * rendering/RenderThemeIOS.mm:
        (WebCore::iconForAttachment):

2019-02-06  Olivier Blin  <olivier.blin@softathome.com>

        [SVG] fix SVGURIReference build by including SVGElement
        https://bugs.webkit.org/show_bug.cgi?id=194292

        Reviewed by Michael Catanzaro.

        * svg/SVGURIReference.h:
        SVGURIReference is making use of SVGElement in its constructor, but
        it was not declared.

        The issue was not seen in unified builds because it was grouped with
        other files including SVGElement.

2019-02-06  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move line layout code to a dedicated file
        https://bugs.webkit.org/show_bug.cgi?id=194328

        Reviewed by Antti Koivisto.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::isTrimmableContent): Deleted.
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const): Deleted.
        (WebCore::Layout::InlineFormattingContext::createFinalRuns const): Deleted.
        (WebCore::Layout::InlineFormattingContext::postProcessInlineRuns const): Deleted.
        (WebCore::Layout::InlineFormattingContext::closeLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const): Deleted.
        (WebCore::Layout::InlineFormattingContext::computeFloatPosition const): Deleted.
        (WebCore::Layout::InlineFormattingContext::placeInFlowPositionedChildren const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::hasContent const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::isClosed const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::isFirstLine const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::runs):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::contentLogicalLeft const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::availableWidth const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::lastRunType const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::logicalTop const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::logicalBottom const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::logicalHeight const):
        (WebCore::Layout::InlineFormattingContext::Line::hasContent const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::isClosed const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::isFirstLine const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::runs): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalLeft const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::availableWidth const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::lastRunType const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::logicalTop const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::logicalBottom const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::logicalHeight const): Deleted.
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::adjustedLineLogicalLeft): Deleted.
        (WebCore::Layout::InlineFormattingContext::Geometry::justifyRuns): Deleted.
        (WebCore::Layout::InlineFormattingContext::Geometry::computeExpansionOpportunities): Deleted.
        (WebCore::Layout::InlineFormattingContext::Geometry::alignRuns): Deleted.
        (WebCore::Layout::InlineFormattingContext::Geometry::runWidth): Deleted.
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::init):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::adjustLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::adjustLogicalRight):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::contentLogicalRight const):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::LineLayout::Line::close):
        (WebCore::Layout::InlineFormattingContext::Line::init): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalLeft): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalRight): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight const): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::appendContent): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::close): Deleted.

2019-02-06  Youenn Fablet  <youenn@apple.com>

        CoreAudioCaptureSource should not configure its audio unit until it starts producing data
        https://bugs.webkit.org/show_bug.cgi?id=194310

        Reviewed by Eric Carlson.

        Delay the configuration of the audio unit until the source is instructed to start producing data.
        This allows the UIProcess to not start changing the audio unit when
        checking for constraints during getUserMedia call before the prompt.
        Covered by manual testing.

        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
        (WebCore::CoreAudioCaptureSource::initializeToStartProducingData):
        (WebCore::CoreAudioCaptureSource::startProducingData):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:

2019-02-06  Youenn Fablet  <youenn@apple.com>

        Disable audio ducking at Audio Unit setup time
        https://bugs.webkit.org/show_bug.cgi?id=194303

        Reviewed by Eric Carlson.

        When creating a CoreAudioCaptureSource, the audio unit might be
        reconfigured if a past audio capture was done.
        This might trigger audio ducking which is undone in startInternal.
        In some cases, startInternal will never call start.
        In that case, the audio unit will continue ducking the other processing.
        To ensure ducking is disabled, unduck in setupAudioUnit as well as startInternal.

        In addition to that, once a shared unit is created, it stays alive until the UIProcess exits.
        This might affect all applications.
        Instead, whenever the shared unit is stopped, clean it so as to restore the state as if no capture ever happened.
        This has noticeable effects in the quality of audio being played on bluetooth devices.

        Covered by manual tests.

        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioSharedUnit::setupAudioUnit):
        (WebCore::CoreAudioSharedUnit::unduck):
        (WebCore::CoreAudioSharedUnit::startInternal):
        (WebCore::CoreAudioSharedUnit::captureFailed):
        (WebCore::CoreAudioSharedUnit::stopProducingData):

2019-02-06  Antti Koivisto  <antti@apple.com>

        RELEASE_ASSERT(!m_document.isResolvingTreeStyle()) in com.apple.WebKit.WebContent at WebCore: WebCore::StyleResolver::~StyleResolver
        https://bugs.webkit.org/show_bug.cgi?id=194333
        <rdar://problem/47822929>

        Reviewed by Zalan Bujtas.

        Content extensions may mutate the extension stylesheet in the middle of a style resolution as a result of
        the legacy animation code triggering a resource load.

        Test: http/tests/contentextensions/css-display-none-keyframe.html

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

        Avoid clearing the style resolver if we are in the middle of a style resolution.
        A better fix that avoid doing this in the first place is tracked by https://bugs.webkit.org/show_bug.cgi?id=194335.

2019-02-06  Pablo Saavedra  <psaavedra@igalia.com>

        Build failure after r240315
        https://bugs.webkit.org/show_bug.cgi?id=194341

        Reviewed by Wenson Hsieh.

        * bindings/js/JSUndoItemCustom.cpp:
        (WebCore::JSUndoItemOwner::isReachableFromOpaqueRoots):

2019-02-05  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION (r240909): Release assert in FrameLoader::loadURL when navigating with a non-existent target name
        https://bugs.webkit.org/show_bug.cgi?id=194329

        Reviewed by Geoffrey Garen.

        The bug was caused by the code path for when navigating with a specific target frame name that does not exist
        never setting the load type of PolicyChecker. As a result, we would use whatever load type used in the previous
        navigation, resulting in this release assertion.

        Updating the load type here should in theory fix the underlying bug r240909 was meant to catch & fix.

        Test: fast/loader/navigate-with-new-target-after-back-forward-navigation.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):

2019-02-05  Claudio Saavedra  <csaavedra@igalia.com>

        [FreeType] Build fix for Debian stable

        Unreviewed build fix.

        Debian stable currently has a version of fontconfig that doesn't
        yet have FC_COLOR. #ifdef its use to fix the build.

        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::FontCache::systemFallbackForCharacters):

2019-02-05  Alex Christensen  <achristensen@webkit.org>

        Stop using blobRegistry in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=194027

        Reviewed by Youenn Fablet.

        Also stop using NetworkBlobRegistry::singleton.
        Instead, have the NetworkProcess own a NetworkBlobRegistry which owns a BlobRegistryImpl.
        We now have to resolve all blob file references while we still have a
        NetworkConnectionToWebProcess/NetworkProcess/NetworkBlobRegistry/BlobRegistryImpl instead of
        using the singleton after we have passed everything to the loading code, but it works the same
        as it did before.  We must consume the sandbox extension from the BlobRegistryImpl before using
        the resolved files, so I pass around a Vector<RefPtr<WebCore::BlobDataFileReference>> so we know
        which extensions to revoke.

        * platform/network/BlobRegistryImpl.h:
        * platform/network/FormData.cpp:
        (WebCore::appendBlobResolved):
        (WebCore::FormData::resolveBlobReferences):
        * platform/network/FormData.h:
        * platform/network/cf/FormDataStreamCFNet.cpp:
        (WebCore::createHTTPBodyCFReadStream):
        * platform/network/curl/CurlFormDataStream.cpp:
        (WebCore::CurlFormDataStream::CurlFormDataStream):

2019-02-05  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240984.

        Revision casued two API timeouts

        Reverted changeset:

        "Stop using blobRegistry in NetworkProcess"
        https://bugs.webkit.org/show_bug.cgi?id=194027
        https://trac.webkit.org/changeset/240984

2019-02-05  Keith Rollin  <krollin@apple.com>

        Enable the automatic checking and regenerations of .xcfilelists during builds
        https://bugs.webkit.org/show_bug.cgi?id=194124
        <rdar://problem/47721277>

        Reviewed by Tim Horton.

        Bug 193790 add a facility for checking -- during build time -- that
        any needed .xcfilelist files are up-to-date and for updating them if
        they are not. This facility was initially opt-in by setting
        WK_ENABLE_CHECK_XCFILELISTS until other pieces were in place and until
        the process seemed robust. Its now time to enable this facility and
        make it opt-out. If there is a need to disable this facility, set and
        export WK_DISABLE_CHECK_XCFILELISTS=1 in your environment before
        running `make` or `build-webkit`, or before running Xcode from the
        command line.

        Additionally, remove the step that generates a list of source files
        going into the UnifiedSources build step. It's only necessarily to
        specify Sources.txt and SourcesCocoa.txt as inputs.

        No new tests since there should be no observable behavior difference.

        * UnifiedSources-input.xcfilelist: Removed.
        * WebCore.xcodeproj/project.pbxproj:

2019-02-05  Keith Rollin  <krollin@apple.com>

        Update .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=194121
        <rdar://problem/47720863>

        Reviewed by Tim Horton.

        Preparatory to enabling the facility for automatically updating the
        .xcfilelist files, check in a freshly-updated set so that not everyone
        runs up against having to regenerate them themselves.

        No new tests since there should be no observable behavior difference.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-02-05  Alex Christensen  <achristensen@webkit.org>

        Stop using blobRegistry in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=194027

        Reviewed by Youenn Fablet.

        Also stop using NetworkBlobRegistry::singleton.
        Instead, have the NetworkProcess own a NetworkBlobRegistry which owns a BlobRegistryImpl.
        We now have to resolve all blob file references while we still have a
        NetworkConnectionToWebProcess/NetworkProcess/NetworkBlobRegistry/BlobRegistryImpl instead of
        using the singleton after we have passed everything to the loading code, but it works the same
        as it did before.  We must consume the sandbox extension from the BlobRegistryImpl before using
        the resolved files, so I pass around a Vector<RefPtr<WebCore::BlobDataFileReference>> so we know
        which extensions to revoke.

        * platform/network/BlobRegistryImpl.h:
        * platform/network/FormData.cpp:
        (WebCore::appendBlobResolved):
        (WebCore::FormData::resolveBlobReferences):
        * platform/network/FormData.h:
        * platform/network/cf/FormDataStreamCFNet.cpp:
        (WebCore::createHTTPBodyCFReadStream):
        * platform/network/curl/CurlFormDataStream.cpp:
        (WebCore::CurlFormDataStream::CurlFormDataStream):

2019-02-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r240742.

        Causes crashes on iOS simulator.

        Reverted changeset:

        "[iOS] Keyups for non-modifier keys identified as "Dead" when
        not focused in a content-editable element"
        https://bugs.webkit.org/show_bug.cgi?id=192824
        https://trac.webkit.org/changeset/240742

2019-02-05  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] collectInlineContent should use pre-computed margins, paddings and borders
        https://bugs.webkit.org/show_bug.cgi?id=194269

        Reviewed by Antti Koivisto.

        In this patch we pre-compute the margins padding and borders for formatting context roots, replaced boxes and non-replaced containers.
        These property values are input to collectInlineContent's inline item detaching logic.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::nextInPreOrder):
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/layouttree/LayoutBox.h: ran out bits. 

2019-02-05  Antoine Quint  <graouts@apple.com>

        REGRESSION (r240579): com.apple.WebKit.WebContent at WebCore: WebCore::Document::absoluteEventRegionForNode
        https://bugs.webkit.org/show_bug.cgi?id=194284
        <rdar://problem/47774298>

        Reviewed by Antti Koivisto.

        The m_touchActionElements list needs to be HashSet<RefPtr<Element>> instead of HashSet<Element*>. It was initially storing raw pointers based on m_touchEventTargets
        which is an EventTargetSet (typedef’d to HashCountedSet<Node*>), but that's because these nodes have an event listener registered for them and as such are kept alive,
        whereas elements with a touch-action property aren’t. Elements are removed from this list from Document::nodeWillBeRemoved() and from Document::updateTouchActionElements(),
        the latter being called from Style::TreeResolver::resolveElement().

        * dom/Document.cpp:
        (WebCore::Document::updateTouchActionElements):
        * dom/Document.h:
        (WebCore::Document::touchActionElements const):

2019-02-05  Benjamin Poulain  <benjamin@webkit.org>

        Hit testing functions optimizations
        https://bugs.webkit.org/show_bug.cgi?id=194073
        <rdar://problem/47692312>

        Reviewed by Zalan Bujtas.

        This patch implements some easy optimizations that speed up
        hit testing without changing the algorithms.

        * page/FrameViewLayoutContext.h:
        The code for:
            view().frameView().layoutContext().isPaintOffsetCacheEnabled()
        followed by:
            view().frameView().layoutContext().layoutState()
        was loading all the intermediate values twice and calling layoutState()
        twice.

        By marking the function as pure, Clang can CSE the whole thing and
        remove the duplicated code.

        * platform/graphics/LayoutRect.h:
        (WebCore::LayoutRect::isInfinite const):
        That one is pretty funny.

        Since LayoutRect::isInfinite() was implemented before operator==() is
        declared, the compiler was falling back to the implicit convertion to FloatRect()
        before doing any comparison.

        This explains a bunch of the convertions to float when using LayoutRect.

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::mapLocalToContainer const):
        Just reoder to make the register nice and clean for the optimization described above.

2019-02-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Shrink size of VM by lazily allocating IsoSubspaces for non-common types
        https://bugs.webkit.org/show_bug.cgi?id=193993

        Reviewed by Keith Miller.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateHeader):
        * bridge/runtime_method.h:

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        Move some macOS/iOS scrolling code into the scrolling/cocoa directory
        https://bugs.webkit.org/show_bug.cgi?id=194245

        Reviewed by Zalan Bujtas.

        ScrollingTreeFixedNode and ScrollingTreeStickyNode are used on iOS and macOS, so move them to the cocoa
        directory.

        Standardize on the ordering of ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC).

        Stop building ScrollingThread for iOS (it's never used), and stub out some functions so things build.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/scrolling/ScrollingThread.cpp:
        (WebCore::ScrollingThread::initializeRunLoop):
        (WebCore::ScrollingThread::wakeUpRunLoop):
        (WebCore::ScrollingThread::threadRunLoopSourceCallback):
        * page/scrolling/cocoa/ScrollingTreeFixedNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h.
        * page/scrolling/cocoa/ScrollingTreeFixedNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm.
        * page/scrolling/cocoa/ScrollingTreeStickyNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h.
        * page/scrolling/cocoa/ScrollingTreeStickyNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm.
        * page/scrolling/mac/ScrollingThreadMac.mm:
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

2019-02-04  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
        https://bugs.webkit.org/show_bug.cgi?id=174816

        Reviewed by Michael Catanzaro.

        Tests: enabled fast/url/user-visible/.

        * testing/Internals.cpp:
        (WebCore::Internals::userVisibleString): Enable method on all platforms.

2019-02-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        [curl] ASSERTION FAILED: !m_didNotifyResponse || m_multipartHandle
        https://bugs.webkit.org/show_bug.cgi?id=190895

        Reviewed by Ross Kirsling.

        An assertion was failing in CurlRequest::invokeDidReceiveResponse
        because DidReceiveResponse was already dispatched. This condition
        was met if CurlRequestScheduler::completeTransfer is called while
        waiting for the reply for the first DidReceiveResponse.

        No new tests, covered by existing tests.

        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::needToInvokeDidReceiveResponse const):
        Return true if m_didNotifyResponse is false disregard to
        m_didReturnFromNotify.

2019-02-04  Said Abou-Hallawa  <said@apple.com>

        [CG] Enable setAdditionalSupportedImageTypes for WK1
        https://bugs.webkit.org/show_bug.cgi?id=194190

        Reviewed by Tim Horton.

        Move the function webCoreStringVectorFromNSStringArray from WebKit to
        WebCore so it can be used by both WebKit and WebKitLegacy.

        * platform/mac/StringUtilities.h:
        * platform/mac/StringUtilities.mm:
        (WebCore::webCoreStringVectorFromNSStringArray):

2019-02-04  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Code clean-up for RenderPipeline backend
        https://bugs.webkit.org/show_bug.cgi?id=194238

        Reviewed by Dean Jackson.

        Replace dot syntax setters with calls to setter methods, and remove unnecessary setter calls for 
        the input state's descriptor arrays.

        Covered by existing tests; no change in behavior.

        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::tryCreateMtlDepthStencilState): Refactor to use implicit setters rather than dot syntax.
        (WebCore::setInputStateForPipelineDescriptor): Ditto, and remove unnecessary setter calls on array objects.

2019-02-04  Benjamin Poulain  <benjamin@webkit.org>

        Use deferrable timer to restart the Responsiveness Timer on each wheel event
        https://bugs.webkit.org/show_bug.cgi?id=194135
        <rdar://problem/47724099>

        Reviewed by Simon Fraser.

        The original DeferrableOneShotTimer was not really deferrable.
        What it allows is to restart the count down from scratch after
        firing.

        For this optimization, I want to keep the correct timing but avoid
        starting a real timer every time.

        I renamed DeferrableOneShotTimer to ResettableOneShotTimer and
        created a real DeferrableOneShotTimer that support deadlines.

        * css/CSSImageGeneratorValue.cpp:
        * html/HTMLPlugInImageElement.h:
        * loader/cache/CachedResource.h:
        * platform/Timer.cpp:
        (WebCore::DeferrableOneShotTimer::startOneShot):
        (WebCore::DeferrableOneShotTimer::fired):
        * platform/Timer.h:
        (WebCore::TimerBase::nextFireTime const):
        (WebCore::ResettableOneShotTimer::ResettableOneShotTimer):
        (WebCore::DeferrableOneShotTimer::DeferrableOneShotTimer):
        (WebCore::DeferrableOneShotTimer::stop):
        (WebCore::DeferrableOneShotTimer::restart): Deleted.
        * platform/graphics/ca/TileController.h:
        * platform/graphics/cg/SubimageCacheWithTimer.h:

2019-02-04  Antoine Quint  <graouts@apple.com>

        Use constants for pointer types
        https://bugs.webkit.org/show_bug.cgi?id=194232

        Reviewed by Dean Jackson.

        We cannot use an enum for the pointer type since a custom pointer type can be created by developers when creating a
        pointer event using JavaScript, but we can at least used string constants for the ones created internally.

        * dom/PointerEvent.cpp:
        (WebCore::PointerEvent::mousePointerType):
        (WebCore::PointerEvent::penPointerType):
        (WebCore::PointerEvent::touchPointerType):
        * dom/PointerEvent.h:
        * dom/ios/PointerEventIOS.cpp:

2019-02-04  Zalan Bujtas  <zalan@apple.com>

        [First paint] Adjust "finishedParsingMainDocument" flag by taking deferred and async scripts into account.
        https://bugs.webkit.org/show_bug.cgi?id=194168

        Reviewed by Simon Fraser.

        First paint should not be blocked by async or deferred scripts.

        * page/FrameView.cpp:
        (WebCore::FrameView::qualifiesAsVisuallyNonEmpty const):

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        Async overflow scroll with border-radius renders incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=194205
        <rdar://problem/47771668>

        Reviewed by Zalan Bujtas.

        When an element has composited overflow:scroll and border-radius, we need to make a layer
        to clip to the inside of the border radius if necessary.

        Existing code simply turned off needsDescendantsClippingLayer for composited scrolling
        layers, but now we check to see if the inner border is rounded. If we have both a m_childContainmentLayer
        and scrolling layers, we need to adjust the location of the scrolling layers (which are parented
        in m_childContainmentLayer).

        Also fix offsetFromRenderer for these layers; it's positive for layers inset from the top left
        of the border box.

        Tests: compositing/clipping/border-radius-async-overflow-clipping-layer.html
               compositing/clipping/border-radius-async-overflow-non-stacking.html
               compositing/clipping/border-radius-async-overflow-stacking.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::updateChildClippingStrategy): Layout is always up-to-date now, so remove the comment.

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        PageOverlayController's layers should be created lazily
        https://bugs.webkit.org/show_bug.cgi?id=194199

        Reviewed by Tim Horton.

        Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
        and use them to only parent the overlay-hosting layers when necessary.

        For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
        simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
        which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
        compositing updates that parents the layerWithDocumentOverlays().

        View overlays are added to the layer tree via the DrawingArea. When we go between having
        none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
        on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
        compositing flush (this has to be done manually because view overlay layers are outside the
        subtree managed by RenderLayerCompositor).
        
        Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
        there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
        overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
        having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

        * loader/EmptyClients.h:
        * page/ChromeClient.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::setNeedsCompositingConfigurationUpdate): These functions need to schedule a compositing flush
        because there may be nothing else that does.
        (WebCore::FrameView::setNeedsCompositingGeometryUpdate):
        * page/Page.cpp:
        (WebCore::Page::installedPageOverlaysChanged):
        * page/Page.h:
        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::hasDocumentOverlays const):
        (WebCore::PageOverlayController::hasViewOverlays const):
        (WebCore::PageOverlayController::attachViewOverlayLayers): PageOverlayController has the Page so it
        might as well be the one to call through the ChromeClient.
        (WebCore::PageOverlayController::detachViewOverlayLayers):
        (WebCore::PageOverlayController::installPageOverlay):
        (WebCore::PageOverlayController::uninstallPageOverlay):
        * page/PageOverlayController.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers): isFullUpdate is always true; remove it.
        (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
        (WebCore::RenderLayerCompositor::attachRootLayer):
        (WebCore::RenderLayerCompositor::detachRootLayer):

2019-02-04  Eric Liang  <ericliang@apple.com>

        When performing Increment or Decrement on sliders, check to see if the slider is disabled.
        https://bugs.webkit.org/show_bug.cgi?id=173497

        Reviewed by Chris Fleizach.

        Test: accessibility/set-value-not-work-for-disabled-sliders.html

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::alterSliderValue):

2019-02-04  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak WebIDBConnectionToServer in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193688
        <rdar://problem/47353263>

        Reviewed by Geoffrey Garen.

        Let IDBConnectionToServer keep a WeakPtr of IDBConnectionToServerDelegate.

        * Modules/indexeddb/client/IDBConnectionToServer.cpp:
        (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer):
        * Modules/indexeddb/client/IDBConnectionToServer.h:
        * Modules/indexeddb/client/IDBConnectionToServerDelegate.h:

2019-02-04  Youenn Fablet  <youenn@apple.com>

        Make sure to remove the device observer in AVVideoCaptureSource
        https://bugs.webkit.org/show_bug.cgi?id=194181
        <rdar://problem/47739247>

        Reviewed by Eric Carlson.

        Make sure to remove the device observer when the observer is destroyed.
        To simplify things, add the observer in AVVideoCaptureSource constructor and remove it in the destructor.

        Make also sure the session observer is also removed whenever the session is released by AVVideoCaptureSource.

        Covered by manual test.

       * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::initializeSession):
        (WebCore::AVVideoCaptureSource::clearSession):
        (WebCore::AVVideoCaptureSource::stopProducingData):
        (WebCore::AVVideoCaptureSource::setupSession):

2019-02-04  Antoine Quint  <graouts@apple.com>

        Use a dedicated type instead of int32_t for pointer identifiers
        https://bugs.webkit.org/show_bug.cgi?id=194217

        Reviewed by Antti Koivisto.

        * WebCore.xcodeproj/project.pbxproj:
        * dom/PointerEvent.h:
        * dom/PointerID.h: Added.
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::setPointerCapture):
        (WebCore::PointerCaptureController::releasePointerCapture):
        (WebCore::PointerCaptureController::hasPointerCapture):
        (WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier):
        (WebCore::PointerCaptureController::hasCancelledPointerEventForIdentifier):
        (WebCore::PointerCaptureController::cancelPointer):
        * page/PointerCaptureController.h:

2019-02-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Unable to make a selection in jsfiddle.net using arrow keys when requesting desktop site
        Followup to https://bugs.webkit.org/show_bug.cgi?id=193758

        Reviewed by Daniel Bates.

        Put the iOS-specific behavior behind an EditingBehavior check, rather than a compile-time guard. No change in
        behavior.

        * editing/EditingBehavior.h:
        (WebCore::EditingBehavior::shouldMoveSelectionToEndWhenFocusingTextInput const):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setDefaultSelectionAfterFocus):

2019-02-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Make InlineFormattingContext::collectInlineContent non-recursive.
        https://bugs.webkit.org/show_bug.cgi?id=194210

        Reviewed by Antti Koivisto.

        Use iterative algorithm to collect inline content (and add breaking rules).
        This is in preparation for fixing the inline preferred width computation.  

        * layout/Verification.cpp:
        (WebCore::Layout::resolveForRelativePositionIfNeeded):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::addDetachingRules):
        (WebCore::Layout::createAndAppendInlineItem):
        (WebCore::Layout::InlineFormattingContext::collectInlineContent const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2019-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix unused variable warnings introduced in r240912
        https://bugs.webkit.org/show_bug.cgi?id=194198
        <rdar://problem/47776051>

        * page/FrameView.cpp:
        (WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
        (WebCore::FrameView::setNeedsCompositingGeometryUpdate):

2019-02-04  Frederic Wang  <fwang@igalia.com>

        [css-scroll-snap] scroll-snap-align not honored on child with non-visible overflow
        https://bugs.webkit.org/show_bug.cgi?id=191816

        Reviewed by Wenson Hsieh.

        This patch fixes a bug that prevents children of a scroll container to create snap positions
        when they have non-visible overflow. This happens because for such a child, the function
        RenderBox::findEnclosingScrollableContainer() will return the child itself rather than the
        scroll container. To address that issue, we introduce a new
        RenderObject::enclosingScrollableContainerForSnapping() helper function that ensures that
        a real RenderBox ancestor is returned.

        Test: css3/scroll-snap/scroll-snap-children-with-overflow.html

        * page/scrolling/AxisScrollSnapOffsets.cpp:
        (WebCore::updateSnapOffsetsForScrollableArea): Use enclosingScrollableContainerForSnapping()
        so that we don't skip children with non-visible overflow.
        * rendering/RenderLayerModelObject.cpp:
        (WebCore::RenderLayerModelObject::styleDidChange): Ditto. The new function calls
        enclosingBox().
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Return
        the scrollable container of the enclosing box. If it is actually the render object itself
        then start the search from the parent box instead.
        * rendering/RenderObject.h: Declare enclosingScrollableContainerForSnapping(). 

2019-02-04  Antti Koivisto  <antti@apple.com>

        Rename GraphicsLayer and PlatformCALayer scrolling layer type enum values to be less ambiguous
        https://bugs.webkit.org/show_bug.cgi?id=194215

        Reviewed by Frédéric Wang.

        GraphicsLayer::Type::Scrolling -> GraphicsLayer::Type::ScrollContainer
        PlatformCALayer::LayerTypeScrollingLayer -> PlatformCALayer::LayerTypeScrollContainerLayer

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::supportsLayerType):
        * platform/graphics/GraphicsLayer.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayer::supportsLayerType):
        (WebCore::GraphicsLayerCA::initialize):
        * platform/graphics/ca/PlatformCALayer.cpp:
        (WebCore::operator<<):
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::commonInit):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::ensureRootLayer):

2019-02-03  Antti Koivisto  <antti@apple.com>

        [iOS] Tiles not created in large scrollable iframes
        https://bugs.webkit.org/show_bug.cgi?id=193665

        Reviewed by Simon Fraser.

        We are not syncing scroll position back to the graphics layer tree correctly.

        Test by Frédéric Wang.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollPosition):

        Factor setting and syncing scrolling layer positions into a function.
        Use bounds.origin scrolling mechanic when scrollContainerLayer is present.

        (WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
        (WebCore::AsyncScrollingCoordinator::updateScrollLayerPosition): Deleted.
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::scrollContainerLayerForFrameView):
        (WebCore::ScrollingCoordinator::scrolledContentsLayerForFrameView):
        (WebCore::ScrollingCoordinator::scrollLayerForFrameView): Deleted.
        * page/scrolling/ScrollingCoordinator.h:
        * rendering/RenderLayerCompositor.cpp:

        Rename scrollLayer to scrolledContentsLayer according to out preferred naming scheme and use it in that role only.
        Add scrollContainerLayer as a separate layer. It is only constructed when using async scrolling on iOS.

        (WebCore::RenderLayerCompositor::~RenderLayerCompositor):
        (WebCore::RenderLayerCompositor::customPositionForVisibleRectComputation const):
        (WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::RenderLayerCompositor::frameViewDidChangeSize):
        (WebCore::RenderLayerCompositor::updateScrollLayerPosition):
        (WebCore::RenderLayerCompositor::frameViewDidScroll):
        (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForHeader):
        (WebCore::RenderLayerCompositor::updateLayerForFooter):
        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
        (WebCore::RenderLayerCompositor::ensureRootLayer):
        (WebCore::RenderLayerCompositor::destroyRootLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        * rendering/RenderLayerCompositor.h:

2019-02-03  Simon Fraser  <simon.fraser@apple.com>

        Make setNeedsLayout on the root more explicitly about triggering its side-effects
        https://bugs.webkit.org/show_bug.cgi?id=194198

        Reviewed by Antti Koivisto.

        Calling setNeedsLayout() on the FrameView or RenderView is an odd concept; the render tree
        generally manages its own dirty state.

        Most callers of setNeedsLayout() on the root are really trying to trigger the side-effects
        of layout, like compositing updates, which are required when view configuration state, like
        headers, footers and transparency, change. These dependencies are currently implicit and
        poorly defined.

        Renaming "setNeedsLayout" on FrameView is a step towards being more explicit about pure
        rendering updates, vs updates of downstream data strutures like compositing. It's now called
        setNeedsLayoutAfterViewConfigurationChange(). In addition, expose
        setNeedsCompositingConfigurationUpdate() and setNeedsCompositingGeometryUpdate() so callers
        can trigger the appropriate types of compositing updates on the root layer.

        In addition, FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange() schedules a
        layout. Withtout this, some callers would dirty the RenderView's layout but rely on some
        other trigger to make the layout happen.

        This cleanup was prompted by noticing that FrameView::setHeaderHeight() dirtied layout
        but never scheduled it, making banner insertion in MiniBrowser unreliable.

        This patch also removes the aliasing of headerHeight/footerHeight between Page and
        FrameView. Banners are a property of Page, so FrameView fetches the banner heights
        from Page.

        * page/FrameView.cpp:
        (WebCore::FrameView::headerHeight const):
        (WebCore::FrameView::footerHeight const):
        (WebCore::FrameView::availableContentSizeChanged):
        (WebCore::FrameView::setNeedsLayoutAfterViewConfigurationChange):
        (WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
        (WebCore::FrameView::setNeedsCompositingGeometryUpdate):
        (WebCore::FrameView::scheduleSelectionUpdate):
        (WebCore::FrameView::setTransparent):
        (WebCore::FrameView::setBaseBackgroundColor):
        (WebCore::FrameView::setAutoSizeFixedMinimumHeight):
        (WebCore::FrameView::enableAutoSizeMode):
        (WebCore::FrameView::setHeaderHeight): Deleted.
        (WebCore::FrameView::setFooterHeight): Deleted.
        (WebCore::FrameView::setNeedsLayout): Deleted.
        * page/FrameView.h:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange):
        (WebCore::FrameViewLayoutContext::setNeedsLayout): Deleted.
        * page/FrameViewLayoutContext.h:
        * page/Page.cpp:
        (WebCore::Page::setPageScaleFactor):
        (WebCore::Page::setHeaderHeight):
        (WebCore::Page::setFooterHeight):
        (WebCore::Page::addHeaderWithHeight): Deleted.
        (WebCore::Page::addFooterWithHeight): Deleted.
        * page/Page.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBacking):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        (WebCore::Internals::setHeaderHeight):
        (WebCore::Internals::setFooterHeight):

2019-02-03  John Wilander  <wilander@apple.com>

        Parse and handle Ad Click Attribution attributes in HTMLAnchorElement::handleClick()
        https://bugs.webkit.org/show_bug.cgi?id=194104
        <rdar://problem/47649991>

        Reviewed by Chris Dumez, Daniel Bates, and Darin Adler.

        Test: http/tests/adClickAttribution/anchor-tag-attributes-validation.html

        This patch adds parsing and validation of the two new Ad Click Attribution
        attributes in anchor elements: adcampaignid and addestination. The data is
        not yet forwarded into the loader.

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAdClickAttribution const):
        (WebCore::HTMLAnchorElement::handleClick):
            Now calls HTMLAnchorElement::parseAdClickAttribution().
        * html/HTMLAnchorElement.h:
        * loader/AdClickAttribution.h:
            Made WebCore::AdClickAttribution copyable since it's needed to have it be
            WTF::Optional. Also made AdClickAttribution::MaxEntropy public. Changed
            numeric types from unsigned short to uint32_t.
        (WebCore::AdClickAttribution::Campaign::isValid const):
        (WebCore::AdClickAttribution::Conversion::isValid const):

2019-02-03  Ryosuke Niwa  <rniwa@webkit.org>

        Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
        https://bugs.webkit.org/show_bug.cgi?id=194189

        Reviewed by Geoffrey Garen.

        Introduced PolicyCheckIdentifier to pair each navigation policy check request with a decision,
        and deployed it in PolicyChecker. The identifier is passed from WebContent process to UI process
        in WebKit2, and passed it back with the policy decision.

        Because PolicyCheckIdentifier embeds the process identifier from which a navigation policy is checked,
        we would be able to detect when UI process had sent the decision to a wrong WebContent process.

        This patch also adds release assertions to make sure history().provisionalItem() is set whenever
        we're requesting a navigation policy check.

        These code changes should either:
        1. Fix crashes in FrameLoader::continueLoadAfterNavigationPolicy where isBackForwardLoadType would
           return true yet history().provisionalItem() is null.
        2. Detect a bug that UI process can send a navigation policy decision to a wrong WebContent process.
        3. Rule out the possibility that (2) exists.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::willSendRequest):
        (WebCore::DocumentLoader::responseReceived):
        * loader/EmptyClients.cpp:
        (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkContentPolicy):
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::loadPostRequest):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * loader/FrameLoaderTypes.h:
        (WebCore::PolicyCheckIdentifier): Added.
        (WebCore::PolicyCheckIdentifier::operator== const): Added.
        (WebCore::PolicyCheckIdentifier::PolicyCheckIdentifier): Added.
        (WebCore::PolicyCheckIdentifier::encode const): Added.
        (WebCore::PolicyCheckIdentifier::decode): Added.
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyCheckIdentifier::generate):
        (WebCore::PolicyCheckIdentifier::isValidFor): Returns true if the identifer matches. Also release asserts
        that the process ID is same, and that m_check is always not zero (meaning it's a generated value).
        The failure of these release assertions would indicate that there is a bug in UI process, which results in
        a policy decision response being sent to a wrong Web process.
        (WebCore::PolicyChecker::checkNavigationPolicy): Exit early if isValidFor fails.
        (WebCore::PolicyChecker::checkNewWindowPolicy):

2019-02-03  Antti Koivisto  <antti@apple.com>

        Don't include ScrollCoordinator.h from Element.h
        https://bugs.webkit.org/show_bug.cgi?id=194206

        Reviewed by Daniel Bates.

        * dom/Element.h:

2019-02-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unable to move selection into editable roots with 0 height
        https://bugs.webkit.org/show_bug.cgi?id=194143
        <rdar://problem/47767284>

        Reviewed by Ryosuke Niwa.

        Currently, positions inside editable elements of height 0 are not considered to be candidates when
        canonicalizing a position to its visible counterpart. This prevents us from moving the selection into these
        editable roots at all. To fix this, we relax this constraint by allowing positions anchored by root editable
        elements to be candidates.

        Test: editing/selection/insert-text-in-empty-content-editable.html

        * dom/Position.cpp:
        (WebCore::Position::isCandidate const):

2019-02-03  Simon Fraser  <simon.fraser@apple.com>

        Tidyup of Pagination and FrameView m_mediaType initialization
        https://bugs.webkit.org/show_bug.cgi?id=194203

        Reviewed by Darin Adler.

        Fix post-commit feedback on lines around code changed in r240901.

        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        * page/FrameView.h:
        * rendering/Pagination.h:
        (WebCore::Pagination::operator!= const):

2019-02-03  Megan Gardner  <megan_gardner@apple.com>

        Turn on Smart Paste
        https://bugs.webkit.org/show_bug.cgi?id=193786

        Reviewed by Ryosuke Niwa.

        Turned on a modified tests:
        LayoutTests/editing/pasteboard/smart-paste-001.html
        LayoutTests/editing/pasteboard/smart-paste-002.html
        LayoutTests/editing/pasteboard/smart-paste-003.html
        LayoutTests/editing/pasteboard/smart-paste-004.html
        LayoutTests/editing/pasteboard/smart-paste-005.html
        LayoutTests/editing/pasteboard/smart-paste-006.html
        LayoutTests/editing/pasteboard/smart-paste-007.html
        LayoutTests/editing/pasteboard/smart-paste-008.html

        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::canSmartReplace):
        Turn on smart replace.

2019-02-02  Simon Fraser  <simon.fraser@apple.com>

        Tidy up data memebers of FrameView and related classes to shrink class sizes
        https://bugs.webkit.org/show_bug.cgi?id=194197

        Reviewed by Zalan Bujtas.

        Make various enums 8-bit. Re-order data members of FrameView, FrameViewLayoutContext, Widget
        and ScrollView to optimize padding.

        Use more data member initializers.

        This shrinks FrameView from 1168 (144 padding bytes) to 1096 (96 padding bytes).

        * dom/Element.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        * page/FrameView.h:
        * page/FrameViewLayoutContext.h:
        * platform/ScrollTypes.h:
        * platform/ScrollView.h: Data members should come after member functions.
        * platform/Widget.h:
        * rendering/Pagination.h:
        (WebCore::Pagination::Pagination): Deleted.

2019-02-02  Simon Fraser  <simon.fraser@apple.com>

        Rename "scrollingLayer" in RenderLayerBacking to "scrollContainerLayer" for clarity
        https://bugs.webkit.org/show_bug.cgi?id=194194

        Rubber-stampted by Antti Koivisto.

        Our desired terminology is "scrollContainerLayer" for the outer, clipping layer
        for scrolling, and "scrolledContentsLayer" for the contents that move when you scroll.

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateDebugIndicators):
        (WebCore::RenderLayerBacking::destroyGraphicsLayers):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::setLocationOfScrolledContents):
        (WebCore::RenderLayerBacking::updateAfterDescendants):
        (WebCore::RenderLayerBacking::updateInternalHierarchy):
        (WebCore::RenderLayerBacking::updateDrawsContent):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::unregisterAllScrollingLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):

2019-02-02  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups
        https://bugs.webkit.org/show_bug.cgi?id=194125

        Reviewed by Myles C. Maxfield.

        GPURenderPassEncoder::setVertexBuffers is now actually written to set all buffers provided. In addition,
        shift vertex input buffer indices so that any resource bindings can bind vertex buffer resources to the same indices. 

        Existing tests cover setVertexBuffers. Updated buffer-resource-triangles to assign bind groups and vertex buffers to the same index.

        * Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp: Added.
        (WebCore::WHLSL::Metal::calculateVertexBufferIndex): Simple shifting function for vertex input buffer indices.
        * Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h: Added.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Limit maximum bind group indices to 0 to 3.
        * Modules/webgpu/WebGPURenderPassEncoder.cpp: 
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers): Limit vertex input indices to 0 to 15.
        * Modules/webgpu/WebGPURenderPassEncoder.h: Move IDL/bindings bug note to IDL file.
        * Modules/webgpu/WebGPURenderPassEncoder.idl: Ditto.
        * platform/graphics/gpu/GPULimits.h: Added. Home for Web GPU limits constants shared between files.
        * platform/graphics/gpu/GPURenderPassEncoder.h: Change IDL/bindings bug workaround to unsigned long long to prevent narrowing compared to spec.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setVertexBuffers): Now properly calls Metal's setVertexBuffers. 
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setInputStateForPipelineDescriptor): Fix validation checks for vertex attribute numbers and vertex buffer indices. 

        Add symbols to project:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-02-01  Simon Fraser  <simon.fraser@apple.com>

        Async overflow scroll is jumpy on macOS if the main thread is busy
        https://bugs.webkit.org/show_bug.cgi?id=194184
        <rdar://problem/47758655>

        Reviewed by Antti Koivisto.

        This change extends to macOS some existing overflow-scroll functionality for iOS.
        When an async scroll is in process in the scroll thread (or UI process), we periodically
        message back to the web process main thread with scroll position updates. These
        can trigger post-scroll compositing updates, but we need to ensure that this update
        doesn't clobber the scroll position of the native layers, which would trigger
        stutters.

        To do this we have the notion of a scroll position "sync" (ScrollingLayerPositionAction::Sync) which
        pokes the new value into the GraphicsLayer (hence making visible rect computations work), but doesn't
        propagate it to the platform layer. This patch wires up syncs for macOS during async overflow scrolling,
        coming out of AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll().

        In RenderLayerBacking, m_scrollingContentsLayer is renamed to m_scrolledContentsLayer, and I added
        updateScrollOffset() and setLocationOfScrolledContents() to handle the set vs. sync, and to keep
        the iOS vs macOS differences in one function. This allows for more code sharing in RenderLayerBacking::updateGeometry().

        There's a confusing bit in the m_childClippingMaskLayer code (trac.webkit.org/178029) where the setOffsetFromRenderer()
        just looks wrong; it should match m_scrollingLayer. This code is never hit for Cocoa, which never has m_childClippingMaskLayer.

        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition): Logging
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition): Logging
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::scrollTo):
        * rendering/RenderLayer.h: Rename m_requiresScrollBoundsOriginUpdate to m_requiresScrollPositionReconciliation
        and make it available on all platforms. Just reorder m_adjustForIOSCaretWhenScrolling to reduce #ifdef nesting confusion.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateDebugIndicators):
        (WebCore::RenderLayerBacking::destroyGraphicsLayers):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::setLocationOfScrolledContents):
        (WebCore::RenderLayerBacking::updateScrollOffset):
        (WebCore::RenderLayerBacking::updateDrawsContent):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        (WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer const):
        (WebCore::RenderLayerBacking::parentForSublayers const):
        (WebCore::RenderLayerBacking::setContentsNeedDisplay):
        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
        (WebCore::RenderLayerBacking::paintContents):
        (WebCore::RenderLayerBacking::backingStoreMemoryEstimate const):
        * rendering/RenderLayerBacking.h:

2019-02-02  Zalan Bujtas  <zalan@apple.com>

        [LFC] Initialize ICB's style with fixed width/height.
        https://bugs.webkit.org/show_bug.cgi?id=194188

        Reviewed by Antti Koivisto.

        Let's set ICB's logical width/height to Fixed so that it's available when we try to resolve a box's height
        in FormattingContext::Geometry::computedHeightValue() by using the containing block's height (ICB in this case).

        * layout/LayoutState.cpp:
        (WebCore::Layout::LayoutState::LayoutState):
        * layout/LayoutState.h:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createLayoutTree):

2019-02-02  Zalan Bujtas  <zalan@apple.com>

        [LFC] Add missing case to out-of-flow non-replaced horizontal used margin value computation
        https://bugs.webkit.org/show_bug.cgi?id=194185

        Reviewed by Antti Koivisto.

        If none of horizontal values (left, right, width, margin-left/right) are auto, then usedHorizontalMarginValues = computedHorizontalMarginValues.

        Test: fast/block/block-only/absolute-position-left-right-margin.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):

2018-12-16  Darin Adler  <darin@apple.com>

        Convert additional String::format clients to alternative approaches
        https://bugs.webkit.org/show_bug.cgi?id=192746

        Reviewed by Alexey Proskuryakov.

        This round of conversions covers less-trivial cases such as floating
        point numerals and hexadecimal. Not yet taking on pointer serialization
        ("%p") or padding with spaces of zero digits, so call sites using those
        have been left untouched.

        In some cases these new idioms are a bit clumsy, and we could follow up
        with additional convenience functions to make them more elegant.

        * Modules/indexeddb/IDBKeyData.cpp:
        (WebCore::IDBKeyData::loggingString const): Use more ASCIILiteral and
        more appendLiteral for efficiency. Use upperNibbleToLowercaseASCIIHexDigit,
        lowerNibbleToLowercaseASCIIHexDigit, and also makeString and FormattedNumber.

        * css/MediaQueryEvaluator.cpp:
        (WebCore::aspectRatioValueAsString): Use makeString and FormattedNumber.
        Doing it this way makes it a little clearer that we have an unpleasant
        use of fixed 6-digit precision here.

        * html/FTPDirectoryDocument.cpp:
        (WebCore::processFilesizeString): Use makeString and FormattedNumber.
        * html/track/VTTCue.cpp:
        (WebCore::VTTCueBox::applyCSSProperties): Ditto.
        * page/CaptionUserPreferencesMediaAF.cpp:
        (WebCore::CaptionUserPreferencesMediaAF::windowRoundedCornerRadiusCSS const): Ditto.
        * page/History.cpp:
        (WebCore::History::stateObjectAdded): Ditto.
        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::formatByteNumber): Ditto.
        (WebCore::gcTimerString): Use String::number.
        (WebCore::ResourceUsageOverlay::platformDraw): Use makeString and FormattedNumber.

        * page/scrolling/AxisScrollSnapOffsets.cpp:
        (WebCore::snapOffsetsToString): Removed some unnecessary copying in the for loop,
        use appendLiteral, and use appendFixedWidthNumber.
        (WebCore::snapOffsetRangesToString): Ditto.
        (WebCore::snapPortOrAreaToString): Use makeString and FormattedNumber.

        * platform/animation/TimingFunction.cpp:
        (WebCore::TimingFunction::cssText const): Use makeString.

        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::keyIdentifierForCharCode): Use makeString and the ASCIIHexDigit
        functions.
        * platform/graphics/Color.cpp:
        (WebCore::Color::nameForRenderTreeAsText const): Ditto.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText): Use makeString and FormattedNumber.

        * platform/text/PlatformLocale.cpp:
        (WebCore::DateTimeStringBuilder::visitField): Use String::numberToStringFixedWidth.

2019-02-01  Simon Fraser  <simon.fraser@apple.com>

        Remove the unused layerForScrolling()
        https://bugs.webkit.org/show_bug.cgi?id=194180

        Reviewed by Zalan Bujtas.

        Remove ScrollableArea::layerForScrolling() and derivations. This was unused.

        * page/FrameView.cpp:
        (WebCore::FrameView::layerForScrolling const): Deleted.
        * page/FrameView.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::scrollLayerForScrollableArea): Deleted.
        * page/scrolling/ScrollingCoordinator.h:
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::layerForScrolling const): Deleted.
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:

2019-02-01  Zalan Bujtas  <zalan@apple.com>

        [LFC] Fix statically positioned replaced out-of-flow horizontal geometry
        https://bugs.webkit.org/show_bug.cgi?id=194163

        Reviewed by Simon Fraser.

        Fix a typo.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):

2019-02-01  Chris Dumez  <cdumez@apple.com>

        REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
        https://bugs.webkit.org/show_bug.cgi?id=193740
        <rdar://problem/47527267>

        Reviewed by Alex Christensen.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::willSendRequest):
        (WebCore::DocumentLoader::continueAfterContentPolicy):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        * loader/FrameLoader.h:
        * loader/FrameLoaderTypes.h:
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        (WebCore::PolicyChecker::checkNewWindowPolicy):
        * loader/PolicyChecker.h:

2019-02-01  Antoine Quint  <graouts@apple.com>

        Dispatch pointercancel events when content is panned or zoomed on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193962
        <rdar://problem/47629134>

        Reviewed by Dean Jackson.

        Expose two new methods on PointerCaptureController so that, given a pointer id, it can be established whether this pointer
        has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and
        to cancel a pointer.

        Tests: pointerevents/ios/touch-action-pointercancel-pan-x.html
               pointerevents/ios/touch-action-pointercancel-pan-y.html
               pointerevents/ios/touch-action-pointercancel-pinch-zoom.html

        * WebCore.xcodeproj/project.pbxproj: Make PointerCaptureController.h Private so that it can be imported from WebKit.
        * dom/PointerEvent.h: Remove an unnecessary #if ENABLE(POINTER_EVENTS) since the entire file is already contained in one.
        Then we add a new create() method that takes an event type, a pointer id and a pointer type (touch vs. pen) that we use
        to create pointercancel events in PointerCaptureController::cancelPointer().
        * page/Page.cpp:
        (WebCore::Page::Page): Pass the Page as a parameter when creating the PointerCaptureController.
        * page/PointerCaptureController.cpp:
        (WebCore::PointerCaptureController::PointerCaptureController): Add a Page reference to the constructor since we'll need
        the page to access its main frame's EventHandler to perform hit testing in case we do not have a capture target override
        in cancelPointer().
        (WebCore::PointerCaptureController::releasePointerCapture): Drive-by, remove the the implicit parameter since on iOS we
        don't need to differentiate. We'll bring this back for the macOS work.
        (WebCore::PointerCaptureController::hasCancelledPointerEventForIdentifier): New method we'll use when dispatching pointer
        events to identify whether a pointer id has already been cancelled which will allow for _not_ dispatching any further
        pointer events for this pointer id.
        (WebCore::PointerCaptureController::pointerEventWillBeDispatched): Keep track of the pointer type so we can preserve it
        when dispatching pointercancel events for a given pointer id.
        (WebCore::PointerCaptureController::cancelPointer): Dispatch a pointercancel for the provided pointer id, using the capture
        target override as the event's target, if there is one, and otherwise hit-testing at the provided location to figure out
        what the target should be.
        * page/PointerCaptureController.h: Switch the target overrides from Element* to RefPtr<Element> to ensure it may not be
        deleted while we still need them. Existing code already ensures these get set to nullptr.

2019-02-01  Jer Noble  <jer.noble@apple.com>

        Make the WebKit default for media source based on the WebCore default.
        https://bugs.webkit.org/show_bug.cgi?id=194172

        Reviewed by Eric Carlson.

        * page/SettingsBase.h:

2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Memory timeline starts from zero when both CPU and Memory timeline are enabled
        https://bugs.webkit.org/show_bug.cgi?id=194111
        <rdar://problem/47714555>

        Rubber-stamped by Devin Rousso.

        * page/ResourceUsageThread.cpp:
        (WebCore::ResourceUsageThread::waitUntilObservers):
        (WebCore::ResourceUsageThread::threadBody):
        Wait a short period of time before the first listener registers
        and we start sampling. This will allow multiple listeners to
        register, each that wants different data.

2019-02-01  Antti Koivisto  <antti@apple.com>

        Don't use base layer() as the scroll layer in scrolling tree.
        https://bugs.webkit.org/show_bug.cgi?id=194160

        Reviewed by Simon Fraser.

        Maintain scrollContainerLayer() and scrolledContentsLayer() separately in ScrollingTreeScrollingNode.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::setNodeLayers):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::setNodeLayers):

        Turn the long layer parameter list into a struct.

        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::ScrollingStateNode):
        (WebCore::ScrollingStateNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateNode::setLayer):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateScrollingNode.cpp:
        (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
        (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateScrollingNode::setScrollContainerLayer):
        (WebCore::ScrollingStateScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingStateScrollingNode.h:
        (WebCore::ScrollingStateScrollingNode::scrollContainerLayer const):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const):
        (WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const):
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollPosition const):
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition):
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.
        * page/scrolling/mac/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition const):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea const):
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):
        * page/scrolling/mac/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):

2019-02-01  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r240698): fast/scrolling/sticky-to-fixed.html can cause a crash
        https://bugs.webkit.org/show_bug.cgi?id=194134
        rdar://problem/47721210

        Reviewed by Daniel Bates.

        fast/scrolling/sticky-to-fixed.html changes the scrolling node type, which causes
        scrollingCoordinator->insertNode() to return a different ScrollingNodeID to the one
        passed in. We have to handle this, removing the node for the nodeID and unregistering
        the layer with the old nodeID.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::attachScrollingNode):

2019-02-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r239915): css3/font-feature-font-face-local.html failing on WPE
        https://bugs.webkit.org/show_bug.cgi?id=194008

        Reviewed by Žan Doberšek.

        We need to replace control characters with zero width space too.

        * platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:
        (WebCore::GlyphPage::fill):
        * platform/text/CharacterProperties.h:
        (WebCore::isControlCharacter):

2019-02-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        ComplexText: Test fast/text/word-space-nbsp.html fails when using complex text path
        https://bugs.webkit.org/show_bug.cgi?id=193279

        Reviewed by Michael Catanzaro.

        The fix applied in r135884 to WidthIterator should also be applied to ComplexTextController.

        * platform/graphics/ComplexTextController.cpp:
        (WebCore::ComplexTextController::adjustGlyphsAndAdvances):

2019-02-01  Zalan Bujtas  <zalan@apple.com>

        [LFC] Adjust replaced element's intrinsic ratio
        https://bugs.webkit.org/show_bug.cgi?id=194154

        Reviewed by Antti Koivisto.

        Decouple image and iframe replaced types and set intrinsic ratio accordingly.

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::Box):
        * layout/layouttree/LayoutBox.h:
        (WebCore::Layout::Box::isReplaced const):
        (WebCore::Layout::Box::isIFrame const):
        (WebCore::Layout::Box::isImage const):
        * layout/layouttree/LayoutReplaced.cpp:
        (WebCore::Layout::Replaced::hasIntrinsicRatio const):
        (WebCore::Layout::Replaced::intrinsicRatio const):
        (WebCore::Layout::Replaced::hasAspectRatio const):
        * layout/layouttree/LayoutReplaced.h:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):

2019-02-01  Zalan Bujtas  <zalan@apple.com>

        [LFC] Set intrinsic size on Layout::Replaced
        https://bugs.webkit.org/show_bug.cgi?id=194139

        Reviewed by Antti Koivisto.

        Eventually Layout::Replaced will track intrinsic size internally until then let's query the RenderReplaced. 

        * layout/layouttree/LayoutBox.h:
        (WebCore::Layout::Box::replaced):
        * layout/layouttree/LayoutReplaced.cpp:
        (WebCore::Layout::Replaced::hasIntrinsicWidth const):
        (WebCore::Layout::Replaced::hasIntrinsicHeight const):
        (WebCore::Layout::Replaced::intrinsicWidth const):
        (WebCore::Layout::Replaced::intrinsicHeight const):
        * layout/layouttree/LayoutReplaced.h:
        (WebCore::Layout::Replaced::setIntrinsicSize):
        (WebCore::Layout::Replaced::setIntrinsicRatio):
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):
        * rendering/RenderReplaced.h:

2019-02-01  Claudio Saavedra  <csaavedra@igalia.com>

        Race-condition during scrolling thread creation
        https://bugs.webkit.org/show_bug.cgi?id=194016

        Reviewed by Saam Barati.

        There is a threading issue during the initialization
        of the scrolling thread caused by createThreadIfNeeded
        locking only on the creation of the thread but not on
        the initialization of the main loop, making it possible
        for a thread to try to spin the main loop before it's
        created.

        Fix this by unconditionally waiting on the main loop
        being created. This makes it necessary to always hold
        the lock, even when the thread is already created.

        * page/scrolling/ScrollingThread.cpp:
        (WebCore::ScrollingThread::createThreadIfNeeded):

2019-02-01  Simon Fraser  <simon.fraser@apple.com>

        Use ScrollingNodeID in more places, and improve the name of a ScrollableArea function that returns a ScrollingNodeID
        https://bugs.webkit.org/show_bug.cgi?id=194126

        Reviewed by Frédéric Wang.
        
        Change uint64_t ScrollableArea::scrollLayerID() to ScrollingNodeID ScrollableArea::scrollingNodeID()
        and fix callers.

        * page/FrameView.cpp:
        (WebCore::FrameView::scrollingNodeID const):
        (WebCore::FrameView::scrollLayerID const): Deleted.
        * page/FrameView.h:
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
        (WebCore::AsyncScrollingCoordinator::updateExpectsWheelEventTestTriggerWithFrameView):
        (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
        (WebCore::AsyncScrollingCoordinator::frameViewForScrollingNode const):
        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        (WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        (WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
        (WebCore::AsyncScrollingCoordinator::setActiveScrollSnapIndices):
        (WebCore::AsyncScrollingCoordinator::updateScrollSnapPropertiesWithFrameView):
        * page/scrolling/ScrollingCoordinatorTypes.h:
        * platform/ScrollTypes.h:
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::scrollingNodeID const):
        (WebCore::ScrollableArea::scrollLayerID const): Deleted.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::detachRootLayer):

2019-01-31  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Expressions can't be copyable
        https://bugs.webkit.org/show_bug.cgi?id=194116

        Reviewed by Keith Rollin.

        Expressions have UniqueRef members, which can't be copied. Describe this constraint explicitly rather than implicitly.

        No new tests because there is no behavior change.

        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:

2019-01-31  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Remove unnecessary member from NetworkStorageSession.
        https://bugs.webkit.org/show_bug.cgi?id=194137

        Reviewed by Don Olmstead.

        No new tests since there is no behavior change.

        * platform/network/NetworkStorageSession.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::NetworkStorageSession::NetworkStorageSession):
        (WebCore::NetworkStorageSession::context const): Deleted.

2019-01-31  Jer Noble  <jer.noble@apple.com>

        NSInvalidArgumentException in [WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]
        https://bugs.webkit.org/show_bug.cgi?id=194123
        <rdar://problem/47721094>

        Reviewed by Eric Carlson.

        According to crash logs, AVSampleBufferDisplayLayer.error can go from an NSError* to nil; when such a change is KVO'd,
        the NSKeyValueChangeNewKey is a NSNull. Detect this state and bail out early.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):

2019-01-31  Jer Noble  <jer.noble@apple.com>

        [Cocoa][EME] AirPlaying a FairPlay-protected HLS stream fails to decrypt
        https://bugs.webkit.org/show_bug.cgi?id=194114

        Reviewed by Eric Carlson.

        The AVAssetResourceLoaderDelegate must explicitly... delegate responsibility for FairPlay key
        requests to the AVContentKeySession.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):

2019-01-31  Megan Gardner  <megan_gardner@apple.com>

        Don't insert spaces at the beginning of a newline when using smart-copy-paste
        https://bugs.webkit.org/show_bug.cgi?id=194070

        Reviewed by Tim Horton.

        If our inserted content end is at the beginning of a paragraph, do not insert a space.
        Also, if our inserted content beginning is at the end of a paragraph, do not insert a space.

        Test: editing/pasteboard/mac/copy-smartpaste-first-line-in-textarea.html

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::addSpacesForSmartReplace):

2019-01-31  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Build fix: disable MTLCopyAllDevices call on non-Mac platforms
        https://bugs.webkit.org/show_bug.cgi?id=194120

        Unreviewed build fix. 

        No new tests; no change in behavior.

        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::create): Wrap problem code in #if PLATFORM(MAC).

2019-01-31  Simon Fraser  <simon.fraser@apple.com>

        Basic scrollability for async overflow scrolling on macOS
        https://bugs.webkit.org/show_bug.cgi?id=194093

        Reviewed by Antti Koivisto.

        Give a ScrollingTreeOverflowScrollingNodeMac a ScrollingTreeScrollingNodeDelegateMac and have it keep track
        of its layers so basic scrolling works for async overflow scroll.

        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::create):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::ScrollingTreeOverflowScrollingNodeMac):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
        (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateScrollingLayers):

2019-01-31  Simon Fraser  <simon.fraser@apple.com>

        Generalize ScrollingTreeScrollingNodeDelegate for use in macOS too, add a macOS subclass for frame/overflow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=194080

        Reviewed by Antti Koivisto.

        To share code between ScrollingTreeFrameScrollingNodeMac and ScrollingTreeOverflowScrollingNodeMac, build ScrollingTreeScrollingNodeDelegate
        for macOS too, and add some helper functions to ScrollingTreeScrollingNodeDelegate.

        Add a macOS subclass, ScrollingTreeScrollingNodeDelegateMac, which takes over the basic scrolling, rubber-banding
        and scroll snapping functionality from ScrollingTreeFrameScrollingNodeMac. The delegate owns the ScrollController and
        implements ScrollControllerClient.

        ScrollingTreeFrameScrollingNodeMac now owns a ScrollingTreeScrollingNodeDelegateMac. A future patch
        will add one to ScrollingTreeOverflowScrollingNodeMac.

        No behavior change.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::scrollBy): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNode::scrollByWithoutContentEdgeConstraints): Deleted.
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        (WebCore::ScrollingTreeFrameScrollingNode::frameScaleFactor const):
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::isRootNode const):
        * page/scrolling/ScrollingTreeNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreeScrollingNode::scrollBy):
        (WebCore::ScrollingTreeScrollingNode::scrollByWithoutContentEdgeConstraints):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::expectsWheelEventTestTrigger const):
        * page/scrolling/ScrollingTreeScrollingNodeDelegate.cpp:
        * page/scrolling/ScrollingTreeScrollingNodeDelegate.h:
        (WebCore::ScrollingTreeScrollingNodeDelegate::scrollPosition const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::minimumScrollPosition const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::maximumScrollPosition const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::scrollableAreaSize const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::totalContentsSize const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::hasEnabledHorizontalScrollbar const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::hasEnabledVerticalScrollbar const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::horizontalScrollElasticity const):
        (WebCore::ScrollingTreeScrollingNodeDelegate::verticalScrollElasticity const):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::minimumScrollPosition const):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::maximumScrollPosition const):
        (WebCore::newGestureIsStarting): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::isAlreadyPinnedInDirectionOfGesture): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::allowsHorizontalStretching): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::allowsVerticalStretching): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::stretchAmount): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::pinnedInDirection): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::canScrollHorizontally): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::canScrollVertically): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::shouldRubberBandInDirection): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollBy): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollByWithoutContentEdgeConstraints): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::stopSnapRubberbandTimer): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustScrollPositionToBoundsIfNecessary): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollOffset const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollOnAxis): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::pageScaleFactor const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::startScrollSnapTimer): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::stopScrollSnapTimer): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollExtent const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::viewportSize const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::deferTestsForReason const): Deleted.
        (WebCore::ScrollingTreeFrameScrollingNodeMac::removeTestDeferralForReason const): Deleted.
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h: Copied from Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h.
        * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: Added.
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::ScrollingTreeScrollingNodeDelegateMac):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateScrollSnapPoints):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::setActiveScrollSnapIndexForAxis):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::activeScrollSnapIndexForAxis const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::activeScrollSnapIndexDidChange const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::isScrollSnapInProgress const):
        (WebCore::newGestureIsStarting):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsHorizontalStretching):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsVerticalStretching):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollHorizontally):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollVertically):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::shouldRubberBandInDirection):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollBy):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::stopSnapRubberbandTimer):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::adjustScrollPositionToBoundsIfNecessary):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollOffset const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollOnAxis):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::pageScaleFactor const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::startScrollSnapTimer):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::stopScrollSnapTimer):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollExtent const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::viewportSize const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::deferTestsForReason const):
        (WebCore::ScrollingTreeScrollingNodeDelegateMac::removeTestDeferralForReason const):

2019-01-31  Jer Noble  <jer.noble@apple.com>

        [Mac] Requesting PiP from two different WebViews gets PiP window "stuck"
        https://bugs.webkit.org/show_bug.cgi?id=194099
        <rdar://problem/47271323>

        Reviewed by Eric Carlson.

        When a different client requests the PiP window, the PiP framework will call -pipDidClose: without
        first calling -pipActionStop:. This leaves the internal fullscreen state in a confused state where
        the WebView will attempt to re-enter PiP once it gets focus, and can lead to a state where the two
        WebViews will constantly try to steal PiP from one another, ad infinitum.

        When receiving a notification that the PiP window closed when our internal state tells us that the
        close was not requested, notify the client that PiP mode was exited, allowing them to set their
        expected state to a correct and sane value.

        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):

2019-01-31  Keith Rollin  <krollin@apple.com>

        WebCore::WHLSL::AST::Expression copy constructor needs to be be default, not delete
        https://bugs.webkit.org/show_bug.cgi?id=194055
        <rdar://problem/47684570>

        Reviewed by Myles C. Maxfield.

        WebCore::WHLSL::AST::Expression has a deleted copy constructor.
        EnumerationMemberLiteral, a subclass, has a default copy constructor.
        Some compilers may complain that the latter's c'tor can't access the
        former's, because it doesn't exist. Fix this by marking Expression's
        c'tor as default.

        No new tests since there should be no observable behavior difference.

        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:

2019-01-31  Alex Christensen  <achristensen@webkit.org>

        Revert r238819 which is unneeded and caused a performance regression.
        https://bugs.webkit.org/show_bug.cgi?id=192272
        <rdar://problem/46664625>

        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::prepareForLoadStart):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:

2019-01-31  Justin Fan  <justin_fan@apple.com>

        [WebGPU] WebGPUAdapterDescriptor -> GPURequestAdapterOptions and take powerPreference into account
        https://bugs.webkit.org/show_bug.cgi?id=194068
        <rdar://problem/47680215>

        Reviewed by Dean Jackson.
        
        Per the Web GPU IDL, WebGPUAdapterDescriptor is now known as GPURequestAdapterOptions and is optional.
        In addition, Web GPU now actually attempts to return an integrated GPU when a low-power adapter is requested.

        Test: adapter-options.html

        * Modules/webgpu/GPURequestAdapterOptions.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUAdapterDescriptor.idl.
        * Modules/webgpu/WebGPU.cpp:
        (WebCore::WebGPU::requestAdapter const):
        * Modules/webgpu/WebGPU.h:
        * Modules/webgpu/WebGPU.idl:
        * Modules/webgpu/WebGPUAdapter.cpp:
        (WebCore::WebGPUAdapter::create):
        (WebCore::WebGPUAdapter::WebGPUAdapter):
        * Modules/webgpu/WebGPUAdapter.h:
        (WebCore::WebGPUAdapter::options const):
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::create):
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPURequestAdapterOptions.h: Renamed from Source/WebCore/Modules/webgpu/WebGPUAdapterDescriptor.h.
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::create):

2019-01-31  Jiewen Tan  <jiewen_tan@apple.com>

        Formalize WebKitAdditions mechanism of LoadOptimizer
        https://bugs.webkit.org/show_bug.cgi?id=193886
        <rdar://problem/47696809>

        Reviewed by Brent Fulgham.

        Covered by existing tests.

        * platform/network/ResourceRequestBase.h:
        Export isolatedCopy().

2019-01-31  Jer Noble  <jer.noble@apple.com>

        [Cocoa][EME] Modern EME uses a different path for SecureStop data than Legacy EME
        https://bugs.webkit.org/show_bug.cgi?id=193988

        Reviewed by Jon Lee.

        Modern EME is writing SecureStop data as a file at the same path as the
        directory used by Legacy EME; meaning, when Modern EME attempts to write
        to that file, it will fail because a directory exists at the same path.

        Add a migration step to take care of those instances where Modern EME Secure
        Stop data was already written to disk, and move that previously written data
        to the correct file path.

        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSession):

2019-01-31  Antti Koivisto  <antti@apple.com>

        Call the frame main contents layer "rootContentsLayer" consistently.
        https://bugs.webkit.org/show_bug.cgi?id=194089

        Reviewed by Simon Fraser.

        This is currently called "rootContentLayer" in the compositor and "scrolledContentsLayer" in the scrolling tree.
        We want to reserve term "scrolledContentsLayer" to mean the direct child layer of the  scroll container layer
        without any positioning oddities (which this isn't).

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        (WebCore::AsyncScrollingCoordinator::setNodeLayers):

        Set the rootContentsLayer for frame. It is only used by the Mac frame scrolling code.

        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::rootContentsLayerForFrameView):
        (WebCore::ScrollingCoordinator::rootContentLayerForFrameView): Deleted.
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::setNodeLayers):
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateFrameScrollingNode::setRootContentsLayer):
        (WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingStateFrameScrollingNode.h:

        Introduce rootContentLayer for frames only.

        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):

        Switch to using rootContentsLayer.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::updateRootContentLayerClipping):
        (WebCore::RenderLayerCompositor::layerTreeAsText):
        (WebCore::RenderLayerCompositor::rootGraphicsLayer const):
        (WebCore::RenderLayerCompositor::updateRootLayerPosition):
        (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForHeader):
        (WebCore::RenderLayerCompositor::updateLayerForFooter):
        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
        (WebCore::RenderLayerCompositor::ensureRootLayer):
        (WebCore::RenderLayerCompositor::destroyRootLayer):
        (WebCore::RenderLayerCompositor::attachRootLayer):
        (WebCore::RenderLayerCompositor::detachRootLayer):
        (WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):

        Pass rootContentsLayer separately for frames only.
        Pass null as frame scrolledContentsLayer until these are rearranged (it is not used).

        * rendering/RenderLayerCompositor.h:

2019-01-31  Keith Rollin  <krollin@apple.com>

        GCGamepad is deprecated
        https://bugs.webkit.org/show_bug.cgi?id=194056
        <rdar://problem/47685010>

        Reviewed by Brady Eidson.

        GCGamepad is deprecated, resulting in compiler warnings. Address this
        for now by employing ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.

        No new tests since there should be no observable behavior difference.

        * platform/gamepad/cocoa/GameControllerGamepad.mm:
        (WebCore::GameControllerGamepad::setupAsGamepad):

2019-01-31  Darin Adler  <darin@apple.com>

        Simplify and streamline code that creates an appropriate document based on MIME type
        https://bugs.webkit.org/show_bug.cgi?id=193756

        Reviewed by Chris Dumez.

        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::createDocument): Use equalLettersIgnoringASCIICase rather
        than == for all the MIME type checks. Use MIMETypeRegistry::isSupportedImageMIMEType
        instead of Image::supportsType. Rearranged checks so that all the combinations that
        that take precedence over plug-ins are checked first, fixing some unimportant edge
        cases where the plug-in database is initialized and doesn't need to be. Straightened
        out the logic for various special types so that the checks are more independent from
        each other and hence easier to understand.

2019-01-31  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Unreviewed debug build fix, obsolete assert

        Since m_playerPrivate is now a reference, it no longer has a default
        cast to bool. But there is also no longer a need to assert it's non
        null, so just remove the assert.

        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::append):

2019-01-31  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Use reference instead of pointer in m_playerPrivate
        https://bugs.webkit.org/show_bug.cgi?id=194091

        Reviewed by Xabier Rodriguez-Calvar.

        Since the pointer is initialized with the class, it's never null and
        never changes, it's preferrable to use a reference instead of a
        pointer.

        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::MediaSourceClientGStreamerMSE):
        (WebCore::MediaSourceClientGStreamerMSE::addSourceBuffer):
        (WebCore::MediaSourceClientGStreamerMSE::durationChanged):
        (WebCore::MediaSourceClientGStreamerMSE::abort):
        (WebCore::MediaSourceClientGStreamerMSE::resetParserState):
        (WebCore::MediaSourceClientGStreamerMSE::append):
        (WebCore::MediaSourceClientGStreamerMSE::markEndOfStream):
        (WebCore::MediaSourceClientGStreamerMSE::removedFromMediaSource):
        (WebCore::MediaSourceClientGStreamerMSE::flush):
        (WebCore::MediaSourceClientGStreamerMSE::enqueueSample):
        (WebCore::MediaSourceClientGStreamerMSE::allSamplesInTrackEnqueued):
        (WebCore::MediaSourceClientGStreamerMSE::webKitMediaSrc):
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:

2019-01-31  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Momentum scrolling stops abruptly before websites end
        https://bugs.webkit.org/show_bug.cgi?id=193350

        Reviewed by Carlos Garcia Campos.

        Don't immediately set velocity to 0 when position reaches upper or bottom limit.
        Instead, set it to the overshot distance, so that position exactly matches upper
        or lower limit on the next frame, and then clamp velocity to 0 using the existing
        mechanism.

        * platform/ScrollAnimationKinetic.cpp:
        (WebCore::ScrollAnimationKinetic::PerAxisData::animateScroll):

2019-01-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix incorrect string format
        https://bugs.webkit.org/show_bug.cgi?id=193907
        <rdar://problem/47604080>

        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::commitTreeState):

2019-01-30  Simon Fraser  <simon.fraser@apple.com>

        [Mac] Implement basic hit testing in the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=172917
        <rdar://problem/34215516>

        Reviewed by Antti Koivisto.

        First steps to getting hit testing of scrolling nodes in the scrolling tree. Based on patch
        by Frédéric Wang.

        First we pipe the "async scrolling enabled" setting through to the ScrollingTree via
        the root node (like the other settings; weird, but that's how it's done). For now,
        we hit test in the scrolling tree if either async overflow or frame scrolling are enabled
        (it's hard to deal with one without the other).

        Nodes in the scrolling tree implement scrollingNodeForPoint() to implement hit testing.
        Two helper functions exist to simplify coordinate conversion: parentToLocalPoint()
        and localToContentsPoint(). Child nodes are hit-testing in reverse order to find nodes
        hightest in Z first. Only scrolling nodes are returned (not sure if we'll ever need
        to hit-test non-scrolling nodes). Nodes use parentRelativeScrollableRect and scroll positions
        to do these point mappings.

        handleWheelEvent() is changed to return a ScrollingEventResult.

        Latching is not correct with this change when async frame scrolling is enabled. That needs
        to be fixed separately.

        No tests yet; for ease of testing, I'd like to add an Internals API to hit-test the
        scrolling tree, rather than doing eventSender stuff everywhere.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
        (WebCore::AsyncScrollingCoordinator::asyncFrameOrOverflowScrollingEnabled const):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateFrameScrollingNode::setAsyncFrameOrOverflowScrollingEnabled):
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
        (WebCore::ScrollingTree::handleWheelEvent):
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::setAsyncFrameOrOverflowScrollingEnabled):
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::asyncFrameOrOverflowScrollingEnabled const):
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::parentToLocalPoint const):
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
        (WebCore::ScrollingTreeFrameScrollingNode::parentToLocalPoint const):
        (WebCore::ScrollingTreeFrameScrollingNode::localToContentsPoint const):
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::scrollingNodeForPoint const):
        * page/scrolling/ScrollingTreeNode.h:
        (WebCore::ScrollingTreeNode::children const):
        (WebCore::ScrollingTreeNode::parentToLocalPoint const):
        (WebCore::ScrollingTreeNode::localToContentsPoint const):
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::scrollLimitReached const):
        (WebCore::ScrollingTreeScrollingNode::parentToLocalPoint const):
        (WebCore::ScrollingTreeScrollingNode::localToContentsPoint const):
        (WebCore::ScrollingTreeScrollingNode::scrollingNodeForPoint const):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/ThreadedScrollingTree.cpp:
        (WebCore::ThreadedScrollingTree::handleWheelEvent):
        * page/scrolling/ThreadedScrollingTree.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::handleWheelEvent):
        * page/scrolling/ios/ScrollingTreeIOS.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
        * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:

2019-01-31  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Remove unused GstFlowReturn in AppendPipeline methods
        https://bugs.webkit.org/show_bug.cgi?id=194067

        Reviewed by Xabier Rodriguez-Calvar.

        A couple methods in AppendPipeline were returning GstFlowReturn
        despite there being no codepath (sans assertions) where values other
        than GST_FLOW_OK are returned.

        Therefore, it makes sense to just make these methods return void.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::pushNewBuffer):
        (WebCore::AppendPipeline::handleAppsinkNewSampleFromStreamingThread):
        * platform/graphics/gstreamer/mse/AppendPipeline.h:
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::append):
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:
        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
        (WebCore::SourceBufferPrivateGStreamer::append):

2019-01-31  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Remove if (m_playerPrivate) from MediaSourceClientGStreamerMSE
        https://bugs.webkit.org/show_bug.cgi?id=194069

        Reviewed by Xabier Rodriguez-Calvar.

        m_playerPrivate is non-NULL since MediaSourceClientGStreamerMSE
        creation well until its destruction.

        The only case that could make a NULL m_playerPrivate is
        clearPlayerPrivate() but that method is not used anymore.

        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::addSourceBuffer):
        (WebCore::MediaSourceClientGStreamerMSE::durationChanged):
        (WebCore::MediaSourceClientGStreamerMSE::abort):
        (WebCore::MediaSourceClientGStreamerMSE::resetParserState):
        (WebCore::MediaSourceClientGStreamerMSE::markEndOfStream):
        (WebCore::MediaSourceClientGStreamerMSE::removedFromMediaSource):
        (WebCore::MediaSourceClientGStreamerMSE::flush):
        (WebCore::MediaSourceClientGStreamerMSE::enqueueSample):
        (WebCore::MediaSourceClientGStreamerMSE::allSamplesInTrackEnqueued):
        (WebCore::MediaSourceClientGStreamerMSE::webKitMediaSrc):
        (WebCore::MediaSourceClientGStreamerMSE::clearPlayerPrivate): Deleted.
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:

2019-01-31  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Avoid returning FLUSHING when it is not the case in GStreamerMediaStreamSource
        https://bugs.webkit.org/show_bug.cgi?id=194087

        Basically GstFlowCombiner was mostly designed for element that have 1 sinkpad and several srcpad
        meaning that it makes sense that when any of the downstream pad is returning flushing, you should
        return FLUSHING upstream. But in our case we have several sinkpads and FLUSHING should be returned
        *only* if the internally linked srcpad is FLUSHING otherwise we might end up setting the upstream
        source element task to PAUSED (because downstream returned flushing) on a branch that was not
        flushing!

        Reviewed by Philippe Normand.

        This is a theorical race we can't really cover with tests.

        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
        (WebCore::webkitMediaStreamSrcChain):

2019-01-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] Margin before/after/start/end initial value is 0 and not auto.
        https://bugs.webkit.org/show_bug.cgi?id=194090

        Reviewed by Antti Koivisto.

        Don't treat it like auto.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):

2019-01-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] Use the used margin values in outOfFlowReplacedHorizontalGeometry consistently
        https://bugs.webkit.org/show_bug.cgi?id=194074

        Reviewed by Antti Koivisto.

        Check the used margin variables whether we already computed start/end values.

        Test: fast/block/block-only/absolute-position-with-margin-auto-simple2.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):

2019-01-31  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Add support for block level replaced box.
        https://bugs.webkit.org/show_bug.cgi?id=194071

        Reviewed by Antti Koivisto.

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::Box):
        * layout/layouttree/LayoutBox.h:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):
        (WebCore::Layout::outputLayoutBox):

2019-01-31  Chris Fleizach  <cfleizach@apple.com>

        ASSERTION FAILED: cache under WebCore::AXObjectCache::postTextStateChangePlatformNotification
        https://bugs.webkit.org/show_bug.cgi?id=189094
        <rdar://problem/43853526>

        Reviewed by Zalan Bujtas.

        Protect against access to objects and cache's that can be removed while an object is still in memory.

        Unskipped flaky tests on mac-wk2.

        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::postTextStateChangePlatformNotification):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (textMarkerForVisiblePosition):
        (textMarkerRangeFromVisiblePositions):

2019-01-30  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) History navigations to twitter.com lead to a 403 HTTP error
        https://bugs.webkit.org/show_bug.cgi?id=194023
        <rdar://problem/47417981>

        Reviewed by Geoffrey Garen.

        The issue was caused by the 'isTopSite' flag not getting properly set on the network request
        in case of a cross-site history navigation (with process-swap). As a result, twitter.com was
        not getting its same-site lax cookies.

        The 'isTopSite' flag normally gets set by FrameLoader::addExtraFieldsToRequest(), but we were
        bypassing this method entirely when continuing a load in a new process after a swap. This was
        intentional as the network request is normally already fully populated by the previous process
        and we do not want the new process to modify the request in any way (e.g. we would not want to
        add a Origin header back after it was removed by the previous process). However, in case of a
        History navigation, we do not actually pass a request along from one process to another. Instead,
        we pass a HistoryItem and then build a fresh new request from the HistoryItem in the new process.
        In this case, we *want* addExtraFieldsToRequest() to be called on the new request, even though
        we are technically continuing a load in a new process.

        We thus address the issue by bypassing FrameLoader::addExtraFieldsToRequest() only if we're
        continuing a load with a request and not when we're continuing a load with a HistoryItem.

        Test: http/tests/cookies/same-site/lax-samesite-cookie-after-cross-site-history-load.php

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::addExtraFieldsToRequest):
        (WebCore::FrameLoader::loadDifferentDocumentItem):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::shouldTreatCurrentLoadAsContinuingLoad const):

2019-01-30  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Support GPUDepthStencilStateDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=194048
        <rdar://problem/46289645>

        Reviewed by Dean Jackson.

        Implement GPUDepthStencilStateDescriptor to specify a MTLDepthStencilState that is set on the command encoder.

        Existing tests cover changes to pipeline. Behavior does not change as DepthStencilState has no effect 
        without a depth texture attached.

        New interface files added:
        * Modules/webgpu/GPUCompareFunction.idl:
        * Modules/webgpu/GPUDepthStencilStateDescriptor.idl:
        * platform/graphics/gpu/GPUCompareFunction.h:
        * platform/graphics/gpu/GPUDepthStencilStateDescriptor.h:

        Modifications:
        * Modules/webgpu/WebGPUDevice.cpp: Include depthStencilState when creating pipeline.
        (WebCore::WebGPUDevice::createRenderPipeline const):
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h: Add depthStencilState to the descriptor.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl: Ditto.
        * platform/graphics/gpu/GPURenderPipeline.h: Ditto.
        (WebCore::GPURenderPipeline::depthStencilState const): Getter.
        (WebCore::GPURenderPipeline::platformRenderPipeline const):
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Update constructor to take depthStencilState.
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm: Setting pipeline also sets the included depthStencilState.
        (WebCore::GPURenderPassEncoder::setPipeline):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Convert DepthStencilStateDescriptor to MTLDepthStencilState.
        (WebCore::validateAndConvertDepthCompareFunctionToMtl):
        (WebCore::tryCreateMtlDepthStencilState):
        (WebCore::tryCreateMtlRenderPipelineState): Refactored logic out of GPURenderPipeline::create.
        (WebCore::GPURenderPipeline::create):
        (WebCore::GPURenderPipeline::GPURenderPipeline):

        Added symbols for CompareFunction, DepthStencilStateDescriptor to the project:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

        * Modules/webgpu/WebGPUDevice.idl: Cleaned up IDL to match current version.

2019-01-30  Jer Noble  <jer.noble@apple.com>

        [Cocoa][EME] persistent-usage-record data not issued after MediaKeySession.remove()
        https://bugs.webkit.org/show_bug.cgi?id=193984

        Reviewed by Eric Carlson.

        MediaKeySession.sessionId is empty during the CDMInstance->requestLicense success callback handler. The
        KVO notification that AVContentKeySession.contentProtectionSessionIdentifier changed isn't called until
        after the -[AVContentKeyRequest makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:]
        completion handler is called.

        Explicitly ask for the -contentProtectionSessionIdentifier inside that handler, and just in case the sessionID
        changes after that, add a new client callback method to notify the MediaKeySession that the ID has changed.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::sessionIdChanged):
        * Modules/encryptedmedia/MediaKeySession.h:
        * platform/encryptedmedia/CDMInstanceSession.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::nextRequest):

2019-01-30  Keith Rollin  <krollin@apple.com>

        FloatWithRect has invalid and inaccessible default constructor
        https://bugs.webkit.org/show_bug.cgi?id=194057
        <rdar://problem/47685211>

        Reviewed by Zalan Bujtas.

        FloatWithRect has a default constructor declared as 'default'. This
        constructor is invalid because FloatWithRect has a data member that's
        a reference that will not get initialized with this constructor. Since
        it's invalid, and since it's private and not accessed by anything,
        remove this constructor.

        No new tests since there should be no observable behavior difference.

        * rendering/line/LineLayoutState.h:

2019-01-30  Daniel Bates  <dabates@apple.com>

        [iOS] Keyups for non-modifier keys identified as "Dead" when not focused in a content-editable element
        https://bugs.webkit.org/show_bug.cgi?id=192824
        <rdar://problem/47100332>

        Reviewed by Wenson Hsieh.

        When building with USE(UIKIT_KEYBOARD_ADDITIONS) enabled, normalize input strings for some more key codes
        now that hardware key events to non-editable elements use the same code path as for editable elements. 

        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForCharCode): Demarcate mappings that are only needed when building with
        !USE(UIKIT_KEYBOARD_ADDITIONS) in the hope that one day we can remove this code.
        (WebCore::isFunctionKey): Ditto.
        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping): Normalize some more input strings when building with
        USE(UIKIT_KEYBOARD_ADDITIONS) enabled.

2019-01-30  Jer Noble  <jer.noble@apple.com>

        Ensure ENABLE_MEDIA_SOURCE is defined inside DerivedSources.make
        https://bugs.webkit.org/show_bug.cgi?id=194063

        Reviewed by Jon Lee.

        * DerivedSources.make:

2019-01-30  Youenn Fablet  <youenn@apple.com>

        Refactor ServiceWorkerJob management by ServiceWorkerContainer to make it more memory safe
        https://bugs.webkit.org/show_bug.cgi?id=193747
        <rdar://problem/47498196>

        Reviewed by Chris Dumez.

        Make ServiceWorkerJob be no longer ref counted.
        Instead its lifetime is fully controlled by ServiceWorkerContainer.

        Make sure that a failing load will remove the job from ServiceWorkerContainer job map.
        This allows to ensure that these jobs do not stay forever.
        Before the patch, the jobs map was never cleared, which is creating a ref cycle whenever a job is not succesful.

        Before the patch, unsetPendingActivity was only called for successful jobs finishing.
        In case of failing loads, ServiceWorkerContainer would leak.
        Make sure that setPendingActivity/unsetPendingActivity is balanced by storing
        a pending activity in the job map next to the job.

        When ServiceWorkerContainer is stopped, notify that all jobs are cancelled to NetworkProcess.
        This makes these jobs in NetworkProcess-side to not stay until the corresponding WebProcess is gone.

        Simplify ServiceWorkerJob promise rejection handling so that it is clear when promise is rejected and when it is not.
        Update type of exception to be SecurityError when load fails due to AccessControl.

        Covered by existing tests.

        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::addRegistration):
        (WebCore::ServiceWorkerContainer::removeRegistration):
        (WebCore::ServiceWorkerContainer::updateRegistration):
        (WebCore::ServiceWorkerContainer::scheduleJob):
        (WebCore::ServiceWorkerContainer::jobFailedWithException):
        (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
        (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
        (WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
        (WebCore::ServiceWorkerContainer::jobDidFinish):
        (WebCore::ServiceWorkerContainer::stop):
        (WebCore::ServiceWorkerContainer::job):
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerJob.cpp:
        (WebCore::ServiceWorkerJob::failedWithException):
        (WebCore::ServiceWorkerJob::resolvedWithRegistration):
        (WebCore::ServiceWorkerJob::resolvedWithUnregistrationResult):
        (WebCore::ServiceWorkerJob::startScriptFetch):
        (WebCore::ServiceWorkerJob::didReceiveResponse):
        (WebCore::ServiceWorkerJob::notifyFinished):
        (WebCore::ServiceWorkerJob::cancelPendingLoad):
        * workers/service/ServiceWorkerJob.h:
        (WebCore::ServiceWorkerJob::hasPromise const):
        (WebCore::ServiceWorkerJob::takePromise):
        * workers/service/ServiceWorkerJobClient.h:
        * workers/service/server/SWServerJobQueue.cpp:
        (WebCore::SWServerJobQueue::scriptFetchFinished):

2019-01-30  Dean Jackson  <dino@apple.com>

        PointerEvents - tiltX and tiltY are reversed
        https://bugs.webkit.org/show_bug.cgi?id=194032
        <rdar://problem/47674184>

        Reviewed by Jon Lee.

        I got tiltX and tiltY the wrong way around.

        * dom/ios/PointerEventIOS.cpp: Flip the values.

2019-01-30  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] nextBreakablePosition returns the same position on hyphen characters
        https://bugs.webkit.org/show_bug.cgi?id=194001

        Reviewed by Antti Koivisto.

        Skip to the next position manually. This is exactly what we do in simple line layout.

        * layout/inlineformatting/InlineRunProvider.cpp:
        (WebCore::Layout::InlineRunProvider::moveToNextBreakablePosition):

2019-01-30  Simon Fraser  <simon.fraser@apple.com>

        Add some basic geometry information to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=194002
        rdar://problem/47656294

        Reviewed by Antti Koivisto.

        To allow hit-testing in the scrolling tree, store a parent-relative scrollable
        rect in "scrolling" and "frame hosting" nodes. This is a rect whose size is the size
        of the scrollable area, and whose origin is relative to the parent scrolling tree node.
        
        Frame hosting nodes need this rect because they take care of the geometry offset between
        an iframe and its scrolling tree ancestor in the parent document.
        
        Based on a patch by Frédéric Wang in bug 172917.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::setScrollingNodeGeometry):
        * page/scrolling/ScrollingStateFrameHostingNode.cpp:
        (WebCore::ScrollingStateFrameHostingNode::ScrollingStateFrameHostingNode):
        (WebCore::ScrollingStateFrameHostingNode::setAllPropertiesChanged):
        (WebCore::ScrollingStateFrameHostingNode::setParentRelativeScrollableRect):
        (WebCore::ScrollingStateFrameHostingNode::dumpProperties const):
        * page/scrolling/ScrollingStateFrameHostingNode.h:
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp:
        (WebCore::ScrollingTreeFrameHostingNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameHostingNode::dumpProperties const):
        * page/scrolling/ScrollingTreeFrameHostingNode.h:
        (WebCore::ScrollingTreeFrameHostingNode::parentRelativeScrollableRect const):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeFrameScrollingGeometry const):
        (WebCore::RenderLayerCompositor::computeFrameHostingGeometry const):
        (WebCore::RenderLayerCompositor::computeOverflowScrollingGeometry const):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):
        (WebCore::RenderLayerCompositor::updateScrollSnapPropertiesWithFrameView const):
        (WebCore::RenderLayerCompositor::updateScrollSnapPropertiesWithFrameView): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-01-30  Zalan Bujtas  <zalan@apple.com>

        [LFC] Use the used margin values in outOfFlowReplacedVerticalGeometry consistently
        https://bugs.webkit.org/show_bug.cgi?id=194020

        Reviewed by Antti Koivisto.

        Check the used margin variables whether we already computed before/after values.

        Test: fast/block/block-only/absolute-position-with-margin-auto-simple.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):

2019-01-30  Chris Fleizach  <cfleizach@apple.com>

        AX: Support color well on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194010

        Reviewed by Joanmarie Diggs.

        Test: accessibility/ios-simulator/color-well.html

        Add support for color well on iOS.

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
        (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
        (-[WebAccessibilityObjectWrapper accessibilityRoleDescription]):
        (-[WebAccessibilityObjectWrapper accessibilityColorStringValue]):
        * en.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        (WebCore::AXColorWellText):
        * platform/LocalizedStrings.h:

2019-01-30  Chris Fleizach  <cfleizach@apple.com>

        AX: Role=switch not returning correct accessibilityValue
        https://bugs.webkit.org/show_bug.cgi?id=194006

        Reviewed by Joanmarie Diggs.

        Return the toggle state of a role=switch element.        

        Test: accessibility/ios-simulator/role-switch.html

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper accessibilityValue]):

2019-01-29  Rob Buis  <rbuis@igalia.com>

        Align with Fetch on data: URLs
        https://bugs.webkit.org/show_bug.cgi?id=182325

        Reviewed by Alex Christensen.

        Implement most remaining steps for data: URL processing [1].
        Serialization is still to be implemented.

        To make the code in DataURLDecoder::parseMediaType more efficient,
        refactor ParsedContentType so that validation and parsing is done
        in one pass.

        Test: web-platform-tests/fetch/data-urls/processing.any.js

        [1] https://fetch.spec.whatwg.org/#data-urls

        * Modules/encryptedmedia/CDM.cpp:
        (WebCore::CDM::getSupportedCapabilitiesForAudioVideoType):
        * platform/network/DataURLDecoder.cpp:
        (WebCore::DataURLDecoder::parseMediaType):
        (WebCore::DataURLDecoder::DecodeTask::process):
        * platform/network/MIMEHeader.cpp:
        (WebCore::MIMEHeader::parseHeader):
        * platform/network/ParsedContentType.cpp:
        (WebCore::containsNewline):
        (WebCore::ParsedContentType::parseContentType):
        (WebCore::ParsedContentType::create):
        (WebCore::isValidContentType):
        (WebCore::ParsedContentType::ParsedContentType):
        (WebCore::DummyParsedContentType::setContentType const): Deleted.
        (WebCore::DummyParsedContentType::setContentTypeParameter const): Deleted.
        (WebCore::parseContentType): Deleted.
        * platform/network/ParsedContentType.h:

2019-01-29  Eric Carlson  <eric.carlson@apple.com>

        [MSE] add more source buffer logging
        https://bugs.webkit.org/show_bug.cgi?id=193995
        <rdar://problem/47650399>

        Reviewed by Jon Lee.

        No new tests, no functional change.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::resetParserState):
        (WebCore::SourceBufferPrivateAVFObjC::setReadyState):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        (WebCore::SourceBufferPrivateAVFObjC::willSeek):
        (WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession):

2019-01-29  Simon Fraser  <simon.fraser@apple.com>

        Add nodes to the scrolling tree in z-index order.
        https://bugs.webkit.org/show_bug.cgi?id=192529
        <rdar://problem/47402708>

        Reviewed by Dean Jackson.

        We currently add nodes to the scrolling tree via RenderLayerBacking::updateGeometry() and some other places.
        This is sub-optimal, because we don't readily know the scrolling ancestor at these times, so have to do RenderLayer
        walks to find them.

        With this change we update the scrolling tree during the RenderLayerCompositor::updateBackingAndHierarchy()
        tree walk, storing state along the way so we always know our scrolling tree ancestor, and the sibling index
        (which makes it so that the scrolling tree correctly reflects layer z-order).

        The reattachSubframeScrollLayers() code path is removed, since we can now reliably parent frame nodes via FrameHosting
        nodes in their parent document.

        There is also some minor cleanup around RenderLayerBacking teardown; it used to be the case that cleanup in ~RenderLayerBacking
        was hard because the backing was already disconnected from its owning RenderLayer, so I added RenderLayerBacking::willBeDestroyed()
        to do work that requires that layer->backing() is still valid. This allows for fewer callsites for detachFromScrollingCoordinator().

        updateScrollCoordinatedLayersAfterFlushIncludingSubframes() is now iOS-only because it's only relevant for iOS WK1,
        and m_scrollCoordinatedLayers can be moved to LegacyWebKitScrollingLayerCoordinator.

        Tests: scrollingcoordinator/scrolling-tree/overflow-in-fixed.html
               scrollingcoordinator/scrolling-tree/scrolling-tree-is-z-order.html

        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::insertNode):
        * page/scrolling/ScrollingTreeNode.cpp:
        (WebCore::ScrollingTreeNode::~ScrollingTreeNode):
        * platform/Logging.cpp:
        (WebCore::initializeLogChannelsIfNecessary):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::setParent):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::~RenderLayerBacking):
        (WebCore::RenderLayerBacking::willBeDestroyed):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::updateBackgroundLayer):
        (WebCore::RenderLayerBacking::coordinatedScrollingRoles const):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayersAfterFlush):
        (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
        (WebCore::frameHostingNodeForFrame):
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::updateBacking):
        (WebCore::RenderLayerCompositor::layerWillBeRemoved):
        (WebCore::RenderLayerCompositor::setIsInWindow):
        (WebCore::RenderLayerCompositor::clearBackingForLayerIncludingDescendants):
        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
        (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
        (WebCore::RenderLayerCompositor::attachScrollingNode):
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerWithRole):
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
        (WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):
        (WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
        (WebCore::RenderLayerCompositor::didAddScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::addScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::removeLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::addViewportConstrainedLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::removeViewportConstrainedLayer):
        (WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush): Deleted.
        (WebCore::RenderLayerCompositor::setCompositingParent): Deleted. This was always called with a null parentLayer, so was a no-op.
        (WebCore::RenderLayerCompositor::removeCompositedChildren): Deleted.
        (WebCore::RenderLayerCompositor::fixedRootBackgroundLayerChanged): Deleted. The work happens via didChangePlatformLayerForLayer() now.
        (WebCore::canCoordinateScrollingForLayer): Deleted.
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus): Deleted.
        (WebCore::enclosingScrollingNodeID): Deleted.
        (WebCore::scrollCoordinatedAncestorInParentOfFrame): Deleted.
        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers): Deleted.
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame): Deleted.
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer): Deleted.
        * rendering/RenderLayerCompositor.h:

2019-01-29  Brent Fulgham  <bfulgham@apple.com>

        Make sure we have a frame before trying to access its loader 
        https://bugs.webkit.org/show_bug.cgi?id=193985
        <rdar://problem/47618239>

        Reviewed by Ryosuke Niwa.

        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

2019-01-29  Andy Estes  <aestes@apple.com>

        Try to fix the watchOS build.

        * dom/Element.cpp:

2019-01-29  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
        https://bugs.webkit.org/show_bug.cgi?id=193907
        rdar://problem/47604080

        Reviewed by Frédéric Wang.

        Recent scrolling tree changes can trigger unparenting and reparenting of subtrees in the
        state tree. If a subframe's state tree nodes are unparented, a scrolling tree commit would
        show these as nodes being destroyed, which destroyed the tree nodes. When re-parented, the
        commit would re-create the tree node, but the state node would only have a subset of the
        change flags set, so the new tree node would fail to get all of the state (for example, it
        would be missing layers and scrolling geometry).

        Fix by ensuring that when we reparent state node subtrees, we set all the change flags
        so that the full set of data is sent to the scrolling tree (the UI process, in the case of iOS WK2).
        Annoyingly, virtual setAllPropertiesChanged() functions are needed so each state node subclass can
        set the right change flags.

        This patch also gets rid of m_nodesRemovedSinceLastCommit in the state tree. We can gain the same
        information by using copying all of the nodeIDs in m_nodeMap into a HashSet, and removing nodes
        as we encounter them in the tree walk.
        
        Rename m_latchedNode to m_latchedNodeID in ScrollingTree, since it's a nodeID, not a node pointer.

        Test: compositing/geometry/composited-frame-contents.html

        * page/scrolling/ScrollingStateFixedNode.cpp:
        (WebCore::ScrollingStateFixedNode::setAllPropertiesChanged):
        * page/scrolling/ScrollingStateFixedNode.h:
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::setPropertyChanged):
        (WebCore::ScrollingStateNode::setAllPropertiesChanged):
        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::setPropertyChangedBit):
        * page/scrolling/ScrollingStateScrollingNode.cpp:
        (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
        * page/scrolling/ScrollingStateScrollingNode.h:
        * page/scrolling/ScrollingStateStickyNode.cpp:
        (WebCore::ScrollingStateStickyNode::setAllPropertiesChanged):
        * page/scrolling/ScrollingStateStickyNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::insertNode): Add a RELEASE_ASSERT on the type of the node created
        if parentID == 0, since mistakes here can associate a ScrollingNodeType::MainFrame node with some
        other nodeID which can result in type confusion later.
        (WebCore::ScrollingStateTree::nodeWasReattachedRecursive):
        (WebCore::ScrollingStateTree::commit):
        (WebCore::ScrollingStateTree::willRemoveNode):
        (WebCore::ScrollingStateTree::setRemovedNodes): Deleted.
        * page/scrolling/ScrollingStateTree.h:
        (WebCore::ScrollingStateTree::removedNodes const): Deleted.
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
        (WebCore::ScrollingTree::commitTreeState):
        (WebCore::ScrollingTree::updateTreeFromStateNode):
        (WebCore::ScrollingTree::latchedNode):
        (WebCore::ScrollingTree::setLatchedNode):
        (WebCore::ScrollingTree::clearLatchedNode):
        (WebCore::ScrollingTree::scrollingTreeAsText):
        (WebCore::ScrollingTree::removeDestroyedNodes): Deleted.
        * page/scrolling/ScrollingTree.h:
        (WebCore::ScrollingTree::hasLatchedNode const):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::ensureRootLayer): The scroll layer needs a 0,0,0 anchor point so that
        setting its position doesn't offset it relative to the center.

2019-01-29  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Fix and add validation to WebGPURenderPipeline and MTLVertexDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=193926
        <rdar://problem/47327648>

        Reviewed by Myles C. Maxfield.

        Update vertex input to properly utilize inputSlot and shaderLocation fields, and add some validation.

        Test: webgpu/vertex-buffer-triangle-strip.html

        * Modules/webgpu/WebGPUVertexInputDescriptor.idl: 
        * platform/graphics/gpu/GPUVertexInputDescriptor.h:
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setInputStateForPipelineDescriptor): Properly retain Metal types.
        (WebCore::GPURenderPipeline::create): Provide error logging for MTLRenderPipelineState creation.

2019-01-29  Keith Rollin  <krollin@apple.com>

        Add .xcfilelists to Run Script build phases
        https://bugs.webkit.org/show_bug.cgi?id=193792
        <rdar://problem/47201785>

        Reviewed by Alex Christensen.

        As part of supporting XCBuild, update the necessary Run Script build
        phases in their Xcode projects to refer to their associated
        .xcfilelist files.

        Note that the addition of these files bumps the Xcode project version
        number to something that's Xcode 10 compatible. This change means that
        older versions of the Xcode IDE can't read these projects. Nor can it
        fully load workspaces that refer to these projects (the updated
        projects are shown as non-expandable placeholders). `xcodebuild` can
        still build these projects; it's just that the IDE can't open them.

        Make special accommodations for incorporating .xcfilelists from
        WebKitAdditions.

        No new tests since there should be no observable behavior difference.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-29  John Wilander  <wilander@apple.com>

        Add data abstraction and validation for Ad Click Attribution
        https://bugs.webkit.org/show_bug.cgi?id=193916
        <rdar://problem/47603481>

        Reviewed by Daniel Bates, Brent Fulgham, and Alex Christensen.

        New API tests added.

        Ad click attribution has two steps. First, the storage of an ad
        campaign ID for a click that takes the user to a destination
        site. Second, a conversion on the destination site that can be
        attributed to the ad click.

        This patch adds a class that represents a request for ad click
        attribution. Validation makes sure that the bits of entropy
        reported through this mechanism is limited.

        This feature is experimental and off by default.

        * Sources.txt:
            Added loader/AdClickAttribution.cpp.
        * WebCore.xcodeproj/project.pbxproj:
        * loader/AdClickAttribution.cpp: Added.
        (WebCore::AdClickAttribution::isValid const):
        (WebCore::AdClickAttribution::setConversion):
        (WebCore::AdClickAttribution::url const):
        (WebCore::AdClickAttribution::referrer const):
        * loader/AdClickAttribution.h: Added.
        (WebCore::AdClickAttribution::Campaign::Campaign):
        (WebCore::AdClickAttribution::Campaign::isValid const):
        (WebCore::AdClickAttribution::Source::Source):
        (WebCore::AdClickAttribution::Destination::Destination):
        (WebCore::AdClickAttribution::Priority::Priority):
        (WebCore::AdClickAttribution::Conversion::Conversion):
        (WebCore::AdClickAttribution::Conversion::isValid const):
        (WebCore::AdClickAttribution::AdClickAttribution):
        (WebCore::AdClickAttribution::earliestTimeToSend const):
        * loader/DocumentLoader.cpp:
            Added missing #include "RuntimeEnabledFeatures.h".

2019-01-29  Zalan Bujtas  <zalan@apple.com>

        [MathML] Move enum class ScriptType to MathMLScriptsElement.
        https://bugs.webkit.org/show_bug.cgi?id=193969

        Reviewed by Antti Koivisto.

        * mathml/MathMLScriptsElement.cpp:
        (WebCore::scriptTypeOf):
        * mathml/MathMLScriptsElement.h:
        * rendering/mathml/RenderMathMLScripts.cpp:
        (WebCore::RenderMathMLScripts::scriptType const):
        (WebCore::RenderMathMLScripts::validateAndGetReferenceChildren):
        (WebCore::RenderMathMLScripts::computePreferredLogicalWidths):
        (WebCore::RenderMathMLScripts::verticalMetrics):
        (WebCore::RenderMathMLScripts::layoutBlock):
        * rendering/mathml/RenderMathMLScripts.h:
        * rendering/mathml/RenderMathMLUnderOver.cpp:
        (WebCore::RenderMathMLUnderOver::isValid const):
        (WebCore::RenderMathMLUnderOver::under const):
        (WebCore::RenderMathMLUnderOver::over const):
        (WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths):
        (WebCore::RenderMathMLUnderOver::hasAccent const):
        (WebCore::RenderMathMLUnderOver::layoutBlock):

2019-01-29  Chris Dumez  <cdumez@apple.com>

        Make sure WTF::generateObjectIdentifier() internal counter does not get duplicated
        https://bugs.webkit.org/show_bug.cgi?id=193848

        Reviewed by Youenn Fablet.

        * dom/Document.cpp:
        * dom/MessageChannel.cpp:
        (WebCore::MessageChannel::MessageChannel):
        * dom/ScriptExecutionContext.cpp:
        (WebCore::ScriptExecutionContext::contextIdentifier const):
        * history/HistoryItem.cpp:
        (WebCore::HistoryItem::HistoryItem):
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::DOMWindow):
        * platform/Process.cpp:
        (WebCore::Process::identifier):
        * workers/service/ServiceWorkerJobData.cpp:
        (WebCore::ServiceWorkerJobData::ServiceWorkerJobData):
        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::RegistrationDatabase::importRecords):
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::Connection::Connection):
        (WebCore::SWServer::updateWorker):
        * workers/service/server/SWServerRegistration.cpp:
        (WebCore::generateServiceWorkerRegistrationIdentifier):
        * workers/service/server/SWServerToContextConnection.cpp:
        (WebCore::generateServerToContextConnectionIdentifier):


2019-01-29  Alex Christensen  <achristensen@webkit.org>

        Use lambdas instead of member pointer functions for TransactionOperationImpl
        https://bugs.webkit.org/show_bug.cgi?id=193933

        Reviewed by Tim Horton.

        No change in behavior.  This just makes it easier to add new parameters to these functions in a straightforward manner.

        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::putOrAdd):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::internalAbort):
        (WebCore::IDBTransaction::commit):
        (WebCore::IDBTransaction::createObjectStore):
        (WebCore::IDBTransaction::renameObjectStore):
        (WebCore::IDBTransaction::createIndex):
        (WebCore::IDBTransaction::renameIndex):
        (WebCore::IDBTransaction::doRequestOpenCursor):
        (WebCore::IDBTransaction::iterateCursor):
        (WebCore::IDBTransaction::requestGetAllObjectStoreRecords):
        (WebCore::IDBTransaction::requestGetAllIndexRecords):
        (WebCore::IDBTransaction::requestGetRecord):
        (WebCore::IDBTransaction::requestIndexRecord):
        (WebCore::IDBTransaction::requestCount):
        (WebCore::IDBTransaction::requestDeleteRecord):
        (WebCore::IDBTransaction::requestClearObjectStore):
        (WebCore::IDBTransaction::requestPutOrAdd):
        (WebCore::IDBTransaction::deleteObjectStore):
        (WebCore::IDBTransaction::deleteIndex):
        * Modules/indexeddb/IDBTransaction.h:
        * Modules/indexeddb/client/TransactionOperation.h:
        (WebCore::IDBClient::TransactionOperation::doComplete):
        (WebCore::IDBClient::createTransactionOperation): Deleted.

2019-01-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Remove incorrect downcast<Container>
        https://bugs.webkit.org/show_bug.cgi?id=193964

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):

2019-01-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Do not ignore next sibling box while laying out BFC.
        https://bugs.webkit.org/show_bug.cgi?id=193954

        Reviewed by Antti Koivisto.

        When a block box has no child (<img style="display: block">), we should not ignore the next sibling (move the container check to the function to keep layout logic simple)
        Also inFlowNonReplacedWidthAndMargin() is called through inFlowReplacedWidthAndMargin() to compute margins.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layout const):
        (WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):

2019-01-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Remove quirk from MarginCollapse::marginsCollapseThrough
        https://bugs.webkit.org/show_bug.cgi?id=193948

        Reviewed by Antti Koivisto.

        This is now implemented in BlockFormattingContext::Quirks::stretchedInFlowHeight().

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):

2019-01-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Anonymous block container's margin before does not collapse with previous inflow sibling margin after.
        https://bugs.webkit.org/show_bug.cgi?id=193952

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter):

2019-01-29  Frederic Wang  <fwang@igalia.com>

        Allow scrolling tree nodes to exist in a detached state
        https://bugs.webkit.org/show_bug.cgi?id=193754

        Unreviewed build warning fix.

        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode): Remove
        unused variable.

2019-01-28  Ryosuke Niwa  <rniwa@webkit.org>

        User agent string override for navigator.userAgent should be site specific quirks
        https://bugs.webkit.org/show_bug.cgi?id=193950

        Reviewed by Brent Fulgham.

        In order to make it possible to toggle the UA string override just for navigator.userAgent via Web Inspector,
        we need to put this override behind the site specific quirks. Because WebInspector overrides Page's setting
        without updating WKPreferences, there is no way for WKWebView client's to know whether the site specific quirks
        had been disabled or not.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setCustomJavaScriptUserAgentAsSiteSpecificQuirks):
        (WebCore::DocumentLoader::customJavaScriptUserAgentAsSiteSpecificQuirks const):
        (WebCore::DocumentLoader::setCustomJavaScriptUserAgent): Deleted.
        (WebCore::DocumentLoader::customJavaScriptUserAgent const): Deleted.
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::userAgentForJavaScript const):

2019-01-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit page WebRTC settings on a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193863
        <rdar://problem/47572764>

        Reviewed by Joseph Pecoraro.

        Test: inspector/page/overrideSetting-ICECandidateFilteringEnabled.html
              inspector/page/overrideSetting-MockCaptureDevicesEnabled.html

        * inspector/agents/InspectorPageAgent.cpp:

        * page/Settings.yaml:
        * page/SettingsBase.h:
        * page/SettingsBase.cpp:
        (SettingsBase::iceCandidateFilteringEnabledChanged): Added.
        (SettingsBase::mockCaptureDevicesEnabledChanged): Added.
        * Scripts/GenerateSettings.rb:
        * Scripts/SettingsTemplates/Settings.cpp.erb:
        Add page-level settings for WebRTC preferences.

        * Modules/mediastream/UserMediaController.cpp:
        (WebCore::UserMediaController::canCallGetUserMedia):

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

        * testing/Internals.h:
        * testing/Internals.cpp:
        (WebCore::Internals::Internals):
        (WebCore::Internals::setMockMediaCaptureDevicesEnabled):
        (WebCore::Internals::setMediaCaptureRequiresSecureConnection): Added.

        * page/DeprecatedGlobalSettings.h:
        * page/DeprecatedGlobalSettings.cpp:
        (WebCore::DeprecatedGlobalSettings::mockCaptureDevicesEnabled): Deleted.
        (WebCore::DeprecatedGlobalSettings::setMockCaptureDevicesEnabled): Deleted.
        (WebCore::DeprecatedGlobalSettings::mediaCaptureRequiresSecureConnection): Deleted.
        (WebCore::DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection): Deleted.

2019-01-28  Jer Noble  <jer.noble@apple.com>

        webkitcurrentplaybacktargetiswirelesschanged and webkitCurrentPlaybackIsWireless are non-deterministic.
        https://bugs.webkit.org/show_bug.cgi?id=193923
        <rdar://problem/45956595>

        Reviewed by Eric Carlson.

        The value of webkitCurrentPlaybackTargetIsWireless can change in between when the event is scheduled
        and when it's actually dispatched. To make this more deterministic, use a GenericTaskQueue to enqueue
        setting m_isPlayingToWirelessTarget and dispatch the changed event in the same run-loop.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::clearMediaPlayer):
        (WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
        (WebCore::HTMLMediaElement::setIsPlayingToWirelessTarget):
        (WebCore::HTMLMediaElement::dispatchEvent):
        * html/HTMLMediaElement.h:

2019-01-28  Ross Kirsling  <ross.kirsling@sony.com>

        Remove unnecessary `using namespace WTF`s (or at least restrict their scope).
        https://bugs.webkit.org/show_bug.cgi?id=193941

        Reviewed by Alex Christensen.

        * css/CSSBasicShapes.cpp:
        * css/CSSPrimitiveValue.cpp:
        * css/parser/CSSParser.cpp:
        * css/parser/CSSParserSelector.cpp:
        * css/parser/CSSPropertyParser.cpp:
        * dom/Document.cpp:
        * dom/EventListenerMap.cpp:
        * dom/EventTarget.cpp:
        * editing/Editor.cpp:
        * html/HTMLElement.cpp:
        * html/HTMLFontElement.cpp:
        * html/parser/HTMLTokenizer.cpp:
        * html/track/TrackBase.cpp:
        * loader/FTPDirectoryParser.cpp:
        * loader/TextResourceDecoder.cpp:
        * loader/cache/CachedResource.cpp:
        * page/ContextMenuController.cpp:
        * page/Navigator.cpp:
        * platform/Length.cpp:
        * platform/cocoa/KeyEventCocoa.mm:
        * platform/graphics/FontCascade.cpp:
        * platform/graphics/WidthIterator.cpp:
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        * platform/ios/KeyEventIOS.mm:
        * platform/mac/KeyEventMac.mm:
        * platform/network/HTTPParsers.cpp:
        * platform/text/TextCodecUTF8.cpp:
        * platform/text/TextEncodingRegistry.cpp:
        * platform/win/KeyEventWin.cpp:
        * rendering/BidiRun.cpp:
        * rendering/FloatingObjects.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderListMarker.cpp:
        * rendering/RenderText.cpp:

2019-01-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] WebCore/platform/Process.h is conflicting with process.h
        https://bugs.webkit.org/show_bug.cgi?id=193944

        Reviewed by Ross Kirsling.

        Windows has process.h. Rename Process.h to ProcessIdentifier.h.

        No new tests because there is no behavior change.

        * Sources.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/MessagePortIdentifier.h:
        * dom/messageports/MessagePortChannel.h:
        * dom/messageports/MessagePortChannelProvider.h:
        * dom/messageports/MessagePortChannelRegistry.h:
        * history/BackForwardItemIdentifier.h:
        * page/GlobalWindowIdentifier.h:
        * platform/ProcessIdentifier.cpp: Renamed from Source/WebCore/platform/Process.cpp.
        (WebCore::Process::setIdentifier):
        (WebCore::Process::identifier):
        * platform/ProcessIdentifier.h: Renamed from Source/WebCore/platform/Process.h.

2019-01-28  Antoine Quint  <graouts@apple.com>

        Implement capture for Pointer Events on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193917
        <rdar://problem/47605689>

        Reviewed by Dean Jackson.

        We add a new PointerCaptureController object which gets notified upon dispatch of pointer events
        to implement implicit pointer capture, dispatch the gotpointercapture and lostpointercaptiure events,
        and implement the Element APIs for pointer capture: hasPointerCapture(), setPointerCapture() and
        releasePointerCapture().

        Tests: pointerevents/ios/pointer-events-implicit-capture-has-pointer-capture-in-pointer-down.html
               pointerevents/ios/pointer-events-implicit-capture-release-exception.html
               pointerevents/ios/pointer-events-implicit-capture-release.html
               pointerevents/ios/pointer-events-implicit-capture.html
               pointerevents/ios/pointer-events-set-pointer-capture-exceptions.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/Element.cpp:
        (WebCore::Element::setPointerCapture):
        (WebCore::Element::releasePointerCapture):
        (WebCore::Element::hasPointerCapture):
        * dom/Element.h:
        * dom/Element.idl:
        * dom/EventNames.h:
        * dom/PointerEvent.h:
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        (WebCore::Page::pointerCaptureController const):
        * page/PointerCaptureController.cpp: Added.
        (WebCore::PointerCaptureController::PointerCaptureController):
        (WebCore::PointerCaptureController::setPointerCapture):
        (WebCore::PointerCaptureController::releasePointerCapture):
        (WebCore::PointerCaptureController::hasPointerCapture):
        (WebCore::PointerCaptureController::pointerLockWasApplied):
        (WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier):
        (WebCore::PointerCaptureController::pointerEventWillBeDispatched):
        (WebCore::PointerCaptureController::pointerEventWasDispatched):
        (WebCore::PointerCaptureController::processPendingPointerCapture):
        * page/PointerCaptureController.h: Added.
        * page/PointerLockController.cpp:
        (WebCore::PointerLockController::requestPointerLock):
        * page/PointerLockController.h:

2019-01-28  Andy Estes  <aestes@apple.com>

        [watchOS] Enable Parental Controls content filtering
        https://bugs.webkit.org/show_bug.cgi?id=193939
        <rdar://problem/46641912>

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2019-01-28  Dean Jackson  <dino@apple.com>

        Produce "pen" Pointer Events if using a stylus (e.g. Apple Pencil)
        https://bugs.webkit.org/show_bug.cgi?id=193945
        <rdar://problem/47618922>

        Reviewed by Antoine Quint.

        Calculate the pressure, tiltX and tiltY values for incoming
        Pointer Events, which have values when the PlatformTouchEvent
        originated from a stylus.

        Test: pointerevents/ios/pointer-events-dispatch-on-stylus.html

        * dom/PointerEvent.h: Default to "mouse".
        * dom/ios/PointerEventIOS.cpp: Calculate the values.

2019-01-28  Timothy Hatcher  <timothy@apple.com>

        Make it easier for non-Apple ports to enable dark mode CSS support.
        https://bugs.webkit.org/show_bug.cgi?id=193882

        Reviewed by Megan Gardner.

        * page/FrameView.cpp:
        (WebCore::FrameView::updateBackgroundRecursively): Limit use of system
        background color to the Mac platform.
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::purgeCaches): Purge m_darkColorCache.
        (WebCore::RenderTheme::platformColorsDidChange): Reset m_darkColorCache.
        (WebCore::RenderTheme::colorCache const): Added m_darkColorCache.
        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::colorCache const): Deleted.
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::purgeCaches): Removed m_darkColorCache.
        (WebCore::RenderThemeMac::platformColorsDidChange): Deleted.
        (WebCore::RenderThemeMac::colorCache const): Deleted.

2019-01-28  Simon Fraser  <simon.fraser@apple.com>

        svg/text/select-text-inside-non-static-position.html crashes under ScrollingStateTree::unparentChildrenAndDestroyNode()
        https://bugs.webkit.org/show_bug.cgi?id=193930

        Reviewed by Tim Horton.

        ScrollingStateTree::unparentChildrenAndDestroyNode() should make a copy of the 'children' vector
        before iterating, since iteration mutates the array.

        Tested by ASan tests.

        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::takeChildren):
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):

2019-01-28  Simon Fraser  <simon.fraser@apple.com>

        css3/filters/blur-filter-page-scroll-self.html crashes under WebCore::ScrollingStateNode::ScrollingStateNode
        https://bugs.webkit.org/show_bug.cgi?id=193925

        Reviewed by Tim Horton.

        Some css3/filters/ tests disable accelerated compositing (which is crazy). Make these
        tests not crash by ensuring that unparentNode() and unparentChildrenAndDestroyNode() clears the root
        node if it's the node being unparented or destroyed.

        Tested by existing tests.

        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::unparentNode):
        (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):

2019-01-28  Daniel Bates  <dabates@apple.com>

        [iOS] Make Window virtual key code computation match Mac
        https://bugs.webkit.org/show_bug.cgi?id=193452

        Reviewed by Ryosuke Niwa.

        Use the same approach for computing the Windows virtual key code on iOS as we do on Mac for
        web compatibility. On Mac, we prefer to compute the  Windows virtual key code from the input
        strings of the key event and use the key event's keycode as a last resort.

        Test: fast/events/ios/key-events-meta-alt-combinations.html

        * platform/ios/PlatformEventFactoryIOS.h:
        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::isKeypadEvent): Added.
        (WebCore::windowsKeyCodeForKeyEvent): Added.
        (WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder): Modified to call
        WebCore::windowsKeyCodeForKeyEvent() to compute the Windows virtual key code.

2019-01-28  Antoine Quint  <graouts@apple.com>

        Limit user-agent interactions based on the touch-action property on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193447

        Unreviewed build fix.

        * dom/Element.cpp:
        (WebCore::parentCrossingFrameBoundaries):

2019-01-28  Eric Carlson  <eric.carlson@apple.com>

        AVStreamSession isn't always available, make a HAVE compile flag for it
        https://bugs.webkit.org/show_bug.cgi?id=193889
        <rdar://problem/47452863>

        Reviewed by Jer Noble.

        No new tests, no functional change.

        * page/Settings.yaml:
        * page/SettingsBase.cpp:
        (WebCore::SettingsBase::platformDefaultMediaSourceEnabled):
        * page/SettingsBase.h:
        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::platformDefaultMediaSourceEnabled):
        * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
        (WebCore::CDMPrivateMediaSourceAVFObjC::createSession):
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged): Fix logging.
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        
        Use a HashMap to associate CMSampleBuffer with SourceBufferPrivateAVFObjC.

        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]): isEqualTo
        -> isEqualToString.
        (WebCore::sourceBufferMap):
        (WebCore::nextMapID):
        (WebCore::bufferWasConsumedCallback):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::append):
        (WebCore::SourceBufferPrivateAVFObjC::destroyParser):
        (WebCore::SourceBufferPrivateAVFObjC::layerDidReceiveError):
        (WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
        (WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed):
        (-[WebBufferConsumedContext initWithParent:]): Deleted.
        (-[WebBufferConsumedContext parent]): Deleted.

2019-01-28  Rob Buis  <rbuis@igalia.com>

        Update MIME type parser
        https://bugs.webkit.org/show_bug.cgi?id=180526

        Reviewed by Frédéric Wang.

        I overlooked step 11.9.3 [1], for Mimesniff we should not
        bail out on missing subtype, but keep trying. Note
        that Rfc2045 does require bailing out, as before.

        Test: ParsedContentType unittest

        [1] https://mimesniff.spec.whatwg.org/#parse-a-mime-type

        * platform/network/ParsedContentType.cpp:
        (WebCore::parseToken):
        (WebCore::parseContentType):

2019-01-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed follow-up to r240557, restore a call to makeString
        https://bugs.webkit.org/show_bug.cgi?id=192742
        <rdar://problem/46757369>

        It works if we add this #include that was missing. I got confused by the error messages and
        missed that there were two similarly-named headers.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo):

2019-01-28  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Reject unitless length quirk in 'inset' shorthand
        https://bugs.webkit.org/show_bug.cgi?id=193773

        Reviewed by Manuel Rego Casasnovas.

        Even though its longhands ('top', 'right', 'bottom', 'left') accept the
        unitless length quirk, the 'inset' shorthand is a new CSS property and
        should reject it. This was resolved by the CSS WG in
        https://github.com/w3c/csswg-drafts/issues/3525#issuecomment-456902648

        Tests: imported/w3c/web-platform-tests/quirks/unitless-length/excluded-properties-001.html
               imported/w3c/web-platform-tests/quirks/unitless-length/excluded-properties-002.html
               imported/w3c/web-platform-tests/quirks/unitless-length/excluded-properties-003.html
               imported/w3c/web-platform-tests/quirks/unitless-length/limited-quirks.html
               imported/w3c/web-platform-tests/quirks/unitless-length/no-quirks.html
               imported/w3c/web-platform-tests/quirks/unitless-length/quirks.html

        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):

2019-01-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][MarginCollapsing][Quirks] Quirk margin values get propagated through margin collapsing
        https://bugs.webkit.org/show_bug.cgi?id=193896

        Reviewed by Antti Koivisto.

        This patch implements quirk margin value collapsing. There are a few "quirk" rules when it comes to margin collapsing.

        1. Collapsed quirk margin values are ignored on quirk containers

            <body>
              <p> p elements have 1em vertical (top/bottom) quirk margin
            </body>

            In quirk mode, <p> and <body> (quirk container) collapses their vertical margins but <p>'s quirk values(1qem -> 16px) are ignored.
            Used vertical margin values on the <body> are top: 8px bottom: 8px.

        2. Quirk margin values are turned into non-quirk values when collapsed with non-zero, non-quirk margins.

            <body>
              <div style="margin-top: 1px">
                <p> p elements have 1em vertical (top/bottom) quirk margin
              </div>
            </body>

            When <p>'s vertical margin collapses with the parent <div>,
            - the collapsed before value becomes 16px (max(1qem, 1px)) and this collapsed value is now considered as a non-quirk value
            - the collapsed after value stays 1qem quirk value.

            When <div> collapses with <body>
            - the collapsed before value becomes 16px (max(16px, 8px))
            - the <div>'s quirk after value gets ignored and the collapsed after value stays 8px.
            Used vertical margin values on the <body> are top: 16px (1em) bottom: 8px.

        * layout/MarginTypes.h:
        (WebCore::Layout::PositiveAndNegativeVerticalMargin::Values::isNonZero const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreCollapsedQuirkMargin):
        (WebCore::Layout::hasMarginBeforeQuirkValue): Deleted.
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreMarginAfter): Deleted.
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter):
        (WebCore::Layout::computedPositiveAndNegativeMargin):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter):

2019-01-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Remove redundant vertical positioning in BlockFormattingContext::computeFloatingPosition
        https://bugs.webkit.org/show_bug.cgi?id=193872

        Reviewed by Antti Koivisto.

        This is taken care of by verticalPositionWithMargin() in BlockFormattingContext::computeHeightAndMargin(). 

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):

2019-01-28  cathie chen  <cathiechen@igalia.com>

        Add missing #include in ScrollingTreeFrameScrollingNode.cpp
        https://bugs.webkit.org/show_bug.cgi?id=193905

        Reviewed by Frédéric Wang.

        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp: Add
        #include "ScrollingStateFrameScrollingNode.h"

2019-01-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][Quirk] Ignore collapsed(through) margin after when stretching body height.
        https://bugs.webkit.org/show_bug.cgi?id=193894

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):

2019-01-28  Antoine Quint  <graouts@apple.com>

        Limit user-agent interactions based on the touch-action property on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193447
        <rdar://problem/47283874>

        Reviewed by Antti Koivisto and Simon Fraser.

        We now compile a list of elements with a non-auto touch-action property that is updated whenever an element has its style changed
        or is removed from its document. When the content of that list changes, we inform the scrolling coordinator such that it can compile
        a list of TouchActionData structures which hold the touch-action value, the ID of the nearest scroll node and the Region containing
        the bounds of each of those elements to send it up to the UI process along with touch regions. Computing the list of allowed touch
        actions for a given element accounts for not only the value specified directly on that element's style, but also in its hierarchy,
        crossing any frame boundary towards the top-level document's root node.

        Tests: pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html
               pointerevents/ios/touch-action-none-on-iframe.html
               pointerevents/ios/touch-action-none-on-parent.html
               pointerevents/ios/touch-action-none.html
               pointerevents/ios/touch-action-pan-x-pan-y.html
               pointerevents/ios/touch-action-pan-x.html
               pointerevents/ios/touch-action-pan-y.html
               pointerevents/ios/touch-action-pinch-zoom-allows-zooming.html
               pointerevents/ios/touch-action-pinch-zoom-prevents-scrolling.html

        * WebCore.xcodeproj/project.pbxproj: Update how certain headers are exposed such that they can be used from WebKit.
        * dom/Document.cpp:
        (WebCore::Document::invalidateRenderingDependentRegions):
        (WebCore::Document::nodeWillBeRemoved): Ensure a node that is being removed from this document is no longer listed in its
        list of elements with a non-auto touch-action property.
        (WebCore::Document::absoluteEventRegionForNode):
        (WebCore::Document::absoluteRegionForEventTargets):
        (WebCore::Document::updateTouchActionElements): Create a list of elements with a non-auto touch-action property if one doesn't
        exist yet and update it to add the given element if it contains a non-auto touch-action, or remove it if it doesn't. If the contents
        of that list changed as a result, the scrolling coordinator is informed.
        * dom/Document.h:
        (WebCore::Document:: const):
        * dom/Element.cpp:
        (WebCore::parentCrossingFrameBoundaries):
        (WebCore::Element::computedTouchActions const): Provide the list of allowed touch actions accounting for the "touch-action" property
        specified on this element and all of its hierarchy, crossing frame boundary.
        (WebCore::Element::nearestScrollingNodeIDUsingTouchOverflowScrolling const): Provide the ScrollingNodeID, if any, for the nearest scrolling node
        for that element. This will allow the UI process to identify which scroll view's behavior to customize to reflect the element's allowed
        touch actions.
        * dom/Element.h:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const): Compute the region for all elements with a non-auto touch-action property
        throughout the provided frame and all of its subframes.
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollableAreaParameters::operator== const): Deleted.
        * page/scrolling/ScrollingCoordinatorTypes.h: Added.
        (WebCore::ScrollableAreaParameters::operator== const):
        * page/scrolling/ScrollingTree.cpp:
        (WebCore::ScrollingTree::touchActionDataAtPoint const): Query the list of TouchActionData objects for a match based on the provided point. Right
        now the logic is pretty crude, stopping at the first TouchActionData for which the region contains the provided point, but future patches will
        account for overlap and nesting.
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeNode.h:
        * platform/EventTrackingRegions.cpp:
        (WebCore::operator==):
        * platform/EventTrackingRegions.h:
        (WebCore::operator!=):
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::resolveElement): Update the list of elements with a non-auto touch-action property when an element's style changes.

2019-01-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix WPE/GTK debug builds after r240557
        https://bugs.webkit.org/show_bug.cgi?id=192742
        <rdar://problem/46757369>

        Also fix an improper format string that was recently added in a different commit.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo):
        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):

2018-12-15  Darin Adler  <darin@apple.com>

        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

        A while back, String::format was more efficient than string concatenation,
        but that is no longer true, and we should prefer String::number, makeString,
        or concatenation with the "+" operator to String::format for new code.

        This is not as good for programmers who are fond of printf formatting
        style, and in some cases it's a little harder to read the strings
        interspersed with variables rather than a format string, but it's better
        in a few ways:

        - more efficient (I didn't measure the difference, but it's definitely
          slower to use String::Format which calls vsnprintf twice than to use
          the WTF code)
        - works in a type-safe way without a need to use a format specifier such
          as "%" PRIu64 or "%tu" making it much easier to avoid problems due to
          subtle differences between platforms
        - allows us to use StringView in some cases to sidestep the need to
          allocate temporary WTF::String objects
        - does not require converting each WTF::String to a C string, allowing
          us to remove many cases of ".utf8().data()" and similar expressions,
          eliminating the allocation of temporary WTF::CString objects

        This patch covers a batch of easiest-to-convert call sites.
        Later patches will allow us to deprecate or remove String::format.

        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): Use makeString.
        * Modules/indexeddb/shared/IDBCursorInfo.cpp:
        (WebCore::IDBCursorInfo::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBGetAllRecordsData.cpp:
        (WebCore::IDBGetAllRecordsData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBGetRecordData.cpp:
        (WebCore::IDBGetRecordData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBIndexInfo.cpp:
        (WebCore::IDBIndexInfo::loggingString const): Ditto.
        (WebCore::IDBIndexInfo::condensedLoggingString const): Ditto.
        * Modules/indexeddb/shared/IDBIterateCursorData.cpp:
        (WebCore::IDBIterateCursorData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:
        (WebCore::IDBObjectStoreInfo::condensedLoggingString const): Ditto.
        * Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
        (WebCore::IDBResourceIdentifier::loggingString const): Ditto.
        * Modules/webdatabase/Database.cpp:
        (WebCore::formatErrorMessage): Ditto.
        * Modules/webdatabase/SQLError.h:
        (WebCore::SQLError::create): Ditto.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation): Use makeString.

        * bindings/scripts/test/JS/JSInterfaceName.cpp:
        * bindings/scripts/test/JS/JSMapLike.cpp:
        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
        * bindings/scripts/test/JS/JSTestException.cpp:
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestInterface.cpp:
        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
        * bindings/scripts/test/JS/JSTestIterable.cpp:
        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNode.cpp:
        * bindings/scripts/test/JS/JSTestObj.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
        * bindings/scripts/test/JS/JSTestSerialization.cpp:
        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
        * bindings/scripts/test/JS/JSTestStringifier.cpp:
        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
        Updated expected results.
:
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::parseHexColor): Use String::number
        and makeString.

        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::setLength): Use makeString.
        * html/ImageDocument.cpp:
        (WebCore::ImageDocument::imageUpdated): Ditto.
        * html/parser/XSSAuditor.cpp:
        (WebCore::XSSAuditor::init): Ditto.
        * inspector/InspectorFrontendClientLocal.cpp:
        (WebCore::InspectorFrontendClientLocal::setDockingUnavailable): Ditto.
        (WebCore::InspectorFrontendClientLocal::setAttachedWindow): Ditto.
        (WebCore::InspectorFrontendClientLocal::setDebuggingEnabled): Ditto.
        (WebCore::InspectorFrontendClientLocal::setTimelineProfilingEnabled): Ditto.
        (WebCore::InspectorFrontendClientLocal::showMainResourceForFrame): Ditto.
        * inspector/agents/InspectorCSSAgent.cpp: Ditto.
        * inspector/agents/InspectorIndexedDBAgent.cpp: Ditto.
        * page/MemoryRelease.cpp:
        (WebCore::logMemoryStatisticsAtTimeOfDeath): Ditto.

        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::formatByteNumber): Use String::number.
        (WebCore::ResourceUsageOverlay::platformDraw): Use string concatenation.

        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::logFootprintComparison): Use makeString.
        * platform/animation/TimingFunction.cpp:
        (WebCore::TimingFunction::cssText const): Ditto.

        * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
        (WebCore::AVTrackPrivateAVFObjCImpl::id const): Use AtomicString::number.
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        (WebCore::MediaSampleAVFObjC::MediaSampleAVFObjC): Ditto.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setContentsToSolidColor): Use makeString.
        (WebCore::GraphicsLayerCA::updateContentsImage): Ditto.
        (WebCore::GraphicsLayerCA::updateContentsRects): Ditto.
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): Ditto.
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText): Ditto.

        * platform/mock/mediasource/MockSourceBufferPrivate.cpp: Use String::number.

        * platform/network/ParsedContentRange.cpp:
        (WebCore::ParsedContentRange::headerValue const): Use makeString.

        * platform/network/cf/NetworkStorageSessionCFNet.cpp: Removed some unnecessary
        compiler conditionals and reorganized the start/stop of namespaces.
        (WebCore::NetworkStorageSession::switchToNewTestingSession): Use makeString.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::unauthorizedSQLFunction): Use makeString.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo): Ditto.
        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::RegistrationDatabase::ensureValidRecordsTable): Ditto.
        (WebCore::RegistrationDatabase::importRecords): Ditto.

2019-01-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove a couple of PLATFORM defines intended for watchOS
        https://bugs.webkit.org/show_bug.cgi?id=193888

        Reviewed by Alexey Proskuryakov.

        Remove the use of !PLATFORM(WATCH), since this is true on every platform.

        * editing/cocoa/DictionaryLookup.mm:

2019-01-27  Jiewen Tan  <jiewen_tan@apple.com>

        Use a load optimizer for some sites
        https://bugs.webkit.org/show_bug.cgi?id=193881
        <rdar://problem/46325455>

        Reviewed by Brent Fulgham.

        Expose FormData::flatten to be used by the load optimizer.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/network/FormData.h:

2019-01-26  Simon Fraser  <simon.fraser@apple.com>

        Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
        https://bugs.webkit.org/show_bug.cgi?id=193879

        Reviewed by Antti Koivisto.

        Currently we parent iframe scrolling tree nodes by finding the closest ancestor layer with a scrolling tree node.
        This results in scrolling tree nodes being connected across iframe boundaries in some arbitrary ancestor. This
        makes updating scrolling tree geometry very error-prone, since changes in the parent document will need to trigger
        updates of the scrolling tree node in an iframe.
        
        To address this, I already added a new "FrameHosting" scrolling node type. This patch actually instantiates these
        nodes, which are owned by the RenderIFrame's composited layer. Connecting across frame boundaries is theforefore
        simply a case of getting the FrameHosting node from the ownerElement's renderer; this is very similar to how we
        connect GraphicsLayers together.
        
        RenderLayerBacking gains another scrolling role for FrameHosting and ScrollingNodeID.

        Tested by existing tests.

        * page/FrameView.h:
        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::frameContentsRenderView):
        (WebCore::RenderLayerCompositor::frameContentsCompositor):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents const):
        (WebCore::RenderLayerCompositor::detachRootLayer):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
        (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
        (WebCore::scrollCoordinatedAncestorInParentOfFrame):
        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):
        (WebCore::RenderLayerCompositor::attachScrollingNode):
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
        * rendering/RenderLayerCompositor.h:
        * testing/Internals.cpp:
        (WebCore::Internals::scrollingStateTreeAsText const):

2019-01-27  Chris Fleizach  <cfleizach@apple.com>

        AX: Introduce a static accessibility tree
        https://bugs.webkit.org/show_bug.cgi?id=193348
        <rdar://problem/47203295>

        Reviewed by Ryosuke Niwa.

        In order to improve performance when requesting the accessibility hierarchy, we introduce the idea of a "static accessibility tree" which 
        could be accessed on a different thread by assistive technologies.
        That is accomplished by storing all the data needed to answer accessibility attribute queries in a static object that mirrors the 
        "live" AccessibilityObjects (which interact with both DOM and Render trees).
        These static objects are generally created after layout is done and final tasks are being performed. They are then stored in the static tree 
        representation and able to be read from anywhere.
        Tactically this is done with AXIsolatedTreeNodes inside of an AXIsolatedTree. The TreeNodes implement an AccessibilityObjectInterface shared 
        with AccessibilityObject.
        This allows the wrappers to access either one depending on conditions and platforms without significant code duplication or re-organization.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::remove):
        (WebCore::AXObjectCache::createIsolatedAccessibilityTree):
        (WebCore::AXObjectCache::generateStaticAccessibilityTreeIfNeeded):
        * accessibility/AXObjectCache.h:
        * accessibility/AccessibilityObject.h:
        * accessibility/AccessibilityObjectInterface.h: Added.
        * accessibility/isolatedtree: Added.
        * accessibility/isolatedtree/AXIsolatedTree.cpp: Added.
        (WebCore::AXIsolatedTree::treeCache):
        (WebCore::AXIsolatedTree::AXIsolatedTree):
        (WebCore::AXIsolatedTree::create):
        (WebCore::AXIsolatedTree::treeForID):
        (WebCore::AXIsolatedTree::treeForPageID):
        (WebCore::AXIsolatedTree::nodeForID const):
        (WebCore::AXIsolatedTree::rootNode):
        (WebCore::AXIsolatedTree::removeNode):
        (WebCore::AXIsolatedTree::appendNodeChanges):
        (WebCore::AXIsolatedTree::applyPendingChanges):
        * accessibility/isolatedtree/AXIsolatedTree.h: Added.
        (WebCore::AXIsolatedTree::treeIdentifier const):
        * accessibility/isolatedtree/AXIsolatedTreeNode.cpp: Added.
            To note: we don't mark the attribute map const because even though attributes don't change after initial creation,
            we may copy an existing node and replace specific values.
        (WebCore::AXIsolatedTreeNode::AXIsolatedTreeNode):
        (WebCore::AXIsolatedTreeNode::create):
        (WebCore::AXIsolatedTreeNode::initializeAttributeData):
        (WebCore::AXIsolatedTreeNode::setProperty):
        (WebCore::AXIsolatedTreeNode::doubleAttributeValue const):
        (WebCore::AXIsolatedTreeNode::unsignedAttributeValue const):
        (WebCore::AXIsolatedTreeNode::boolAttributeValue const):
        (WebCore::AXIsolatedTreeNode::stringAttributeValue const):
        (WebCore::AXIsolatedTreeNode::intAttributeValue const):
        * accessibility/isolatedtree/AXIsolatedTreeNode.h: Added.
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::associateIsolatedTreeNode):
        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (-[WebAccessibilityObjectWrapperBase initWithAccessibilityObject:]):
        (-[WebAccessibilityObjectWrapperBase isolatedTreeNode]):
        (-[WebAccessibilityObjectWrapperBase detach]):
        (-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):
        (-[WebAccessibilityObjectWrapperBase axBackingObject]):
        (-[WebAccessibilityObjectWrapperBase baseAccessibilityDescription]):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper role]):
        (-[WebAccessibilityObjectWrapper subrole]):
        (-[WebAccessibilityObjectWrapper roleDescription]):
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        * dom/Document.cpp:
        (WebCore::Document::pageID const):
        * dom/Document.h:

2019-01-26  Simon Fraser  <simon.fraser@apple.com>

        Allow scrolling tree nodes to exist in a detached state
        https://bugs.webkit.org/show_bug.cgi?id=193754

        Reviewed by Zalan Bujtas.

        One of the (questionable?) design decisions of the scrolling tree is that the tree implementation
        is hidden behind the ScrollingCoordinator interface. That interface only allowed nodes to exist
        in a connected state; attachToStateTree() required a non-zero parent for any node that was not
        the root.

        This makes it impossible to coordinate the hookup of the scrolling tree across frame boundaries;
        the scrolling tree has to have been fully constructed in ancestor frames before subframe nodes
        can be attached. This is a significant difference from compositing, where a subframe can create
        GraphicsLayers which don't have to be parented right away, and actually get parented later via
        a compositing update in the parent frame.

        We want to be able to hook up the scrolling tree via the same code paths as GraphicsLayer
        connection (anything else is too confusing). So we need to be able to instantiate scrolling
        tree nodes in a disconnected state, and attach them later.

        To achieve this, add the notion of "unparented" nodes to ScrollingCoordinator and the ScrollingStateTree.
        Allow clients to create unparented nodes, which can be attached later. ScrollingCoordinator stores
        the roots of unparented subtrees in an owning HashMap. Nodes in unparented trees are still referenced
        by m_stateNodeMap, so it's possible to find them and set state on them.

        Clean up the ScrollingCoordinator interface to remove "state tree" terminology; the state vs. scrolling tree
        is really an implementation detail.

        This also removes the special-casing of ScrollingNodeType::Subframe nodes which ScrollingStateTree stored
        in m_orphanedSubframeNodes; now the unparenting is controlled by the client.

        Currently no code creates unparented nodes so there is no behavior change.

        * dom/Document.cpp:
        (WebCore::Document::setPageCacheState):
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::createNode):
        (WebCore::AsyncScrollingCoordinator::insertNode):
        (WebCore::AsyncScrollingCoordinator::unparentNode):
        (WebCore::AsyncScrollingCoordinator::unparentChildrenAndDestroyNode):
        (WebCore::AsyncScrollingCoordinator::detachAndDestroySubtree):
        (WebCore::AsyncScrollingCoordinator::clearAllNodes):
        (WebCore::AsyncScrollingCoordinator::parentOfNode const):
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        (WebCore::AsyncScrollingCoordinator::attachToStateTree): Deleted.
        (WebCore::AsyncScrollingCoordinator::detachFromStateTree): Deleted.
        (WebCore::AsyncScrollingCoordinator::clearStateTree): Deleted.
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::handleWheelEvent):
        (WebCore::ScrollingCoordinator::createNode):
        (WebCore::ScrollingCoordinator::insertNode):
        (WebCore::ScrollingCoordinator::unparentNode):
        (WebCore::ScrollingCoordinator::unparentChildrenAndDestroyNode):
        (WebCore::ScrollingCoordinator::detachAndDestroySubtree):
        (WebCore::ScrollingCoordinator::clearAllNodes):
        (WebCore::ScrollingCoordinator::parentOfNode const):
        (WebCore::ScrollingCoordinator::childrenOfNode const):
        (WebCore::ScrollingCoordinator::attachToStateTree): Deleted.
        (WebCore::ScrollingCoordinator::detachFromStateTree): Deleted.
        (WebCore::ScrollingCoordinator::clearStateTree): Deleted.
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::removeFromParent):
        (WebCore::ScrollingStateNode::removeChild):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::ScrollingStateTree):
        (WebCore::ScrollingStateTree::createUnparentedNode):
        (WebCore::ScrollingStateTree::insertNode):
        (WebCore::ScrollingStateTree::unparentNode):
        (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):
        (WebCore::ScrollingStateTree::detachAndDestroySubtree):
        (WebCore::ScrollingStateTree::clear):
        (WebCore::ScrollingStateTree::commit):
        (WebCore::ScrollingStateTree::removeNodeAndAllDescendants):
        (WebCore::ScrollingStateTree::recursiveNodeWillBeRemoved):
        (showScrollingStateTree):
        (WebCore::ScrollingStateTree::attachNode): Deleted.
        (WebCore::ScrollingStateTree::detachNode): Deleted.
        * page/scrolling/ScrollingStateTree.h:
        (WebCore::ScrollingStateTree::nodeCount const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):
        (WebCore::RenderLayerCompositor::attachScrollingNode):

2019-01-26  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit the user agent of a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193862
        <rdar://problem/47359292>

        Reviewed by Joseph Pecoraro.

        Test: inspector/page/overrideUserAgent.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::userAgent const):
        (WebCore::FrameLoader::userAgentForJavaScript const):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::applyUserAgentOverride): Added.
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::applyUserAgentOverrideImpl): Added.

        * inspector/agents/InspectorPageAgent.h:
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::disable):
        (WebCore::InspectorPageAgent::overrideUserAgent): Added.
        (WebCore::InspectorPageAgent::applyUserAgentOverride): Added.

2019-01-26  Zalan Bujtas  <zalan@apple.com>

        [LFC] The initial values for top/bottom in contentHeightForFormattingContextRoot should not be 0.
        https://bugs.webkit.org/show_bug.cgi?id=193867

        Reviewed by Antti Koivisto.

        The initial content top/bottom value is the border top + padding top.

        This is only a problem when the box has float children only. While computing the height using the bottom-most float,
        we call "top = std::min(floatTop, top)". With 0 initial top value, this returns an incorrect result when the box
        has (top)border/padding.

        Test: fast/block/block-only/abs-pos-with-border-padding-and-float-child.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):

2019-01-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Ignore last inflow child's collapsed through margin after when computing containing block's height.
        https://bugs.webkit.org/show_bug.cgi?id=193865

        Reviewed by Antti Koivisto.

        Height computation ->
        // 10.6.3 Block-level non-replaced elements in normal flow when 'overflow' computes to 'visible'
        // ...the bottom edge of the bottom (possibly collapsed) margin of its last in-flow child, if the child's bottom
        // margin does not collapse with the element's bottom margin

        <div style="border: 1px solid green">
          <div style="margin-top: 100px;"></div>
        </div>

        When the child vertical margins collapse through (margin-top = margin-bottom = 100px), the bottom edge of the bottom margin is
        the same as the bottom edge of the top margin which is alredy taken into use while positioning so technically the bottom margin value should be ignored. 

        Test: fast/block/margin-collapse/collapsed-through-child-simple.html

        * layout/MarginTypes.h:
        (WebCore::Layout::UsedVerticalMargin::isCollapsedThrough const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::hasCollapsedThroughMargin const):

2019-01-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] marginAfterCollapsesWithParentMarginAfter/marginAfterCollapsesWithLastInFlowChildMarginAfter should check for border/padding after values.
        https://bugs.webkit.org/show_bug.cgi?id=193864

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter):

2019-01-26  Zalan Bujtas  <zalan@apple.com>

        [LFC] Box::nextInFlowOrFloatingSibling() should always return sibling floats as well.
        https://bugs.webkit.org/show_bug.cgi?id=193855

        Reviewed by Antti Koivisto.

        Use iterative algorithm to find next/previous siblings.

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::nextInFlowOrFloatingSibling const):

2019-01-25  Ryosuke Niwa  <rniwa@webkit.org>

        Need a mechanism to override navigator.userAgent
        https://bugs.webkit.org/show_bug.cgi?id=193762
        <rdar://problem/47504939>

        Reviewed by Brent Fulgham.

        Added the ability to specify user agent string just for navigator.userAgent via DocumentLoader.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setCustomJavaScriptUserAgent):
        (WebCore::DocumentLoader::customJavaScriptUserAgent const):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::userAgentForJavaScript const):
        * loader/FrameLoader.h:
        * page/Navigator.cpp:
        (WebCore::Navigator::userAgent const):

2019-01-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit page settings on a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193813
        <rdar://problem/47359510>

        Reviewed by Joseph Pecoraro.

        Test: inspector/page/overrideSetting.html

        * page/Settings.yaml:
        * Scripts/GenerateSettings.rb:
        * Scripts/SettingsTemplates/Settings.cpp.erb:
        * Scripts/SettingsTemplates/Settings.h.erb:
        Add support for an `inspectorOverride` boolean value for each setting that will take
        precedence over the actual `Setting`'s value when set.

        * inspector/agents/InspectorPageAgent.h:
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::disable):
        (WebCore::InspectorPageAgent::overrideSetting): Added.

        * inspector/InspectorFrontendHost.idl:
        * inspector/InspectorFrontendHost.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::isRemote const): Added.
        * inspector/InspectorFrontendClient.h:
        (WebCore::InspectorFrontendClient::isRemote const): Added.
        * inspector/InspectorFrontendClientLocal.h:
        (WebCore::InspectorFrontendClientLocal::isRemote const): Added.

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Document::updateMainArticleElementAfterLayout() should be a no-op when no client depends on knowing the main article element
        https://bugs.webkit.org/show_bug.cgi?id=193843

        Reviewed by Zalan Bujtas.

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

        This function currently does a bit of wasted work after every layout, on clients that don't listen to the
        "significant rendered text" layout milestone and therefore don't need to guess the main article element. Simply
        don't bother keeping the main article element up to date in this scenario by bailing from
        FrameView::updateHasReachedSignificantRenderedTextThreshold if the client doesn't care about the significant
        rendered text milestone.

        * page/FrameView.cpp:
        (WebCore::FrameView::updateHasReachedSignificantRenderedTextThreshold):

2019-01-25  Jer Noble  <jer.noble@apple.com>

        <video> elements not in the DOM should be allowed to AirPlay
        https://bugs.webkit.org/show_bug.cgi?id=193837
        <rdar://42559491>

        Reviewed by Eric Carlson.

        Test: media/airplay-allows-buffering.html

        Some websites will switch between <video> elements backed by MSE to one backed by
        a media file in order to implement an AirPlay control. But when a <video> element is
        removed from the DOM and paused, further buffering is blocked. For some ports (namely
        Cocoa ones), this keeps AirPlay from engaging. Relax this buffering restriction for
        elements who have been asked to play wirelessly, but whose wireless playback has not
        started yet.

        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::dataBufferingPermitted const):
        (WebCore::MediaElementSession::setShouldPlayToPlaybackTarget):

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update Xcode projects with "Check .xcfilelists" build phase
        https://bugs.webkit.org/show_bug.cgi?id=193790
        <rdar://problem/47201374>

        Reviewed by Alex Christensen.

        Support for XCBuild includes specifying inputs and outputs to various
        Run Script build phases. These inputs and outputs are specified as
        .xcfilelist files. Once created, these .xcfilelist files need to be
        kept up-to-date. In order to check that they are up-to-date or not,
        add an Xcode build step that invokes an external script that performs
        the checking. If the .xcfilelists are found to be out-of-date, update
        them, halt the build, and instruct the developer to restart the build
        with up-to-date files.

        At this time, the checking and regenerating is performed only if the
        WK_ENABLE_CHECK_XCFILELISTS environment variable is set to 1. People
        who want to use this facility can set this variable and test out the
        checking/regenerating. Once it seems like there are no egregious
        issues that upset a developer's workflow, we'll unconditionally enable
        this facility.

        No new tests since there should be no observable behavior difference.

        * Scripts/check-xcfilelists.sh: Added.
        * WebCore.xcodeproj/project.pbxproj:

2019-01-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Exclude Debugger Threads from CPU Usage values in Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=193796
        <rdar://problem/47532910>

        Reviewed by Devin Rousso.

        * page/ResourceUsageData.h:
        * inspector/agents/InspectorCPUProfilerAgent.cpp:
        (WebCore::InspectorCPUProfilerAgent::collectSample):
        Show the CPU usage without debugger threads in the Web Inspector's timeline.

        * page/ResourceUsageThread.h:
        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::ResourceUsageThread::platformSaveStateBeforeStarting):
        For OS(DARWIN) ports, when starting to observe resource usage,
        we grab the mach_port_t of SamplingProfiler on the main thread
        in a thread safe way. For our purposes (Web Inspector timelines),
        this will be good enough to identify the SamplingProfiler thread
        during timeline recording. The SamplingProfiler thread won't change
        during a timeline recording and recording start/stops will never
        miss the SamplingProfiler changing.

        (WebCore::filterThreads):
        (WebCore::threadSendRights):
        (WebCore::threadSendRightsExcludingDebuggerThreads):
        (WebCore::cpuUsage):
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        Calculate CPU usage twice, the second time excluding some threads.

        * page/linux/ResourceUsageThreadLinux.cpp:
        (WebCore::ResourceUsageThread::platformSaveStateBeforeStarting):
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        Stubs for linux ports.

2019-01-25  Zalan Bujtas  <zalan@apple.com>

        Remove FrameView::m_significantRenderedTextMilestonePending
        https://bugs.webkit.org/show_bug.cgi?id=193842

        Reviewed by Wenson Hsieh.

        Currently we keep processing the incoming text content until after the "SignificantRenderedTextMilestone" has been reached.
        We can actually stop doing it right when the text content is above the threshold (regardless of whether all the conditions are met for the milestone).
        This patch also ensures that we don't update Document::m_mainArticleElement once the threshold is reached.

        * page/FrameView.cpp:
        (WebCore::FrameView::resetLayoutMilestones):
        (WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount):
        (WebCore::FrameView::hasReachedSignificantRenderedTextThreashold):
        (WebCore::FrameView::qualifiesAsSignificantRenderedText const):
        (WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):
        (WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded): Deleted.
        * page/FrameView.h:

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update Xcode projects with "Apply Configuration to XCFileLists" build target
        https://bugs.webkit.org/show_bug.cgi?id=193781
        <rdar://problem/47201153>

        Reviewed by Alex Christensen.

        Part of generating the .xcfilelists used as part of adopting XCBuild
        includes running `make DerivedSources.make` from a standalone script.
        It’s important for this invocation to have the same environment as
        when the actual build invokes `make DerivedSources.make`. If the
        environments are different, then the two invocations will provide
        different results. In order to get the same environment in the
        standalone script, have the script launch xcodebuild targeting the
        "Apply Configuration to XCFileLists" build target, which will then
        re-invoke our standalone script. The script is now running again, this
        time in an environment with all workspace, project, target, xcconfig
        and other environment variables established.

        The "Apply Configuration to XCFileLists" build target accomplishes
        this task via a small embedded shell script that consists only of:

            eval "${WK_SUBLAUNCH_SCRIPT_PARAMETERS[@]}"

        The process that invokes "Apply Configuration to XCFileLists" first
        sets WK_SUBLAUNCH_SCRIPT_PARAMETERS to an array of commands to be
        evaluated and exports it into the shell environment. When xcodebuild
        is invoked, it inherits the value of this variable and can `eval` the
        contents of that variable. Our external standalone script can then set
        WK_SUBLAUNCH_SCRIPT_PARAMETERS to the path to itself, along with a set
        of command-line parameters needed to restart itself in the appropriate
        state.

        No new tests since there should be no observable behavior difference.

        * WebCore.xcodeproj/project.pbxproj:

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update WebKitAdditions.xcconfig with correct order of variable definitions
        https://bugs.webkit.org/show_bug.cgi?id=193793
        <rdar://problem/47532439>

        Reviewed by Alex Christensen.

        XCBuild changes the way xcconfig variables are evaluated. In short,
        all config file assignments are now considered in part of the
        evaluation. When using the new build system and an .xcconfig file
        contains multiple assignments of the same build setting:

        - Later assignments using $(inherited) will inherit from earlier
          assignments in the xcconfig file.
        - Later assignments not using $(inherited) will take precedence over
          earlier assignments. An assignment to a more general setting will
          mask an earlier assignment to a less general setting. For example,
          an assignment without a condition ('FOO = bar') will completely mask
          an earlier assignment with a condition ('FOO[sdk=macos*] = quux').

        This affects some of our .xcconfig files, in that sometimes platform-
        or sdk-specific definitions appear before the general definitions.
        Under the new evaluations rules, the general definitions alway take
        effect because they always overwrite the more-specific definitions. The
        solution is to swap the order, so that the general definitions are
        established first, and then conditionally overwritten by the
        more-specific definitions.

        No new tests since there should be no observable behavior difference.

        * Configurations/Base.xcconfig:
        * Configurations/Version.xcconfig:

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update existing .xcfilelists
        https://bugs.webkit.org/show_bug.cgi?id=193791
        <rdar://problem/47201706>

        Reviewed by Alex Christensen.

        Many .xcfilelist files were added in r238824 in order to support
        XCBuild. Update these with recent changes to the set of build files
        and with the current generate-xcfilelist script.

        No new tests since there should be no observable behavior difference.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * UnifiedSources-input.xcfilelist:
        * UnifiedSources-output.xcfilelist:

2019-01-25  Brent Fulgham  <bfulgham@apple.com>

        Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=193297
        <rdar://problem/47158841>

        Reviewed by Alex Christensen.

        Trigger logging to the UIProcess when the ResourceLoadObserver is used in the NetworkProcess.

        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::connect): Notify NetworkProcess a connection was made to a resource.
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::logSubresourceLoading): Notify NetworkProcess of the load.
        (WebCore::ResourceLoadObserver::logWebSocketLoading): Ditto.
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): Ditto.

2019-01-25  Zalan Bujtas  <zalan@apple.com>

        Remove FrameView::m_firstVisuallyNonEmptyLayoutCallbackPending
        https://bugs.webkit.org/show_bug.cgi?id=193835

        Reviewed by Simon Fraser.

        Currently updateIsVisuallyNonEmpty() is called from fireLayoutRelatedMilestonesIfNeeded() and from the incrementVisually*() functions.
        By calling it from incrementVisually*() and setting the m_isVisuallyNonEmpty flag to true early does not have any impact on when the milestone is fired.
        The milestone firing, as part of the post-layout tasks is triggered by a subsequent layout.
        However having multiple callers of updateIsVisuallyNonEmpty() requires an extra boolen (m_firstVisuallyNonEmptyLayoutCallbackPending) to maintain.
        Also calling updateIsVisuallyNonEmpty() repeatedly could be costly (with the current threshold of 200 characters, I don't think it is though).

        This patch removes m_firstVisuallyNonEmptyLayoutCallbackPending and moves the logic from updateIsVisuallyNonEmpty() to fireLayoutRelatedMilestonesIfNeeded().

        * page/FrameView.cpp:
        (WebCore::FrameView::resetLayoutMilestones):
        (WebCore::FrameView::loadProgressingStatusChanged):
        (WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount):
        (WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):
        (WebCore::FrameView::updateIsVisuallyNonEmpty): Deleted.
        * page/FrameView.h:
        (WebCore::FrameView::incrementVisuallyNonEmptyPixelCount):

2019-01-25  David Kilzer  <ddkilzer@apple.com>

        Move soft-linking of Lookup.framework out of LookupSPI.h
        <https://webkit.org/b/193815>

        Reviewed by Tim Horton.

        * editing/cocoa/DictionaryLookup.mm:
        - Remove unused header.

        * editing/mac/DictionaryLookupLegacy.mm:
        (WebCore::tokenRange):
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::hidePopup):
        - Move soft-linking to LookupSoftLink.{h,mm}.

        * platform/ios/ValidationBubbleIOS.mm:
        (WebCore::ValidationBubble::show):
        - Update for changes to UIKitSoftLink.{h,mm} now that
          UIAccessibilityAnnouncementNotification is using
          SOFT_LINK_CONSTANT*().

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Rename some WebKit-internal functions and variables that reference "data interaction"
        https://bugs.webkit.org/show_bug.cgi?id=193829

        Reviewed by Tim Horton.

        No change in behavior.

        * page/EventHandler.h:
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::tryToBeginDragAtPoint):
        (WebCore::EventHandler::tryToBeginDataInteractionAtPoint): Deleted.
        * platform/ios/WebItemProviderPasteboard.mm:
        (linkTemporaryItemProviderFilesToDropStagingDirectory):

2019-01-25  Jon Davis  <jond@apple.com>

        Updated feature status for several features 
        https://bugs.webkit.org/show_bug.cgi?id=193794

        Reviewed by Joseph Pecoraro.
        
        Updated feature status for the following: CSS Font Display,
        CSS Text Decoration Level 4, SVG in OpenType Fonts, Web SQL,
        File and Directory Entries API, MediaStream Recording API,
        Readable Streams, Subresource Integrity, Visual Viewport API,
        and Web Audio.

        * features.json:

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Need a way for JavaScript (or bundle) code to participate in undo
        https://bugs.webkit.org/show_bug.cgi?id=190009
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Finish hooking up `UndoManager::addItems()` to CustomUndoStep.

        Tests: editing/undo-manager/undo-manager-add-item-exceptions.html
               editing/undo-manager/undo-manager-add-item.html
               editing/undo-manager/undo-manager-delete-stale-undo-items.html
               editing/undo-manager/undo-manager-item-labels.html
               editing/undo-manager/undo-manager-undo-redo-after-garbage-collection.html

        * editing/CompositeEditCommand.h:
        * editing/CustomUndoStep.cpp:
        (WebCore::CustomUndoStep::didRemoveFromUndoManager):

        Add a method to invalidate CustomUndoStep. This clears out the pointer to the undo item, and also invalidates
        the UndoItem, removing it from its UndoManager.

        * editing/CustomUndoStep.h:
        * editing/Editor.cpp:
        (WebCore::Editor::registerCustomUndoStep):

        Add a helper method to register a CustomUndoStep as a platform undoable step.

        * editing/Editor.h:
        * editing/UndoStep.h:
        * page/UndoItem.h:
        (WebCore::UndoItem::undoManager const):
        * page/UndoManager.cpp:
        (WebCore::UndoManager::addItem):

        Create a CustomUndoStep with the given UndoItem, and register it with the platform undo manager.

        * page/UndoManager.h:
        * page/UndoManager.idl:

        Mark addItem() as capable of throwing exceptions.

2019-01-25  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Add "clear" to static position computation.
        https://bugs.webkit.org/show_bug.cgi?id=193824

        Reviewed by Antti Koivisto.

        When clear property is set and floats are present, we have to estimate and set the box's vertical position during
        static positioning to be able to properly layout its subtree.

        <div style="float: left; width: 100px; height: 100px;"></div>
        <div style="clear: left;">
          <div style="float: left; width: 100px; height: 100px;"></div>
        </div>

        In the above example since the second float's parent clears the first float, the second float is positioned below
        the first float. If we didn't push down (clear) the box, the float child would get placed next to the first float.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layout const):
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const): Deleted.
        (WebCore::Layout::BlockFormattingContext::adjustedVerticalPositionAfterMarginCollapsing const): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
        * layout/displaytree/DisplayBox.h:

2019-01-25  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Move positive/negative margin value updating to a dedicated function
        https://bugs.webkit.org/show_bug.cgi?id=193812

        Reviewed by Antti Koivisto.

        Move update logic to BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues().

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-25  Antoine Quint  <graouts@apple.com>

        Use ENABLE_POINTER_EVENTS for the touch-action property
        https://bugs.webkit.org/show_bug.cgi?id=193819

        Reviewed by Antti Koivisto.

        Since we've added an ENABLE_POINTER_EVENTS we should be using it for anything related to the implementation of the
        Pointer Events specification of which the touch-action property is a part.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSPrimitiveValueMappings.h:
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):
        * dom/Element.cpp:
        (WebCore::Element::allowsDoubleTapGesture const):
        * platform/TouchAction.h:
        * rendering/style/RenderStyle.h:
        * rendering/style/StyleRareNonInheritedData.cpp:
        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
        (WebCore::StyleRareNonInheritedData::operator== const):
        * rendering/style/StyleRareNonInheritedData.h:

2019-01-24  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Refactor MarginCollapse::updateCollapsedMarginAfter
        https://bugs.webkit.org/show_bug.cgi?id=193807

        Reviewed by Simon Fraser.

        Rename updateCollapsedMarginAfter to updateMarginAfterForPreviousSibling and make the margin updating logic more explicit.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::updateCollapsedMarginAfter): Deleted.

2019-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CPU Usage Timeline
        https://bugs.webkit.org/show_bug.cgi?id=193730
        <rdar://problem/46797201>

        Reviewed by Devin Rousso.

        Test: inspector/cpu-profiler/tracking.html

        * Sources.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:
        New files.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::createLazyAgents):
        * inspector/InstrumentingAgents.cpp:
        (WebCore::InstrumentingAgents::reset):
        * inspector/InstrumentingAgents.h:
        (WebCore::InstrumentingAgents::inspectorCPUProfilerAgent const):
        (WebCore::InstrumentingAgents::setInspectorCPUProfilerAgent):
        Create and track the CPUProfilerAgent.

        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::toggleInstruments):
        (WebCore::InspectorTimelineAgent::toggleCPUInstrument):
        Handle backend auto-start of the CPU instrument / timeline.

        * inspector/agents/InspectorCPUProfilerAgent.h:
        * inspector/agents/InspectorCPUProfilerAgent.cpp: Added.
        (WebCore::InspectorCPUProfilerAgent::InspectorCPUProfilerAgent):
        (WebCore::InspectorCPUProfilerAgent::didCreateFrontendAndBackend):
        (WebCore::InspectorCPUProfilerAgent::willDestroyFrontendAndBackend):
        (WebCore::InspectorCPUProfilerAgent::startTracking):
        (WebCore::InspectorCPUProfilerAgent::stopTracking):
        (WebCore::InspectorCPUProfilerAgent::collectSample):
        CPUProfilerAgent uses the ResourceUsageThread to get CPU data.

        * inspector/agents/InspectorTimelineAgent.h:
        * inspector/agents/InspectorMemoryAgent.cpp:
        (WebCore::InspectorMemoryAgent::startTracking):
        (WebCore::InspectorMemoryAgent::collectSample):
        Update the MemoryAgent to collect only Memory data and use a more accurate sample timestamp.

        * page/ResourceUsageData.h:
        * page/ResourceUsageThread.cpp:
        (WebCore::ResourceUsageThread::addObserver):
        (WebCore::ResourceUsageThread::removeObserver):
        (WebCore::ResourceUsageThread::notifyObservers):
        (WebCore::ResourceUsageThread::recomputeCollectionMode):
        (WebCore::ResourceUsageThread::threadBody):
        * page/ResourceUsageThread.h:
        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::ResourceUsageOverlay::platformInitialize):
        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        (WebCore::ResourceUsageThread::platformCollectMemoryData):
        (WebCore::ResourceUsageThread::platformThreadBody): Deleted.
        * page/linux/ResourceUsageOverlayLinux.cpp:
        (WebCore::ResourceUsageOverlay::platformInitialize):
        * page/linux/ResourceUsageThreadLinux.cpp:
        (WebCore::ResourceUsageThread::platformCollectCPUData):
        (WebCore::ResourceUsageThread::platformCollectMemoryData):
        (WebCore::ResourceUsageThread::platformThreadBody):
        Give each observer their own collection mode. The ResourceUsageThread
        will then collect data that is the union of all of the active observers.
        This allows collecting CPU and Memory data separately, reducing the cost
        of each when gathered individually.

2019-01-24  Charles Vazac  <cvazac@akamai.com>

        Implement PerformanceObserver.supportedEntryTypes
        https://bugs.webkit.org/show_bug.cgi?id=193428

        PerformanceObserver.supportedEntryTypes should return an array of
        entryTypes that can be observed per specification
        https://w3c.github.io/performance-timeline/#supportedentrytypes-attribute

        Reviewed by Joseph Pecoraro.

        This is covered by web-platform-tests
        LayoutTests/imported/w3c/web-platform-tests/resource-timing/supported_resource_type.*.html.

        * page/PerformanceObserver.cpp:
        (WebCore::PerformanceObserver::supportedEntryTypes):
        * page/PerformanceObserver.h:
        * page/PerformanceObserver.idl:

2019-01-24  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240446.

        Casued 5 API failures

        Reverted changeset:

        "Activate the WebResourceLoadStatisticsStore in the
        NetworkProcess and deactivate it in the UIProcess."
        https://bugs.webkit.org/show_bug.cgi?id=193297
        https://trac.webkit.org/changeset/240446

2019-01-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Unable to make a selection in jsfiddle.net using arrow keys when requesting desktop site
        https://bugs.webkit.org/show_bug.cgi?id=193758
        <rdar://problem/43614978>

        Reviewed by Tim Horton.

        CodeMirror's script adds a repeating timer that periodically normalizes the logical selection in the editor
        (this is distinct from the actual DOM selection, which is inside a hidden textarea element). This script defines
        a helper method to select all the text inside of a text form control, called `selectInput`, which normally
        invokes `node.select()`. However, in the case of iOS, the script works around broken `select()` behavior by
        setting `selectionStart` and `selectionEnd` to encompass all the content in the form control. When requesting
        the desktop version of the site, CodeMirror no longer attempts to apply its iOS workaround.

        This iOS-specific behavior was introduced to fix <rdar://problem/4901923>. However, the original bug no longer
        reproduces even without this quirk. To fix CodeMirror, we make two adjustments:

        1.  Roll out this ancient demo hack, in favor of standardized behavior.
        2.  Note that `select()` is also used when focusing an input. However, when focusing an input element on iOS, we
            want to match the platform (i.e. UITextField behavior) and move focus to the end of the text field. To
            achieve this, we introduce a new helper on HTMLInputElement that is called when setting the default
            selection of a text input after focus; on iOS, this helper method moves the selection to the end of the
            input, but everywhere else, it selects all the text in the input element.

        This causes 6 existing layout tests to begin passing on iOS.

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::updateFocusAppearance):
        (WebCore::HTMLInputElement::setDefaultSelectionAfterFocus):
        * html/HTMLInputElement.h:
        * html/HTMLTextFormControlElement.cpp:
        (WebCore::HTMLTextFormControlElement::select):

2019-01-24  Jer Noble  <jer.noble@apple.com>

        Fix leak of AVSampleBufferRenderSynchronizer boundaryObserver object.
        https://bugs.webkit.org/show_bug.cgi?id=193778

        Reviewed by Jon Lee.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::performTaskAtMediaTime):

2019-01-24  Zalan Bujtas  <zalan@apple.com>

        DidFirstVisuallyNonEmptyLayout milestone should always fire at some point.
        https://bugs.webkit.org/show_bug.cgi?id=193741
        <rdar://problem/47135030>

        Reviewed by Antti Koivisto and Simon Fraser.

        fireLayoutRelatedMilestonesIfNeeded() is part of the post-layout tasks. In certain cases when
            1. the received data is not "contentful" yet
            2. and we are expecting some more (loading is not complete yet)
            3. but no layout is initiated anymore
        nothing triggers the milestone firing.

        This patch ensures that we fire the DidFirstVisuallyNonEmptyLayout when the frame load is complete unless we already did.

        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        (WebCore::FrameView::loadProgressingStatusChanged):

2019-01-24  Brent Fulgham  <bfulgham@apple.com>

        Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=193297
        <rdar://problem/47158841>

        Reviewed by Alex Christensen.

        Trigger logging to the UIProcess when the ResourceLoadObserver is used in the NetworkProcess.

        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::connect): Notify NetworkProcess a connection was made to a resource.
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback): Added.
        (WebCore::ResourceLoadObserver::logSubresourceLoading): Notify NetworkProcess of the load.
        (WebCore::ResourceLoadObserver::logWebSocketLoading): Ditto.
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): Ditto.

2019-01-24  John Wilander  <wilander@apple.com>

        Add Ad Click Attribution as an internal/experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=193685
        <rdar://problem/47450399>

        Reviewed by Brent Fulgham.

        Test: http/tests/adClickAttribution/anchor-tag-attributes-reflect.html

        * html/HTMLAnchorElement.h:
        * html/HTMLAnchorElement.idl:
        * html/HTMLAttributeNames.in:
            Addeed two new experimental attributes:
            - adcampaignid: Ad campaign ID.
            - addestination: Ad link destination site.
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::adClickAttributionEnabled const):
        (WebCore::RuntimeEnabledFeatures::setAdClickAttributionEnabled):
        * page/Settings.yaml:

2019-01-24  Youenn Fablet  <youenn@apple.com>

        Use MonotonicTime in WorkerRunLoop
        https://bugs.webkit.org/show_bug.cgi?id=193417

        Reviewed by Saam Barati.

        Condition is based on MonotonicTime so MessageQueue should also be based on MonotonicTime.
        Ditto for WorkerRunLoop.
        No easy way to test the change which should not be easily observable.

        * workers/WorkerRunLoop.cpp:
        (WebCore::WorkerRunLoop::runInMode):

2019-01-24  Ross Kirsling  <ross.kirsling@sony.com>

        Move FileSystem to WTF
        https://bugs.webkit.org/show_bug.cgi?id=193602

        Reviewed by Yusuke Suzuki.

        * Modules/encryptedmedia/CDM.cpp:
        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
        * Modules/entriesapi/DOMFileSystem.cpp:
        * Modules/entriesapi/FileSystemEntry.cpp:
        * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        * Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
        * Modules/indexeddb/shared/InProcessIDBServer.cpp:
        * Modules/webdatabase/DatabaseTracker.cpp:
        * Modules/webdatabase/OriginLock.cpp:
        * Modules/webdatabase/OriginLock.h:
        * Modules/webdatabase/cocoa/DatabaseManagerCocoa.mm:
        * PlatformMac.cmake:
        * PlatformPlayStation.cmake:
        * PlatformWin.cmake:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/GCController.cpp:
        * dom/DataTransferItem.cpp:
        * editing/cocoa/WebContentReaderCocoa.mm:
        * fileapi/File.cpp:
        * fileapi/FileCocoa.mm:
        * html/FileInputType.cpp:
        * html/FileListCreator.cpp:
        * loader/appcache/ApplicationCacheHost.cpp:
        * loader/appcache/ApplicationCacheStorage.cpp:
        * page/Page.cpp:
        * page/SecurityOrigin.cpp:
        * page/SecurityOriginData.cpp:
        * platform/FileHandle.h:
        * platform/FileStream.cpp:
        * platform/FileStream.h:
        * platform/SharedBuffer.h:
        * platform/SourcesGLib.txt:
        * platform/cocoa/FileMonitorCocoa.mm:
        * platform/glib/FileMonitorGLib.cpp:
        * platform/glib/SharedBufferGlib.cpp:
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        * platform/ios/QuickLook.mm:
        * platform/ios/WebItemProviderPasteboard.mm:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        * platform/network/BlobDataFileReference.cpp:
        * platform/network/BlobRegistryImpl.cpp:
        * platform/network/BlobResourceHandle.cpp:
        * platform/network/FormData.cpp:
        * platform/network/cf/FormDataStreamCFNet.cpp:
        * platform/network/cocoa/ResourceRequestCocoa.mm:
        * platform/network/curl/CookieJarDB.cpp:
        * platform/network/curl/CurlCacheEntry.h:
        * platform/network/curl/CurlCacheManager.cpp:
        * platform/network/curl/CurlFormDataStream.h:
        * platform/network/curl/CurlRequest.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        * platform/network/curl/ResourceHandleCurl.cpp:
        * platform/network/mac/BlobDataFileReferenceMac.mm:
        * platform/network/soup/ResourceHandleSoup.cpp:
        * platform/network/soup/SoupNetworkSession.cpp:
        * platform/posix/SharedBufferPOSIX.cpp:
        * platform/sql/SQLiteFileSystem.cpp:
        * platform/text/hyphen/HyphenationLibHyphen.cpp:
        * platform/win/SearchPopupMenuDB.cpp:
        * rendering/RenderTheme.cpp:
        * rendering/RenderThemeGtk.cpp:
        * rendering/RenderThemeWin.cpp:
        * workers/service/server/RegistrationDatabase.cpp:

2019-01-24  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] MarginCollapse::collapsedVerticalValues should not return computed non-collapsed values.
        https://bugs.webkit.org/show_bug.cgi?id=193768

        Reviewed by Antti Koivisto.

        When it comes to the actual used values it does not really matter, only from correctness point of view.
        (This patch also moves some checks to their correct place.)

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):

2019-01-23  Simon Fraser  <simon.fraser@apple.com>

        Add "frame hosting" nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=193753

        Reviewed by Antti Koivisto.

        When the scrolling tree crosses frame boundaries, mutations in the parent frame currently
        require the iframe's scrolling node to get reparented in a new ancestor, which requires
        a layer tree walk of the parent frame. This is error-prone, and not very future-proof.

        Fix this by introducing "frame hosting" scrolling tree nodes. These are mostly inert
        nodes that are owned by the RenderIFrame's layer backing in the parent frame, and exist
        to provide a consistent parent node for the subframe's scrolling node.

        This patch adds the node types, but does not instantiate them yet.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingCoordinator.h:
        * page/scrolling/ScrollingStateFrameHostingNode.cpp: Added.
        (WebCore::ScrollingStateFrameHostingNode::create):
        (WebCore::ScrollingStateFrameHostingNode::ScrollingStateFrameHostingNode):
        (WebCore::ScrollingStateFrameHostingNode::clone):
        (WebCore::ScrollingStateFrameHostingNode::dumpProperties const):
        * page/scrolling/ScrollingStateFrameHostingNode.h: Added.
        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::isFrameHostingNode const):
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::createNode):
        * page/scrolling/ScrollingTreeFrameHostingNode.cpp: Added.
        (WebCore::ScrollingTreeFrameHostingNode::create):
        (WebCore::ScrollingTreeFrameHostingNode::ScrollingTreeFrameHostingNode):
        (WebCore::ScrollingTreeFrameHostingNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreeFrameHostingNode::updateLayersAfterAncestorChange):
        (WebCore::ScrollingTreeFrameHostingNode::dumpProperties const):
        * page/scrolling/ScrollingTreeFrameHostingNode.h: Added.
        * page/scrolling/ScrollingTreeNode.h:
        (WebCore::ScrollingTreeNode::isFrameHostingNode const):
        * page/scrolling/ios/ScrollingTreeIOS.cpp:
        (WebCore::ScrollingTreeIOS::createScrollingTreeNode):
        * page/scrolling/mac/ScrollingTreeMac.cpp:
        (ScrollingTreeMac::createScrollingTreeNode):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::~RenderLayerBacking):
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
        (WebCore::operator<<):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::scrollCoordinationRoleForNodeType):
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerWithRole):
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
        * rendering/RenderLayerCompositor.h:

2019-01-24  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Enable media element volume on iPad
        https://bugs.webkit.org/show_bug.cgi?id=193745
        <rdar://problem/47452297>

        Reviewed by Jer Noble.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::setVolume):
        (WebCore::HTMLMediaElement::mediaPlayerVolumeChanged):
        (WebCore::HTMLMediaElement::updateVolume):

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVolume):

2019-01-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Support JPEG 2000 images
        https://bugs.webkit.org/show_bug.cgi?id=186272

        Reviewed by Žan Doberšek.

        Add JPEG2000ImageDecoder to support JPEG2000 images using OpenJPEG. For now only SRGB and SYCC color spaces are
        supported.

        * platform/ImageDecoders.cmake:
        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::supportedImageMIMETypes):
        * platform/image-decoders/ScalableImageDecoder.cpp:
        (WebCore::ScalableImageDecoder::create):
        * platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp: Added.
        (WebCore::syccToRGB):
        (WebCore::sycc444ToRGB):
        (WebCore::sycc422ToRGB):
        (WebCore::sycc420ToRGB):
        (WebCore::JPEG2000ImageDecoder::JPEG2000ImageDecoder):
        (WebCore::JPEG2000ImageDecoder::frameBufferAtIndex):
        (WebCore::JPEG2000ImageDecoder::decode):
        * platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.h: Added.

2019-01-23  Simon Fraser  <simon.fraser@apple.com>

        Change some RenderLayerCompositor functions to use references
        https://bugs.webkit.org/show_bug.cgi?id=193760

        Reviewed by Zalan Bujtas.

        RenderWidget* -> RenderWidget&

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateAfterWidgetResize):
        (WebCore::RenderLayerBacking::updateConfiguration):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::updateBacking):
        (WebCore::RenderLayerCompositor::frameContentsCompositor):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        * rendering/RenderLayerCompositor.h:

2019-01-23  Benjamin Poulain  <benjamin@webkit.org>

        <rdar://problem/27686430> Revert workaround AVPlayer.setMuted bug on macOS
        https://bugs.webkit.org/show_bug.cgi?id=193742

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        The original bug was fixed, see radar: rdar://problem/27686430

2019-01-23  Sihui Liu  <sihui_liu@apple.com>

        Clean up IndexedDB files between tests
        https://bugs.webkit.org/show_bug.cgi?id=192796
        <rdar://problem/46824999>

        Reviewed by Geoffrey Garen.

        We should clean up the IndexedDB files between tests to make sure each IDB test is independent of others.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::transactionCompleted):

2019-01-23  Oriol Brufau  <obrufau@igalia.com>

        Add CSS Logical spec to features.json
        https://bugs.webkit.org/show_bug.cgi?id=193717

        Reviewed by Manuel Rego Casasnovas.

        * features.json:

2019-01-22  Conrad Shultz  <conrad_shultz@apple.com>

        Clean up USE(WEB_THREAD)
        https://bugs.webkit.org/show_bug.cgi?id=193698

        Rubber-stamped by Tim Horton.

        * page/CaptionUserPreferencesMediaAF.cpp:
        (WebCore::userCaptionPreferencesChangedNotificationCallback):
        * platform/cf/MainThreadSharedTimerCF.cpp:
        (WebCore::applicationDidBecomeActive):
        * platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
        (WebCore::dispatchToMainThread):
        * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:
        (-[WebCoreTextTrackRepresentationCocoaHelper observeValueForKeyPath:ofObject:change:context:]):
        * platform/ios/LegacyTileCache.mm:
        (WebCore::LegacyTileCache::layoutTiles):
        (WebCore::LegacyTileCache::setTilingMode):
        * platform/ios/WebCoreMotionManager.mm:
        (-[WebCoreMotionManager sendAccelerometerData:]):
        (-[WebCoreMotionManager sendMotionData:withHeading:]):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::requestUpdateInlineRect):
        (VideoFullscreenControllerContext::requestVideoContentLayer):
        (VideoFullscreenControllerContext::returnVideoContentLayer):
        (VideoFullscreenControllerContext::didSetupFullscreen):
        (VideoFullscreenControllerContext::willExitFullscreen):
        (VideoFullscreenControllerContext::didExitFullscreen):
        (VideoFullscreenControllerContext::didCleanupFullscreen):
        (VideoFullscreenControllerContext::fullscreenMayReturnToInline):
        (VideoFullscreenControllerContext::requestFullscreenMode):
        (VideoFullscreenControllerContext::setVideoLayerFrame):
        (VideoFullscreenControllerContext::setVideoLayerGravity):
        (VideoFullscreenControllerContext::fullscreenModeChanged):
        (VideoFullscreenControllerContext::play):
        (VideoFullscreenControllerContext::pause):
        (VideoFullscreenControllerContext::togglePlayState):
        (VideoFullscreenControllerContext::toggleMuted):
        (VideoFullscreenControllerContext::setMuted):
        (VideoFullscreenControllerContext::setVolume):
        (VideoFullscreenControllerContext::setPlayingOnSecondScreen):
        (VideoFullscreenControllerContext::beginScrubbing):
        (VideoFullscreenControllerContext::endScrubbing):
        (VideoFullscreenControllerContext::seekToTime):
        (VideoFullscreenControllerContext::fastSeek):
        (VideoFullscreenControllerContext::beginScanningForward):
        (VideoFullscreenControllerContext::beginScanningBackward):
        (VideoFullscreenControllerContext::endScanning):
        (VideoFullscreenControllerContext::selectAudioMediaOption):
        (VideoFullscreenControllerContext::selectLegibleMediaOption):
        (VideoFullscreenControllerContext::duration const):
        (VideoFullscreenControllerContext::currentTime const):
        (VideoFullscreenControllerContext::bufferedTime const):
        (VideoFullscreenControllerContext::isPlaying const):
        (VideoFullscreenControllerContext::playbackRate const):
        (VideoFullscreenControllerContext::seekableRanges const):
        (VideoFullscreenControllerContext::seekableTimeRangesLastModifiedTime const):
        (VideoFullscreenControllerContext::liveUpdateInterval const):
        (VideoFullscreenControllerContext::canPlayFastReverse const):
        (VideoFullscreenControllerContext::audioMediaSelectionOptions const):
        (VideoFullscreenControllerContext::audioMediaSelectedIndex const):
        (VideoFullscreenControllerContext::legibleMediaSelectionOptions const):
        (VideoFullscreenControllerContext::legibleMediaSelectedIndex const):
        (VideoFullscreenControllerContext::externalPlaybackEnabled const):
        (VideoFullscreenControllerContext::externalPlaybackTargetType const):
        (VideoFullscreenControllerContext::externalPlaybackLocalizedDeviceName const):
        (VideoFullscreenControllerContext::wirelessVideoPlaybackDisabled const):
        (VideoFullscreenControllerContext::setUpFullscreen):
        (VideoFullscreenControllerContext::exitFullscreen):
        (VideoFullscreenControllerContext::requestHideAndExitFullscreen):
        (-[WebVideoFullscreenController enterFullscreen:mode:]):
        (-[WebVideoFullscreenController exitFullscreen]):
        (-[WebVideoFullscreenController requestHideAndExitFullscreen]):
        * platform/ios/wak/WAKWindow.mm:
        (-[WAKWindow setVisible:]):
        (-[WAKWindow setScreenScale:]):
        (-[WAKWindow sendEvent:]):
        (-[WAKWindow sendMouseMoveEvent:contentChange:]):
        * platform/network/ios/NetworkStateNotifierIOS.mm:
        (WebCore::NetworkStateNotifier::startObserving):
        * rendering/RenderThemeIOS.mm:
        (WebCore::contentSizeCategoryDidChange):

2019-01-23  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r240292): Attempt to fix WinCairo build

        * platform/network/curl/CurlResourceHandleDelegate.cpp:
        (WebCore::handleCookieHeaders): Remove argument to
        NetworkingContext::storageSession().

2019-01-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce UndoStep::label() and adopt it in WebKitLegacy and WebKit
        https://bugs.webkit.org/show_bug.cgi?id=193706
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Refactors some existing logic when registering undoable actions, such that we propagate the undoable action's
        label string instead of the EditAction to the client layer. This will help make handling of CustomUndoStep's
        undo/redo label simpler, as the client layer won't need to worry about managing an EditAction and undo/redo
        label simultaneously. There should be no change in behavior.

        * editing/CompositeEditCommand.cpp:
        (WebCore::EditCommandComposition::label const):
        * editing/CompositeEditCommand.h:
        * editing/CustomUndoStep.cpp:
        (WebCore::CustomUndoStep::label const):
        * editing/CustomUndoStep.h:
        * editing/EditAction.cpp:
        (WebCore::undoRedoLabel):
        (WebCore::nameForUndoRedo): Deleted.
        * editing/EditAction.h:

        Rename nameForUndoRedo to undoRedoLabel, and remove the WEBCORE_EXPORT since it's no longer needed in WebKit or
        WebKitLegacy.

        * editing/UndoStep.h:

        Add UndoStep::label(). While EditCommandComposition implements this by mapping its EditAction to a
        localized string, CustomUndoStep implements this by returning the undoable action label provided by script.

2019-01-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Clean up NetworkStorageSession
        https://bugs.webkit.org/show_bug.cgi?id=193707

        Reviewed by Carlos Garcia Campos.

        A NetworkStorageSession now always has a SoupNetworkSession, so we can remove a lot of
        complexity that is no longer needed. getOrCreateSoupNetworkSession can go away because we
        know the session has always already been created. The soupNetworkSession getter can now
        return a reference rather than a pointer, because it will never be NULL except after it has
        been cleared with clearSoupNetworkSession (renamed), and that should only happen immediately
        before process termination after nothing else is using it. Cookie jar syncing can also go
        away; the NetworkStorageSession can now rely on the SoupNetworkSession to exist and just
        use its cookie jar.

        * platform/network/NetworkStorageSession.h:
        (WebCore::NetworkStorageSession::soupNetworkSession const): Deleted.
        * platform/network/soup/DNSResolveQueueSoup.cpp:
        (WebCore::DNSResolveQueueSoup::updateIsUsingProxy):
        (WebCore::DNSResolveQueueSoup::platformResolve):
        (WebCore::DNSResolveQueueSoup::resolve):
        * platform/network/soup/NetworkStorageSessionSoup.cpp:
        (WebCore::NetworkStorageSession::NetworkStorageSession):
        (WebCore::NetworkStorageSession::~NetworkStorageSession):
        (WebCore::NetworkStorageSession::soupNetworkSession const):
        (WebCore::NetworkStorageSession::clearSoupNetworkSession):
        (WebCore::NetworkStorageSession::cookieStorage const):
        (WebCore::NetworkStorageSession::setCookieStorage):
        (WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession const): Deleted.
        (WebCore::NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage): Deleted.
        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
        (WebCore::SocketStreamHandleImpl::create):

2019-01-23  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] computeStaticPosition should include estimated computation as well.
        https://bugs.webkit.org/show_bug.cgi?id=193719

        Reviewed by Antti Koivisto.

        Consolidate all static position (non-estimated, estimated) computation in BlockFormattingContext::computeStaticPosition.
        It requires to compute width/horizontal margin first, since vertical top estimation needs valid horizontal widths (margin-top: 5% is computed using
        the containing block's width).
        This is also in preparation for moving 'clear' positioning to computeStaticPosition.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layout const):
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::adjustedVerticalPositionAfterMarginCollapsing const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBefore const): Deleted.
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBeforeForAncestors const): Deleted.
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore):

2019-01-22  Simon Fraser  <simon.fraser@apple.com>

        Compositing updates need to reparent scrolling tree nodes with a changed ancestor
        https://bugs.webkit.org/show_bug.cgi?id=193699

        Reviewed by Frédéric Wang.

        Now that compositing updates are incremental and may not do a full layer walk,
        we need to ensure that when a scrolling tree node is removed, we traverse to all
        descendant layers whose scrolling tree nodes refer to the removed node as their parent.

        To achieve this, add a RenderLayer dirty bit for "NeedsScrollingTreeUpdate" which
        ensures that the updateBackingAndHierarchy part of the compositing update traverses
        layers with the bit set.

        Adjust the compositing logging to make the legend easier to read.

        Tests: scrollingcoordinator/reparent-across-compositing-layers.html
               scrollingcoordinator/reparent-with-layer-removal.html

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::childrenOfNode const):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::childrenOfNode const):
        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer):

2019-01-23  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative inset properties
        https://bugs.webkit.org/show_bug.cgi?id=189441

        Reviewed by Dean Jackson.

        Implement 'inset', 'inset-block', 'inset-block-start', 'inset-block-end',
        'inset-inline', 'inset-inline-start' and 'inset-inline-end' CSS properties
        behind the CSSLogicalEnabled runtime flag.

        Tests: imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html
               webexposed/css-properties-behind-flags.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::isLayoutDependent):
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/CSSProperty.cpp:
        (WebCore::CSSProperty::resolveDirectionAwareProperty):
        (WebCore::CSSProperty::isDirectionAwareProperty):
        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::getPropertyValue const):
        (WebCore::StyleProperties::asText const):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::isSimpleLengthPropertyID):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):
        (WebCore::CSSPropertyParser::parseShorthand):

2019-01-23  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Properly handle static positions of abspos inside grid items
        https://bugs.webkit.org/show_bug.cgi?id=193657

        Reviewed by Javier Fernandez.

        Rename findChildLogicalPosition to setLogicalPositionForChild and let it set the position.
        Add setLogicalOffsetForChild like setLogicalPositionForChild but just for one offset,
        and only if it's needed (not for abspos descentants in their static position).
        Add logicalOffsetForChild that finds the value to be set by the functions above.
        Rename existing logicalOffsetForChild to logicalOffsetForOutOfFlowChild.

        Tests: imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html
               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::layoutGridItems):
        (WebCore::RenderGrid::layoutPositionedObject):
        (WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):
        (WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):
        (WebCore::RenderGrid::setLogicalPositionForChild const):
        (WebCore::RenderGrid::setLogicalOffsetForChild const):
        (WebCore::RenderGrid::logicalOffsetForChild const):
        * rendering/RenderGrid.h:

2019-01-23  Rob Buis  <rbuis@igalia.com>

        Update MIME type parser
        https://bugs.webkit.org/show_bug.cgi?id=180526

        Reviewed by Frédéric Wang.

        Add an enum to allow two modes of MIME type parsing, one mode
        to keep supporting RFC2045 as before, and one mode to support
        the updated MIME parser from mimesniff [1]. Mimesniff support
        brings the following changes:
        - allows parameter names without matching =value.
        - skips whitespace after subtype, parameter value and before
          parameter name.
        - lower cases MIME type and parameter name.
        - parameter names parsed before are discarded.

        The old mode is still used by CDM.cpp and MIMEHeader.cpp.

        [1] https://mimesniff.spec.whatwg.org/

        * Modules/encryptedmedia/CDM.cpp:
        (WebCore::CDM::getSupportedCapabilitiesForAudioVideoType):
        * platform/network/MIMEHeader.cpp:
        (WebCore::MIMEHeader::parseHeader):
        * platform/network/ParsedContentType.cpp:
        (WebCore::DummyParsedContentType::setContentType const):
        (WebCore::DummyParsedContentType::setContentTypeParameter const):
        (WebCore::isQuotedStringTokenCharacter):
        (WebCore::isTokenCharacter):
        (WebCore::parseToken):
        (WebCore::containsNonTokenCharacters):
        (WebCore::parseQuotedString):
        (WebCore::isNotForwardSlash):
        (WebCore::isNotSemicolon):
        (WebCore::isNotSemicolonOrEqualSign):
        (WebCore::parseContentType):
        (WebCore::isValidContentType):
        (WebCore::ParsedContentType::ParsedContentType):
        (WebCore::ParsedContentType::setContentType):
        (WebCore::isNonTokenCharacter):
        (WebCore::isNonQuotedStringTokenCharacter):
        (WebCore::ParsedContentType::setContentTypeParameter):
        * platform/network/ParsedContentType.h:

        Test: web-platform-tests/xhr/overridemimetype-blob.html

2019-01-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce CustomUndoStep.h and CustomUndoStep.cpp
        https://bugs.webkit.org/show_bug.cgi?id=193704
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        This patch is more work in progress towards supporting `UndoManager.addItem()`. Here, we introduce a helper
        class, CustomUndoStep, that holds a weak reference to a script-defined UndoItem. See below for more details.

        No change in behavior.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/CustomUndoStep.cpp:
        (WebCore::CustomUndoStep::CustomUndoStep):

        Subclass UndoStep.

        (WebCore::CustomUndoStep::unapply):
        (WebCore::CustomUndoStep::reapply):

        If possible, invoke the UndoItem's undo and redo handlers.

        (WebCore::CustomUndoStep::isValid const):
        * editing/CustomUndoStep.h:
        * editing/EditingStyle.cpp:
        * editing/InsertEditableImageCommand.cpp:
        (WebCore::InsertEditableImageCommand::doApply):

        Unified build fixes.

        * page/UndoItem.h:

2019-01-22  Simon Fraser  <simon.fraser@apple.com>

        Adding a child to a ScrollingStateNode needs to trigger a tree state commit
        https://bugs.webkit.org/show_bug.cgi?id=193682

        Reviewed by Zalan Bujtas.

        Scrolling tree mutations that re-arrange nodes (e.g. node reordering when z-index changes)
        need to trigger scrolling tree updates, and currently do not.

        Fix by adding a "ChildNodes" dirty bit to ScrollingStateNode. There isn't any code that consults
        this flag when committing the scrolling tree because we always eagerly traverse children, but
        we could use it to optimize later. The important part is that we use it to trigger a tree update.
        
        Can't test via z-reordering until webkit.org/b/192529 is fixed.

        Tests: scrollingcoordinator/gain-scrolling-node-parent.html
               scrollingcoordinator/lose-scrolling-node-parent.html

        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::appendChild):
        (WebCore::ScrollingStateNode::insertChild):
        (WebCore::ScrollingStateNode::removeChildAtIndex):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::attachNode):

2019-01-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: InspectorInstrumentation::willEvaluateScript should include column number
        https://bugs.webkit.org/show_bug.cgi?id=116191
        <rdar://problem/13905910>

        Reviewed by Joseph Pecoraro.

        Test inspector/timeline/line-column.html

        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::evaluateInWorld):
        (WebCore::ScriptController::evaluateModule):

        * bindings/js/JSExecStateInstrumentation.h:
        (WebCore::JSExecState::instrumentFunctionInternal):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::willCallFunction):
        (WebCore::InspectorInstrumentation::willEvaluateScript):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::willCallFunctionImpl):
        (WebCore::InspectorInstrumentation::willEvaluateScriptImpl):

        * inspector/agents/InspectorTimelineAgent.h:
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::willCallFunction):
        (WebCore::InspectorTimelineAgent::willEvaluateScript):

        * inspector/TimelineRecordFactory.h:
        * inspector/TimelineRecordFactory.cpp:
        (WebCore::TimelineRecordFactory::createFunctionCallData):
        (WebCore::TimelineRecordFactory::createEvaluateScriptData):

        * bindings/js/ScriptSourceCode.h:
        (WebCore::ScriptSourceCode::startColumn const): Added.

2019-01-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: expose Audit and Recording versions to the frontend
        https://bugs.webkit.org/show_bug.cgi?id=193262
        <rdar://problem/47130684>

        Reviewed by Joseph Pecoraro.

        Tests: inspector/audit/version.html
               inspector/recording/version.html

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):

2019-01-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add some bindings-related bookkeeping to UndoManager and UndoItem
        https://bugs.webkit.org/show_bug.cgi?id=193111
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        This patch is work in progress towards supporting `UndoManager.addItem()`. Here, we add helper methods to
        UndoItem and UndoManager which later patches will exercise, as well as introduce some custom bindings to
        properly handle the case where UndoItems are given anonymous JavaScript functions (see below for more details).

        No new tests, because there is no script-observable change in behavior yet. When `addItems()` is hooked up, I
        will write a test to verify that the undo and redo JavaScript functions survive garbage collection.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSUndoItemCustom.cpp:
        (WebCore::JSUndoItem::visitAdditionalChildren):

        Have each JSUndoItem visit its undo and redo callback functions to ensure that the JavaScript wrapper objects
        for these functions are not garbage collected underneath the item.

        (WebCore::JSUndoItemOwner::isReachableFromOpaqueRoots):

        Consider the undo item wrapper reachable from opaque roots if it is associated with its UndoManager's Document.
        This ensures that if script isn't holding on to a reference to the wrapper (for instance, by calling
        `UndoManager.addItem(new UndoItem({ ... }))`), we still protect the corresponding JSUndoItem as long as the
        UndoManager's Document is alive. In the case where the undo item is not associated with a document, either (1)
        script is keeping a reference to it, in which case it will be trivially reachable, or (2) script won't be able
        to observe the destruction of the wrapper anyways (e.g. calling `new UndoItem({ ... })` by itself).

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

        Invalidate all undo items when the document is about to go away.

        * page/UndoItem.cpp:
        (WebCore::UndoItem::setUndoManager):
        (WebCore::UndoItem::invalidate):
        (WebCore::UndoItem::isValid const):

        Add a few helpers, to be used in a future patch. We consider an UndoItem valid if it has been added to an
        UndoManager, and is thus associated with a document.

        (WebCore::UndoItem::document const):
        * page/UndoItem.h:
        * page/UndoItem.idl:
        * page/UndoManager.cpp:
        (WebCore::UndoManager::UndoManager):
        (WebCore::UndoManager::addItem):

        Have an UndoManager keep its UndoItems alive. These UndoItems remain in this set until either the document will
        be destroyed, or the corresponding undo action is no longer needed because the platform undo stack has changed
        (this latter behavior is yet to be implemented).

        (WebCore::UndoManager::removeItem):
        (WebCore::UndoManager::removeAllItems):
        * page/UndoManager.h:
        (WebCore::UndoManager::UndoManager): Deleted.
        * page/scrolling/ScrollingTreeScrollingNode.cpp:

        Unified build fix.

2019-01-22  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WebKitTestRunner] Null dereference of GraphicsContext::m_data in GraphicsContext::releaseWindowsContext
        https://bugs.webkit.org/show_bug.cgi?id=193664

        Reviewed by Brent Fulgham.

        WinCairo WebKitTestRunner always crash on openning test cases of
        HTMLMeterElement.

        If GraphicsContext::getWindowsContext retruned null HDC,
        LocalWindowsContext shouldn't release the null HDC.

        Covered by existing tests.

        * platform/graphics/win/LocalWindowsContext.h:
        (WebCore::LocalWindowsContext::~LocalWindowsContext):
        Release m_hdc only if it isn't null.

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix -Wsign-compare warning
        https://bugs.webkit.org/show_bug.cgi?id=188697
        <rdar://problem/46105624>

        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::asText const):

2019-01-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: provide a way to get related Accessibility properties for a given node
        https://bugs.webkit.org/show_bug.cgi?id=193227
        <rdar://problem/46787862>

        Reviewed by Joseph Pecoraro.

        Test: inspector/audit/run-accessibility.html

        * inspector/InspectorAuditAccessibilityObject.idl:
        * inspector/InspectorAuditAccessibilityObject.h:
        * inspector/InspectorAuditAccessibilityObject.cpp:
        (WebCore::InspectorAuditAccessibilityObject::getComputedProperties): Added.

2019-01-22  Simon Fraser  <simon.fraser@apple.com>

        Remove an iOS quirk where iframe renderers are identified as "RenderPartObject" in layout test results
        https://bugs.webkit.org/show_bug.cgi?id=193692

        Reviewed by Zalan Bujtas.

        Remove the iOS-specific renderName() implementation.

        * rendering/RenderIFrame.h:

2019-01-22  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Dynamic changes in the style attributes of an SVGElement do no affect the <use> instances
        https://bugs.webkit.org/show_bug.cgi?id=193647

        Reviewed by Simon Fraser.

        Changing a style attribute of an SVGELement needs to call invalidateInstances().

        Tests: svg/custom/svg-use-style-dynamic-change-invalidate.svg

        * svg/SVGElement.cpp:
        (WebCore::SVGElement::attributeChanged):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix more builds.

        * platform/network/curl/CurlResourceHandleDelegate.cpp:
        (WebCore::handleCookieHeaders):
        (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix some builds after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580

        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::createCurlRequest):
        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
        (WebCore::ResourceHandle::receivedCredential):
        (WebCore::ResourceHandle::getCredential):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Move NetworkStorageSession ownership to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193580

        Reviewed by Geoff Garen.

        NetworkStorageSessions used to be owned by a process-global map living in WebCore.
        This patch moves the ownership to the WebKit/WebKitLegacy layer.
        In WebKitLegacy they are still owned by a process-global map for compatibility.
        In WebKit they are owned by a map owned by the NetworkProcess object.
        There were three non-NetworkProcess uses of NetworkStorageSessions which have been dealt with thusly:
        1. The WebProcess used to clear credentials from a NetworkStorageSession.  Since this was the only use
        of a NetworkStorageSession in the WebProcess we can conclude there were no credentials to clear,
        so this code was removed with no change in behavior.
        2. The WebProcess used NetworkStorageSessions to get persistent credentials.  This was turned
        into a static method that does the same thing.  We should audit these calls and decide if we really want them.
        3. The UIProcess used NetworkStorageSessions in APIHTTPCookieStore to interact with the default cookie
        storage on Cocoa platforms.  This has been replaced by functions that do the same thing directly.

        * platform/network/CredentialStorage.h:
        * platform/network/NetworkStorageSession.cpp:
        (WebCore::NetworkStorageSession::processMayUseCookieAPI):
        (WebCore::NetworkStorageSession::globalSessionMap): Deleted.
        (WebCore::NetworkStorageSession::storageSession): Deleted.
        (WebCore::NetworkStorageSession::destroySession): Deleted.
        (WebCore::NetworkStorageSession::forEach): Deleted.
        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::NetworkStorageSession::createCFStorageSessionForIdentifier):
        (WebCore::createCFStorageSessionForIdentifier): Deleted.
        (WebCore::defaultNetworkStorageSession): Deleted.
        (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted.
        (WebCore::NetworkStorageSession::defaultStorageSession): Deleted.
        (WebCore::NetworkStorageSession::ensureSession): Deleted.
        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
        (WebCore::SocketStreamHandleImpl::getStoredCONNECTProxyCredentials):
        * platform/network/cocoa/CookieStorageObserver.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::defaultSession): Deleted.
        (WebCore::NetworkStorageSession::defaultStorageSession): Deleted.
        (WebCore::NetworkStorageSession::ensureSession): Deleted.
        (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted.
        * platform/network/soup/NetworkStorageSessionSoup.cpp:
        (WebCore::NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage):
        (WebCore::defaultSession): Deleted.
        (WebCore::NetworkStorageSession::defaultStorageSession): Deleted.
        (WebCore::NetworkStorageSession::ensureSession): Deleted.
        (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted.

2019-01-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: provide a way to get related Accessibility nodes for a given node
        https://bugs.webkit.org/show_bug.cgi?id=193225
        <rdar://problem/46799956>

        Reviewed by Joseph Pecoraro.

        Test: inspector/audit/run-accessibility.html

        * inspector/InspectorAuditAccessibilityObject.idl:
        * inspector/InspectorAuditAccessibilityObject.h:
        * inspector/InspectorAuditAccessibilityObject.cpp:
        (WebCore::InspectorAuditAccessibilityObject::getActiveDescendant): Added.
        (WebCore::addChildren): Added.
        (WebCore::InspectorAuditAccessibilityObject::getChildNodes): Added.
        (WebCore::InspectorAuditAccessibilityObject::getControlledNodes): Added.
        (WebCore::InspectorAuditAccessibilityObject::getFlowedNodes): Added.
        (WebCore::InspectorAuditAccessibilityObject::getMouseEventNode): Added.
        (WebCore::InspectorAuditAccessibilityObject::getOwnedNodes): Added.
        (WebCore::InspectorAuditAccessibilityObject::getParentNode): Added.
        (WebCore::InspectorAuditAccessibilityObject::getSelectedChildNodes): Added.

2019-01-22  David Kilzer  <ddkilzer@apple.com>

        Switch remaining QuickLook soft-linking in WebCore, WebKit over to QuickLookSoftLink.{cpp,h}
        <https://webkit.org/b/193654>
        <rdar://problem/47430290>

        Reviewed by Alex Christensen.

        - Moves QuickLookSoftLink.{h,mm} to PAL.
        - Adds soft-link to 3 classes to consolidate QuickLook.framework
          soft-linking.
        - Updates existing source to work with above changes.

        * SourcesCocoa.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:
        - Remove QuickLookSoftLink.{h,mm} due to move to PAL.

        * platform/ios/QuickLook.mm:
        (WebCore::QLPreviewGetSupportedMIMETypesSet):
        (WebCore::registerQLPreviewConverterIfNeeded):
        - Update for QuickLookSoftLink.{h,mm} move to PAL.

        * platform/network/ios/PreviewConverter.mm:
        (WebCore::optionsWithPassword):
        (WebCore::PreviewConverter::PreviewConverter):
        - Switch to using QuickLookSoftLink.{h,mm} in PAL.

        * platform/network/ios/WebCoreURLResponseIOS.mm:
        (WebCore::adjustMIMETypeIfNecessary):
        - Update for QuickLookSoftLink.{h,mm} move to PAL.

2019-01-22  Simon Fraser  <simon.fraser@apple.com>

        Fix the position of layers nested inside of composited overflow-scroll
        https://bugs.webkit.org/show_bug.cgi?id=193642

        Reviewed by Antti Koivisto and Sam Weinig.

        Remove an iOS #ifdef so that layers inside composited overflow gets the correct
        positions on macOS too.

        Test: compositing/geometry/fixed-inside-overflow-scroll.html

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):

2019-01-22  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Build fix for Ubuntu LTS 16.04
        https://bugs.webkit.org/show_bug.cgi?id=193672

        Unreviewed build fix.

        * html/canvas/CanvasStyle.h: Add default copy constructor for
        CMYKAColor struct.

2019-01-22  David Kilzer  <ddkilzer@apple.com>

        Leak of NSMutableArray (128 bytes) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193673>
        <rdar://problem/47448241>

        Reviewed by Dean Jackson.

        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::appendArgumentToArray): Use adoptNS() to fix the leak.

2019-01-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Decouple clearance computation and margin collapsing reset.
        https://bugs.webkit.org/show_bug.cgi?id=193670

        Reviewed by Antti Koivisto.

        Move margin collapsing reset logic from FloatingContext to BlockFormattingContext. It's the BlockFormattingContext's job to do.
        This is also in preparation for adding clear to static position.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::mapTopToAncestor):
        (WebCore::Layout::FormattingContext::mapTopLeftToAncestor): Deleted.
        * layout/FormattingContext.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/floats/FloatingContext.h:

2019-01-22  Frederic Wang  <fwang@igalia.com>

        Minor refactoring of the scrolling code
        https://bugs.webkit.org/show_bug.cgi?id=192398

        Unreviewed build fix.

        * page/scrolling/ScrollingTreeScrollingNode.cpp: Add missing header.

2019-01-22  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Tests: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html
               webexposed/css-properties-behind-flags.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        Allow the new properties to serialize their computed value.

        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand):
        * css/CSSComputedStyleDeclaration.h:
        Rename getCSSPropertyValuesForSidesShorthand to getCSSPropertyValuesFor4SidesShorthand,
        and add analogous getCSSPropertyValuesFor2SidesShorthand for serializing 2-sided
        shorthands.

        * css/CSSProperties.json:
        Add the new properties behind the CSSLogicalEnabled runtime flag.

        * css/CSSStyleDeclaration.cpp:
        (WebCore::CSSStyleDeclaration::supportedPropertyNames const):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        style declarations.

        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::getPropertyValue const):
        Allow the new properties to serialize their specified value.

        (WebCore::StyleProperties::get2Values const):
        Add get2Values, analogous to get4Values, for serializing 2-sided shorthands.

        (WebCore::StyleProperties::borderPropertyValue const):
        Allow borderPropertyValue to serialize arbitrary multi-sided border shorthands
        corresponding to width, style and color.

        (WebCore::MutableStyleProperties::setProperty):
        Prevent CSS properties disabled behind a runtime flag from being set a value.

        (WebCore::StyleProperties::asText const):
        Allow the new properties to be serialized in cssText.
        Prevent CSS shorthands disabled behind a runtime flag from appearing in cssText,
        and serialize the longhands instead. Note that there could be another shorthand
        available which is enabled, but a proper solution would require bug 190496.

        * css/StyleProperties.h:
        Update declarations of borderPropertyValue and get2Values.

        * css/makeprop.pl:
        (addProperty):
        Add isEnabledCSSProperty function for checking that a CSS property is not
        disabled behind a runtime flag.

        * css/parser/CSSPropertyParser.cpp:
        (WebCore::cssPropertyID):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        computed styles.

        (WebCore::CSSPropertyParser::addProperty):
        Prevent CSS properties disabled behind a runtime flag from being set a value.

        (WebCore::CSSPropertyParser::consumeBorder):
        Change consumeBorder to provide the caller with the parsed values instead of
        setting properties. Then the caller can decide to which properties the values
        should be set, and whether border-image should be reset or not.

        (WebCore::CSSPropertyParser::consume2ValueShorthand):
        (WebCore::CSSPropertyParser::consume4ValueShorthand):
        Rename consume4Values to consume4ValueShorthand, and add analogous
        consume2ValueShorthand for parsing shorthands with two longhands.

        (WebCore::CSSPropertyParser::parseShorthand):
        Allow the new properties to be parsed.

        * css/parser/CSSPropertyParser.h:
        Update declarations of consumeBorder, consume2ValueShorthand and
        consume4ValueShorthand.

        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        the CSS inspector tool.

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setCSSLogicalEnabled):
        (WebCore::RuntimeEnabledFeatures::cssLogicalEnabled const):
        Add the CSSLogicalEnabled runtime flag.

2019-01-21  Antti Koivisto  <antti@apple.com>

        [iOS] Handle hit testing for subframes
        https://bugs.webkit.org/show_bug.cgi?id=192303

        Reviewed by Frédéric Wang.

        Don't set delegatesScrolling bit for subframes on iOS. It is meant for top level application
        controlled scrolling. This fixes coordinate conversions for subframes and makes events work.

        Test by Frederic Wang.

        Test: fast/scrolling/ios/hit-testing-iframe.html

        * platform/ScrollView.cpp:
        (WebCore::ScrollView::managesScrollbars const):

        Add a function that tells if the scrollview should deal with scrollbars at all
        This is always false on iOS and not connected to delegatesScrolling bit.

        (WebCore::ScrollView::updateScrollbars):
        * platform/ScrollView.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::shouldCompositeOverflowControls const):

2019-01-21  Brent Fulgham  <bfulgham@apple.com>

        Implement message handlers for NetworkProcess-based ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=193556
        <rdar://problem/47368501>

        Reviewed by Alex Christensen.

        This patch adds a new observer callback used to message the NetworkProcess when
        user interaction events are received. This is needed when the ResourceLoadStatistics
        data is not being managed by the UIProcess.

        Tested by existing ResourceLoadStatistics and storageAccess tests.

        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setLogUserInteractionNotificationCallback):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        * loader/ResourceLoadObserver.h:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::NetworkStorageSession::setCookiesFromDOM):

2019-01-21  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Take float top position into account when computing containing block height.
        https://bugs.webkit.org/show_bug.cgi?id=193655

        Reviewed by Antti Koivisto.

        When computing the containing block height, we take the first in-flow child's top position and use it as the base position.
        However when the first in-flow child clears a previous sibling, its vertical position is not necessarily the correct base for
        computing the containing block's height. Let's take the relevant floats into account as well.

        Test: fast/block/float/float-first-child-and-clear-sibling.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::top const):
        * layout/floats/FloatingState.h:

2019-01-21  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r240237): Revert changes to WebCore Xcode project

        * WebCore.xcodeproj/project.pbxproj: Revert changes that were
        fixed in r240135.  Darin's patch must have been made prior to
        r240135.

2019-01-21  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r240201): Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577
        <rdar://problem/47408511>

        * dom/ios/PointerEventIOS.cpp: Add ENABLE(POINTER_EVENTS) macro
        to fix tvOS & watchOS builds.

2019-01-15  Darin Adler  <darin@apple.com>

        Use references rather than pointers for register/unregister functions, and more
        https://bugs.webkit.org/show_bug.cgi?id=175028

        Reviewed by Daniel Bates.

        * Modules/applepay/ApplePaySession.cpp:
        (WebCore::ApplePaySession::begin): Pass a reference.
        (WebCore::ApplePaySession::completePayment): Ditto.
        (WebCore::ApplePaySession::didReachFinalState): Ditto.
        * Modules/cache/DOMCache.cpp:
        (WebCore::DOMCache::retrieveRecords): Ditto.
        (WebCore::DOMCache::batchDeleteOperation): Ditto.
        (WebCore::DOMCache::batchPutOperation): Ditto.
        * Modules/cache/DOMCacheStorage.cpp:
        (WebCore::DOMCacheStorage::match): Ditto.
        * Modules/fetch/FetchBodyOwner.cpp:
        (WebCore::FetchBodyOwner::loadBlob): Ditto.
        (WebCore::FetchBodyOwner::finishBlobLoading): Ditto.
        * Modules/fetch/FetchBodySource.cpp:
        (WebCore::FetchBodySource::setActive): Ditto.
        (WebCore::FetchBodySource::setInactive): Ditto.
        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::BodyLoader::BodyLoader): Ditto.
        (WebCore::FetchResponse::BodyLoader::~BodyLoader): Ditto.
        * Modules/mediasource/MediaSource.cpp:
        (WebCore::MediaSource::addedToRegistry): Ditto.
        (WebCore::MediaSource::removedFromRegistry): Ditto.
        * Modules/mediastream/MediaStream.cpp:
        (WebCore::MediaStream::~MediaStream): Ditto.
        (WebCore::MediaStream::startProducingData): Ditto.
        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::MediaStreamTrack): Ditto.
        (WebCore::MediaStreamTrack::~MediaStreamTrack): Ditto.
        * Modules/mediastream/RTCDataChannel.cpp:
        (WebCore::RTCDataChannel::create): Ditto.
        (WebCore::RTCDataChannel::close): Ditto.
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::create): Use auto.
        * Modules/notifications/Notification.cpp:
        (WebCore::Notification::show): Pass a reference.
        (WebCore::Notification::finalize): Ditto.
        * Modules/webaudio/AudioBasicInspectorNode.cpp:
        (WebCore::AudioBasicInspectorNode::updatePullStatus): Ditto.

        * Modules/webaudio/AudioContext.cpp:
        (WebCore::AudioContext::constructCommon): Ditto.
        (WebCore::AudioContext::lazyInitialize): Ditto.
        (WebCore::AudioContext::clear): Ditto.
        (WebCore::AudioContext::uninitialize): Ditto.
        (WebCore::AudioContext::markForDeletion): Take a reference.
        (WebCore::AudioContext::addAutomaticPullNode): Ditto.
        (WebCore::AudioContext::removeAutomaticPullNode): Ditto.
        (WebCore::AudioContext::willBeginPlayback): Pass a reference.
        (WebCore::AudioContext::willPausePlayback): Ditto.
        * Modules/webaudio/AudioContext.h: Update above functions to take
        references rather than pointers.

        * Modules/webaudio/AudioNode.cpp:
        (WebCore::AudioNode::finishDeref): Pass a reference.
        * Modules/websockets/WebSocket.cpp:
        (WebCore::WebSocket::connect): Ditto.
        (WebCore::WebSocket::stop): Ditto.
        (WebCore::WebSocket::didClose): Ditto.

        * WebCore.xcodeproj/project.pbxproj: Allowed Xcode to update this file.

        * bindings/js/JSDOMWindowBase.cpp:
        (WebCore::JSDOMWindowBase::moduleLoaderResolve): Update since
        moduleLoader is now a reference.
        (WebCore::JSDOMWindowBase::moduleLoaderFetch): Ditto.
        (WebCore::JSDOMWindowBase::moduleLoaderEvaluate): Ditto.
        (WebCore::JSDOMWindowBase::moduleLoaderImportModule): Ditto.
        (WebCore::JSDOMWindowBase::moduleLoaderCreateImportMetaProperties): Ditto.

        * dom/ActiveDOMObject.h:
        (WebCore::ActiveDOMObject::setPendingActivity): Take a reference.
        (WebCore::ActiveDOMObject::unsetPendingActivity): Ditto.

        * dom/CharacterData.cpp:
        (WebCore::CharacterData::setData): Pass a reference.
        (WebCore::CharacterData::insertData): Ditto.
        (WebCore::CharacterData::deleteData): Ditto.
        (WebCore::CharacterData::replaceData): Ditto.

        * dom/Document.cpp:
        (WebCore::Document::getElementByAccessKey): Pass a reference.
        (WebCore::Document::buildAccessKeyMap): Take a reference.
        (WebCore::Document::registerForVisibilityStateChangedCallbacks): Ditto.
        (WebCore::Document::unregisterForVisibilityStateChangedCallbacks): Ditto.
        (WebCore::Document::addAudioProducer): Ditto.
        (WebCore::Document::removeAudioProducer): Ditto.
        (WebCore::Document::hoveredElementDidDetach): Ditto.
        (WebCore::Document::elementInActiveChainDidDetach): Ditto.
        (WebCore::Document::attachNodeIterator): Ditto.
        (WebCore::Document::detachNodeIterator): Ditto.
        (WebCore::Document::moveNodeIteratorsToNewDocumentSlowCase): Pass
        a reference.
        (WebCore::Document::nodeChildrenWillBeRemoved): Ditto.
        (WebCore::Document::nodeWillBeRemoved): Ditto.
        (WebCore::Document::textInserted): Take a reference.
        (WebCore::Document::textRemoved): Ditto.
        (WebCore::Document::textNodesMerged): Ditto.
        (WebCore::Document::textNodeSplit): Ditto.
        (WebCore::Document::takeDOMWindowFrom): Ditto.
        (WebCore::Document::registerForDocumentSuspensionCallbacks): Ditto.
        (WebCore::Document::unregisterForDocumentSuspensionCallbacks): Ditto.
        (WebCore::Document::registerForMediaVolumeCallbacks): Ditto.
        (WebCore::Document::unregisterForMediaVolumeCallbacks): Ditto.
        (WebCore::Document::registerForPrivateBrowsingStateChangedCallbacks): Ditto.
        (WebCore::Document::unregisterForPrivateBrowsingStateChangedCallbacks): Ditto.
        (WebCore::Document::registerForCaptionPreferencesChangedCallbacks): Ditto.
        (WebCore::Document::unregisterForCaptionPreferencesChangedCallbacks): Ditto.
        (WebCore::Document::registerForPageScaleFactorChangedCallbacks): Ditto.
        (WebCore::Document::unregisterForPageScaleFactorChangedCallbacks): Ditto.
        (WebCore::Document::finishedParsing): Use a reference.
        (WebCore::Document::attachRange): Take a reference.
        (WebCore::Document::detachRange): Ditto.
        (WebCore::Document::suspendScheduledTasks): Use a reference.
        (WebCore::Document::resumeScheduledTasks): Ditto.
        (WebCore::Document::addMediaCanStartListener): Take a reference.
        (WebCore::Document::removeMediaCanStartListener): Ditto.
        (WebCore::Document::deviceMotionController const): Return a reference.
        (WebCore::Document::deviceOrientationController const): Ditto.
        (WebCore::Document::simulateDeviceOrientationChange): Use a reference.
        (WebCore::Document::fullScreenIsAllowedForElement const): Take a reference.
        (WebCore::Document::requestFullScreenForElement): Pass a reference.
        (WebCore::Document::webkitExitFullscreen): Ditto.
        (WebCore::Document::webkitWillEnterFullScreen): Renamed to remove the
        "ForElement" from the function name. Take a reference rather than a pointer.
        (WebCore::Document::webkitDidEnterFullScreen): Renamed to remove the
        "ForElement" from the function name and removed the unused element argument.
        (WebCore::Document::webkitWillExitFullScreen): Ditto.
        (WebCore::Document::webkitDidExitFullScreen): Ditto.
        (WebCore::Document::pushFullscreenElementStack): Take a reference.
        (WebCore::Document::addDocumentToFullScreenChangeEventQueue): Ditto.
        (WebCore::DocumentParserYieldToken::DocumentParserYieldToken): Use a reference.
        (WebCore::DocumentParserYieldToken::~DocumentParserYieldToken): Ditto.
        (WebCore::Document::updateHoverActiveState): Updated name of isInActiveChain.

        * dom/Document.h: Updated argument types as described above. Changed a couple
        of inline functions to return references.

        * dom/DocumentMarkerController.cpp:
        (WebCore::DocumentMarkerController::addMarker): Take a reference.
        (WebCore::DocumentMarkerController::addMarkerToNode): Ditto.
        (WebCore::DocumentMarkerController::addTextMatchMarker): Ditto.
        (WebCore::DocumentMarkerController::addDictationPhraseWithAlternativesMarker): Ditto.
        (WebCore::DocumentMarkerController::addDictationResultMarker): Ditto.
        (WebCore::DocumentMarkerController::addDraggedContentMarker): Ditto.
        (WebCore::DocumentMarkerController::removeMarkers): Ditto.
        (WebCore::DocumentMarkerController::copyMarkers): Ditto.
        (WebCore::DocumentMarkerController::shiftMarkers): Ditto.
        (WebCore::DocumentMarkerController::setMarkersActive): DItto.
        * dom/DocumentMarkerController.h: Updated argument types as described above.

        * dom/Element.cpp:
        (WebCore::Element::~Element): Pass a reference.
        (WebCore::Element::isUserActionElementInActiveChain const): Updated name of
        isInActiveChain.
        (WebCore::Element::hasEquivalentAttributes const): Take a reference.
        (WebCore::Element::removedFromAncestor): Pass a reference.
        (WebCore::Element::clearHoverAndActiveStatusBeforeDetachingRenderer):
        Pass a reference and updated name of isInActiveChain.

        * dom/Element.h: Renamed inActiveChain to isInActiveChain, updated argument
        types to be references, and removed unneeded friend declaration and made
        SynchronizationOfLazyAttribute private.

        * dom/Node.cpp:
        (WebCore::Node::normalize): Pass a reference.
        (WebCore::Node::isEqualNode const): Ditto.
        * dom/NodeIterator.cpp:
        (WebCore::NodeIterator::NodeIterator): Ditto.
        (WebCore::NodeIterator::~NodeIterator): Ditto.

        * dom/RadioButtonGroups.cpp:
        (WebCore::RadioButtonGroup::add): Take a reference.
        (WebCore::RadioButtonGroup::updateCheckedState): Ditto.
        (WebCore::RadioButtonGroup::remove): Ditto.
        (WebCore::RadioButtonGroup::contains const): Ditto.
        (WebCore::RadioButtonGroups::addButton): Ditto.
        (WebCore::RadioButtonGroups::updateCheckedState): Ditto.
        (WebCore::RadioButtonGroups::hasCheckedButton const): Ditto.
        (WebCore::RadioButtonGroups::isInRequiredGroup const): Ditto.
        (WebCore::RadioButtonGroups::removeButton): Ditto.
        * dom/RadioButtonGroups.h: Updated argument types.

        * dom/Range.cpp:
        (WebCore::Range::Range): Pass a reference.
        (WebCore::Range::~Range): Ditto.
        (WebCore::Range::setDocument): Ditto.
        (WebCore::Range::createContextualFragment): Ditto.
        (WebCore::boundaryTextInserted): Ditto.
        (WebCore::Range::textInserted): Ditto.
        (WebCore::boundaryTextRemoved): Ditto.
        (WebCore::Range::textRemoved): Ditto.
        (WebCore::boundaryTextNodesSplit): Ditto.
        (WebCore::Range::textNodeSplit): Ditto.
        * dom/Range.h: Take references instead of pointers.

        * dom/ScriptElement.cpp:
        (WebCore::ScriptElement::prepareScript): Use reference.

        * dom/Text.cpp:
        (WebCore::Text::splitText): Pass reference.

        * dom/UserActionElementSet.h: Renamed inActiveChain to isInActiveChain to
        match the naming scheme of the other similar functions, like isActive.

        * editing/AlternativeTextController.cpp:
        (WebCore::AlternativeTextController::applyAlternativeTextToRange):
        Pass a reference.
        (WebCore::AlternativeTextController::respondToUnappliedSpellCorrection): Ditto.
        (WebCore::AlternativeTextController::handleAlternativeTextUIResult): Ditto.
        (WebCore::AlternativeTextController::respondToUnappliedEditing): Ditto.
        (WebCore::AlternativeTextController::markReversed): Ditto.
        (WebCore::AlternativeTextController::markCorrection): Ditto.
        (WebCore::AlternativeTextController::recordSpellcheckerResponseForModifiedCorrection): Ditto.
        (WebCore::AlternativeTextController::markPrecedingWhitespaceForDeletedAutocorrectionAfterCommand): Ditto.
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers): Ditto.
        * editing/DictationCommand.cpp: Ditto.
        * editing/Editing.cpp:
        (WebCore::areIdenticalElements): Ditto.
        * editing/Editor.cpp:
        (WebCore::Editor::ignoreSpelling): Ditto.
        (WebCore::Editor::learnSpelling): Ditto.
        (WebCore::Editor::advanceToNextMisspelling): Ditto.
        (WebCore::Editor::clearMisspellingsAndBadGrammar): Ditto.
        (WebCore::Editor::markMisspellingsAfterTypingToWord): Ditto.
        (WebCore::Editor::markAndReplaceFor): Ditto.
        (WebCore::Editor::changeBackToReplacedString): Ditto.
        (WebCore::Editor::updateMarkersForWordsAffectedByEditing): Ditto.
        (WebCore::Editor::countMatchesForText): Ditto.
        (WebCore::Editor::scanRangeForTelephoneNumbers): Ditto.
        (WebCore::Editor::editorUIUpdateTimerFired): Ditto.
        (WebCore::Editor::handleAcceptedCandidate): Ditto.

        * editing/InsertTextCommand.cpp:
        (WebCore::InsertTextCommand::doApply): Pass a reference.
        * editing/InsertTextCommand.h: Take a reference.

        * editing/SpellChecker.cpp:
        (WebCore::SpellChecker::didCheckSucceed): Pass a reference.
        * editing/SplitTextNodeCommand.cpp:
        (WebCore::SplitTextNodeCommand::doApply): Ditto.
        (WebCore::SplitTextNodeCommand::doUnapply): Ditto.
        * editing/TextCheckingHelper.cpp:
        (WebCore::TextCheckingHelper::findFirstMisspelling): Pass a reference.
        (WebCore::TextCheckingHelper::findFirstGrammarDetail const): Ditto.
        * editing/ios/DictationCommandIOS.cpp:
        (WebCore::DictationCommandIOS::doApply): Ditto.
        Also added a comment about a possible missing null check; behavior should
        be no different than before, but using a reference helps make clear there
        was never any null check.
        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
        * fileapi/FileReader.cpp:
        (WebCore::FileReader::readInternal): Ditto.
        (WebCore::FileReader::abort): Ditto.
        (WebCore::FileReader::didFinishLoading): Ditto.
        (WebCore::FileReader::didFail): Ditto.

        * html/HTMLAppletElement.cpp: Removed unneeded include of HTMLDocument.h.
        There's very little left that is truly specific to HTMLDocument vs. Document.

        * html/HTMLDocument.h:
        (WebCore::HTMLDocument::create): Take a reference.
        (WebCore::HTMLDocument::createSynthesizedDocument): Ditto.

        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::~HTMLFormElement): Pass a reference.
        (WebCore::HTMLFormElement::parseAttribute): Ditto.
        (WebCore::HTMLFormElement::didMoveToNewDocument): Ditto.

        * html/HTMLIFrameElement.cpp: Removed unneeded include of HTMLDocument.h.

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::~HTMLInputElement): Pass a reference.
        (WebCore::HTMLInputElement::setChecked): Ditto.
        (WebCore::HTMLInputElement::registerForSuspensionCallbackIfNeeded): Ditto.
        (WebCore::HTMLInputElement::unregisterForSuspensionCallbackIfNeeded): Ditto.
        (WebCore::HTMLInputElement::didMoveToNewDocument): Ditto.
        (WebCore::HTMLInputElement::isInRequiredRadioButtonGroup): Ditto.
        (WebCore::HTMLInputElement::addToRadioButtonGroup): Ditto.
        (WebCore::HTMLInputElement::removeFromRadioButtonGroup): Ditto.
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::registerWithDocument): Ditto.
        (WebCore::HTMLMediaElement::unregisterWithDocument): Ditto.
        (WebCore::HTMLMediaElement::selectMediaResource): Ditto.
        (WebCore::HTMLMediaElement::addTextTrack): Ditto.
        (WebCore::HTMLMediaElement::clearMediaPlayer): Ditto.
        (WebCore::HTMLMediaElement::resume): Ditto.
        (WebCore::HTMLMediaElement::setMediaControlsDependOnPageScaleFactor): Ditto.

        * html/HTMLNameCollection.cpp: Removed unneeded include of HTMLDocument.h.

        * html/HTMLPlugInImageElement.cpp:
        (WebCore::HTMLPlugInImageElement::~HTMLPlugInImageElement): Pass a reference.
        (WebCore::HTMLPlugInImageElement::createElementRenderer): Ditto.
        (WebCore::HTMLPlugInImageElement::didMoveToNewDocument): Ditto.

        * html/HTMLSourceElement.cpp: Removed unneeded include of HTMLDocument.h.
        * html/HTMLTemplateElement.cpp: Ditto.

        * html/RadioInputType.cpp:
        (WebCore::RadioInputType::matchesIndeterminatePseudoClass const):
        Pass a reference.
        * loader/DocumentWriter.cpp:
        (WebCore::DocumentWriter::begin): Ditto.
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener): Ditto.
        (WebCore::DOMWindow::removeEventListener): Ditto.
        (WebCore::DOMWindow::removeAllEventListeners): Ditto.

        * page/EventHandler.cpp:
        (WebCore::EventHandler::didStartDrag): Use a reference.

        * page/EventSource.cpp:
        (WebCore::EventSource::create): Pass reference.
        (WebCore::EventSource::networkRequestEnded): Ditto.
        (WebCore::EventSource::close): Ditto.
        (WebCore::EventSource::abortConnectionAttempt): Ditto.

        * page/Frame.cpp: Removed unneeded include of HTMLDocument.h.
        * page/FrameView.cpp: Ditto.
        (WebCore::FrameView::qualifiesAsVisuallyNonEmpty const): Use reference.

        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::updateStateMachine): Pass reference.

        * page/animation/CSSAnimationController.cpp:
        (WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStyle): Take reference.
        (WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStyle): Ditto.
        (WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStartTimeResponse): Ditto.
        (WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStartTimeResponse): Ditto.
        (WebCore::CSSAnimationControllerPrivate::animationWillBeRemoved): Ditto.
        * page/animation/CSSAnimationControllerPrivate.h: Ditto.

        * page/animation/CompositeAnimation.cpp:
        (WebCore::CompositeAnimation::clearElement): Pass reference.
        (WebCore::CompositeAnimation::updateTransitions): Ditto.
        (WebCore::CompositeAnimation::updateKeyframeAnimations): Ditto.
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::initWithSimpleHTMLDocument): Ditto.

        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::layerContentsFormat): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END so
        I can continue to compile with latest headers.

        * rendering/CSSFilter.cpp:
        (WebCore::CSSFilter::buildReferenceFilter): Pass reference, small coding style
        tweaks as well.

        * rendering/svg/RenderSVGResource.cpp:
        (WebCore::removeFromCacheAndInvalidateDependencies): Pass reference.
        * rendering/svg/RenderSVGResourceContainer.cpp:
        (WebCore::RenderSVGResourceContainer::registerResource): Ditto.
        * rendering/svg/SVGResources.cpp:
        (WebCore::registerPendingResource): Ditto.
        * rendering/svg/SVGResourcesCache.cpp:
        (WebCore::SVGResourcesCache::resourceDestroyed): Ditto.

        * svg/SVGDocumentExtensions.cpp:
        (WebCore::SVGDocumentExtensions::addTimeContainer): Take reference.
        (WebCore::SVGDocumentExtensions::removeTimeContainer): Ditto.
        (WebCore::SVGDocumentExtensions::addResource): Ditto.
        (WebCore::SVGDocumentExtensions::addPendingResource): Ditto.
        (WebCore::SVGDocumentExtensions::isElementWithPendingResources const): Ditto.
        (WebCore::SVGDocumentExtensions::isPendingResource const): Ditto.
        (WebCore::SVGDocumentExtensions::clearHasPendingResourcesIfPossible): Ditto.
        (WebCore::SVGDocumentExtensions::removeElementFromPendingResources): Ditto.
        (WebCore::SVGDocumentExtensions::setOfElementsReferencingTarget): Ditto.
        (WebCore::SVGDocumentExtensions::addElementReferencingTarget): Ditto.
        (WebCore::SVGDocumentExtensions::removeAllTargetReferencesForElement): Ditto.
        (WebCore::SVGDocumentExtensions::clearTargetDependencies): Ditto.
        (WebCore::SVGDocumentExtensions::removeAllElementReferencesForTarget): Ditto.
        (WebCore::SVGDocumentExtensions::registerSVGFontFaceElement): Ditto.
        (WebCore::SVGDocumentExtensions::unregisterSVGFontFaceElement): Ditto.
        * svg/SVGDocumentExtensions.h: Ditto.

        * svg/SVGElement.cpp:
        (WebCore::SVGElement::~SVGElement): Pass reference.
        (WebCore::SVGElement::removedFromAncestor): Ditto.
        (WebCore::SVGElement::buildPendingResourcesIfNeeded): Ditto.
        * svg/SVGFEImageElement.cpp:
        (WebCore::SVGFEImageElement::clearResourceReferences): Ditto.
        (WebCore::SVGFEImageElement::buildPendingResource): Ditto.
        * svg/SVGFontFaceElement.cpp:
        (WebCore::SVGFontFaceElement::insertedIntoAncestor): Ditto.
        (WebCore::SVGFontFaceElement::removedFromAncestor): Ditto.
        * svg/SVGMPathElement.cpp:
        (WebCore::SVGMPathElement::buildPendingResource): Ditto.
        (WebCore::SVGMPathElement::clearResourceReferences): Ditto.
        * svg/SVGPathElement.cpp:
        (WebCore::SVGPathElement::invalidateMPathDependencies): Ditto.
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::SVGSVGElement): Ditto.
        (WebCore::SVGSVGElement::~SVGSVGElement): Ditto.
        (WebCore::SVGSVGElement::didMoveToNewDocument): Ditto.
        (WebCore::SVGSVGElement::insertedIntoAncestor): Ditto.
        (WebCore::SVGSVGElement::removedFromAncestor): Ditto.
        * svg/SVGTRefElement.cpp:
        (WebCore::SVGTRefElement::detachTarget): Ditto.
        (WebCore::SVGTRefElement::buildPendingResource): Ditto.
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::clearResourceReferences): Ditto.
        (WebCore::SVGTextPathElement::buildPendingResource): Ditto.
        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::updateShadowTree): Ditto.
        * svg/animation/SVGSMILElement.cpp:
        (WebCore::SVGSMILElement::clearResourceReferences): Ditto.
        (WebCore::SVGSMILElement::buildPendingResource): Ditto.
        * testing/Internals.cpp:
        (WebCore::Internals::addTextMatchMarker): Ditto.
        (WebCore::Internals::webkitWillEnterFullScreenForElement): Ditto.
        (WebCore::Internals::webkitDidEnterFullScreenForElement): Ditto.
        (WebCore::Internals::webkitWillExitFullScreenForElement): Ditto.
        (WebCore::Internals::webkitDidExitFullScreenForElement): Ditto.
        * workers/Worker.cpp:
        (WebCore::Worker::create): Ditto.
        (WebCore::Worker::notifyFinished): Ditto.
        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::scheduleJob): Ditto.
        (WebCore::ServiceWorkerContainer::jobDidFinish): Ditto.
        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::prepareToSend): Ditto.
        (WebCore::XMLHttpRequest::createRequest): Ditto.
        (WebCore::XMLHttpRequest::internalAbort): Ditto.
        (WebCore::XMLHttpRequest::networkErrorTimerFired): Ditto.
        (WebCore::XMLHttpRequest::didFail): Ditto.
        (WebCore::XMLHttpRequest::didFinishLoading): Ditto.

        * xml/XPathStep.cpp: Removed unneeded include of HTMLDocument.h.
        (WebCore::XPath::nodeMatchesBasicTest): Changed code to call isHTMLDocument
        rather than is<HTMLDocument> since this is not a type check for a downcast,
        but rather a behavioral difference that does not depend on any of the data
        stored in an HTMLDocument or the use of a distinct C++ class for it.

        * xml/XSLTProcessor.cpp:
        (WebCore::XSLTProcessor::createDocumentFromSource): Pass a reference.

2019-01-21  David Kilzer  <ddkilzer@apple.com>

        Switch remaining VideoToolbox soft-linking in WebCore over to VideoToolboxSoftLink.{cpp,h}
        <https://webkit.org/b/193645>
        <rdar://problem/47421574>

        Reviewed by Alex Christensen.

        * platform/cocoa/VideoToolboxSoftLink.cpp:
        * platform/cocoa/VideoToolboxSoftLink.h:
        - Move soft-linking of VTPixelBufferConformer* functions from
          PixelBufferConformerCV.cpp to here.
        * platform/graphics/cv/PixelBufferConformerCV.cpp:
        - Remove local soft-linking of VideoToolbox.framework and switch
          to VideoToolboxSoftLink.h.

2019-01-21  Antti Koivisto  <antti@apple.com>

        Move delegatesScrolling() tests to lower level conversion function in ScrollView
        https://bugs.webkit.org/show_bug.cgi?id=193649

        Reviewed by Frédéric Wang.

        This reduces places where these tests are needed and helps avoid mistakes.

        * dom/Document.cpp:
        (WebCore::computeIntersectionState):
        * page/FrameView.cpp:
        (WebCore::FrameView::convertFromRendererToContainingView const):
        (WebCore::FrameView::convertFromContainingViewToRenderer const):
        * platform/ScrollView.cpp:
        (WebCore::ScrollView::viewToContents const):
        (WebCore::ScrollView::contentsToView const):
        (WebCore::ScrollView::contentsToContainingViewContents const):
        (WebCore::ScrollView::rootViewToContents const):
        (WebCore::ScrollView::contentsToRootView const):
        (WebCore::ScrollView::windowToContents const):
        (WebCore::ScrollView::contentsToWindow const):

2019-01-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r239915): about 130 test failures on WPE
        https://bugs.webkit.org/show_bug.cgi?id=193395

        Reviewed by Žan Doberšek.

        Since r239915 we are only overriding the characters with Default_Ignorable unicode property when the font
        doesn't support the code point. If the font happens to provide a glyph for the character, it's later ignored by
        harfbuzz when shaping, but the simple text code path doesn't ignore them unless there isn't a glyph.

        * platform/graphics/WidthIterator.cpp:
        (WebCore::WidthIterator::advanceInternal): Always ignore characters with Default_Ignorable unicode property.
        (WebCore::characterMustDrawSomething): Moved to CharacterProperties.h and renamed as isDefaultIgnorableCodePoint().
        * platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:
        (WebCore::GlyphPage::fill): Use isDefaultIgnorableCodePoint().
        * platform/text/CharacterProperties.h:
        (WebCore::isDefaultIgnorableCodePoint): Return whether the character has Default_Ignorable unicode property.

2019-01-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement Metal code generation
        https://bugs.webkit.org/show_bug.cgi?id=193531

        Reviewed by Dean Jackson.

        This implements the majority of the metal code generation piece. There are still a few pieces missing,
        that I'll add in follow up patches. There's still enough complexity here that this is worth reviewing
        on its own, though.

        This patch includes a few pieces:
        - Metal typedefs for every WHLSL type. This analysis is actually pretty interesting, because complex
              types depend on their inner types, and the inner types need to be emitted first. Therefore,
              this patch implements a topological sort when emitting types. Also, WHLSL types need to be de-
              duped because array references are implemented in MSL as structs, and if you have two structs
              in MSL with the same contents, those two structs are not equal and cannot be assigned to each
              other. So, this patch creates a trie to de-dup all the UnnamedTypes, and implements a
              dependency graph which includes both nodes in the trie as well as NamedTypes which don't appear
              in the trie.
        - WHLSL enumeration code generation
        - A name mangler, which ensures that no text from the source program is contained within the result
              program
        - Full support for expressions. An expression like "y = *x + 7;" would be converted to something like
              Type1 variable1 = *x;
              Type2 variable2 = 7;
              Type3 variable3 = variable1 + variable2;
              y = variable3;
        - Mostly complete support for control flow. This is tricky because of how we transform WHLSL
              expressions into C++ statements. Therefore, things like "for ( ; *x + 7; )" is difficult to
              compile, because we can't put the "*x + 7" generated statements into the for loop itself.
              Instead, we have to emit this code inside the loop, in all the places that would implicitly run
              it. This patch doesn't fully handle this, see below. (If MSL supported lambdas, we could put
              the statements into a lambda and do something like "for ( ; theLambda(); )" but MSL doesn't
              support lambdas.)

        Missing pieces:
        - Entry point pack / unpack code
        - Support for "continue" (See above regarding control flow)
        - Knowing whether or not a switch case should end with break or fallthrough
        - Trapping
        - Zero filling variables
        - Code generation for compiler-generated native functions (this patch supports native functions in the
              standard library), texture functions, and HLSL's half <-> int functions.

        No new tests because it isn't hooked up yet. As soon as we can do entry point packing and unpacking,
        I'll start porting the test suite.

        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
        (WebCore::WHLSL::AST::BuiltInSemantic::targetIndex):
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
        (WebCore::WHLSL::AST::Expression::resolvedType):
        (WebCore::WHLSL::AST::Expression::type): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
        (WebCore::WHLSL::AST::FunctionDeclaration::name):
        * Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
        (WebCore::WHLSL::AST::StructureDefinition::find):
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp: Added.
        (WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::helperTypes):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::signature):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::unpack):
        (WebCore::WHLSL::Metal::EntryPointScaffolding::pack):
        * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: Added.
        (WebCore::WHLSL::Metal::FunctionDeclarationWriter::FunctionDeclarationWriter):
        (WebCore::WHLSL::Metal::FunctionDeclarationWriter::toString):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::toString):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString):
        (WebCore::WHLSL::Metal::FunctionDefinitionWriter::generateNextVariableName):
        (WebCore::WHLSL::Metal::metalFunctions):
        * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h.
        (WebCore::WHLSL::Metal::generateMetalCode):
        * Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp: Added.
        (WebCore::WHLSL::Metal::getNativeName):
        (WebCore::WHLSL::Metal::mapFunctionName):
        (WebCore::WHLSL::Metal::convertAddressSpace):
        (WebCore::WHLSL::Metal::writeNativeFunction):
        * Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: Added.
        (WebCore::WHLSL::Metal::BaseTypeNameNode::BaseTypeNameNode):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayTypeNameNode const):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayReferenceTypeNameNode const):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::isPointerTypeNameNode const):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::isReferenceTypeNameNode const):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::children):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::append):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::parent):
        (WebCore::WHLSL::Metal::BaseTypeNameNode::mangledName const):
        (WebCore::WHLSL::Metal::ArrayTypeNameNode::ArrayTypeNameNode):
        (WebCore::WHLSL::Metal::ArrayTypeNameNode::numElements const):
        (WebCore::WHLSL::Metal::ArrayReferenceTypeNameNode::ArrayReferenceTypeNameNode):
        (WebCore::WHLSL::Metal::ArrayReferenceTypeNameNode::addressSpace const):
        (WebCore::WHLSL::Metal::PointerTypeNameNode::PointerTypeNameNode):
        (WebCore::WHLSL::Metal::PointerTypeNameNode::addressSpace const):
        (WebCore::WHLSL::Metal::ReferenceTypeNameNode::ReferenceTypeNameNode):
        (WebCore::WHLSL::Metal::ReferenceTypeNameNode::namedType):
        (WebCore::WHLSL::Metal::TypeNamer::TypeNamer):
        (WebCore::WHLSL::Metal::TypeNamer::visit):
        (WebCore::WHLSL::Metal::findInVector):
        (WebCore::WHLSL::Metal::find):
        (WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
        (WebCore::WHLSL::Metal::TypeNamer::createNameNode):
        (WebCore::WHLSL::Metal::TypeNamer::insert):
        (WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter):
        (WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::toString):
        (WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::visit):
        (WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations):
        (WebCore::WHLSL::Metal::toString):
        (WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
        (WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
        (WebCore::WHLSL::Metal::TypeNamer::metalTypeDefinitions):
        (WebCore::WHLSL::Metal::TypeNamer::mangledNameForEnumerationMember):
        (WebCore::WHLSL::Metal::TypeNamer::mangledNameForStructureElement):
        (WebCore::WHLSL::Metal::TypeNamer::metalTypes):
        * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h: Added.
        (WebCore::WHLSL::Metal::TypeNamer::generateNextTypeName):
        (WebCore::WHLSL::Metal::TypeNamer::generateNextStructureElementName):
        (WebCore::WHLSL::Metal::TypeNamer::generateNextEnumerationMemberName):
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        (WebCore::WHLSL::checkSemantics):
        (WebCore::WHLSL::Checker::visit):
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
        (WebCore::WHLSL::Gatherer::visit):
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
        (WebCore::WHLSL::EntryPointItem::EntryPointItem):
        * Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp: Removed.
        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.
        (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
        (WebCore::WHLSL::checkStatementBehavior):
        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add the statement behavior checker
        https://bugs.webkit.org/show_bug.cgi?id=193487

        Reviewed by Dean Jackson.

        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Spec/source/index.rst#typing-statements
        into C++. It is meant to replace the ReturnChecker and UnreachableCodeChecker 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/WHLSLLoopChecker.cpp: Removed. StatementBehaviorChecker does everything that LoopChecker
        does.
        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.
        (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
        (WebCore::WHLSL::checkStatementBehavior):
        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r240174): Wrong preprocessor guards in RenderImage::paintAreaElementFocusRing
        https://bugs.webkit.org/show_bug.cgi?id=193630

        Reviewed by Daniel Bates.

        r240174 inadvertently disabled this function on non-Apple platforms.

        This fixes layout test fast/images/image-map-outline-in-positioned-container.html.

        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paintAreaElementFocusRing):

2019-01-20  chris fleizach  <cfleizach@apple.com>

        AX: Support returning relative frames for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=193414
        <rdar://problem/47268501>

        Reviewed by Zalan Bujtas.

        Create a way for assistive technologies to retrieve a frame in page space that can be transformed to its final screen space by having the AT message the UI process separately.

        Consolidate rect/point conversion methods for macOS and iOS.
        This is only needed on WebKit2, where we have to reach back across to the hosting process to get the final frame, so we can skip this test on WK1.

        Tests: accessibility/mac/relative-frame.html

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _accessibilityConvertPointToViewSpace:]):
        (-[WebAccessibilityObjectWrapper _accessibilityRelativeFrame]):
        (-[WebAccessibilityObjectWrapper accessibilityVisibleContentRect]):
        (-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
        (-[WebAccessibilityObjectWrapper accessibilityFrame]):
        (-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
        (-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):
        (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.
        (-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (convertPathToScreenSpaceFunction):
        (-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
        (-[WebAccessibilityObjectWrapperBase convertPointToScreenSpace:]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
        (-[WebAccessibilityObjectWrapper position]):
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.

2019-01-20  Simon Fraser  <simon.fraser@apple.com>

        On RenderBox, make client sizing be derived from padding box sizing
        https://bugs.webkit.org/show_bug.cgi?id=193621

        Reviewed by Daniel Bates.

        I never liked how clientWidth/Height, an IE-originated term, was used as the basis
        for various RenderBox geometry functions.

        Fix by adding some functions which return the dimensions of the padding box (which
        is the inside of the border and any scrollbar), and define clientWidth/Height in
        terms of them.

        Also add paddingBoxRectIncludingScrollbar() function that is used by compositing code.

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::clientWidth const):
        (WebCore::RenderBox::clientHeight const):
        * rendering/RenderBox.h:
        (WebCore::RenderBox::borderBoxRect const):
        (WebCore::RenderBox::computedCSSContentBoxRect const):
        (WebCore::RenderBox::contentWidth const):
        (WebCore::RenderBox::contentHeight const):
        (WebCore::RenderBox::paddingBoxWidth const):
        (WebCore::RenderBox::paddingBoxHeight const):
        (WebCore::RenderBox::paddingBoxRect const):
        (WebCore::RenderBox::paddingBoxRectIncludingScrollbar const):
        (WebCore::RenderBox::hasHorizontalOverflow const):
        (WebCore::RenderBox::hasVerticalOverflow const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
        (WebCore::RenderLayerBacking::updateGeometry):

2019-01-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r238275.

        Regressed css3/shapes/shape-outside/shape-image/shape-
        image-025.html

        Reverted changeset:

        "ScalableImageDecoder: don't forcefully decode image data when
        querying frame completeness, duration"
        https://bugs.webkit.org/show_bug.cgi?id=191354
        https://trac.webkit.org/changeset/238275

2019-01-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] <body>'s overflow property value is propagated to viewport
        https://bugs.webkit.org/show_bug.cgi?id=193617

        Reviewed by Antti Koivisto.

        When the root element is an HTML "HTML" element or an XHTML "html" element, and that element has an HTML "BODY" element
        or an XHTML "body" element as a child, user agents must instead apply the 'overflow' property from the first such child element to the viewport,
        if the value on the root element is 'visible'. The 'visible' value when used for the viewport must be interpreted as 'auto'.
        The element from which the value is propagated must have a used value for 'overflow' of 'visible'.

        This also has impact on layout since <body style="overflow: hidden"> would establish a block formatting context.

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::isOverflowVisible const):

2019-01-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r240209.

        Broke GTK/WPE injected bundle

        Reverted changeset:

        "AX: Support returning relative frames for accessibility"
        https://bugs.webkit.org/show_bug.cgi?id=193414
        https://trac.webkit.org/changeset/240209

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        Reviewed by Sam Weinig.

        * Configurations/WebCore.xcconfig: Removed -iframework options from OTHER_CFLAGS and
          OTHER_CPLUSPLUSFLAGS.
        * editing/mac/DictionaryLookupLegacy.mm: Import Quartz.h instead of a PDFKit header.
        * platform/mac/PlatformEventFactoryMac.mm: Import Carbon.h instead of HIToolbox headers.
        * platform/text/mac/TextEncodingRegistryMac.mm: Import Carbon.h instead of CarbonCore.h.

2019-01-20  chris fleizach  <cfleizach@apple.com>

        AX: Support returning relative frames for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=193414
        <rdar://problem/47268501>

        Reviewed by Zalan Bujtas.

        Create a way for assistive technologies to retrieve a frame in page space that can be transformed to its final screen space by having the AT message the UI process separately.

        Consolidate rect/point conversion methods for macOS and iOS.
        This is only needed on WebKit2, where we have to reach back across to the hosting process to get the final frame, so we can skip this test on WK1.

        Tests: accessibility/mac/relative-frame.html

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _accessibilityConvertPointToViewSpace:]):
        (-[WebAccessibilityObjectWrapper _accessibilityRelativeFrame]):
        (-[WebAccessibilityObjectWrapper accessibilityVisibleContentRect]):
        (-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
        (-[WebAccessibilityObjectWrapper accessibilityFrame]):
        (-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
        (-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):
        (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.
        (-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
        (convertPathToScreenSpaceFunction):
        (-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
        (-[WebAccessibilityObjectWrapperBase convertPointToScreenSpace:]): Deleted.
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
        (-[WebAccessibilityObjectWrapper position]):
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.

2019-01-20  Antoine Quint  <graouts@apple.com>

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577
        <rdar://problem/47408511>

        Unreviewed. Also enable Pointer Events for iosmac.

        * Configurations/FeatureDefines.xcconfig:

2019-01-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][Floats] Ensure that floats in FloatingContext::m_floats are always horizontally ordered.
        https://bugs.webkit.org/show_bug.cgi?id=193613

        Reviewed by Antti Koivisto.

        Float items in m_floats list should stay in horizontal position order (left/right edge).

        When adding a new float item to floating state list, we have to ensure that it is definitely the left(right)-most item.
        Normally it is, but negative horizontal margins can push the float box beyond another float box.

        <div style="float: left; height: 10px; width: 10px;"></div>
        <div style="float: left; height: 10px; width: 10px; margin-left: -80px;"></div>

        The second float's right edge beyond the first float' left edge. THe second float is not the right(inner)-most float anymore.

        Test: fast/block/float/floats-with-negative-horizontal-margin.html

        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::areFloatsHorizontallySorted):
        (WebCore::Layout::FloatingContext::positionForFloat const):
        (WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::append):

2019-01-19  Youenn Fablet  <youenn@apple.com>

        getUserMedia with a deviceId exact constraint with an empty string value should succeed
        https://bugs.webkit.org/show_bug.cgi?id=193541
        <rdar://problem/47357218>

        Reviewed by Eric Carlson.

        If there is a deviceId constraint, remove any empty string from ideal/exact string list.
        This will make the device selection be solely based on other constraints.
        An improvement might be for 'exact' constraint to pick the default device.
        There is currently no such notion of a default device.
        Picking the best fitting device seems a good tradeoff.
        Covered by updated test.

        * platform/mediastream/MediaConstraints.cpp:
        (WebCore::MediaTrackConstraintSetMap::set):
        * platform/mediastream/MediaConstraints.h:
        (WebCore::StringConstraint::removeEmptyStringConstraint):

2019-01-19  Eric Liang  <ericliang@apple.com>

        AXSelected attribute on RadioButton should not be settable.
        https://bugs.webkit.org/show_bug.cgi?id=193371

        Reviewed by Chris Fleizach.

        Test: accessibility/set-selected-editable.html

        * accessibility/AccessibilityNodeObject.cpp:
        (WebCore::AccessibilityNodeObject::canSetSelectedAttribute const):

2019-01-19  Antoine Quint  <graouts@apple.com>

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577

        Reviewed by Dean Jackson.

        Only expose the PointerEvent interface if the POINTER_EVENTS feature is enabled.

        * Configurations/FeatureDefines.xcconfig:
        * dom/EventNames.in:
        * dom/PointerEvent.cpp:
        * dom/PointerEvent.h:
        * dom/PointerEvent.idl:

2019-01-18  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Updating input mode should update the software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=193565
        <rdar://problem/47376334>

        Reviewed by Wenson Hsieh.

        Let the chrome client know that the focused element's inputmode had changed.

        Test: fast/forms/ios/inputmode-none-removed.html

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::parseAttribute):
        * page/ChromeClient.h:

2019-01-18  Brian Burg  <bburg@apple.com>

        Automation.computeElementLayout should return visual viewport-aware coordinates
        https://bugs.webkit.org/show_bug.cgi?id=193598
        <rdar://problem/35325644>

        Reviewed by Simon Fraser.

        * page/FrameView.h: export symbol to be usable from WebKit.
        * page/FrameView.cpp:
        (WebCore::FrameView::clientToLayoutViewportRect const): Added.
        Do the same thing as clientToLayoutViewportPoint with a rect instead.


2019-01-18  Eric Carlson  <eric.carlson@apple.com>

        Revert r238815, it broke WK1 video fullscreen on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193586
        <rdar://problem/47358941>

        Reviewed by Jer Noble.

        * PlatformMac.cmake:
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::supportsFullscreen const):

2019-01-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: don't keep the injected sub-objects alive between runs
        https://bugs.webkit.org/show_bug.cgi?id=193594
        <rdar://problem/47398091>

        Reviewed by Joseph Pecoraro.

        Rather than save the `InspectorAuditAccessibilityObject` and `InspectorAuditDOMObject`
        between individual `Audit.setup` invocations, we should only keep them alive so long as the
        injected `WebInspectorAudit` object is alive (e.g. from `Audit.setup` to `Audit.teardown`).

        This change fixes inspector/audit/run-accessibility.html.

        * inspector/agents/page/PageAuditAgent.h:
        * inspector/agents/page/PageAuditAgent.cpp:
        (WebCore::PageAuditAgent::populateAuditObject):

2019-01-18  Daniel Bates  <dabates@apple.com>

        Another attempt to fix the iOS build following <https://trac.webkit.org/changeset/240174>
        (https://bugs.webkit.org/show_bug.cgi?id=193583)

        Substitute ENABLE(FULL_KEYBOARD_ACCESS) for PLATFORM(MAC). On Mac, we always build with
        ENABLE(FULL_KEYBOARD_ACCESS) enabled.

        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::paintFocusRing):

2019-01-18  Daniel Bates  <dabates@apple.com>

        Fix some build issues.

        Including UIKitSoftLinking.h is not compatible with unified builds.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-18  Justin Fan  <justin_fan@apple.com>

        (WIP) [WebGPU] WebGPUProgrammablePassEncoder::setBindGroup prototype
        https://bugs.webkit.org/show_bug.cgi?id=193457
        <rdar://problem/47296678>

        Reviewed by Dean Jackson.

        Enable WebGPU developers to assign buffer bind groups and access them via render pipeline. 

        Test: webgpu/buffer-resource-triangles.html

        * Modules/webgpu/WebGPUBindGroup.h:
        (WebCore::WebGPUBindGroup::bindGroup const): Added getter.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: 
        (WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Added. Delegates call to GPUProgrammablePassEncoder.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h: Enable setBindGroup.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl: ditto.
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUBindGroup.h: 
        (WebCore::GPUBindGroup::layout const): Added getter.
        (WebCore::GPUBindGroup::bindings const): ditto.
        * platform/graphics/gpu/GPUBindGroupLayout.h: Added ArgumentEncoderBuffer struct to retain ptr to both MTLArgumentEncoders and their argument MTLBuffers.
        (WebCore::GPUBindGroupLayout::ArgumentEncoderBuffer::operator! const):
        (WebCore::GPUBindGroupLayout::vertexArguments const): Added. Getter.
        (WebCore::GPUBindGroupLayout::fragmentArguments const): ditto.
        (WebCore::GPUBindGroupLayout::computeArguments const): ditto.
        * platform/graphics/gpu/GPUDevice.cpp: Refactored unnecessary header include.
        * platform/graphics/gpu/GPUDevice.h: ditto.
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h:
        (WebCore::GPUProgrammablePassEncoder::setVertexBuffer): Added. Delegates to MTLCommandEncoder call.
        (WebCore::GPUProgrammablePassEncoder::setFragmentBuffer): ditto.
        * platform/graphics/gpu/GPURenderPassEncoder.h: 
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::tryCreateArgumentEncoderAndBuffer): Replace newEncoder(). Now create an ArgumentEncoderBuffer object from an array of MTLArgumentDescriptors, if able.
        (WebCore::GPUBindGroupLayout::tryCreate): Refactor to support ArgumentEncoderBuffers, and allocate MTLBuffers for argument encoders.
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout): Support ArgumentEncoderBuffers.
        (WebCore::newEncoder): Deleted.
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
        (WebCore::GPUCommandBuffer::GPUCommandBuffer):
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Set a buffer resource on the MTLArgumentEncoder, and call useResource on the command encoder.
        (WebCore::GPUProgrammablePassEncoder::setBindGroup): Parses the bind group to assign each resource on its matching MTLArgumentEncoder.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm: 
        (WebCore::GPURenderPassEncoder::useResource): Resolves call from GPUProgrammablePassEncoder to call on MTLRenderCommandEncoder.
        (WebCore::GPURenderPassEncoder::setVertexBuffer): ditto.
        (WebCore::GPURenderPassEncoder::setFragmentBuffer): ditto.

2019-01-18  Daniel Bates  <dabates@apple.com>

        Another attempt to fix the iOS build following <https://trac.webkit.org/changeset/240174>
        (https://bugs.webkit.org/show_bug.cgi?id=193583)

        Only override RenderTheme::platformFocusRingColor() when building with ENABLE(FULL_KEYBOARD_ACCESS)
        enabled.

        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:

2019-01-18  Daniel Bates  <dabates@apple.com>

        Attempt to fix the iOS build following <https://trac.webkit.org/changeset/240174>
        (https://bugs.webkit.org/show_bug.cgi?id=193583)

        Namespace qualify call to getUIColorClass().

        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::platformFocusRingColor const):

2019-01-18  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-18  Daniel Bates  <dabates@apple.com>

        CSS auto focus-ring outlines don't render on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193583
        <rdar://problem/6508697>

        Reviewed by Simon Fraser.

        Implement support for drawing focus rings on iOS when built with ENABLE(FULL_KEYBOARD_ACCESS)
        enabled.

        For now the focus ring drawing for iOS is tangled up into the Mac-specific code to draw
        animated focus rings. I will fix this in <https://bugs.webkit.org/show_bug.cgi?id=193591>.

        * SourcesCocoa.txt: Add file ColorIOS.mm.
        * WebCore.xcodeproj/project.pbxproj: Add files ColorIOS.{h, mm}.

        * platform/graphics/GraphicsContext.h:
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::drawFocusRingAtTime):
        (WebCore::GraphicsContext::drawFocusRing):
        Compile focus ring drawing code when building with ENABLE(FULL_KEYBOARD_ACCESS) enabled.
        This is always enabled on Mac.
        
        * platform/ios/ColorIOS.h: Added.
        * platform/ios/ColorIOS.mm: Added.
        (WebCore::colorFromUIColor): Convert a UIColor to a WebCore::Color.

        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::paintFocusRing):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paintAreaElementFocusRing):
        Compile focus ring drawing code when building with ENABLE(FULL_KEYBOARD_ACCESS) enabled.
        This is always enabled on Mac.

        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::platformFocusRingColor const): Implement this override for iOS.
        (WebCore::RenderThemeIOS::supportsFocusRing const): Implement this override for iOS to always
        return false - the iOS theme code does not support painting focus rings. By returning false we
        will use the platform-independent, non-theme code path to draw focus rings.

2019-01-18  David Kilzer  <ddkilzer@apple.com>

        Follow-up: Switch remaining UIKit soft-linking in WebCore, WebKitLegacy over to UIKitSoftLink.{cpp,h}
        <https://webkit.org/b/193568>
        <rdar://problem/47381130>

        * editing/cocoa/DictionaryLookup.mm:
        (-[WebRevealHighlight drawHighlightContentForItem:context:]):
        Fix the build by changing getUIApplicationClass() to
        PAL::getUIApplicationClass().

2019-01-18  David Kilzer  <ddkilzer@apple.com>

        Switch remaining UIKit soft-linking in WebCore, WebKitLegacy over to UIKitSoftLink.{cpp,h}
        <https://webkit.org/b/193568>
        <rdar://problem/47381130>

        Reviewed by Alex Christensen.

        This does the following:
        - Removes local soft-linking of UIKit.
        - Switches to using PAL functions for soft-linking.

        * SourcesCocoa.txt: Add 4 source files to UnifiedSources.
        * WebCore.xcodeproj/project.pbxproj: Remove 4 sources files
        from WebCore target now that they are in UnifiedSources.
        * editing/cocoa/DictionaryLookup.mm:
        * editing/cocoa/HTMLConverter.mm: Move SPI to UIKitSPI.h. Remove
        declarations in public headers.
        (_fontForNameAndSize): Change use of getUIFontClass() to
        PlatformFontClass.
        (HTMLConverter::_processElement): Add cast here since compiler
        finds the wrong selector for +clearColor and thinks it returns a
        `CIColor *` object.  The same cast already exists in
        VideoFullscreenInterfaceAVKit.mm.
        * page/cocoa/SettingsBaseCocoa.mm:
        (WebCore::SettingsBase::defaultTextAutosizingEnabled):
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (-[WebMediaSessionHelper initWithCallback:]):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::exernalDeviceDisplayNameForPlayer):
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::showLetterpressedGlyphsWithAdvances):
        * platform/ios/DragImageIOS.mm:
        (WebCore::scaleDragImage):
        (WebCore::createDragImageFromImage):
        (WebCore::cascadeForSystemFont):
        (WebCore::createDragImageForLink):
        (WebCore::createDragImageForSelection):
        (WebCore::createDragImageForRange):
        (WebCore::createDragImageForColor):
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::PlatformPasteboard):
        (WebCore::PlatformPasteboard::color):
        (WebCore::registerItemToPasteboard):
        (WebCore::PlatformPasteboard::setColor):
        * platform/ios/ThemeIOS.mm:
        (WebCore::ThemeIOS::userPrefersReducedMotion const):
        * platform/ios/UserAgentIOS.mm:
        (WebCore::isClassic):
        (WebCore::isClassicPad):
        (WebCore::isClassicPhone):
        * platform/ios/ValidationBubbleIOS.mm:
        (-[WebValidationBubbleTapRecognizer initWithPopoverController:]):
        (WebCore::ValidationBubble::ValidationBubble):
        (WebCore::ValidationBubble::show):
        (WebCore::fallbackViewController):
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (clearUIColor):
        (allocWebAVPictureInPicturePlayerLayerViewInstance):
        (WebAVPlayerLayerView_videoView):
        (fallbackViewController):
        (VideoFullscreenInterfaceAVKit::doSetup):
        * platform/ios/WebEvent.mm:
        (+[WebEvent modifierFlags]):
        * platform/ios/WebItemProviderPasteboard.mm:
        (allLoadableClasses):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::setUpFullscreen):
        * platform/network/mac/WebCoreURLResponse.mm: Add missing header
        after unified sources were updated.
        * rendering/RenderThemeIOS.mm:
        (WebCore::contentSizeCategoryDidChange):
        (WebCore::RenderThemeIOS::RenderThemeIOS):
        (WebCore::RenderThemeIOS::contentSizeCategory):
        (WebCore::RenderThemeIOS::systemColor const):
        (WebCore::attachmentActionColor):
        (WebCore::attachmentTitleColor):
        (WebCore::attachmentSubtitleColor):
        (WebCore::iconForAttachment):
        * testing/Internals.mm:
        (WebCore::Internals::userPrefersReducedMotion const):

2019-01-18  Antti Koivisto  <antti@apple.com>

        Implement asynchronous frame scrolling for iOS
        https://bugs.webkit.org/show_bug.cgi?id=193539
        <rdar://problem/47379873>

        Reviewed by Simon Fraser.

        This patch implements UIScrollView based frame scrolling on iOS, enabled by the "Async Frame Scrolling"
        internal setting (still off by default).

        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):

        Export ScrollingTreeFrameScrollingNodeIOS.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
        (WebCore::RenderLayerCompositor::frameViewDidChangeSize):
        (WebCore::RenderLayerCompositor::updateScrollLayerClipping):

        If we don't have a separate clip layer, just resize and position the scroll layer.

        (WebCore::RenderLayerCompositor::updateRootLayerPosition):
        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
        (WebCore::RenderLayerCompositor::ensureRootLayer):

        Use GraphicsLayer::Type::Scrolling as the scroll layer type when async frame scrolling is enabled.
        Don't create a separate clip layer since the scroll layer will handle clipping.

        * rendering/RenderLayerCompositor.h:

2019-01-18  Ali Juma  <ajuma@chromium.org>

        FetchResponse::url should return the empty string for tainted responses
        https://bugs.webkit.org/show_bug.cgi?id=193553

        Reviewed by Youenn Fablet.

        Check whether the response is tainted in FetchResponse::url, to match
        the behavior described in https://fetch.spec.whatwg.org/#concept-filtered-response-opaque.

        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::url const):

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
        https://bugs.webkit.org/show_bug.cgi?id=193361
        <rdar://problem/47099573>

        Reviewed by Geoffrey Garen.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::commitProvisionalLoad):
        When restoring from PageCache, make sure we notify the client that the load was committed
        *before* we tell it that the navigation is complete. This would confuse the ProvisionalPageProxy
        logic in the UIProcess.

2019-01-16  Devin Rousso  <drousso@apple.com>

        Web Inspector: extend overlay element bounds lines to the right/below as well
        https://bugs.webkit.org/show_bug.cgi?id=193336

        Reviewed by Matt Baker.

        This patch is purely a visual change for WebInspector, and doesn't affect anything else.

        * inspector/InspectorOverlayPage.js:
        (_drawBounds):

2019-01-16  Youenn Fablet  <youenn@apple.com>

        Prevent WorkerRunLoop::runInMode from spinning in nested cases
        https://bugs.webkit.org/show_bug.cgi?id=193359
        <rdar://problem/46345353>

        Reviewed by Joseph Pecoraro.

        Speculative fix for some cases where service worker is spinning and consuming a lot of CPU.
        The hypothesis is that:
        - Service Worker is checking for its script freshness through WorkerScriptLoader.
        This triggers the worker run loop to be nested.
        - The run loop timer is active and needs to fire immediately.
        The hypothesis is that this happens in some cases like restarting a device after sleep mode.

        WorkerRunLoop::runInMode will then compute a 0 timeout value for getting a message.
        This will trigger a timeout while waiting for the message queue.
        Since the run loop is nested,  the run loop timer will not be able to fire,
        and it will keep ask to fire immediately.
        runInMode will return timeout as a result and WorkerRunLoop::run will call it immediately.

        The fix is to prevent the shared timer to fire only when the run loop is being debugged through the web inspector.
        We compute this by checking the run loop mode as debuggerMode().
        Did some refactoring by introducing helper routines for running the loop and posting task in debugger mode.

        * inspector/WorkerScriptDebugServer.cpp:
        (WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):
        * workers/WorkerInspectorProxy.cpp:
        (WebCore::WorkerInspectorProxy::resumeWorkerIfPaused):
        (WebCore::WorkerInspectorProxy::connectToWorkerInspectorController):
        (WebCore::WorkerInspectorProxy::disconnectFromWorkerInspectorController):
        (WebCore::WorkerInspectorProxy::sendMessageToWorkerInspectorController):
        * workers/WorkerRunLoop.cpp:
        (WebCore::ModePredicate::ModePredicate):
        (WebCore::WorkerRunLoop::WorkerRunLoop):
        (WebCore::debuggerMode):
        (WebCore::RunLoopSetup::RunLoopSetup):
        (WebCore::RunLoopSetup::~RunLoopSetup):
        (WebCore::WorkerRunLoop::run):
        (WebCore::WorkerRunLoop::runInDebuggerMode):
        (WebCore::WorkerRunLoop::runInMode):
        (WebCore::WorkerRunLoop::Task::performTask):
        * workers/WorkerRunLoop.h:
        (WebCore::WorkerRunLoop::isBeingDebugged const):
        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::startRunningDebuggerTasks):
        * workers/service/context/ServiceWorkerInspectorProxy.cpp:
        (WebCore::ServiceWorkerInspectorProxy::connectToWorker):
        (WebCore::ServiceWorkerInspectorProxy::disconnectFromWorker):
        (WebCore::ServiceWorkerInspectorProxy::sendMessageToWorker):

2019-01-16  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak WebIDBConnectionToClient for retain cycle
        https://bugs.webkit.org/show_bug.cgi?id=193097
        <rdar://problem/46899601>

        Reviewed by David Kilzer.

        Fix API test failure after r239887. After removing the retain cycle, IDBConnectionToClient will no longer live 
        forever so make sure it is not destructed before UniqueIDBDatabaseConnection unregisters itself.

        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::fireVersionChangeEvent):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didClearObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateIndex):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteIndex):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameIndex):
        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:

2019-01-16  Antti Koivisto  <antti@apple.com>

        Add more assertions to find root cause for release assert hit in StyleResolver
        https://bugs.webkit.org/show_bug.cgi?id=193488
        <rdar://problem/30983040>

        Reviewed by Zalan Bujtas.

        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::~StyleResolver):

        Release assert we are not resolving tree style.

        * dom/Document.cpp:
        (WebCore::Document::setIsResolvingTreeStyle):
        * dom/Document.h:
        (WebCore::Document::isResolvingTreeStyle const):
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::Scope::Scope):
        (WebCore::Style::TreeResolver::Scope::~Scope):

        Set isResolvingTreeStyle bit when we have a tree resolver scope.

2019-01-16  Zalan Bujtas  <zalan@apple.com>

        [LFC][Out-of-flow] Set used vertical margin values when top/height/bottom are non-auto.
        https://bugs.webkit.org/show_bug.cgi?id=193470

        Reviewed by Antti Koivisto.

        Non-auto vertical margin values (which is mostly the case) should be set as used values.

        Test: fast/block/block-only/non-auto-top-bottom-height-with-margins.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):

2019-01-16  Alan Kinsley  <zalan@apple.com>

        [LFC] Adjust margin box verification.
        https://bugs.webkit.org/show_bug.cgi?id=193482

        Reviewed by Antti Koivisto.

        In certain cases, like out-of-flow boxes with margin auto, marginBoxRect() returns 0. It's clearly incorrect,
        so let's check the individual margin values instead (and at this point we know that all other boxes match).

        Test: fast/block/block-only/non-auto-top-bottom-height-with-auto-margins.html

        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

2019-01-16  Zan Dobersek  <zdobersek@igalia.com>

        [FreeType] Cache the zero-width space glyph in GlyphPage::fill()
        https://bugs.webkit.org/show_bug.cgi?id=193485

        Reviewed by Carlos Garcia Campos.

        In FreeType's implementation of GlyphPage::fill(), we can cache the
        zero-width space glyph upon first retrieval through the
        FcFreeTypeCharIndex() entrypoint, avoiding any subsequent calls
        for other ignorable characters.

        * platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:
        (WebCore::GlyphPage::fill):

2019-01-16  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add the high zombie finder
        https://bugs.webkit.org/show_bug.cgi?id=193432

        Reviewed by Robin Morisset and Saam Barati.

        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/HighZombieFinder.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/WHLSLHighZombieFinder.cpp: Added.
        (WebCore::WHLSL::findHighZombies):
        * Modules/webgpu/WHLSL/WHLSLHighZombieFinder.h: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed WinCairo build fix.

        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::createCurlRequest):
        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
        (WebCore::ResourceHandle::receivedCredential):
        (WebCore::ResourceHandle::getCredential):

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193368

        Reviewed by Geoff Garen.

        The NetworkStorageSession ownership needs to move to the WebKit/WebKitLegacy layer instead of being a process-global static map.

        * loader/EmptyClients.cpp:
        * platform/network/CredentialStorage.cpp:
        (WebCore::CredentialStorage::defaultCredentialStorage): Deleted.
        * platform/network/CredentialStorage.h:
        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::NetworkStorageSession::switchToNewTestingSession):
        (WebCore::NetworkStorageSession::ensureSession):
        * platform/network/cf/NetworkStorageSessionCFNetWin.cpp:
        (WebCore::createPrivateStorageSession):
        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
        (WebCore::ResourceHandle::receivedCredential):
        (WebCore::ResourceHandle::getCredential):

2019-01-15  Ryosuke Niwa  <rniwa@webkit.org>

        VisualViewport API should be updated upon opening of keyboard
        https://bugs.webkit.org/show_bug.cgi?id=193475

        Reviewed by Simon Fraser.

        Added a function to update the visual viewport API and schedule a resize event to FrameView.

        Test: fast/visual-viewport/ios/resize-event-for-keyboard.html

        * page/FrameView.cpp:
        (WebCore::FrameView::didUpdateViewportOverrideRects):
        * page/FrameView.h:

2019-01-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Fix build after r240018
        https://bugs.webkit.org/show_bug.cgi?id=193434

        Unreviewed.

        * Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp:
        (WebCore::WHLSL::checkLoops):
        (WebCore::WHLSL::findHighZombies): Deleted.
        * Modules/webgpu/WHLSL/WHLSLLoopChecker.h:

2019-01-15  Megan Gardner  <megan_gardner@apple.com>

        Add Reveal support in iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=193408
        <rdar://problem/47300699>

        Reviewed by Tim Horton.

        iOSMac and Reveal are currently not testable.

        Add support for the reveal SPI specifically for iOSMac.
        Show the controller when called, and implement the delegate to 
        correctly re-paint the content with the auto-generated highlight from
        the reveal framework.

        * Configurations/WebCore.xcconfig:
        * editing/cocoa/DictionaryLookup.mm:
        (-[WebRevealHighlight initWithHighlightRect:view:]):
        (-[WebRevealHighlight setImage:]):
        (-[WebRevealHighlight highlightRectsForItem:]):
        (-[WebRevealHighlight startHighlightingItem:]):
        (-[WebRevealHighlight highlightItem:withProgress:]):
        (-[WebRevealHighlight completeHighlightingItem:]):
        (-[WebRevealHighlight stopHighlightingItem:]):
        (-[WebRevealHighlight highlightRangeChangedForItem:]):
        (-[WebRevealHighlight highlighting]):
        (-[WebRevealHighlight drawHighlightContentForItem:context:]):
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::showPopup):
        * editing/mac/DictionaryLookup.h:

2019-01-15  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add ending namespace comments to make namespace boundaries more clear
        https://bugs.webkit.org/show_bug.cgi?id=193471

        Reviewed by Saam Barati.

        This patch only adds the comments to the files that are too long to fit on a single screen in my editor.

        No new tests because there is no behavior change.

        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
        * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
        * Modules/webgpu/WHLSL/WHLSLLexer.cpp:
        * Modules/webgpu/WHLSL/WHLSLLexer.h:
        * Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp:
        * Modules/webgpu/WHLSL/WHLSLNameContext.cpp:
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h:
        * Modules/webgpu/WHLSL/WHLSLParser.h:
        * Modules/webgpu/WHLSL/WHLSLProgram.h:
        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        * Modules/webgpu/WHLSL/WHLSLVisitor.h:

2019-01-15  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement the loop checker
        https://bugs.webkit.org/show_bug.cgi?id=193434

        Reviewed by Saam Barati.

        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/LoopChecker.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/WHLSLLoopChecker.cpp: Added.
        (WebCore::WHLSL::findHighZombies):
        * Modules/webgpu/WHLSL/WHLSLLoopChecker.h: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-15  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r239993, r239995, r239997, and
        r239999.

        Caused assertions under
        ViewGestureController::disconnectFromProcess()

        Reverted changesets:

        "Regression(PSON) View becomes blank after click a cross-site
        download link"
        https://bugs.webkit.org/show_bug.cgi?id=193361
        https://trac.webkit.org/changeset/239993

        "Unreviewed iOS build fix after r239993."
        https://trac.webkit.org/changeset/239995

        "Fix iOS build after r239993"
        https://bugs.webkit.org/show_bug.cgi?id=193361
        https://trac.webkit.org/changeset/239997

        "Unreviewed, revert part of r239997 as it is not needed to fix
        the build."
        https://trac.webkit.org/changeset/239999

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Stop using CookiesStrategy
        https://bugs.webkit.org/show_bug.cgi?id=161106

        Reviewed by Don Olmstead and Antti Koivisto.

        CookiesStrategy is process-global and makes it difficult to switch NetworkStorageSession from having a process-global map.
        Instead, use a CookieJar object in the WebProcess.  This has the additional benefit of making it more clear which code
        is used in the WebProcess and which code is used in the NetworkProcess.

        * Modules/beacon/NavigatorBeacon.cpp:
        * Modules/websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::processBuffer):
        * Modules/websockets/WebSocketHandshake.cpp:
        (WebCore::WebSocketHandshake::clientHandshakeRequest const):
        (WebCore::WebSocketHandshake::clientHandshakeCookieRequestHeaderFieldProxy const):
        * WebCore.xcodeproj/project.pbxproj:
        * css/StyleRuleImport.cpp:
        (WebCore::StyleRuleImport::requestStyleSheet):
        * dom/Document.cpp:
        (WebCore::Document::cookie):
        (WebCore::Document::setCookie):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaPlayerGetRawCookies const):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::getCookies):
        (WebCore::InspectorPageAgent::deleteCookie):
        * loader/CookieJar.cpp:
        (WebCore::CookieJar::shouldIncludeSecureCookies):
        (WebCore::CookieJar::sameSiteInfo):
        (WebCore::CookieJar::create):
        (WebCore::CookieJar::cookies const):
        (WebCore::CookieJar::cookieRequestHeaderFieldProxy):
        (WebCore::CookieJar::setCookies):
        (WebCore::CookieJar::cookiesEnabled const):
        (WebCore::CookieJar::cookieRequestHeaderFieldValue const):
        (WebCore::CookieJar::getRawCookies const):
        (WebCore::CookieJar::deleteCookie):
        (WebCore::shouldIncludeSecureCookies): Deleted.
        (WebCore::sameSiteInfo): Deleted.
        (WebCore::cookies): Deleted.
        (WebCore::cookieRequestHeaderFieldProxy): Deleted.
        (WebCore::setCookies): Deleted.
        (WebCore::cookiesEnabled): Deleted.
        (WebCore::cookieRequestHeaderFieldValue): Deleted.
        (WebCore::getRawCookies): Deleted.
        (WebCore::deleteCookie): Deleted.
        * loader/CookieJar.h:
        * loader/EmptyClients.cpp:
        (WebCore::pageConfigurationWithEmptyClients):
        * loader/ImageLoader.cpp:
        (WebCore::ImageLoader::updateFromElement):
        * loader/cache/CachedApplicationManifest.cpp:
        (WebCore::CachedApplicationManifest::CachedApplicationManifest):
        * loader/cache/CachedApplicationManifest.h:
        * loader/cache/CachedCSSStyleSheet.cpp:
        (WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
        * loader/cache/CachedCSSStyleSheet.h:
        * loader/cache/CachedFont.cpp:
        (WebCore::CachedFont::CachedFont):
        * loader/cache/CachedFont.h:
        * loader/cache/CachedImage.cpp:
        (WebCore::CachedImage::CachedImage):
        * loader/cache/CachedImage.h:
        * loader/cache/CachedRawResource.cpp:
        (WebCore::CachedRawResource::CachedRawResource):
        * loader/cache/CachedRawResource.h:
        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::CachedResource):
        (WebCore::CachedResource::setResponse):
        (WebCore::CachedResource::varyHeaderValuesMatch):
        * loader/cache/CachedResource.h:
        (WebCore::CachedResource::cookieJar const):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::createResource):
        (WebCore::CachedResourceLoader::requestUserCSSStyleSheet):
        (WebCore::CachedResourceLoader::updateCachedResourceWithCurrentRequest):
        (WebCore::CachedResourceLoader::requestResource):
        (WebCore::CachedResourceLoader::revalidateResource):
        (WebCore::CachedResourceLoader::loadResource):
        * loader/cache/CachedResourceLoader.h:
        * loader/cache/CachedSVGDocument.cpp:
        (WebCore::CachedSVGDocument::CachedSVGDocument):
        * loader/cache/CachedSVGDocument.h:
        * loader/cache/CachedSVGFont.cpp:
        (WebCore::CachedSVGFont::CachedSVGFont):
        * loader/cache/CachedSVGFont.h:
        * loader/cache/CachedScript.cpp:
        (WebCore::CachedScript::CachedScript):
        * loader/cache/CachedScript.h:
        * loader/cache/CachedTextTrack.cpp:
        (WebCore::CachedTextTrack::CachedTextTrack):
        * loader/cache/CachedTextTrack.h:
        * loader/cache/CachedXSLStyleSheet.cpp:
        (WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet):
        * loader/cache/CachedXSLStyleSheet.h:
        * loader/cache/MemoryCache.cpp:
        (WebCore::MemoryCache::addImageToCache):
        * loader/cache/MemoryCache.h:
        * page/Navigator.cpp:
        (WebCore::Navigator::cookieEnabled const):
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        (WebCore::Page::cookieJar):
        * page/PageConfiguration.cpp:
        (WebCore::PageConfiguration::PageConfiguration):
        * page/PageConfiguration.h:
        * platform/CookiesStrategy.h: Removed.
        * platform/PlatformStrategies.h:
        (WebCore::PlatformStrategies::cookiesStrategy): Deleted.
        * platform/network/CacheValidation.cpp:
        (WebCore::cookieRequestHeaderFieldValue):
        (WebCore::collectVaryingRequestHeaders):
        (WebCore::verifyVaryingRequestHeaders):
        * platform/network/CacheValidation.h:
        * platform/network/CookieRequestHeaderFieldProxy.h:
        * platform/network/cf/NetworkStorageSessionCFNetWin.cpp:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        * platform/network/curl/ResourceHandleCurl.cpp:
        * rendering/RenderSnapshottedPlugIn.cpp:
        (WebCore::RenderSnapshottedPlugIn::updateSnapshot):
        * testing/Internals.cpp:
        (WebCore::Internals::getCookies const):

2019-01-15  Simon Fraser  <simon.fraser@apple.com>

        Animations should only trigger layer recomposite when necessary
        https://bugs.webkit.org/show_bug.cgi?id=193450

        Reviewed by Antoine Quint.

        Animations only need to trigger compositing updates when their states change in a way
        that affects compositing. RenderLayerCompositor::requiresCompositingForAnimation() checks for
        running animations of properties that can be accelerated, so this patch fixes the legacy
        animation logic to only set 'shouldRecompositeLayer' in TreeResolver::createAnimatedElementUpdate()
        when the running state of such an animation changes.

        ImplicitAnimation::animate() and KeyframeAnimation::animate() now return OptionSet<AnimateChange>.
        This contains information about whether the running state changed, so CompositeAnimation::animate()
        asks about whether the running state of an accelerated property changed, and returns this in
        the AnimationUpdate result.

        * page/animation/AnimationBase.h:
        (WebCore::AnimationBase::isPausedState):
        (WebCore::AnimationBase::isRunningState):
        (WebCore::AnimationBase::inPausedState const):
        (WebCore::AnimationBase::inRunningState const):
        (WebCore::AnimationBase::isAnimatingProperty const):
        * page/animation/CSSAnimationController.h:
        * page/animation/CompositeAnimation.cpp:
        (WebCore::CompositeAnimation::animate):
        * page/animation/ImplicitAnimation.cpp:
        (WebCore::ImplicitAnimation::animate):
        (WebCore::ImplicitAnimation::affectsAcceleratedProperty const):
        * page/animation/ImplicitAnimation.h:
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::KeyframeAnimation):
        (WebCore::KeyframeAnimation::animate):
        (WebCore::KeyframeAnimation::computeStackingContextImpact): Deleted.
        * page/animation/KeyframeAnimation.h:
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::createAnimatedElementUpdate):

2019-01-15  Simon Fraser  <simon.fraser@apple.com>

        Clean up code related to the updating of Dashboard and touch event regions
        https://bugs.webkit.org/show_bug.cgi?id=193460

        Reviewed by Zalan Bujtas.

        In preparation for layout testing that can count the number of event region
        updates, move the code related to updating "annotated" (Dashboard) regions, and
        touch event regions into bottleneck functions in Document.
        
        Updating these two kinds of regions is generally similar, but there are some code paths
        that eagerly update annotated regions.

        No behavior change.

        * dom/Document.cpp:
        (WebCore::Document::updateAnnotatedRegions): Moved from FrameView.
        (WebCore::Document::invalidateRenderingDependentRegions):
        (WebCore::Document::invalidateScrollbarDependentRegions):
        (WebCore::Document::updateZOrderDependentRegions):
        * dom/Document.h:
        (WebCore::Document::setAnnotatedRegionsDirty):
        (WebCore::Document::annotatedRegionsDirty const):
        (WebCore::Document::hasAnnotatedRegions const):
        * page/FrameView.cpp:
        (WebCore::FrameView::didLayout):
        (WebCore::FrameView::didPaintContents):
        (WebCore::FrameView::updateAnnotatedRegions): Deleted.
        * page/FrameView.h:
        * rendering/RenderElement.cpp: Drive-by header cleanup.
        (WebCore::RenderElement::styleWillChange):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::setHasHorizontalScrollbar):
        (WebCore::RenderLayer::setHasVerticalScrollbar):
        (WebCore::RenderLayer::updateScrollbarsAfterLayout):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderListBox.cpp:
        (WebCore::RenderListBox::setHasVerticalScrollbar):

2019-01-15  David Kilzer  <ddkilzer@apple.com>

        Let Xcode have its way with the WebCore project

        * WebCore.xcodeproj/project.pbxproj:
        - Change the lastKnownFileType for *.gperf and *.idl files from
          "file" to "text".
        - Resort source files into UUID order.

2019-01-15  Youenn Fablet  <youenn@apple.com>

        Correctly handle rotation for local video playback
        https://bugs.webkit.org/show_bug.cgi?id=193412

        Reviewed by Eric Carlson.

        Update AVVideoCaptureSource to compute the size given to settings after rotating the sample.
        This ensures computing the size of video elements appropriately.
        Also makes sure to notify observers of size change whenever rotation happens as settings() call will provide a different size.
        Covered by manual testing as we do not have yet emulation of local capture with rotation.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::setIntrinsicSize):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::settings):
        (WebCore::AVVideoCaptureSource::computeSampleRotation):

2019-01-15  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) View becomes blank after click a cross-site download link
        https://bugs.webkit.org/show_bug.cgi?id=193361
        <rdar://problem/47099573>

        Reviewed by Geoff Garen.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::commitProvisionalLoad):
        When restoring from PageCache, make sure we notify the client that the load was committed
        *before* we tell it that the navigation is complete. This would confuse the ProvisionalPageProxy
        logic in the UIProcess.

2019-01-15  Zalan Bujtas  <zalan@apple.com>

        [LFC][Out-of-flow] Ignore bottom when the vertical values are over-constrained
        https://bugs.webkit.org/show_bug.cgi?id=193448

        Reviewed by Antti Koivisto.

        Add missing check. We should only resolve auto values. 

        Test: fast/block/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):

2019-01-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: provide a way to determine whether a give node has event listeners
        https://bugs.webkit.org/show_bug.cgi?id=193226
        <rdar://problem/46800005>

        Reviewed by Joseph Pecoraro.

        Test: inspector/audit/run-dom.html

        * inspector/InspectorAuditDOMObject.idl:
        * inspector/InspectorAuditDOMObject.h:
        * inspector/InspectorAuditDOMObject.cpp:
        (WebCore::InspectorAuditDOMObject::hasEventListeners): Added.

2019-01-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: provide a way to query for all nodes with a given computed Accessibility role
        https://bugs.webkit.org/show_bug.cgi?id=193228
        <rdar://problem/46787787>

        Reviewed by Joseph Pecoraro.

        Test: inspector/audit/run-accessibility.html

        * inspector/InspectorAuditAccessibilityObject.idl:
        * inspector/InspectorAuditAccessibilityObject.h:
        * inspector/InspectorAuditAccessibilityObject.cpp:
        (WebCore::accessiblityObjectForNode): Added.
        (WebCore::InspectorAuditAccessibilityObject::getElementsByComputedRole): Added.

2019-01-15  Simon Fraser  <simon.fraser@apple.com>

        Simplify isRunningAnimationOnRenderer()
        https://bugs.webkit.org/show_bug.cgi?id=193435

        Reviewed by Darin Adler.

        All callers of CSSAnimationController::isRunningAnimationOnRenderer() pass AnimationBase::Running | AnimationBase::Paused,
        so we can remove the parameter and just hardcode this behavior.
        
        This will simplify a later patch that needs to consider state changes between running and not running.
        
        No behavior change.

        * page/animation/AnimationBase.h:
        (WebCore::AnimationBase::isAnimatingProperty const):
        * page/animation/CSSAnimationController.cpp:
        (WebCore::CSSAnimationControllerPrivate::isRunningAnimationOnRenderer const):
        (WebCore::CSSAnimationControllerPrivate::isRunningAcceleratedAnimationOnRenderer const):
        (WebCore::CSSAnimationControllerPrivate::computeExtentOfAnimation const):
        (WebCore::CSSAnimationController::isRunningAnimationOnRenderer const):
        (WebCore::CSSAnimationController::isRunningAcceleratedAnimationOnRenderer const):
        * page/animation/CSSAnimationController.h:
        * page/animation/CSSAnimationControllerPrivate.h:
        * page/animation/CompositeAnimation.cpp:
        (WebCore::CompositeAnimation::isAnimatingProperty const):
        * page/animation/CompositeAnimation.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::currentTransform const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateGeometry):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const):
        (WebCore::RenderLayerCompositor::isRunningTransformAnimation const):

2019-01-15  Antti Koivisto  <antti@apple.com>

        Remove unused fields from Scrollbar
        https://bugs.webkit.org/show_bug.cgi?id=193442

        Reviewed by Zalan Bujtas.

        * platform/Scrollbar.cpp:
        (WebCore::Scrollbar::Scrollbar):
        * platform/Scrollbar.h:
        (WebCore::Scrollbar::isCustomScrollbar const):

        Make virtual so it doesn't need a bit.

        (WebCore::Scrollbar::isAlphaLocked const): Deleted.
        (WebCore::Scrollbar::setIsAlphaLocked): Deleted.
        * platform/mac/ScrollAnimatorMac.mm:
        (WebCore::ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting):
        * rendering/RenderScrollbar.cpp:
        (WebCore::RenderScrollbar::RenderScrollbar):
        * rendering/RenderScrollbar.h:

2019-01-15  Zalan Bujtas  <zalan@apple.com>

        [LFC] Use the containing block's padding box to position out-of-flow elements.
        https://bugs.webkit.org/show_bug.cgi?id=193431

        Reviewed by Antti Koivisto.

        If the element has 'position: absolute', the containing block is established by the nearest ancestor
        with a 'position' of 'absolute', 'relative' or 'fixed', in the following way:

        1. In the case that the ancestor is an inline element, the containing block is the bounding box around the padding
        boxes of the first and the last inline boxes generated for that element. In CSS 2.2, if the inline element is split
        across multiple lines, the containing block is undefined.

        2. Otherwise, the containing block is formed by the padding edge of the ancestor.

        This patch covers #2. 

        Test: fast/block/block-only/out-of-flow-with-containing-block-border-padding.html

        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::width const):
        (WebCore::Display::Box::height const):
        (WebCore::Display::Box::contentBoxTop const):
        (WebCore::Display::Box::contentBoxLeft const):
        (WebCore::Display::Box::paddingBoxTop const):
        (WebCore::Display::Box::paddingBoxLeft const):
        (WebCore::Display::Box::paddingBoxBottom const):
        (WebCore::Display::Box::paddingBoxRight const):
        (WebCore::Display::Box::paddingBoxHeight const):
        (WebCore::Display::Box::paddingBoxWidth const):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-11  Antoine Quint  <graouts@apple.com>

        Support parsing of additional values for the touch-action property
        https://bugs.webkit.org/show_bug.cgi?id=193314
        <rdar://problem/47176519>

        Reviewed by Dean Jackson.

        We add parsing support for the "none", "pan-x", "pan-y" and "pinch-zoom" values of the CSS "touch-action" property.

        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::touchActionFlagsToCSSValue):
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator OptionSet<TouchAction> const):
        (WebCore::CSSPrimitiveValue::operator TouchAction const): Deleted.
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertTouchAction):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeTouchAction):
        * dom/Element.cpp:
        (WebCore::Element::allowsDoubleTapGesture const):
        * platform/TouchAction.h: Added.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::touchActions const):
        (WebCore::RenderStyle::setTouchActions):
        (WebCore::RenderStyle::initialTouchActions):
        (WebCore::RenderStyle::touchAction const): Deleted.
        (WebCore::RenderStyle::setTouchAction): Deleted.
        (WebCore::RenderStyle::initialTouchAction): Deleted.
        * rendering/style/RenderStyleConstants.h:
        * rendering/style/StyleRareNonInheritedData.cpp:
        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
        (WebCore::StyleRareNonInheritedData::operator== const):
        * rendering/style/StyleRareNonInheritedData.h:

2019-01-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: create new IDL type for exposing special functionality in test context
        https://bugs.webkit.org/show_bug.cgi?id=193149
        <rdar://problem/46801218>

        Reviewed by Joseph Pecoraro.

        Tests: inspector/audit/run.html
               inspector/audit/setup.html
               inspector/audit/teardown.html

        Create a new `AuditAgent` (and various subclasses for different inspection targets), as well
        as `InspectorAuditAccessibilityObject` and `InspectorAuditDOMObject` objects that will
        be injected into the test function to allow for more advanced testing.

        * inspector/InspectorAuditAccessibilityObject.idl: Added.
        * inspector/InspectorAuditAccessibilityObject.h: Added.
        (WebCore::InspectorAuditAccessibilityObject::create):
        * inspector/InspectorAuditAccessibilityObject.cpp: Added.
        (WebCore::InspectorAuditAccessibilityObject::InspectorAuditAccessibilityObject):

        * inspector/InspectorAuditDOMObject.idl: Added.
        * inspector/InspectorAuditDOMObject.h: Added.
        (WebCore::InspectorAuditDOMObject::create):
        * inspector/InspectorAuditDOMObject.cpp: Added.
        (WebCore::InspectorAuditDOMObject::InspectorAuditDOMObject):

        * inspector/agents/page/PageAuditAgent.h: Added.
        * inspector/agents/page/PageAuditAgent.cpp: Added.
        (WebCore::PageAuditAgent::PageAuditAgent):
        (WebCore::PageAuditAgent::injectedScriptForEval):
        (WebCore::PageAuditAgent::populateAuditObject):
        (WebCore::PageAuditAgent::muteConsole):
        (WebCore::PageAuditAgent::unmuteConsole):

        * inspector/agents/worker/WorkerAuditAgent.h: Added.
        * inspector/agents/worker/WorkerAuditAgent.cpp: Added.
        (WebCore::WorkerAuditAgent::WorkerAuditAgent):
        (WebCore::WorkerAuditAgent::injectedScriptForEval):

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::createLazyAgents):

        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::createLazyAgents):

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-14  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement the Type Checker
        https://bugs.webkit.org/show_bug.cgi?id=193080

        Reviewed by Dean Jackson.

        This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/Checker.mjs into C++.

        The Checker passes types between nested expressions. An inner expression figures out what type it is, and
        passes that information up to an outer expression. This is done via reading/writing into a HashMap,
        because all the type information needs to be saved so that the Metal codegen can emit the correct types.

        These types can have two forms: A regular type (like "int[]") or a ResolvableType. ResolvableTypes
        represent literals, since a literal needs to know its context before it knows what type it should be. So,
        if you have a function like "void foo(int x)" and you have a call like "foo(3)", the 3's ResolvableType
        gets passed to the CallExpression, which then unifies it with the function's parameter type, thereby
        resolving the 3 to be an int.

        There are a few examples where multiple expressions will have the same type: "return (foo, 3)." If those
        types are regular types, then it's no problem; we can just clone() the type and stick both in the HashMap.
        However, if the type is a ResolvableType, an outer expression will only resolve that type once, so the two
        ResolvableTypes can't be distinct. The Checker solves this problem by making a reference-counted wrapper
        around ResolvableTypes and using that in the HashMap instead.

        Once all the ResolvableTypes have been resolved, a second pass runs through the entire HashMap and assigns
        the known types to all the expressions. LValues and their associated address spaces are held in a parallel
        HashMap, and are assigned to the expression at the same time. The type is an Optional<AddressSpace> because
        address spaces are only relevant if the value is an lvalue; if it's nullopt then that means the expression
        is an rvalue.

        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/WHLSLChecker.cpp: Added.
        (WebCore::WHLSL::resolveWithOperatorAnderIndexer):
        (WebCore::WHLSL::resolveWithOperatorLength):
        (WebCore::WHLSL::resolveWithReferenceComparator):
        (WebCore::WHLSL::resolveByInstantiation):
        (WebCore::WHLSL::checkSemantics):
        (WebCore::WHLSL::checkOperatorOverload):
        (WebCore::WHLSL::Checker::Checker):
        (WebCore::WHLSL::Checker::visit):
        (WebCore::WHLSL::Checker::assignTypes):
        (WebCore::WHLSL::Checker::checkShaderType):
        (WebCore::WHLSL::matchAndCommit):
        (WebCore::WHLSL::Checker::recurseAndGetInfo):
        (WebCore::WHLSL::Checker::getInfo):
        (WebCore::WHLSL::Checker::assignType):
        (WebCore::WHLSL::Checker::forwardType):
        (WebCore::WHLSL::getUnnamedType):
        (WebCore::WHLSL::Checker::finishVisitingPropertyAccess):
        (WebCore::WHLSL::Checker::recurseAndWrapBaseType):
        (WebCore::WHLSL::Checker::isBoolType):
        (WebCore::WHLSL::Checker::recurseAndRequireBoolType):
        (WebCore::WHLSL::check):
        * Modules/webgpu/WHLSL/WHLSLChecker.h: Added.
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp: Added.
        (WebCore::WHLSL::Gatherer::Gatherer):
        (WebCore::WHLSL::Gatherer::reset):
        (WebCore::WHLSL::Gatherer::takeEntryPointItems):
        (WebCore::WHLSL::Gatherer::visit):
        (WebCore::WHLSL::gatherEntryPointItems):
        * Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h: Added.
        (WebCore::WHLSL::EntryPointItem::EntryPointItem):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-14  Alex Christensen  <achristensen@webkit.org>

        Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=193429

        Reviewed by Joseph Pecoraro.

        headerValueForVary is a strange function that is causing trouble with my NetworkProcess global state removal project.
        It currently accesses the cookie storage to see if there's a match in two different ways currently written as fallbacks.
        In the WebProcess or in WebKitLegacy, it uses cookiesStrategy to access cookies via IPC or directly, respectively,
        depending on the PlatformStrategies implementation of cookiesStrategy for that process.
        In the NetworkProcess, it uses WebCore::NetworkStorageSession to access cookies directly.
        Both of these cookie accessing methods use global state in the process, and I must split them to refactor them separately.
        This patch does the split by passing in the method of cookie access: a CookiesStrategy& or a NetworkStorageSession&.
        Further refactoring will be done in bug 193368 and bug 161106 to build on this and replace the global state with
        member variables of the correct containing objects.

        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::setResponse):
        (WebCore::CachedResource::varyHeaderValuesMatch):
        * platform/network/CacheValidation.cpp:
        (WebCore::cookieRequestHeaderFieldValue):
        (WebCore::headerValueForVary):
        (WebCore::collectVaryingRequestHeaders):
        (WebCore::verifyVaryingRequestHeaders):
        * platform/network/CacheValidation.h:

2019-01-14  Simon Fraser  <simon.fraser@apple.com>

        Only run the node comparison code in FrameSelection::respondToNodeModification() for range selections
        https://bugs.webkit.org/show_bug.cgi?id=193416

        Reviewed by Wenson Hsieh.

        The code inside the m_selection.firstRange() clause needs to only run for non-collapsed selections, and
        it shows up on Speedometer profiles so optimize to only run this code if we have a selection range.

        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::respondToNodeModification):

2019-01-14  Simon Fraser  <simon.fraser@apple.com>

        Animation and other code is too aggressive about invalidating layer composition
        https://bugs.webkit.org/show_bug.cgi?id=193343

        Reviewed by Antoine Quint.
        
        We used to have the concept of a "SyntheticStyleChange", which was used to trigger
        style updates for animation, and also to get compositing updated.
        
        That morphed into a call to Element::invalidateStyleAndLayerComposition(), which causes
        a style update to result in a "RecompositeLayer" diff, which in turn triggers compositing work,
        and dirties DOM touch event regions (which can be expensive to update).
        
        However, not all the callers of Element::invalidateStyleAndLayerComposition() need to trigger
        compositing, and doing so from animations caused excessive touch event regions on yahoo.com,
        which has several visibility:hidden elements with background-position animation.
        
        So fix callers of invalidateStyleAndLayerComposition() which don't care about compositing to instead
        call just invalidateStyle().
        
        Also fix KeyframeAnimation::animate to correctly return true when animation state changes—it failed to
        do so, because fireAnimationEventsIfNeeded() can run the state machine and change state.

        * animation/KeyframeEffect.cpp:
        (WebCore::invalidateElement):
        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::setNeedsStyleRecalc):
        * page/animation/CSSAnimationController.cpp:
        (WebCore::CSSAnimationControllerPrivate::updateAnimations):
        (WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):
        (WebCore::CSSAnimationControllerPrivate::pauseAnimationAtTime):
        (WebCore::CSSAnimationControllerPrivate::pauseTransitionAtTime):
        (WebCore::CSSAnimationController::cancelAnimations):
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::animate):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::imageChanged):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/svg/SVGResourcesCache.cpp:
        (WebCore::SVGResourcesCache::clientStyleChanged):
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::createAnimatedElementUpdate):
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::applyCSSPropertyToTarget):
        (WebCore::removeCSSPropertyFromTarget):

2019-01-14  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: When deleting databases, some open databases might be missed
        https://bugs.webkit.org/show_bug.cgi?id=193090

        Reviewed by Brady Eidson.

        We should close all databases with an open backing store instead of looking at which ones have an open database
        connection. This is because a database might be in the process of getting a backing store before its connection
        has been created.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
        (WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesForOrigins):

2019-01-14  Ryosuke Niwa  <rniwa@webkit.org>

        Remove redundant check for alignAttr and hiddenAttr in various isPresentationAttribute overrides
        https://bugs.webkit.org/show_bug.cgi?id=193410

        Reviewed by Simon Fraser.

        Removed redundant checks for check for alignAttr and hiddenAttr in isPresentationAttribute overrides
        in HTMLElement subclasses since HTMLElement::isPresentationAttribute already checks for those attributes.

        * html/HTMLDivElement.cpp:
        (WebCore::HTMLDivElement::isPresentationAttribute const): Deleted.
        * html/HTMLDivElement.h:
        * html/HTMLEmbedElement.cpp:
        (WebCore::HTMLEmbedElement::isPresentationAttribute const): Deleted.
        * html/HTMLEmbedElement.h:
        * html/HTMLHRElement.cpp:
        (WebCore::HTMLHRElement::isPresentationAttribute const):
        * html/HTMLIFrameElement.cpp:
        (WebCore::HTMLIFrameElement::isPresentationAttribute const):
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::isPresentationAttribute const):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::isPresentationAttribute const):
        * html/HTMLParagraphElement.cpp:
        (WebCore::HTMLParagraphElement::isPresentationAttribute const): Deleted.
        * html/HTMLParagraphElement.h:
        * html/HTMLTableCaptionElement.cpp:
        (WebCore::HTMLTableCaptionElement::isPresentationAttribute const): Deleted.
        * html/HTMLTableCaptionElement.h:
        * html/HTMLTableElement.cpp:
        (WebCore::HTMLTableElement::isPresentationAttribute const):
        * html/HTMLTablePartElement.cpp:
        (WebCore::HTMLTablePartElement::isPresentationAttribute const):

2019-01-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239901, r239909, r239910, r239912,
        r239913, and r239914.
        https://bugs.webkit.org/show_bug.cgi?id=193407

        These revisions caused an internal failure (Requested by
        Truitt on #webkit).

        Reverted changesets:

        "[Cocoa] Avoid importing directly from subumbrella frameworks"
        https://bugs.webkit.org/show_bug.cgi?id=186016
        https://trac.webkit.org/changeset/239901

        "Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901."
        https://trac.webkit.org/changeset/239909

        "Tried to fix the build."
        https://trac.webkit.org/changeset/239910

        "Fixed iOS builds after r239910."
        https://trac.webkit.org/changeset/239912

        "More build fixing."
        https://trac.webkit.org/changeset/239913

        "Tried to fix USE(APPLE_INTERNAL_SDK) 32-bit builds."
        https://trac.webkit.org/changeset/239914

2019-01-14  Mark Lam  <mark.lam@apple.com>

        Re-enable ability to build --cloop builds.
        https://bugs.webkit.org/show_bug.cgi?id=192955

        Reviewed by Saam barati and Keith Miller.

        * Configurations/FeatureDefines.xcconfig:

2019-01-14  Jer Noble  <jer.noble@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=193403
        <rdar://problem/46750743>

        Continue fix in r239711 by using WeakPtr in SourceBufferPrivateAVFObjC.

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):

2019-01-14  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Map WebGPUBindGroupLayoutBindings from the BindGroupLayoutDescriptor for error checking and later referencing
        https://bugs.webkit.org/show_bug.cgi?id=193405

        Reviewed by Dean Jackson.

        When creating a WebGPUBindGroupLayout, cache the WebGPUBindGroupLayoutDescriptor's list of BindGroupLayoutBindings
        in a HashMap, keyed by binding number, for quick reference during the WebGPUProgrammablePassEncoder::setBindGroups 
        implementation to follow. Also add error-checking e.g. detecting duplicate binding numbers in the same WebGPUBindGroupLayout
        and non-existent binding numbers when creating the WebGPUBindGroup.

        No new tests. BindGroups and BindGroupLayouts reflect the (canonical?) strategy of returning empty 
        objects upon creation failure and reporting errors elswhere. Since error reporting is not yet implemented, 
        the error checks aren't testable from LayoutTests right now. Expected behavior unchanged and covered by existing tests.

        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBindGroup const): 
                Number of bindings must be consistent between bindings and layout bindings.
                BindGroupBindings should only refer to existing BindGroupLayoutBindings.
        * platform/graphics/gpu/GPUBindGroup.h: 
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        (WebCore::GPUBindGroupLayout::bindingsMap const): Added. Cache map of BindGroupLayoutBindings.
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm: Disallow duplicate binding numbers in BindGroupLayoutBindings.
        (WebCore::GPUBindGroupLayout::tryCreate):
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout):

2019-01-14  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Assorted cleanup
        https://bugs.webkit.org/show_bug.cgi?id=193389

        Reviewed by Dean Jackson.

        This is a bunch of non-behavior-changing cleanup.

        - The compiler uses UniqueRef all over the place, and UniqueRef has an implicit operator T&. Therefore,
          we don't need to static_cast<T&> everywhere.
        - ConstantExpressionEnumerationMemberReference is the exact same thing as EnumerationMemberLiteral, so
          this patch deletes the longer-named class in favor of the shorter-named class.
        - Because of the header dependency tree, this patch moves EntryPointType into its own file so it can be
          used by files that FunctionDeclaration depends on. Same thing for AddressSpace.
        - EnumTypes have to have non-null base types. The parser will make sure this is always true.

        No new tests because there is no behavior change.

        * Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h.
        * Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
        (WebCore::WHLSL::AST::ArrayType::type const):
        (WebCore::WHLSL::AST::ArrayType::type):
        * Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
        (WebCore::WHLSL::AST::AssignmentExpression::left):
        (WebCore::WHLSL::AST::AssignmentExpression::right):
        * Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp:
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
        * Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
        (WebCore::WHLSL::AST::ConstantExpression::ConstantExpression):
        (WebCore::WHLSL::AST::ConstantExpression::clone const):
        (WebCore::WHLSL::AST::ConstantExpression::matches const):
        * Modules/webgpu/WHLSL/AST/WHLSLConstantExpressionEnumerationMemberReference.h: Removed.
        * Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
        (WebCore::WHLSL::AST::DereferenceExpression::pointer):
        * Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
        (WebCore::WHLSL::AST::DoWhileLoop::body):
        (WebCore::WHLSL::AST::DoWhileLoop::conditional):
        * Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
        (WebCore::WHLSL::AST::EffectfulExpressionStatement::effectfulExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h.
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
        (WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
        (WebCore::WHLSL::AST::EnumerationDefinition::type):
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::left const):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::right const):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition const):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember const):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::setEnumerationMember):
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
        (WebCore::WHLSL::AST::Expression::type):
        (WebCore::WHLSL::AST::Expression::setType):
        (WebCore::WHLSL::AST::Expression::addressSpace const):
        (WebCore::WHLSL::AST::Expression::setAddressSpace):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
        (WebCore::WHLSL::AST::FloatLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
        (WebCore::WHLSL::AST::FloatLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
        (WebCore::WHLSL::AST::ForLoop::condition):
        (WebCore::WHLSL::AST::ForLoop::increment):
        (WebCore::WHLSL::AST::ForLoop::body):
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
        (WebCore::WHLSL::AST::FunctionDeclaration::type const):
        (WebCore::WHLSL::AST::FunctionDeclaration::type):
        * Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
        (WebCore::WHLSL::AST::IfStatement::conditional):
        (WebCore::WHLSL::AST::IfStatement::body):
        (WebCore::WHLSL::AST::IfStatement::elseBody):
        * Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
        (WebCore::WHLSL::AST::IndexExpression::indexExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
        (WebCore::WHLSL::AST::IntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
        (WebCore::WHLSL::AST::IntegerLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
        (WebCore::WHLSL::AST::LogicalExpression::left):
        (WebCore::WHLSL::AST::LogicalExpression::right):
        * Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
        (WebCore::WHLSL::AST::LogicalNotExpression::operand):
        * Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue):
        * Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
        (WebCore::WHLSL::AST::MakePointerExpression::lValue):
        * Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
        (WebCore::WHLSL::AST::PropertyAccessExpression::base):
        * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
        (WebCore::WHLSL::AST::ReferenceType::elementType const):
        (WebCore::WHLSL::AST::ReferenceType::elementType):
        * Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
        (WebCore::WHLSL::AST::ResolvableType::resolvedType const):
        (WebCore::WHLSL::AST::ResolvableType::resolvedType):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
        * Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
        (WebCore::WHLSL::AST::Return::value):
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
        * Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
        (WebCore::WHLSL::AST::StructureElement::type):
        * Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
        (WebCore::WHLSL::AST::SwitchStatement::value):
        * Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
        (WebCore::WHLSL::AST::TernaryExpression::predicate):
        (WebCore::WHLSL::AST::TernaryExpression::bodyExpression):
        (WebCore::WHLSL::AST::TernaryExpression::elseExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
        (WebCore::WHLSL::AST::TypeDefinition::type):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
        (WebCore::WHLSL::AST::VariableDeclaration::type):
        (WebCore::WHLSL::AST::VariableDeclaration::initializer):
        (WebCore::WHLSL::AST::VariableDeclaration::isAnonymous const):
        * Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
        (WebCore::WHLSL::AST::WhileLoop::conditional):
        (WebCore::WHLSL::AST::WhileLoop::body):
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
        (WebCore::WHLSL::checkDuplicateFunctions):
        * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
        (WebCore::WHLSL::commit):
        (WebCore::WHLSL::inferTypesForTypeArguments):
        (WebCore::WHLSL::inferTypesForCall):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
        (WebCore::WHLSL::NameResolver::visit):
        (WebCore::WHLSL::resolveNamesInTypes):
        (WebCore::WHLSL::resolveNamesInFunctions):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h:
        * Modules/webgpu/WHLSL/WHLSLParser.h:
        * Modules/webgpu/WHLSL/WHLSLProgram.h:
        (WebCore::WHLSL::Program::append):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
        (WebCore::WHLSL::synthesizeEnumerationFunctions):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
        (WebCore::WHLSL::synthesizeStructureAccessors):
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
        (WebCore::WHLSL::Visitor::visit):
        * Modules/webgpu/WHLSL/WHLSLVisitor.h:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-14  Zan Dobersek  <zdobersek@igalia.com>

        DOMCacheStorage: use-after-move in doSequentialMatch()
        https://bugs.webkit.org/show_bug.cgi?id=193396

        Reviewed by Youenn Fablet.

        Depending on the platform- and compiler-specific calling conventions,
        the doSequentialMatch() code can move out the Vector<Ref<DOMCache>>
        object into the callback lambda before the DOMCache object at the
        specified index is retrieved for the DOMCache::doMatch() invocation.

        This problem is now avoided by retrieving reference to the target
        DOMCache object in an earlier expression.

        * Modules/cache/DOMCacheStorage.cpp:
        (WebCore::doSequentialMatch):

2019-01-14  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Add basic box-sizing support.
        https://bugs.webkit.org/show_bug.cgi?id=193392

        Reviewed by Antti Koivisto.

        No min/max support yet.

        Test: fast/block/block-only/box-sizing-inflow-out-of-flow-simple.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-14  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Override DeviceType() in RealtimeMediaSource implementations
        https://bugs.webkit.org/show_bug.cgi?id=193397

        This was necessary but wasn't done.

        Reviewed by Philippe Normand.

        No test required as this fixes a regression in all WebRTC tests when built in debug mode.

        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:

2019-01-14  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed WPE debug build fix after r239921.

        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
        (webKitMediaClearKeyDecryptorDecrypt): Fix the assert that checks the
        size of the mapped buffer containing IV data.

2019-01-14  Charlie Turner  <cturner@igalia.com>

        [GStreamer] Add sharedBuffer utility to GstMappedBuffer, and a testsuite
        https://bugs.webkit.org/show_bug.cgi?id=192977

        Reviewed by Carlos Garcia Campos.

        Add a utility method on GstMappedBuffer to return a SharedBuffer
        view over the mapped data with no copies.

        This patch also introduces a new gstreamer port API test
        directory, and includes some tests for GstMappedBuffer.

        New tests in the API section.

        * platform/SharedBuffer.cpp: Add a new overload for
        GstMappedBuffer that allows sharing the mapped GStreamer buffers
        with zero copies.
        (WebCore::SharedBuffer::create):
        (WebCore::SharedBuffer::SharedBuffer):
        (WebCore::SharedBuffer::DataSegment::data const):
        (WebCore::SharedBuffer::DataSegment::size const):
        * platform/SharedBuffer.h:
        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
        (webKitWebAudioSrcAllocateBuffersAndRenderAudio): Update to new
        API.
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::GstMappedBuffer::createSharedBuffer): Return a shared
        buffer sharing this mapped buffer. The buffer must be shareable to
        use this method.
        * platform/graphics/gstreamer/GStreamerCommon.h:
        (WebCore::GstMappedBuffer::create): Make GstMappedBuffer RefCounted
        (WebCore::GstMappedBuffer::~GstMappedBuffer):
        (WebCore::GstMappedBuffer::data):
        (WebCore::GstMappedBuffer::data const):
        (WebCore::GstMappedBuffer::size const):
        (WebCore::GstMappedBuffer::isSharable const): New predicate to
        check whether this buffer can be shared (i.e., is not writable)
        (WebCore::GstMappedBuffer::GstMappedBuffer):
        (WebCore::GstMappedBuffer::operator bool const): Deleted.
        * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
        (WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample):
        Update to use new API.
        * platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:
        (WebCore::InitData::InitData): Ditto.
        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
        (webKitMediaClearKeyDecryptorFindAndSetKey): Ditto.
        (webKitMediaClearKeyDecryptorDecrypt): Ditto.
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
        (WebCore::WrappedMockRealtimeAudioSource::render): Ditto.
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData): Ditto.
        * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingVideoSourceLibWebRTC::createBlackFrame): Ditto.
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::Fragmentize): Ditto.

2019-01-14  Karl Leplat  <karl.leplat_ext@softathome.com>

        [GTK][WPE] Graphic issue with invalidations on composited layers with subpixel positions
        https://bugs.webkit.org/show_bug.cgi?id=193239

        Reviewed by Žan Doberšek.

        Test: compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions.html

        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): Use enclosed dirty rect values
        when invalidating the CoordinatedBackingStore areas.

2019-01-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Support emoji modifiers
        https://bugs.webkit.org/show_bug.cgi?id=177040

        Reviewed by Myles C. Maxfield.

        The problem only happens with emojis having the zero with joiner (U+200D) in the sequence. The sequence is
        broken because createAndFillGlyphPage() in Font.cpp overwrites zero with joiner with zero width space (U+200B),
        but the emoji font actually supports zero with joiner. This patch moves the control characters override from
        createAndFillGlyphPage() to GlyphPage::fill() only for FreeType based ports. This way we can do the override
        only for the cases where the code point is not supported by the font.

        * platform/graphics/Font.cpp:
        (WebCore::overrideControlCharacters): Helper function to override the control characters.
        (WebCore::createAndFillGlyphPage): Call overrideControlCharacters() only when not using FreeType.
        * platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:
        (WebCore::GlyphPage::fill): Use zero width space as fallback when the font doesn't support characters with
        Default_Ignorable Unicode property.

2019-01-13  Dan Bernstein  <mitz@apple.com>

        More build fixing.

        * editing/cocoa/DictionaryLookup.mm:

2019-01-13  Simon Fraser  <simon.fraser@apple.com>

        Minor optimization to RenderText::setRenderedText()
        https://bugs.webkit.org/show_bug.cgi?id=193388

        Reviewed by Ryosuke Niwa.

        Avoid the call to applyTextTransform() if TextTransform is None, so that we don't
        have to call previousCharacter() and reassign m_text.
        
        Similar optimization in RenderText::textWithoutConvertingBackslashToYenSymbol().

        Speedometer profiles show a few samples here, but this isn't going to win any prizes.

        * rendering/RenderText.cpp:
        (WebCore::RenderText::setRenderedText):
        (WebCore::RenderText::textWithoutConvertingBackslashToYenSymbol const):

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Tried to fix the build.

        * editing/cocoa/DictionaryLookup.mm:

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901.

        Patch by Keith Rollin.

        * accessibility/mac/AXObjectCacheMac.mm:

2019-01-13  Zalan Bujtas  <zalan@apple.com>

        [LFC] Adjust assert for statically positioned fixed elements
        https://bugs.webkit.org/show_bug.cgi?id=193385

        Reviewed by Antti Koivisto.

        While computing the static position and traversing the ancestor chain, we can surely hit a positioned container
        (since we need to go all the way up to the initial containing block).

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
        (WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):

2019-01-13  Antti Koivisto  <antti@apple.com>

        Release assert with <img usemap> in shadow tree
        https://bugs.webkit.org/show_bug.cgi?id=193378

        Reviewed by Ryosuke Niwa.

        When a shadow host that has <img usemap> in the shadow tree is removed from the document, we try
        to remove the map from the scope of the host.

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::parseAttribute):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        (WebCore::HTMLImageElement::removedFromAncestor):

        Tree scope changes are relevant, not the connection to the document.

2019-01-12  Timothy Hatcher  <timothy@apple.com>

        Have prefers-color-scheme: light always match on macOS versions before Mojave.
        https://bugs.webkit.org/show_bug.cgi?id=191655
        rdar://problem/46074680

        Reviewed by Megan Gardner.

        Tests: css-dark-mode/older-systems/prefers-color-scheme.html
               css-dark-mode/older-systems/supported-color-schemes-css.html
               css-dark-mode/older-systems/supported-color-schemes.html

        Use new HAVE(OS_DARK_MODE_SUPPORT) to make it easier to find code.
        Added HAVE(OS_DARK_MODE_SUPPORT) around more bits to make it work on older systems.

        * Configurations/FeatureDefines.xcconfig:
        * dom/Document.cpp:
        (WebCore::Document::useDarkAppearance const):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::enable):
        * page/Page.cpp:
        (WebCore::Page::setUseDarkAppearance):
        (WebCore::Page::useDarkAppearance const):
        (WebCore::Page::setUseDarkAppearanceOverride):
        * platform/mac/LocalDefaultSystemAppearance.h:
        (WebCore::LocalDefaultSystemAppearance::usingDarkAppearance const):
        * platform/mac/LocalDefaultSystemAppearance.mm:
        (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance):
        (WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance):
        * platform/mac/ScrollAnimatorMac.mm:
        * rendering/RenderThemeMac.mm:
        (-[WebCoreTextFieldCell _adjustedCoreUIDrawOptionsForDrawingBordersOnly:]):
        (-[WebListButtonCell drawWithFrame:inView:]):
        (WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const):
        (WebCore::RenderThemeMac::platformInactiveSelectionForegroundColor const):
        (WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const):
        (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor const):
        (WebCore::RenderThemeMac::platformInactiveListBoxSelectionForegroundColor const):
        (WebCore::RenderThemeMac::systemColor const):

2019-01-12  Zalan Bujtas  <zalan@apple.com>

        [LFC] Block/InlinFormattingContext should take Block/InlineFormattingState
        https://bugs.webkit.org/show_bug.cgi?id=193383

        Reviewed by Antti Koivisto.

        This is just a downcast really.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::FormattingContext):
        (WebCore::Layout::FormattingContext::formattingState const): Deleted.
        * layout/FormattingContext.h:
        * layout/LayoutState.cpp:
        (WebCore::Layout::LayoutState::createFormattingContext):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::BlockFormattingContext):
        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::formattingState const):
        (WebCore::Layout::BlockFormattingContext::blockFormattingState const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::createFinalRuns const):
        (WebCore::Layout::InlineFormattingContext::postProcessInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::formattingState const):
        (WebCore::Layout::InlineFormattingContext::inlineFormattingState const): Deleted.
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-12  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add native function synthesis passes
        https://bugs.webkit.org/show_bug.cgi?id=193360

        Reviewed by Dean Jackson.

        This patch includes all the passes in prepare() that are between the name resolver and the
        type checker. It involves a few small pieces:

        - CheckDuplicateFunctions which makes sure the same function isn't defined twice
        - Intrinsics, which remembers all of the native types so they can be referred to by the
          rest of the compiler
        - RecursiveTypeChecker which makes sure types don't refer to themselves
        - SynthesizeArrayOperatorLength which creates operator.length() functions for arrays
        - SynthesizeConstructors which creates copy constructors and default constructors for all
          types
        - SynthesizeEnumerationFunctions which provides cast operators between enum types and their
          base types
        - SynthesizeStructureAccessors which provides getters, setters, and anders for each member
          of a struct

        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/WHLSLBuiltInSemantic.cpp:
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableType const):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp: Added.
        (WebCore::WHLSL::checkDuplicateFunctions):
        * Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp: Added.
        (WebCore::WHLSL::Intrinsics::Intrinsics):
        (WebCore::WHLSL::Intrinsics::add):
        (WebCore::WHLSL::Intrinsics::addPrimitive):
        (WebCore::WHLSL::Intrinsics::addVector):
        (WebCore::WHLSL::Intrinsics::addMatrix):
        (WebCore::WHLSL::Intrinsics::addFullTexture):
        (WebCore::WHLSL::Intrinsics::addDepthTexture):
        (WebCore::WHLSL::Intrinsics::addTexture):
        * Modules/webgpu/WHLSL/WHLSLIntrinsics.h: Added.
        (WebCore::WHLSL::Intrinsics::voidType const):
        (WebCore::WHLSL::Intrinsics::boolType const):
        (WebCore::WHLSL::Intrinsics::intType const):
        (WebCore::WHLSL::Intrinsics::uintType const):
        (WebCore::WHLSL::Intrinsics::samplerType const):
        (WebCore::WHLSL::Intrinsics::floatType const):
        (WebCore::WHLSL::Intrinsics::float3Type const):
        (WebCore::WHLSL::Intrinsics::float4Type const):
        * Modules/webgpu/WHLSL/WHLSLProgram.h:
        (WebCore::WHLSL::Program::append):
        (WebCore::WHLSL::Program::intrinsics):
        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp: Added.
        (WebCore::WHLSL::checkRecursiveTypes):
        * Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp: Added.
        (WebCore::WHLSL::FindArrayTypes::takeArrayTypes):
        (WebCore::WHLSL::synthesizeArrayOperatorLength):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Added.
        (WebCore::WHLSL::FindAllTypes::takeUnnamedTypes):
        (WebCore::WHLSL::FindAllTypes::takeNamedTypes):
        (WebCore::WHLSL::synthesizeConstructors):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp: Added.
        (WebCore::WHLSL::synthesizeEnumerationFunctions):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp: Added.
        (WebCore::WHLSL::synthesizeStructureAccessors):
        * Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        Reviewed by Sam Weinig.

        * Configurations/WebCore.xcconfig: Removed -iframework options from OTHER_CFLAGS and
          OTHER_CPLUSPLUSFLAGS.
        * editing/mac/DictionaryLookupLegacy.mm: Import Quartz.h instead of a PDFKit header.
        * platform/mac/PlatformEventFactoryMac.mm: Import Carbon.h instead of HIToolbox headers.
        * platform/text/mac/TextEncodingRegistryMac.mm: Import Carbon.h instead of CarbonCore.h.

2019-01-12  Zalan Bujtas  <zalan@apple.com>

        [LFC] Move formatting context creation from FormattingState to LayoutState
        https://bugs.webkit.org/show_bug.cgi?id=193381

        Reviewed by Antti Koivisto.

        layoutState().createFormattingStateForFormattingRootIfNeeded(root).createFormattingContext(root) is not only mouthful
        but also feels unintuitive. Use layoutState().createFormattingContext(root) instead.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::FormattingContext):
        (WebCore::Layout::FormattingContext::~FormattingContext):
        (WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        * layout/FormattingState.h:
        * layout/LayoutState.cpp:
        (WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
        (WebCore::Layout::LayoutState::createFormattingContext):
        * layout/LayoutState.h:
        (WebCore::Layout::LayoutState::deregisterFormattingContext):
        (WebCore::Layout::LayoutState::registerFormattingContext):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/blockformatting/BlockFormattingState.cpp:
        (WebCore::Layout::BlockFormattingState::createFormattingContext): Deleted.
        * layout/blockformatting/BlockFormattingState.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::createFormattingContext): Deleted.
        * layout/inlineformatting/InlineFormattingState.h:

2019-01-12  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Move estimatedMarginBefore flag from state/display box to BlockFormattingContext
        https://bugs.webkit.org/show_bug.cgi?id=193375

        Reviewed by Antti Koivisto.

        The estimated marginBefore is a pre-computed, temporary value. We need to keep it around until the final vertical margin value is computed.
        Neither BlockFormattingState nor Display should hold temporary values.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBeforeForAncestors const):
        (WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::hasEstimatedMarginBefore const):
        (WebCore::Layout::hasPrecomputedMarginBefore): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::removeEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::estimatedMarginBefore const):
        * layout/blockformatting/BlockFormattingState.h:
        (WebCore::Layout::BlockFormattingState::setHasEstimatedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingState::clearHasEstimatedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingState::hasEstimatedMarginBefore const): Deleted.
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::Box):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::setHasEstimatedMarginBefore):
        (WebCore::Display::Box::invalidateEstimatedMarginBefore):
        (WebCore::Display::Box::top const):
        (WebCore::Display::Box::topLeft const):
        (WebCore::Display::Box::setEstimatedMarginBefore): Deleted.
        (WebCore::Display::Box::estimatedMarginBefore const): Deleted.
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-11  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement the NameResolver
        https://bugs.webkit.org/show_bug.cgi?id=193007

        Reviewed by Dean Jackson.

        This is the base implementation for WHLSL's name resolver. The name resolver matches three kinds of things:
        1. It matches VariableRefs to VariableDecls
        2. It matches TypeRefs to NamedTypes
        3. It matches CallExpressions to FunctionDeclarations

        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.cpp: Now that InferTypes.h exists, we can implement these
        functions.
        (WebCore::WHLSL::AST::FloatLiteralType::canResolve const):
        (WebCore::WHLSL::AST::FloatLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h: Remove unnecessary function.
        (WebCore::WHLSL::AST::FloatLiteralType::value const): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp: Now that InferTypes.h exists, we can implement these
        functions.
        (WebCore::WHLSL::AST::IntegerLiteralType::canResolve const):
        (WebCore::WHLSL::AST::IntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h: Remove unnecessary function.
        (WebCore::WHLSL::AST::IntegerLiteralType::value const): Deleted.
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp: Modifying Sources.txt caused the sources
        to get shuffled around, so the #includes need to be fixed.
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp: Now that InferTypes.h exists, we can implement
        these functions.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::canResolve const):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h: Remove unnecessary function.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::value const): Deleted.
        * Modules/webgpu/WHLSL/WHLSLInferTypes.cpp: Added. This is the replacement for UnificationContext in the
        reference compiler. It's much simpler (and we should remove UnificationContext in the reference compiler in
        favor of this design). It has three sets of functions: Tell if two types are the same, tell if two types are
        the same and commit the resolvable type, and run the above functions on type references or function arguments.
        (WebCore::WHLSL::matches):
        (WebCore::WHLSL::matchAndCommit):
        (WebCore::WHLSL::commit):
        (WebCore::WHLSL::inferTypesForTypeArguments):
        (WebCore::WHLSL::inferTypesForCall):
        * Modules/webgpu/WHLSL/WHLSLInferTypes.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp.
        * Modules/webgpu/WHLSL/WHLSLNameContext.cpp: Added. This is the data structure that remembers NamedTypes,
        FunctionDeclarations, and VariableDeclarations so NameResolver can work.
        (WebCore::WHLSL::NameContext::NameContext):
        (WebCore::WHLSL::NameContext::add):
        (WebCore::WHLSL::NameContext::getTypes):
        (WebCore::WHLSL::NameContext::getFunctions):
        (WebCore::WHLSL::NameContext::getVariable):
        (WebCore::WHLSL::NameContext::exists):
        * Modules/webgpu/WHLSL/WHLSLNameContext.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h.
        * Modules/webgpu/WHLSL/WHLSLNameResolver.cpp: Added. Use the NameContext to match up the three types of names.
        (WebCore::WHLSL::NameResolver::NameResolver):
        (WebCore::WHLSL::NameResolver::visit):
        (WebCore::WHLSL::resolveNamesInTypes):
        (WebCore::WHLSL::resolveNamesInFunctions):
        * Modules/webgpu/WHLSL/WHLSLNameResolver.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h.
        (WebCore::WHLSL::NameResolver::setCurrentFunctionDefinition):
        * Modules/webgpu/WHLSL/WHLSLProgram.h:
        (WebCore::WHLSL::Program::append): The parser needs to add all global declarations to the name context so the
        name resolver is ready to go as soon as parsing is finished.
        (WebCore::WHLSL::Program::nameContext):
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp: Added. Pick the appropriate FunctionDeclaration or
        NamedType for a particular CallExpression or TypeReference.
        (WebCore::WHLSL::conversionCost):
        (WebCore::WHLSL::resolveFunctionOverloadImpl):
        (WebCore::WHLSL::resolveTypeOverloadImpl):
        * Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp.
        * Modules/webgpu/WHLSL/WHLSLResolvingType.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp. This describes the two states that a type in the type resolver can be in: either an owned
        UnnamedType, or a reference to a ResolvableType. This is because every expression needs to have a type
        associated with it, but those types might be the type of a literal (aka a ResolvableType). Multiple
        expressions might need to reference the same ResolvableType so when it gets resolved, all the expressions
        get the result.
        (WebCore::WHLSL::ResolvableTypeReference::ResolvableTypeReference):
        (WebCore::WHLSL::ResolvableTypeReference::resolvableType):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-11  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add a Visitor class
        https://bugs.webkit.org/show_bug.cgi?id=192826

        Reviewed by Dean Jackson.

        This patch exposes a bunch of the private members of WHLSL's AST nodes so that Visitor can recurse on constituent nodes.
        It also writes the recursion in Visitor.h. This is a virtual base class that gets subclassed for compiler passes.

        I've split this part into its own patch to aid reviewing of the compiler.

        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp: Added.
        (WebCore::WHLSL::Visitor::visit):
        (WebCore::WHLSL::Visitor::checkErrorAndVisit):
        * Modules/webgpu/WHLSL/WHLSLVisitor.h: Added.
        (WebCore::WHLSL::Visitor::setError):
        (WebCore::WHLSL::Visitor::error const):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-11  Jer Noble  <jer.noble@apple.com>

        REGRESSION(r239419): Crash in AudioSourceProviderAVFObjC::~AudioSourceProviderAVFObjC()
        https://bugs.webkit.org/show_bug.cgi?id=193342
        <rdar://problem/47119836>

        Reviewed by Eric Carlson.

        Make the TapStorage used by AudioSourceProviderAVFObjC thread-safe RefCounted.

        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::initCallback):
        (WebCore::AudioSourceProviderAVFObjC::finalizeCallback):

2019-01-11  John Wilander  <wilander@apple.com>

        Compile out Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=193370
        <rdar://problem/45388584>

        Reviewed by Brent Fulgham.

        No new tests. This patch disables functionality. The associated tests
        are skipped.

        These functions are now no-ops unless web API statistics is enabled.

        * Configurations/FeatureDefines.xcconfig:
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logFontLoad):
        (WebCore::ResourceLoadObserver::logCanvasRead):
        (WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
        (WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
        (WebCore::ResourceLoadObserver::logScreenAPIAccessed):
        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::encode const):
        (WebCore::ResourceLoadStatistics::decode):
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
        * loader/ResourceLoadStatistics.h:
            The associated struct members are skipped unless web API
            statistics is enabled.

2019-01-11  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak WebIDBConnectionToClient for retain cycle
        https://bugs.webkit.org/show_bug.cgi?id=193097
        <rdar://problem/46899601>

        Reviewed by Brady Eidson.

        Let IDBConnectionToClient hold a WeakPtr of IDBConnectionToClientDelegate.

        * Modules/indexeddb/server/IDBConnectionToClient.cpp:
        (WebCore::IDBServer::IDBConnectionToClient::IDBConnectionToClient):
        (WebCore::IDBServer::IDBConnectionToClient::identifier const):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteDatabase):
        (WebCore::IDBServer::IDBConnectionToClient::didOpenDatabase):
        (WebCore::IDBServer::IDBConnectionToClient::didAbortTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::didCreateObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didRenameObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didClearObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didCreateIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didRenameIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didPutOrAdd):
        (WebCore::IDBServer::IDBConnectionToClient::didGetRecord):
        (WebCore::IDBServer::IDBConnectionToClient::didGetAllRecords):
        (WebCore::IDBServer::IDBConnectionToClient::didGetCount):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteRecord):
        (WebCore::IDBServer::IDBConnectionToClient::didOpenCursor):
        (WebCore::IDBServer::IDBConnectionToClient::didIterateCursor):
        (WebCore::IDBServer::IDBConnectionToClient::didCommitTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::fireVersionChangeEvent):
        (WebCore::IDBServer::IDBConnectionToClient::didStartTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::didCloseFromServer):
        (WebCore::IDBServer::IDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebCore::IDBServer::IDBConnectionToClient::didGetAllDatabaseNames):
        * Modules/indexeddb/server/IDBConnectionToClient.h:
        * Modules/indexeddb/server/IDBConnectionToClientDelegate.h:

2019-01-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Fix the build after r239844
        https://bugs.webkit.org/show_bug.cgi?id=192991

        Unreviewed.

        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:

2019-01-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Precision drop state thrashes when dragging near the top edge of an editable element
        https://bugs.webkit.org/show_bug.cgi?id=193364
        <rdar://problem/47214117>

        Reviewed by Tim Horton.

        Add a new helper method on DragCaretController to compute the bounds of the editable element around the drop
        caret position. This is either the enclosing form control (in the case of text fields and text areas), or the
        highest editable root. See WebKit ChangeLog for more details.

        Test: DragAndDropTests.AvoidPreciseDropNearTopOfTextArea

        * editing/FrameSelection.cpp:
        (WebCore::DragCaretController::editableElementRectInRootViewCoordinates const):
        * editing/FrameSelection.h:

2019-01-11  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (PSON): Firefox app lacks Open in New Tab in menu
        https://bugs.webkit.org/show_bug.cgi?id=193366
        <rdar://problem/46097212>

        Reviewed by Simon Fraser.

        * platform/RuntimeApplicationChecks.h:
        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        (WebCore::IOSApplication::isFirefox):
        Add a Firefox Mobile bundle check.

2019-01-11  Antti Koivisto  <antti@apple.com>

        Release assert when removing element with a map element in the shadow tree
        https://bugs.webkit.org/show_bug.cgi?id=193351
        <rdar://problem/47208807>

        Reviewed by Ryosuke Niwa.

        When a shadow host that has a map element in the shadow tree is removed from the document, we try
        to remove the map from the scope of the host.

        Test: fast/shadow-dom/image-map-tree-scope.html

        * html/HTMLMapElement.cpp:
        (WebCore::HTMLMapElement::insertedIntoAncestor):
        (WebCore::HTMLMapElement::removedFromAncestor):

        Add and remove image maps when the scope changes, not when the document changes.
        This matches how id/name/etc updates work in the HTMLElement.

2019-01-11  Sihui Liu  <sihui_liu@apple.com>

        Fix an assertion in UniqueIDBDatabase
        https://bugs.webkit.org/show_bug.cgi?id=193096

        Reviewed by Brady Eidson.

        m_objectStoreTransactionCounts.count(objectStore) == 1 in UniqueIDBDatabase::operationAndTransactionTimerFired()
        is not necessarily true because m_objectStoreTransactionCounts may be cleared in immediateCloseForUserDelete.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):

2019-01-11  Miguel Gomez  <magomez@igalia.com>

        [GTK] Garbled rendering on Youtube while scrolling under X11.
        https://bugs.webkit.org/show_bug.cgi?id=192982

        Reviewed by Carlos Garcia Campos.

        When creating a GLX window context, try to get a GLXFBConfig that has depth and stencil buffers for
        the default framebuffer.

        * platform/graphics/glx/GLContextGLX.cpp:
        (WebCore::compatibleVisuals):
        (WebCore::GLContextGLX::createWindowContext):

2019-01-11  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak IDBTransaction, TransactionOperation and IDBRequest in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193167
        <rdar://problem/46891688>

        Reviewed by Geoffrey Garen.

        Do some cleanup to break retain cycle when context is stopped. 

        * Modules/indexeddb/IDBOpenDBRequest.cpp:
        (WebCore::IDBOpenDBRequest::cancelForStop):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::abortOnServerAndCancelRequests):
        (WebCore::IDBTransaction::stop):
        (WebCore::IDBTransaction::removeRequest):
        * Modules/indexeddb/client/TransactionOperation.h:
        (WebCore::IDBClient::TransactionOperation::doComplete):

2019-01-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce IDL files for runtime-enabled UndoManager and UndoItem JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=193109
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Adds new IDL files and stubs for UndoManager and UndoItem. This is an experimental DOM API that (in the near
        future) is intended only for use in internal WebKit text editing clients. This API allows the page to
        participate in the processes of undoing and redoing by defining custom undo and redo handlers, to be executed
        when undo or redo is triggered.

        Tests: editing/undo-manager/undo-manager-interfaces.html
               editing/undo-manager/undo-manager-keeps-wrapper-alive.html

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * Sources.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:

        Add new source files.

        * bindings/js/WebCoreBuiltinNames.h:

        Add "UndoManager" and "UndoItem" names.

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

        Have the document own a UndoManager.

        * dom/Document.h:
        (WebCore::Document::undoManager const):
        * dom/Document.idl:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setUndoManagerAPIEnabled):
        (WebCore::RuntimeEnabledFeatures::undoManagerAPIEnabled const):

        Guard the new bindings behind a runtime-enabled feature flag.

        * page/UndoItem.h: Added.
        (WebCore::UndoItem::create):
        (WebCore::UndoItem::label const):
        (WebCore::UndoItem::undoHandler const):
        (WebCore::UndoItem::redoHandler const):
        (WebCore::UndoItem::UndoItem):
        * page/UndoItem.idl: Added.
        * page/UndoManager.cpp: Added.
        (WebCore::UndoManager::addItem):
        * page/UndoManager.h: Added.
        (WebCore::UndoManager::create):
        (WebCore::UndoManager::document):
        (WebCore::UndoManager::UndoManager):
        * page/UndoManager.idl: Added.
        * page/mac/WheelEventDeltaFilterMac.h:

        Necessary (albeit unrelated) build fix to appease unified sources.

2019-01-11  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Adjust vertical position when box margin collapses through.
        https://bugs.webkit.org/show_bug.cgi?id=193346

        Reviewed by Antti Koivisto.

        If the top and bottom margins of a box are adjoining, then it is possible for margins to collapse through it.
        In this case, the position of the element depends on its relationship with the other elements whose margins are being collapsed.

        1. If the element's margins are collapsed with its parent's top margin, the top border edge of the box is defined to be the same as the parent's.
        2. Otherwise, either the element's parent is not taking part in the margin collapsing, or only the parent's bottom margin is involved.
           The position of the element's top border edge is the same as it would have been if the element had a non-zero bottom border.

        Test: fast/block/block-only/collapsed-through-with-parent.html

        * layout/MarginTypes.h:
        (WebCore::Layout::EstimatedMarginBefore::usedValue const):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::adjustedVerticalPositionAfterMarginCollapsing const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeIgnoringCollapsingThrough):

2019-01-10  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Include the standard library
        https://bugs.webkit.org/show_bug.cgi?id=192994

        Reviewed by Jon Lee.

        A small section of the standard library is present in WHLSLStandardLibrary.txt. This gets turned into a header file containing
        its raw data at build time by invoking our xxd.pl script (which WebCore already uses for other purposes). The standard
        library is generated by running a JavaScript script, but currently there is no way to invoke JavaScript from our build
        process, so this patch includes in the standard library's raw text instead. Once the parser is faster, we can include the
        entire standard library.

        No new tests because it isn't hooked up yet.

        * DerivedSources.make:
        * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: Added.
        * WebCore.xcodeproj/project.pbxproj:

2019-01-10  Jer Noble  <jer.noble@apple.com>

        <video> elements do not enter 'paused' state when playing to end over AirPlay
        https://bugs.webkit.org/show_bug.cgi?id=193295
        <rdar://problem/46708670>

        Reviewed by Eric Carlson.

        Adopt the -[AVPlayer timeControlStatus] API, which reports whether the AVPlayer is paused, playing, or blocked waiting
        for more data before playing. AirPlay devices report this state back from the remote device, and this allows the
        MediaPlayerPrivateAVFoundationObjC to differentiate between user-generated pauses and simple stalling.

        Adopting this API allows us to remove the heuristic from rateChanged() which inteprets a rate change when the
        readyState > HAVE_ENOUGH as an intentional pause.

        Drive-by fix: MediaPlayerPrivateAVFoundation had some code to delay calling platformPlay()
        until the first frame became available. But this code was entirely undermined by the previous
        behavior of setRate(). Fixing setRate()/setRateDouble() to only start playback if playback was
        actually requested started making this code work for the first time, and broke some API tests.
        Thus, we're removing this previously dead code.

        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
        (WebCore::MediaPlayerPrivateAVFoundation::play):
        (WebCore::MediaPlayerPrivateAVFoundation::pause):
        (WebCore::MediaPlayerPrivateAVFoundation::rateChanged):
        (WebCore::MediaPlayerPrivateAVFoundation::updateStates):
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::didEnd):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::platformPlay):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::platformPause):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setRateDouble):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setPlayerRate):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::timeControlStatusDidChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldObserveTimeControlStatus):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):

2019-01-10  Myles C. Maxfield  <mmaxfield@apple.com>

        Fix the build after r239844
        https://bugs.webkit.org/show_bug.cgi?id=192991

        Unreviewed.

        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp:
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableForShaderItemDirection const):

2019-01-10  Justin Fan  <justin_fan@apple.com>

        [WebGPU] WebGPUBindGroup and device::createBindGroup prototype
        https://bugs.webkit.org/show_bug.cgi?id=193341

        Reviewed by Myles C. Maxfield.

        Add *GPUBindGroup class stubs and the ability to create WebGPUBindGroups via the API.

        Test: bind-groups.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        * Modules/webgpu/WebGPUBindGroup.cpp:
        (WebCore::WebGPUBindGroup::create):
        (WebCore::WebGPUBindGroup::WebGPUBindGroup):
        * Modules/webgpu/WebGPUBindGroup.h:
        * Modules/webgpu/WebGPUBindGroup.idl: Enable createBindGroup().
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::BindingResourceVisitor::operator() const): Added. Validate and convert WebGPUBindGroupDescriptor to GPU* version.
        (WebCore::WebGPUDevice::createBindGroup const): Added.
        * Modules/webgpu/WebGPUDevice.h:
        * platform/graphics/gpu/GPUBindGroup.cpp:
        (WebCore::GPUBindGroup::create):
        (WebCore::GPUBindGroup::GPUBindGroup):
        * platform/graphics/gpu/GPUBindGroup.h:
        * platform/graphics/gpu/GPUBufferBinding.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::appendArgumentToArray): Pass RetainPtr by reference to actually update descriptor.

2019-01-10  Simon Fraser  <simon.fraser@apple.com>

        Fix rare crash under ScrollbarThemeMac::paintScrollCorner()
        https://bugs.webkit.org/show_bug.cgi?id=193337
        rdar://problem/47179993

        Reviewed by Zalan Bujtas.
        
        Async image decoding can trigger a FrameView::traverseForPaintInvalidation() fake paint,
        which creates a GraphicsContext with no platform context. However, we could hit ScrollView::paintScrollbars()
        which tried to get at the platform context, and then crashed.
        
        So protect two functions in ScrollbarThemeMac with if (context.paintingDisabled()) checks. I verified
        that other scrollbar-related painting code paths were already protected.

        Hard to test because it depends on async image decoding timing.

        * platform/mac/ScrollbarThemeMac.mm:
        (WebCore::ScrollbarThemeMac::paint):
        (WebCore::ScrollbarThemeMac::paintScrollCorner):

2019-01-10  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Implement parser AST nodes
        https://bugs.webkit.org/show_bug.cgi?id=192991

        Reviewed by Alex Christensen.

        This patch creates all the AST nodes which will be the result of running the parser.
        This patch used to be a part of the "create a WHLSL parser" patch but I split them
        out in order to aid reviewing.

        The classes were mechanically created to match the result of the parser. There are
        nodes for things like ForLoops, LogicalNotExpressions, DereferenceExpressions,
        StructureDefinitions, and things like that. The classes don't actually have any logic
        in them - they are currently just containers to hold the structure of the parsed
        program. Some of these nodes (like constexprs) are just Variants of the various things
        they can in the form of.

        No new tests because the parser doesn't exist to create the new AST nodes yet.

        * Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h: Added.
        (WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
        * Modules/webgpu/WHLSL/AST/WHLSLArrayType.h: Added.
        (WebCore::WHLSL::AST::ArrayType::ArrayType):
        (WebCore::WHLSL::AST::ArrayType::type const):
        (WebCore::WHLSL::AST::ArrayType::type):
        (WebCore::WHLSL::AST::ArrayType::numElements const):
        * Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h: Added.
        (WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):
        (WebCore::WHLSL::AST::AssignmentExpression::left):
        (WebCore::WHLSL::AST::AssignmentExpression::right):
        * Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h: Added.
        (WebCore::WHLSL::AST::BaseFunctionAttribute::BaseFunctionAttribute):
        * Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h: Added.
        (WebCore::WHLSL::AST::BaseSemantic::BaseSemantic):
        * Modules/webgpu/WHLSL/AST/WHLSLBlock.h: Added.
        (WebCore::WHLSL::AST::Block::Block):
        (WebCore::WHLSL::AST::Block::statements):
        * Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h: Added.
        (WebCore::WHLSL::AST::BooleanLiteral::BooleanLiteral):
        (WebCore::WHLSL::AST::BooleanLiteral::value const):
        (WebCore::WHLSL::AST::BooleanLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLBreak.h: Added.
        (WebCore::WHLSL::AST::Break::Break):
        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp: Added.
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h: Added.
        (WebCore::WHLSL::AST::BuiltInSemantic::BuiltInSemantic):
        (WebCore::WHLSL::AST::BuiltInSemantic::variable const):
        (WebCore::WHLSL::AST::BuiltInSemantic::operator== const):
        (WebCore::WHLSL::AST::BuiltInSemantic::operator!= const):
        * Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h: Added.
        (WebCore::WHLSL::AST::CallExpression::CallExpression):
        (WebCore::WHLSL::AST::CallExpression::arguments):
        (WebCore::WHLSL::AST::CallExpression::name):
        (WebCore::WHLSL::AST::CallExpression::setCastData):
        (WebCore::WHLSL::AST::CallExpression::isCast):
        (WebCore::WHLSL::AST::CallExpression::castReturnType):
        (WebCore::WHLSL::AST::CallExpression::hasOverloads const):
        (WebCore::WHLSL::AST::CallExpression::overloads):
        (WebCore::WHLSL::AST::CallExpression::setOverloads):
        (WebCore::WHLSL::AST::CallExpression::setFunction):
        * Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h: Added.
        (WebCore::WHLSL::AST::CommaExpression::CommaExpression):
        (WebCore::WHLSL::AST::CommaExpression::list):
        * Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h: Added.
        (WebCore::WHLSL::AST::ConstantExpression::ConstantExpression):
        (WebCore::WHLSL::AST::ConstantExpression::integerLiteral):
        (WebCore::WHLSL::AST::ConstantExpression::visit):
        (WebCore::WHLSL::AST::ConstantExpression::visit const):
        (WebCore::WHLSL::AST::ConstantExpression::clone const):
        (WebCore::WHLSL::AST::ConstantExpression::matches const):
        * Modules/webgpu/WHLSL/AST/WHLSLConstantExpressionEnumerationMemberReference.h: Added.
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::ConstantExpressionEnumerationMemberReference):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::left const):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::right const):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::clone const):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::enumerationDefinition):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::enumerationDefinition const):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::enumerationMember):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::enumerationMember const):
        (WebCore::WHLSL::AST::ConstantExpressionEnumerationMemberReference::setEnumerationMember):
        * Modules/webgpu/WHLSL/AST/WHLSLContinue.h: Added.
        (WebCore::WHLSL::AST::Continue::Continue):
        * Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h: Added.
        (WebCore::WHLSL::AST::DereferenceExpression::DereferenceExpression):
        (WebCore::WHLSL::AST::DereferenceExpression::pointer):
        * Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h: Added.
        (WebCore::WHLSL::AST::DoWhileLoop::DoWhileLoop):
        (WebCore::WHLSL::AST::DoWhileLoop::body):
        (WebCore::WHLSL::AST::DoWhileLoop::conditional):
        * Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h: Added.
        (WebCore::WHLSL::AST::DotExpression::DotExpression):
        (WebCore::WHLSL::AST::DotExpression::fieldName):
        * Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h: Added.
        (WebCore::WHLSL::AST::EffectfulExpressionStatement::EffectfulExpressionStatement):
        (WebCore::WHLSL::AST::EffectfulExpressionStatement::effectfulExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h: Added.
        (WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
        (WebCore::WHLSL::AST::EnumerationDefinition::type):
        (WebCore::WHLSL::AST::EnumerationDefinition::add):
        (WebCore::WHLSL::AST::EnumerationDefinition::memberByName):
        (WebCore::WHLSL::AST::EnumerationDefinition::enumerationMembers):
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h: Added.
        (WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
        (WebCore::WHLSL::AST::EnumerationMember::origin const):
        (WebCore::WHLSL::AST::EnumerationMember::name):
        (WebCore::WHLSL::AST::EnumerationMember::value):
        (WebCore::WHLSL::AST::EnumerationMember::setValue):
        * Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h: Added.
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
        (WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember):
        * Modules/webgpu/WHLSL/AST/WHLSLExpression.h: Added.
        (WebCore::WHLSL::AST::Expression::Expression):
        (WebCore::WHLSL::AST::Expression::origin const):
        (WebCore::WHLSL::AST::Expression::isAssignmentExpression const):
        (WebCore::WHLSL::AST::Expression::isBooleanLiteral const):
        (WebCore::WHLSL::AST::Expression::isCallExpression const):
        (WebCore::WHLSL::AST::Expression::isCommaExpression const):
        (WebCore::WHLSL::AST::Expression::isDereferenceExpression const):
        (WebCore::WHLSL::AST::Expression::isDotExpression const):
        (WebCore::WHLSL::AST::Expression::isFloatLiteral const):
        (WebCore::WHLSL::AST::Expression::isIndexExpression const):
        (WebCore::WHLSL::AST::Expression::isIntegerLiteral const):
        (WebCore::WHLSL::AST::Expression::isLogicalExpression const):
        (WebCore::WHLSL::AST::Expression::isLogicalNotExpression const):
        (WebCore::WHLSL::AST::Expression::isMakeArrayReferenceExpression const):
        (WebCore::WHLSL::AST::Expression::isMakePointerExpression const):
        (WebCore::WHLSL::AST::Expression::isNullLiteral const):
        (WebCore::WHLSL::AST::Expression::isPropertyAccessExpression const):
        (WebCore::WHLSL::AST::Expression::isReadModifyWriteExpression const):
        (WebCore::WHLSL::AST::Expression::isTernaryExpression const):
        (WebCore::WHLSL::AST::Expression::isUnsignedIntegerLiteral const):
        (WebCore::WHLSL::AST::Expression::isVariableReference const):
        (WebCore::WHLSL::AST::Expression::isEnumerationMemberLiteral const):
        * Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h: Added.
        (WebCore::WHLSL::AST::Fallthrough::Fallthrough):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h: Added.
        (WebCore::WHLSL::AST::FloatLiteral::FloatLiteral):
        (WebCore::WHLSL::AST::FloatLiteral::type):
        (WebCore::WHLSL::AST::FloatLiteral::value const):
        (WebCore::WHLSL::AST::FloatLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp: Added.
        (WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
        (WebCore::WHLSL::AST::FloatLiteralType::canResolve const):
        (WebCore::WHLSL::AST::FloatLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h: Added.
        (WebCore::WHLSL::AST::FloatLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLForLoop.h: Added.
        (WebCore::WHLSL::AST::ForLoop::ForLoop):
        (WebCore::WHLSL::AST::ForLoop::~ForLoop):
        (WebCore::WHLSL::AST::ForLoop::initialization):
        (WebCore::WHLSL::AST::ForLoop::condition):
        (WebCore::WHLSL::AST::ForLoop::increment):
        (WebCore::WHLSL::AST::ForLoop::body):
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionAttribute.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h: Added.
        (WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
        (WebCore::WHLSL::AST::FunctionDeclaration::isFunctionDefinition const):
        (WebCore::WHLSL::AST::FunctionDeclaration::isNativeFunctionDeclaration const):
        (WebCore::WHLSL::AST::FunctionDeclaration::attributeBlock):
        (WebCore::WHLSL::AST::FunctionDeclaration::entryPointType const):
        (WebCore::WHLSL::AST::FunctionDeclaration::type const):
        (WebCore::WHLSL::AST::FunctionDeclaration::type):
        (WebCore::WHLSL::AST::FunctionDeclaration::name const):
        (WebCore::WHLSL::AST::FunctionDeclaration::isCast const):
        (WebCore::WHLSL::AST::FunctionDeclaration::parameters const):
        (WebCore::WHLSL::AST::FunctionDeclaration::parameters):
        (WebCore::WHLSL::AST::FunctionDeclaration::semantic):
        (WebCore::WHLSL::AST::FunctionDeclaration::isOperator const):
        * Modules/webgpu/WHLSL/AST/WHLSLFunctionDefinition.h: Added.
        (WebCore::WHLSL::AST::FunctionDefinition::FunctionDefinition):
        (WebCore::WHLSL::AST::FunctionDefinition::block):
        (WebCore::WHLSL::AST::FunctionDefinition::restricted const):
        * Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h: Added.
        (WebCore::WHLSL::AST::IfStatement::IfStatement):
        (WebCore::WHLSL::AST::IfStatement::conditional):
        (WebCore::WHLSL::AST::IfStatement::body):
        (WebCore::WHLSL::AST::IfStatement::elseBody):
        * Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h: Added.
        (WebCore::WHLSL::AST::IndexExpression::IndexExpression):
        (WebCore::WHLSL::AST::IndexExpression::indexExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.cpp: Added.
        (WebCore::WHLSL::AST::IntegerLiteral::valueForSelectedType const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h: Added.
        (WebCore::WHLSL::AST::IntegerLiteral::IntegerLiteral):
        (WebCore::WHLSL::AST::IntegerLiteral::type):
        (WebCore::WHLSL::AST::IntegerLiteral::value const):
        (WebCore::WHLSL::AST::IntegerLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp: Added.
        (WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
        (WebCore::WHLSL::AST::IntegerLiteralType::canResolve const):
        (WebCore::WHLSL::AST::IntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h: Added.
        (WebCore::WHLSL::AST::IntegerLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h: Added.
        (WebCore::WHLSL::AST::LogicalExpression::LogicalExpression):
        (WebCore::WHLSL::AST::LogicalExpression::type const):
        (WebCore::WHLSL::AST::LogicalExpression::left):
        (WebCore::WHLSL::AST::LogicalExpression::right):
        * Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h: Added.
        (WebCore::WHLSL::AST::LogicalNotExpression::LogicalNotExpression):
        (WebCore::WHLSL::AST::LogicalNotExpression::operand):
        * Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h: Added.
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
        (WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue):
        * Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h: Added.
        (WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
        (WebCore::WHLSL::AST::MakePointerExpression::lValue):
        * Modules/webgpu/WHLSL/AST/WHLSLNamedType.h: Added.
        (WebCore::WHLSL::AST::NamedType::NamedType):
        (WebCore::WHLSL::AST::NamedType::origin const):
        (WebCore::WHLSL::AST::NamedType::name):
        (WebCore::WHLSL::AST::NamedType::isTypeDefinition const):
        (WebCore::WHLSL::AST::NamedType::isStructureDefinition const):
        (WebCore::WHLSL::AST::NamedType::isEnumerationDefinition const):
        (WebCore::WHLSL::AST::NamedType::isNativeTypeDeclaration const):
        (WebCore::WHLSL::AST::NamedType::unifyNode const):
        (WebCore::WHLSL::AST::NamedType::unifyNode):
        * Modules/webgpu/WHLSL/AST/WHLSLNativeFunctionDeclaration.h: Added.
        (WebCore::WHLSL::AST::NativeFunctionDeclaration::NativeFunctionDeclaration):
        (WebCore::WHLSL::AST::NativeFunctionDeclaration::restricted const):
        * Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h: Added.
        (WebCore::WHLSL::AST::NativeTypeDeclaration::NativeTypeDeclaration):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::name const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::name):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::typeArguments):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isInt const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isNumber const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isFloating const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isVector const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isMatrix const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isTexture const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::isSigned const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::std::function<bool const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::std::function<int64_t const):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::iterateAllValues):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsInt):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsNumber):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsFloating):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsVector):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsMatrix):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsTexture):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIsSigned):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentInteger):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentUnsignedInteger):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentFloat):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setSuccessor):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setFormatValueFromInteger):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setFormatValueFromUnsignedInteger):
        (WebCore::WHLSL::AST::NativeTypeDeclaration::setIterateAllValues):
        * Modules/webgpu/WHLSL/AST/WHLSLNode.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h: Added.
        (WebCore::WHLSL::AST::NullLiteral::NullLiteral):
        (WebCore::WHLSL::AST::NullLiteral::type):
        (WebCore::WHLSL::AST::NullLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.cpp: Added.
        (WebCore::WHLSL::AST::NullLiteralType::canResolve const):
        (WebCore::WHLSL::AST::NullLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h: Added.
        (WebCore::WHLSL::AST::NumThreadsFunctionAttribute::NumThreadsFunctionAttribute):
        (WebCore::WHLSL::AST::NumThreadsFunctionAttribute::width const):
        (WebCore::WHLSL::AST::NumThreadsFunctionAttribute::height const):
        (WebCore::WHLSL::AST::NumThreadsFunctionAttribute::depth const):
        * Modules/webgpu/WHLSL/AST/WHLSLPointerType.h: Added.
        (WebCore::WHLSL::AST::PointerType::PointerType):
        * Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h: Added.
        (WebCore::WHLSL::AST::PropertyAccessExpression::PropertyAccessExpression):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleGetOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleSetOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::possibleAndOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleGetOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleSetOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::setPossibleAndOverloads):
        (WebCore::WHLSL::AST::PropertyAccessExpression::base):
        * Modules/webgpu/WHLSL/AST/WHLSLQualifier.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h: Added.
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::create):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::setNewValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::setResultExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::oldVariableReference):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newVariableReference):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::oldValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValue):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
        (WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h: Added.
        (WebCore::WHLSL::AST::ReferenceType::ReferenceType):
        (WebCore::WHLSL::AST::ReferenceType::addressSpace const):
        (WebCore::WHLSL::AST::ReferenceType::elementType const):
        (WebCore::WHLSL::AST::ReferenceType::elementType):
        * Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h: Added.
        (WebCore::WHLSL::AST::ResolvableType::isFloatLiteralType const):
        (WebCore::WHLSL::AST::ResolvableType::isIntegerLiteralType const):
        (WebCore::WHLSL::AST::ResolvableType::isNullLiteralType const):
        (WebCore::WHLSL::AST::ResolvableType::isUnsignedIntegerLiteralType const):
        (WebCore::WHLSL::AST::ResolvableType::resolvedType const):
        (WebCore::WHLSL::AST::ResolvableType::resolvedType):
        (WebCore::WHLSL::AST::ResolvableType::resolve):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp: Added.
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::ResourceSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h: Added.
        (WebCore::WHLSL::AST::ResourceSemantic::ResourceSemantic):
        (WebCore::WHLSL::AST::ResourceSemantic::mode const):
        (WebCore::WHLSL::AST::ResourceSemantic::index const):
        (WebCore::WHLSL::AST::ResourceSemantic::space const):
        (WebCore::WHLSL::AST::ResourceSemantic::operator== const):
        (WebCore::WHLSL::AST::ResourceSemantic::operator!= const):
        * Modules/webgpu/WHLSL/AST/WHLSLReturn.h: Added.
        (WebCore::WHLSL::AST::Return::Return):
        (WebCore::WHLSL::AST::Return::value):
        (WebCore::WHLSL::AST::Return::function):
        (WebCore::WHLSL::AST::Return::setFunction):
        * Modules/webgpu/WHLSL/AST/WHLSLSemantic.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp: Added.
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h: Added.
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::SpecializationConstantSemantic):
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::operator== const):
        (WebCore::WHLSL::AST::SpecializationConstantSemantic::operator!= const):
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp: Added.
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableType const):
        (WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableForShaderItemDirection const):
        * Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h: Added.
        (WebCore::WHLSL::AST::StageInOutSemantic::StageInOutSemantic):
        (WebCore::WHLSL::AST::StageInOutSemantic::index const):
        (WebCore::WHLSL::AST::StageInOutSemantic::operator== const):
        (WebCore::WHLSL::AST::StageInOutSemantic::operator!= const):
        * Modules/webgpu/WHLSL/AST/WHLSLStatement.h: Added.
        (WebCore::WHLSL::AST::Statement::Statement):
        (WebCore::WHLSL::AST::Statement::isBlock const):
        (WebCore::WHLSL::AST::Statement::isBreak const):
        (WebCore::WHLSL::AST::Statement::isContinue const):
        (WebCore::WHLSL::AST::Statement::isDoWhileLoop const):
        (WebCore::WHLSL::AST::Statement::isEffectfulExpressionStatement const):
        (WebCore::WHLSL::AST::Statement::isFallthrough const):
        (WebCore::WHLSL::AST::Statement::isForLoop const):
        (WebCore::WHLSL::AST::Statement::isIfStatement const):
        (WebCore::WHLSL::AST::Statement::isReturn const):
        (WebCore::WHLSL::AST::Statement::isSwitchCase const):
        (WebCore::WHLSL::AST::Statement::isSwitchStatement const):
        (WebCore::WHLSL::AST::Statement::isTrap const):
        (WebCore::WHLSL::AST::Statement::isVariableDeclarationsStatement const):
        (WebCore::WHLSL::AST::Statement::isWhileLoop const):
        * Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h: Added.
        (WebCore::WHLSL::AST::StructureDefinition::StructureDefinition):
        (WebCore::WHLSL::AST::StructureDefinition::structureElements):
        * Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h: Added.
        (WebCore::WHLSL::AST::StructureElement::StructureElement):
        (WebCore::WHLSL::AST::StructureElement::origin const):
        (WebCore::WHLSL::AST::StructureElement::type):
        (WebCore::WHLSL::AST::StructureElement::name):
        (WebCore::WHLSL::AST::StructureElement::semantic):
        * Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h: Added.
        (WebCore::WHLSL::AST::SwitchCase::SwitchCase):
        (WebCore::WHLSL::AST::SwitchCase::value):
        (WebCore::WHLSL::AST::SwitchCase::block):
        * Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h: Added.
        (WebCore::WHLSL::AST::SwitchStatement::SwitchStatement):
        (WebCore::WHLSL::AST::SwitchStatement::value):
        (WebCore::WHLSL::AST::SwitchStatement::switchCases):
        * Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h: Added.
        (WebCore::WHLSL::AST::TernaryExpression::TernaryExpression):
        (WebCore::WHLSL::AST::TernaryExpression::predicate):
        (WebCore::WHLSL::AST::TernaryExpression::bodyExpression):
        (WebCore::WHLSL::AST::TernaryExpression::elseExpression):
        * Modules/webgpu/WHLSL/AST/WHLSLTrap.h: Added.
        (WebCore::WHLSL::AST::Trap::Trap):
        * Modules/webgpu/WHLSL/AST/WHLSLType.h: Added.
        (WebCore::WHLSL::AST::Type::isNamedType const):
        (WebCore::WHLSL::AST::Type::isUnnamedType const):
        (WebCore::WHLSL::AST::Type::isResolvableType const):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.cpp: Added.
        (WebCore::WHLSL::AST::clone):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h: Added.
        * Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h: Added.
        (WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
        (WebCore::WHLSL::AST::TypeDefinition::type):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp: Added.
        (WebCore::WHLSL::AST::TypeReference::wrap):
        * Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h: Added.
        (WebCore::WHLSL::AST::TypeReference::TypeReference):
        (WebCore::WHLSL::AST::TypeReference::name):
        (WebCore::WHLSL::AST::TypeReference::typeArguments):
        (WebCore::WHLSL::AST::TypeReference::resolvedType const):
        (WebCore::WHLSL::AST::TypeReference::setResolvedType):
        (WebCore::WHLSL::AST::TypeReference::cloneTypeReference const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h: Added.
        (WebCore::WHLSL::AST::UnnamedType::UnnamedType):
        (WebCore::WHLSL::AST::UnnamedType::isTypeReference const):
        (WebCore::WHLSL::AST::UnnamedType::isPointerType const):
        (WebCore::WHLSL::AST::UnnamedType::isArrayReferenceType const):
        (WebCore::WHLSL::AST::UnnamedType::isArrayType const):
        (WebCore::WHLSL::AST::UnnamedType::isReferenceType const):
        (WebCore::WHLSL::AST::UnnamedType::unifyNode const):
        (WebCore::WHLSL::AST::UnnamedType::unifyNode):
        (WebCore::WHLSL::AST::UnnamedType::origin const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.cpp: Added.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::valueForSelectedType const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h: Added.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::UnsignedIntegerLiteral):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::type):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::value const):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp: Added.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::canResolve const):
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::conversionCost const):
        * Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h: Added.
        (WebCore::WHLSL::AST::UnsignedIntegerLiteralType::preferredType):
        * Modules/webgpu/WHLSL/AST/WHLSLValue.h: Added.
        (WebCore::WHLSL::AST::Value::Value):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h: Added.
        (WebCore::WHLSL::AST::VariableDeclaration::VariableDeclaration):
        (WebCore::WHLSL::AST::VariableDeclaration::origin const):
        (WebCore::WHLSL::AST::VariableDeclaration::name):
        (WebCore::WHLSL::AST::VariableDeclaration::type const):
        (WebCore::WHLSL::AST::VariableDeclaration::type):
        (WebCore::WHLSL::AST::VariableDeclaration::semantic):
        (WebCore::WHLSL::AST::VariableDeclaration::initializer):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h: Added.
        (WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
        (WebCore::WHLSL::AST::VariableDeclarationsStatement::variableDeclarations):
        * Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h: Added.
        (WebCore::WHLSL::AST::VariableReference::VariableReference):
        (WebCore::WHLSL::AST::VariableReference::wrap):
        (WebCore::WHLSL::AST::VariableReference::name):
        (WebCore::WHLSL::AST::VariableReference::variable):
        (WebCore::WHLSL::AST::VariableReference::setVariable):
        * Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h: Added.
        (WebCore::WHLSL::AST::WhileLoop::WhileLoop):
        (WebCore::WHLSL::AST::WhileLoop::conditional):
        (WebCore::WHLSL::AST::WhileLoop::body):
        * Modules/webgpu/WHLSL/WHLSLLexer.cpp:
        * Modules/webgpu/WHLSL/WHLSLParser.cpp: Added.
        * Modules/webgpu/WHLSL/WHLSLParser.h: Added.
        * Modules/webgpu/WHLSL/WHLSLProgram.h: Added.
        (WebCore::WHLSL::Program::append):
        (WebCore::WHLSL::Program::nameContext):
        (WebCore::WHLSL::Program::intrinsics):
        (WebCore::WHLSL::Program::typeDefinitions):
        (WebCore::WHLSL::Program::structureDefinitions):
        (WebCore::WHLSL::Program::enumerationDefinitions):
        (WebCore::WHLSL::Program::functionDefinitions const):
        (WebCore::WHLSL::Program::functionDefinitions):
        (WebCore::WHLSL::Program::nativeFunctionDeclarations const):
        (WebCore::WHLSL::Program::nativeFunctionDeclarations):
        (WebCore::WHLSL::Program::nativeTypeDeclarations):

2019-01-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        Bindings generator emits incorrect code when using VoidCallback as an IDL dictionary attribute
        https://bugs.webkit.org/show_bug.cgi?id=193328

        Reviewed by Chris Dumez.

        Currently, when generating the function body of `convertDictionary`, our bindings generator does not pass in an
        argument to use as the `$globalObjectReference` in `JSValueToNative`, when generating code to convert a wrapped
        attribute value to the native value. As a result, if the generated IDL type returns `true` from
        `JSValueToNativeDOMConvertNeedsGlobalObject` (i.e. for callback function types), we will end up using the empty
        string as the generated expression for the global object. This emits syntactically incorrect code:

            `convert<IDLCallbackFunction<JSVoidCallback>>(state, someValue, );`

        To fix this, we pass in a string to use as the global object, which uses the given ExecState to grab the global
        object. Tested by augmenting TestStandaloneDictionary.idl and its generated expectation.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateDictionaryImplementationContent):
        * bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
        (WebCore::convertDictionary<DictionaryImplName>):
        * bindings/scripts/test/TestStandaloneDictionary.idl:

2019-01-10  Eric Carlson  <eric.carlson@apple.com>

        Define page media state flags for display capture.
        https://bugs.webkit.org/show_bug.cgi?id=193230
        <rdar://problem/47095142>

        Reviewed by Youenn Fablet.

        Test: fast/mediastream/get-display-media-muted.html

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::mediaState const):
        * page/MediaProducer.h:
        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
        * platform/mock/MockRealtimeAudioSource.h:
        * platform/mock/MockRealtimeVideoSource.h:
        * testing/Internals.cpp:
        (WebCore::Internals::pageMediaState):

2019-01-10  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Add BindGroupBinding, BindGroupDescriptor, and BufferBinding dictionaries from API
        https://bugs.webkit.org/show_bug.cgi?id=193298

        Reviewed by Dean Jackson.

        No new tests. No change in behavior.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/WebGPUBindGroupBinding.h: Added.
        * Modules/webgpu/WebGPUBindGroupBinding.idl: Added.
        * Modules/webgpu/WebGPUBindGroupDescriptor.h: Added.
        * Modules/webgpu/WebGPUBindGroupDescriptor.idl: Added.
        * Modules/webgpu/WebGPUBufferBinding.h: Added.
        * Modules/webgpu/WebGPUBufferBinding.idl: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUBindGroupBinding.h: Added.
        * platform/graphics/gpu/GPUBindGroupDescriptor.h: Added.
        * platform/graphics/gpu/GPUBufferBinding.h: Added.

2019-01-09  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Fix vertex-buffer-triangle-strip test and small update to GPURenderPipeline
        https://bugs.webkit.org/show_bug.cgi?id=193289

        Reviewed by Dean Jackson.

        Fix broken test after pipeline layouts were added, and a small refactoring to GPURenderPipeline to avoid
        retaining its descriptor after creation.

        * platform/graphics/gpu/GPURenderPipeline.h:
        (WebCore::GPURenderPipeline::primitiveTopology const):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::GPURenderPipeline):

2019-01-09  Dean Jackson  <dino@apple.com>

        Safari Crashing in Version 12.0.1 (14606.2.104.1.1) WebCore::GraphicsLayerCA::updateBackdropFilters
        https://bugs.webkit.org/show_bug.cgi?id=193309
        <rdar://problem/45279224>

        Reviewed by Antoine Quint.

        A speculative fix for a CheckedArithmetic crash triggered in updateBackdropFilters.

        The crash log indicates we crash in a Checked<> class that is not recording
        overflow i.e. it is crashing due to an overflow. The only place in this function
        where that could happen is when we convert the FloatRect for the backdrop
        region into a Checked<unsigned> for width and height. This suggests that either
        the width or height are negative, or the float values are too large for integers,
        or the product of the two overflows.

        Avoid this by using RecordOverflow, but also changing the code a little to
        bail if the rectangle is incorrect.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::updateBackdropFilters):

2019-01-10  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Let abspos items reference implicit grid lines
        https://bugs.webkit.org/show_bug.cgi?id=193313

        Reviewed by Manuel Rego Casasnovas.

        While they can't create new implicit grid lines, abspos items
        can reference existing ones as clarified in
        https://github.com/w3c/csswg-drafts/commit/511bb63

        This patch makes WebKit match Blink, Firefox and Edge.

        Tests: web-platform-tests/css/css-grid/abspos/grid-positioned-items-padding-001.html
               web-platform-tests/css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::populateExplicitGridAndOrderIterator const):
        Remove argument from spanSizeForAutoPlacedItem call.
        (WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid const):
        Remove argument from spanSizeForAutoPlacedItem call.
        (WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid const):
        Remove argument from spanSizeForAutoPlacedItem call.
        (WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid const):
        Remove argument from spanSizeForAutoPlacedItem call.
        (WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild):
        Don't treat implicit grid lines as 'auto'.
        * rendering/RenderGrid.h:
        Remove unused gridPositionIsAutoForOutOfFlow.
        * rendering/style/GridPositionsResolver.cpp:
        (WebCore::adjustGridPositionsFromStyle):
        Don't treat implicit grid lines as 'auto'.
        Remove unused gridContainerStyle parameter.
        (WebCore::GridPositionsResolver::spanSizeForAutoPlacedItem):
        Remove argument from adjustGridPositionsFromStyle call.
        Remove unused gridContainerStyle parameter.
        (WebCore::resolveGridPositionFromStyle):
        Remove unnecessary assert that uses isValidNamedLineOrArea.
        (WebCore::GridPositionsResolver::resolveGridPositionsFromStyle):
        Remove argument from adjustGridPositionsFromStyle call.
        * rendering/style/GridPositionsResolver.h:
        Remove unused isValidNamedLineOrArea.
        Remove unused parameter from spanSizeForAutoPlacedItem.

2019-01-09  Matt Rajca  <mrajca@apple.com>

        Put per-document autoplay behavior behind runtime website policies quirk instead of a compile time flag
        https://bugs.webkit.org/show_bug.cgi?id=193301

        Reviewed by Jer Noble.

        Instead of unconditionally enabling this with a compile-time flag, let clients
        enable the quirk on a per-load basis.

        Tests: added API tests in favor of the current layout test as this behavior is no
               longer on by default unless a client opts in.

        * html/MediaElementSession.cpp:
        (WebCore::needsPerDocumentAutoplayBehaviorQuirk):
        (WebCore::MediaElementSession::playbackPermitted const):
        * loader/DocumentLoader.h:

2019-01-10  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Take collapsed through siblings into account when computing vertical position
        https://bugs.webkit.org/show_bug.cgi?id=193310

        Reviewed by Antti Koivisto.

        If the block inflow element has previous siblings with collapsed through vertical margins,
        then this box's before margin could _indirectly_ collapse with the parent. Use the previous siblings
        to check for margin collapsing.

        Test: fast/block/block-only/collapsed-through-siblings.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::adjustedVerticalPositionAfterMarginCollapsing const):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2019-01-10  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Use GRefPtr in AppendPipeline::pushNewBuffer()
        https://bugs.webkit.org/show_bug.cgi?id=192934

        Reviewed by Xabier Rodriguez-Calvar.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::pushNewBuffer):
        * platform/graphics/gstreamer/mse/AppendPipeline.h:
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::append):

2019-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Color emoji not properly supported
        https://bugs.webkit.org/show_bug.cgi?id=191976

        Reviewed by Michael Catanzaro.

        Always try to fallback to a colored font for emojis.

        Test: platform/gtk/fonts/font-emoji-system-fallback.html

        * platform/graphics/ComplexTextController.cpp:
        (WebCore::advanceByCombiningCharacterSequence): Group regional indicators in pairs.
        * platform/graphics/Font.cpp:
        (WebCore::CharacterFallbackMapKey::CharacterFallbackMapKey):
        (WebCore::Font::systemFallbackFontForCharacter const): Pass PreferColoredFont::No to FontCache::systemFallbackForCharacters.
        * platform/graphics/Font.h: Add IsForPlatformFont enum to replace the bool parameter in systemFallbackFontForCharacter().
        * platform/graphics/FontCache.h:
        * platform/graphics/FontCascadeFonts.cpp:
        (WebCore::FontCascadeFonts::glyphDataForSystemFallback):
        * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
        (WebCore::characterSequenceIsEmoji): Check whether the character sequence is an emoji.
        (WebCore::FontCascade::fontForCombiningCharacterSequence const): In case of emojis try to fallback to a colored
        font even if base font can render the emoji in black and white.
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontCache::systemFallbackForCharacters): Add PreferColoredFont parameter that is ignored.
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::FontCache::systemFallbackForCharacters): Add PreferColoredFont parameter.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::FontPlatformData::FontPlatformData): Initialize m_isColorBitmapFont.
        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        (WebCore::Font::variantCapsSupportsCharacterForSynthesis const): Moved from cross-platform file.
        (WebCore::Font::platformSupportsCodePoint const): Add freetype implementation.
        * platform/graphics/win/FontCacheWin.cpp:
        (WebCore::FontCache::systemFallbackForCharacters): Add PreferColoredFont parameter that is ignored.
        * platform/text/CharacterProperties.h:
        (WebCore::isEmojiKeycapBase):
        (WebCore::isEmojiRegionalIndicator):
        (WebCore::isEmojiWithPresentationByDefault):
        (WebCore::isEmojiModifierBase):

2019-01-09  Antoine Quint  <graouts@apple.com>

        [Web Animations] Audit Web Animations classes for memory reduction
        https://bugs.webkit.org/show_bug.cgi?id=193195

        Reviewed by Simon Fraser and Yusuke Suzuki.

        The classes, enums and structs added to support Web Animations were not as memory-efficient as they could be. We now order
        members in a way that reduces padding, use Markable<T, Traits> instead of Optional<T> where applicable, declare enums as uint8_t
        and removed unnecessary members.

        As a result, classes and structs have shrunk as follows:

        WebAnimation: 256 > 216
        DeclarativeAnimation: 392 > 344
        CSSAnimation: 416 > 368
        CSSTransition: 440 > 392
        AnimationEffect: 88 > 72
        KeyframeEffect: 208 > 184
        AnimationPlaybackEvent: 104 > 88
        EffectTiming: 72 > 64
        ComputedEffectTiming: 136 > 112
        AnimationTimeline: 264 > 248
        DocumentTimeline: 496 > 464
        OptionalEffectTiming: 112 > 80
        BaseKeyframe: 32 > 24
        ParsedKeyframe: 80 > 72
        BaseComputedKeyframe: 40 > 32

        * animation/AnimationEffect.h: Order members in decreasing size, except for m_fill and m_direction, which we put at the top to
        save 8 bytes (2 bytes of padding instead of 4 before m_animation and saving 6 bytes of padding at the end).
        * animation/AnimationPlaybackEvent.cpp:
        (WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent):
        * animation/AnimationPlaybackEvent.h:
        * animation/AnimationPlaybackEventInit.h:
        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::AnimationTimeline):
        (WebCore::AnimationTimeline::updateCSSTransitionsForElement):
        * animation/AnimationTimeline.h: We remove the m_classType member and instead make isDocumentTimeline() virtual.
        (WebCore::AnimationTimeline::isDocumentTimeline const):
        (): Deleted.
        (WebCore::AnimationTimeline::classType const): Deleted.
        * animation/CompositeOperation.h:
        * animation/CompositeOperationOrAuto.h:
        * animation/ComputedEffectTiming.h:
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::DeclarativeAnimation):
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        * animation/DeclarativeAnimation.h: We keep m_wasPending and m_previousPhase at the top to save some padding at the end.
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        * animation/DocumentTimeline.h:
        * animation/EffectTiming.h:
        * animation/FillMode.h:
        * animation/IterationCompositeOperation.h:
        * animation/KeyframeEffect.cpp:
        (WebCore::computeMissingKeyframeOffsets):
        (WebCore::KeyframeEffect::create):
        (WebCore::KeyframeEffect::KeyframeEffect):
        * animation/KeyframeEffect.h:
        * animation/OptionalEffectTiming.h:
        * animation/PlaybackDirection.h:
        * animation/WebAnimation.h:
        * animation/WebAnimationUtilities.h:
        (WebCore::WebAnimationsMarkableDoubleTraits::isEmptyValue):
        (WebCore::WebAnimationsMarkableDoubleTraits::emptyValue):

2019-01-09  Ryosuke Niwa  <rniwa@webkit.org>

        ThreadTimers should not store a raw pointer in its heap
        https://bugs.webkit.org/show_bug.cgi?id=192975
        <rdar://problem/46893946>

        Reviewed by Geoffrey Garen.

        Right now, ThreadTimers's heap data structure stores a raw pointer to TimerBase. In order to harden the timer code,
        this patch replaces it with ThreadTimerHeapItem, a newly introduced struct, which effectively acks like
        WeakReference<TimerBase*> as the timer heap and TimerBase both store RefPtr to it, and TimerBase's destructor clears
        the raw pointer back to TimerBase*.

        This approach was taken instead of an out-right adoptation of WeakPtr since the heap data structure requires each node
        in the heap to have a fixed "priority" yet WeakPtr with no valid pointer back to TimerBase would effectively lose its
        "priority" thereby corrupting the heap data structure. That is, each item in the heap must remember its fire time and
        insertion order even when the underlying TimerBase had gone away (this should never happen but the whole point of this
        hardening is to make it work even in the precense of such a bug).

        This patch also moves the heap index in TimerBase to ThreadTimerHeapItem, and replaces the pointer to the heap vector
        in TimerBase by a reference to ThreadTimers in ThreadTimerHeapItem. Note that ThreadTimers is a per-thread singleton.

        The correctness of this hardening was tested by commenting out the call to stop() and !isInHeap() assertion in
        TimerBase::~TimerBase() as well as the !isInHeap() assertion in ThreadTimerHeapItem::clearTimer() and observing that
        layout tests run successfully without hitting any debug assertions.

        No new tests since there should be no observable behavior difference.

        * WebCore.xcodeproj/project.pbxproj: Export ThreadTimers.h as a private header since it's now included in Timer.h
        * platform/ThreadTimers.cpp:
        (WebCore::ThreadTimers::updateSharedTimer): Delete ThreadTimerHeapItem's with nullptr TimerBase* (TimerBase had
        already been deleted). This should only happen when TimerBase's destructor failed to remove itself from the timer heap,
        which should never happen.
        (WebCore::ThreadTimers::sharedTimerFiredInternal): Ditto. Also removed the redundant code which had removed the timer
        from the heap since setNextFireTime does the removal already.
        * platform/ThreadTimers.h: Outdented the whole file.
        (WebCore::ThreadTimers::timerHeap): We use Vector<RefPtr<ThreadTimerHeapItem>> instead of Vector<Ref<~>> since Ref<~>
        doesn't have a copy constructor which is used by std::push_heap.
        (WebCore::ThreadTimerHeapItem): Added.
        (WebCore::ThreadTimerHeapItem::hasTimer const): Added.
        (WebCore::ThreadTimerHeapItem::setNotInHeap): Added. ThreadTimerHeapItem uses unsigned -1 as the single value which
        signifies the item not being in the heap instead of all negative values as in the old code in TimerBase.
        (WebCore::ThreadTimerHeapItem::isInHeap const): Added.
        (WebCore::ThreadTimerHeapItem::isFirstInHeap const): Added.
        (WebCore::ThreadTimerHeapItem::timer): Added.
        (WebCore::ThreadTimerHeapItem::clearTimer): Added.
        (WebCore::ThreadTimerHeapItem::heapIndex const): Added.
        (WebCore::ThreadTimerHeapItem::setHeapIndex): Added.
        (WebCore::ThreadTimerHeapItem::timerHeap const): Added.
        * platform/Timer.cpp:
        (WebCore::threadGlobalTimerHeap): This function is now only used in assertions.
        (WebCore::ThreadTimerHeapItem::ThreadTimerHeapItem): Added.
        (WebCore::ThreadTimerHeapItem::create): Added.
        (WebCore::TimerHeapPointer::TimerHeapPointer):
        (WebCore::TimerHeapPointer::operator-> const):
        (WebCore::TimerHeapReference::TimerHeapReference): Added a copy constructor.
        (WebCore::TimerHeapReference::copyRef const): Added.
        (WebCore::TimerHeapReference::operator RefPtr<ThreadTimerHeapItem>& const):
        (WebCore::TimerHeapPointer::operator* const):
        (WebCore::TimerHeapReference::operator=): Use move assignment operator.
        (WebCore::TimerHeapReference::swapWith):
        (WebCore::TimerHeapReference::updateHeapIndex): Extracted to share code between two verions of operator=.
        (WebCore::swap):
        (WebCore::TimerHeapIterator::TimerHeapIterator):
        (WebCore::TimerHeapIterator::operator-> const):
        (WebCore::TimerHeapLessThanFunction::compare): Added variants which take RefPtr<ThreadTimerHeapItem>.
        (WebCore::TimerHeapLessThanFunction::operator() const):
        (WebCore::TimerBase::TimerBase):
        (WebCore::TimerBase::~TimerBase):Clear the raw pointer in ThreadTimerHeapItem.
        (WebCore::TimerBase::stop):
        (WebCore::TimerBase::nextFireInterval const):
        (WebCore::TimerBase::checkHeapIndex const): Added the consistency check for other items in the heap.
        (WebCore::TimerBase::checkConsistency const):
        (WebCore::TimerBase::heapDecreaseKey):
        (WebCore::TimerBase::heapDelete):
        (WebCore::TimerBase::heapDeleteMin):
        (WebCore::TimerBase::heapIncreaseKey):
        (WebCore::TimerBase::heapInsert):
        (WebCore::TimerBase::heapPop):
        (WebCore::TimerBase::heapPopMin):
        (WebCore::TimerBase::heapDeleteNullMin): Added. Used to delete ThreadTimerHeapItem which no longer has a valid TimerBase.
        (WebCore::parentHeapPropertyHolds):
        (WebCore::childHeapPropertyHolds):
        (WebCore::TimerBase::hasValidHeapPosition const):
        (WebCore::TimerBase::updateHeapIfNeeded): Tweaked the heap index assertion as heapIndex() itself would assert when called
        on an item with an invalid (-1) heap index.
        (WebCore::TimerBase::setNextFireTime): Create ThreadTimerHeapItem. Note m_heapItem is never cleared until this TimerBase
        is deleted.
        (WebCore::TimerHeapReference::operator TimerBase* const): Deleted.
        * platform/Timer.h:
        (WebCore::TimerBase): Replaced m_nextFireTime, m_heapIndex, m_heapInsertionOrder, and m_cachedThreadGlobalTimerHeap
        by m_heapItem, RefPtr to an ThreadTimerHeapItem.
        (WebCore::TimerBase::augmentFireInterval):
        (WebCore::TimerBase::inHeap const):
        (WebCore::TimerBase::nextFireTime const):
        (WebCore::TimerBase::isActive const):
        (WebCore::TimerBase:: const): Deleted.

2019-01-09  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(239737) iOS quicklook tests should not dereference null
        https://bugs.webkit.org/show_bug.cgi?id=193307

        Reviewed by Brent Fulgham.

        The quicklook tests rely on ResourceHandle on iOS for some reason.
        This is a problem we'll fix later, but for now keep them working by not crashing.

        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::createNSURLConnection):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::willSendRequest):
        (WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication):
        (WebCore::ResourceHandle::receivedCredential):

2019-01-09  Zalan Bujtas  <zalan@apple.com>

        [Datalist] Crash when input with datalist is dynamically added.
        https://bugs.webkit.org/show_bug.cgi?id=193012
        <rdar://problem/45923457>

        Reviewed by Brent Fulgham.

        In certain cases (cloning, setAttribute), it's too early to check for the list attribute in createShadowSubtree
        to see whether the input needs datalist related items. The list attribute is simply not set yet.
        This patch only addresses the obvious crash. m_dataListDropdownIndicator clearly lacks proper lifecycle management (see webkit.org/b/193032). 

        Test: fast/forms/datalist/datalist-crash-when-dynamic.html

        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::createShadowSubtree):
        (WebCore::TextFieldInputType::attributeChanged):
        (WebCore::TextFieldInputType::createDataListDropdownIndicator):
        * html/TextFieldInputType.h:

2019-01-09  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Fix vertex-buffer-triangle-strip test and small update to GPURenderPipeline
        https://bugs.webkit.org/show_bug.cgi?id=193289

        Reviewed by Dean Jackson.

        Fix broken test after pipeline layouts were added, and a small refactoring to GPURenderPipeline to avoid
        retaining its descriptor after creation.

        * platform/graphics/gpu/GPURenderPipeline.h:
        (WebCore::GPURenderPipeline::primitiveTopology const):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::GPURenderPipeline):

2019-01-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: Protocol Logging: log messages as objects if inspector^2 is open
        https://bugs.webkit.org/show_bug.cgi?id=193284

        Reviewed by Joseph Pecoraro.

        No newe tests, as this is simply exposes a value.

        * inspector/InspectorFrontendHost.idl:
        * inspector/InspectorFrontendHost.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::isBeingInspected): Added.

2019-01-09  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Add support for peculiar cases.
        https://bugs.webkit.org/show_bug.cgi?id=192625

        Reviewed by Antti Koivisto.

        Implement some of the more peculiar cases like margin collpasing through multiple boxes etc.
        Add ~100 new passing cases.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        * layout/LayoutState.h:
        (WebCore::Layout::LayoutState::hasFormattingState const):
        * layout/MarginTypes.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBeforeForAncestors const):
        (WebCore::Layout::hasPrecomputedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::adjustedVerticalPositionAfterMarginCollapsing const):
        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::blockFormattingState const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginAfter): Deleted.
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight): Deleted.
        * layout/blockformatting/BlockFormattingState.h:
        (WebCore::Layout::BlockFormattingState::setPositiveAndNegativeVerticalMargin):
        (WebCore::Layout::BlockFormattingState::hasPositiveAndNegativeVerticalMargin const):
        (WebCore::Layout::BlockFormattingState::positiveAndNegativeVerticalMargin const):
        (WebCore::Layout::BlockFormattingState::setHasEstimatedMarginBefore):
        (WebCore::Layout::BlockFormattingState::clearHasEstimatedMarginBefore):
        (WebCore::Layout::BlockFormattingState::hasEstimatedMarginBefore const):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::hasClearance):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSiblingMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
        (WebCore::Layout::computedPositiveAndNegativeMargin):
        (WebCore::Layout::marginValue):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::updateCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginBeforeFromFirstChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginAfterFromLastChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfter): Deleted.
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::Box):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::hasClearance const):
        (WebCore::Display::Box::setEstimatedMarginBefore):
        (WebCore::Display::Box::estimatedMarginBefore const):
        (WebCore::Display::Box::setHasClearance):
        (WebCore::Display::Box::invalidateEstimatedMarginBefore):
        (WebCore::Display::Box::setVerticalMargin):
        (WebCore::Display::Box::rectWithMargin const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2019-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r239156): [FreeType] fixed width, and synthetic bold/italic not correctly applied since r239156
        https://bugs.webkit.org/show_bug.cgi?id=193276

        Reviewed by Žan Doberšek.

        FontCache::createFontPlatformData() is calling getFontPropertiesFromPattern() with the configure pattern instead
        of the result one after the match.

        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::FontCache::createFontPlatformData):

2019-01-08  Dean Jackson  <dino@apple.com>

        Blob references for System Previews don't get a correct file extension
        https://bugs.webkit.org/show_bug.cgi?id=193268
        <rdar://problem/47133037>

        Reviewed by Tim Horton.

        Apple platforms don't yet have a mapping from the USD MIME type to
        file extensions (and we support some non-standard MIME types), which
        means that downloads from Blob references don't get correctly named.

        Fix this by adding an explicit mapping between System Preview types
        and ".usdz".

        WebKit API test: _WKDownload.SystemPreviewUSDZBlobNaming

        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::isSystemPreviewMIMEType): Remove USE(SYSTEM_PREVIEW) since
        this applies to macOS and iOS now.
        * platform/MIMETypeRegistry.h:
        * platform/cocoa/MIMETypeRegistryCocoa.mm:
        (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType): Add a mapping
        for USDZ.

2019-01-08  Tim Horton  <timothy_horton@apple.com>

        Editable images sometimes don't become focused when tapped
        https://bugs.webkit.org/show_bug.cgi?id=193259
        <rdar://problem/47038424>

        Reviewed by Wenson Hsieh.

        Often when tapping an editable image inside an editable text area, the
        text area's selection will change instead of focusing the editable image.

        No new tests; I have had no luck writing a test that reliably failed 
        beforehand (the "sometimes" is a problem).

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::defaultEventHandler):
        * html/HTMLImageElement.h:
        Override mousedown on editable images, focus the image, and prevent
        the default behavior.

2019-01-08  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support U2F HID Authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191535
        <rdar://problem/47102027>

        Reviewed by Brent Fulgham.

        This patch changes U2fCommandConstructor to produce register commands with
        enforcing test of user presence. Otherwise, authenticators would silently
        generate credentials. It also renames readFromU2fSignResponse to
        readU2fSignResponse.

        Tests: http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html
               http/wpt/webauthn/public-key-credential-create-failure-u2f.https.html
               http/wpt/webauthn/public-key-credential-create-success-u2f.https.html
               http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html
               http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html
               http/wpt/webauthn/public-key-credential-get-success-u2f.https.html

        * Modules/webauthn/fido/U2fCommandConstructor.cpp:
        (fido::WebCore::constructU2fRegisterCommand):
        * Modules/webauthn/fido/U2fResponseConverter.cpp:
        (fido::readU2fSignResponse):
        (fido::readFromU2fSignResponse): Deleted.
        * Modules/webauthn/fido/U2fResponseConverter.h:

2019-01-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Dispatch a synthetic mousedown event prior to starting drags
        https://bugs.webkit.org/show_bug.cgi?id=193229
        <rdar://problem/46717097>

        Reviewed by Tim Horton.

        Tweaks some drag initiation logic on iOS to actually send a "mousedown" event to the page prior to drag start.
        This improves drag and drop compatibility with web pages that expect a mousedown to always precede dragging.
        Additionally, ensure that preventing the "mousedown" event also prevents "dragstart", which matches macOS
        behavior.

        Test: DragAndDropTests.PreventingMouseDownShouldPreventDragStart

        * page/EventHandler.cpp:

        Make the text drag delay 0 on iOS. This was introduced on iOS when originally bringing up drag and drop, and was
        made to simply match macOS. However, it doesn't make sense to respect the delay here, since the purpose of this
        delay is to disambiguate between making a text selection and starting a drag when pressing on text that is
        already selected; on iOS (including iOSMac), this gesture conflict is already resolved by platform gesture
        recognizers in the client layer, so there is always no delay between mouse down and drag here.

        * page/ios/EventHandlerIOS.mm:

        Dispatch a mousedown and inspect the value of `m_mouseDownMayStartDrag` when starting a drag on iOS. This brings
        our behavior closer in line with macOS.

        (WebCore::EventHandler::tryToBeginDataInteractionAtPoint):

2019-01-08  Youenn Fablet  <youenn@apple.com>

        service worker fetch handler results in bad referrer
        https://bugs.webkit.org/show_bug.cgi?id=188248
        <rdar://problem/47050478>

        Reviewed by Alex Christensen.

        Response sanitization was removing the ReferrerPolicy header from opaque redirect responses.
        Reduce sanitization of opaque redirect responses to opaque responses and allow Location header.
        Make sure referrer policy is updated for all load redirections, not only CORS loads.

        Test: http/tests/security/referrer-policy-redirect-link-downgrade.html

        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl):
        * platform/network/ResourceResponseBase.cpp:
        (WebCore::isSafeCrossOriginResponseHeader):
        (WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):

2019-01-08  Youenn Fablet  <youenn@apple.com>

        IDB storage of Crypto keys does not work in private browsing mode
        https://bugs.webkit.org/show_bug.cgi?id=193219

        Reviewed by Brady Eidson.

        https://trac.webkit.org/changeset/238677 moved from using a JSGlobalObject to a JSDOMGlobalObject for serialization/deserialization.
        This does not work for crypto keys as they require not only a JSDOMGlobalObject but either a window or worker global object.

        To fix the issue, revert 238677, and fix it by checking whether the dumping of an ArrayBuffer happens for a JSDOMGlobalObject or a JSGlobalObject.
        If it is the latter, use JSC routines instead of toJS() which requires a JSDOMGlobalObject.

        Covered by updated test.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::databaseThreadVM):
        (WebCore::IDBServer::UniqueIDBDatabase::databaseThreadExecState):
        * bindings/js/JSDOMGlobalObject.cpp:
        * bindings/js/JSDOMGlobalObject.h:
        * bindings/js/JSDOMWrapper.cpp:
        (WebCore::JSDOMObject::JSDOMObject):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::dumpArrayBufferView):
        (WebCore::CloneSerializer::toJSArrayBuffer):

2019-01-08  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Update createRenderPipeline for WebGPUPipelineLayout
        https://bugs.webkit.org/show_bug.cgi?id=193247

        Reviewed by Dean Jackson.

        Add WebGPUPipelineLayout to WebGPURenderPipeline via WebGPUPipelineDescriptorBase.

        Test: Updated render-pipelines.html to test new functionality.

        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createRenderPipeline const): Convert WebGPUPipelineLayout to GPUPipelineLayout.
        * Modules/webgpu/WebGPUPipelineDescriptorBase.h:
        * Modules/webgpu/WebGPUPipelineDescriptorBase.idl: Add layout field.
        * Modules/webgpu/WebGPUPipelineLayout.h: 
        (WebCore::WebGPUPipelineLayout::pipelineLayout): Added. Getter.
        * platform/graphics/gpu/GPUPipelineDescriptorBase.h: Updated from out-of-date version.
        * platform/graphics/gpu/GPUPipelineLayout.cpp:
        (WebCore::GPUPipelineLayout::GPUPipelineLayout): Now retains bindGroupLayouts from descriptor.
        * platform/graphics/gpu/GPUPipelineLayout.h:
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Now inherits from GPUPipelineDescriptorBase.
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor): Custom constructor for non-aggregate struct.

2019-01-08  Chris Dumez  <cdumez@apple.com>

        Prevent cross-site top-level navigations from third-party iframes
        https://bugs.webkit.org/show_bug.cgi?id=193076
        <rdar://problem/36074736>

        Reviewed by Alex Christensen.

        Prevent cross-site top-level navigations from third-party iframes if the following conditions are met:
        1. Its tries to navigate the top-level page cross-site (different eTDL+1)
        2. The user has never interacted with the third-party iframe or any of its subframes

        This experiment's intent is to block suspicious main-frame navigations by third-party content. The feature
        is behind a runtime experimental feature flag, on by default.

        Tests: http/tests/security/allow-top-level-navigations-by-third-party-iframes-to-same-origin.html
               http/tests/security/allow-top-level-navigations-by-third-party-iframes-with-previous-user-activation.html
               http/tests/security/allow-top-level-navigations-by-third-party-iframes-with-user-activation.html
               http/tests/security/block-top-level-navigations-by-third-party-iframes.html

        * dom/Document.cpp:
        (WebCore::printNavigationErrorMessage):
        (WebCore::Document::canNavigate):
        (WebCore::Document::canNavigateInternal):
        (WebCore::Document::isNavigationBlockedByThirdPartyIFrameRedirectBlocking):
        * dom/Document.h:
        * dom/UserGestureIndicator.cpp:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::setLocation):
        * page/DOMWindow.h:
        * page/Frame.h:
        * page/Location.cpp:
        (WebCore::Location::replace):
        (WebCore::Location::setLocation):
        * page/Settings.yaml:

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        No change in behavior.  Some code was only used for ResourceHandle, which isn't used in modern WebKit,
        and for cookies, which are handled in the NetworkProcess in modern WebKit.

        * loader/CookieJar.cpp:
        (WebCore::storageSession):
        * loader/EmptyClients.cpp:
        * platform/network/NetworkingContext.h:
        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::createNSURLConnection):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        (WebCore::ResourceHandle::willSendRequest):
        (WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication):
        (WebCore::ResourceHandle::receivedCredential):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r239727.

        Broke API tests

        Reverted changeset:

        "Stop using NetworkStorageSession in WebProcess"
        https://bugs.webkit.org/show_bug.cgi?id=193236
        https://trac.webkit.org/changeset/239727

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        No change in behavior.  Some code was only used for ResourceHandle, which isn't used in modern WebKit,
        and for cookies, which are handled in the NetworkProcess in modern WebKit.

        * loader/CookieJar.cpp:
        (WebCore::storageSession):
        * loader/EmptyClients.cpp:
        * platform/network/NetworkingContext.h:
        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::createNSURLConnection):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        (WebCore::ResourceHandle::willSendRequest):
        (WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication):
        (WebCore::ResourceHandle::receivedCredential):

2019-01-08  Chris Dumez  <cdumez@apple.com>

        Regression(PSON-r239182): Blank view when navigating back and forth between google.com and stack overflow
        https://bugs.webkit.org/show_bug.cgi?id=193224
        <rdar://problem/47097726>

        Reviewed by Alex Christensen.

        Since r239182, pages get suspended in-place when we suspend the old process after a process-swap on navigation.
        When we return to a suspended page, we load the current history item again and it normally properly restores
        the page from PageCache, even though we load the same history item and the current one and even though the
        page is suspended in-place (i.e. we did not navigate away, which is the usual case for page cache).

        The issue is that if the page URL contains a fragment, FrameLoader::shouldPerformFragmentNavigation() would
        return true because both the source and destination URLs (which are the same) contains a fragment. To address
        the issue, update FrameLoader::shouldPerformFragmentNavigation() to return false if the current page is
        suspended.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::shouldPerformFragmentNavigation):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Move Windows-specific code from NetworkStorageSessionCFNet.cpp to its own file
        https://bugs.webkit.org/show_bug.cgi?id=192958

        Reviewed by Yusuke Suzuki.

        This makes it easier to reason about what code is used where.

        * PlatformAppleWin.cmake:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::createPrivateStorageSession): Deleted.
        (WebCore::cookieDomain): Deleted.
        (WebCore::canonicalCookieTime): Deleted.
        (WebCore::cookieCreatedTime): Deleted.
        (WebCore::cookieExpirationTime): Deleted.
        (WebCore::cookieName): Deleted.
        (WebCore::cookiePath): Deleted.
        (WebCore::cookieValue): Deleted.
        (WebCore::filterCookies): Deleted.
        (WebCore::copyCookiesForURLWithFirstPartyURL): Deleted.
        (WebCore::createCookies): Deleted.
        (WebCore::NetworkStorageSession::setCookiesFromDOM const): Deleted.
        (WebCore::containsSecureCookies): Deleted.
        (WebCore::NetworkStorageSession::cookiesForDOM const): Deleted.
        (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): Deleted.
        (WebCore::NetworkStorageSession::cookiesEnabled const): Deleted.
        (WebCore::NetworkStorageSession::getRawCookies const): Deleted.
        (WebCore::NetworkStorageSession::deleteCookie const): Deleted.
        (WebCore::NetworkStorageSession::getHostnamesWithCookies): Deleted.
        (WebCore::NetworkStorageSession::deleteAllCookies): Deleted.
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames): Deleted.
        (WebCore::NetworkStorageSession::deleteAllCookiesModifiedSince): Deleted.
        * platform/network/cf/NetworkStorageSessionCFNetWin.cpp: Added.
        (WebCore::createPrivateStorageSession):
        (WebCore::NetworkStorageSession::setCookies):
        (WebCore::cookieDomain):
        (WebCore::canonicalCookieTime):
        (WebCore::cookieCreatedTime):
        (WebCore::cookieExpirationTime):
        (WebCore::cookieName):
        (WebCore::cookiePath):
        (WebCore::cookieValue):
        (WebCore::filterCookies):
        (WebCore::copyCookiesForURLWithFirstPartyURL):
        (WebCore::createCookies):
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):
        (WebCore::containsSecureCookies):
        (WebCore::NetworkStorageSession::cookiesForDOM const):
        (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):
        (WebCore::NetworkStorageSession::cookiesEnabled const):
        (WebCore::NetworkStorageSession::getRawCookies const):
        (WebCore::NetworkStorageSession::deleteCookie const):
        (WebCore::NetworkStorageSession::getHostnamesWithCookies):
        (WebCore::NetworkStorageSession::deleteAllCookies):
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames):
        (WebCore::NetworkStorageSession::deleteAllCookiesModifiedSince):

2018-12-19  Antoine Quint  <graouts@apple.com>

        [Web Animations] Compute animation effect timing properties in batch
        https://bugs.webkit.org/show_bug.cgi?id=192850

        Reviewed by Dean Jackson.

        We remove a host of functions from AnimationEffect that would allow the computation of various timing properties
        defined by the Web Animations specification: phase, progress, current iteration, etc. Indeed, a lot of these functions
        would call each other in a chain, and we would re-compute a lot of the earlier properties in those chains several times
        when doing something like querying the animation progress. Additionally, some functions, such as WebAnimation::computeRelevance()
        and WebAnimation::timeToNextTick() would yield the computation of several such properties numerous times. All of those
        functions are called during each animation frame and are ripe for optimizations.

        We now compute all timing properties across two functions:
        
        1. the new AnimationEffect::getBasicTiming() which computes the local time, end time, active duration, active time and phase,
        2. the existing AnimationEffect::getComputedTiming() which now also exposes the phase and simple iteration progress.

        To support this we introduce a new BasicEffectTiming struct to contain the values computed in AnimationEffect::getBasicTiming()
        and spun the AnimationEffect::Phase struct as AnimationEffectPhase so that it may be used across BasicEffectTiming and
        ComputedEffectTiming.

        No new test since there is no user-observable change.

        * WebCore.xcodeproj/project.pbxproj:
        * animation/AnimationEffect.cpp:
        (WebCore::AnimationEffect::getTiming const):
        (WebCore::AnimationEffect::getBasicTiming const):
        (WebCore::AnimationEffect::getComputedTiming const):
        (WebCore::AnimationEffect::localTime const): Deleted.
        (WebCore::AnimationEffect::phase const): Deleted.
        (WebCore::AnimationEffect::activeTime const): Deleted.
        (WebCore::AnimationEffect::overallProgress const): Deleted.
        (WebCore::AnimationEffect::simpleIterationProgress const): Deleted.
        (WebCore::AnimationEffect::currentIteration const): Deleted.
        (WebCore::AnimationEffect::currentDirection const): Deleted.
        (WebCore::AnimationEffect::directedProgress const): Deleted.
        (WebCore::AnimationEffect::transformedProgress const): Deleted.
        (WebCore::AnimationEffect::iterationProgress const): Deleted.
        (WebCore::AnimationEffect::getTiming): Deleted.
        (WebCore::AnimationEffect::getComputedTiming): Deleted.
        (WebCore::AnimationEffect::endTime const): Deleted.
        (WebCore::AnimationEffect::activeDuration const): Deleted.
        * animation/AnimationEffect.h:
        * animation/AnimationEffectPhase.h: Copied from Source/WebCore/animation/ComputedEffectTiming.h.
        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::updateCSSTransitionsForElement):
        * animation/AnimationTimeline.h:
        * animation/BasicEffectTiming.h: Copied from Source/WebCore/animation/ComputedEffectTiming.h.
        * animation/ComputedEffectTiming.h:
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::cancel):
        (WebCore::DeclarativeAnimation::phaseWithoutEffect const):
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        * animation/DeclarativeAnimation.h:
        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::apply):
        (WebCore::KeyframeEffect::getAnimatedStyle):
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::effectEndTime const):
        (WebCore::WebAnimation::computeRelevance):
        (WebCore::WebAnimation::timeToNextTick const):

2019-01-07  Youenn Fablet  <youenn@apple.com>

        Crash in SWServer::Connection::resolveRegistrationReadyRequests
        https://bugs.webkit.org/show_bug.cgi?id=193217

        Reviewed by Chris Dumez.

        As can be seen from the traces, SWServer might clear its connections HashMap in its destructor.
        This might then trigger calling SWServer::resolveRegistrationReadyRequests.
        This method is iterating on the connections HashMap which is being cleared.
        To remove this problem, move the HashMap in a temporary variable and clear the temporary variable.

        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::~SWServer):

2019-01-07  Jer Noble  <jer.noble@apple.com>

        REGRESSION (r239519): ASSERTION FAILED: !m_adoptionIsRequired in com.apple.WebCore: void WTF::refIfNotNull<WebCore::CDMSessionMediaSourceAVFObjC> + 53
        https://bugs.webkit.org/show_bug.cgi?id=193211
        <rdar://problem/46937412>

        Reviewed by Eric Carlson.

        Make CDMSessionMediaSourceAVFObjC a CanMakeWeakPtr rather than RefCounted, as CDMSessions are stored in
        std::unique_ptrs, and not in Ref or RefPtr.

        * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):

2019-01-07  David Kilzer  <ddkilzer@apple.com>

        Prefer RetainPtr<NSObject> to RetainPtr<NSObject *>
        <https://webkit.org/b/193056>

        Reviewed by Alex Christensen.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]):
        (-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:withDiscontinuity:]):
        * platform/network/cf/AuthenticationChallenge.h:
        - Remove '*' from RetainPtr<> type.

        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::cookiesForURL):
        - Once retainPtr() was changed to return RetainPtr<NSArray>
          instead of RetainPtr<NSArray *> here, that forced the type of
          `cookiesPtr` to change as well since
          Optional<RetainPtr<NSArray>> is not assignable to
          Optional<RetainPtr<NSArray *>> without further template
          specialization, which didn't seem useful since
          Optional<RetainPtr<>> variable types are rarely used.

2019-01-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: extend XHR breakpoints to work with fetch
        https://bugs.webkit.org/show_bug.cgi?id=185843
        <rdar://problem/40431027>

        Reviewed by Matt Baker.

        Test: inspector/dom-debugger/url-breakpoints.html

        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::fetch):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::willFetch): Added.
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::willFetchImpl): Added.

        * inspector/agents/InspectorDOMDebuggerAgent.h:
        * inspector/agents/InspectorDOMDebuggerAgent.cpp:
        (WebCore::InspectorDOMDebuggerAgent::disable):
        (WebCore::InspectorDOMDebuggerAgent::discardBindings):
        (WebCore::InspectorDOMDebuggerAgent::setURLBreakpoint): Added.
        (WebCore::InspectorDOMDebuggerAgent::removeURLBreakpoint): Added.
        (WebCore::InspectorDOMDebuggerAgent::breakOnURLIfNeeded): Added.
        (WebCore::InspectorDOMDebuggerAgent::willSendXMLHttpRequest):
        (WebCore::InspectorDOMDebuggerAgent::willFetch): Added.
        (WebCore::InspectorDOMDebuggerAgent::setXHRBreakpoint): Deleted.
        (WebCore::InspectorDOMDebuggerAgent::removeXHRBreakpoint): Deleted.

2019-01-07  Eric Carlson  <eric.carlson@apple.com>

        Cleanup AudioTrackPrivateMediaStreamCocoa
        https://bugs.webkit.org/show_bug.cgi?id=193208
        <rdar://problem/42225870>

        Reviewed by Youenn Fablet.

        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
        (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): Clear input and
        output format descriptions after stopping the audio unit.

2019-01-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: show secure connection details per-request
        https://bugs.webkit.org/show_bug.cgi?id=191539
        <rdar://problem/45979891>

        Reviewed by Joseph Pecoraro.

        Test: http/tests/inspector/network/resource-security-connection.html

        * platform/network/NetworkLoadMetrics.h:
        (WebCore::NetworkLoadMetrics:isolatedCopy):
        (WebCore::NetworkLoadMetrics:clearNonTimingData):
        (WebCore::NetworkLoadMetrics:operator==):
        (WebCore::NetworkLoadMetrics:encode):
        (WebCore::NetworkLoadMetrics:decode):

        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::buildObjectForMetrics):

2019-01-07  Eric Carlson  <eric.carlson@apple.com>

        Deactivate audio session whenever possible
        https://bugs.webkit.org/show_bug.cgi?id=193188
        <rdar://problem/42678977>

        Reviewed by Jer Noble.

        Test: media/deactivate-audio-session.html

        * platform/audio/AudioSession.cpp:
        (WebCore::AudioSession::tryToSetActive):
        (WebCore::AudioSession::tryToSetActiveInternal):
        * platform/audio/AudioSession.h:
        (WebCore::AudioSession::isActive const):

        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::removeSession):
        (WebCore::deactivateAudioSession):
        (WebCore::PlatformMediaSessionManager::shouldDeactivateAudioSession):
        (WebCore::PlatformMediaSessionManager::setShouldDeactivateAudioSession):
        * platform/audio/PlatformMediaSessionManager.h:

        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::tryToSetActiveInternal):
        (WebCore::AudioSession::tryToSetActive): Deleted.

        * platform/audio/mac/AudioSessionMac.cpp:
        (WebCore::AudioSession::tryToSetActiveInternal):
        (WebCore::AudioSession::tryToSetActive): Deleted.

        * testing/Internals.cpp:
        (WebCore::Internals::audioSessionActive const):
        * testing/Internals.h:
        * testing/Internals.idl:

2019-01-07  David Kilzer  <ddkilzer@apple.com>

        PlatformECKey should use a std::unique_ptr
        <https://webkit.org/b/193170>

        Reviewed by Brent Fulgham.

        Broadly:
        - Switch from using raw pointers to using std::unique_ptr<> to
          hold PlatformECKey.
        - Introduce PlatformECKeyContainer type to handle different
          std::unique_ptr<> types on each platform.
        - Get rid of custom CryptoKeyEC destructors since the
          std::unique_ptr<> handles that with a Deleter.
        - Initialize stack variables to nullptr.

        * crypto/gcrypt/CryptoKeyECGCrypt.cpp:
        (WebCore::CryptoKeyEC::keySizeInBits const):
        (WebCore::CryptoKeyEC::platformGeneratePair):
        (WebCore::CryptoKeyEC::platformImportRaw):
        (WebCore::CryptoKeyEC::platformImportJWKPublic):
        (WebCore::CryptoKeyEC::platformImportJWKPrivate):
        (WebCore::CryptoKeyEC::platformImportSpki):
        (WebCore::CryptoKeyEC::platformImportPkcs8):
        (WebCore::CryptoKeyEC::platformExportRaw const):
        (WebCore::CryptoKeyEC::platformAddFieldElements const):
        (WebCore::CryptoKeyEC::platformExportSpki const):
        (WebCore::CryptoKeyEC::platformExportPkcs8 const):
        (WebCore::CryptoKeyEC::~CryptoKeyEC): Deleted.
        * crypto/keys/CryptoKeyEC.cpp:
        (WebCore::CryptoKeyEC::CryptoKeyEC):
        * crypto/keys/CryptoKeyEC.h:
        (WebCore::CCECCryptorRefDeleter::operator() const):
        * crypto/mac/CryptoKeyECMac.cpp:
        (WebCore::CryptoKeyEC::keySizeInBits const):
        (WebCore::CryptoKeyEC::platformGeneratePair):
        (WebCore::CryptoKeyEC::platformImportRaw):
        (WebCore::CryptoKeyEC::platformExportRaw const):
        (WebCore::CryptoKeyEC::platformImportJWKPublic):
        (WebCore::CryptoKeyEC::platformImportJWKPrivate):
        (WebCore::CryptoKeyEC::platformAddFieldElements const):
        (WebCore::CryptoKeyEC::platformImportSpki):
        (WebCore::CryptoKeyEC::platformExportSpki const):
        (WebCore::CryptoKeyEC::platformImportPkcs8):
        (WebCore::CryptoKeyEC::platformExportPkcs8 const):
        (WebCore::CryptoKeyEC::~CryptoKeyEC): Deleted.

2019-01-07  Antti Koivisto  <antti@apple.com>

        UI process side scrollbars for UI side compositing on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193106

        Reviewed by Tim Horton.

        * page/FrameView.cpp:
        (WebCore::FrameView::paintScrollCorner):
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):

        Pass scrollbar host layers and the dark appearance bit to the scrolling tree.

        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::verticalScrollbarLayerForFrameView):
        (WebCore::ScrollingCoordinator::horizontalScrollbarLayerForFrameView):
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollableAreaParameters::ScrollableAreaParameters):
        (WebCore::ScrollableAreaParameters::operator== const):
        * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
        (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
        (WebCore::ScrollingStateFrameScrollingNode::setScrollbarLayers):
        * page/scrolling/ScrollingStateFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::scrollableAreaSize const):
        (WebCore::ScrollingTreeScrollingNode::totalContentsSize const):
        (WebCore::ScrollingTreeScrollingNode::useDarkAppearanceForScrollbars const):
        (WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition const):
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * platform/ScrollableArea.cpp:
        (WebCore::ScrollableArea::useDarkAppearanceForScrollbars const):

        Factor into a function as this is used in several places.

        * platform/ScrollableArea.h:
        * platform/mac/NSScrollerImpDetails.h:
        * platform/mac/ScrollAnimatorMac.mm:
        (-[WebScrollerImpDelegate effectiveAppearanceForScrollerImp:]):
        * platform/mac/ScrollbarThemeMac.h:

2019-01-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Native caret shows up alongside the page's caret when requesting desktop site on jsfiddle.net
        https://bugs.webkit.org/show_bug.cgi?id=193180
        <rdar://problem/45971041>

        Reviewed by Tim Horton.

        Adjust a method on RenderObject to additionally detect when the RenderObject is inside of an `overflow: hidden`
        container that is also empty. See WebKit ChangeLog for more details.

        Test:   editing/selection/ios/hide-selection-in-empty-overflow-hidden-container.html
                editing/selection/ios/show-selection-in-empty-overflow-hidden-document.html

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::isTransparentOrFullyClippedRespectingParentFrames const):
        (WebCore::RenderObject::isTransparentRespectingParentFrames const): Deleted.
        * rendering/RenderObject.h:

2019-01-07  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Margin collapsing should not be limited to in-flow non-replaced boxes.
        https://bugs.webkit.org/show_bug.cgi?id=193183

        Reviewed by Antti Koivisto.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        * layout/LayoutUnits.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):

2019-01-07  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Move MarginCollapse from BlockFormattingContext::Geometry to BlockFormattingContext
        https://bugs.webkit.org/show_bug.cgi?id=193181

        Reviewed by Antti Koivisto.

        This is in preparation to share margin collapsing across all boxes in block formatting context.

        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginBeforeFromFirstChild):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginAfterFromLastChild):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSibling):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSibling):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBefore):
        (WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBeforeFromFirstChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginAfterFromLastChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginAfter): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithPreviousSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithNextSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginsCollapseThrough): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBefore): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfter): Deleted.

2019-01-07  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Use Widget bounds for PlatformScreen rectangle information
        https://bugs.webkit.org/show_bug.cgi?id=193190

        Reviewed by Philippe Normand.

        Provide a better screen area estimate in screenRect() and
        screenAvailableRect() return values than the current 1240x640 value by
        using the Widget's bounds rectangle.

        This approach is only factually correct when the Widget-associated view
        is displayed in fullscreen, but it provides a better estimate even when
        displayed in any other case as well. WPE doesn't provide specific API
        that could enable the embedding environment to provide this information.

        * platform/wpe/PlatformScreenWPE.cpp:
        (WebCore::screenRect): Return bounds of the Widget object.
        (WebCore::screenAvailableRect): Relay the call to screenRect().

2019-01-07  Zan Dobersek  <zdobersek@igalia.com>

        Make Gradient::gradientSpaceTransform(), Pattern::patternSpaceTransform() methods const
        https://bugs.webkit.org/show_bug.cgi?id=193189

        Reviewed by Philippe Normand.

        The transform getter methods on the Gradient and Pattern classes both
        return const references to the transform objects, and don't modify any
        internal state. They should be marked const accordingly, allowing
        invocations of these two methods through const references to Gradient
        and Pattern objects.

        * platform/graphics/Gradient.h:
        (WebCore::Gradient::gradientSpaceTransform): Now const.
        * platform/graphics/Pattern.h:
        (WebCore::Pattern::patternSpaceTransform): Now const.

2019-01-07  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r239636): ImageDecoder::setEncodedDataStatusChangeCallback() can be called on a null decoder
        https://bugs.webkit.org/show_bug.cgi?id=193187

        Reviewed by Philippe Normand.

        * platform/graphics/ImageSource.cpp:
        (WebCore::ImageSource::ensureDecoderAvailable): Bail before calling the
        setEncodedDataStatusChangeCallback() method when the returned
        ImageDecoder object is null.

2019-01-06  Zan Dobersek  <zdobersek@igalia.com>

        [Nicosia] Take over CoordinatedGraphics-named implementation of async scrolling classes
        https://bugs.webkit.org/show_bug.cgi?id=193133

        Reviewed by Michael Catanzaro.

        Move the CoordinatedGraphics-specific files under
        page/scrolling/coordinatedgraphics/ to page/scrolling/nicosia/, along
        with renaming the files and classes accordingly. Implementation will
        only depend on the Nicosia-specific layer structure and is not specific
        to the CoordinatedGraphics system.

        * PlatformPlayStation.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp.
        * page/scrolling/nicosia/ScrollingCoordinatorNicosia.h: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h.
        * page/scrolling/nicosia/ScrollingStateNodeNicosia.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp.
        * page/scrolling/nicosia/ScrollingTreeFixedNode.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.cpp.
        * page/scrolling/nicosia/ScrollingTreeFixedNode.h: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.h.
        * page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.cpp.
        * page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.h.
        * page/scrolling/nicosia/ScrollingTreeNicosia.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp.
        * page/scrolling/nicosia/ScrollingTreeNicosia.h: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.h.
        * page/scrolling/nicosia/ScrollingTreeStickyNode.cpp: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.cpp.
        * page/scrolling/nicosia/ScrollingTreeStickyNode.h: Renamed from Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.h.
        * platform/TextureMapper.cmake:

2019-01-06  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import U2F command/response converters from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=193150
        <rdar://problem/47054028>

        Reviewed by Brent Fulgham.

        This patch imports Chromium's U2F command/response converters:
        https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#u2f-interoperability
        1. It directly imports the following files and suit them to WebKit's coding style:
        https://cs.chromium.org/chromium/src/device/fido/u2f_command_constructor.cc?l=1&rcl=db624110317d01efa78cd32e7be1524190e1beb0
        https://cs.chromium.org/chromium/src/device/fido/u2f_command_constructor.h?rcl=db624110317d01efa78cd32e7be1524190e1beb0
        https://cs.chromium.org/chromium/src/device/fido/u2f_command_constructor_unittest.cc?rcl=db624110317d01efa78cd32e7be1524190e1beb0
        2. It gathers the following methods into U2fResponseConverter:
        AuthenticatorMakeCredentialResponse::CreateFromU2fRegisterResponse()
        AuthenticatorGetAssertionResponse::CreateFromU2fSignResponse()
        3. It also updates FidoConstants.h, FidoTestData.h and CtapResponseTest.cpp accordingly.

        Besides importing stuff from Chroimum, it also gathers a bunch of constants and helper functions into WebAuthenticationConstants.h
        and WebAuthenticationUtils.h. It also fixes Bug 183534: 2) and 7).

        Covered by API tests.

        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinatorInternal::produceClientDataJsonHash):
        * Modules/webauthn/WebAuthenticationConstants.h: Copied from Source/WebCore/Modules/webauthn/COSEConstants.h.
        * Modules/webauthn/WebAuthenticationUtils.cpp: Added.
        (WebCore::convertBytesToVector):
        (WebCore::produceRpIdHash):
        (WebCore::encodeES256PublicKeyAsCBOR):
        (WebCore::buildAttestedCredentialData):
        (WebCore::buildAuthData):
        (WebCore::buildAttestationObject):
        * Modules/webauthn/WebAuthenticationUtils.h: Renamed from Source/WebCore/Modules/webauthn/COSEConstants.h.
        * Modules/webauthn/fido/DeviceResponseConverter.cpp:
        (fido::getCredentialId):
        (fido::readCTAPGetInfoResponse):
        * Modules/webauthn/fido/FidoConstants.h:
        * Modules/webauthn/fido/U2fCommandConstructor.cpp: Added.
        (fido::WebCore::constructU2fRegisterCommand):
        (fido::WebCore::constructU2fSignCommand):
        (fido::isConvertibleToU2fRegisterCommand):
        (fido::isConvertibleToU2fSignCommand):
        (fido::convertToU2fRegisterCommand):
        (fido::convertToU2fCheckOnlySignCommand):
        (fido::convertToU2fSignCommand):
        (fido::constructBogusU2fRegistrationCommand):
        * Modules/webauthn/fido/U2fCommandConstructor.h: Added.
        * Modules/webauthn/fido/U2fResponseConverter.cpp: Added.
        (fido::WebCore::extractECPublicKeyFromU2fRegistrationResponse):
        (fido::WebCore::extractCredentialIdFromU2fRegistrationResponse):
        (fido::WebCore::createAttestedCredentialDataFromU2fRegisterResponse):
        (fido::WebCore::parseX509Length):
        (fido::WebCore::createFidoAttestationStatementFromU2fRegisterResponse):
        (fido::readU2fRegisterResponse):
        (fido::readFromU2fSignResponse):
        * Modules/webauthn/fido/U2fResponseConverter.h: Added.
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2019-01-06  David Kilzer  <ddkilzer@apple.com>

        Leak of WTF::Function objects in WebCore::CryptoKeyRSA::generatePair() (64-80 bytes each) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193177>
        <rdar://problem/47072196>

        Reviewed by Saam Barati.

        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::CryptoKeyRSA::generatePair): Fix the leak by changing
        raw pointers to heap-allocated __block variables to hold the
        WTF::Function objects until they are consumed within the block
        passed to dispatch_async().  The __block variables act like
        captured variables in a C++ lambda and have the same lifetime as
        the block that they are captured in.  Note that we would have to
        convert the source file from C++ to Objective-C++ to use a C++
        lambda functor with dispatch_async(), which creates its own
        issue because the comipiler requires a copy constructor to
        convert the C++ lambda to a block functor, but the copy
        constructor for the C++ lambda is implicitly deleted because the
        WTF::Function copy constructor is explicitly deleted.  Whew!

2019-01-06  Pablo Saavedra  <psaavedra@igalia.com>

        [WPE][GTK] Building with ENABLE_VIDEO=OFF fails trying to use Document MediaPlayback functions.
        https://bugs.webkit.org/show_bug.cgi?id=193174

        Reviewed by Michael Catanzaro.

        * page/Page.cpp:
        (WebCore::Page::stopAllMediaPlayback):
        (WebCore::Page::suspendAllMediaPlayback):
        (WebCore::Page::resumeAllMediaPlayback):

2019-01-05  David Kilzer  <ddkilzer@apple.com>

        Leak of two CCRSACryptorRef (4.0 Kbytes/1 page each) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193154>
        <rdar://problem/47052993>

        Reviewed by Brent Fulgham.

        Broadly:
        - Fix leaks by switching from using raw pointers to using
          std::unique_ptr<>.
        - Introduce PlatformRSAKeyContainer type to handle different
          std::unique_ptr<> on each platform.
        - Get rid of custom CryptoKeyRSA destructors since the
          std::unique_ptr<> handles that with a Deleter.
        - Initialize stack variables to nullptr.

        * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
        (WebCore::CryptoKeyRSA::create):
        (WebCore::CryptoKeyRSA::CryptoKeyRSA):
        (WebCore::CryptoKeyRSA::keySizeInBits const):
        (WebCore::CryptoKeyRSA::generatePair):
        (WebCore::CryptoKeyRSA::importSpki):
        (WebCore::CryptoKeyRSA::importPkcs8):
        (WebCore::CryptoKeyRSA::exportSpki const):
        (WebCore::CryptoKeyRSA::exportPkcs8 const):
        (WebCore::CryptoKeyRSA::algorithm const):
        (WebCore::CryptoKeyRSA::exportData const):
        (WebCore::CryptoKeyRSA::~CryptoKeyRSA): Deleted.
        * crypto/keys/CryptoKeyRSA.h:
        (WebCore::CCRSACryptorRefDeleter::operator() const):
        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::getPublicKeyComponents):
        (WebCore::getPrivateKeyComponents):
        (WebCore::CryptoKeyRSA::CryptoKeyRSA):
        (WebCore::CryptoKeyRSA::create):
        (WebCore::CryptoKeyRSA::exportData const):
        (WebCore::CryptoKeyRSA::generatePair):
        (WebCore::CryptoKeyRSA::importSpki):
        (WebCore::CryptoKeyRSA::importPkcs8):
        (WebCore::CryptoKeyRSA::~CryptoKeyRSA): Deleted.

2019-01-05  Zalan Bujtas  <zalan@apple.com>

        Incorrect clipping across compositing boundary.
        https://bugs.webkit.org/show_bug.cgi?id=193172
        <rdar://problem/44693008>

        Reviewed by Simon Fraser.

        Use temporary cliprect type when crossing compositing boundary to prevent cliprect caching.

        The issue here is that RenderLayer::backgroundClipRect() could cross compositing boundary by calling parentClipRects() which triggers
        clip rect update using the wrong painting root. This happens when the layer hierarchy and the compositing context do not match.
        For clip rect computation, we need to climb up on the layer hierarchy (calling parent layer's cliprect functions)
        but we also need to make sure that the computed cliprects on any given layer are cached only when the painting root is correct.
        It ensures that when we paint a layer (with the painting root as entry point), the cached cliprects are always based on its onw painting root. 

        Test: compositing/clipping/cached-cliprect-with-compositing-boundary.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):

2019-01-05  Youenn Fablet  <youenn@apple.com>

        Service Worker fetch should obey its referrer policy
        https://bugs.webkit.org/show_bug.cgi?id=193152

        Reviewed by Chris Dumez.

        Pass referrer policy retrieved when fetching the service worker script to the SWServer.
        The SWServer then stores it persistently and sends it to the manager creating service workers.
        This manager will then set the referrer policy on the dummy Document of the corresponding service worker.

        Covered by rebased test.

        * workers/WorkerScriptLoader.cpp:
        (WebCore::WorkerScriptLoader::didReceiveResponse):
        * workers/WorkerScriptLoader.h:
        (WebCore::WorkerScriptLoader::referrerPolicy const):
        * workers/service/SWClientConnection.cpp:
        (WebCore::SWClientConnection::failedFetchingScript):
        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerContextData.cpp:
        (WebCore::ServiceWorkerContextData::isolatedCopy const):
        * workers/service/ServiceWorkerContextData.h:
        (WebCore::ServiceWorkerContextData::encode const):
        (WebCore::ServiceWorkerContextData::decode):
        * workers/service/ServiceWorkerFetchResult.h:
        (WebCore::ServiceWorkerFetchResult::encode const):
        (WebCore::ServiceWorkerFetchResult::decode):
        * workers/service/ServiceWorkerJob.cpp:
        (WebCore::ServiceWorkerJob::notifyFinished):
        * workers/service/ServiceWorkerJobClient.h:
        * workers/service/context/ServiceWorkerThreadProxy.cpp:
        (WebCore::createPageForServiceWorker):
        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::recordsTableSchema):
        (WebCore::RegistrationDatabase::doPushChanges):
        (WebCore::RegistrationDatabase::importRecords):
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::addRegistrationFromStore):
        (WebCore::SWServer::updateWorker):
        (WebCore::SWServer::installContextData):
        * workers/service/server/SWServer.h:
        * workers/service/server/SWServerJobQueue.cpp:
        (WebCore::SWServerJobQueue::scriptFetchFinished):
        * workers/service/server/SWServerWorker.cpp:
        (WebCore::SWServerWorker::SWServerWorker):
        (WebCore::SWServerWorker::contextData const):
        * workers/service/server/SWServerWorker.h:

2019-01-04  Simon Fraser  <simon.fraser@apple.com>

        Factor legacy WK1 code for fixed and scrolling layers into their own helper class
        https://bugs.webkit.org/show_bug.cgi?id=193165

        Reviewed by Frédéric Wang.

        RenderLayerCompositor has some code to handle registration of viewport-constrained
        and scrolling layers which is specific to iOS WK1. To reduce pollution, move this
        into its own helper class called LegacyWebKitScrollingLayerCoordinator, which is only
        allocated for iOS WK1.
        
        iOS WK1 never has a ScrollingCoordinator, so rather than the check for scrollingCoordinator(),
        we know that we only made a LegacyWebKitScrollingLayerCoordinator when there's a platform widget
        (i.e. WK1).
        
        * page/ChromeClient.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::RenderLayerCompositor):
        (WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
        (WebCore::RenderLayerCompositor::didFlushChangesForLayer):
        (WebCore::RenderLayerCompositor::setIsInWindow):
        (WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking): No longer check the page cache state; now we
        destroy the render tree of pages in the page cache, so we should never hit this code path.
        (WebCore::RenderLayerCompositor::didAddScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::unregisterAllViewportConstrainedLayers):
        (WebCore::scrollbarHasDisplayNone):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllScrollingLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::registerScrollingLayersNeedingUpdate):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::unregisterAllScrollingLayers):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::addScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):
        (WebCore::LegacyWebKitScrollingLayerCoordinator::didFlushChangesForLayer):
        (WebCore::updateScrollingLayerWithClient): Deleted.
        (WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers): Deleted.
        (WebCore::RenderLayerCompositor::unregisterAllViewportConstrainedLayers): Deleted.
        (WebCore::RenderLayerCompositor::registerAllScrollingLayers): Deleted.
        (WebCore::RenderLayerCompositor::unregisterAllScrollingLayers): Deleted.
        * rendering/RenderLayerCompositor.h:
        (WebCore::LegacyWebKitScrollingLayerCoordinator::LegacyWebKitScrollingLayerCoordinator):
        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::~ServiceWorkerContainer):

2019-01-05  Zalan Bujtas  <zalan@apple.com>

        [LFC] VerticalMargin should only have the used values.
        https://bugs.webkit.org/show_bug.cgi?id=193168

        Reviewed by Antti Koivisto.

        Split VerticalMargin into ComputedVerticalMargin and UsedVerticalMargin.
        ComputedVerticalMargin holds the computed (optional) values while UsedVerticalMargin holds both the
        collapsed (optional) and the non-collapsed values.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue): Deleted.
        * layout/FormattingContextQuirks.cpp:
        (WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
        * layout/LayoutUnits.h:
        * layout/MarginTypes.h:
        (WebCore::Layout::UsedVerticalMargin::before const):
        (WebCore::Layout::UsedVerticalMargin::after const):
        (WebCore::Layout::UsedVerticalMargin::nonCollapsedValues const):
        (WebCore::Layout::UsedVerticalMargin::collapsedValues const):
        (WebCore::Layout::UsedVerticalMargin::hasCollapsedValues const):
        (WebCore::Layout::UsedVerticalMargin::setCollapsedValues):
        (WebCore::Layout::UsedVerticalMargin::UsedVerticalMargin):
        (WebCore::Layout::VerticalMargin::nonCollapsedValues const): Deleted.
        (WebCore::Layout::VerticalMargin::collapsedValues const): Deleted.
        (WebCore::Layout::VerticalMargin::setCollapsedValues): Deleted.
        (WebCore::Layout::VerticalMargin::VerticalMargin): Deleted.
        (WebCore::Layout::VerticalMargin::usedValues const): Deleted.
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginAfter):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::setVerticalMargin):
        (WebCore::Display::Box::verticalMargin const):
        (WebCore::Display::Box::marginBefore const):
        (WebCore::Display::Box::marginAfter const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):

2019-01-04  Daniel Bates  <dabates@apple.com>

        REGRESSION (r238522): Erratic scrolling on Google flights search result page and vrbo.com
        https://bugs.webkit.org/show_bug.cgi?id=192996
        <rdar://problem/46573552>

        Reviewed by Simon Fraser.

        Only scroll a text field if its inner text size changes and it is the currently active and
        focused element on the page.

        Test: fast/scrolling/page-should-not-scroll-on-unfocused-text-field-layout.html

        * rendering/RenderTextControlSingleLine.cpp:
        (WebCore::RenderTextControlSingleLine::layout):

2019-01-04  Alex Christensen  <achristensen@webkit.org>

        Progress towards fixing Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=193105

        Reviewed by Don Olmstead.

        * PlatformMac.cmake:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPURenderPassEncoder.h:

2019-01-04  Zalan Bujtas  <zalan@apple.com>

        [iOS] ERROR: post-layout: dirty renderer(s) in WebCore::RenderTreeNeedsLayoutChecker::~RenderTreeNeedsLayoutChecker()
        https://bugs.webkit.org/show_bug.cgi?id=189608
        <rdar://problem/44473299>

        Reviewed by Simon Fraser.

        When a frameset/iframe is hidden and we skip layout, clear the dirty flag on its subtree as well.

        Covered by fast/frames/invalid-frameset.html.

        * rendering/RenderFrameSet.cpp:
        (WebCore::clearSiblingSubtrees):
        (WebCore::RenderFrameSet::positionFrames):
        (WebCore::RenderFrameSet::positionFramesWithFlattening):

2019-01-04  Youenn Fablet  <youenn@apple.com>

        [Fetch API] Implement abortable fetch
        https://bugs.webkit.org/show_bug.cgi?id=174980
        <rdar://problem/46861402>

        Reviewed by Chris Dumez.

        Add an AbortSignal to FetchRequest.

        Add support for AbortSignal algorithm.
        The fetch request signal is added an algorithm to abort the fetch.
        Update clone algorithm to let signal of the cloned request be following the origin request.

        Update ReadableStream error handling to return an exception instead of a string.
        This allows passing an AbortError instead of a TypeError as previously done.

        Update FetchBodyOwner to store a loading error either as an exception or as a resource error.
        The latter is used for passing the error from service worker back to the page.
        The former is used to pass it to ReadableStream or body accessors.

        Covered by enabled tests.

        * Modules/cache/DOMCache.cpp:
        (WebCore::DOMCache::put):
        * Modules/fetch/FetchBody.cpp:
        (WebCore::FetchBody::consumeAsStream):
        (WebCore::FetchBody::loadingFailed):
        * Modules/fetch/FetchBody.h:
        * Modules/fetch/FetchBodyConsumer.cpp:
        (WebCore::FetchBodyConsumer::loadingFailed):
        * Modules/fetch/FetchBodyConsumer.h:
        * Modules/fetch/FetchBodyOwner.cpp:
        (WebCore::FetchBodyOwner::arrayBuffer):
        (WebCore::FetchBodyOwner::blob):
        (WebCore::FetchBodyOwner::cloneBody):
        (WebCore::FetchBodyOwner::formData):
        (WebCore::FetchBodyOwner::json):
        (WebCore::FetchBodyOwner::text):
        (WebCore::FetchBodyOwner::loadBlob):
        (WebCore::FetchBodyOwner::blobLoadingFailed):
        (WebCore::FetchBodyOwner::consumeBodyAsStream):
        (WebCore::FetchBodyOwner::setLoadingError):
        * Modules/fetch/FetchBodyOwner.h:
        (WebCore::FetchBodyOwner::loadingError const):
        (WebCore::FetchBodyOwner::loadingException const):
        * Modules/fetch/FetchBodySource.cpp:
        (WebCore::FetchBodySource::error):
        * Modules/fetch/FetchBodySource.h:
        * Modules/fetch/FetchRequest.cpp:
        (WebCore::FetchRequest::initializeWith):
        (WebCore::FetchRequest::clone):
        * Modules/fetch/FetchRequest.h:
        (WebCore::FetchRequest::FetchRequest):
        * Modules/fetch/FetchRequest.idl:
        * Modules/fetch/FetchRequestInit.h:
        (WebCore::FetchRequestInit::hasMembers const):
        * Modules/fetch/FetchRequestInit.idl:
        * Modules/fetch/FetchResponse.cpp:
        (WebCore::FetchResponse::clone):
        (WebCore::FetchResponse::fetch):
        (WebCore::FetchResponse::BodyLoader::didFail):
        * Modules/fetch/FetchResponse.h:
        * bindings/js/ReadableStreamDefaultController.h:
        (WebCore::ReadableStreamDefaultController::error):
        * dom/AbortSignal.cpp:
        (WebCore::AbortSignal::abort):
        (WebCore::AbortSignal::follow):
        * dom/AbortSignal.h:

2019-01-04  Brent Fulgham  <bfulgham@apple.com>

        Parsed protocol of javascript URLs with embedded newlines and carriage returns do not match parsed protocol in Chrome and Firefox
        https://bugs.webkit.org/show_bug.cgi?id=193155
        <rdar://problem/40230982>

        Reviewed by Chris Dumez.

        Test: fast/loader/comment-only-javascript-url.html

        Make a special case for URLs beginning with 'javascript:'. We should always
        treat these as JS URLs, even if the content contained within the URL
        string might match other parts of the URL parsing spec.

        * html/URLUtils.h:
        (WebCore::URLUtils<T>::protocol const):

2019-01-04  Jer Noble  <jer.noble@apple.com>

        [WebKitLegacy] Media playback pauses on scroll
        https://bugs.webkit.org/show_bug.cgi?id=192829

        Reviewed by Eric Carlson.

        New API tests:
            WebKitLegacy.ScrollingDoesNotPauseMedia
            WKWebView.StopAllMediaPlayback
            WKWebView.SuspendResumeAllMediaPlayback

        Do not use suspendActiveDOMObjects(ReasonForSuspension::PageWillBeSuspended) to pause
        video. Roll back the changes to HTMLMediaElement, and introduce a new set of Page calls
        suspendAllMediaPlayback() & resumeAllMediaPlayback() which replaces the removed bahavior.

        * dom/Document.cpp:
        (WebCore::Document::~Document):
        (WebCore::Document::stopAllMediaPlayback):
        (WebCore::Document::suspendAllMediaPlayback):
        (WebCore::Document::resumeAllMediaPlayback):
        * dom/Document.h:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::HTMLMediaElement):
        (WebCore::HTMLMediaElement::parseAttribute):
        (WebCore::HTMLMediaElement::didFinishInsertingNode):
        (WebCore::HTMLMediaElement::setSrcObject):
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        (WebCore::HTMLMediaElement::suspend):
        (WebCore::HTMLMediaElement::resume):
        (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const):
        * html/HTMLMediaElement.h:
        (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const): Deleted.
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::playbackPermitted const):
        * page/Page.cpp:
        (WebCore::Page::stopAllMediaPlayback):
        (WebCore::Page::suspendAllMediaPlayback):
        (WebCore::Page::resumeAllMediaPlayback):
        * page/Page.h:
        (WebCore::Page::mediaPlaybackIsSuspended):
        * platform/audio/PlatformMediaSession.h:
        * platform/audio/PlatformMediaSessionManager.cpp:
        (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
        (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
        * platform/audio/PlatformMediaSessionManager.h:

2019-01-04  Chris Dumez  <cdumez@apple.com>

        Add support for toggling device orientation API support per site
        https://bugs.webkit.org/show_bug.cgi?id=193143
        <rdar://problem/46605724>

        Reviewed by Alex Christensen.

        Add support for toggling device orientation API support per site via _WKWebsitePolicies.

        * dom/Document.cpp:
        (WebCore::Document::simulateDeviceOrientationChange):
        * dom/Document.h:
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::deviceOrientationEventEnabled const):
        (WebCore::DocumentLoader::setDeviceOrientationEventEnabled):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):

2019-01-04  Jer Noble  <jer.noble@apple.com>

        Web Content process main thread blocked beneath ImageDecoderAVFObjC::readSamples for many seconds on imgur.com
        https://bugs.webkit.org/show_bug.cgi?id=191806
        <rdar://problem/46151477>

        Reviewed by Dean Jackson.

        Test: http/tests/images/mp4-partial-load.html

        Rather than use an AVAssetReaderTrackOutput, which will load both sample metadata and sample data
        synchronously when a sample is requested, use AVAssetReaderSampleReferenceOutput, which only loads
        sample metadata, including the byte offset and byte length of the sample data. By waiting until the
        AVAsset signals that it's own metadata is loaded, we can safely parse all the sample metadata without
        blocking on network loads. Once enough data is loaded, we can replace the byte reference and offset
        attachements in the sample with actual data, and mark the sample as "complete".

        Because the existing ImageSource assumes that image data parsing will occur synchronously, and that
        synchronous parsing could cause a hang if the metadata is not loaded, add a new callback method which
        allows the ImageSource to be notified when the encodedDataStatus changes. The ImageSource notifies the
        CacheImage, which notifies the RenderImage, and thus the asynchronous parsing will kick off the
        renderer's animation loop.

        * loader/cache/CachedImage.cpp:
        (WebCore::CachedImage::CachedImageObserver::encodedDataStatusChanged):
        (WebCore::CachedImage::encodedDataStatusChanged):
        * loader/cache/CachedImage.h:
        * platform/graphics/ImageDecoder.h:
        (WebCore::ImageDecoder::setEncodedDataStatusChangeCallback):
        * platform/graphics/ImageObserver.h:
        (WebCore::ImageObserver::encodedDataStatusChanged):
        * platform/graphics/ImageSource.cpp:
        (WebCore::ImageSource::ensureDecoderAvailable):
        (WebCore::ImageSource::encodedDataStatusChanged):
        (WebCore::ImageSource::frameDecodingStatusAtIndex):
        * platform/graphics/ImageSource.h:
        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
        (-[WebCoreSharedBufferResourceLoaderDelegate data]):
        (WebCore::ImageDecoderAVFObjCSample::byteRange const):
        (WebCore::ImageDecoderAVFObjC::readSamples):
        (WebCore::ImageDecoderAVFObjC::setEncodedDataStatusChangeCallback):
        (WebCore::ImageDecoderAVFObjC::encodedDataStatus const):
        (WebCore::ImageDecoderAVFObjC::frameIsCompleteAtIndex const):
        (WebCore::ImageDecoderAVFObjC::createFrameImageAtIndex):
        (WebCore::ImageDecoderAVFObjC::sampleIsComplete const):

2019-01-04  Youenn Fablet  <youenn@apple.com>

        CSP violation reports should bypass CSP checks
        https://bugs.webkit.org/show_bug.cgi?id=192857
        <rdar://problem/46887236>

        Reviewed by Chris Dumez.

        For ping loads, pass the option to do CSP checks from PingLoader to LoaderStrategy.
        This new option is unused by WebKit Legacy.
        It is used by WebKit loader strategy to only send any CSP response header to network process
        in case CSP checks should be done.

        This option is used to disable CSP checks for Ping Loads that report CSP violations.

        Test: http/wpt/fetch/csp-reports-bypass-csp-checks.html

        * loader/LoaderStrategy.h:
        * loader/PingLoader.cpp:
        (WebCore::PingLoader::loadImage):
        (WebCore::PingLoader::sendPing):
        (WebCore::PingLoader::sendViolationReport):
        (WebCore::PingLoader::startPingLoad):
        * loader/PingLoader.h:
        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::load):

2019-01-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Merge WebEditCommandProxy::nameForEditAction and undoNameForEditAction into a single function
        https://bugs.webkit.org/show_bug.cgi?id=193129

        Reviewed by Tim Horton.

        Adds a new helper function that returns the undo/redo name for a given EditAction. No change in behavior.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/EditAction.cpp: Copied from Source/WebKit/UIProcess/WebEditCommandProxy.cpp.
        (WebCore::nameForUndoRedo):
        * editing/EditAction.h:
        * editing/Editor.cpp:

2019-01-03  Matt Rajca  <mrajca@apple.com>

        Make DidPlayMediaPreventedFromPlaying autoplay event more generic.
        https://bugs.webkit.org/show_bug.cgi?id=193128
        rdar://34554231

        Reviewed by Jer Noble.

        Today, the "DidPlayMediaPreventedFromPlaying" autoplay event is only sent for
        media prevented from autoplaying. It could be generalized to a "DidPlayMediaWithUserGesture"
        event along with a flag that indicates whether or not autoplay was actually prevented.
        Moreover, we can include a flag that indicates whether the media element in question
        is main content. Clients will then know in more cases when media was played with a user
        gesture, whether or not it has audio, as well as its main content status. While the main
        content heuristics may not be perfect, they covered the top 20 video-centric websites that
        this was tested with and are meant to be used by clients for data evaluation purposes.

        As part of this, the PlaybackWithoutUserGesture enum was renamed to AutoplayEventPlaybackState
        since it now also applies to cases where there is a user gesture. The
        `m_playbackWithoutUserGestureStartedTime` member variable was also removed in favor of
        `playbackStartedTime` which also covers all the cases we care about.

        Tests: existing API tests were updated to reflect the new names. New API tests
        were added for the new case in which the "DidPlayMediaWithUserGesture" event is sent.

        * html/HTMLMediaElement.cpp:
        (WebCore::convertEnumerationToString): Update to new enum cases.
        (WebCore::HTMLMediaElement::setReadyState): Ditto.
        (WebCore::HTMLMediaElement::play): Ditto.
        (WebCore::HTMLMediaElement::playInternal): Also cover the case where
         playback was not prevented but there was a user gesture.
        (WebCore::HTMLMediaElement::pauseInternal): Use new name.
        (WebCore::HTMLMediaElement::setVolume): Use new name.
        (WebCore::HTMLMediaElement::playbackProgressTimerFired): Dispatch the
         DidPlayMediaWithUserGesture event when playback was started with a user
         gesture as well.
        (WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Use new name.
        (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Ditto.
        (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Ditto.
        (WebCore::HTMLMediaElement::stopWithoutDestroyingMediaPlayer): Ditto.
        (WebCore::HTMLMediaElement::handleAutoplayEvent): Pass along new media state.
        (WebCore::HTMLMediaElement::userDidInterfereWithAutoplay): Use new name.
        (WebCore::HTMLMediaElement::setAutoplayEventPlaybackState): Stop setting
         m_playbackWithoutUserGestureStartedTime in favor of using playbackStartedTime.
        (WebCore::HTMLMediaElement::updateShouldPlay): Use new name.
        (WebCore::HTMLMediaElement::setPlaybackWithoutUserGesture): Renamed.
        * html/HTMLMediaElement.h:
        (WTF::LogArgument<WebCore::HTMLMediaElement::AutoplayEventPlaybackState>::toString): Renamed from...
        (WTF::LogArgument<WebCore::HTMLMediaElement::PlaybackWithoutUserGesture>::toString):
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::isMainContentForPurposesOfAutoplayEvents const): Don't
         do the hit testing check for the purposes of autoplay events. It seems to fail on the
         basic Vimeo player due to overlapping divs.
        (WebCore::isElementMainContentForPurposesOfAutoplay):
        (WebCore::MediaElementSession::updateIsMainContent const): Keep the existing behavior
         here of hit testing.
        (WebCore::isMainContentForPurposesOfAutoplay): Renamed.
        * html/MediaElementSession.h:
        * page/AutoplayEvent.h:

2019-01-04  Youenn Fablet  <youenn@apple.com>

        Crash in WebCore::ServiceWorkerGlobalScope
        https://bugs.webkit.org/show_bug.cgi?id=192513
        <rdar://problem/46563880>

        Reviewed by Alex Christensen.

        Store the identifier in its own variable to make sure we do not use workerThread after being moved.

        * workers/service/ServiceWorkerGlobalScope.cpp:
        (WebCore::ServiceWorkerGlobalScope::skipWaiting):

2019-01-04  Chris Fleizach  <cfleizach@apple.com>

        AX: String check: "Rule" does not reflect the meaning of the <hr> html tag
        https://bugs.webkit.org/show_bug.cgi?id=193041
        <rdar://problem/46954090>

        Reviewed by Zalan Bujtas.

        * en.lproj/Localizable.strings:
        * platform/cocoa/LocalizedStringsCocoa.mm:
        (WebCore::AXHorizontalRuleDescriptionText):

2019-01-04  Zalan Bujtas  <zalan@apple.com>

        [LFC] ComputedHorizontalMargin should have optional members
        https://bugs.webkit.org/show_bug.cgi?id=193131

        Reviewed by Antti Koivisto.

        Split HorizontalMargin into UsedHorizontalMargin and ComputedHorizontalMargin. ComputedHorizontalMargin's members are optional.
        (see computed vs used values)

        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue): Deleted.
        * layout/LayoutUnits.h:
        * layout/MarginTypes.h:
        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::setHorizontalMargin):
        (WebCore::Display::Box::setHorizontalComputedMargin):
        (WebCore::Display::Box::computedMarginStart const):
        (WebCore::Display::Box::computedMarginEnd const):
        * layout/floats/FloatAvoider.h:
        (WebCore::Layout::FloatAvoider::marginStart const):
        (WebCore::Layout::FloatAvoider::marginEnd const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

2019-01-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Use computedValue and usedValue consistently
        https://bugs.webkit.org/show_bug.cgi?id=193059

        Reviewed by Antti Koivisto.

        https://www.w3.org/TR/CSS22/cascade.html#value-stages

        6.1.2 Computed values
        Specified values are resolved to computed values during the cascade; for example URIs are made absolute and 'em' and 'ex' units
        are computed to pixel or absolute lengths. Computing a value never requires the user agent to render the document...

        6.1.3 Used values
        Computed values are processed as far as possible without formatting the document. Some values, however, can only be determined when the document
        is being laid out. For example, if the width of an element is set to be a certain percentage of its containing block, the width cannot be determined
        until the width of the containing block has been determined. The used value is the result of taking the computed value and resolving any remaining
        dependencies into an absolute value.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        * layout/LayoutState.cpp:
        (WebCore::Layout::LayoutState::LayoutState):
        * layout/LayoutUnits.h:
        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::Box):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::setHasValidHorizontalComputedMargin):
        (WebCore::Display::Box::setHorizontalComputedMargin):
        (WebCore::Display::Box::computedMarginStart const):
        (WebCore::Display::Box::computedMarginEnd const):
        (WebCore::Display::Box::setHasValidHorizontalNonComputedMargin): Deleted.
        (WebCore::Display::Box::setHorizontalNonComputedMargin): Deleted.
        (WebCore::Display::Box::nonComputedMarginStart const): Deleted.
        (WebCore::Display::Box::nonComputedMarginEnd const): Deleted.
        * layout/floats/FloatAvoider.h:
        (WebCore::Layout::FloatAvoider::marginStart const):
        (WebCore::Layout::FloatAvoider::marginEnd const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):

2019-01-03  Zalan Bujtas  <zalan@apple.com>

        REGRESSION: -webkit-appearance test case crashes
        https://bugs.webkit.org/show_bug.cgi?id=189302
        <rdar://problem/44143049>

        Reviewed by Wenson Hsieh.

        The painting and the layout positions of the cancel button need to match in order to be able to interact with it.
        This patch removes the previous position inlining attempts.

        Test: fast/forms/webkit-appearance-searchfield-cancel-button-crash.html

        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::paintSearchFieldCancelButton):

2019-01-03  David Kilzer  <ddkilzer@apple.com>

        Leak of WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback (48 bytes) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193122>
        <rdar://problem/47022987>

        Reviewed by Youenn Fablet.

        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
        (WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::AddRef const):
        (WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::Release const):
        - Remove `final` keyword so that
          `new rtc::RefCountedObject<RTCCertificateGeneratorCallback>()`
          can be called.
        (WebCore::LibWebRTCCertificateGenerator::generateCertificate):
        - To fix the leak call
          `new rtc::RefCountedObject<RTCCertificateGeneratorCallback>()`
          to create the object.

2019-01-03  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): After showing the Find banner or tab bar, hit tests are vertically offset (or painting is not offset)
        https://bugs.webkit.org/show_bug.cgi?id=193124
        rdar://problem/46755409

        Reviewed by Tim Horton.

        Top content inset feeds into scrolling tree geometry, so when it changes we need to trigger
        an update of the root scrolling node, which happens via RenderLayerBacking::updateGeometry().
        So set a dirty bit on the root layer in frameViewDidChangeSize(), which is called from the code
        path that runs when top content inset changes.

        Find banner behavior is not easily testable. platform/mac/fast/events/content-inset-hit-testing.html did not detect the regression.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::frameViewDidChangeSize):

2019-01-03  Chris Dumez  <cdumez@apple.com>

        Potential infinite recursion in isFrameFamiliarWith(Frame&, Frame&)
        https://bugs.webkit.org/show_bug.cgi?id=192997
        <rdar://problem/46217271>

        Reviewed by Antti Koivisto.

        isFrameFamiliarWith(Frame&, Frame&) was called recursively using the passed frames' openers.
        The issue is that a Frame can be its opener. There could also be a cycle in the opener chain.

        To address the issue, simplify isFrameFamiliarWith() so that it is no longer recursive. We now
        only check if the frames belong to the same pages or if their openers do. We no longer check
        openers' opener and up.

        Note that this function is used to check if a frame is allowed to target another. In practice,
        it is unlikely to be useful to navigate an opener's opener and an openee's openee.

        Tests: fast/dom/Window/window-open-opener-cycle.html
               fast/dom/Window/window-open-self-as-opener.html

        * page/FrameTree.cpp:
        (WebCore::isFrameFamiliarWith):

2019-01-02  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r239306): Don't disable font smoothing in transparent layers on macOS Mojave and later
        https://bugs.webkit.org/show_bug.cgi?id=193095
        <rdar://problem/47014944>

        Reviewed by Zalan Bujtas.
        
        In r239306 we stopped making CALayers for font-smoothed text when not necessary on macOS Mojave
        and later. However, we still turned off smoothing for non-opaque layers (setShouldSmoothFonts(false)),
        which continues to affect the appearance of text.
        
        Fix by only calling setShouldSmoothFonts(false) when the OS supports font smoothing.

        Test: compositing/contents-format/subpixel-antialiased-text.html

        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayer::drawLayerContents):

2019-01-02  David Kilzer  <ddkilzer@apple.com>

        Leak of CMSampleBuffer (752 bytes) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193016>
        <rdar://problem/46925703>

        Reviewed by Simon Fraser.

        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::copySampleBufferWithCurrentTimeStamp):
        - Change to return RetainPtr<CMSampleBufferRef>.
        - Check return value of CMSampleBufferCreateCopyWithNewTiming().
        (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
        - Check return value of copySampleBufferWithCurrentTimeStamp().
        - Fix leak by using RetainPtr<CMSampleBufferRef> returned from
          copySampleBufferWithCurrentTimeStamp() instead of leaking
          `bufferWithCurrentTime` by using retainPtr().
        (WebCore::createAudioFormatDescription):
        - Extract method from appendAudioSampleBuffer() to return
          RetainPtr<CMFormatDescriptionRef> after calling
          CMAudioFormatDescriptionCreate().
        - Check return value of CMAudioFormatDescriptionCreate().
        (WebCore::createAudioSampleBufferWithPacketDescriptions):
        - Extract method from appendAudioSampleBuffer() to return
          RetainPtr<CMSampleBufferRef> after calling
          CMAudioSampleBufferCreateWithPacketDescriptions().
        (WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
        - Check return values of createAudioFormatDescription() and
          createAudioSampleBufferWithPacketDescriptions().
        - Fix leaks by extracting code into helper methods that return
          RetainPtr<> objects instead of leaking CMFormatDescriptionRef
          directly or leaking `sampleBuffer` by using retainPtr().

2019-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for using the current text selection as the find string on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193034
        <rdar://problem/45138739>

        Reviewed by Tim Horton.

        Add support for "TakeFindStringFromSelection" on iOS. Unlike macOS, iOS does not have a notion of a "find
        pasteboard" like macOS; instead, we handle this editing command by sending the selection string to the UI
        process, where it is exposed via WebKit SPI so that clients that present find-in-page UI (i.e. MobileSafari) are
        able to trigger find-in-page with this string.

        Test: WebKit.UseSelectionAsFindString

        * editing/Editor.cpp:
        (WebCore::Editor::canCopyExcludingStandaloneImages const):

        Make this helper function cross-platform.

        * editing/Editor.h:
        * editing/EditorCommand.cpp:
        (WebCore::createCommandMap):
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::takeFindStringFromSelection):

        Move this from EditorMac to EditorCocoa, and implement it on iOS by calling into the editor client to update the
        find string (see WebKit/ChangeLog for more details).

        * editing/mac/EditorMac.mm:
        (WebCore::Editor::canCopyExcludingStandaloneImages): Deleted.
        (WebCore::Editor::takeFindStringFromSelection): Deleted.
        * loader/EmptyClients.cpp:
        * page/EditorClient.h:

        Add a new editor client method to send the string for find-in-page to the UI process.

2019-01-02  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Implement `queryObjects` Command Line API
        https://bugs.webkit.org/show_bug.cgi?id=176766
        <rdar://problem/34890689>

        Reviewed by Joseph Pecoraro.

        Test: inspector/console/queryObjects.html

        * inspector/CommandLineAPIModuleSource.js:
        (CommandLineAPI):
        (CommandLineAPIImpl.prototype.queryObjects): Added.

2019-01-02  Charles Vazac  <cvazac@gmail.com>

        Fix resourcetimingbufferfull bubbles attribute
        https://bugs.webkit.org/show_bug.cgi?id=193087

        Reviewed by Chris Dumez.

        This change is covered by web-platform-tests [1].

        [1] https://github.com/web-platform-tests/wpt/blob/master/resource-timing/buffer-full-when-populate-entries.html#L20

        * page/Performance.cpp:
        (WebCore::Performance::resourceTimingBufferFullTimerFired):

2019-01-02  Simon Fraser  <simon.fraser@apple.com>

        Rename LayerScrollCoordinationRole to ScrollCoordinationRole and make an enum class
        https://bugs.webkit.org/show_bug.cgi?id=193010

        Reviewed by Zalan Bujtas.

        Move the enum LayerScrollCoordinationRole from RenderLayer.h to RenderLayerCompositor.h,
        and make it an enum class.

        * page/FrameView.cpp:
        (WebCore::FrameView::scrollLayerID const):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::~RenderLayerBacking):
        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
        (WebCore::operator<<):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
        (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
        (WebCore::scrollCoordinationRoleForNodeType):
        (WebCore::RenderLayerCompositor::attachScrollingNode):
        (WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
        (WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
        * rendering/RenderLayerCompositor.h:

2019-01-02  Simon Fraser  <simon.fraser@apple.com>

        Don't spin up a CalcParser if the current token is not a function token
        https://bugs.webkit.org/show_bug.cgi?id=193067

        Reviewed by Zalan Bujtas.

        Various functions in CSSPropertyParserHelpers fall back to trying to parse
        a calc expression if the normal parsing fails. Don't do this unless the
        current token is a function token, which should be slightly more efficient.

        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeInteger):
        (WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw):
        (WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
        (WebCore::CSSPropertyParserHelpers::consumeNumber):
        (WebCore::CSSPropertyParserHelpers::consumeFontWeightNumber):
        (WebCore::CSSPropertyParserHelpers::consumeLength):
        (WebCore::CSSPropertyParserHelpers::consumePercent):
        (WebCore::CSSPropertyParserHelpers::consumeLengthOrPercent):
        (WebCore::CSSPropertyParserHelpers::consumeAngle):
        (WebCore::CSSPropertyParserHelpers::consumeAngleOrPercent):
        (WebCore::CSSPropertyParserHelpers::consumeTime):

2019-01-02  Simon Fraser  <simon.fraser@apple.com>

        Support css-color-4 rgb functions
        https://bugs.webkit.org/show_bug.cgi?id=192321

        Reviewed by Zalan Bujtas.
        
        Support the new rgb()/rgba() syntax described in https://drafts.csswg.org/css-color/#rgb-functions.
        The differences are:
        1. There is a new comma-free syntax, where the optional alpha is separated by a slash:
            rgb(128 34 56)
            rgb(128 34 56 / 50%)
        2. Floating point values are allowed, and rounded:
            rgb(128.5 34.2 56.5) becomes rgb(129 34 57)
        3. rgba() is a pure alias for rgb(), so these are equivalent:
            rgb(128 34 56 / 50%)
            rgba(128 34 56 / 50%)
            
        hsl()/hsla() parsing was already updated to this new syntax in r230861.

        Tested by tests in imported/w3c/web-platform-tests/css/css-color/

        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::clampRGBComponent):
        (WebCore::CSSPropertyParserHelpers::parseRGBParameters):
        (WebCore::CSSPropertyParserHelpers::parseColorFunction):

2019-01-02  Simon Fraser  <simon.fraser@apple.com>

        Handle calc() expressions in gradient color stops
        https://bugs.webkit.org/show_bug.cgi?id=193066
        rdar://problem/46961985

        Reviewed by Sam Weinig.
        
        Fix two issues that prevented calc() expressions from working in conic-gradient color stops,
        for the angle or percent value. First, consumeAngleOrPercent() needs to look for CalculationCategory::Percent
        calc values as well as angle ones.

        Second, CSSPrimitiveValue::isAngle() needs to use primitiveType() (which takes calc into account),
        just as isPx() etc do.

        Test: fast/gradients/conic-calc-stop-position.html

        * css/CSSPrimitiveValue.h:
        (WebCore::CSSPrimitiveValue::isAngle const):
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeAngleOrPercent):
        (WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):

2018-12-31  Keith Miller  <keith_miller@apple.com>

        SourceProviders should use an actual URL instead of a string
        https://bugs.webkit.org/show_bug.cgi?id=192734

        Reviewed by Yusuke Suzuki.

        Remove ScriptSourceCode's URL member and make the url() method
        reference the URL on the SourceProvider. Also, avoid some
        ref count churn.

        Additionally, this patch fixes an existing bug in
        WorkletGlobalScope() that would use a ScriptSourceCode after
        WTFMoving it.

        * bindings/js/CachedScriptSourceProvider.h:
        (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider):
        * bindings/js/ScheduledAction.cpp:
        (WebCore::ScheduledAction::execute):
        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::executeScriptInWorld):
        (WebCore::ScriptController::executeScript):
        * bindings/js/ScriptSourceCode.h:
        (WebCore::ScriptSourceCode::ScriptSourceCode):
        (WebCore::ScriptSourceCode::m_code):
        (WebCore::ScriptSourceCode::url const):
        (WebCore::ScriptSourceCode::m_url): Deleted.
        * dom/ScriptElement.cpp:
        (WebCore::ScriptElement::prepareScript):
        (WebCore::ScriptElement::requestModuleScript):
        (WebCore::ScriptElement::executePendingScript):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
        * page/Frame.cpp:
        (WebCore::Frame::injectUserScriptImmediately):
        * workers/WorkerGlobalScope.cpp:
        (WebCore::WorkerGlobalScope::importScripts):
        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::workerThread):
        * worklets/WorkletGlobalScope.cpp:
        (WebCore::WorkletGlobalScope::WorkletGlobalScope):
        * xml/parser/XMLDocumentParserLibxml2.cpp:
        (WebCore::XMLDocumentParser::endElementNs):

2019-01-01  Jeff Miller  <jeffm@apple.com>

        Update user-visible copyright strings to include 2019
        https://bugs.webkit.org/show_bug.cgi?id=192811

        Reviewed by Mark Lam.

        * Info.plist:

2018-12-30  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Save 8 padding bytes on WebCore::BorderEdge
        <https://webkit.org/b/193058>
        <rdar://problem/46979275>

        Reviewed by Yusuke Suzuki.

        * rendering/BorderEdge.cpp:
        (WebCore::BorderEdge::BorderEdge): Reorder initialization to
        match new instance variable order.
        * rendering/BorderEdge.h: Reorder instance variables to save
        8 padding bytes.

2018-12-28  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove one indirection in JSObject::toStringName
        https://bugs.webkit.org/show_bug.cgi?id=193037

        Reviewed by Keith Miller.

        Use old JSObject::toStringName function here.

        * bindings/js/JSDOMConstructorBase.cpp:
        (WebCore::JSDOMConstructorBase::className):
        (WebCore::JSDOMConstructorBase::toStringName):
        * bindings/js/JSDOMConstructorBase.h:
        (WebCore::JSDOMConstructorBase::className): Deleted.

2018-12-27  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=192658

        Reviewed by Yusuke Suzuki.

        This makes it so JSC and most of WebCore builds.
        WebCore's use of ARC seems inconsistent, so I'll fix that later.

        * PlatformMac.cmake:
        * config.h:

2018-12-26  Jim Mason  <jmason@ibinx.com>

        [FreeType] Restore conditional compilation logic for recent HarfBuzz refactoring
        https://bugs.webkit.org/show_bug.cgi?id=193036

        Reviewed by Michael Catanzaro.

        * platform/graphics/FontPlatformData.h:
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:

2018-12-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace std;"
        https://bugs.webkit.org/show_bug.cgi?id=192973
        <rdar://problem/46937309>

        Unreviewed Windows port Debug builds fix.

        No new tests since no behavior changes.

        * accessibility/win/AXObjectCacheWin.cpp:
        (WebCore::AXObjectCache::postPlatformNotification): Add "std::" prefix to numeric_limits in ASSERT macro.

2018-12-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace std;"
        https://bugs.webkit.org/show_bug.cgi?id=192973

        Reviewed by Alex Christensen.

        Removed "using namespace std" statement, and use std:: prefix.

        No new tests since no behavior changes.

        * accessibility/win/AXObjectCacheWin.cpp:
        * platform/graphics/GraphicsContext3DPrivate.cpp:
        * platform/graphics/cairo/ImageBufferCairo.cpp:
        * platform/graphics/win/FontPlatformDataCairoWin.cpp:
        * platform/graphics/win/FontWin.cpp:
        (WebCore::FontCascade::floatWidthForComplexText const):
        * platform/graphics/win/GraphicsContextCGWin.cpp:
        * platform/graphics/win/GraphicsContextCairoWin.cpp:
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        * platform/graphics/win/GraphicsContextWin.cpp:
        * platform/graphics/win/SimpleFontDataCGWin.cpp:
        * platform/graphics/win/UniscribeController.cpp:
        (WebCore::UniscribeController::UniscribeController):
        (WebCore::UniscribeController::shapeAndPlaceItem):
        * platform/image-decoders/ScalableImageDecoder.cpp:
        * platform/text/LocaleICU.cpp:
        * platform/text/win/LocaleWin.cpp:
        * platform/win/ScrollbarThemeWin.cpp:
        * rendering/RenderRubyRun.cpp:
        (WebCore::RenderRubyRun::layoutBlock):
        * rendering/RenderThemeWin.cpp:
        (WebCore::RenderThemeWin::adjustMenuListButtonStyle const):
        (WebCore::RenderThemeWin::paintSearchFieldCancelButton):
        (WebCore::RenderThemeWin::adjustSearchFieldCancelButtonStyle const):
        (WebCore::RenderThemeWin::adjustSearchFieldResultsDecorationPartStyle const):
        (WebCore::RenderThemeWin::paintSearchFieldResultsDecorationPart):
        (WebCore::RenderThemeWin::adjustSearchFieldResultsButtonStyle const):
        (WebCore::RenderThemeWin::paintSearchFieldResultsButton):

2018-12-24  Simon Fraser  <simon.fraser@apple.com>

        Change ScrollingNodeType to an enum class
        https://bugs.webkit.org/show_bug.cgi?id=193009

        Reviewed by Zalan Bujtas.

        Change the ScrollingNodeType enum to an enum class.
        
        No behavior change.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::operator<<):
        * page/scrolling/ScrollingCoordinator.h:
        * page/scrolling/ScrollingStateFixedNode.cpp:
        (WebCore::ScrollingStateFixedNode::ScrollingStateFixedNode):
        * page/scrolling/ScrollingStateNode.h:
        (WebCore::ScrollingStateNode::isFixedNode const):
        (WebCore::ScrollingStateNode::isStickyNode const):
        (WebCore::ScrollingStateNode::isFrameScrollingNode const):
        (WebCore::ScrollingStateNode::isOverflowScrollingNode const):
        * page/scrolling/ScrollingStateOverflowScrollingNode.cpp:
        (WebCore::ScrollingStateOverflowScrollingNode::ScrollingStateOverflowScrollingNode):
        * page/scrolling/ScrollingStateStickyNode.cpp:
        (WebCore::ScrollingStateStickyNode::ScrollingStateStickyNode):
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::createNode):
        (WebCore::ScrollingStateTree::attachNode):
        * page/scrolling/ScrollingTreeNode.h:
        (WebCore::ScrollingTreeNode::isFixedNode const):
        (WebCore::ScrollingTreeNode::isStickyNode const):
        (WebCore::ScrollingTreeNode::isFrameScrollingNode const):
        (WebCore::ScrollingTreeNode::isOverflowScrollingNode const):
        * page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
        (WebCore::ScrollingTreeOverflowScrollingNode::ScrollingTreeOverflowScrollingNode):
        * page/scrolling/ios/ScrollingTreeIOS.cpp:
        (WebCore::ScrollingTreeIOS::createScrollingTreeNode):
        * page/scrolling/mac/ScrollingTreeFixedNode.mm:
        (WebCore::ScrollingTreeFixedNode::ScrollingTreeFixedNode):
        * page/scrolling/mac/ScrollingTreeMac.cpp:
        (ScrollingTreeMac::createScrollingTreeNode):
        * page/scrolling/mac/ScrollingTreeStickyNode.mm:
        (WebCore::ScrollingTreeStickyNode::ScrollingTreeStickyNode):
        * platform/graphics/GraphicsLayerClient.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):
        (WebCore::scrollCoordinationRoleForNodeType):
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):

2018-12-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [HarfBuzz] Width not correctly reported as 0 for zero font size
        https://bugs.webkit.org/show_bug.cgi?id=192986

        Reviewed by Michael Catanzaro.

        Fixes test fast/text/font-size-zero.html

        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Use empty advances for glyphs when the font
        size is zero.

2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Ref<> as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=192808

        Reviewed by Alex Christensen.

        * Modules/encryptedmedia/NavigatorEME.cpp:
        (WebCore::NavigatorEME::requestMediaKeySystemAccess):
        * Modules/fetch/FetchBody.cpp:
        (WebCore::FetchBody::bodyAsFormData const):
        * Modules/geolocation/Geolocation.cpp:
        (WebCore::Geolocation::getCurrentPosition):
        (WebCore::Geolocation::watchPosition):
        * Modules/indexeddb/IDBDatabase.cpp:
        (WebCore::IDBDatabase::objectStoreNames const):
        * Modules/indexeddb/IDBDatabase.h:
        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::indexNames const):
        * Modules/indexeddb/IDBObjectStore.h:
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::scheduleOperation):
        * Modules/indexeddb/IDBTransaction.h:
        * Modules/indexeddb/client/TransactionOperation.h:
        (WebCore::IDBClient::createTransactionOperation):
        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::getUserMedia const):
        (WebCore::MediaDevices::getDisplayMedia const):
        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::create):
        * Modules/mediastream/UserMediaRequest.h:
        * Modules/webaudio/AudioParam.cpp:
        (WebCore::AudioParam::calculateFinalValues):
        * Modules/webaudio/ScriptProcessorNode.cpp:
        (WebCore::ScriptProcessorNode::initialize):
        * Modules/webdatabase/SQLStatement.cpp:
        (WebCore::SQLStatement::execute):
        * Modules/webgpu/WebGPU.cpp:
        (WebCore::WebGPU::requestAdapter const):
        * Modules/webgpu/WebGPUAdapter.cpp:
        (WebCore::WebGPUAdapter::create):
        * Modules/webgpu/WebGPUAdapter.h:
        * Modules/webgpu/WebGPUBuffer.cpp:
        (WebCore::WebGPUBuffer::create):
        * Modules/webgpu/WebGPUBuffer.h:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::create):
        (WebCore::WebGPUCommandBuffer::beginRenderPass):
        * Modules/webgpu/WebGPUCommandBuffer.h:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::create):
        (WebCore::WebGPUDevice::createBuffer const):
        (WebCore::WebGPUDevice::createShaderModule const):
        (WebCore::WebGPUDevice::createRenderPipeline const):
        (WebCore::WebGPUDevice::createCommandBuffer const):
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPURenderPipeline.cpp:
        (WebCore::WebGPURenderPipeline::create):
        * Modules/webgpu/WebGPURenderPipeline.h:
        * Modules/webgpu/WebGPUShaderModule.cpp:
        (WebCore::WebGPUShaderModule::create):
        * Modules/webgpu/WebGPUShaderModule.h:
        * Modules/webgpu/WebGPUTexture.cpp:
        (WebCore::WebGPUTexture::createDefaultTextureView):
        * Modules/webgpu/WebGPUTextureView.cpp:
        (WebCore::WebGPUTextureView::create):
        * Modules/webgpu/WebGPUTextureView.h:
        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::rangeMatchesTextNearRange):
        * accessibility/atk/AXObjectCacheAtk.cpp:
        (WebCore::AXObjectCache::nodeTextChangePlatformNotification):
        * accessibility/atk/WebKitAccessibleHyperlink.cpp:
        (webkitAccessibleHyperlinkGetStartIndex):
        (webkitAccessibleHyperlinkGetEndIndex):
        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
        (getSelectionOffsetsForObject):
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper _convertToNSRange:]):
        * bindings/js/JSDOMGlobalObjectTask.cpp:
        * bindings/js/JSDOMWindowBase.cpp:
        (WebCore::JSDOMWindowBase::queueTaskToEventLoop):
        * bindings/js/JSWorkerGlobalScopeBase.cpp:
        (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):
        * bindings/js/ScriptControllerMac.mm:
        (WebCore::ScriptController::createScriptInstanceForWidget):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readTerminal):
        (WebCore::SerializedScriptValue::create):
        * bridge/objc/objc_instance.h:
        * bridge/objc/objc_instance.mm:
        (ObjcInstance::create):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::currentColorOrValidColor const):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesForShorthandProperties):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesForGridShorthand):
        (WebCore::ComputedStyleExtractor::getBackgroundShorthandValue):
        * css/CSSComputedStyleDeclaration.h:
        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::load):
        * css/CSSStyleSheet.cpp:
        (WebCore::CSSStyleSheet::rules):
        * css/FontFace.cpp:
        (WebCore::FontFace::unicodeRange const):
        (WebCore::FontFace::featureSettings const):
        * css/InspectorCSSOMWrappers.cpp:
        (WebCore::InspectorCSSOMWrappers::collectFromStyleSheetContents):
        * css/SVGCSSComputedStyleDeclaration.cpp:
        (WebCore::strokeDashArrayToCSSValueList):
        (WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor const):
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::createFilterOperations):
        * css/StyleRule.cpp:
        (WebCore::StyleRuleBase::createCSSOMWrapper const):
        * css/StyleRule.h:
        * dom/ChildListMutationScope.cpp:
        (WebCore::ChildListMutationAccumulator::getOrCreate):
        * dom/ChildListMutationScope.h:
        * dom/DocumentMarkerController.cpp:
        (WebCore::updateRenderedRectsForMarker):
        * dom/InlineStyleSheetOwner.cpp:
        (WebCore::InlineStyleSheetOwner::createSheet):
        * dom/PointerEvent.h:
        * dom/UserGestureIndicator.h:
        (WebCore::UserGestureToken::create):
        * editing/AlternativeTextController.cpp:
        (WebCore::AlternativeTextController::applyAlternativeTextToRange):
        (WebCore::AlternativeTextController::respondToUnappliedSpellCorrection):
        (WebCore::AlternativeTextController::respondToUnappliedEditing):
        (WebCore::AlternativeTextController::markPrecedingWhitespaceForDeletedAutocorrectionAfterCommand):
        (WebCore::AlternativeTextController::respondToMarkerAtEndOfWord):
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::applyBlockStyle):
        (WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::targetRanges const):
        (WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers):
        (WebCore::CompositeEditCommand::moveParagraphs):
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::mergeParagraphs):
        * editing/Editing.cpp:
        (WebCore::visiblePositionForIndexUsingCharacterIterator):
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::removeStyleConflictingWithStyleOfNode):
        (WebCore::EditingStyle::conflictsWithInlineStyleOfElement const):
        (WebCore::EditingStyle::prepareToApplyAt):
        (WebCore::EditingStyle::mergeInlineAndImplicitStyleOfElement):
        (WebCore::EditingStyle::mergeStyleFromRulesForSerialization):
        (WebCore::EditingStyle::removeStyleFromRulesAndContext):
        (WebCore::extractPropertiesNotIn):
        * editing/Editor.cpp:
        (WebCore::Editor::setBaseWritingDirection):
        (WebCore::Editor::setComposition):
        * editing/EditorCommand.cpp:
        (WebCore::executeApplyParagraphStyle):
        (WebCore::executeMakeTextWritingDirectionLeftToRight):
        (WebCore::executeMakeTextWritingDirectionNatural):
        (WebCore::executeMakeTextWritingDirectionRightToLeft):
        * editing/FormatBlockCommand.cpp:
        (WebCore::FormatBlockCommand::formatRange):
        * editing/RemoveFormatCommand.cpp:
        (WebCore::RemoveFormatCommand::doApply):
        * editing/ReplaceRangeWithTextCommand.cpp:
        (WebCore::ReplaceRangeWithTextCommand::targetRanges const):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
        (WebCore::handleStyleSpansBeforeInsertion):
        (WebCore::ReplaceSelectionCommand::handleStyleSpans):
        * editing/SpellingCorrectionCommand.cpp:
        (WebCore::SpellingCorrectionCommand::targetRanges const):
        * editing/TextCheckingHelper.cpp:
        (WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::insertText):
        (WebCore::TypingCommand::willAddTypingToOpenCommand):
        * editing/VisibleUnits.cpp:
        (WebCore::distanceBetweenPositions):
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::selectionInWebArchiveFormat):
        * editing/ios/DictationCommandIOS.cpp:
        (WebCore::DictationCommandIOS::doApply):
        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
        (WebCore::Editor::removeUnchangeableStyles):
        (WebCore::Editor::writeImageToPasteboard):
        * editing/mac/EditorMac.mm:
        (WebCore::Editor::replaceNodeFromPasteboard):
        (WebCore::Editor::imageInWebArchiveFormat):
        * editing/markup.cpp:
        (WebCore::styleFromMatchedRulesAndInlineDecl):
        (WebCore::createFragmentForTransformToFragment):
        * fileapi/FileReaderLoader.cpp:
        (WebCore::FileReaderLoader::didFinishLoading):
        * html/FTPDirectoryDocument.cpp:
        (WebCore::createTemplateDocumentData):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::scheduleEvent):
        (WebCore::HTMLMediaElement::createMediaControls):
        * html/HTMLTableElement.cpp:
        (WebCore::HTMLTableElement::createSharedCellStyle):
        * html/HTMLTableElement.h:
        * html/URLUtils.h:
        (WebCore::URLUtils<T>::origin const):
        * html/parser/HTMLConstructionSite.cpp:
        (WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface):
        * html/shadow/TextControlInnerElements.cpp:
        (WebCore::TextControlInnerElement::resolveCustomStyle):
        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::createNewCue):
        * inspector/DOMPatchSupport.cpp:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildInitialState):
        (WebCore::InspectorCanvas::buildAction):
        * inspector/InspectorFrontendClientLocal.cpp:
        (WebCore::InspectorFrontendClientLocal::openInNewTab):
        * inspector/InspectorStyleSheet.cpp:
        (WebCore::asCSSRuleList):
        (WebCore::InspectorStyle::styleWithProperties const):
        (WebCore::InspectorStyleSheet::ensureSourceData):
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
        * inspector/agents/InspectorIndexedDBAgent.cpp:
        (WebCore::Inspector::keyPathFromIDBKeyPath):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::archive):
        * loader/EmptyClients.cpp:
        (WebCore::EmptyStorageNamespaceProvider::createSessionStorageNamespace):
        (WebCore::EmptyStorageNamespaceProvider::createLocalStorageNamespace):
        (WebCore::EmptyStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        (WebCore::EmptyStorageNamespaceProvider::createTransientLocalStorageNamespace):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::shouldInterruptLoadForXFrameOptions):
        (WebCore::FrameLoader::loadDifferentDocumentItem):
        * loader/WorkerThreadableLoader.cpp:
        (WebCore::WorkerThreadableLoader::loadResourceSynchronously):
        * loader/archive/mhtml/MHTMLParser.cpp:
        (WebCore::MHTMLParser::addResourceToArchive):
        (WebCore::MHTMLParser::parseNextPart):
        * loader/cache/MemoryCache.cpp:
        (WebCore::MemoryCache::addImageToCache):
        (WebCore::MemoryCache::removeResourcesWithOrigin):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::getMatchedCSSRules const):
        (WebCore::DOMWindow::createWindow):
        * page/EventHandler.cpp:
        (WebCore::textDistance):
        * page/Page.cpp:
        (WebCore::Page::userStyleSheet const):
        * page/animation/CSSPropertyAnimation.cpp:
        (WebCore::blendFilterOperations):
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::initWithSimpleHTMLDocument):
        (WebCore::Frame::interpretationsForCurrentRoot const):
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::fadeIn):
        (WebCore::ServicesOverlayController::Highlight::fadeOut):
        * platform/SharedBuffer.cpp:
        (WebCore::SharedBuffer::tryCreateArrayBuffer const):
        * platform/audio/HRTFElevation.cpp:
        (WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
        * platform/audio/SincResampler.cpp:
        (WebCore::SincResampler::consumeSource):
        * platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
        (WebCore::AudioFileReader::createBus):
        * platform/audio/mac/AudioFileReaderMac.cpp:
        (WebCore::AudioFileReader::createBus):
        * platform/graphics/Icon.h:
        (WebCore::Icon::create):
        * platform/graphics/InbandTextTrackPrivate.h:
        (WebCore::InbandTextTrackPrivate::create):
        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
        (WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
        * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::fulfillRequestWithKeyData):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
        (WebCore::MediaSourcePrivateAVFObjC::create):
        (WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::create):
        (WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):
        * platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h:
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::createTileLayer):
        * platform/graphics/ca/TileController.h:
        * platform/graphics/ca/win/CACFLayerTreeHost.cpp:
        (WebCore::CACFLayerTreeHost::acceleratedCompositingAvailable):
        (WebCore::CACFLayerTreeHost::create):
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::create):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::updateTracks):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        (WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection):
        (WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::paint):
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::appsinkNewSample):
        * platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.cpp:
        (WebCore::ISOProtectionSystemSpecificHeaderBox::parse):
        * platform/graphics/iso/ISOTrackEncryptionBox.cpp:
        (WebCore::ISOTrackEncryptionBox::parse):
        * platform/graphics/texmap/TextureMapperAnimation.cpp:
        (WebCore::applyFilterAnimation):
        * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
        (WebCore::TextureMapperPlatformLayerBuffer::clone):
        * platform/graphics/transforms/TransformOperations.cpp:
        (WebCore::TransformOperations::blendByMatchingOperations const):
        * platform/image-decoders/ico/ICOImageDecoder.cpp:
        (WebCore::ICOImageDecoder::setDataForPNGDecoderAtIndex):
        * platform/mock/mediasource/MockBox.cpp:
        (WebCore::MockInitializationBox::MockInitializationBox):
        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
        (WebCore::MockSourceBufferPrivate::create):
        (WebCore::MockSourceBufferPrivate::append):
        * platform/mock/mediasource/MockSourceBufferPrivate.h:
        * platform/mock/mediasource/MockTracks.h:
        (WebCore::MockTextTrackPrivate::create):
        (WebCore::MockVideoTrackPrivate::create):
        * platform/network/FormData.h:
        (WebCore::FormData::decode):
        * platform/network/cocoa/CookieStorageObserver.h:
        * platform/network/cocoa/CookieStorageObserver.mm:
        (WebCore::CookieStorageObserver::create):
        * platform/network/soup/ResourceRequestSoup.cpp:
        (WebCore::appendEncodedBlobItemToSoupMessageBody):
        (WebCore::ResourceRequest::updateSoupMessageBody const):
        * platform/text/hyphen/HyphenationLibHyphen.cpp:
        (WebCore::HyphenationDictionary::createNull):
        (WebCore::HyphenationDictionary::create):
        * platform/win/SearchPopupMenuWin.cpp:
        (WebCore::SearchPopupMenuWin::SearchPopupMenuWin):
        (WebCore::SearchPopupMenuWin::popupMenu):
        * platform/win/SearchPopupMenuWin.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::applyCommonButtonPaddingToStyle):
        (WebCore::RenderThemeIOS::paintProgressBar):
        (WebCore::RenderThemeIOS::adjustButtonStyle const):
        (WebCore::paintAttachmentIcon):
        * rendering/svg/SVGRenderTreeAsText.cpp:
        (WebCore::writeSVGResourceContainer):
        * storage/Storage.cpp:
        (WebCore::Storage::create):
        (WebCore::Storage::Storage):
        * storage/Storage.h:
        (WebCore::Storage::area const):
        * storage/StorageNamespace.h:
        * storage/StorageNamespaceProvider.cpp:
        (WebCore::StorageNamespaceProvider::localStorageArea):
        * storage/StorageNamespaceProvider.h:
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::getPresentationAttribute):
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::build):
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::build):
        * svg/SVGFEComponentTransferElement.cpp:
        (WebCore::SVGFEComponentTransferElement::build):
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::build):
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::build):
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::build):
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::build):
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::build):
        * svg/SVGFEMergeElement.cpp:
        (WebCore::SVGFEMergeElement::build):
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::build):
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::build):
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::build):
        * svg/SVGFETileElement.cpp:
        (WebCore::SVGFETileElement::build):
        * testing/GCObservation.h:
        * xml/XSLTProcessor.cpp:
        (WebCore::XSLTProcessor::createDocumentFromSource):
        * xml/parser/XMLDocumentParser.cpp:
        (WebCore::XMLDocumentParser::parseDocumentFragment):

2018-12-21  Chris Dumez  <cdumez@apple.com>

        navigator.userAgent in service workers does not reflect customUserAgent set by client
        https://bugs.webkit.org/show_bug.cgi?id=192951

        Reviewed by Youenn Fablet.

        Whenever a service worker client registers itself, also pass its effective user agent.
        In the network process, for each origin, we store the latest client's user agent and
        use it when starting the service worker.

        * dom/Document.cpp:
        (WebCore::Document::setServiceWorkerConnection):
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
        * workers/service/SWClientConnection.h:
        * workers/service/server/SWServer.cpp:
        (WebCore::SWServer::serviceWorkerClientUserAgent const):
        (WebCore::SWServer::installContextData):
        (WebCore::SWServer::runServiceWorker):
        (WebCore::SWServer::registerServiceWorkerClient):
        * workers/service/server/SWServer.h:
        * workers/service/server/SWServerToContextConnection.h:
        * workers/service/server/SWServerWorker.cpp:
        (WebCore::SWServerWorker::userAgent const):
        * workers/service/server/SWServerWorker.h:

2018-12-21  Youenn Fablet  <youenn@apple.com>

        RTCRtpSender.setParameters() does set active parameter
        https://bugs.webkit.org/show_bug.cgi?id=192848

        Reviewed by Eric Carlson.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::updateRTCRtpSendParameters):
        The routine was updating the local value, not the out parameter.

2018-12-21  Eric Carlson  <eric.carlson@apple.com>

        'ended' Event doesn't fire on MediaStreamTrack when a USB camera is unplugged
        https://bugs.webkit.org/show_bug.cgi?id=187896
        <rdar://problem/42681445>

        Reviewed by Jer Noble.

        No new tests, tested manually.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::deviceDisconnected):
        (-[WebCoreAVVideoCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver removeNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver deviceConnectedDidChange:]):
        * platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
        (WebCore::deviceHasInputStreams):
        (WebCore::isValidCaptureDevice):
        (WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices):
        (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
        (WebCore::CoreAudioCaptureDeviceManager::devicesChanged): Deleted.
        * platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioSharedUnit::setCaptureDevice):
        (WebCore::CoreAudioSharedUnit::devicesChanged):
        (WebCore::CoreAudioSharedUnit::startProducingData):
        (WebCore::CoreAudioSharedUnit::startInternal):
        (WebCore::CoreAudioSharedUnit::verifyIsCapturing):
        (WebCore::CoreAudioSharedUnit::captureFailed):
        (WebCore::CoreAudioCaptureSourceFactory::devicesChanged):
        (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
        (WebCore::CoreAudioSharedUnit::setCaptureDeviceID): Deleted.
        * platform/mediastream/mac/CoreAudioCaptureSource.h:

2018-12-20  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r239353): iOS WK1 Assertion failure in notifyChildNodeRemoved while running
        TestWebKitAPI.QuickLook.LegacyQuickLookContent
        https://bugs.webkit.org/show_bug.cgi?id=192859
        <rdar://problem/46887237>

        Reviewed by Antti Koivisto.

        After r239353, ScriptDisallowedScope::InMainThread::isScriptAllowed() may return false when the web thread
        is inside a delegate callback even when there is a ScriptDisallowedScope defined.

        Replace the existign debug assertions which assert !ScriptDisallowedScope::InMainThread::isScriptAllowed()
        by a newly added ScriptDisallowedScope::InMainThread::hasDisallowedScope to avoid hitting this assertion.

        Tests: TestWebKitAPI.QuickLook.LegacyQuickLookContent

        * dom/ContainerNodeAlgorithms.cpp:
        (WebCore::notifyChildNodeInserted):
        (WebCore::notifyChildNodeRemoved):
        * dom/Document.cpp:
        (WebCore::Document::nodeChildrenWillBeRemoved):
        (WebCore::Document::nodeWillBeRemoved):
        * dom/ScriptDisallowedScope.h:
        (WebCore::ScriptDisallowedScope::InMainThread::hasDisallowedScope):
        * html/HTMLFormElement.cpp:
        (WebCore:: const):

2018-12-21  Joseph Pecoraro  <pecoraro@apple.com>

        Update status of some WebCore features in features.json
        https://bugs.webkit.org/show_bug.cgi?id=192998

        Reviewed by Tim Horton.

        * features.json:
        - Variation Fonts: Supported
        - Conic Gradients: Supported in Preview
        - Web Share: Supported in Preview
        - <datalist>: Supported in Preview
        - Intersection Observers: Supported in Preview

2018-12-21  Zalan Bujtas  <zalan@apple.com>

        [iOS] Using file upload can trigger a crash under RenderThemeIOS::paintFileUploadIconDecorations()
        https://bugs.webkit.org/show_bug.cgi?id=192357
        <rdar://problem/42852260>

        Reviewed by Simon Fraser.

        Do not try to paint the file picker when painting is disabled.

        * rendering/RenderFileUploadControl.cpp:
        (WebCore::RenderFileUploadControl::paintObject):

2018-12-21  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] userPresence should always be true
        https://bugs.webkit.org/show_bug.cgi?id=192835
        <rdar://problem/46538788>

        Reviewed by Brent Fulgham.

        In the current spec as of 7 August 2018, userPresence is suggested to set to the inverse of userVerification.
        This doesn't comply with the CTAP spec. Details in: https://github.com/w3c/webauthn/issues/1123.
        After discussing with other members of the working group, we decided to make userPresence always default to true.

        Covered by exisiting tests.

        * Modules/webauthn/fido/DeviceRequestConverter.cpp:
        (fido::encodeGetAssertionRequestAsCBOR):

2018-12-21  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import an APDU coder from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=192949
        <rdar://problem/46879933>

        Reviewed by Brent Fulgham.

        This patch imports an APDU coder from Chromium. Here is the documentation:
        https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#u2f-message-framing
        APDU is a binary format to frame any U2F requests/responses into binaries. It is equivalent to CBOR in CTAP2.

        Here is a list of files that are imported from Chromium:
        https://cs.chromium.org/chromium/src/components/apdu/apdu_command.cc?rcl=a2f290c10d132f53518e7f99d5635ee814ff8090
        https://cs.chromium.org/chromium/src/components/apdu/apdu_command.h?rcl=867b103481f6f4ccc79a69bba16c11eefac3cdb6
        https://cs.chromium.org/chromium/src/components/apdu/apdu_response.cc?rcl=867b103481f6f4ccc79a69bba16c11eefac3cdb6
        https://cs.chromium.org/chromium/src/components/apdu/apdu_response.h?rcl=867b103481f6f4ccc79a69bba16c11eefac3cdb6
        https://cs.chromium.org/chromium/src/components/apdu/apdu_unittest.cc?rcl=867b103481f6f4ccc79a69bba16c11eefac3cdb6

        Covered by API tests.

        * Modules/webauthn/apdu/ApduCommand.cpp: Added.
        (apdu::ApduCommand::createFromMessage):
        (apdu::ApduCommand::ApduCommand):
        (apdu::ApduCommand::getEncodedCommand const):
        * Modules/webauthn/apdu/ApduCommand.h: Added.
        * Modules/webauthn/apdu/ApduResponse.cpp: Added.
        (apdu::ApduResponse::createFromMessage):
        (apdu::ApduResponse::ApduResponse):
        (apdu::ApduResponse::getEncodedResponse const):
        * Modules/webauthn/apdu/ApduResponse.h: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-12-21  Jer Noble  <jer.noble@apple.com>

        Convert raw CDMSessionMediaSourceAVFObjC pointer in MediaPlayerPrivateMediaSourceAVFObjC
        https://bugs.webkit.org/show_bug.cgi?id=192985
        <rdar://problem/46750743>

        Reviewed by Eric Carlson.

        Make m_session a RefPtr; drive-by fix: make m_mediaElement in WebKitMediaKeys a WeakPtr.

        * Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp:
        (WebCore::WebKitMediaKeys::setMediaElement):
        * Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
        * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):

2018-12-21  Justin Michaud  <justin_michaud@apple.com>

        CSS variables don't work for colors in "border" property
        https://bugs.webkit.org/show_bug.cgi?id=192922

        Reviewed by Simon Fraser.

        ParseColorFunction no longer consumes anything if the color was not valid.

        Test: css-custom-properties-api/border-variable-parsing.html

        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::parseColorFunction):

2018-12-21  Justin Fan  <justin_fan@apple.com>

        [WebGPU] GPUBindGroupLayout refactoring: no HashMap, and failure logging
        https://bugs.webkit.org/show_bug.cgi?id=192990

        Reviewed by Myles C. Maxfield.

        Refactor away the unnecessary HashMaps when creating MTLArgumentEncoders in GPUBindGroupLayout creation.
        Also update GPUBindGroupLayout::create -> tryCreate, in order to better handle Objective-C exceptions.

        No new tests; no change in behavior.

        * Modules/webgpu/WebGPUBindGroupLayout.cpp:
        (WebCore::WebGPUBindGroupLayout::create):
        (WebCore::WebGPUBindGroupLayout::WebGPUBindGroupLayout):
        * Modules/webgpu/WebGPUBindGroupLayout.h:
        (WebCore::WebGPUBindGroupLayout::bindGroupLayout const):
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBindGroupLayout const):
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBindGroupLayout const): Renamed from ::create*. Now returning a RefPtr. 
        (WebCore::GPUDevice::createBindGroupLayout const): Deleted.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
        (WebCore::appendArgumentToArray):
        (WebCore::newEncoder):
        (WebCore::GPUBindGroupLayout::tryCreate): Renamed from ::create. Now returning a RefPtr.
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
        (WebCore::appendArgumentToArrayInMap): Deleted.
        (WebCore::GPUBindGroupLayout::create): Deleted.

        Deleted unneeded GPUBindGroupLayout.cpp:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUBindGroupLayout.cpp: Removed.

2018-12-21  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add DeviceIdHashSaltStorage disk persistence
        https://bugs.webkit.org/show_bug.cgi?id=190466

        Reviewed by Youenn Fablet.

        Added persistency to the DeviceIdHashSaltStorage.

        * platform/glib/FileSystemGlib.cpp:
        (WebCore::FileSystem::getFileSize): Implemented this function to
        allow sharing code with the statistics storage class.
        * platform/glib/KeyedDecoderGlib.cpp:
        (WebCore::KeyedDecoderGlib::dictionaryFromGVariant): Added a
        condition to control situations where the key is empty, it can
        happen if the user modifies the file in the disk.
        * Modules/indexeddb/shared/IDBResourceIdentifier.cpp: Add include
        to make work compilation with debug, unified builds.

2018-12-21  Zalan Bujtas  <zalan@apple.com>

        Synchronous media query evaluation could destroy current Frame/FrameView.
        https://bugs.webkit.org/show_bug.cgi?id=192781
        <rdar://problem/34416793>

        Reviewed by Chris Dumez.

        Protect Frame and FrameView when coming back from printing and check if the current Frame/FrameView/FrameLoader objects are still valid.

        Test: printing/print-with-media-query-destory.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::finishedLoading):
        * page/Frame.cpp:
        (WebCore::Frame::setPrinting):
        * page/FrameView.cpp:
        (WebCore::FrameView::forceLayoutForPagination):
        * page/PrintContext.cpp:
        (WebCore::PrintContext::PrintContext):
        (WebCore::PrintContext::computePageRects):
        (WebCore::PrintContext::computePageRectsWithPageSizeInternal):
        (WebCore::PrintContext::begin):
        (WebCore::PrintContext::computeAutomaticScaleFactor):
        (WebCore::PrintContext::spoolPage):
        (WebCore::PrintContext::spoolRect):
        (WebCore::PrintContext::end):
        * page/PrintContext.h:
        (WebCore::PrintContext::frame const): Deleted.

2018-12-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Setting the file wrapper and content type of an attachment to a PDF should update its image
        https://bugs.webkit.org/show_bug.cgi?id=192984
        <rdar://problem/46798028>

        Reviewed by Tim Horton.

        Allow PDF data to be used to update enclosing image elements when setting the file wrapper for an attachment.
        Covered by a new API test: WKAttachmentTests.SetFileWrapperForPDFImageAttachment.

        * html/HTMLAttachmentElement.cpp:
        (WebCore::mimeTypeIsSuitableForInlineImageAttachment):
        (WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):

2018-12-21  Justin Michaud  <justin_michaud@apple.com>

        Repeated background images with zero size should display the background color
        https://bugs.webkit.org/show_bug.cgi?id=192962

        Reviewed by Antti Koivisto.

        Test: fast/backgrounds/background-repeat-with-zero-size.html

        * platform/LengthSize.h:
        (WebCore::LengthSize::isEmpty const):
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::paintFillLayerExtended):
        * rendering/style/FillLayer.h:
        (WebCore::FillLayer::isEmpty const):

2018-12-21  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Fix percentages in relative offsets for grid items
        https://bugs.webkit.org/show_bug.cgi?id=190492

        Reviewed by Sergio Villar Senin.

        The method RenderBoxModelObject::relativePositionOffset() was not considering the case of grid items,
        where the containing block is the grid area.
        The patch modifies the method so the new code uses overrideContainingBlockContentWidth|Height when required.

        Test: imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-relative-offsets-002.html

        * rendering/RenderBox.cpp: Implement the physical versions of the already existent methods.
        (WebCore::RenderBox::overrideContainingBlockContentWidth const):
        (WebCore::RenderBox::overrideContainingBlockContentHeight const):
        (WebCore::RenderBox::hasOverrideContainingBlockContentWidth const):
        (WebCore::RenderBox::hasOverrideContainingBlockContentHeight const):
        * rendering/RenderBox.h:
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::relativePositionOffset const): Modified method
        to take into account overrideContainingBlockContentWidth|Height for grid items.
        * rendering/RenderBoxModelObject.h: Added new headers for physical virtual methods
        that will be overridden in RenderBox.
        (WebCore::RenderBoxModelObject::overrideContainingBlockContentWidth const):
        (WebCore::RenderBoxModelObject::overrideContainingBlockContentHeight const):
        (WebCore::RenderBoxModelObject::hasOverrideContainingBlockContentWidth const):
        (WebCore::RenderBoxModelObject::hasOverrideContainingBlockContentHeight const):

2018-12-20  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Convert WebGPUBindGroups into MTLArgumentEncoders
        https://bugs.webkit.org/show_bug.cgi?id=192956

        Reviewed by Myles Maxfield.

        No testable behavior change. Existing tests cover possible crashing.

        Add GPUBindGroupLayoutMetal.mm:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:

        Flesh out GPUBindGroupLayout::create:
        * platform/graphics/gpu/GPUBindGroupLayout.cpp:
        * platform/graphics/gpu/GPUBindGroupLayout.h:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::createBindGroupLayout const):
        * platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm: Added.
        (WebCore::appendArgumentToArrayInMap): Added.
        (WebCore::GPUBindGroupLayout::create):
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
        (WebCore::MTLDataTypeForBindingType): Added.

2018-12-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, remove stray #pragma once added to .cpp file

        * svg/properties/SVGAttributeOwnerProxy.cpp:

2018-12-20  Justin Michaud  <justin_michaud@apple.com>

        Adding runtime-enabled attribute to Element prevents inlining property access
        https://bugs.webkit.org/show_bug.cgi?id=192901

        Add a call to flattenDictionaryObject after disabling runtime-enabled attributes.

        Reviewed by Ryosuke Niwa.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
        (WebCore::JSTestEnabledBySettingPrototype::finishCreation):
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        (WebCore::JSTestGenerateIsReachablePrototype::finishCreation):
        * bindings/scripts/test/JS/JSTestNode.cpp:
        (WebCore::JSTestNodePrototype::finishCreation):
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::JSTestObjPrototype::finishCreation):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::hasValue() instead of Optional::has_value()
        https://bugs.webkit.org/show_bug.cgi?id=192948

        Reviewed by Tim Horton.

        * bindings/js/DOMPromiseProxy.h:
        (WebCore::DOMPromiseProxy<IDLType>::isFulfilled const):
        (WebCore::DOMPromiseProxy<IDLVoid>::isFulfilled const):
        (WebCore::DOMPromiseProxyWithResolveCallback<IDLType>::isFulfilled const):
        * dom/DataTransferItemList.h:
        (WebCore::DataTransferItemList::hasItems const):
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::addEventListener):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::captionDisplayMode):
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::wouldTaintOrigin const):
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):
        * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
        (webKitMediaSrcUpdatePresentationSize):
        * platform/mac/NSScrollerImpDetails.mm:
        (WebCore::ScrollerStyle::recommendedScrollerStyle):
        * rendering/RenderListItem.cpp:
        (WebCore::RenderListItem::setExplicitValue):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Move HTTPS_UPGRADE code behind a runtime flag, off by default
        https://bugs.webkit.org/show_bug.cgi?id=192937

        Reviewed by Youenn Fablet.

        Move HTTPS_UPGRADE code behind a runtime flag, off by default and drop the build time flag.

        * page/Settings.yaml:

2018-12-20  Youenn Fablet  <youenn@apple.com>

        Remove custom constructors of ReadableStreamDefaultReader and ReadableStreamBYOBReader
        https://bugs.webkit.org/show_bug.cgi?id=192838

        Reviewed by Chris Dumez.

        Generate constructor code in case of a Private but not Public constructor.
        Make sure this is correctly exposed in global objects.
        Add JS built-in constructor implementations for those two objects.

        Also add JS built-in constructors for controller and byob request.
        To keep existing behavior, JS built-ins calling these constructors need to pass
        an additional parameter that allows making the difference between a JS builtin caller or a JS caller.
        In the latter case, the constructor will throw.

        Covered by existing tests, no observable change of behavior.

        * Modules/streams/ReadableByteStreamController.idl:
        * Modules/streams/ReadableByteStreamController.js:
        (initializeReadableByteStreamController):
        (getter.byobRequest):
        * Modules/streams/ReadableByteStreamInternals.js:
        (privateInitializeReadableByteStreamController): Deleted.
        (privateInitializeReadableStreamBYOBRequest): Deleted.
        * Modules/streams/ReadableStream.js:
        (initializeReadableStream):
        * Modules/streams/ReadableStreamBYOBReader.js:
        (initializeReadableStreamBYOBReader):
        * Modules/streams/ReadableStreamBYOBRequest.idl:
        * Modules/streams/ReadableStreamBYOBRequest.js:
        (initializeReadableStreamBYOBRequest):
        * Modules/streams/ReadableStreamDefaultController.idl:
        * Modules/streams/ReadableStreamDefaultController.js:
        (initializeReadableStreamDefaultController):
        (enqueue):
        * Modules/streams/ReadableStreamDefaultReader.js:
        (initializeReadableStreamDefaultReader):
        * Modules/streams/ReadableStreamInternals.js:
        (readableStreamDefaultControllerError): Deleted.
        * Sources.txt:
        * UnifiedSources-input.xcfilelist:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSDOMBuiltinConstructor.h:
        * bindings/js/JSDOMGlobalObject.cpp:
        (WebCore::JSDOMGlobalObject::addBuiltinGlobals):
        * bindings/js/JSReadableStreamPrivateConstructors.cpp: Removed.
        * bindings/js/JSReadableStreamPrivateConstructors.h: Removed.
        * bindings/scripts/CodeGeneratorJS.pm:
        (GeneratePropertiesHashTable):
        * bindings/scripts/preprocess-idls.pl:
        (shouldExposeInterface):

2018-12-20  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Remove hash from Client Data
        https://bugs.webkit.org/show_bug.cgi?id=192727
        <rdar://problem/46746673>

        Reviewed by Brent Fulgham.

        The hash algorithm for hashing the client data is enforced to SHA_256 in the latest spec:
        https://www.w3.org/TR/webauthn/#sec-client-data. Therefore, we should remove it.

        Covered by existing tests.

        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinatorInternal::produceClientDataJson):

2018-12-20  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a runtime flag for local authenticator
        https://bugs.webkit.org/show_bug.cgi?id=192792
        <rdar://problem/46798738>

        Reviewed by Brent Fulgham.

        No tests.

        This patch adds a runtime flag for local authenticator and removes ways to
        set the runtime flag for web authentication in LegacyWebKit.

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setWebAuthenticationLocalAuthenticatorEnabled):
        (WebCore::RuntimeEnabledFeatures::webAuthenticationLocalAuthenticatorEnabled const):

2018-12-20  Jeremy Jones  <jeremyj@apple.com>

        Pointer lock causes abandoned documents
        https://bugs.webkit.org/show_bug.cgi?id=188727
        rdar://problem/44248197
        
        Reviewed by Simon Fraser.

        Fixes --world-leaks in these tests:

        pointer-lock/locked-element-removed-from-dom.html
        pointer-lock/mouse-event-delivery.html
        fast/shadow-dom/pointerlockelement-in-slot.html

        PointerLockController now uses WeakPtr instead of RefPtr because it has no need to extend the lifetime of a document.

        * page/PointerLockController.cpp:
        (WebCore::PointerLockController::elementRemoved):
        (WebCore::PointerLockController::documentDetached):
        (WebCore::PointerLockController::didAcquirePointerLock):
        * page/PointerLockController.h:

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::valueOr() instead of Optional::value_or()
        https://bugs.webkit.org/show_bug.cgi?id=192933

        Reviewed by Geoffrey Garen.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::convert):
        (WebCore::ApplePayPaymentHandler::didAuthorizePayment):
        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::load):
        * Modules/indexeddb/IDBDatabaseIdentifier.h:
        (WebCore::IDBDatabaseIdentifier::hash const):
        * Modules/indexeddb/IDBFactory.cpp:
        (WebCore::IDBFactory::open):
        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::applyConstraints):
        * Modules/mediastream/RTCDTMFSender.cpp:
        (WebCore::RTCDTMFSender::insertDTMF):
        * Modules/webdatabase/SQLTransaction.cpp:
        (WebCore::SQLTransaction::executeSql):
        * Modules/webvr/VRFrameData.cpp:
        (WebCore::VRFrameData::update):
        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::updateCSSTransitionsForElement):
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::cancel):
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        * animation/KeyframeEffect.cpp:
        (WebCore::computeMissingKeyframeOffsets):
        (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::runPendingPlayTask):
        (WebCore::WebAnimation::runPendingPauseTask):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::write):
        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
        (WebCore::CryptoAlgorithmHMAC::generateKey):
        (WebCore::CryptoAlgorithmHMAC::importKey):
        * crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:
        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
        * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
        (WebCore::CryptoKeyRSA::importSpki):
        (WebCore::CryptoKeyRSA::importPkcs8):
        * crypto/keys/CryptoKeyRSA.cpp:
        (WebCore::CryptoKeyRSA::importJwk):
        * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::CryptoKeyRSA::importSpki):
        (WebCore::CryptoKeyRSA::importPkcs8):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::counterToCSSValue):
        * css/CSSFontFace.cpp:
        (WebCore::calculateItalicRange):
        * css/CSSPrimitiveValue.cpp:
        (WebCore::CSSPrimitiveValue::doubleValue const):
        * css/CSSStyleSheet.cpp:
        (WebCore::CSSStyleSheet::addRule):
        * css/DOMMatrix.cpp:
        (WebCore::DOMMatrix::rotateSelf):
        * css/DOMMatrixReadOnly.cpp:
        (WebCore::DOMMatrixReadOnly::validateAndFixup):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyValueCounter):
        * css/parser/MediaQueryParser.cpp:
        (WebCore::MediaQueryParser::commitMediaQuery):
        * dom/Document.h:
        (WebCore::Document::referrerPolicy const):
        * dom/Element.cpp:
        (WebCore::toScrollAlignment):
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::addEventListener):
        * dom/MutationObserver.cpp:
        (WebCore::MutationObserver::observe):
        * editing/cocoa/FontAttributeChangesCocoa.mm:
        (WebCore::FontChanges::platformFontFamilyNameForCSS const):
        * fileapi/File.cpp:
        (WebCore::File::File):
        * html/DOMTokenList.cpp:
        (WebCore::DOMTokenList::toggle):
        * html/HTMLOListElement.h:
        * html/ImageBitmap.cpp:
        (WebCore::croppedSourceRectangleWithFormatting):
        * html/canvas/CanvasPattern.cpp:
        (WebCore::CanvasPattern::setTransform):
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::CanvasRenderingContext2DBase::setTransform):
        (WebCore::CanvasRenderingContext2DBase::isPointInPathInternal):
        (WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):
        * html/canvas/Path2D.cpp:
        (WebCore::Path2D::addPath):
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildAction):
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::populateContextMenu):
        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):
        * layout/FormattingContextQuirks.cpp:
        (WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
        * layout/MarginTypes.h:
        (WebCore::Layout::VerticalMargin::usedValues const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::width const):
        (WebCore::Display::Box::height const):
        (WebCore::Display::Box::contentBoxTop const):
        (WebCore::Display::Box::contentBoxLeft const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::Iterator::set):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const):
        (WebCore::Layout::InlineFormattingContext::placeInFlowPositionedChildren const):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::urlSelected):
        * loader/NavigationAction.cpp:
        * page/FrameView.cpp:
        (WebCore::FrameView::setLayoutViewportOverrideRect):
        (WebCore::FrameView::documentToAbsoluteScaleFactor const):
        (WebCore::FrameView::viewportSizeForCSSViewportUnits const):
        * page/Page.cpp:
        (WebCore::Page::setLowPowerModeEnabledOverrideForTesting):
        * page/SecurityOriginData.cpp:
        (WebCore::SecurityOriginData::databaseIdentifier const):
        * page/SecurityOriginData.h:
        (WebCore::SecurityOriginDataHash::hash):
        * page/SecurityOriginHash.h:
        (WebCore::SecurityOriginHash::hash):
        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::setViewLayoutSize):
        * page/WindowFeatures.cpp:
        (WebCore::parseDialogFeatures):
        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::updateStateMachine):
        (WebCore::AnimationBase::fireAnimationEventsIfNeeded):
        (WebCore::AnimationBase::getTimeToNextEvent const):
        (WebCore::AnimationBase::freezeAtTime):
        (WebCore::AnimationBase::getElapsedTime const):
        * page/animation/CSSAnimationController.cpp:
        (WebCore::CSSAnimationControllerPrivate::updateAnimationTimer):
        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::ResourceUsageThread::platformThreadBody):
        * page/linux/ResourceUsageThreadLinux.cpp:
        (WebCore::ResourceUsageThread::platformThreadBody):
        * platform/graphics/ComplexTextController.cpp:
        (WebCore::ComplexTextController::offsetForPosition):
        * platform/graphics/FontCache.h:
        (WebCore::FontDescriptionKey::computeHash const):
        * platform/graphics/FontCascade.cpp:
        (WebCore::FontCascade::drawText const):
        (WebCore::FontCascade::drawEmphasisMarks const):
        (WebCore::FontCascade::displayListForTextRun const):
        (WebCore::FontCascade::adjustSelectionRectForText const):
        (WebCore::FontCascade::codePath const):
        * platform/graphics/FontSelectionAlgorithm.cpp:
        (WebCore::FontSelectionAlgorithm::styleDistance const):
        * platform/graphics/FontSelectionAlgorithm.h:
        (WebCore::operator<<):
        (WebCore::FontSelectionSpecifiedCapabilities::computeWeight const):
        (WebCore::FontSelectionSpecifiedCapabilities::computeWidth const):
        (WebCore::FontSelectionSpecifiedCapabilities::computeSlope const):
        * platform/graphics/ShadowBlur.cpp:
        (WebCore::ShadowBlur::calculateLayerBoundingRect):
        * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:
        (WebCore::WebCoreAVCFResourceLoader::startLoading):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::paintCurrentFrameInContext):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::naturalSize):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setVisibleAndCoverageRects):
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::preparePlatformFont):
        * platform/graphics/filters/FETurbulence.cpp:
        (WebCore::FETurbulence::fillRegion const):
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::initializeGStreamer):
        * platform/graphics/texmap/TextureMapperLayer.cpp:
        (WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
        (WebCore::TextureMapperLayer::replicaTransform):
        (WebCore::TextureMapperLayer::syncAnimations):
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::transformedVisibleRect):
        (WebCore::CoordinatedGraphicsLayer::computeTransformedVisibleRect):
        * platform/graphics/transforms/TransformState.cpp:
        (WebCore::TransformState::mappedPoint const):
        (WebCore::TransformState::mapQuad const):
        (WebCore::TransformState::flattenWithTransform):
        * platform/network/CacheValidation.cpp:
        (WebCore::computeCurrentAge):
        (WebCore::computeFreshnessLifetimeForHTTPFamily):
        * platform/network/NetworkStateNotifier.cpp:
        (WebCore::NetworkStateNotifier::onLine):
        * rendering/FloatingObjects.cpp:
        (WebCore::FindNextFloatLogicalBottomAdapter::nextLogicalBottom const):
        (WebCore::FindNextFloatLogicalBottomAdapter::nextShapeLogicalBottom const):
        * rendering/GridBaselineAlignment.cpp:
        (WebCore::GridBaselineAlignment::ascentForChild const):
        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::GridTrack::setGrowthLimit):
        (WebCore::GridTrackSizingAlgorithm::initialBaseSize const):
        (WebCore::GridTrackSizingAlgorithm::initialGrowthLimit const):
        (WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem):
        (WebCore::sortByGridTrackGrowthPotential):
        (WebCore::GridTrackSizingAlgorithm::estimatedGridAreaBreadthForChild const):
        (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
        (WebCore::GridTrackSizingAlgorithm::initializeTrackSizes):
        * rendering/PaintInfo.h:
        (WebCore::PaintInfo::applyTransform):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::computeLogicalHeight const):
        * rendering/RenderCounter.cpp:
        (WebCore::planCounter):
        * rendering/RenderDeprecatedFlexibleBox.cpp:
        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::RenderFlexibleBox::baselinePosition const):
        (WebCore::RenderFlexibleBox::marginBoxAscentForChild):
        (WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):
        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::gridGap const):
        (WebCore::RenderGrid::baselinePosition const):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayerByApplyingTransform):
        * rendering/RenderListBox.cpp:
        (WebCore::RenderListBox::paintItem):
        (WebCore::RenderListBox::listIndexIsVisible):
        * rendering/RenderMultiColumnSet.cpp:
        (WebCore::RenderMultiColumnSet::calculateMaxColumnHeight const):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::convertStyleLogicalHeightToComputedHeight):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::cellBaselinePosition const):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::firstLineBaseline const):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::computePreferredLogicalWidths):
        (WebCore::RenderText::previousOffset const):
        (WebCore::RenderText::previousOffsetForBackwardDeletion const):
        (WebCore::RenderText::nextOffset const):
        (WebCore::RenderText::stringView const):
        * rendering/RenderView.cpp:
        (WebCore::RenderView::layout):
        * rendering/mathml/RenderMathMLBlock.cpp:
        (WebCore::RenderMathMLBlock::baselinePosition const):
        * rendering/mathml/RenderMathMLBlock.h:
        (WebCore::RenderMathMLBlock::ascentForChild):
        * rendering/style/GridPosition.cpp:
        (WebCore::GridPosition::max):
        * rendering/style/TextUnderlineOffset.h:
        (WebCore::TextUnderlineOffset::lengthOr const):
        * rendering/svg/RenderSVGContainer.cpp:
        (WebCore::RenderSVGContainer::nodeAtFloatPoint):
        * rendering/svg/RenderSVGForeignObject.cpp:
        (WebCore::RenderSVGForeignObject::nodeAtFloatPoint):
        * rendering/svg/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::nodeAtFloatPoint):
        * rendering/svg/RenderSVGResourceClipper.cpp:
        (WebCore::RenderSVGResourceClipper::hitTestClipContent):
        * rendering/svg/RenderSVGResourceFilter.cpp:
        (WebCore::RenderSVGResourceFilter::postApplyResource):
        * rendering/svg/RenderSVGRoot.cpp:
        (WebCore::RenderSVGRoot::nodeAtPoint):
        * rendering/svg/RenderSVGShape.cpp:
        (WebCore::RenderSVGShape::nodeAtFloatPoint):
        * rendering/svg/RenderSVGText.cpp:
        (WebCore::RenderSVGText::nodeAtFloatPoint):
        * rendering/svg/SVGRenderingContext.cpp:
        (WebCore::SVGRenderingContext::clipToImageBuffer):
        * svg/SVGToOTFFontConversion.cpp:
        (WebCore::SVGToOTFFontConverter::processGlyphElement):
        (WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):

2018-12-20  Jer Noble  <jer.noble@apple.com>

        REGRESSION (r239419): heap-use-after-free in AudioSourceProviderAVFObjC::finalizeCallback()
        https://bugs.webkit.org/show_bug.cgi?id=192941
        <rdar://problem/46874096>

        Reviewed by Brent Fulgham.

        Don't delete the locked lock before unlocking the lock. 

        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::finalizeCallback):

2018-12-20  Keith Rollin  <krollin@apple.com>

        Improve release-level page-load logging
        https://bugs.webkit.org/show_bug.cgi?id=192872
        <rdar://problem/46850309>

        Reviewed by Chris Dumez.

        There are a number of reported bugs that are difficult or impossible
        to track down with our current level of logging. Additionally, some
        software groups lower in the page-loading stack have requested logging
        sufficient for tracking a user-visible error message down to the
        requested resource that caused the message. Add more-comprehensive
        logging to address these issues/requests.

        No new tests -- no changed functionality.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::setMainDocumentError):
        (WebCore::DocumentLoader::mainReceivedError):
        (WebCore::DocumentLoader::stopLoading):
        (WebCore::DocumentLoader::notifyFinished):
        (WebCore::DocumentLoader::willSendRequest):
        (WebCore::DocumentLoader::continueAfterContentPolicy):
        (WebCore::DocumentLoader::startLoadingMainResource):
        (WebCore::DocumentLoader::loadMainResource):
        (WebCore::DocumentLoader::cancelMainResourceLoad):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::urlSelected):
        (WebCore::FrameLoader::loadURLIntoChildFrame):
        (WebCore::FrameLoader::loadArchive):
        (WebCore::FrameLoader::loadInSameDocument):
        (WebCore::FrameLoader::loadFrameRequest):
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::loadWithNavigationAction):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::reloadWithOverrideEncoding):
        (WebCore::FrameLoader::reload):
        (WebCore::FrameLoader::setState):
        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
        (WebCore::FrameLoader::loadPostRequest):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::FrameLoader::loadDifferentDocumentItem):
        * loader/ProgressTracker.cpp:
        (WebCore::ProgressItem::ProgressItem):
        (WebCore::ProgressTracker::reset):
        (WebCore::ProgressTracker::progressStarted):
        (WebCore::ProgressTracker::progressCompleted):
        (WebCore::ProgressTracker::finalProgressComplete):
        (WebCore::ProgressTracker::incrementProgress):
        (WebCore::ProgressTracker::completeProgress):
        (WebCore::ProgressTracker::isAlwaysOnLoggingAllowed const):
        * loader/ProgressTracker.h:
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::loadDataURL):
        (WebCore::ResourceLoader::willSendRequestInternal):
        (WebCore::ResourceLoader::didFinishLoading):
        (WebCore::ResourceLoader::didFail):
        (WebCore::ResourceLoader::willSendRequestAsync):
        (WebCore::ResourceLoader::wasBlocked):
        (WebCore::ResourceLoader::cannotShowURL):
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::willSendRequestInternal):
        (WebCore::=):
        (WebCore::SubresourceLoader::didReceiveResponse):
        (WebCore::SubresourceLoader::didFinishLoading):
        (WebCore::SubresourceLoader::didFail):
        (WebCore::SubresourceLoader::willCancel):
        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::load):

2018-12-20  Jeremy Jones  <jeremyj@apple.com>

        Switch tabs before retuning PiP video to inline.
        https://bugs.webkit.org/show_bug.cgi?id=192767
        rdar://problem/46006046

        Reviewed by Jer Noble.

        No new tests because this code path only happens with a user action on system UI.

        When exiting PiP, notify the fullscreen change observer so it can restore client UI state before exiting.

        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (-[WebVideoFullscreenInterfaceMacObjC pipShouldClose:]):

2018-12-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix GTK build after r239410

        It added a new file to the build, breaking the unified sources magic that obscured a bug in
        URLSoup.h. It forward-declares URL, but this never worked unless the URL.h header was
        included via another source file in the unified source bundle.

        * platform/network/soup/URLSoup.h:

2018-12-19  Chris Dumez  <cdumez@apple.com>

        wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
        https://bugs.webkit.org/show_bug.cgi?id=192728
        <rdar://problem/46746779>

        Reviewed by Geoff Garen.

        * Modules/*:
        * animation/*:
        * bindings/*:
        * crypto/*:
        * css/*:
        * dom/*:
        * editing/*:
        * fileapi/*:
        * html/*:
        * inspector/*:
        * layout/*:
        * loader/*:
        * mathml/*:
        * page/*:
        * platform/*:
        * plugins/*:
        * rendering/*:
        * testing/*:
        * workers/*:
        * xml/*:

2018-12-19  Jer Noble  <jer.noble@apple.com>

        Leak of MTAudioProcessingTap (304 bytes) in com.apple.WebKit.WebContent running WebKit layout tests
        https://bugs.webkit.org/show_bug.cgi?id=192896
        <rdar://46732186>

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
        (WebCore::AudioSourceProviderAVFObjC::initCallback):

2018-12-19  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r232991): Switching to dark mode in Mail does not update the message view to be transparent
        https://bugs.webkit.org/show_bug.cgi?id=188891
        rdar://problem/42344352

        Reviewed by Simon Fraser.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::rootBackgroundColorOrTransparencyChanged):
        Don't return early when m_layerForOverhangAreas is null to avoid skipping
        setRootLayerConfigurationNeedsUpdate() and scheduleCompositingLayerUpdate().

2018-12-19  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Add stubs for WebGPUPipelineLayout/Descriptor and device::createPipelineLayout
        https://bugs.webkit.org/show_bug.cgi?id=192843
        <rdar://problem/46820395>

        Reviewed by Myles Maxfield.

        Test: webgpu/pipeline-layouts.html

        Implement the emtpy WebGPUPipelineLayout interface, and enable creation via WebGPUDevice::createPipelineLayout:
        * Modules/webgpu/WebGPUBindGroupLayout.cpp:
        (WebCore::WebGPUBindGroupLayout::WebGPUBindGroupLayout):
        * Modules/webgpu/WebGPUBindGroupLayout.h:
        (WebCore::WebGPUBindGroupLayout::bindGroupLayout const): Added getter.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createPipelineLayout const): Added.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl: Enable createPipelineLayout.
        * Modules/webgpu/WebGPUPipelineLayout.cpp: Added.
        (WebCore::WebGPUPipelineLayout::create):
        (WebCore::WebGPUPipelineLayout::WebGPUPipelineLayout):
        * Modules/webgpu/WebGPUPipelineLayout.h: Added.
        * Modules/webgpu/WebGPUPipelineLayout.idl: Added.
        * Modules/webgpu/WebGPUPipelineLayoutDescriptor.h: Added.
        * Modules/webgpu/WebGPUPipelineLayoutDescriptor.idl: Added.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::createPipelineLayout const): Added.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/GPUPipelineLayout.cpp: Added.
        (WebCore::GPUPipelineLayout::create):
        (WebCore::GPUPipelineLayout::GPUPipelineLayout):
        * platform/graphics/gpu/GPUPipelineLayout.h: Added.
        * platform/graphics/gpu/GPUPipelineLayoutDescriptor.h: Added.

        Add files and symbols to project:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Add missing include:
        * Modules/webgpu/WebGPUQueue.h:

2018-12-18  Ryosuke Niwa  <rniwa@webkit.org>

        SVGUseElement::findTarget should return nullptr when there is a cycle
        https://bugs.webkit.org/show_bug.cgi?id=192840

        Reviewed by Tim Horton.

        r233366 added an early return to updateShadowTree() when there is a cycle between an use element and its target.
        Consolidate this cycle detection code with the one in SVGUseElement::findTarget which detected cycles when
        the SVG use element itself had a corresponding element.

        No new tests since there should be no behavioral change.

        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::updateShadowTree):
        (WebCore::SVGUseElement::findTarget const):

2018-12-19  Myles C. Maxfield  <mmaxfield@apple.com>

        [WHLSL] Add a handwritten lexer
        https://bugs.webkit.org/show_bug.cgi?id=192294

        Reviewed by Jon Lee.

        This is infrastructure necessary for https://bugs.webkit.org/show_bug.cgi?id=192355. The
        implementation matches the lexing rules in the spec (specifically, the rules that start
        with an uppercase letter). The spec is at
        https://github.com/gpuweb/WHLSL/blob/master/Spec/WHLSL.g4.

        This patch also modifies the lexer according to https://github.com/gpuweb/WHLSL/pull/283.

        No new tests because the lexer isn't hooked up yet; there are tests in the parser,
        once that gets committed.

        * Modules/webgpu/WHLSL/WHLSLLexer.cpp: Added.
        (WebCore::WHLSL::Lexer::Token::typeName):
        (WebCore::WHLSL::Lexer::recognizeKeyword):
        (WebCore::WHLSL::Lexer::consumeTokenFromStream):
        (WebCore::WHLSL::Lexer::skipWhitespaceAndComments):
        (WebCore::WHLSL::isWhitespace):
        (WebCore::WHLSL::isNewline):
        (WebCore::WHLSL::Lexer::skipWhitespace):
        (WebCore::WHLSL::Lexer::skipLineComment):
        (WebCore::WHLSL::Lexer::skipLongComment):
        (WebCore::WHLSL::Lexer::coreDecimalIntLiteral const):
        (WebCore::WHLSL::Lexer::decimalIntLiteral const):
        (WebCore::WHLSL::Lexer::decimalUintLiteral const):
        (WebCore::WHLSL::isHexadecimalCharacter):
        (WebCore::WHLSL::Lexer::coreHexadecimalIntLiteral const):
        (WebCore::WHLSL::Lexer::hexadecimalIntLiteral const):
        (WebCore::WHLSL::Lexer::hexadecimalUintLiteral const):
        (WebCore::WHLSL::Lexer::intLiteral const):
        (WebCore::WHLSL::Lexer::uintLiteral const):
        (WebCore::WHLSL::Lexer::digit const):
        (WebCore::WHLSL::Lexer::digitStar const):
        (WebCore::WHLSL::Lexer::character const):
        (WebCore::WHLSL::Lexer::coreFloatLiteralType1 const):
        (WebCore::WHLSL::Lexer::coreFloatLiteral const):
        (WebCore::WHLSL::Lexer::floatLiteral const):
        (WebCore::WHLSL::Lexer::validIdentifier const):
        (WebCore::WHLSL::Lexer::identifier const):
        (WebCore::WHLSL::Lexer::operatorName const):
        * Modules/webgpu/WHLSL/WHLSLLexer.h: Added.
        (WebCore::WHLSL::Lexer::Lexer):
        (WebCore::WHLSL::Lexer::consumeToken):
        (WebCore::WHLSL::Lexer::unconsumeToken):
        (WebCore::WHLSL::Lexer::state const):
        (WebCore::WHLSL::Lexer::setState):
        (WebCore::WHLSL::Lexer::isFullyConsumed const):
        (WebCore::WHLSL::Lexer::errorString):
        (WebCore::WHLSL::Lexer::string const):
        (WebCore::WHLSL::Lexer::anyCharacter const):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-12-18  Simon Fraser  <simon.fraser@apple.com>

        Web Inspector: Timelines: correctly label Intersection Observer callbacks
        https://bugs.webkit.org/show_bug.cgi?id=192669
        <rdar://problem/46702490>

        Reviewed by Joseph Pecoraro.

        Add InspectorInstrumentation::willFireObserverCallback() and use it to wrap calls
        to Intersection Observer, Performance Observer and Mutation Observer callbacks so 
        that they get correctly labeled in the Inspector timeline.

        * dom/MutationObserver.cpp:
        (WebCore::MutationObserver::deliver):
        * en.lproj/Localizable.strings:
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::willFireObserverCallbackImpl):
        (WebCore::InspectorInstrumentation::didFireObserverCallbackImpl):
        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::willFireObserverCallback):
        (WebCore::InspectorInstrumentation::didFireObserverCallback):
        * inspector/TimelineRecordFactory.cpp:
        (WebCore::TimelineRecordFactory::createObserverCallbackData):
        * inspector/TimelineRecordFactory.h:
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::willFireObserverCallback):
        (WebCore::InspectorTimelineAgent::didFireObserverCallback):
        (WebCore::toProtocol):
        * inspector/agents/InspectorTimelineAgent.h:
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::notify):
        * page/PerformanceObserver.cpp:
        (WebCore::PerformanceObserver::deliver):

2018-12-19  Claudio Saavedra  <csaavedra@igalia.com>

        ContentExtensions: DFANode.cpp:66:44: error: narrowing conversion of '-1' from 'int' to 'char' inside { }
        https://bugs.webkit.org/show_bug.cgi?id=192854

        Reviewed by Alex Christensen.

        * contentextensions/DFANode.h: Define CharRange's chars as signed

2018-12-19  Youenn Fablet  <youenn@apple.com>

        Remove RTCRtpTransceiver.setDirection
        https://bugs.webkit.org/show_bug.cgi?id=192869

        Reviewed by Alex Christensen.

        Covered by rebased test.

        * Modules/mediastream/RTCRtpTransceiver.idl:

2018-12-19  Jer Noble  <jer.noble@apple.com>

        Force synchronous decode in WebCoreDecompressionSession::decodeSampleSync()
        https://bugs.webkit.org/show_bug.cgi?id=192856
        <rdar://problem/46843245>

        Reviewed by Alex Christensen.

        Some decoders exposed through VideoToolbox will decode asynchronously even when 
        kVTDecodeInfo_Asynchronous is not set. Force synchronous behavior with a Semaphore.

        * platform/graphics/cocoa/WebCoreDecompressionSession.mm:
        (WebCore::WebCoreDecompressionSession::decodeSampleSync):

2018-12-19  Megan Gardner  <megan_gardner@apple.com>

        Allow clients to set the navigator platform
        https://bugs.webkit.org/show_bug.cgi?id=192735

        Reviewed by Tim Horton.

        Expanded TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm.

        Lots of piping to allow the setting of a custom navigator platform.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setCustomNavigatorPlatform):
        (WebCore::DocumentLoader::customNavigatorPlatform const):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::navigatorPlatform const):
        * loader/FrameLoader.h:
        * page/Navigator.cpp:
        (WebCore::Navigator::platform const):
        * page/Navigator.h:
        * page/NavigatorBase.cpp:
        (WebCore::NavigatorBase::platform const):
        (WebCore::NavigatorBase::platform): Deleted.
        * page/NavigatorBase.h:

2018-12-19  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r239347.

        Caused the leaks bot to hit an exception and the new test
        crashes on certain configurations.

        Reverted changeset:

        "Synchronous media query evaluation could destroy current
        Frame/FrameView."
        https://bugs.webkit.org/show_bug.cgi?id=192781
        https://trac.webkit.org/changeset/239347

2018-12-19  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r239358.

        Revision caused imported/w3c/web-platform-tests/IndexedDB/ to
        crash on Debug bots

        Reverted changeset:

        "Clean up IndexedDB files between tests"
        https://bugs.webkit.org/show_bug.cgi?id=192796
        https://trac.webkit.org/changeset/239358

2018-12-19  Don Olmstead  <don.olmstead@sony.com>

        Sync some include directories in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192819

        Reviewed by Michael Catanzaro.

        Added missing include directories around features that have only been enabled on
        Apple ports. Removes obsolete directories from list and moves harfbuzz directories
        into the freetype cmake file.

        * CMakeLists.txt:
        * platform/FreeType.cmake:

2018-12-19  Alicia Boya García  <aboya@igalia.com>

        [MSE] Remove unused method: stopAskingForMoreSamples()
        https://bugs.webkit.org/show_bug.cgi?id=192754

        Reviewed by Xabier Rodriguez-Calvar.

        The stopAskingForMoreSamples() method from SourceBufferPrivate is not
        being used by anyone. SourceBuffer is not calling it and no
        SourceBufferPrivate is implementing it. Let's remove that noise.

        * platform/graphics/SourceBufferPrivate.h:
        (WebCore::SourceBufferPrivate::setActive):
        (WebCore::SourceBufferPrivate::stopAskingForMoreSamples): Deleted.
        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
        (WebCore::SourceBufferPrivateGStreamer::stopAskingForMoreSamples): Deleted.
        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:

2018-12-19  Alicia Boya García  <aboya@igalia.com>

        [MSE] Remove dead code: sourceBufferPrivateSeekToTime()
        https://bugs.webkit.org/show_bug.cgi?id=192827

        Reviewed by Xabier Rodriguez-Calvar.

        This patch makes two dead code removal changes in
        SourceBufferPrivateClient:

        First, sourceBufferPrivateFastSeekTimeForMediaTime() is made pure
        virtual in SourceBufferPrivateClient. Since SourceBufferPrivateClient
        is only inherited by SourceBuffer, it makes no sense to have default
        implementations there (they will never be used), moreso it being a
        client interface.

        Second, sourceBufferPrivateSeekToTime() is removed entirely. It used
        to had an empty implementation, which SourceBuffer did not overwrite,
        therefore making any calls to it useless.

        All calls to sourceBufferPrivateSeekToTime() have been removed:

        SourceBufferPrivateAVFObjC::seekToTime(), which was also dead code
        itself, used to call this method. This patch deletes it completely.

        MockSourceBufferPrivate::seekToTime(), which only called this empty
        method, has also been removed along with its only usage in
        MockMediaSourcePrivate::seekToTime().

        * platform/graphics/SourceBufferPrivateClient.h:
        (WebCore::SourceBufferPrivateClient::sourceBufferPrivateFastSeekTimeForMediaTime): Deleted.
        (WebCore::SourceBufferPrivateClient::sourceBufferPrivateSeekToTime): Deleted.
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::seekToTime): Deleted.
        * platform/mock/mediasource/MockMediaSourcePrivate.cpp:
        (WebCore::MockMediaSourcePrivate::seekToTime):
        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
        (WebCore::MockSourceBufferPrivate::seekToTime): Deleted.
        * platform/mock/mediasource/MockSourceBufferPrivate.h:

2018-12-19  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [EME] MediaKeySystemConfiguration distinctiveIdentifier and persistentState should default to optional
        https://bugs.webkit.org/show_bug.cgi?id=192815

        Reviewed by Jer Noble.

        https://www.w3.org/TR/encrypted-media/#dom-mediakeysystemconfiguration
        says that distinctiveIdentifier and persistentState default to
        optional. Our implementation does not define a default leaving it
        to the first option of the enum, which currently is Required.

        * platform/encryptedmedia/CDMKeySystemConfiguration.h:

2018-12-19  Rob Buis  <rbuis@igalia.com>

        Merge parseAccessControlExposeHeadersAllowList into parseAccessControlAllowList
        https://bugs.webkit.org/show_bug.cgi?id=192288

        Reviewed by Frédéric Wang.

        Prefer return value to out parameter for parseAccessControlAllowList.

        * loader/CrossOriginPreflightResultCache.cpp:
        (WebCore::CrossOriginPreflightResultCacheItem::parse):
        * platform/network/HTTPParsers.h:
        (WebCore::parseAccessControlAllowList):
        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::filter):
        (WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):

2018-12-18  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r235165): [GTK][WPE] Garbled rendering on GitLab
        https://bugs.webkit.org/show_bug.cgi?id=192230

        Reviewed by Carlos Garcia Campos.

        Single tile can after r235165 be assigned multiple content updates
        without a commit occurring between each update, whereas before these
        commits were done for each update.

        To avoid repeating updates for a single tile purging information about
        the previous update, these updates are now accumulated inside a Vector
        and then iterated over during the commit phase.

        * platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp:
        (WebCore::CoordinatedBackingStoreTile::addUpdate):
        (WebCore::CoordinatedBackingStoreTile::swapBuffers):
        (WebCore::CoordinatedBackingStore::updateTile):
        (WebCore::CoordinatedBackingStoreTile::setBackBuffer): Deleted.
        * platform/graphics/texmap/coordinated/CoordinatedBackingStore.h:
        (WebCore::CoordinatedBackingStoreTile::scale const):

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] A copied text selection is pasted as a web archive attachment in the entry view in Messages
        https://bugs.webkit.org/show_bug.cgi?id=192842
        <rdar://problem/46823586>

        Reviewed by Tim Horton.

        Temporarily revert a behavior change introduced by r238661, where we now add "com.apple.webarchive" as a
        registered UTI when dragging or copying a text selection. This broke the Messages app on iOS, which currently
        inserts a copied or dragged text selection from WebKit-based views as a web archive file attachment. A fix for
        this is internally tracked in <rdar://problem/46830277>.

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::write):

2018-12-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, add a missing UNUSED_PARAM()

        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::getPrivateImpl):

2018-12-18  Justin Michaud  <justin_michaud@apple.com>

        Update CSS Properties and Values API to use new cycle fallback behaviour
        https://bugs.webkit.org/show_bug.cgi?id=192800

        Reviewed by Antti Koivisto.

        Make CSS variables that are registered and involved in a cycle be treated as invalid. This also fixes a crash in the
        wpt tests where relative units and calc() in a registered property's initial value would break things instead of failing. 

        * css/CSSCustomPropertyValue.h:
        * css/CSSVariableReferenceValue.cpp:
        (WebCore::resolveVariableReference):
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::applyCascadedCustomProperty):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseTypedCustomPropertyValue):

2018-12-18  Daniel Bates  <dabates@apple.com>

        Wrong value for key property in keydown and keyup events generated holding Control key
        https://bugs.webkit.org/show_bug.cgi?id=192788
        <rdar://problem/46795214>

        Reviewed by Wenson Hsieh.

        Similar to what we do on Mac, compute the DOM key property from the characters ignoring
        modifier keys input string when the Control key is held down.

        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::keyForKeyEvent):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::keyForKeyEvent):

2018-12-18  Sihui Liu  <sihui_liu@apple.com>

        Clean up IndexedDB files between tests
        https://bugs.webkit.org/show_bug.cgi?id=192796

        Reviewed by Geoffrey Garen.

        We should clean up the IndexedDB files between tests to make sure each test is independent of others.

        This patch also fixes some issues in IDB.

        Covered by existing tests.

        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
        We should shut down all open databases instead of databases from open database connections before deleting 
        files, because database starts accessing files before connection to database is established.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
        We should shutdown database after tasks in queue are completed, because tasks have pointer of UniqueIDBDatabase 
        and UniqueIDBDatabase can be destructed after shutdown.

        (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
        didDeleteBackingStore can be posted to main thread after immediateCloseForUserDelete, and timer should not be 
        invoked during the hard close.

        (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
        Tasks like didOpenBackingStore could be posted from database thread to main thread after 
        immediateCloseForUserDelete, but we know the backing store will be deleted soon, so no need to handle any 
        database operation. 

        (WebCore::IDBServer::UniqueIDBDatabase::performPrefetchCursor):
        performPrefetchCursor needs to be aware of whether UniqueIDBDatabase is being closed, so that it will not access 
        m_backingStore when m_backingStore may already be deleted. 

        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        immediateCloseForUserDelete does not handle transactions that are in the process of commit or abort. 
        m_objectStoreTransactionCounts and m_objectStoreWriteTransactions may be used by those transactions in 
        transactionCompleted, so they do not need to be cleared here.

2018-12-18  Myles C. Maxfield  <mmaxfield@apple.com>

        Thick overlines and line-throughs grow in the wrong direction
        https://bugs.webkit.org/show_bug.cgi?id=192264

        Reviewed by Dean Jackson.

        Overlines should grow upward, and line-throughs should stay centered.

        Test: fast/css3-text/css3-text-decoration/text-decoration-thicknes-overline-grow-direction.html

        * rendering/TextDecorationPainter.cpp:
        (WebCore::TextDecorationPainter::paintTextDecoration):
        * style/InlineTextBoxStyle.cpp:
        (WebCore::visualOverflowForDecorations):

2018-12-18  Ryosuke Niwa  <rniwa@webkit.org>

        Some iOS app crash in FrameLoader::checkCompleted
        https://bugs.webkit.org/show_bug.cgi?id=192804
        <rdar://problem/44240573>

        Reviewed by Tim Horton.

        It's possible for the main thread to call into WebCore / UIWebView selectors while Web thread
        is trying to send a delegate message. Disable the release assertion while this is happening
        so that iOS app would not crash.

        Unfortunately no new test as there is no way to easily test UIWebView in iOS,
        and this requires a race between the web thread & the main thread.

        * dom/ScriptDisallowedScope.h:
        (WebCore::ScriptDisallowedScope::InMainThread::isScriptAllowed):
        * platform/ios/wak/WebCoreThread.h:
        * platform/ios/wak/WebCoreThread.mm:
        (WebThreadDelegateMessageScope::WebThreadDelegateMessageScope):
        (WebThreadDelegateMessageScope::~WebThreadDelegateMessageScope):
        (SendDelegateMessage):

2018-12-18  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Use const reference for MediaTime parameter to prevent object copy
        <https://webkit.org/b/192814>

        Reviewed by Mark Lam.

        * bindings/js/JSDOMConvertNumbers.h:
        (WebCore::JSConverter<IDLUnrestrictedDouble>::convert):

2018-12-18  Justin Fan  <justin_fan@apple.com>

        [WebGPU] BindGroupLayout and Device::createBindGroupLayout
        https://bugs.webkit.org/show_bug.cgi?id=192817

        Reviewed by Dean Jackson.

        Update bind-group-layouts to test new functionality.

        Implement the emtpy WebGPUBindGroupLayout interface, and enable creation via WebGPUDevice::createBindGroupLayout:
        * Modules/webgpu/WebGPUBindGroupLayout.cpp: Added.
        (WebCore::WebGPUBindGroupLayout::create):
        (WebCore::WebGPUBindGroupLayout::WebGPUBindGroupLayout):
        * Modules/webgpu/WebGPUBindGroupLayout.h: Added.
        * Modules/webgpu/WebGPUBindGroupLayout.idl: Added. Empty interface for now.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBindGroupLayout const): Added.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * platform/graphics/gpu/GPUBindGroupLayout.cpp: Added.
        (WebCore::GPUBindGroupLayout::tryCreate):
        (WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
        * platform/graphics/gpu/GPUBindGroupLayout.h: Added.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::tryCreateBindGroupLayout const): Added.
        * platform/graphics/gpu/GPUDevice.h:

        Add files and symbols to project:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Missing includes that were previously provided via UnifiedSources:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
        * platform/sql/SQLiteFileSystem.h:

2018-12-18  Youenn Fablet  <youenn@apple.com>

        Make ReadableStreamXX constructs use PrivateIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=192771

        Reviewed by Chris Dumez.

        PrivateIdentifier is a better name for making sure a given construct does not show up in the global scope.
        Covered by existing binding tests.

        * Modules/streams/ReadableByteStreamController.idl:
        * Modules/streams/ReadableStreamBYOBReader.idl:
        * Modules/streams/ReadableStreamBYOBRequest.idl:
        * Modules/streams/ReadableStreamDefaultController.idl:
        * Modules/streams/ReadableStreamDefaultReader.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (NeedsConstructorProperty):
        * bindings/scripts/preprocess-idls.pl:
        (shouldExposeInterface):
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: Removed.
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h: Removed.
        * bindings/scripts/test/TestCustomConstructor.idl: Removed.

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        Synchronous media query evaluation could destroy current Frame/FrameView.
        https://bugs.webkit.org/show_bug.cgi?id=192781
        <rdar://problem/34416793>

        Reviewed by Chris Dumez.

        Protect Frame and FrameView when coming back from printing and check if the current Frame/FrameView/FrameLoader objects are still valid.

        Test: printing/print-with-media-query-destory.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::finishedLoading):
        * page/Frame.cpp:
        (WebCore::Frame::setPrinting):
        * page/FrameView.cpp:
        (WebCore::FrameView::forceLayoutForPagination):

2018-12-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: m3u8 content not shown, it should be text
        https://bugs.webkit.org/show_bug.cgi?id=192731
        <rdar://problem/46747728>

        Reviewed by Devin Rousso.

        * inspector/NetworkResourcesData.cpp:
        (WebCore::NetworkResourcesData::setResourceContent):
        Don't clobber data if setting empty content on a resource that has content.

        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::shouldTreatAsText):
        Additional non-"text/" mime types that can be treated as text.

        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::isTextMediaPlaylistMIMEType):
        * platform/MIMETypeRegistry.h:
        Detect media playlist mime types that are text (m3u8/m3u).

2018-12-18  Daniel Bates  <dabates@apple.com>

        Remove <meta http-equiv=set-cookie> support
        https://bugs.webkit.org/show_bug.cgi?id=185077
        <rdar://problem/41791397>

        Reviewed by Brent Fulgham.

        Remove support for the HTTP-equiv. pragma Set-Cookie to set a cookie. In <https://github.com/whatwg/html/pull/3649>
        the HTML living standard was ammended to define this pragma as no-op. Chrome and Edge have also
        removed support for this pragma and Firefox has an open bug to remove it.

        * dom/Document.cpp:
        (WebCore::Document::processHttpEquiv): Emit a message that the Set-Cookie pragma is obsolete and
        was ignored instead of setting the cookie.
        * html/parser/XSSAuditor.cpp:
        (WebCore::isDangerousHTTPEquiv): We no longer need to consider the Set-Cookie pragma
        as dangerous and erase attribute http-equiv when we find it because we no longer honor
        this pragma.

2018-12-18  Justin Michaud  <justin_michaud@apple.com>

        CSS Typed OM should expose attributeStyleMap
        https://bugs.webkit.org/show_bug.cgi?id=192671

        Reviewed by Ryosuke Niwa.

        Exposes element.attributeStyleMap, adds a stub for the StylePropertyMap class, and updates the existing
        TypedOMCSSImageValue to not require a RenderObject so that it can still work inside attributeStyleMap.

        Test: css-typedom/attributeStyleMap.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * css/ElementCSSInlineStyle.idl:
        * css/typedom/StylePropertyMap.h: Copied from Source/WebCore/css/typedom/StylePropertyMapReadOnly.h.
        * css/typedom/StylePropertyMap.idl: Copied from Source/WebCore/css/typedom/StylePropertyMapReadOnly.idl.
        * css/typedom/StylePropertyMapReadOnly.cpp: Added.
        (WebCore::StylePropertyMapReadOnly::reifyValue):
        (WebCore::StylePropertyMapReadOnly::customPropertyValueOrDefault):
        * css/typedom/StylePropertyMapReadOnly.h:
        (WebCore::StylePropertyMapReadOnly::create): Deleted.
        (WebCore::StylePropertyMapReadOnly::get const): Deleted.
        (WebCore::StylePropertyMapReadOnly::StylePropertyMapReadOnly): Deleted.
        * css/typedom/StylePropertyMapReadOnly.idl:
        * css/typedom/TypedOMCSSImageValue.h:
        * dom/Element.cpp:
        (WebCore::Element::attributeStyleMap):
        (WebCore::Element::setAttributeStyleMap):
        * dom/Element.h:
        * dom/ElementRareData.cpp:
        * dom/ElementRareData.h:
        (WebCore::ElementRareData::attributeStyleMap):
        (WebCore::ElementRareData::setAttributeStyleMap):
        * dom/StyledElement.cpp:
        (WebCore::StyledElement::ensureAttributeStyleMap):
        * dom/StyledElement.h:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::size):
        (WebCore::CanvasRenderingContext2DBase::drawImage):
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::extractComputedProperty):
        (WebCore::CustomPaintImage::doCustomPaint):

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Calling setValue() while typing should invoke -textDidChangeInTextField in the injected bundle
        https://bugs.webkit.org/show_bug.cgi?id=192785
        <rdar://problem/45321184>

        Reviewed by Tim Horton.

        Makes a minor adjustment in `TextFieldInputType::setValue` to consider value changes as "user editing", if we're
        currently processing a keystroke from the user. This is useful for certain private clients, such as Safari, that
        need to know when the user is typing in a text form control, but the page is preventing default text insertion
        behavior and instead updating values programmatically.

        Test: fast/forms/call-text-did-change-in-text-field-when-typing.html

        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::setValue):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Implement marginBeforeCollapsesWithParentMarginAfter
        https://bugs.webkit.org/show_bug.cgi?id=192801

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Implement marginAfterCollapsesWithSiblingMarginBeforeWithClearance
        https://bugs.webkit.org/show_bug.cgi?id=192799

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Implement marginAfterCollapsesWithParentMarginBefore
        https://bugs.webkit.org/show_bug.cgi?id=192798

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginAfterFromLastChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfter):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Expand marginsCollapseThrough collapsing logic
        https://bugs.webkit.org/show_bug.cgi?id=192794

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginsCollapseThrough):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfter):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Expand marginAfterCollapsesWithNextSibling and marginBeforeCollapsesWithPreviousSibling collapsing logic
        https://bugs.webkit.org/show_bug.cgi?id=192791

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithPreviousSibling):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithNextSibling):

2018-12-18  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Expand marginAfterCollapsesWithParentMarginAfter and marginBeforeCollapsesWithParentMarginBefore collapsing logic
        https://bugs.webkit.org/show_bug.cgi?id=192787

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::hasClearance):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):

2018-12-17  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix compilation warnings WebCore/platform/graphics directory
        https://bugs.webkit.org/show_bug.cgi?id=192752

        Reviewed by Don Olmstead.

        No new tests, no behavior changes.

        * platform/graphics/win/DIBPixelData.cpp:
        Enclosed bitmapType and bitmapPixelsPerMeter with #ifndef NDEBUG.
        * platform/graphics/win/FontPlatformDataWin.cpp:
        (WebCore::FontPlatformData::openTypeTable const): Use ASSERT_UNUSED instead of ASSERT.
        * platform/graphics/win/GraphicsContextWin.cpp: Removed unused variable 'deg2rad'.
        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
        Removed unused soft links MFCreateSampleGrabberSinkActivate, MFCreateMemoryBuffer and MFCreateSample.
        (WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
        Reorder the initializer list.
        (WebCore::MediaPlayerPrivateMediaFoundation::seek): Use ASSERT_UNUSED instead of ASSERT.
        (WebCore::MediaPlayerPrivateMediaFoundation::setAllChannelVolumes): Ditto.
        (WebCore::MediaPlayerPrivateMediaFoundation::createSession): Ditto.
        (WebCore::MediaPlayerPrivateMediaFoundation::endSession): Ditto.
        (WebCore::MediaPlayerPrivateMediaFoundation::onCreatedMediaSource): Ditto.
        (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame): Added default case.
        * platform/graphics/win/SimpleFontDataCairoWin.cpp:
        (WebCore::Font::platformBoundsForGlyph const): Use inner braces to initialize subobjects of MAT2.
        * platform/graphics/win/SimpleFontDataWin.cpp: Removed unused 'cSmallCapsFontSizeMultiplier'.
        (WebCore::Font::initGDIFont): Use inner braces to initialize subobjects of MAT2.
        (WebCore::Font::boundsForGDIGlyph const): Ditto.
        (WebCore::Font::widthForGDIGlyph const): Ditto.
        * platform/graphics/win/UniscribeController.cpp:
        (WebCore::UniscribeController::UniscribeController):
        Reorder the initializer list.
        (WebCore::UniscribeController::offsetForPosition): Use parentheses to combine && and ||.
        (WebCore::UniscribeController::shapeAndPlaceItem): Removed unused 'glyphCount'.

2018-12-17  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] A stream's first video frame should be rendered
        https://bugs.webkit.org/show_bug.cgi?id=192629
        <rdar://problem/46664353>

        Reviewed by Youenn Fablet.

        Test: fast/mediastream/media-stream-renders-first-frame.html

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentDisplayMode const):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayMode):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentReadyState):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::characteristicsChanged):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack):
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::paintCurrentFrameInContext):
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::size const):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::processNewFrame):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):

2018-12-17  Justin Michaud  <justin_michaud@apple.com>

        Bindings generator should support Conditional= along with CachedAttribute
        https://bugs.webkit.org/show_bug.cgi?id=192721

        Reviewed by Ryosuke Niwa.

        Fix a bug where specifying both attributes causes compilation errors because the compile-time
        condition is not included in the derived code.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::jsTestObjCachedAttribute3Getter):
        (WebCore::jsTestObjCachedAttribute3):
        (WebCore::JSTestObj::visitChildren):
        * bindings/scripts/test/JS/JSTestObj.h:
        * bindings/scripts/test/TestObj.idl:

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary object copy in CPUMonitor::setCPULimit()
        <https://webkit.org/b/192707>
        <rdar://problem/46734926>

        Reviewed by Daniel Bates.

        * platform/CPUMonitor.cpp:
        (WebCore::CPUMonitor::setCPULimit):
        * platform/CPUMonitor.h:
        (WebCore::CPUMonitor::setCPULimit):
        - Change parameter to const reference to fix unnecessary copies.

2018-12-17  Ryosuke Niwa  <rniwa@webkit.org>

        offsetLeft and offsetParent should adjust across shadow boundaries
        https://bugs.webkit.org/show_bug.cgi?id=157437
        <rdar://problem/26154021>

        Reviewed by Simon Fraser.

        Update the WebKit's treatment of shadow boundaries in offsetLeft, offsetTop, and offsetParent to match
        the latest discussion in CSS WG. See https://github.com/w3c/webcomponents/issues/497
        and https://github.com/w3c/webcomponents/issues/763

        The latest consensus is to use the retargeting algorithm (https://dom.spec.whatwg.org/#retarget).
        In practice, this would mean that we need to keep walking up the offset parent ancestors until we find
        the one which is in the same tree as a shadow-inclusive ancestor of the context object.

        For example, if a node (the context object of offsetTop, offsetLeft, offsetParent) was assigned to a slot
        inside a shadow tree and its offset parent was in the shadow tree, we need to walk up to its offset parent,
        then its offset parent, etc... until we find the offset parent in the same tree as the context object.

        Note it's possible that the context object is inside a shadow tree which does not have its own offset parent.
        (e.g. all elements have position: static) For this reason, we need to consider not just offset parent in
        the same tree as the context object but as well as any offset parent which is in its ancestor trees.

        Test: fast/shadow-dom/offsetParent-across-shadow-boundaries.html

        * dom/Element.cpp:
        (WebCore::adjustOffsetForZoomAndSubpixelLayout): Extracted to share code between offsetLeft and offsetTop.
        (WebCore::collectAncestorTreeScopeAsHashSet): Added.
        (WebCore::Element::offsetLeftForBindings): Added. Sums up offsetLeft's until it finds the first offset parent
        which is a shadow-including ancestor (https://dom.spec.whatwg.org/#concept-shadow-including-ancestor).
        (WebCore::Element::offsetLeft): Now uses adjustOffsetForZoomAndSubpixelLayout.
        (WebCore::Element::offsetTopForBindings): Added. Like offsetLeftForBindings, this function sums up offsetTop's
        until it finds the first offset parent which is a shadow-including ancestor.
        (WebCore::Element::offsetTop): Now uses adjustOffsetForZoomAndSubpixelLayout.
        (WebCore::Element::offsetParentForBindings): Renamed from bindingsOffsetParent to be consistent with other
        functions meant to be used for bindings code.
        * dom/Element.h:
        * html/HTMLElement.idl:

2018-12-17  Simon Fraser  <simon.fraser@apple.com>

        Don't use more expensive layer backing store formats when subpixel text antialiasing is not enabled
        https://bugs.webkit.org/show_bug.cgi?id=192780
        rdar://problem/43394387

        Reviewed by Tim Horton.
        
        macOS Mojave disabled text subpixel antialiasing by default, so we no longer need to use the
        memory-hungry "linear glyph mask" CALayer backing store formats for non-opaque with text in them.
        
        Add FontCascade::isSubpixelAntialiasingAvailable() which reports whether subpixel antialiasing is available,
        and consult it when making decisions that affect layer backing store format.

        Tested by new results for existing tests.

        * platform/graphics/FontCascade.cpp:
        (WebCore::FontCascade::isSubpixelAntialiasingAvailable):
        * platform/graphics/FontCascade.h:
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::FontCascade::isSubpixelAntialiasingAvailable): CGFontRenderingGetFontSmoothingDisabled() isn't super cheap, so fetch
        it once.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateAfterDescendants):
        * testing/Internals.cpp:
        (WebCore::Internals::setFontSmoothingEnabled): Remove a WebCore::

2018-12-17  Daniel Bates  <dabates@apple.com>

        Make DocumentMarker::allMarkers() constexpr
        https://bugs.webkit.org/show_bug.cgi?id=192634

        Reviewed by Simon Fraser.

        The result of DocumentMarker::allMarkers() can be computed at compile time. We should annotate
        it constexpr to do just that.

        * dom/DocumentMarker.h:
        (WebCore::DocumentMarker::allMarkers):

2018-12-17  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Implement WebGPUBindGroupLayoutDescriptor and its supporting dictionaries
        https://bugs.webkit.org/show_bug.cgi?id=192726

        Reviewed by Myles C. Maxfield.

        Test: webgpu/bind-group-layouts.html
        Implement the WebGPUBindGroupLayoutDescriptor struct and its sub-structs:
        * Modules/streams/WebGPUBindGroupLayoutDescriptor.h: Added.
        * Modules/streams/WebGPUBindGroupLayoutDescriptor.idl: Added.
        * Modules/webgpu/WebGPUBindGroupLayoutBinding.h: Added.
        * Modules/webgpu/WebGPUBindGroupLayoutBinding.idl: Added.
        * Modules/webgpu/WebGPUShaderStageBit.h: Added.
        * Modules/webgpu/WebGPUShaderStageBit.idl: Added.
        * platform/graphics/gpu/GPUBindGroupLayoutBinding.h: Added.
        * platform/graphics/gpu/GPUBindGroupLayoutDescriptor.h: Added.

        Add the new symbols and files to the project:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Small FIXME update for later:
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setVertexBuffers):

2018-12-17  Zalan Bujtas  <zalan@apple.com>

        Unreviewed build fix.

        * page/ios/FrameIOS.mm:
        (WebCore::Frame::interpretationsForCurrentRoot const):

2018-12-17  Zalan Bujtas  <zalan@apple.com>

        Reproducible ASSERTion failure when toggling layer borders with find-in-page up
        https://bugs.webkit.org/show_bug.cgi?id=192762
        <rdar://problem/46676873>

        Reviewed by Simon Fraser.

        DocumentMarkerController::markersFor() should take a reference instead of a Node*.

        Test: editing/document-marker-null-check.html

        * dom/DocumentMarkerController.cpp:
        (DocumentMarkerController::hasMarkers):
        * dom/DocumentMarkerController.h:
        * editing/AlternativeTextController.cpp:
        (WebCore::AlternativeTextController::respondToChangedSelection):
        * editing/Editor.cpp:
        (WebCore::Editor::selectionStartHasMarkerFor const):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers const):
        * rendering/RenderReplaced.cpp:
        (WebCore::RenderReplaced::paint):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::draggedContentRangesBetweenOffsets const):
        * rendering/SimpleLineLayout.cpp:
        (WebCore::SimpleLineLayout::canUseForWithReason):
        * testing/Internals.cpp:
        (WebCore::Internals::markerCountForNode):

2018-12-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239265 and r239274.
        https://bugs.webkit.org/show_bug.cgi?id=192765

        unorm_normalize is deprecated, and broke an internal build
        (Requested by Truitt on #webkit).

        Reverted changesets:

        "[GTK][WPE] Need a function to convert internal URI to display
        ("pretty") URI"
        https://bugs.webkit.org/show_bug.cgi?id=174816
        https://trac.webkit.org/changeset/239265

        "Fix the Apple Internal Mac build with a newer SDK"
        https://trac.webkit.org/changeset/239274

2018-12-17  Daniel Bates  <dabates@apple.com>

        [iOS] Remove -[WebEvent initWithKeyEventType:...:characterSet:]
        https://bugs.webkit.org/show_bug.cgi?id=192633

        Reviewed by Wenson Hsieh.

        UIKit has long adopted the newer -[WebEvent initWithKeyEventType:] initializer that takes an
        input manager hint. We no longer need to keep the variant -[WebEvent initWithKeyEventType:...:characterSet:]
        for binary compatibility.

        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]): Deleted.

2018-12-17  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r239254.

        This broke the Windows 10 Debug build

        Reverted changeset:

        "Replace many uses of String::format with more type-safe
        alternatives"
        https://bugs.webkit.org/show_bug.cgi?id=192742
        https://trac.webkit.org/changeset/239254

2018-12-17  Antoine Quint  <graouts@apple.com>

        [Web Animations] Remove the redundant m_scheduledMicrotask from WebAnimation
        https://bugs.webkit.org/show_bug.cgi?id=192758

        Reviewed by Dean Jackson.

        We tracked whether we had a pending microtask twice so we remove the m_scheduledMicrotask flag as m_finishNotificationStepsMicrotaskPending
        gives us enough information as it is. Additionally, we remove the scheduleMicrotaskIfNeeded() and performMicrotask() functions since there is
        less bookkeeping to perform.

        No new test since there is no user-observable change.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::updateFinishedState):
        (WebCore::WebAnimation::scheduleMicrotaskIfNeeded): Deleted.
        (WebCore::WebAnimation::performMicrotask): Deleted.
        * animation/WebAnimation.h:

2018-12-17  Antoine Quint  <graouts@apple.com>

        [Web Animations] Ensure we don't update an animation's finished state twice when updating animations
        https://bugs.webkit.org/show_bug.cgi?id=192757

        Reviewed by Dean Jackson.

        When animations are udpated and DocumentTimeline::updateAnimationsAndSendEvents() is called, we used to update an animation's finished state
        twice since we'd do it once when calling tick() and once again when calling resolve() in the ensuing style invalidation. We now keep track of
        whether we've already updated an animation's finished state during animation update in the call to tick() and avoid updating in the immediate
        next call to resolve(), unless any of the timing properties have changed in the meantime.

        No new test since there is no user-observable change.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::timingDidChange):
        (WebCore::WebAnimation::tick):
        (WebCore::WebAnimation::resolve):
        * animation/WebAnimation.h:

2018-12-17  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r233268): Elements animated in from offscreen sometimes don't display
        https://bugs.webkit.org/show_bug.cgi?id=192725
        rdar://problem/46011418

        Reviewed by Antoine Quint.

        There were two problems with backing store attachment and animation.
        
        First, animations are an input into the "backing store attached" logic, so when they change
        we should set the CoverageRectChanged bit on GraphicsLayerCA.
        
        Secondly, when an ancestor has unknown animation extent, all its descendants need to
        get backing store, so we need to set childCommitState.ancestorWithTransformAnimationIntersectsCoverageRect when
        the current layer has no animation extent.

        Tests: compositing/backing/animate-into-view-with-descendant.html
               compositing/backing/animate-into-view.html

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::addAnimation):
        (WebCore::GraphicsLayerCA::removeAnimation):
        (WebCore::GraphicsLayerCA::recursiveCommitChanges):

2018-12-17  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Unify margin collapse function naming
        https://bugs.webkit.org/show_bug.cgi?id=192747

        Reviewed by Antti Koivisto.

        Rename some margin collapse getters.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBeforeFromFirstChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginAfterFromLastChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBeforeCollapsesWithPreviousSibling):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfterCollapsesWithNextSibling):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginsCollapseThrough):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfter):
        (WebCore::Layout::isMarginBeforeCollapsedWithSibling): Deleted.
        (WebCore::Layout::isMarginAfterCollapsedWithSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBeforeCollapsedWithParent): Deleted.
        (WebCore::Layout::isMarginAfterCollapsedThrough): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginAfterCollapsedWithParent): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBeforeCollapsedWithParentMarginAfter): Deleted.

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: loop variable is copied but only used as const reference in WebCore, WebKit, Tools
        <https://webkit.org/b/192751>
        <rdar://problem/46771623>

        Reviewed by Daniel Bates.

        Change loop variables to const references to avoid unnecessary
        copies.

        * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
        (WebCore::IDBServer::MemoryBackingStoreTransaction::abort):
        * Modules/indexeddb/server/MemoryObjectStore.cpp:
        (WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::maybeNotifyConnectionsOfVersionChange):
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::objectStoreIdentifiers):
        * Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
        (WebCore::IDBDatabaseInfo::IDBDatabaseInfo):
        (WebCore::IDBDatabaseInfo::loggingString const):
        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::removeSamplesFromTrackBuffer):
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::targetElementForActiveDescendant const):
        * accessibility/AccessibilityTableRow.cpp:
        (WebCore::AccessibilityTableRow::headerObject):
        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::computedNeedsForcedLayout):
        * crypto/keys/CryptoKeyRSA.cpp:
        (WebCore::CryptoKeyRSA::importJwk):
        (WebCore::CryptoKeyRSA::exportJwk const):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::OrderedNamedLinesCollector::appendLines const):
        * dom/DataTransfer.cpp:
        (WebCore::readURLsFromPasteboardAsString):
        * dom/TreeScope.cpp:
        (WebCore::TreeScope::elementsFromPoint):
        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::checkAndStoreRegion):
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::InspectorTimelineAgent::setInstruments):
        * page/Page.cpp:
        (WebCore::Page::updateIntersectionObservations):
        * page/TextIndicator.cpp:
        (WebCore::estimatedBackgroundColorForRange):
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::computeLayoutDependency):
        * platform/graphics/DisplayRefreshMonitorManager.cpp:
        (WebCore::DisplayRefreshMonitorManager::displayWasUpdated):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::moveOrCopyAnimations):
        (WebCore::GraphicsLayerCA::updateAnimations):
        (WebCore::GraphicsLayerCA::isRunningTransformAnimation const):
        * platform/graphics/mac/ImageMac.mm:
        (WebCore::BitmapImage::tiffRepresentation):
        * rendering/HitTestResult.cpp:
        (WebCore::HitTestResult::append):
        * testing/Internals.cpp:
        (WebCore::Internals::acceleratedAnimationsForElement):

2018-12-17  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
        https://bugs.webkit.org/show_bug.cgi?id=174816

        Reviewed by Michael Catanzaro.

        Tests: enabled fast/url/user-visible/.

        * testing/Internals.cpp:
        (WebCore::Internals::userVisibleString): Enable method on all platforms.

2018-12-15  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Null pointer dereference in JSC::WriteBarrierBase()
        https://bugs.webkit.org/show_bug.cgi?id=191252

        Reviewed by Keith Miller.

        * bindings/js/JSCustomElementRegistryCustom.cpp:
        (WebCore::JSCustomElementRegistry::whenDefined):
        * bindings/js/JSDOMPromiseDeferred.cpp:
        (WebCore::createDeferredPromise):
        * bindings/js/JSDOMPromiseDeferred.h:
        (WebCore::DeferredPromise::create):
        (WebCore::callPromiseFunction):
        * bindings/js/JSDOMWindowBase.cpp:
        (WebCore::JSDOMWindowBase::moduleLoaderFetch):
        (WebCore::JSDOMWindowBase::moduleLoaderImportModule):
        * bindings/js/ScriptModuleLoader.cpp:
        (WebCore::ScriptModuleLoader::fetch):
        (WebCore::rejectPromise):

2018-12-15  Darin Adler  <darin@apple.com>

        Use warning-ignoring macros more consistently and simply
        https://bugs.webkit.org/show_bug.cgi?id=192743

        Reviewed by Mark Lam.

        * bridge/objc/WebScriptObject.mm: Use IGNORE_WARNINGS_BEGIN rather than
        IGNORE_CLANG_WARNINGS_BEGIN here. There is no need to compile Objective-C++
        files like this one with non-clang compilers, and no need to worry about
        them when choosing the macro.

        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::getPublicKeyComponents): Use ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.

        * css/makeprop.pl: Use IGNORE_WARNINGS_BEGIN/END, obviating the need for
        the "unknown-pragmas" trick, which the macro should take care of.
        * css/makevalues.pl: Ditto.
        * platform/ColorData.gperf: Ditto.

        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::update): Use IGNORE_WARNINGS_BEGIN/END
        (see rationale above for Objective-C++).

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics): Use
        ALLOW_NEW_API_WITHOUT_GUARDS_BEGIN/END.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics): Ditto.

        * platform/ios/DragImageIOS.mm: Use IGNORE_WARNINGS_BEGIN/END
        (see rationale above for Objective-C++).

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewController setWebKitOverrideRouteSharingPolicy:routingContextUID:]):
        Use ALLOW_NEW_API_WITHOUT_GUARDS_BEGIN/END.

        * platform/mac/WebPlaybackControlsManager.mm: Use IGNORE_WARNINGS_BEGIN/END
        (see rationale above for Objective-C++).

        * platform/network/cocoa/ResourceResponseCocoa.mm:
        (WebCore::ResourceResponse::platformCertificateInfo const): Use
        ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.

2018-12-15  Darin Adler  <darin@apple.com>

        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

        A while back, String::format was more efficient than string concatenation,
        but that is no longer true, and we should prefer String::number, makeString,
        or concatenation with the "+" operator to String::format for new code.

        This is not as good for programmers who are fond of printf formatting
        style, and in some cases it's a little harder to read the strings
        interspersed with variables rather than a format string, but it's better
        in a few ways:

        - more efficient (I didn't measure the difference, but it's definitely
          slower to use String::Format which calls vsnprintf twice than to use
          the WTF code)
        - works in a type-safe way without a need to use a format specifier such
          as "%" PRIu64 or "%tu" making it much easier to avoid problems due to
          subtle differences between platforms
        - allows us to use StringView in some cases to sidestep the need to
          allocate temporary WTF::String objects
        - does not require converting each WTF::String to a C string, allowing
          us to remove many cases of ".utf8().data()" and similar expressions,
          eliminating the allocation of temporary WTF::CString objects

        This patch covers a batch of easiest-to-convert call sites.
        Later patches will allow us to deprecate or remove String::format.

        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): Use makeString.
        * Modules/indexeddb/shared/IDBCursorInfo.cpp:
        (WebCore::IDBCursorInfo::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBGetAllRecordsData.cpp:
        (WebCore::IDBGetAllRecordsData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBGetRecordData.cpp:
        (WebCore::IDBGetRecordData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBIndexInfo.cpp:
        (WebCore::IDBIndexInfo::loggingString const): Ditto.
        (WebCore::IDBIndexInfo::condensedLoggingString const): Ditto.
        * Modules/indexeddb/shared/IDBIterateCursorData.cpp:
        (WebCore::IDBIterateCursorData::loggingString const): Ditto.
        * Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:
        (WebCore::IDBObjectStoreInfo::condensedLoggingString const): Ditto.
        * Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
        (WebCore::IDBResourceIdentifier::loggingString const): Ditto.
        * Modules/webdatabase/Database.cpp:
        (WebCore::formatErrorMessage): Ditto.
        * Modules/webdatabase/SQLError.h:
        (WebCore::SQLError::create): Ditto.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation): Use makeString.

        * bindings/scripts/test/JS/JSInterfaceName.cpp:
        * bindings/scripts/test/JS/JSMapLike.cpp:
        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
        * bindings/scripts/test/JS/JSTestException.cpp:
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestInterface.cpp:
        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
        * bindings/scripts/test/JS/JSTestIterable.cpp:
        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNode.cpp:
        * bindings/scripts/test/JS/JSTestObj.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
        * bindings/scripts/test/JS/JSTestSerialization.cpp:
        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
        * bindings/scripts/test/JS/JSTestStringifier.cpp:
        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
        Updated expected results.
:
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::parseHexColor): Use String::number
        and makeString.

        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::setLength): Use makeString.
        * html/ImageDocument.cpp:
        (WebCore::ImageDocument::imageUpdated): Ditto.
        * html/parser/XSSAuditor.cpp:
        (WebCore::XSSAuditor::init): Ditto.
        * inspector/InspectorFrontendClientLocal.cpp:
        (WebCore::InspectorFrontendClientLocal::setDockingUnavailable): Ditto.
        (WebCore::InspectorFrontendClientLocal::setAttachedWindow): Ditto.
        (WebCore::InspectorFrontendClientLocal::setDebuggingEnabled): Ditto.
        (WebCore::InspectorFrontendClientLocal::setTimelineProfilingEnabled): Ditto.
        (WebCore::InspectorFrontendClientLocal::showMainResourceForFrame): Ditto.
        * inspector/agents/InspectorCSSAgent.cpp: Ditto.
        * inspector/agents/InspectorIndexedDBAgent.cpp: Ditto.
        * page/MemoryRelease.cpp:
        (WebCore::logMemoryStatisticsAtTimeOfDeath): Ditto.

        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::formatByteNumber): Use String::number.
        (WebCore::ResourceUsageOverlay::platformDraw): Use string concatenation.

        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::logFootprintComparison): Use makeString.
        * platform/animation/TimingFunction.cpp:
        (WebCore::TimingFunction::cssText const): Ditto.

        * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
        (WebCore::AVTrackPrivateAVFObjCImpl::id const): Use AtomicString::number.
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        (WebCore::MediaSampleAVFObjC::MediaSampleAVFObjC): Ditto.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setContentsToSolidColor): Use makeString.
        (WebCore::GraphicsLayerCA::updateContentsImage): Ditto.
        (WebCore::GraphicsLayerCA::updateContentsRects): Ditto.
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): Ditto.
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText): Ditto.

        * platform/mock/mediasource/MockSourceBufferPrivate.cpp: Use String::number.

        * platform/network/ParsedContentRange.cpp:
        (WebCore::ParsedContentRange::headerValue const): Use makeString.

        * platform/network/cf/NetworkStorageSessionCFNet.cpp: Removed some unnecessary
        compiler conditionals and reorganized the start/stop of namespaces.
        (WebCore::NetworkStorageSession::switchToNewTestingSession): Use makeString.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::unauthorizedSQLFunction): Use makeString.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::logLayerInfo): Ditto.
        * workers/service/server/RegistrationDatabase.cpp:
        (WebCore::RegistrationDatabase::ensureValidRecordsTable): Ditto.
        (WebCore::RegistrationDatabase::importRecords): Ditto.

2018-12-15  Youenn Fablet  <youenn@apple.com>

        Make RTCRtpSender.setParameters to activate specific encodings
        https://bugs.webkit.org/show_bug.cgi?id=192732

        Reviewed by Eric Carlson.

        The conversion between libwebrtc and WebCore is lossy for send parameters.
        Libwebrtc checking the differences of values, call to setParameters will often fail.

        Given some parameters cannot be exposed, the sender backend keeps the
        current set of parameters when gathered and reuses them when parameters are set.

        For encodings, we only change activate/maxBitRate/maxFrameRate as
        these are the most important parameters to be able to modify.

        Covered by added tests in webrtc/video.html.

        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
        (WebCore::LibWebRTCRtpSenderBackend::getParameters const):
        (WebCore::LibWebRTCRtpSenderBackend::setParameters):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::fromRTCRtpSendParameters):
        (WebCore::fromRTCEncodingParameters): Deleted.
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.h:

2018-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Avoid creating and evaluating in the InspectorOverlay page on iOS as it is unused
        https://bugs.webkit.org/show_bug.cgi?id=192724
        <rdar://problem/46745911>

        Reviewed by Devin Rousso.

        iOS never installs the InspectorOverlay page as a page overlay.
        It also uses its own node highlighting painting. Avoid any work
        and resources associated with the overlay page for iOS.

        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint):
        (WebCore::InspectorOverlay::update):
        (WebCore::InspectorOverlay::overlayPage):
        (WebCore::evaluateCommandInOverlay):

2018-12-14  Youenn Fablet  <youenn@apple.com>

        MediaRecorderPrivateAVFImpl should have a Ref<MediaRecorderPrivateWriter> as member
        https://bugs.webkit.org/show_bug.cgi?id=192720

        Reviewed by Eric Carlson.

        Make sure that MediaRecorderPrivateAVFImpl takes a Ref<MediaRecorderPrivateWriter> as member,
        as the latter is a ref counted object.
        Made some refactoring to return early in case of error.

        Also made sure that in the case of a MediaRecorder stopped by a track removal in the recorded stream
        the MediaRecorder will stop listening for its tracks.
        Otherwise, the tracks will continue calling the MediaRecorder even after it is dead.

        Test: http/wpt/mediarecorder/MediaRecorder-onremovetrack.html

        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::didAddOrRemoveTrack):
        (WebCore::MediaRecorder::setNewRecordingState): Deleted.
        * Modules/mediarecorder/MediaRecorder.h:
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:
        (WebCore::MediaRecorderPrivateAVFImpl::create):
        (WebCore::MediaRecorderPrivateAVFImpl::MediaRecorderPrivateAVFImpl):
        (WebCore::MediaRecorderPrivateAVFImpl::sampleBufferUpdated):
        (WebCore::MediaRecorderPrivateAVFImpl::audioSamplesAvailable):
        (WebCore::MediaRecorderPrivateAVFImpl::stopRecording):
        (WebCore::MediaRecorderPrivateAVFImpl::fetchData):
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        (WebCore::MediaRecorderPrivateWriter::create):
        (WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
        (WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
        (WebCore::MediaRecorderPrivateWriter::setupWriter): Deleted.

2018-12-14  Youenn Fablet  <youenn@apple.com>

        getSenders/getReceivers() should not return closed transceiver senders/receivers
        https://bugs.webkit.org/show_bug.cgi?id=192706

        Reviewed by Eric Carlson.

        Updated as per https://github.com/w3c/webrtc-pc/commit/85284b76baebf9e149d194e692be16a21768a91a
        This forces us to compute the sender/receiver list at getter call time.
        Updated the internal call sites of senders to use the list of transceivers instead.

        Covered by updated WPT tests.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::addTrack):
        (WebCore::RTCPeerConnection::getSenders const):
        (WebCore::RTCPeerConnection::getReceivers const):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/RTCRtpTransceiver.cpp:
        (WebCore::RTCRtpTransceiver::stopped const):
        (WebCore::RtpTransceiverSet::append):
        (WebCore::RtpTransceiverSet::senders const):
        (WebCore::RtpTransceiverSet::receivers const):
        * Modules/mediastream/RTCRtpTransceiver.h:
        (WebCore::RtpTransceiverSet::senders const): Deleted.
        (WebCore::RtpTransceiverSet::receivers const): Deleted.
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::findExistingSender):
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):

2018-12-14  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary copy of objects for operator==() methods
        <https://webkit.org/b/192712>
        <rdar://problem/46739332>

        Reviewed by Andy Estes.

        * contentextensions/HashableActionList.h:
        (WebCore::ContentExtensions::HashableActionList::operator== const):
        (WebCore::ContentExtensions::HashableActionList::operator!= const):
        * platform/network/FormData.h:
        (WebCore::FormDataElement::EncodedFileData::operator== const):
        (WebCore::FormDataElement::EncodedBlobData::operator== const):
        - Change arguments from const to const reference to avoid
          copies.

2018-12-14  Jer Noble  <jer.noble@apple.com>

        CRASH in CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession(WTF::String const&, WTF::Function<void ()>&&)
        https://bugs.webkit.org/show_bug.cgi?id=192713
        <rdar://problem/46739706>

        Reviewed by Eric Carlson.

        A callback is being called twice, and the second time has a null Promise. Instead of these
        callbacks being WTF::Function, make them WTF::CompletionHandlers, which self-nullify and
        have ASSERTS() that they are called once-and-only-once.

        * platform/encryptedmedia/CDMInstanceSession.h:
        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
        (WebCore::CDMInstanceSessionClearKey::closeSession):
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed):

2018-12-14  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary object copies in WebCore/platform/graphics/avfoundation/objc/
        <https://webkit.org/b/192708>
        <rdar://problem/46735907>

        Reviewed by Jer Noble.

        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
        (WebCore::toSample):
        - Make argument a const reference.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        - Update method signatures for implementation changes.
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setAsset):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange):
        - Make RetainPtr<> argument an rvalue reference and use WTFMove().
        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksDidChange):
        - Make RetainPtr<> argument a const reference.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVolume):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setMuted):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setPreservesPitch):
        - Change for loop keys to be const references.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        - Update method signatures for implementation changes.
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime):
        (WebCore::SourceBufferPrivateAVFObjC::seekToTime):
        - Make Mediatime arguments a const reference.

2018-12-14  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r233268): contents of an animated element inside overflow:hidden disappear
        https://bugs.webkit.org/show_bug.cgi?id=188655
        rdar://problem/43382687

        Reviewed by Antoine Quint.

        The logic that computes animation extent, used by backing store attachment code, failed
        to account for the behavior where a keyframe animation with a missing 0% keyframe uses
        the transform from the unanimated style. This resulted in the computed extent being wrong,
        which caused us to remove the layer's backing store in some scenarios.

        Fix both animation code paths to use the renderer style if the first keyframe doesn't
        contain a transform.

        Tests: compositing/backing/backing-store-attachment-empty-keyframe.html
               legacy-animation-engine/compositing/backing/backing-store-attachment-empty-keyframe.html

        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
        * page/animation/KeyframeAnimation.cpp:
        (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

2018-12-14  Chris Dumez  <cdumez@apple.com>

        [PSON] Stop exposing PolicyAction::Suspend to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192701

        Reviewed by Brady Eidson.

        Drop PolicyAction::Suspend enum value and stop dealing with it in WebCore.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::continueAfterContentPolicy):
        * loader/FrameLoaderTypes.h:
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        (WebCore::PolicyChecker::checkNewWindowPolicy):

2018-12-14  Youenn Fablet  <youenn@apple.com>

        IDB should store RTCCertificate
        https://bugs.webkit.org/show_bug.cgi?id=192599

        Reviewed by Brady Eidson.

        In case there is no script execution context, do not create a JS DOM wrapper for RTCCertificate.
        Instead, create an empty object so that the deserialization can still succeed.
        This should only impact IDB deserialization in the Network Process which does not need the actual JS DOM wrapper.

        Test: webrtc/certificates-indexeddb.html

        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readTerminal):

2018-12-14  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Transition to logical margin types.
        https://bugs.webkit.org/show_bug.cgi?id=192699

        Reviewed by Antti Koivisto.

        This is in preparation for moving over to logical types.
        (This patch also transitions to singlular margin naming (verticalMargins -> VerticalMargin))

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        (WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):
        * layout/FormattingContextQuirks.cpp:
        (WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
        * layout/MarginTypes.h:
        (WebCore::Layout::VerticalMargin::usedValues const):
        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBefore const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginBeforeForAncestors const):
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):
        (WebCore::Layout::hasPrecomputedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const): Deleted.
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const): Deleted.
        (WebCore::Layout::hasPrecomputedMarginTop): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginTop): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginBottom): Deleted.
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::hasMarginBeforeQuirkValue):
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreMarginBefore):
        (WebCore::Layout::hasMarginTopQuirkValue): Deleted.
        (WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreMarginTop): Deleted.
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::isMarginBeforeCollapsedWithSibling):
        (WebCore::Layout::isMarginAfterCollapsedWithSibling):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBeforeCollapsedWithParent):
        (WebCore::Layout::isMarginAfterCollapsedThrough):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBeforeFromFirstChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBefore):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginAfterCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBeforeCollapsedWithParentMarginAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginAfterFromLastChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginAfter):
        (WebCore::Layout::isMarginTopCollapsedWithSibling): Deleted.
        (WebCore::Layout::isMarginBottomCollapsedWithSibling): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParent): Deleted.
        (WebCore::Layout::isMarginBottomCollapsedThrough): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginTopFromFirstChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginTop): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginTop): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBottom): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBottom): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBottomFromLastChild): Deleted.
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBottom): Deleted.
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::Box):
        (WebCore::Display::Box::marginBox const):
        (WebCore::Display::Box::nonCollapsedMarginBox const):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::rectWithMargin const):
        (WebCore::Display::Box::estimatedMarginBefore const):
        (WebCore::Display::Box::setEstimatedMarginBefore):
        (WebCore::Display::Box::top const):
        (WebCore::Display::Box::topLeft const):
        (WebCore::Display::Box::setVerticalMargin):
        (WebCore::Display::Box::marginBefore const):
        (WebCore::Display::Box::marginStart const):
        (WebCore::Display::Box::marginAfter const):
        (WebCore::Display::Box::marginEnd const):
        (WebCore::Display::Box::nonCollapsedMarginBefore const):
        (WebCore::Display::Box::nonCollapsedMarginAfter const):
        (WebCore::Display::Box::nonComputedMarginStart const):
        (WebCore::Display::Box::nonComputedMarginEnd const):
        (WebCore::Display::Box::estimatedMarginTop const): Deleted.
        (WebCore::Display::Box::setEstimatedMarginTop): Deleted.
        (WebCore::Display::Box::marginTop const): Deleted.
        (WebCore::Display::Box::marginLeft const): Deleted.
        (WebCore::Display::Box::marginBottom const): Deleted.
        (WebCore::Display::Box::marginRight const): Deleted.
        (WebCore::Display::Box::nonCollapsedMarginTop const): Deleted.
        (WebCore::Display::Box::nonCollapsedMarginBottom const): Deleted.
        (WebCore::Display::Box::nonComputedMarginLeft const): Deleted.
        (WebCore::Display::Box::nonComputedMarginRight const): Deleted.
        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::setHorizontalConstraints):
        (WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
        (WebCore::Layout::FloatAvoider::overflowsContainingBlock const):
        * layout/floats/FloatAvoider.h:
        (WebCore::Layout::FloatAvoider::marginBefore const):
        (WebCore::Layout::FloatAvoider::marginAfter const):
        (WebCore::Layout::FloatAvoider::marginStart const):
        (WebCore::Layout::FloatAvoider::marginEnd const):
        (WebCore::Layout::FloatAvoider::marginBoxWidth const):
        (WebCore::Layout::FloatAvoider::marginTop const): Deleted.
        (WebCore::Layout::FloatAvoider::marginBottom const): Deleted.
        (WebCore::Layout::FloatAvoider::marginLeft const): Deleted.
        (WebCore::Layout::FloatAvoider::marginRight const): Deleted.
        * layout/floats/FloatBox.cpp:
        (WebCore::Layout::FloatBox::rect const):
        (WebCore::Layout::FloatBox::horizontalPositionCandidate):
        (WebCore::Layout::FloatBox::verticalPositionCandidate):
        (WebCore::Layout::FloatBox::initialVerticalPosition const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::positionForFloat const):
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2018-12-14  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Introduce VerticalMargin and HorizontalMargin types.
        https://bugs.webkit.org/show_bug.cgi?id=192692

        Reviewed by Antti Koivisto.

        This is in preparation for completing block margin collapsing.

        * WebCore.xcodeproj/project.pbxproj:
        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):
        * layout/LayoutState.cpp:
        (WebCore::Layout::LayoutState::LayoutState):
        * layout/LayoutUnits.h:
        (WebCore::Layout::HeightAndMargin::usedMarginValues const): Deleted.
        * layout/MarginTypes.h: Added.
        (WebCore::Layout::VerticalMargin::nonCollapsedValues const):
        (WebCore::Layout::VerticalMargin::collapsedValues const):
        (WebCore::Layout::VerticalMargin::setCollapsedValues):
        (WebCore::Layout::VerticalMargin::VerticalMargin):
        (WebCore::Layout::VerticalMargin::usedValues const):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        * layout/displaytree/DisplayBox.cpp:
        (WebCore::Display::Box::Box):
        * layout/displaytree/DisplayBox.h:
        (WebCore::Display::Box::setHorizontalMargin):
        (WebCore::Display::Box::setVerticalMargin):
        (WebCore::Display::Box::setHorizontalNonComputedMargin):
        (WebCore::Display::Box::verticalMargin const):
        (WebCore::Display::Box::marginTop const):
        (WebCore::Display::Box::marginLeft const):
        (WebCore::Display::Box::marginBottom const):
        (WebCore::Display::Box::marginRight const):
        (WebCore::Display::Box::nonCollapsedMarginTop const):
        (WebCore::Display::Box::nonCollapsedMarginBottom const):
        (WebCore::Display::Box::setVerticalNonCollapsedMargin): Deleted.
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):

2018-12-14  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix compilation warnings under Source/WebCore/platform/win
        https://bugs.webkit.org/show_bug.cgi?id=192693

        Reviewed by Ross Kirsling.

        No new tests, no behavior changes.

        * platform/win/ClipboardUtilitiesWin.cpp: Reordered ClipboardDataItem members to match with the initializer list.
        * platform/win/CursorWin.cpp:
        (WebCore::loadCursorByName): Changed the argument type of 'name' to const char*.
        * platform/win/DefWndProcWindowClass.cpp:
        (WebCore::defWndProcWindowClassName): Removed an unused variable 'atom'.
        * platform/win/DragImageWin.cpp: Removed an unused variable 'MinDragLabelWidthBeforeClip'.
        * platform/win/PasteboardWin.cpp:
        (WebCore::createGlobalImageFileDescriptor): Removed an unused variable 'hr'.
        (WebCore::createGlobalHDropContent): Use reinterpret_cast to suppress warning.
        * platform/win/PlatformMouseEventWin.cpp:
        (WebCore::PlatformMouseEvent::PlatformMouseEvent): Reordered the initializer list.
        * platform/win/PopupMenuWin.cpp:
        (WebCore::PopupMenuWin::paint): Removed an unused variable 'itemCount'.
        * platform/win/PopupMenuWin.h: Marked override methods with 'override'.
        * platform/win/SSLKeyGeneratorWin.cpp:
        (WebCore::getSupportedKeySizes): Removed WebCore namespace prefix in WebCore namespace.
        (WebCore::signedPublicKeyAndChallengeString): Ditto.
        * platform/win/SearchPopupMenuDB.cpp:
        (WebCore::SearchPopupMenuDB::createPreparedStatement): Use ASSERT_UNUSED instead of ASSERT.
        * platform/win/StructuredExceptionHandlerSuppressor.h: Enclosed m_savedExceptionRegistration with #if defined(_M_IX86).
        * platform/win/SystemInfo.cpp:
        (WebCore::osVersionForUAString): Added default case.

2018-12-13  Youenn Fablet  <youenn@apple.com>

        RTCRtpTransceiver.stopped should be true when applying a remote description with the corresponding m section rejected
        https://bugs.webkit.org/show_bug.cgi?id=192685

        Reviewed by Eric Carlson.

        In case the remote description contains a rejected m section,
        the corresponding transceiver should be marked as stopped.
        Libwebrtc backend has that information so pipe it up to JS.

        Covered by updated WPT test.

        * Modules/mediastream/RTCRtpTransceiver.cpp:
        (WebCore::RTCRtpTransceiver::stopped const):
        * Modules/mediastream/RTCRtpTransceiver.h:
        (WebCore::RTCRtpTransceiver::stopped const): Deleted.
        * Modules/mediastream/RTCRtpTransceiverBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp:
        (WebCore::LibWebRTCRtpTransceiverBackend::stopped const):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.h:

2018-12-13  Mark Lam  <mark.lam@apple.com>

        Ensure that StructureFlags initialization always starts with Base::StructureFlags.
        https://bugs.webkit.org/show_bug.cgi?id=192686

        Reviewed by Keith Miller.

        No new tests needed because there's no new functionality.  Just refactoring.

        * bindings/js/JSDOMWindowProperties.h:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateHeader):
        (GeneratePrototypeDeclaration):
        * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
        * bindings/scripts/test/JS/JSTestEnabledBySetting.h:
        * bindings/scripts/test/JS/JSTestEventTarget.h:
        * bindings/scripts/test/JS/JSTestGlobalObject.h:
        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:
        * bindings/scripts/test/JS/JSTestObj.h:
        * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
        * bindings/scripts/test/JS/JSTestPluginInterface.h:
        * bindings/scripts/test/JS/JSTestTypedefs.h:

2018-12-13  Ryosuke Niwa  <rniwa@webkit.org>

        Make HTMLConverter work across shadow boundaries
        https://bugs.webkit.org/show_bug.cgi?id=192640

        Reviewed by Wenson Hsieh.

        Made HTMLConverter work with shadow boundaries by replacing the various tree traversal functions.

        Tests: editing/mac/attributed-string/attributed-string-across-shadow-boundaries-1.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-2.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-3.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-4.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-5.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-1.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-2.html
               editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-3.html

        * dom/Position.cpp:
        (WebCore::commonShadowIncludingAncestor): Moved from markup.cpp to be shared between HTMLConverter
        and serializePreservingVisualAppearanceInternal.
        * dom/Position.h:
        * editing/cocoa/HTMLConverter.mm:
        (HTMLConverter::convert):
        (HTMLConverterCaches::propertyValueForNode):
        (HTMLConverterCaches::floatPropertyValueForNode):
        (HTMLConverter::_blockLevelElementForNode):
        (HTMLConverterCaches::colorPropertyValueForNode):
        (HTMLConverter::aggregatedAttributesForAncestors):
        (HTMLConverter::aggregatedAttributesForElementAndItsAncestors):
        (HTMLConverter::_processElement):
        (HTMLConverter::_traverseNode):
        (HTMLConverter::_traverseFooterNode):
        (HTMLConverterCaches::cacheAncestorsOfStartToBeConverted):
        (WebCore::attributedStringFromSelection):
        * editing/markup.cpp:
        (WebCore::commonShadowIncludingAncestor): Moved to Position.cpp.

2018-12-13  Youenn Fablet  <youenn@apple.com>

        Trying to play a media element synchronously after setting srcObject should succeed without user gesture
        https://bugs.webkit.org/show_bug.cgi?id=192679

        Reviewed by Eric Carlson.

        Check the srcObject mediaProvider value which is set synchronously.
        Covered by updated fast/mediastream/local-audio-playing-event.html.

        * html/HTMLMediaElement.h:
        (WebCore::HTMLMediaElement::hasMediaStreamSrcObject const):

2018-12-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Support dropping contact card data (public.vcard) in editable content
        https://bugs.webkit.org/show_bug.cgi?id=192570
        <rdar://problem/35626913>

        Reviewed by Tim Horton.

        Adds support for accepting vCard (.vcf) data via drop on iOS. See below for more details.

        Tests:  DragAndDropTests.ExternalSourceContactIntoEditableAreas
                DragAndDropTests.ExternalSourceMapItemAndContactToUploadArea
                DragAndDropTests.ExternalSourceMapItemIntoEditableAreas
                WKAttachmentTestsIOS.InsertDroppedContactAsAttachment
                WKAttachmentTestsIOS.InsertDroppedMapItemAsAttachment

        * editing/WebContentReader.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::attachmentForFilePath):

        Pull out logic to create an attachment from a file path out into a static helper. Use this in `readFilePaths`
        as well as `readVirtualContactFile`.

        (WebCore::WebContentReader::readFilePaths):
        (WebCore::WebContentReader::readVirtualContactFile):

        Add a pasteboard reading method that reads a vCard file (with an optional URL) as web content. The resulting
        fragment consists of either an anchor and an attachment element, or just an attachment element if the URL is
        empty. In the case of an `MKMapItem`, the URL is populated, so we generate both elements; when dragging a
        contact, there is no associated URL, so we only have an attachment.

        * platform/Pasteboard.h:
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readPasteboardWebContentDataForType):

        Augment this to take the current `PasteboardItemInfo` as well; use this item information to get a file path for
        "public.vcard" data, which is then passed on to the web content reader. Additionally, by returning
        `ReaderResult::DidNotReadType` here, we prevent the web content reader from extracting the plain text contents
        of the vCard and dumping it as plain text in the editable element (this would otherwise happen, since
        "public.vcard" conforms to "public.text").

        (WebCore::Pasteboard::read):
        (WebCore::Pasteboard::readRespectingUTIFidelities):
        * platform/ios/WebItemProviderPasteboard.mm:
        (-[NSItemProvider web_fileUploadContentTypes]):

        Prevent the "com.apple.mapkit.map-item" UTI from being considered as file upload content. This special case is
        tricky, since "com.apple.mapkit.map-item" conforms to "public.content", yet its corresponding data is only
        suitable for deserialization into an `MKMapItem`.

2018-12-13  Devin Rousso  <drousso@apple.com>

        Web Inspector: remove DOM.BackendNodeId and associated commands/events
        https://bugs.webkit.org/show_bug.cgi?id=192478

        Reviewed by Matt Baker.

        Removing unused code, so no change in functionality.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::discardBindings):
        (WebCore::InspectorDOMAgent::backendNodeIdForNode): Deleted.
        (WebCore::InspectorDOMAgent::releaseBackendNodeIds): Deleted.
        (WebCore::InspectorDOMAgent::pushNodeByBackendIdToFrontend): Deleted.

2018-12-13  Chris Dumez  <cdumez@apple.com>

        [PSON] We should not need to navigate to 'about:blank' to suspend pages
        https://bugs.webkit.org/show_bug.cgi?id=192668
        <rdar://problem/46701466>

        Reviewed by Alex Christensen.

        * history/PageCache.cpp:
        (WebCore::PageCache::addIfCacheable):
        * history/PageCache.h:
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::redirectReceived):
        (WebCore::DocumentLoader::willSendRequest):
        (WebCore::DocumentLoader::startLoadingMainResource):
        * loader/DocumentLoader.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::init):
        (WebCore::FrameLoader::stopAllLoaders):
        (WebCore::FrameLoader::setDocumentLoader):
        (WebCore::FrameLoader::commitProvisionalLoad):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
        * loader/FrameLoaderTypes.h:
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * loader/PolicyChecker.h:

2018-12-13  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Inline WebVTT styles should override styles from Captions settings in System Preferences
        https://bugs.webkit.org/show_bug.cgi?id=192638

        Reviewed by Eric Carlson.

        It is currently not possible to override caption styles generated from System Preferences with inline
        WebVTT styles without adding !important. The reason for this is that the generated styles from
        System preferences are author styles which have higher priority than the inline WebVTT styles, which
        are user agent styles in the video user agent shadow tree. This can be fixed by moving the generated
        styles to the video user agent shadow tree. Inline WebVTT styles will then have higher priority since
        they are added after the generated styles. This patch also fixes a problem where inline styles could be
        added twice to the video user agent shadow root.

        Test: media/track/track-cue-css.html

        * dom/ExtensionStyleSheets.cpp:
        (WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
        * html/track/VTTCue.cpp:
        (WebCore::VTTCue::getDisplayTree):
        * page/CaptionUserPreferences.cpp:
        (WebCore::CaptionUserPreferences::setCaptionsStyleSheetOverride):
        * page/Page.cpp:
        (WebCore::Page::setCaptionUserPreferencesStyleSheet):

2018-12-13  Jer Noble  <jer.noble@apple.com>

        Fix leak of AVPlayer boundaryTimeObserver object.
        https://bugs.webkit.org/show_bug.cgi?id=192674

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::performTaskAtMediaTime):

2018-12-13  Brent Fulgham  <bfulgham@apple.com>

        Don't attempt to animate invalid CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=192630
        <rdar://problem/46664433>

        Reviewed by Antoine Quint.

        Inherited animation properties can cause child elements to think they need to animate CSS properties
        that they do not support, leading to nullptr crashes.

        Recognize that CSSPropertyInvalid is a potential requested animation property, and handle it
        cleanly.

        Tests: animations/invalid-property-animation.html

        * page/animation/CompositeAnimation.cpp:
        (WebCore::CompositeAnimation::updateTransitions):
        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::calculateAnimatedValue):

2018-12-13  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r230064): Focus rings on webpages are fainter than in native UI.
        https://bugs.webkit.org/show_bug.cgi?id=192639
        rdar://problem/42669297

        Reviewed by Tim Horton.

        The focus ring color passed to CoreGraphics is expected to be opaque, since they
        will apply opacity when drawing (because opacity is normally animated).
        We were getting this by accident before when the old `RenderThemeMac::systemColor()`
        used the old `convertNSColorToColor()`, which ignored alpha on NSColor.
        Existing tests use fixed test focus ring color.

        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::colorFromPrimitiveValue const): Use RenderTheme singleton for `focusRingColor()`.
        * html/canvas/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal): Ditto.
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::drawFocusRingAtTime): Use `CGContextStateSaver`.
        * platform/mac/ThemeMac.mm:
        (WebCore::drawCellFocusRingWithFrameAtTime): Force alpha to 1 on the focus ring color. Use `CGContextStateSaver`.
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::paintFocusRing): Use RenderTheme singleton for `focusRingColor()`.
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paintAreaElementFocusRing): Ditto.
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::focusRingColor const): Made const. Cache the result of `platformFocusRingColor()`.
        * rendering/RenderTheme.h: Made `focusRingColor()` a member function instead of static.
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::platformFocusRingColor const): Force alpha to 1 on the focus ring color.
        (WebCore::RenderThemeMac::systemColor const): Use `focusRingColor()`, instead of caching color here.

2018-12-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Calculate width or height when constraints contain only the other
        https://bugs.webkit.org/show_bug.cgi?id=192632
        <rdar://problem/46665734>

        Unreviewed, remove an unneeded assert.

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::dispatchMediaSampleToObservers):

2018-12-13  Zach Li  <zachli@apple.com>

        Update Credit Card AutoFill button icon
        https://bugs.webkit.org/show_bug.cgi?id=192637
        rdar://problem/46545006

        Reviewed by Chris Dumez.

        * css/html.css:
        (input::-webkit-credit-card-auto-fill-button):

2018-12-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Calculate width or height when constraints contain only the other
        https://bugs.webkit.org/show_bug.cgi?id=192632
        <rdar://problem/46665734>

        Reviewed by Youenn Fablet.

        Test: fast/mediastream/constraint-intrinsic-size.html

        * platform/graphics/RemoteVideoSample.cpp:
        (WebCore::RemoteVideoSample::create): Log errors with RELEASE_LOG_ERROR.

        * platform/graphics/cv/ImageTransferSessionVT.h:
        (WebCore::ImageTransferSessionVT::pixelFormat const): New.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::setSizeAndFrameRate): Replace current size with new size.
        (WebCore::RealtimeMediaSource::setSize): Don't notify about width and height.
        (WebCore::RealtimeMediaSource::size const): Use intrinsic size when necessary.
        (WebCore::RealtimeMediaSource::setIntrinsicSize): New.
        (WebCore::RealtimeMediaSource::remoteVideoSampleAvailable): Deleted.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::dispatchMediaSampleToObservers): No more remoteVideoSampleAvailable.

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::settings): Report size correctly.
        (WebCore::DisplayCaptureSourceCocoa::frameSize const): Use intrinsicSize().
        (WebCore::DisplayCaptureSourceCocoa::emitFrame): No more remoteVideoSampleAvailable.
        (WebCore::DisplayCaptureSourceCocoa::setIntrinsicSize): Deleted.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
        (WebCore::DisplayCaptureSourceCocoa::intrinsicSize const): Deleted.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Report intrinsic size.
        (WebCore::MockRealtimeVideoSource::setSizeAndFrameRate): Minor cleanup.
        (WebCore::MockRealtimeVideoSource::setSizeAndFrameRateWithPreset):  Report intrinsic size.
        (WebCore::MockRealtimeVideoSource::drawText): Don't render preset info for display source.
        * platform/mock/MockRealtimeVideoSource.h:

2018-12-13  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: loop variable is copied but only used as const reference in Document.cpp, Element.cpp
        <https://webkit.org/b/192661>
        <rdar://problem/46694035>

        Reviewed by Daniel Bates.

        * dom/Document.cpp:
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::notifyIntersectionObserversTimerFired):
        * dom/Element.cpp:
        (WebCore::Element::didMoveToNewDocument):
        (WebCore::Element::disconnectFromIntersectionObservers):
        - Change loop variables from `auto` to `const auto&` to prevent
          unnecessary copies of WeakPtr<IntersectionObserver> or
          struct IntersectionObserverRegistration objects.

2018-12-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Remove HarfBuzzFace
        https://bugs.webkit.org/show_bug.cgi?id=192589

        Reviewed by Michael Catanzaro.

        This was used to share the common implementation with the chromium port, but now that only freetype based ports
        use it, it can be removed and use hb_ft_face_create_cached() instead. We don't need the glyph cache either,
        since we are already caching glyphs in Font.

        * platform/FreeType.cmake: Remove HarfBuzzFaceCairo.cpp and HarfBuzzFace.cpp.
        * platform/graphics/FontPlatformData.h: Remove HarfBuzzFace member.
        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: Add missing include.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::FontPlatformData::operator=): Remove m_harfBuzzFace handling.
        (WebCore::FontPlatformData::createOpenTypeMathHarfBuzzFont const): New funtction to create a hb_font_t for
        OpenType math.
        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::floatToHarfBuzzPosition): Moved from HarfBuzzFaceCairo.cpp.
        (WebCore::doubleToHarfBuzzPosition): Ditto.
        (WebCore::harfBuzzFontFunctions): Also moved from HarfBuzzFaceCairo.cpp, but implement get_nominal/variation
        functions when using HarfBuzz >= 1.2.3 and use Font::glyphForCharacter() to make it simpler.
        (WebCore::fontFeatures): Moved from HarfBuzzFaceCairo.cpp.
        (WebCore::findScriptForVerticalGlyphSubstitution): Moved from HarfBuzzFace.cpp.
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): Create the HarfBuzz face and font here.
        * platform/graphics/harfbuzz/HarfBuzzFace.cpp: Removed.
        * platform/graphics/harfbuzz/HarfBuzzFace.h: Removed.
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: Removed.
        * platform/graphics/harfbuzz/HbUniquePtr.h:
        (WebCore::HbPtrDeleter<hb_face_t>::operator() const): Add deleter for hb_face_t.
        * platform/graphics/opentype/OpenTypeMathData.cpp:
        (WebCore::OpenTypeMathData::OpenTypeMathData): Use FontPlatformData::createOpenTypeMathHarfBuzzFont().

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Add initial implementation of variation fonts
        https://bugs.webkit.org/show_bug.cgi?id=192151

        Reviewed by Michael Catanzaro.

        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::font): Remove platform ifdefs.
        * loader/cache/CachedFont.cpp:
        (WebCore::CachedFont::platformDataFromCustomData): Ditto.
        * platform/graphics/FontPlatformData.h:
        (WebCore::FontPlatformData::isFixedWidth const):
        * platform/graphics/cairo/FontCustomPlatformData.h: Use RefPtr for cairo_font_face_t.
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::getFontPropertiesFromPattern): Helper function to get several font properties from the fontconfig
        pattern.
        (WebCore::FontCache::systemFallbackForCharacters): Use getFontPropertiesFromPattern().
        (WebCore::FontCache::createFontPlatformData): Pass FC_VARIABLE to the pattern and call buildVariationSettings()
        before creating the FontPlatformData to set FC_FONT_VARIATIONS on the pattern.
        (WebCore::defaultVariationValues): Parse font variations table.
        (WebCore::buildVariationSettings): Build a font variations string from the settings that can be passed to cairo.
        * platform/graphics/freetype/FontCacheFreeType.h: Added.
        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
        (WebCore::FontCustomPlatformData::FontCustomPlatformData): Use RefPtr and make freeTypeFaceKey global.
        (WebCore::FontCustomPlatformData::~FontCustomPlatformData): Remove explicit destroy.
        (WebCore::defaultFontconfigOptions): Moved here from FontCacheFreeType.
        (WebCore::FontCustomPlatformData::fontPlatformData): Call buildVariationSettings() before creating the
        FontPlatformData to set FC_FONT_VARIATIONS on the pattern.
        (WebCore::FontCustomPlatformData::supportsFormat): Add variation formats.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::setCairoFontOptionsFromFontConfigPattern): Call cairo_font_options_set_variations() with the
        FC_FONT_VARIATIONS value from the pattern.
        (WebCore::FontPlatformData::FontPlatformData): Use a single constructor that always receives a valid fontconfig
        pattern.
        (WebCore::FontPlatformData::fcPattern const): Return the fontconfig pattern.
        (WebCore::FontPlatformData::platformIsEqual const): Update the condition now that m_pattern can't be nullptr.
        (WebCore::FontPlatformData::buildScaledFont): Use m_pattern unconditionally.
        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        (WebCore::Font::platformCreateScaledFont const): Update it to use the new FontPlatformData constructor.
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:
        (WebCore::HarfBuzzFace::createFont): Pass variations to HarfBuzz.
        * platform/graphics/win/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):
        * platform/graphics/win/FontCustomPlatformData.h:

2018-12-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang][WebKitLegacy] WebFrame.cpp: warning: delete called on non-final 'WebFrame' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
        https://bugs.webkit.org/show_bug.cgi?id=192618

        Reviewed by Alex Christensen.

        No new tests, no behavior changes.

        * platform/win/PopupMenuWin.h:
        * platform/win/WCDataObject.cpp:
        * platform/win/WCDataObject.h:

2018-12-12  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): CAPCHA UI jumps to the wrong location
        https://bugs.webkit.org/show_bug.cgi?id=192651
        rdar://problem/46531919

        Reviewed by Zalan Bujtas.
        
        When a RenderLayer becomes non-composited because of a style change, we need to set a dirty
        bit to say that descendants need their geometry updated (because they now have to
        compute their positions relative to a different ancestor). This wasn't happening
        in the layerStyleChanged() code path.
        
        In the code path that did do this correctly (in the computeCompositingRequirements() tree walk),
        we can address a FIXME and only dirty direct children, not all descendants (that code was
        written before the child-only dirty bit existed).

        Test: compositing/geometry/update-child-geometry-on-compositing-change.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-12-13  Ryosuke Niwa  <rniwa@webkit.org>

        Make TextInputController.legacyAttributedString take DOM nodes and offsets
        https://bugs.webkit.org/show_bug.cgi?id=192653

        Reviewed by Wenson Hsieh.

        No new tests since there should be no observable behavioral change other than
        TextInputController API in DumpRenderTree.

        * editing/cocoa/HTMLConverter.h:
        * editing/cocoa/HTMLConverter.mm:
        (WebCore::attributedStringFromSelection):
        (WebCore::attributedStringBetweenStartAndEnd): Added.

2018-12-12  Ryosuke Niwa  <rniwa@webkit.org>

        Fix macOS builds after r239145.

        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

2018-12-12  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238357): Pins on Yelp map disappear
        https://bugs.webkit.org/show_bug.cgi?id=192597
        rdar://problem/46578285

        Reviewed by Zalan Bujtas.

        RenderLayerCompositor::updateBackingAndHierarchy() had a bug where if a RenderLayer gained
        a negative z-order child (triggering creation of a foreground layer), we'd fail to 
        call the "setChildren()" with the vector containing that foreground layer.
        
        When updateBackingAndHierarchy() stops visiting descendants because none are composited,
        it may still have to update the child list with the foreground layer, so make sure
        the code handles this case.

        Tests: compositing/z-order/add-negative-z-child.html
               compositing/z-order/rebuild-sibling-of-layer-with-foreground-layer.html

        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):

2018-12-12  YUHAN WU  <yuhan_wu@apple.com>

        Implement non-timeslice mode encoding for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=192069
        <rdar://problem/46443290>

        Reviewed by Eric Carlson.

        Implement the encoding for non-timeslice mode of MediaRecorder.
        It only supports to record MP4 file through H264 and AAC encoding, we will need to support more MIME types and encoding methods.
        Add a API in internals to allow testings to turn on the mock source.

        Test: http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html

        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::create):
        (WebCore::MediaRecorder::setCustomPrivateRecorderCreator):
        (WebCore::MediaRecorder::getPrivateImpl):
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::stopRecording):
        (WebCore::MediaRecorder::stopRecordingInternal):
        (WebCore::MediaRecorder::createRecordingDataBlob):
        (WebCore::MediaRecorder::scheduleDeferredTask):
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediarecorder/MediaRecorder.idl:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediarecorder/MediaRecorderPrivate.h:
        (WebCore::MediaRecorderPrivate::stopRecording):
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: Added.
        (WebCore::MediaRecorderPrivateAVFImpl::create):
        (WebCore::MediaRecorderPrivateAVFImpl::MediaRecorderPrivateAVFImpl):
        (WebCore::MediaRecorderPrivateAVFImpl::sampleBufferUpdated):
        (WebCore::MediaRecorderPrivateAVFImpl::audioSamplesAvailable):
        (WebCore::MediaRecorderPrivateAVFImpl::stopRecording):
        (WebCore::MediaRecorderPrivateAVFImpl::fetchData):
        (WebCore::MediaRecorderPrivateAVFImpl::mimeType):
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.h: Added.
        * platform/mediarecorder/MediaRecorderPrivateMock.cpp:
        (WebCore::MediaRecorderPrivateMock::fetchData):
        (WebCore::MediaRecorderPrivateMock::mimeType):
        * platform/mediarecorder/MediaRecorderPrivateMock.h:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h: added.
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: Added.
        (WebCore::MediaRecorderPrivateWriter::clear):
        (WebCore::MediaRecorderPrivateWriter::setupWriter):
        (WebCore::MediaRecorderPrivateWriter::setVideoInput):
        (WebCore::MediaRecorderPrivateWriter::setAudioInput):
        (WebCore::copySampleBufferWithCurrentTimeStamp):
        (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
        (WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
        (WebCore::MediaRecorderPrivateWriter::stopRecording):
        * testing/Internals.cpp:
        (WebCore::createRecorderMockSource):
        (WebCore::Internals::setCustomPrivateRecorderCreator):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-12-12  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Vertex buffers and WebGPUInputState
        https://bugs.webkit.org/show_bug.cgi?id=192611

        Reviewed by Dean Jackson.

        Test: webgpu/vertex-buffer-triangle-strip.html

        Basic implementation of vertex buffers with Metal shading language in WebGPU. In 
        WebGPURenderPipelineDescriptor, refactor to match updated shader stage structure and add 
        WebGPUInputStateDescriptor. Also implement WebGPURenderPassEncoder::setVertexBuffers.

        Add symbols and files for WebGPUIndexFormat, WebGPUInputStateDescriptor, WebGPUInputStepMode, 
        WebGPUVertexAttributeDescriptor, WebGPUVertexFormat, WebGPUVertexInputDescriptor:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        Add and implement interfaces and dictionaries for WebGPUInputState:
        * Modules/webgpu/WebGPUBuffer.cpp:
        (WebCore::WebGPUBuffer::WebGPUBuffer):
        * Modules/webgpu/WebGPUBuffer.h:
        (WebCore::WebGPUBuffer::buffer const): Added getter for backing GPUBuffer.
        * Modules/webgpu/WebGPUBufferDescriptor.h:
        * Modules/webgpu/WebGPUBufferDescriptor.idl: Moving WebGPUBufferUsage out into its own IDL.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUIndexFormat.h: Added.
        * Modules/webgpu/WebGPUIndexFormat.idl: Added. 
        * Modules/webgpu/WebGPUInputStateDescriptor.h: Added.
        * Modules/webgpu/WebGPUInputStateDescriptor.idl: Added.
        * Modules/webgpu/WebGPUInputStepMode.h: Added.
        * Modules/webgpu/WebGPUInputStepMode.idl: Added.
        * Modules/webgpu/WebGPUVertexAttributeDescriptor.h: Added.
        * Modules/webgpu/WebGPUVertexAttributeDescriptor.idl: Added.
        * Modules/webgpu/WebGPUVertexFormat.h: Added.
        * Modules/webgpu/WebGPUVertexFormat.idl: Added.
        * Modules/webgpu/WebGPUVertexInputDescriptor.h: Added.
        * Modules/webgpu/WebGPUVertexInputDescriptor.idl: Added.
        * platform/graphics/gpu/GPUInputStateDescriptor.h: Added.
        * platform/graphics/gpu/GPURenderPassEncoder.h: Added.
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Added.
        * platform/graphics/gpu/GPUVertexAttributeDescriptor.h: Added.
        * platform/graphics/gpu/GPUVertexInputDescriptor.h: Added.

        Refactor to support updated structure of pipeline descriptor in sketch IDL:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::validateAndConvertPipelineStage):
        (WebCore::WebGPUDevice::createRenderPipeline const):
        * Modules/webgpu/WebGPUPipelineDescriptorBase.h:
        * Modules/webgpu/WebGPUPipelineDescriptorBase.idl:
        * Modules/webgpu/WebGPUPipelineStageDescriptor.h:
        * Modules/webgpu/WebGPUPipelineStageDescriptor.idl:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
        * Modules/webgpu/WebGPUShaderStage.*: Removed.

        Add and implement setVertexBuffers:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::setVertexBuffers): Added. 
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPURenderPassEncoder.idl: 
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::setVertexBuffers):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setInputStateForPipelineDescriptor):
        (WebCore::GPURenderPipeline::create):

2018-12-12  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r237565): >20 Find in Page highlights in one tile results in a single giant highlight
        https://bugs.webkit.org/show_bug.cgi?id=192642
        <rdar://problem/46498246>

        Reviewed by Geoffrey Garen.

        No new tests; adjusted an existing test instead.

        * platform/graphics/PathUtilities.cpp:
        (WebCore::PathUtilities::pathsWithShrinkWrappedRects):
        Instead of uniting when we fail to shrink-wrap, just return the original rects.
        This seems like a more reasonable default in most cases.

2018-12-12  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Figure out if/how to tell clients that the HTTPS upgrade happened
        https://bugs.webkit.org/show_bug.cgi?id=192375
        <rdar://problem/45851159>

        Reviewed by Chris Dumez.

        Use simulated redirect to tell clients that HTTPS Upgrade happened.

        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::syntheticRedirectResponse):
        * platform/network/ResourceResponseBase.h:
        * platform/network/mac/WebCoreURLResponse.mm:
        (WebCore::synthesizeRedirectResponseIfNecessary):

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Add a preference to enable / disable devicemotion and deviceorientation events
        https://bugs.webkit.org/show_bug.cgi?id=192631
        <rdar://problem/46646244>

        Reviewed by Geoffrey Garen.

        Add setting to toggle support for the deviceorientation / devicemotion events:
        - https://w3c.github.io/deviceorientation/

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        * page/Settings.yaml:

2018-12-11  Ryosuke Niwa  <rniwa@webkit.org>

        Make HTMLConverter take two Positions in preparation to make it work with shadow DOM
        https://bugs.webkit.org/show_bug.cgi?id=192613

        Reviewed by Darin Adler.

        This patch makes HTMLConverter store two Position's instead of a Range so that HTMLConverter can work with
        a selection which spans across shadow boundaries in the future.

        No new tests since there should be no observable behavioral change.

        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::writeSelectionToPasteboard): Uses the newly introduced writeSelectionToPasteboard.
        (WebCore::Editor::writeSelection): Ditto.
        * editing/cocoa/HTMLConverter.h:
        * editing/cocoa/HTMLConverter.mm:
        (HTMLConverter::HTMLConverter): Now takes two Position's.
        (HTMLConverter::convert): Updated to work with Position's.
        (HTMLConverter::_processText): Ditto.
        (HTMLConverter::_traverseNode): Ditto.
        (HTMLConverter::_traverseFooterNode): Ditto.
        (HTMLConverterCaches::cacheAncestorsOfStartToBeConverted): Ditto.
        (WebCore::attributedStringFromRange): Ditto.
        (WebCore::attributedStringFromSelection): Added. For now, we first create a Range via toNormalizedRange
        in order to preserve the exact behavior.

2018-12-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed manual rollout of r239100-r239102 and r239116
        https://bugs.webkit.org/show_bug.cgi?id=192151
        <rdar://problem/46655586>

        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::font):
        * loader/cache/CachedFont.cpp:
        (WebCore::CachedFont::platformDataFromCustomData):
        * platform/FreeType.cmake:
        * platform/graphics/FontPlatformData.h:
        (WebCore::FontPlatformData::isFixedWidth const): Deleted.
        * platform/graphics/cairo/FontCustomPlatformData.h:
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::FontCache::systemFallbackForCharacters):
        (WebCore::FontCache::createFontPlatformData):
        (WebCore::getFontPropertiesFromPattern): Deleted.
        (WebCore::defaultVariationValues): Deleted.
        (WebCore::buildVariationSettings): Deleted.
        * platform/graphics/freetype/FontCacheFreeType.h: Removed.
        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
        (WebCore::FontCustomPlatformData::FontCustomPlatformData):
        (WebCore::FontCustomPlatformData::~FontCustomPlatformData):
        (WebCore::FontCustomPlatformData::fontPlatformData):
        (WebCore::FontCustomPlatformData::supportsFormat):
        (WebCore::defaultFontconfigOptions): Deleted.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::setCairoFontOptionsFromFontConfigPattern):
        (WebCore::getDefaultFontconfigOptions):
        (WebCore::FontPlatformData::FontPlatformData):
        (WebCore::FontPlatformData::operator=):
        (WebCore::FontPlatformData::harfBuzzFace const):
        (WebCore::FontPlatformData::platformIsEqual const):
        (WebCore::FontPlatformData::buildScaledFont):
        (WebCore::FontPlatformData::fcPattern const): Deleted.
        (WebCore::FontPlatformData::createOpenTypeMathHarfBuzzFont const): Deleted.
        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        (WebCore::Font::platformCreateScaledFont const):
        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::fontFeatures):
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
        (WebCore::floatToHarfBuzzPosition): Deleted.
        (WebCore::doubleToHarfBuzzPosition): Deleted.
        (WebCore::harfBuzzFontFunctions): Deleted.
        (WebCore::findScriptForVerticalGlyphSubstitution): Deleted.
        * platform/graphics/harfbuzz/HarfBuzzFace.cpp: Added.
        (WebCore::HarfBuzzFace::CacheEntry::CacheEntry):
        (WebCore::HarfBuzzFace::CacheEntry::~CacheEntry):
        (WebCore::HarfBuzzFace::cache):
        (WebCore::HarfBuzzFace::HarfBuzzFace):
        (WebCore::HarfBuzzFace::~HarfBuzzFace):
        (WebCore::findScriptForVerticalGlyphSubstitution):
        (WebCore::HarfBuzzFace::setScriptForVerticalGlyphSubstitution):
        * platform/graphics/harfbuzz/HarfBuzzFace.h: Added.
        (WebCore::HarfBuzzFace::CacheEntry::create):
        (WebCore::HarfBuzzFace::CacheEntry::face):
        (WebCore::HarfBuzzFace::CacheEntry::glyphCache):
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: Added.
        (WebCore::floatToHarfBuzzPosition):
        (WebCore::doubleToHarfBuzzPosition):
        (WebCore::CairoGetGlyphWidthAndExtents):
        (WebCore::harfBuzzGetGlyph):
        (WebCore::harfBuzzGetGlyphHorizontalAdvance):
        (WebCore::harfBuzzGetGlyphHorizontalOrigin):
        (WebCore::harfBuzzGetGlyphExtents):
        (WebCore::harfBuzzCairoTextGetFontFuncs):
        (WebCore::harfBuzzCairoGetTable):
        (WebCore::HarfBuzzFace::createFace):
        (WebCore::HarfBuzzFace::createFont):
        * platform/graphics/harfbuzz/HbUniquePtr.h:
        (WebCore::HbPtrDeleter<hb_face_t>::operator() const): Deleted.
        * platform/graphics/opentype/OpenTypeMathData.cpp:
        (WebCore::OpenTypeMathData::OpenTypeMathData):
        * platform/graphics/win/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):
        * platform/graphics/win/FontCustomPlatformData.h:
        * platform/graphics/win/FontCustomPlatformDataCairo.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix Windows Cairo build after r239100.

        * platform/graphics/win/FontCustomPlatformDataCairo.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):

2018-12-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] A few API tests are failing after r239086
        https://bugs.webkit.org/show_bug.cgi?id=192608

        Reviewed by Zalan Bujtas.

        These test failures were caused by a missing Vector size check in `Pasteboard::readFilePaths` before accessing
        the first item. Fix this by adding a helper method on PasteboardItemInfo to grab the file path for the highest
        fidelity pasteboard item (returning the null string if there are none), and use this in a few places that grab
        the highest fidelity path using Vector::first().

        While `Pasteboard::readRespectingUTIFidelities` does have a bounds check before accessing the list of paths,
        this patch still replaces it with a call to `pathForHighestFidelityItem()`, so that the intent is more clear.

        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::pathForHighestFidelityItem const):
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readRespectingUTIFidelities):
        (WebCore::Pasteboard::readFilePaths):

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix WPE build after r239101.

        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: Include <hb-ot.h>

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Remove HarfBuzzFace
        https://bugs.webkit.org/show_bug.cgi?id=192589

        Reviewed by Michael Catanzaro.

        This was used to share the common implementation with the chromium port, but now that only freetype based ports
        use it, it can be removed and use hb_ft_face_create_cached() instead. We don't need the glyph cache either,
        since we are already caching glyphs in Font.

        * platform/FreeType.cmake: Remove HarfBuzzFaceCairo.cpp and HarfBuzzFace.cpp.
        * platform/graphics/FontPlatformData.h: Remove HarfBuzzFace member.
        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: Add missing include.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::FontPlatformData::operator=): Remove m_harfBuzzFace handling.
        (WebCore::FontPlatformData::createOpenTypeMathHarfBuzzFont const): New funtction to create a hb_font_t for
        OpenType math.
        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::floatToHarfBuzzPosition): Moved from HarfBuzzFaceCairo.cpp.
        (WebCore::doubleToHarfBuzzPosition): Ditto.
        (WebCore::harfBuzzFontFunctions): Also moved from HarfBuzzFaceCairo.cpp, but implement get_nominal/variation
        functions when using HarfBuzz >= 1.2.3 and use Font::glyphForCharacter() to make it simpler.
        (WebCore::fontFeatures): Moved from HarfBuzzFaceCairo.cpp.
        (WebCore::findScriptForVerticalGlyphSubstitution): Moved from HarfBuzzFace.cpp.
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): Create the HarfBuzz face and font here.
        * platform/graphics/harfbuzz/HarfBuzzFace.cpp: Removed.
        * platform/graphics/harfbuzz/HarfBuzzFace.h: Removed.
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: Removed.
        * platform/graphics/harfbuzz/HbUniquePtr.h:
        (WebCore::HbPtrDeleter<hb_face_t>::operator() const): Add deleter for hb_face_t.
        * platform/graphics/opentype/OpenTypeMathData.cpp:
        (WebCore::OpenTypeMathData::OpenTypeMathData): Use FontPlatformData::createOpenTypeMathHarfBuzzFont().

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Add initial implementation of variation fonts
        https://bugs.webkit.org/show_bug.cgi?id=192151

        Reviewed by Michael Catanzaro.

        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::font): Remove platform ifdefs.
        * loader/cache/CachedFont.cpp:
        (WebCore::CachedFont::platformDataFromCustomData): Ditto.
        * platform/graphics/FontPlatformData.h:
        (WebCore::FontPlatformData::isFixedWidth const):
        * platform/graphics/cairo/FontCustomPlatformData.h: Use RefPtr for cairo_font_face_t.
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        (WebCore::getFontPropertiesFromPattern): Helper function to get several font properties from the fontconfig
        pattern.
        (WebCore::FontCache::systemFallbackForCharacters): Use getFontPropertiesFromPattern().
        (WebCore::FontCache::createFontPlatformData): Pass FC_VARIABLE to the pattern and call buildVariationSettings()
        before creating the FontPlatformData to set FC_FONT_VARIATIONS on the pattern.
        (WebCore::defaultVariationValues): Parse font variations table.
        (WebCore::buildVariationSettings): Build a font variations string from the settings that can be passed to cairo.
        * platform/graphics/freetype/FontCacheFreeType.h: Added.
        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
        (WebCore::FontCustomPlatformData::FontCustomPlatformData): Use RefPtr and make freeTypeFaceKey global.
        (WebCore::FontCustomPlatformData::~FontCustomPlatformData): Remove explicit destroy.
        (WebCore::defaultFontconfigOptions): Moved here from FontCacheFreeType.
        (WebCore::FontCustomPlatformData::fontPlatformData): Call buildVariationSettings() before creating the
        FontPlatformData to set FC_FONT_VARIATIONS on the pattern.
        (WebCore::FontCustomPlatformData::supportsFormat): Add variation formats.
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        (WebCore::setCairoFontOptionsFromFontConfigPattern): Call cairo_font_options_set_variations() with the
        FC_FONT_VARIATIONS value from the pattern.
        (WebCore::FontPlatformData::FontPlatformData): Use a single constructor that always receives a valid fontconfig
        pattern.
        (WebCore::FontPlatformData::fcPattern const): Return the fontconfig pattern.
        (WebCore::FontPlatformData::platformIsEqual const): Update the condition now that m_pattern can't be nullptr.
        (WebCore::FontPlatformData::buildScaledFont): Use m_pattern unconditionally.
        * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
        (WebCore::Font::platformCreateScaledFont const): Update it to use the new FontPlatformData constructor.
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:
        (WebCore::HarfBuzzFace::createFont): Pass variations to HarfBuzz.
        * platform/graphics/win/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData):
        * platform/graphics/win/FontCustomPlatformData.h:

2018-12-11  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag for CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=192610

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * bindings/js/JSTypedOMCSSStyleValueCustom.cpp:
        * css/typedom/StylePropertyMapReadOnly.h:
        * css/typedom/StylePropertyMapReadOnly.idl:
        * css/typedom/TypedOMCSSImageValue.h:
        * css/typedom/TypedOMCSSImageValue.idl:
        * css/typedom/TypedOMCSSNumericValue.h:
        * css/typedom/TypedOMCSSNumericValue.idl:
        * css/typedom/TypedOMCSSStyleValue.h:
        * css/typedom/TypedOMCSSStyleValue.idl:
        * css/typedom/TypedOMCSSUnitValue.h:
        * css/typedom/TypedOMCSSUnitValue.idl:
        * css/typedom/TypedOMCSSUnparsedValue.h:
        * css/typedom/TypedOMCSSUnparsedValue.idl:
        * features.json:
        * html/ImageBitmap.cpp:
        * html/ImageBitmap.h:
        * html/canvas/CanvasDrawImage.idl:
        * html/canvas/CanvasFillStrokeStyles.idl:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        * html/canvas/CanvasRenderingContext2DBase.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildAction):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setCSSTypedOMEnabled):
        (WebCore::RuntimeEnabledFeatures::cssTypedOMEnabled const):
        * page/WindowOrWorkerGlobalScope.idl:

2018-12-10  Ryosuke Niwa  <rniwa@webkit.org>

        connectedCallback is invoked during the removal of the element inside another element's connectedCallback
        https://bugs.webkit.org/show_bug.cgi?id=183586
        <rdar://problem/38403504>

        Reviewed by Frédéric Wang.

        Align WebKit's behavior with Chrome/Firefox with regards to https://github.com/w3c/webcomponents/issues/760

        After much discussion, it's unclear that there is a clear path forward to fixing the oddness that
        the presence of a custom element reaction changes the timing at which another reaction callback gets invoked.
        So matching Chrome/Firefox behaviors in this case seems the path of the least resistance to interoperability.

        Namely, this patch makes WebKit not insert a custom element to the appropriate element queue when the element
        does not have a matching reaction callback. Put it another way, steps 3-5 in would be done before step 6 in:
        https://html.spec.whatwg.org/multipage/custom-elements.html#enqueue-a-custom-element-callback-reaction
            1. Let definition be element's custom element definition.
            2. Let callback be the value of the entry in definition's lifecycle callbacks with key callbackName.
            3. If callback is null, then return
            4. If callbackName is "attributeChangedCallback", then:
                1. Let attributeName be the first element of args.
                2. If definition's observed attributes does not contain attributeName, then return.
            5. Add a new callback reaction to element's custom element reaction queue, with callback function callback
               and arguments args.
            6. Enqueue an element on the appropriate element queue given element.

        Test: fast/custom-elements/enqueue-custom-element-callback-reactions-inside-another-callback.html

        * dom/CustomElementReactionQueue.cpp:
        (WebCore::CustomElementReactionQueue::enqueueElementUpgrade):
        (WebCore::CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded):
        (WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded):
        (WebCore::CustomElementReactionQueue::enqueueAdoptedCallbackIfNeeded):
        (WebCore::CustomElementReactionQueue::enqueueAttributeChangedCallbackIfNeeded):
        (WebCore::CustomElementReactionQueue::enqueuePostUpgradeReactions):
        (WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue): Renamed from ensureCurrentQueue.
        * dom/CustomElementReactionQueue.h:

2018-12-11  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Implement WebGPUBuffer, and some nullibility consistency in WebGPU
        https://bugs.webkit.org/show_bug.cgi?id=192516

        Reviewed by Dean Jackson.

        Test: webgpu/buffers.html

        Enable basic creation of WebGPUBuffers, and fix nullability inconsitencies in WebGPU implementation.

        Add necessary symbols and files for Web/GPUBuffer, Web/GPUBufferUsage, and Web/GPUBufferDescriptor:
        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

        * Modules/webgpu/WebGPUBuffer.cpp: Added.
        (WebCore::WebGPUBuffer::create):
        (WebCore::WebGPUBuffer::WebGPUBuffer):
        * Modules/webgpu/WebGPUBuffer.h: Added.
        (WebCore::WebGPUBuffer::mapping const):
        (WebCore::WebGPUBuffer::unmap): Unimplemented stub, for now, as Metal equivalent is unclear.
        (WebCore::WebGPUBuffer::destroy): Unimplemented stub.
        * Modules/webgpu/WebGPUBuffer.idl: Added.
        * Modules/webgpu/WebGPUBufferDescriptor.h: Added.
        * Modules/webgpu/WebGPUBufferDescriptor.idl: Added.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createBuffer const): Added.
        * platform/graphics/gpu/GPUBuffer.h:
        (WebCore::GPUBuffer::platformBuffer const):
        (WebCore::GPUBuffer::mapping const):
        * platform/graphics/gpu/GPUBufferDescriptor.h: Added.
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::createBuffer const): Added.
        * platform/graphics/gpu/GPUDevice.h:
        * platform/graphics/gpu/cocoa/GPUBufferMetal.mm: Added.
        (WebCore::GPUBuffer::create): Attempt to create a page-aligned Gigacage to back the GPUBuffer's ArrayBuffer. 
        (WebCore::GPUBuffer::GPUBuffer):
        (WebCore::GPUBuffer::~GPUBuffer): Dereference mapped ArrayBuffer first.

        Small benign edits, most to make nullability more consistent in WebGPU classes:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::create):
        (WebCore::WebGPUCommandBuffer::beginRenderPass):
        * Modules/webgpu/WebGPUCommandBuffer.h:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::create):
        (WebCore::WebGPUDevice::WebGPUDevice):
        (WebCore::WebGPUDevice::createShaderModule const):
        (WebCore::WebGPUDevice::createRenderPipeline const):
        (WebCore::WebGPUDevice::createCommandBuffer const):
        * Modules/webgpu/WebGPUDevice.h:
        (WebCore::WebGPUDevice::device const):
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::create):
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create):
        * Modules/webgpu/WebGPURenderPassEncoder.h:
        * Modules/webgpu/WebGPUShaderModule.cpp:
        (WebCore::WebGPUShaderModule::create):
        (WebCore::WebGPUShaderModule::WebGPUShaderModule):
        * Modules/webgpu/WebGPUShaderModule.h:
        (WebCore::WebGPUShaderModule::module const):
        * Modules/webgpu/WebGPUSwapChain.idl: Sync with IDL changes.
        * Modules/webgpu/WebGPUTexture.cpp:
        (WebCore::WebGPUTexture::create):
        (WebCore::WebGPUTexture::createDefaultTextureView):
        * Modules/webgpu/WebGPUTextureView.cpp:
        (WebCore::WebGPUTextureView::create):
        * Modules/webgpu/WebGPUTextureView.h:
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::create):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::create):
        * platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
        (WebCore::GPUShaderModule::create):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::setDevice):
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
        (WebCore::GPUTexture::GPUTexture):

2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix warning -Wmissing-field-initializers
        https://bugs.webkit.org/show_bug.cgi?id=192584

        Reviewed by Yusuke Suzuki.

        Initialize a struct with '{ }' instead of '= {0}'.

        No new tests, no behavior changes.

        * platform/graphics/win/FontCacheWin.cpp:
        (WebCore::FontCache::lastResortFallbackFont):
        * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp:
        (WebCore::MediaPlayerPrivateFullscreenWindow::createWindow):
        * platform/win/ClipboardUtilitiesWin.cpp:
        (WebCore::setFileDescriptorData):
        (WebCore::setFileContentData):
        (WebCore::setUCharData):
        (WebCore::setUtf8Data):
        (WebCore::setCFData):
        * platform/win/CursorWin.cpp:
        (WebCore::createSharedCursor):
        * platform/win/DefWndProcWindowClass.cpp:
        (WebCore::registerClass):
        * platform/win/DragImageWin.cpp:
        (WebCore::createDragImageIconForCachedImageFilename):
        * platform/win/PasteboardWin.cpp:
        (WebCore::writeURL):
        (WebCore::Pasteboard::writeString):
        (WebCore::Pasteboard::writeRangeToDataObject):
        (WebCore::Pasteboard::writePlainTextToDataObject):
        (WebCore::writeFileToDataObject):
        (WebCore::Pasteboard::writeMarkup):
        * platform/win/PopupMenuWin.cpp:
        (WebCore::PopupMenuWin::show):
        * platform/win/SSLKeyGeneratorWin.cpp:
        (WebCore::WebCore::signedPublicKeyAndChallengeString):

2018-12-11  Jer Noble  <jer.noble@apple.com>

        Globally namespaced objects shouldn't use framework-prefixed names
        https://bugs.webkit.org/show_bug.cgi?id=192600

        Reviewed by Eric Carlson.

        Rename CMSampleBufferIs... -> isCMSampleBuffer...

        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
        (WebCore::isCMSampleBufferRandomAccess):
        (WebCore::isCMSampleBufferNonDisplaying):
        (WebCore::MediaSampleAVFObjC::flags const):
        (WebCore::CMSampleBufferIsRandomAccess): Deleted.
        (WebCore::CMSampleBufferIsNonDisplaying): Deleted.

2018-12-11  Brent Fulgham  <bfulgham@apple.com>

        Don't attempt to compute animated values when there is no relevant animation
        https://bugs.webkit.org/show_bug.cgi?id=192591
        <rdar://problem/34336946>

        Reviewed by Dean Jackson.

        Check if the property is supposed to be animated, or has animatable features, before
        attempting to calculate the current animated value.

        Test: svg/animations/avoid-calculating-for-non-animating-elements.html

        * svg/SVGAnimateElementBase.cpp:
        (WebCore::SVGAnimateElementBase::calculateAnimatedValue):

2018-12-11  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix typos in console log from r239087.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):

2018-12-11  Tim Horton  <timothy_horton@apple.com>

        WebCore shouldn't have a Objective-C class named NSCursor
        https://bugs.webkit.org/show_bug.cgi?id=192602
        <rdar://problem/46615532>

        Reviewed by Wenson Hsieh.

        * platform/ios/wak/WAKAppKitStubs.h:
        * platform/ios/wak/WAKAppKitStubs.m:
        (+[NSCursor setHiddenUntilMouseMoves:]): Deleted.
        Get rid of the class.
        Also remove a comment that seems to have detached from wherever it's supposed to be.

2018-12-11  Chris Dumez  <cdumez@apple.com>

        Restrict DeviceMotion / DeviceOrientation APIs to secure contexts
        https://bugs.webkit.org/show_bug.cgi?id=192595
        <rdar://problem/46382603>

        Reviewed by Dean Jackson.

        Tests: http/tests/events/device-orientation-motion-non-secure-context.html
               http/tests/events/device-orientation-motion-secure-context.html

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::addEventListener):
        * page/SecurityOrigin.h:
        (WebCore::SecurityOrigin::setIsPotentiallyTrustworthy):
        * testing/Internals.cpp:
        (WebCore::Internals::markContextAsInsecure):
        (WebCore::Internals::postTask):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-12-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Send the full list of file upload URLs and types in PasteboardItemInfo
        https://bugs.webkit.org/show_bug.cgi?id=192598
        Work towards <rdar://problem/35626913>

        Reviewed by Tim Horton.

        Refactors PasteboardItemInfo to contain lists of file URLs and corresponding pasteboard types, instead of just
        a "preferred" file upload URL and type. See below for more details.

        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::pathForContentType const):

        Add a helper method to find a file upload URL corresponding to a given type.

        (WebCore::PasteboardItemInfo::encode const):
        (WebCore::PasteboardItemInfo::decode):

        Change `pathForFileUpload` to `pathsForFileUpload`, and `contentTypeForFileUpload` to `contentTypesForFileUpload`.

        * platform/ios/AbstractPasteboard.h:
        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::readRespectingUTIFidelities):

        Adjust this to take the file path for the highest fidelity representation in `pathsForContentType`.

        (WebCore::Pasteboard::readFilePaths):
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::informationForItemAtIndex):
        * platform/ios/WebItemProviderPasteboard.h:
        * platform/ios/WebItemProviderPasteboard.mm:
        (-[NSItemProvider web_containsFileURLAndFileUploadContent]):
        (-[NSItemProvider web_fileUploadContentTypes]):

        Replace `web_containsFileUploadContent` with `web_fileUploadContentTypes`, which returns the full list of file
        upload content types (rather than just a `BOOL` indicating whether one or more of these types exist).

        (-[WebItemProviderPasteboard fileUploadURLsAtIndex:fileTypes:]):
        (-[WebItemProviderPasteboard numberOfFiles]):
        (-[NSItemProvider web_containsFileUploadContent]): Deleted.
        (-[WebItemProviderPasteboard preferredFileUploadURLAtIndex:fileType:]): Deleted.

        Replaced with `-fileUploadURLsAtIndex:fileTypes:`. This implementation currently just returns the highest
        fidelity loaded type identifier, but this is wrong because it doesn't take into account inline data types that
        shouldn't be represented as data for file uploads (for instance, it never makes sense to upload the internal
        data serialization for an `NSURL` as a file on the web).

        Instead, use existing logic in `web_fileUploadContentTypes` to determine which file types can be treated as file
        uploads, and return all of these file types that we've loaded.

2018-12-11  Don Olmstead  <don.olmstead@sony.com>

        Resource Load Statistics: Use common implementation within NetworkStorageSession
        https://bugs.webkit.org/show_bug.cgi?id=192592

        Reviewed by Alex Christensen.

        There's nothing within the resource load statistics implementation contained
        in NetworkStorageSessionCFNet that was CF specific. All of the resource load
        statistics methods are moved from that file to the root NetworkStorageSession
        implementation.

        * platform/network/NetworkStorageSession.cpp:
        (WebCore::getPartitioningDomain):
        (WebCore::NetworkStorageSession::shouldBlockThirdPartyCookies const):
        (WebCore::NetworkStorageSession::shouldBlockCookies const):
        (WebCore::NetworkStorageSession::maxAgeCacheCap):
        (WebCore::NetworkStorageSession::setAgeCapForClientSideCookies):
        (WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor):
        (WebCore::NetworkStorageSession::removePrevalentDomains):
        (WebCore::NetworkStorageSession::hasStorageAccess const):
        (WebCore::NetworkStorageSession::getAllStorageAccessEntries const):
        (WebCore::NetworkStorageSession::grantStorageAccess):
        (WebCore::NetworkStorageSession::removeStorageAccessForFrame):
        (WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage):
        (WebCore::NetworkStorageSession::removeAllStorageAccess):
        (WebCore::NetworkStorageSession::setCacheMaxAgeCapForPrevalentResources):
        (WebCore::NetworkStorageSession::resetCacheMaxAgeCapForPrevalentResources):
        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::getPartitioningDomain): Deleted.
        (WebCore::NetworkStorageSession::shouldBlockThirdPartyCookies const): Deleted.
        (WebCore::NetworkStorageSession::shouldBlockCookies const): Deleted.
        (WebCore::NetworkStorageSession::maxAgeCacheCap): Deleted.
        (WebCore::NetworkStorageSession::setAgeCapForClientSideCookies): Deleted.
        (WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor): Deleted.
        (WebCore::NetworkStorageSession::removePrevalentDomains): Deleted.
        (WebCore::NetworkStorageSession::hasStorageAccess const): Deleted.
        (WebCore::NetworkStorageSession::getAllStorageAccessEntries const): Deleted.
        (WebCore::NetworkStorageSession::grantStorageAccess): Deleted.
        (WebCore::NetworkStorageSession::removeStorageAccessForFrame): Deleted.
        (WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage): Deleted.
        (WebCore::NetworkStorageSession::removeAllStorageAccess): Deleted.
        (WebCore::NetworkStorageSession::setCacheMaxAgeCapForPrevalentResources): Deleted.
        (WebCore::NetworkStorageSession::resetCacheMaxAgeCapForPrevalentResources): Deleted.

2018-12-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: overlay bounds rulers don't match element when page is scrolled
        https://bugs.webkit.org/show_bug.cgi?id=192577

        Reviewed by Joseph Pecoraro.

        When drawing the highlight for a node, the canvas is translated based on the scroll position
        of the node. This translation was not applied to the bounds calculations, which meant that
        the bounds always drew where the node would have been if it wasn't scrolled.

        * inspector/InspectorOverlayPage.js:
        (Bounds.prototype.get minX):
        (Bounds.prototype.get minY):
        (Bounds.prototype.get maxX):
        (Bounds.prototype.get maxY):
        (Bounds.prototype.offset): Added.
        (drawNodeHighlight):
        Drive-by: draw bounds for every node being highlighted instead of just the first one.
        Drive-by: switch the bounds color to be a semi-transparent red for more visibility/contrast.

2018-12-11  Andy Estes  <aestes@apple.com>

        Introduce makeBlockPtr for lambdas
        https://bugs.webkit.org/show_bug.cgi?id=192594

        Reviewed by Alex Christensen.

        Adopted makeBlockPtr.

        * platform/cocoa/FileMonitorCocoa.mm:
        (WebCore::FileMonitor::FileMonitor):
        * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm:
        (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm:
        (WebCore::GPULegacyCommandBuffer::GPULegacyCommandBuffer):
        * platform/network/cocoa/WebCoreNSURLSession.mm:
        (-[WebCoreNSURLSession addDelegateOperation:]):
        (-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
        (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]):

2018-12-10  Brent Fulgham  <bfulgham@apple.com>

        SVGViewSpec objects should mark relevant SVG elements
        https://bugs.webkit.org/show_bug.cgi?id=192567
        <rdar://problem/46491325>

        Reviewed by Ryosuke Niwa.

        SVGViewSpec elements reflect the state of an underlying SVGElement. Teach the mark algorithm to
        recognize the relevant SVGElement as active as long as the SVGViewSpec is active.

        Update SVGElement so that it can vend WeakPtrs. I also noticed that SVGAttributeOwner used a bare
        pointer to the SVGElement, so switched to a WeakPtr.

        Test: svg/animations/view-dependency-crash.html

        * Sources.txt: Add new files.
        * WebCore.xcodeproj/project.pbxproj: Ditto.
        * bindings/js/JSSVGViewSpecCustom.cpp: Added.
        (WebCore::JSSVGViewSpec::visitAdditionalChildren):
        * svg/SVGElement.h:
        * svg/SVGPathElement.h:
        * svg/SVGViewSpec.cpp:
        (WebCore::SVGViewSpec::SVGViewSpec): Hold a weak pointer (rather than a bare pointer) to the underlying element.
        * svg/SVGViewSpec.h:
        * svg/SVGViewSpec.idl:
        * svg/properties/SVGAttributeOwnerProxy.cpp: Added.
        (WebCore::SVGAttributeOwnerProxy::SVGAttributeOwnerProxy): Hold a weak pointer (rather than a bare pointer) to
        the underling SVGElement.
        (WebCore::SVGAttributeOwnerProxy::element const): Ditto.
        * svg/properties/SVGAttributeOwnerProxy.h:
        (WebCore::SVGAttributeOwnerProxy::SVGAttributeOwnerProxy): Move implementation to cpp file.
        (WebCore::SVGAttributeOwnerProxy::element const): Ditto.
        * svg/properties/SVGAttributeOwnerProxyImpl.h: Update for WeakPtr use.

2018-12-10  Benjamin Poulain  <benjamin@webkit.org>

        <rdar://problem/45296285> Content blocker rule "raw" blocks media elements from loading
        https://bugs.webkit.org/show_bug.cgi?id=192439

        Reviewed by Dean Jackson.

        This broken when WebKit switched to NSURLSession.
        In CachedResourceLoader::requestResource(), toResourceType() was turning media load into RAW.

        Test: http/tests/contentextensions/video-element-resource-type.html

        * loader/ResourceLoadInfo.cpp:
        (WebCore::toResourceType):

2018-12-10  Don Olmstead  <don.olmstead@sony.com>

        Move ENABLE_RESOURCE_LOAD_STATISTICS to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=192573

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-12-10  Justin Michaud  <justin_michaud@apple.com>

        CS Painting API should support multiple worklets.
        https://bugs.webkit.org/show_bug.cgi?id=192335

        Reviewed by Dean Jackson.

        Adds a new map to support separate paint worklet global scopes (one for each worklet). Also
        adds some tests and a fix for a repaint bug that this oncovered, where changing a custom property required
        for paint would not trigger a repaint if there had not been a valid value set before.

        Test: fast/css-custom-paint/multiple-worklets.html

        * css/CSSPaintImageValue.cpp:
        (WebCore::CSSPaintImageValue::image):
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::applyProperty):
        * dom/Document.cpp:
        (WebCore::Document::prepareForDestruction):
        (WebCore::Document::paintWorkletGlobalScope):
        (WebCore::Document::setPaintWorkletGlobalScope):
        * dom/Document.h:
        (WebCore::Document::paintWorkletGlobalScope): Deleted.
        * rendering/style/RenderStyle.cpp:
        (WebCore::changedCustomPaintWatchedProperty):
        * worklets/Worklet.cpp:
        (WebCore::Worklet::addModule):
        * worklets/WorkletGlobalScope.cpp:
        (WebCore::WorkletGlobalScope::prepareForDestruction):

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Remove derived classes of RealtimeMediaSourceCenter
        https://bugs.webkit.org/show_bug.cgi?id=192546

        Reviewed by Eric Carlson.

        Remove virtual methods of RealtimeMediaSourceCenter and remove derived classes of it.
        Instead port specific implementation directly implement the needed default factory methods.

        Renamed some methods for improved consistency.
        Moved some static variables as RealtimeMediaSourceCenter members.

        No change of behavior.

        * WebCore.xcodeproj/project.pbxproj:
        * page/DeprecatedGlobalSettings.cpp:
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::createMediaStream):
        (WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices):
        (WebCore::RealtimeMediaSourceCenter::getUserMediaDevices):
        (WebCore::RealtimeMediaSourceCenter::setVideoCapturePageState):
        (WebCore::RealtimeMediaSourceCenter::setAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::audioCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::setVideoFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetVideoFactory):
        (WebCore::RealtimeMediaSourceCenter::videoCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::setDisplayCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetDisplayCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::displayCaptureFactory):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::~RealtimeVideoSource):
        (WebCore::RealtimeVideoSource::prepareToProduceData):
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
        (WebCore::RealtimeMediaSourceCenter::singleton):
        (WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.h: Removed.
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa):
        (WebCore::DisplayCaptureSourceCocoa::startProducingData):
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        (WebCore::RealtimeMediaSourceCenter::singleton):
        (WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h: Removed.
        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
        (WebCore::MockRealtimeAudioSource::startProducingData):
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled):
        (WebCore::MockRealtimeMediaSourceCenter::audioCaptureFactory):
        (WebCore::MockRealtimeMediaSourceCenter::videoCaptureFactory):
        * platform/mock/MockRealtimeMediaSourceCenter.h:

2018-12-10  Youenn Fablet  <youenn@apple.com>

        DataChannels created asynchronously never open and are unusable
        https://bugs.webkit.org/show_bug.cgi?id=192566

        Reviewed by Eric Carlson.

        For every new data channel (remote or local), we should check the underlying backend state.
        This allows firing events if needed.
        We were not always doing that which was prohibiting sending some open
        events for data channels created after the SCTP connection is set up.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
        (WebCore::LibWebRTCDataChannelHandler::channelEvent):
        (WebCore::LibWebRTCDataChannelHandler::setClient):
        (WebCore::LibWebRTCDataChannelHandler::OnStateChange):
        (WebCore::LibWebRTCDataChannelHandler::checkState):
        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:

2018-12-10  Ryosuke Niwa  <rniwa@webkit.org>

        Use WeakPtr to refer to VTTCue in VTTCueBox
        https://bugs.webkit.org/show_bug.cgi?id=192575

        Reviewed by Eric Carlson.

        Address the FIXME in VTTCue::~VTTCue by clearing VTTCueBox::m_cue when VTTCue goes away.
        This is implemented by simply using WeakPtr.

        No new tests since there shoul be no behaivoral change.

        * html/track/TextTrackCueGeneric.cpp:
        (WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
        * html/track/VTTCue.cpp:
        (WebCore::VTTCueBox::VTTCueBox):
        (WebCore::VTTCueBox::getCue const):
        (WebCore::VTTCueBox::applyCSSProperties):
        (WebCore::VTTCue::~VTTCue):
        * html/track/VTTCue.h:
        (WebCore::VTTCueBox::fontSizeFromCaptionUserPrefs const):

2018-12-10  Mark Lam  <mark.lam@apple.com>

        PropertyAttribute needs a CustomValue bit.
        https://bugs.webkit.org/show_bug.cgi?id=191993
        <rdar://problem/46264467>

        Reviewed by Saam Barati.

        This patch revealed a bug in the CodeGenerator where a constructor property is
        set with a ReadOnly attribute.  This conflicts with the WebIDL link (see clause
        12 in https://heycam.github.io/webidl/#interface-prototype-object) which states
        that it should be [Writable].  The ReadOnly attribute is now removed.

        On the WebCore side, this change is covered by existing tests.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
        (WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):

2018-12-10  Antti Koivisto  <antti@apple.com>

        Rename "forced style recalc" to "full style rebuild"
        https://bugs.webkit.org/show_bug.cgi?id=192572

        Reviewed by Zalan Bujtas.

        The old name is confusing.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::hasValidStyleForProperty):
        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRebuild):
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::unscheduleStyleRecalc):
        (WebCore::Document::hasPendingStyleRebuild const):
        (WebCore::Document::resolveStyle):
        (WebCore::Document::needsStyleRecalc const):
        (WebCore::Document::updateLayoutIgnorePendingStylesheets):
        (WebCore::Document::invalidateMatchedPropertiesCacheAndForceStyleRecalc):
        (WebCore::Document::setDesignMode):
        (WebCore::Document::webkitDidExitFullScreenForElement):
        (WebCore::Document::setAnimatingFullScreen):
        (WebCore::Document::setFullscreenControlsHidden):
        (WebCore::Document::scheduleForcedStyleRecalc): Deleted.
        (WebCore::Document::hasPendingForcedStyleRecalc const): Deleted.
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::needsStyleInvalidation const):
        * page/Page.cpp:
        (WebCore::Page::updateStyleAfterChangeInEnvironment):
        * style/StyleScope.cpp:
        (WebCore::Style::Scope::updateActiveStyleSheets):

2018-12-10  Alexey Proskuryakov  <ap@apple.com>

        Include CoreGraphics.h from WebCorePrefix.h
        https://bugs.webkit.org/show_bug.cgi?id=192557

        Reviewed by Tim Horton.

        The theory is that this will improve build time. Let's try and see what bots say.

        * WebCorePrefix.h:

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Unable to upload data that conforms to "public.item" but not "public.content"
        https://bugs.webkit.org/show_bug.cgi?id=192555
        <rdar://problem/35204990>

        Reviewed by Tim Horton.

        Add support for uploading content that conforms to "public.item" via drag and drop. Currently, iOS WebKit only
        supports data that conforms to "public.content", but there exist several types of files that conform to
        "public.item" but not "public.content". See below for more detail.

        Test: DragAndDropTests.ExternalSourcePKCS12ToSingleFileInput

        * platform/ios/PasteboardIOS.mm:
        (WebCore::Pasteboard::supportedFileUploadPasteboardTypes):

        Update this to include "public.item", and remove "public.folder", which is now redundant because "public.folder"
        conforms to "public.item".

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

        Pull out the "contains content that is supported for file uploads" part of this helper method into a separate
        method, and use it within `-web_containsFileURLAndFileUploadContent`. Note that this prevents "public.url"-
        conformant data from being uploaded as files (i.e., we never want to upload a URL string *itself* as a file).
        Drawing this distinction ensures that we don't confuse item providers that contain just a URL as files when
        dropping into a file upload area or file input (see API test: ExternalSourceZIPArchiveAndURLToSingleFileInput
        for an example of this corner case).

        (-[NSItemProvider web_containsFileUploadContent]):
        (-[WebItemProviderPasteboard numberOfFiles]):

        Refactor this to use `-web_containsFileUploadContent`.

2018-12-10  Chris Dumez  <cdumez@apple.com>

        Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192509
        <rdar://problem/46500832>

        Reviewed by Alex Christensen.

        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::setCustomUserAgent):
        (WebCore::DocumentLoader::customUserAgent const):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::userAgent const):

2018-12-10  Adrian Perez de Castro  <aperez@igalia.com>

        [GLib] FileSystem::moveFile() should fall back to copying
        https://bugs.webkit.org/show_bug.cgi?id=192562

        Reviewed by Michael Catanzaro.

        No new tests needed.

        * platform/glib/FileSystemGlib.cpp:
        (WebCore::FileSystem::moveFile): Use g_file_move() instead of a plain g_rename(), which
        provides a fall-back which does copy+delete when a direct move or rename cannot be done.

2018-12-10  Simon Fraser  <simon.fraser@apple.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>
        
        Re-land r239010 after over-zealous rollout.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::attachToStateTree):
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::attachToStateTree):
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::insertChild):
        (WebCore::ScrollingStateNode::indexOfChild const):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::nodeTypeAndParentMatch const):
        (WebCore::ScrollingStateTree::attachNode):
        * page/scrolling/ScrollingStateTree.h:

2018-12-10  Antti Koivisto  <antti@apple.com>

        Document should throttle style recalc even when m_pendingStyleRecalcShouldForce is true.
        https://bugs.webkit.org/show_bug.cgi?id=191695

        Reviewed by Zalan Bujtas.

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

        Don't test for m_pendingStyleRecalcShouldForce.

        (WebCore::Document::hasPendingStyleRecalc const):
        (WebCore::Document::hasPendingForcedStyleRecalc const):

        Don't base the pending status of these function on whether the timer is running.
        Instead check if the style is invalid.

2018-12-10  Rob Buis  <rbuis@igalia.com>

        XMLHttpRequest removes spaces from content-types before processing
        https://bugs.webkit.org/show_bug.cgi?id=8644

        Reviewed by Chris Dumez.

        Stop trimming white space characters from the middle of
        type/subtype value. Also make sure whitespace being parsed
        adheres to OWS definition from RFC 7230 Section 3.2.3
        (referenced by RFC 7231), i.e. space or HT.

        Based on http://crrev.com/416586.

        Behavior matches Firefox and Chrome.

        Tests: http/tests/xmlhttprequest/supported-xml-content-types.html
               web-platform-tests/mimesniff/mime-types/parsing.any.html
               web-platform-tests/mimesniff/mime-types/parsing.any.worker.html

        * platform/network/HTTPParsers.cpp:
        (WebCore::extractMIMETypeFromMediaType):

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Caret is obscured by finger when dragging over an editable element
        https://bugs.webkit.org/show_bug.cgi?id=192499
        <rdar://problem/46570101>

        Reviewed by Tim Horton.

        * page/DragActions.h:

        Move DragHandlingMethod to DragActions.h, and drive-by fix some minor issues (i.e. make a couple of enum classes
        use 8 bits, fix the indentation levels, and update the copyright year). Also add `EnumTraits` for
        DragHandlingMethod so that it may be encoded over IPC.

        * page/DragController.cpp:
        (WebCore::dragIsHandledByDocument):

        Simplify this helper function.

        (WebCore::DragController::tryDocumentDrag):
        * page/DragController.h:

        Expose the current DragHandlingMethod via a const getter method.

        (WebCore::DragController::dragHandlingMethod const):

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Make mock capture happen in the process used for real capture
        https://bugs.webkit.org/show_bug.cgi?id=192544

        Reviewed by Eric Carlson.

        MockRealtimeMediaSourceCenter previously was setting its factories whenever mock capture is on.
        Add booleans to choose which source (audio, video, display) will actually be toggled on.

        Covered by existing tests.

        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled):
        * platform/mock/MockRealtimeMediaSourceCenter.h:
        (WebCore::MockRealtimeMediaSourceCenter::setMockAudioCaptureEnabled):
        (WebCore::MockRealtimeMediaSourceCenter::setMockVideoCaptureEnabled):
        (WebCore::MockRealtimeMediaSourceCenter::setMockDisplayCaptureEnabled):

2018-12-10  Dean Jackson  <dino@apple.com>

        Use text/javascript as recommended by the HTML specification
        https://bugs.webkit.org/show_bug.cgi?id=192525
        <rdar://problem/46569636>

        Reviewed by Jon Lee.

        The HTML specification says we should use text/javascript for
        JavaScript files:
        https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages:javascript-mime-type

        * loader/cache/CachedScript.cpp: Replace application/javascript with text/javascript.
        (WebCore::CachedScript::CachedScript):
        * platform/network/ios/WebCoreURLResponseIOS.mm: Ditto.
        (WebCore::createExtensionToMIMETypeMap):
        * platform/network/mac/WebCoreURLResponse.mm: Ditto.
        (WebCore::createExtensionToMIMETypeMap):

2018-12-10  Dean Jackson  <dino@apple.com>

        [iOS] Make WebGPU work with remote layer hosting
        https://bugs.webkit.org/show_bug.cgi?id=192508
        <rdar://problem/46560649>

        Reviewed by Tim Horton.

        WebGPU wasn't working on iOS because we were not correctly
        identifying the CALayers for remote hosting. Fix this by
        adding a new CALayer type, WebGPULayer. This will also
        eventually hold the code to render WebGPU into a canvas.

        Covered by the existing reference tests (on device).

        * SourcesCocoa.txt: Add new files.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: Recognise the WebGPULayer
        class for remote hosting.
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):

        * platform/graphics/cocoa/WebGPULayer.h: Added. Very simple inheritance
        from CAMetalLayer.
        * platform/graphics/cocoa/WebGPULayer.mm: Added.
        (-[WebGPULayer init]):
        (-[WebGPULayer copyImageSnapshotWithColorSpace:]):

        * platform/graphics/gpu/GPUSwapChain.h: Reference WebGPULayer rather
        than CALayer.

        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm: Ensure that
        the WebGPULayer has a reference back to this object, which it
        will use in the future.
        (WebCore::GPUSwapChain::create):
        (WebCore::GPUSwapChain::GPUSwapChain):

2018-12-10  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238965.

        Caused internal iOS build failures

        Reverted changeset:

        "[iOS] Make WebGPU work with remote layer hosting"
        https://bugs.webkit.org/show_bug.cgi?id=192508
        https://trac.webkit.org/changeset/238965

2018-12-10  Youenn Fablet  <youenn@apple.com>

        MockLibWebRTCPeerConnectionFactory should isolate copy its test case
        https://bugs.webkit.org/show_bug.cgi?id=192545

        Reviewed by Eric Carlson.

        Isolate copy the test case member so that it can be destroyed on another thread.
        Covered by existing test that should no longer crash.

        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::useMockRTCPeerConnectionFactory):
        (WebCore::MockLibWebRTCPeerConnectionFactory::MockLibWebRTCPeerConnectionFactory):
        * testing/MockLibWebRTCPeerConnection.h:
        (WebCore::MockLibWebRTCPeerConnectionFactory::create):

2018-12-09  Youenn Fablet  <youenn@apple.com>

        Move capture manager from RealtimeMediaSourceCenter to capture factory
        https://bugs.webkit.org/show_bug.cgi?id=192542

        Reviewed by Eric Carlson.

        We should be able to run mock captures in wither UIProcess or WebProcess.
        Currently, mock capture is only done in WebProcess.
        This patch is a first step towards that goal.

        It also simplifies RealtimeMediaSourceCenter implementation by starting to remove virtual methods.
        Further refactoring will remove the need to subclass RealtimeMediaSourceCenter.
        Instead, remaining virtual methods will become non virtual and their
        implementation will become port specific.

        Removed a JS internal method that is not longer used to further simplify RealtimeMediaSourceCenter.

        No visible change of behavior.
        Covered by existing tests.

        * platform/mediastream/CaptureDeviceManager.h:
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::singleton):
        (WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices):
        (WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices):
        (WebCore::RealtimeMediaSourceCenter::getUserMediaDevices):
        (WebCore::RealtimeMediaSourceCenter::captureDeviceWithPersistentID):
        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetVideoFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetDisplayCaptureFactory):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        * platform/mediastream/RealtimeMediaSourceFactory.h:
        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.h:
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSourceFactory::audioCaptureDeviceManager):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled):
        (WebCore::MockRealtimeMediaSourceCenter::audioFactory):
        (WebCore::MockRealtimeMediaSourceCenter::videoFactory):
        (WebCore::MockRealtimeMediaSourceCenter::displayCaptureFactory):
        * platform/mock/MockRealtimeMediaSourceCenter.h:
        (WebCore::MockRealtimeMediaSourceCenter::audioCaptureDeviceManager):
        (WebCore::MockRealtimeMediaSourceCenter::videoCaptureDeviceManager):
        (WebCore::MockRealtimeMediaSourceCenter::displayCaptureDeviceManager):
        * testing/Internals.cpp:
        * testing/Internals.h:
        * testing/Internals.idl:

2018-12-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239010.
        https://bugs.webkit.org/show_bug.cgi?id=192537

        Breaks fast/visual-viewport/tiled-drawing/zoomed-fixed-
        scrolling-layers-state.html again (Requested by ap on
        #webkit).

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/239010

2018-12-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Scaled video frames should be resized in letterbox mode
        https://bugs.webkit.org/show_bug.cgi?id=192528
        <rdar://problem/46576638>

        Reviewed by Darin Adler.

        Test: fast/mediastream/resize-letterbox.html

        * platform/graphics/cv/ImageTransferSessionVT.mm:
        (WebCore::ImageTransferSessionVT::ImageTransferSessionVT): Use letterbox resize mode, not trim.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::captureSize const): "Capture" at the preset size, not 
        necessarily at the requested size to be more like a physical camera.
        (WebCore::MockRealtimeVideoSource::settingsDidChange):
        (WebCore::MockRealtimeVideoSource::drawAnimation):
        (WebCore::MockRealtimeVideoSource::drawBoxes):
        (WebCore::MockRealtimeVideoSource::drawText):
        (WebCore::MockRealtimeVideoSource::generateFrame):
        (WebCore::MockRealtimeVideoSource::imageBuffer const):
        * platform/mock/MockRealtimeVideoSource.h:

2018-12-08  Alex Christensen  <achristensen@webkit.org>

        Don't programmatically capitalize safe browsing warning buttons
        https://bugs.webkit.org/show_bug.cgi?id=192531
        <rdar://problem/46417791>

        Reviewed by Darin Adler.

        This doesn't work so well in other languages.
        Capitalize the source strings in English instead.

        * en.lproj/Localizable.strings:

2018-12-08  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        Previously ScrollingCoordinator just allowed nodes to be "attached" with a given parent,
        but with no control over sibling order. To allow for correct hit-testing overflow and
        frame scrolling nodes, we have to build the scrolling tree in z-order.

        This patch adds a 'childIndex' parameter to attachNode() which gives control over
        sibling order. For now, RenderLayerCompositor always uses the default 'notFound' value
        for childIndex so the current behavior (appending new nodes at the end of child list) is
        preserved.

        One test marked as flakey, since scrolling tree order is currently dependent on HashSet
        traversal order.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::attachToStateTree):
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::attachToStateTree):
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::insertChild):
        (WebCore::ScrollingStateNode::indexOfChild const):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::nodeTypeAndParentMatch const):
        (WebCore::ScrollingStateTree::attachNode):
        * page/scrolling/ScrollingStateTree.h:

2018-12-07  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event should not fire in frames that can't access capture devices
        https://bugs.webkit.org/show_bug.cgi?id=192511
        <rdar://problem/46562063>

        Reviewed by Youenn Fablet.

        Test: http/tests/media/media-stream/device-change-event-in-iframe.html

        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::addEventListener): Don't fire the event unless the document can
        access a camera or microphone.

2018-12-07  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Address post-review comments after r238904
        https://bugs.webkit.org/show_bug.cgi?id=192514
        <rdar://problem/46564302>

        Reviewed by Youenn Fablet.

        No new tests, no functional change.

        * platform/graphics/cv/ImageTransferSessionVT.mm:
        (WebCore::ImageTransferSessionVT::setSize):
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):

2018-12-07  Antti Koivisto  <antti@apple.com>

        [LFC] Rename LayoutFormattingState files to LayoutState
        https://bugs.webkit.org/show_bug.cgi?id=192520

        Reviewed by Zalan Bujtas.

        Match the class name.

        * layout/FormattingContext.cpp:
        * layout/FormattingContextQuirks.cpp:
        * layout/FormattingState.h:
        * layout/LayoutFormattingState.cpp: Removed.
        * layout/LayoutFormattingState.h: Removed.
        * layout/LayoutState.cpp: Copied from Source/WebCore/layout/LayoutFormattingState.cpp.
        * layout/LayoutState.h: Copied from Source/WebCore/layout/LayoutFormattingState.h.
        * layout/Verification.cpp:
        * layout/blockformatting/BlockFormattingContext.cpp:
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        * layout/blockformatting/BlockInvalidation.cpp:
        * layout/floats/FloatAvoider.cpp:
        * layout/floats/FloatingContext.cpp:
        * layout/floats/FloatingState.cpp:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        * layout/inlineformatting/InlineInvalidation.cpp:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        * page/FrameViewLayoutContext.cpp:

2018-12-07  Justin Michaud  <justin_michaud@apple.com>

        CSS Painting API code cleanup
        https://bugs.webkit.org/show_bug.cgi?id=192480

        Reviewed by Dean Jackson.

        No new tests, since the existing tests should cover it.

        * bindings/js/JSDOMWrapper.cpp:
        (WebCore::outputConstraintSubspaceFor):
        (WebCore::globalObjectOutputConstraintSubspaceFor):
        * bindings/js/JSWorkletGlobalScopeBase.cpp:
        (WebCore::toJS):
        * css/CSSPaintCallback.h:
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::doCustomPaint):
        * platform/graphics/CustomPaintImage.h:
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::addCustomPaintWatchProperty):
        (WebCore::changedCustomPaintWatchedProperty):
        (WebCore::RenderStyle::changeRequiresRepaint const):
        * worklets/PaintWorkletGlobalScope.cpp:
        (WebCore::PaintWorkletGlobalScope::registerPaint):
        * worklets/PaintWorkletGlobalScope.h:

2018-12-07  Youenn Fablet  <youenn@apple.com>

        Update libwebrtc up to 0d007d7c4f
        https://bugs.webkit.org/show_bug.cgi?id=192316

        Reviewed by Eric Carlson.

        Update include according new libwebrtc.

        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

2018-12-07  Dean Jackson  <dino@apple.com>

        [iOS] Make WebGPU work with remote layer hosting
        https://bugs.webkit.org/show_bug.cgi?id=192508
        <rdar://problem/46560649>

        Reviewed by Tim Horton.

        WebGPU wasn't working on iOS because we were not correctly
        identifying the CALayers for remote hosting. Fix this by
        adding a new CALayer type, WebGPULayer. This will also
        eventually hold the code to render WebGPU into a canvas.

        Covered by the existing reference tests (on device).

        * SourcesCocoa.txt: Add new files.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: Recognise the WebGPULayer
        class for remote hosting.
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):

        * platform/graphics/cocoa/WebGPULayer.h: Added. Very simple inheritance
        from CAMetalLayer.
        * platform/graphics/cocoa/WebGPULayer.mm: Added.
        (-[WebGPULayer init]):
        (-[WebGPULayer copyImageSnapshotWithColorSpace:]):

        * platform/graphics/gpu/GPUSwapChain.h: Reference WebGPULayer rather
        than CALayer.

        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm: Ensure that
        the WebGPULayer has a reference back to this object, which it
        will use in the future.
        (WebCore::GPUSwapChain::create):
        (WebCore::GPUSwapChain::GPUSwapChain):

2018-12-07  Antti Koivisto  <antti@apple.com>

        Rename LayoutState to RenderLayoutState
        https://bugs.webkit.org/show_bug.cgi?id=192504

        Reviewed by Zalan Bujtas.

        The name is better used in LFC.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::layoutState const):
        (WebCore::FrameViewLayoutContext::pushLayoutState):
        (WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded):
        * page/FrameViewLayoutContext.h:
        * rendering/LayoutState.cpp: Removed.
        * rendering/LayoutState.h: Removed.
        * rendering/RenderBlock.cpp:
        * rendering/RenderBlock.h:
        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):
        * rendering/RenderBlockLineLayout.cpp:
        * rendering/RenderBox.cpp:
        * rendering/RenderEmbeddedObject.cpp:
        * rendering/RenderFragmentedFlow.cpp:
        * rendering/RenderGrid.cpp:
        * rendering/RenderImage.cpp:
        * rendering/RenderInline.cpp:
        * rendering/RenderLayoutState.cpp: Copied from Source/WebCore/rendering/LayoutState.cpp.
        (WebCore::RenderLayoutState::RenderLayoutState):
        (WebCore::RenderLayoutState::computeOffsets):
        (WebCore::RenderLayoutState::computeClipRect):
        (WebCore::RenderLayoutState::computePaginationInformation):
        (WebCore::RenderLayoutState::pageLogicalOffset const):
        (WebCore::RenderLayoutState::computeLineGridPaginationOrigin):
        (WebCore::RenderLayoutState::propagateLineGridInfo):
        (WebCore::RenderLayoutState::establishLineGrid):
        (WebCore::RenderLayoutState::addLayoutDelta):
        (WebCore::RenderLayoutState::layoutDeltaMatches const):
        (WebCore::LayoutState::LayoutState): Deleted.
        (WebCore::LayoutState::computeOffsets): Deleted.
        (WebCore::LayoutState::computeClipRect): Deleted.
        (WebCore::LayoutState::computePaginationInformation): Deleted.
        (WebCore::LayoutState::pageLogicalOffset const): Deleted.
        (WebCore::LayoutState::computeLineGridPaginationOrigin): Deleted.
        (WebCore::LayoutState::propagateLineGridInfo): Deleted.
        (WebCore::LayoutState::establishLineGrid): Deleted.
        (WebCore::LayoutState::addLayoutDelta): Deleted.
        (WebCore::LayoutState::layoutDeltaMatches const): Deleted.
        * rendering/RenderLayoutState.h: Copied from Source/WebCore/rendering/LayoutState.h.
        (WebCore::RenderLayoutState::RenderLayoutState):
        (WebCore::LayoutState::LayoutState): Deleted.
        (WebCore::LayoutState::isPaginated const): Deleted.
        (WebCore::LayoutState::pageLogicalHeight const): Deleted.
        (WebCore::LayoutState::pageLogicalHeightChanged const): Deleted.
        (WebCore::LayoutState::lineGrid const): Deleted.
        (WebCore::LayoutState::lineGridOffset const): Deleted.
        (WebCore::LayoutState::lineGridPaginationOrigin const): Deleted.
        (WebCore::LayoutState::paintOffset const): Deleted.
        (WebCore::LayoutState::layoutOffset const): Deleted.
        (WebCore::LayoutState::pageOffset const): Deleted.
        (WebCore::LayoutState::needsBlockDirectionLocationSetBeforeLayout const): Deleted.
        (WebCore::LayoutState::renderer const): Deleted.
        (WebCore::LayoutState::clipRect const): Deleted.
        (WebCore::LayoutState::isClipped const): Deleted.
        (WebCore::LayoutState::layoutDelta const): Deleted.
        * rendering/RenderListBox.cpp:
        * rendering/RenderMediaControlElements.cpp:
        * rendering/RenderMultiColumnFlow.cpp:
        * rendering/RenderTable.cpp:
        * rendering/RenderTableRow.cpp:
        * rendering/RenderTableSection.cpp:
        * rendering/RenderVTTCue.cpp:
        * rendering/RenderView.cpp:
        * rendering/RenderView.h:
        * rendering/RootInlineBox.cpp:
        * rendering/svg/RenderSVGRoot.cpp:
        (WebCore::RenderSVGRoot::layout):

2018-12-07  Antti Koivisto  <antti@apple.com>

        [LFC] Rename formattingContext() to createFormattingContext()
        https://bugs.webkit.org/show_bug.cgi?id=192500

        Reviewed by Zalan Bujtas.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
        * layout/FormattingState.h:
        * layout/LayoutFormattingState.cpp:
        (WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
        * layout/blockformatting/BlockFormattingState.cpp:
        (WebCore::Layout::BlockFormattingState::createFormattingContext):
        (WebCore::Layout::BlockFormattingState::formattingContext): Deleted.
        * layout/blockformatting/BlockFormattingState.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        * layout/inlineformatting/InlineFormattingState.h:

2018-12-07  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238947.

        Revision caused fast/visual-viewport/tiled-drawing/zoomed-
        fixed-scrolling-layers-state.html to constantly fail

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/238947

2018-12-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Cloned attachment elements lose their unique identifiers
        https://bugs.webkit.org/show_bug.cgi?id=192483

        Reviewed by Tim Horton.

        This patch adds logic to ensure that the unique identifier of a cloned attachment element is the same as the
        unique identifier of the original attachment element. If the cloned attachment is inserted into the same
        document as the original attachment, then we will exercise the same codepath for copied-and-pasted attachments,
        and assign a new unique identifier to the attachment element, while creating a new `_WKAttachment` in the client
        that's backed by the same `NSFileWrapper`.

        Test: WKAttachmentTests.AttachmentIdentifierOfClonedAttachment

        * html/HTMLAttachmentElement.cpp:
        (WebCore::HTMLAttachmentElement::copyNonAttributePropertiesFromElement):
        * html/HTMLAttachmentElement.h:

2018-12-07  Rob Buis  <rbuis@igalia.com>

        Merge parseAccessControlExposeHeadersAllowList into parseAccessControlAllowList
        https://bugs.webkit.org/show_bug.cgi?id=192288

        Reviewed by Frédéric Wang.

        Merge parseAccessControlExposeHeadersAllowList into parseAccessControlAllowList
        as they do the same thing. Also remove std::optional from parseAccessControlAllowList
        since the function can't fail.

        * WebCore.order:
        * loader/CrossOriginAccessControl.cpp:
        (WebCore::validatePreflightResponse):
        * loader/CrossOriginPreflightResultCache.cpp:
        (WebCore::CrossOriginPreflightResultCacheItem::parse):
        * loader/CrossOriginPreflightResultCache.h:
        * platform/network/HTTPParsers.cpp:
        (WebCore::parseAccessControlExposeHeadersAllowList): Deleted.
        * platform/network/HTTPParsers.h:
        (WebCore::parseAccessControlAllowList):
        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::filter):
        (WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):

2018-12-07  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Don't update AVPlayerViewController currentTime while scrubbing
        https://bugs.webkit.org/show_bug.cgi?id=192438
        <rdar://problem/42977046>

        Reviewed by Jer Noble.

        No new tests, tested manually.

        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::currentTimeChanged): Don't report change during scrubbing.

        * platform/ios/WebAVPlayerController.h:
        * platform/ios/WebAVPlayerController.mm:
        (-[WebAVPlayerController beginScrubbing:]): Set _isScrubbing.
        (-[WebAVPlayerController endScrubbing:]): Ditto.
        (-[WebAVPlayerController isScrubbing]): Return _isScrubbing.

2018-12-07  Thibault Saunier  <tsaunier@igalia.com>

        [WPE][GTK] Implement WebAudioSourceProviderGStreamer to allow bridging MediaStream and the WebAudio APIs
        https://bugs.webkit.org/show_bug.cgi?id=186933

        Reusing the AudioSourceProviderGStreamer itself as it was doing almost everything we needed,
        just added a constructor to be able to create it from a MediaStreamTrackPrivate and made it a
        WebAudioSourceProvider which only means it is now a ThreadSafeRefCounted.

        Sensibily refactored GStreamerMediaStreamSource so that we could reuse it to track a single
        MediaStreamTrack.

        Reviewed by Philippe Normand.

        Enabled all tests depending on that feature.

        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
        (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
        (WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer):
        (WebCore::AudioSourceProviderGStreamer::setClient):
        * platform/audio/gstreamer/AudioSourceProviderGStreamer.h:
        * platform/mediastream/MediaStreamTrackPrivate.cpp:
        (WebCore::MediaStreamTrackPrivate::audioSourceProvider):
        * platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
        (WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):
        * platform/mediastream/gstreamer/GStreamerAudioStreamDescription.h:
        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
        (WebCore::webkitMediaStreamSrcSetupSrc):
        (WebCore::webkitMediaStreamSrcSetupAppSrc):
        (WebCore::webkitMediaStreamSrcAddTrack):
        (WebCore::webkitMediaStreamSrcSetStream):
        (WebCore::webkitMediaStreamSrcNew):
        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.h:
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
        (WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource):
        (WebCore::WrappedMockRealtimeAudioSource::start):
        (WebCore::WrappedMockRealtimeAudioSource::addHum):
        (WebCore::WrappedMockRealtimeAudioSource::render):
        (WebCore::WrappedMockRealtimeAudioSource::settingsDidChange):
        (WebCore::MockGStreamerAudioCaptureSource::startProducingData):
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData): Handle the case where input buffers
          are "big" and process all the data we can for each runs of the method.

2018-12-06  Alexey Proskuryakov  <ap@apple.com>

        Move USE_NEW_THEME out of WebCore's config.h
        https://bugs.webkit.org/show_bug.cgi?id=192426

        Reviewed by Tim Horton.

        * config.h:

2018-12-06  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        Previously ScrollingCoordinator just allowed nodes to be "attached" with a given parent,
        but with no control over sibling order. To allow for correct hit-testing overflow and
        frame scrolling nodes, we have to build the scrolling tree in z-order.

        This patch adds a 'childIndex' parameter to attachNode() which gives control over
        sibling order. For now, RenderLayerCompositor always uses the default 'notFound' value
        for childIndex so the current behavior (appending new nodes at the end of child list) is
        preserved.

        No new tests, behavior unchanged and already covered by existing tests.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::attachToStateTree):
        (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::attachToStateTree):
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::insertChild):
        (WebCore::ScrollingStateNode::indexOfChild const):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::nodeTypeAndParentMatch const):
        (WebCore::ScrollingStateTree::attachNode):
        * page/scrolling/ScrollingStateTree.h:

2018-12-06  Yongjun Zhang  <yongjun_zhang@apple.com>

        We should ignore minimumEffectiveDeviceWidth if the page specifies device-width in viewport meta-tag.
        https://bugs.webkit.org/show_bug.cgi?id=192377
        <rdar://problem/46364206>

        Reviewed by Tim Horton.

        If the page specifies width=device-width or initial-scale=1 in the viewport meta tag, we should use the
        native device width and ignore the minimum effective device width in ViewportConfiguration. The patch
        also introduces scalableNativeWebpageParameters() which uses the device width as default and also allows the page
        to shrink-to-fit. If a page doesn't have viewport meta tag, or if the width argument isn't device-width
        and the initial scale isn't 1, we will use scalableNativeWebpageParameters() as the default configuration.

        Tests: fast/viewport/ios/ignore-minimum-device-width-for-page-with-viewport-device-width.html
               fast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::updateDefaultConfiguration): pick the default configuration based on
            the page's viewport arguments. Also, we will always fall back to scalableNativeWebpageParameters() if we
            can ignore scaling constraints.
        (WebCore::ViewportConfiguration::setViewportArguments): When page sends us new ViewportArguments, pick
            up the correponsding default configuration before updating the configuration.
        (WebCore::ViewportConfiguration::setCanIgnoreScalingConstraints): When m_canIgnoreScalingConstraints is
            changed, try to pick up the correponsding default configuration.
        (WebCore::ViewportConfiguration::scalableNativeWebpageParameters): Add a new default set of viewport Parameters
            this is very close to nativeWebpageParameters() excpet that it allows shrink to fit and its minimum scale
            is 0.25. We will use this Parameters for pages that doesn't have viewport meta tag; or the width is
            not device-width and initial scale is not 1.
        (WebCore::ViewportConfiguration::updateConfiguration): If the page's viewport argument doesn't override
            the default width, use the m_minimumLayoutSize.width().
        * page/ViewportConfiguration.h:
        (WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidth const): A helper method to tell
            if we should avoid using minimum effective device width.
        (WebCore::ViewportConfiguration::canOverrideConfigurationParameters const): If we are using a default
            configuration that is neither nativeWebpageParameters() nor scalableNativeWebpageParameters(), don't override
            it.
        (WebCore::ViewportConfiguration::minimumEffectiveDeviceWidth const): Add a helper method to return minimum
            effective device width based on shouldIgnoreMinimumEffectiveDeviceWidth().
        (WebCore::ViewportConfiguration::effectiveLayoutSizeScaleFactor const): Use minimumEffectiveDeviceWidth().

2018-12-06  Adrian Perez de Castro  <aperez@igalia.com>

        Content Extensions: Misc fixes to debugging / perf testing code
        https://bugs.webkit.org/show_bug.cgi?id=192474

        Reviewed by Mark Lam.

        This make it possible to build the content extensions support with the
        debugging features enabled. In particular, building with
        CONTENT_EXTENSIONS_PERFORMANCE_REPORTING enabled was broken.

        No new tests needed.

        * contentextensions/ContentExtensionCompiler.cpp:
        (WebCore::ContentExtensions::compileRuleList): Remove usage of removed
        variables machinesWihthoutConditionsCount,
        totalBytecodeSizeForMachinesWithoutConditions,
        machinesWithConditionsCount, and
        totalBytecodeSizeForMachinesWithConditions.
        * contentextensions/DFA.cpp:
        (WebCore::ContentExtensions::DFA::debugPrintDot const):
        Use "%" PRIu64 instead of "%llu" to format uint64_t values.
        * contentextensions/NFA.cpp:
        (WebCore::ContentExtensions::NFA::debugPrintDot const):
        Use "%" PRIu64 instead of "%llu" to format uint64_t values.

2018-12-06  Alex Christensen  <achristensen@webkit.org>

        Remove unused LoaderStrategy::storeDerivedDataToCache and associated dead code
        https://bugs.webkit.org/show_bug.cgi?id=192452

        Reviewed by Anders Carlsson.

        * loader/LoaderStrategy.h:
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::didRetrieveDerivedDataFromCache): Deleted.
        * loader/ResourceLoader.h:
        * loader/ResourceLoaderOptions.h:
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::didRetrieveDerivedDataFromCache): Deleted.
        * loader/SubresourceLoader.h:
        * loader/ThreadableLoader.cpp:
        (WebCore::ThreadableLoaderOptions::isolatedCopy const):
        * loader/cache/CachedResource.h:
        (WebCore::CachedResource::didRetrieveDerivedDataFromCache): Deleted.

2018-12-06  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] HeightAndMargin::margin is always the non-collapsed margin value.
        https://bugs.webkit.org/show_bug.cgi?id=192345

        Reviewed by Antti Koivisto.

        Rename HeightAndMargin::margin to HeightAndMargin::nonCollapsedMargin.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        * layout/LayoutUnits.h:
        (WebCore::Layout::HeightAndMargin::usedMarginValues const):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):

2018-12-06  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Add MarginCollapse::establishesBlockFormattingContext
        https://bugs.webkit.org/show_bug.cgi?id=192297

        Reviewed by Antti Koivisto.

        WebKit treats the document element renderer as a block formatting context root.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::establishesBlockFormattingContext):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [GStreamer] -DENABLE_VIDEO=ON -DENABLE_OPENGL=OFF still tries to build GstreamerGL
        https://bugs.webkit.org/show_bug.cgi?id=191998

        Reviewed by Philippe Normand.

        Fix compilation with -DENABLE_VIDEO=ON and -DENABLE_OPENGL=OFF due to GStreamerGL.

        No new tests required. Only fixing the build with certain flags.

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasChanged): add required #if ENABLE(WEBGL).

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        REGRESSION(r231043): [GTK] Undefined references to WebCore::LayerRepresentation::* with -DENABLE_OPENGL=OFF builds
        https://bugs.webkit.org/show_bug.cgi?id=191997

        Reviewed by Philippe Normand.

        Fix build with -DENABLE_OPENGL=OFF and -DENABLE_VIDEO=OFF.

        No new tests required. Only fixing build.

        * platform/gtk/PlatformWheelEventGtk.cpp:
        (WebCore::PlatformWheelEvent::PlatformWheelEvent): add required #if ENABLE(ASYNC_SCROLLING)

2018-12-05  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Enable WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192384

        Reviewed by Brent Fulgham.

        Implements WebCore for the PlayStation platform.

        * PlatformPlayStation.cmake: Added.
        * loader/cache/CachedResourceLoader.cpp:
        * platform/generic/KeyedDecoderGeneric.cpp: Added.
        (WebCore::KeyedDecoder::decoder):
        (WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric):
        (WebCore::KeyedDecoderGeneric::~KeyedDecoderGeneric):
        (WebCore::KeyedDecoderGeneric::decodeBytes):
        (WebCore::KeyedDecoderGeneric::decodeBool):
        (WebCore::KeyedDecoderGeneric::decodeUInt32):
        (WebCore::KeyedDecoderGeneric::decodeUInt64):
        (WebCore::KeyedDecoderGeneric::decodeInt32):
        (WebCore::KeyedDecoderGeneric::decodeInt64):
        (WebCore::KeyedDecoderGeneric::decodeFloat):
        (WebCore::KeyedDecoderGeneric::decodeDouble):
        (WebCore::KeyedDecoderGeneric::decodeString):
        (WebCore::KeyedDecoderGeneric::beginObject):
        (WebCore::KeyedDecoderGeneric::endObject):
        (WebCore::KeyedDecoderGeneric::beginArray):
        (WebCore::KeyedDecoderGeneric::beginArrayElement):
        (WebCore::KeyedDecoderGeneric::endArrayElement):
        (WebCore::KeyedDecoderGeneric::endArray):
        * platform/generic/KeyedDecoderGeneric.h: Added.
        * platform/generic/KeyedEncoderGeneric.cpp: Added.
        (WebCore::KeyedEncoder::encoder):
        (WebCore::KeyedEncoderGeneric::KeyedEncoderGeneric):
        (WebCore::KeyedEncoderGeneric::~KeyedEncoderGeneric):
        (WebCore::KeyedEncoderGeneric::encodeBytes):
        (WebCore::KeyedEncoderGeneric::encodeBool):
        (WebCore::KeyedEncoderGeneric::encodeUInt32):
        (WebCore::KeyedEncoderGeneric::encodeUInt64):
        (WebCore::KeyedEncoderGeneric::encodeInt32):
        (WebCore::KeyedEncoderGeneric::encodeInt64):
        (WebCore::KeyedEncoderGeneric::encodeFloat):
        (WebCore::KeyedEncoderGeneric::encodeDouble):
        (WebCore::KeyedEncoderGeneric::encodeString):
        (WebCore::KeyedEncoderGeneric::beginObject):
        (WebCore::KeyedEncoderGeneric::endObject):
        (WebCore::KeyedEncoderGeneric::beginArray):
        (WebCore::KeyedEncoderGeneric::beginArrayElement):
        (WebCore::KeyedEncoderGeneric::endArrayElement):
        (WebCore::KeyedEncoderGeneric::endArray):
        (WebCore::KeyedEncoderGeneric::finishEncoding):
        * platform/generic/KeyedEncoderGeneric.h: Added.
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::defaultCookieJarPath):
        * platform/network/playstation/CurlSSLHandlePlayStation.cpp: Added.
        (WebCore::getCACertPathEnv):
        (WebCore::CurlSSLHandle::platformInitialize):
        * platform/network/playstation/NetworkStateNotifierPlayStation.cpp: Added.
        (WebCore::NetworkStateNotifier::updateStateWithoutNotifying):
        (WebCore::NetworkStateNotifier::startObserving):
        * platform/playstation/EventLoopPlayStation.cpp: Added.
        (WebCore::EventLoop::cycle):
        * platform/playstation/MIMETypeRegistryPlayStation.cpp: Added.
        (WebCore::MIMETypeRegistry::getMIMETypeForExtension):
        (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType):
        (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
        * platform/playstation/PlatformScreenPlayStation.cpp: Added.
        (WebCore::screenDepth):
        (WebCore::screenDepthPerComponent):
        (WebCore::screenIsMonochrome):
        (WebCore::screenHasInvertedColors):
        (WebCore::screenRect):
        (WebCore::screenAvailableRect):
        (WebCore::screenSupportsExtendedColor):
        * platform/playstation/ScrollbarThemePlayStation.cpp: Added.
        (WebCore::ScrollbarTheme::nativeTheme):
        (WebCore::ScrollbarThemePlayStation::scrollbarThickness):
        (WebCore::ScrollbarThemePlayStation::hasButtons):
        (WebCore::ScrollbarThemePlayStation::hasThumb):
        (WebCore::ScrollbarThemePlayStation::backButtonRect):
        (WebCore::ScrollbarThemePlayStation::forwardButtonRect):
        (WebCore::ScrollbarThemePlayStation::trackRect):
        (WebCore::ScrollbarThemePlayStation::paintTrackBackground):
        (WebCore::ScrollbarThemePlayStation::paintThumb):
        * platform/playstation/ScrollbarThemePlayStation.h: Added.
        * platform/playstation/UserAgentPlayStation.cpp: Added.
        (WebCore::standardUserAgent):
        (WebCore::standardUserAgentForURL):
        * rendering/RenderThemePlayStation.cpp: Added.
        (WebCore::RenderTheme::singleton):
        (WebCore::RenderThemePlayStation::updateCachedSystemFontDescription const):
        * rendering/RenderThemePlayStation.h: Added.

2018-12-05  Ryosuke Niwa  <rniwa@webkit.org>

        Null pointer crash in DocumentOrderedMap::getElementById via FormAssociatedElement::findAssociatedForm
        https://bugs.webkit.org/show_bug.cgi?id=192392

        Reviewed by Dean Jackson.

        The crash was caused by FormAssociatedElement::findAssociatedForm invoking DocumentOrderedMap::getElementById
        and de-referencing nullptr Attribute* via IdTargetObserver before Element::attributeChanged had updated
        ElementData::m_idForStyleResolution.

        Fixed it by updating m_idForStyleResolution before invoking IdTargetObservers.

        Test: fast/dom/remove-id-form-associated-elemet-id-observer-crash.html

        * dom/Element.cpp:
        (WebCore::Element::attributeChanged): Fixed the bug.

2018-12-05  Youenn Fablet  <youenn@apple.com>

        Enable the possibility to do video capture in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192394

        Reviewed by Eric Carlson.

        Create IOSurface-backed sample buffers so that we can easily send them through IPC.
        Manually tested.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):

2018-12-05  Youenn Fablet  <youenn@apple.com>

        Update ServiceWorkerContainer::getRegistration lambdas
        https://bugs.webkit.org/show_bug.cgi?id=192376

        Reviewed by Chris Dumez.

        There is no need to pass 'this' in lambdas as the last lambda
        takes a ScriptExecutionContext&.
        No change of behavior.

        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::getRegistration):
        (WebCore::ServiceWorkerContainer::getRegistrations):

2018-12-05  Chris Dumez  <cdumez@apple.com>

        Crash under WebCore::cachedDocumentWrapper()
        https://bugs.webkit.org/show_bug.cgi?id=192421
        <rdar://problem/37114163>

        Reviewed by Alex Christensen.

        Fix potential null defererence of the value returned by toJSDOMWindow(). For example,
        if the window is frameless, it would return null.

        * bindings/js/JSDocumentCustom.cpp:
        (WebCore::cachedDocumentWrapper):

2018-12-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Cleanup up Mac screen capture class
        https://bugs.webkit.org/show_bug.cgi?id=192379
        <rdar://problem/46465458>

        Reviewed by Youenn Fablet.

        No new tests, tested manually.

        * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:
        (WebCore::DisplayCaptureManagerCocoa::captureDevices): Initialize Screen devices first so
        they are first in the list of devices.

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Cleanup. Always capture at the
        native screen size to work around a bug.
        (WebCore::ScreenDisplayCaptureSourceMac::settingsDidChange): Deleted.

2018-12-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r238844, r238846, and r238874.
        https://bugs.webkit.org/show_bug.cgi?id=192414

        The layout tests added with this change are flaky. (Requested
        by ryanhaddad on #webkit).

        Reverted changesets:

        "Implement non-timeslice mode encoding for MediaRecorder"
        https://bugs.webkit.org/show_bug.cgi?id=192069
        https://trac.webkit.org/changeset/238844

        "Fix the build"
        https://trac.webkit.org/changeset/238846

        "Fix MediaRecorder flaky tests"
        https://bugs.webkit.org/show_bug.cgi?id=192371
        https://trac.webkit.org/changeset/238874

2018-12-05  Frederic Wang  <fwang@igalia.com>

        Minor refactoring of the scrolling code
        https://bugs.webkit.org/show_bug.cgi?id=192398

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        This patch performs some minor refactoring of the scrolling code:
        - Rename ScrollingCoordinator::uniqueScrollLayerID() to uniqueScrollingNodeID() since it
          is really a node id.
        - Inline ScrollingStateTree::setRootStateNode() so we only need to forward declare
          ScrollingStateFrameScrollingNode in headers.
        - Pass argument to ScrollingStateTree::addNode() as a reference rather than a pointer.
        - Initialize ScrollingStateTree::m_changedProperties and ScrollingStateTree::m_parent in
          the header file.
        - Remove obsolete comment about ScrollingCoordinatorMac.

        No new tests, behavior unchanged.

        * page/scrolling/ScrollingCoordinator.cpp:
        (WebCore::ScrollingCoordinator::uniqueScrollingNodeID):
        (WebCore::ScrollingCoordinator::uniqueScrollLayerID): Deleted.
        * page/scrolling/ScrollingCoordinator.h:
        * page/scrolling/ScrollingStateNode.cpp:
        (WebCore::ScrollingStateNode::ScrollingStateNode):
        * page/scrolling/ScrollingStateNode.h:
        * page/scrolling/ScrollingStateTree.cpp:
        (WebCore::ScrollingStateTree::attachNode):
        (WebCore::ScrollingStateTree::setRootStateNode):
        (WebCore::ScrollingStateTree::addNode):
        * page/scrolling/ScrollingStateTree.h:
        (WebCore::ScrollingStateTree::setRootStateNode): Deleted.
        * page/scrolling/ScrollingTree.cpp:
        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::attachScrollingNode):

2018-12-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Turn WritingDirection into an enum class
        https://bugs.webkit.org/show_bug.cgi?id=192401
        Work towards <rdar://problem/42075638>

        Reviewed by Dan Bernstein.

        Change WritingDirection from an enum to an enum class. No change in behavior.

        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::splitAncestorsWithUnicodeBidi):
        (WebCore::ApplyStyleCommand::applyInlineStyle):
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::textDirection const):
        (WebCore::EditingStyle::textDirectionForSelection):
        * editing/Editor.cpp:
        (WebCore::Editor::setBaseWritingDirection):
        (WebCore::Editor::baseWritingDirectionForSelectionStart const):
        * editing/EditorCommand.cpp:
        (WebCore::stateTextWritingDirectionLeftToRight):
        (WebCore::stateTextWritingDirectionNatural):
        (WebCore::stateTextWritingDirectionRightToLeft):
        * editing/WritingDirection.h:

        Additionally wrap this enum in `namespace WebCore`, and update the copyright year.

        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
        * page/ContextMenuController.cpp:
        (WebCore::ContextMenuController::contextMenuItemSelected):
        * testing/Internals.cpp:
        (WebCore::Internals::setBaseWritingDirection):

2018-12-05  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Remove the AppendPipeline state machine
        https://bugs.webkit.org/show_bug.cgi?id=192204

        Reviewed by Xabier Rodriguez-Calvar.

        This patch tries to reduce the complexity of the AppendPipeline by
        removing the appendState state machine and cleaning all the
        conditional code around it that is not necessary anymore.

        For the most part the behavior is the same, but some edge cases have
        been improved in the process:

        Demuxing errors now result in the append being flagged as
        ParsingFailed and the error being propagated to the application. This
        fixes media/media-source/media-source-error-crash.html (or at least
        gets it up to date with cross platform expectations).

        AbortableTaskQueue now allows the task handler to perform an abort
        safely. This is used in the GstBus error message sync handler, since
        it needs to ask the MainThread to raise a parse error, which will in
        turn abort. An API test has been added for this new functionality.
        Also, code has been added to the API tests to ensure the correct
        destruction of the response object, especially in this case.

        The code handling invalid track codecs has been made clearer by also
        explicitly raising a parse error, but it should not expose behavior
        differences for the application. A test has been added for this
        behavior: web-platform-tests/media-source/mediasource-invalid-codec.html

        The reporting of EOS events have been made more rigorous. EOS is only
        expected after a demuxing error, otherwise it's a g_critical.

        AppendPipeline::abort() has been renamed to
        AppendPipeline::resetParserState() to honor the fact that it's not
        only called when the user calls abort() and match better the names
        used in the spec.

        Test: imported/w3c/web-platform-tests/media-source/mediasource-invalid-codec.html

        * platform/AbortableTaskQueue.h:
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::assertedElementSetState):
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::~AppendPipeline):
        (WebCore::AppendPipeline::handleErrorSyncMessage):
        (WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
        (WebCore::AppendPipeline::handleNeedContextSyncMessage):
        (WebCore::AppendPipeline::appsinkCapsChanged):
        (WebCore::AppendPipeline::handleEndOfAppend):
        (WebCore::AppendPipeline::appsinkNewSample):
        (WebCore::AppendPipeline::didReceiveInitializationSegment):
        (WebCore::AppendPipeline::resetParserState):
        (WebCore::AppendPipeline::pushNewBuffer):
        (WebCore::AppendPipeline::handleAppsinkNewSampleFromStreamingThread):
        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromStreamingThread):
        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
        (WebCore::AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread):
        (WebCore::AppendPipeline::dumpAppendState): Deleted.
        (WebCore::AppendPipeline::demuxerNoMorePads): Deleted.
        (WebCore::AppendPipeline::setAppendState): Deleted.
        (WebCore::AppendPipeline::appsinkEOS): Deleted.
        (WebCore::AppendPipeline::resetPipeline): Deleted.
        (WebCore::AppendPipeline::abort): Deleted.
        * platform/graphics/gstreamer/mse/AppendPipeline.h:
        (WebCore::AppendPipeline::appendState): Deleted.
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::abort):
        (WebCore::MediaSourceClientGStreamerMSE::resetParserState):
        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
        (WebCore::SourceBufferPrivateGStreamer::appendParsingFailed):
        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:

2018-12-05  Rob Buis  <rbuis@igalia.com>

        [Mac] HEAD requests changed to GET after 301, 302, and 303 redirections (http/tests/xmlhttprequest/head-redirection.html)
        https://bugs.webkit.org/show_bug.cgi?id=114965

        Reviewed by Frédéric Wang.

        HEAD requests should not be changed to GET after 303 redirects, see [1].
        This was fixed earlier for GTK [2].

        Behavior matches Firefox and Chrome.

        [1] http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-21#section-7.4
        [2] https://bugs.webkit.org/show_bug.cgi?id=110127

        Tests: web-platform-tests/fetch/api/redirect/redirect-method.html
               web-platform-tests/fetch/api/redirect/redirect-method-worker.html
               http/tests/xmlhttprequest/head-redirection.html

        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::willSendRequest):

2018-12-05  Rob Buis  <rbuis@igalia.com>

        Align with Fetch on data: URLs
        https://bugs.webkit.org/show_bug.cgi?id=182325

        Reviewed by Alex Christensen.

        Do not accept data URLs that do not contain a comma
        character, as specified in the relevant specs [1, 2].

        Behavior matches Firefox and Chrome.

        Test: web-platform-tests/fetch/api/basic/scheme-data.any.html

        [1] https://tools.ietf.org/html/rfc2397
        [2] https://fetch.spec.whatwg.org/#data-url-processor

        * platform/network/DataURLDecoder.cpp:
        (WebCore::DataURLDecoder::parseMediaType):
        (WebCore::DataURLDecoder::DecodeTask::DecodeTask):
        (WebCore::DataURLDecoder::DecodeTask::process):
        (WebCore::DataURLDecoder::createDecodeTask):
        (WebCore::DataURLDecoder::decode):

2018-12-05  Frederic Wang  <fwang@igalia.com>

        Unreviewed build fix.

        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Add missing header.

2018-12-05  Javier Fernandez  <jfernandez@igalia.com>

        [css-grid] Crash on debug changing the style of a positioned element
        https://bugs.webkit.org/show_bug.cgi?id=191473

        Reviewed by Dean Jackson and Zalan Bujtas.

        When an box becomes {out-of,in}-flow, it may be re-parented and it may become a grid
        item. In that case, we must mark the RenderGrid as dirty, so that the grid items
        placement logic is executed again.

        Test: fast/css-grid-layout/grid-crash-out-of-flow-positioned-element.html

        * rendering/updating/RenderTreeBuilder.cpp:
        (WebCore::childFlowStateChangesAndAffectsParentBlock): Consider the case of a box's new parent being a grid container.

2018-12-04  Frederic Wang  <fwang@igalia.com>

        Always pass scrollingGeometry to update*ScrollingNode functions
        https://bugs.webkit.org/show_bug.cgi?id=192358

        Reviewed by Simon Fraser.

        Currently, the scrollingGeometry parameter of updateOverflowScrollingNode is always used
        while the one of updateFrameScrollingNode is never used. Both of them are passed as possibly
        null pointers. This commit makes things more consistent by making the parameter a reference
        and explicitly setting the scrollingGeometry of updateFrameScrollingNode. This will help
        other efforts (such as support for macOS/iOS asynchronous scrolling of overflow nodes /
        subframes or for CSS overscroll-behavior) for which new data members have to be passed to the
        scrolling nodes.

        No new tests, no behavior changes.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::updateFrameScrollingNode):
        (WebCore::AsyncScrollingCoordinator::updateOverflowScrollingNode):
        * page/scrolling/AsyncScrollingCoordinator.h:
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::updateFrameScrollingNode):
        (WebCore::ScrollingCoordinator::updateOverflowScrollingNode):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):

2018-12-04  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in HTMLCollection::updateNamedElementCache
        https://bugs.webkit.org/show_bug.cgi?id=192347

        Reviewed by Darin Adler.

        The bug was caused by CollectionIndexCache's nodeAt caching the length of 1
        when there are no matching elements in the subtree when the index is non-zero.

        A related bug was fixed in r182125 but we were not considering the possibility
        that the index given to this function might be non-zero even when there were
        no matching elements.

        Test: fast/dom/options-collection-zero-length-crash.html

        * dom/CollectionIndexCache.h:
        (WebCore::CollectionIndexCache<Collection, Iterator>::nodeAt):

2018-11-30  Jiewen Tan  <jiewen_tan@apple.com>

        Don't report resource timing to parent frame for history items
        https://bugs.webkit.org/show_bug.cgi?id=192273
        <rdar://problem/45163764>

        Reviewed by Youenn Fablet.

        We should not report history items to its parent frame as those are less
        interested to its parent and might not be the first navigation in the iframes.

        This change aligns the behavior when a cached document is not available for the
        history item with the available case as we don't report resource timing for any
        cached main document.

        Test: http/tests/misc/resource-timing-navigation-in-restored-iframe-2.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadDifferentDocumentItem):

2018-12-04  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): position:fixed sidebar on https://www.w3.org/TR/SVG2/coords.html does not stay fixed
        https://bugs.webkit.org/show_bug.cgi?id=192320
        <rdar://problem/46429833>

        Reviewed by Zalan Bujtas.
        
        Re-land r238840 with a more reliable test.
        
        When we fall into slow scrolling mode (for example, because of background-attachment: fixed),
        RenderLayerCompositor::updateCompositingLayers() needs to set the geometry dirty bit on layers
        for viewport-constrained objects so we update them.
        
        This is only necessary for page scrolling; for overflow scrolls, updateLayerPositions() already
        does enough dirtying that fixed layers nested inside scrollers get updated.

        Test: compositing/fixed-with-main-thread-scrolling.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):

2018-12-04  Youenn Fablet  <youenn@apple.com>

        Fix MediaRecorder flaky tests
        https://bugs.webkit.org/show_bug.cgi?id=192371

        Reviewed by Eric Carlson.

        No change of behavior.

        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        Reset to use real MediaRecorder by default.

2018-12-04  Justin Michaud  <justin_michaud@apple.com>

        CSS Painting API should allow image values in inputProperties
        https://bugs.webkit.org/show_bug.cgi?id=192200

        Reviewed by Dean Jackson.

        Adds new TypedOMCSSImageValue wrapper. We rename all the existing ones so that the naming is consistent (CSSImageValue is already a thing).
        Finally, we let CanvasRenderingContext2DBase render these.

        Tests: fast/css-custom-paint/arguments.html
               fast/css-custom-paint/image.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/CallTracerTypes.h:
        * bindings/js/JSTypedOMCSSStyleValueCustom.cpp: Renamed from Source/WebCore/bindings/js/JSCSSStyleValueCustom.cpp.
        (WebCore::toJSNewlyCreated):
        (WebCore::toJS):
        * bindings/js/WebCoreBuiltinNames.h:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::equals const):
        (WebCore::CSSCustomPropertyValue::customCSSText const):
        (WebCore::CSSCustomPropertyValue::tokens const):
        * css/CSSCustomPropertyValue.h:
        * css/CSSPaintImageValue.cpp:
        (WebCore::CSSPaintImageValue::image):
        * css/typedom/StylePropertyMapReadOnly.h:
        (WebCore::StylePropertyMapReadOnly::create):
        (WebCore::StylePropertyMapReadOnly::get const):
        (WebCore::StylePropertyMapReadOnly::StylePropertyMapReadOnly):
        * css/typedom/StylePropertyMapReadOnly.idl:
        * css/typedom/TypedOMCSSImageValue.h: Copied from Source/WebCore/css/typedom/CSSUnitValue.h.
        * css/typedom/TypedOMCSSImageValue.idl: Copied from Source/WebCore/css/typedom/CSSStyleValue.idl.
        * css/typedom/TypedOMCSSNumericValue.h: Renamed from Source/WebCore/css/typedom/CSSNumericValue.h.
        * css/typedom/TypedOMCSSNumericValue.idl: Renamed from Source/WebCore/css/typedom/CSSNumericValue.idl.
        * css/typedom/TypedOMCSSStyleValue.h: Renamed from Source/WebCore/css/typedom/CSSStyleValue.h.
        (WebCore::TypedOMCSSStyleValue::isImageValue):
        * css/typedom/TypedOMCSSStyleValue.idl: Renamed from Source/WebCore/css/typedom/CSSStyleValue.idl.
        * css/typedom/TypedOMCSSUnitValue.h: Renamed from Source/WebCore/css/typedom/CSSUnitValue.h.
        * css/typedom/TypedOMCSSUnitValue.idl: Renamed from Source/WebCore/css/typedom/CSSUnitValue.idl.
        * css/typedom/TypedOMCSSUnparsedValue.h: Renamed from Source/WebCore/css/typedom/CSSUnparsedValue.h.
        * css/typedom/TypedOMCSSUnparsedValue.idl: Renamed from Source/WebCore/css/typedom/CSSUnparsedValue.idl.
        * html/ImageBitmap.cpp:
        (WebCore::ImageBitmap::createPromise):
        * html/ImageBitmap.h:
        * html/canvas/CanvasDrawImage.idl:
        * html/canvas/CanvasFillStrokeStyles.idl:
        * html/canvas/CanvasRenderingContext.cpp:
        (WebCore::CanvasRenderingContext::checkOrigin):
        * html/canvas/CanvasRenderingContext.h:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::size):
        (WebCore::CanvasRenderingContext2DBase::drawImage):
        (WebCore::CanvasRenderingContext2DBase::createPattern):
        * html/canvas/CanvasRenderingContext2DBase.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildAction):
        * page/WindowOrWorkerGlobalScope.idl:
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::doCustomPaint):

2018-12-04  Chris Dumez  <cdumez@apple.com>

        Regression(r238817) PSON Page Cache API tests are failing
        https://bugs.webkit.org/show_bug.cgi?id=192348

        Reviewed by Alex Christensen.

        * page/MemoryRelease.cpp:
        (WebCore::releaseCriticalMemory):
        (WebCore::releaseMemory):
        * page/MemoryRelease.h:

2018-12-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238838.

        The layout test added with this change is failing on iOS.

        Reverted changeset:

        "Thick overlines and line-throughs grow in the wrong
        direction"
        https://bugs.webkit.org/show_bug.cgi?id=192264
        https://trac.webkit.org/changeset/238838

2018-12-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238840.

        The layout test added with this change is frequently failing.

        Reverted changeset:

        "REGRESSION (r238090): position:fixed sidebar on
        https://www.w3.org/TR/SVG2/coords.html does not stay fixed"
        https://bugs.webkit.org/show_bug.cgi?id=192320
        https://trac.webkit.org/changeset/238840

2018-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Move URLSoup back to WebCore after r238771
        https://bugs.webkit.org/show_bug.cgi?id=192306

        Reviewed by Michael Catanzaro.

        Add soupURIToURL() and urlToSoupURI() to replace the URL contructor taking a Soup URI and
        URL::createSoupURI(). Fix several build failures that showed up after removing the soup includes from URL
        header.

        * platform/Cookie.h:
        * platform/SharedBuffer.h:
        * platform/SourcesSoup.txt:
        * platform/network/soup/CookieSoup.cpp:
        * platform/network/soup/GUniquePtrSoup.h: Renamed from Source/WTF/wtf/glib/GUniquePtrSoup.h.
        * platform/network/soup/NetworkStorageSessionSoup.cpp:
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):
        (WebCore::NetworkStorageSession::deleteCookie const):
        (WebCore::NetworkStorageSession::getCookies):
        (WebCore::NetworkStorageSession::getRawCookies const):
        (WebCore::cookiesForSession):
        * platform/network/soup/ResourceErrorSoup.cpp:
        (WebCore::failingURI):
        * platform/network/soup/ResourceHandleSoup.cpp:
        * platform/network/soup/ResourceRequest.h:
        (WebCore::ResourceRequest::ResourceRequest):
        * platform/network/soup/ResourceRequestSoup.cpp:
        (WebCore::ResourceRequest::updateSoupMessageMembers const):
        (WebCore::ResourceRequest::updateFromSoupMessage):
        (WebCore::ResourceRequest::createSoupURI const):
        * platform/network/soup/ResourceResponseSoup.cpp:
        (WebCore::ResourceResponse::updateFromSoupMessage):
        * platform/network/soup/SocketStreamHandleImpl.h:
        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
        (WebCore::SocketStreamHandleImpl::create):
        * platform/network/soup/SoupNetworkSession.cpp:
        * platform/network/soup/URLSoup.cpp: Copied from Source/WTF/wtf/glib/URLSoup.cpp.
        (WebCore::soupURIToURL):
        (WebCore::urlToSoupURI):
        * platform/network/soup/URLSoup.h: Renamed from Source/WTF/wtf/glib/URLSoup.cpp.

2018-12-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Audit: tests should support async operations
        https://bugs.webkit.org/show_bug.cgi?id=192171
        <rdar://problem/46423562>

        Reviewed by Joseph Pecoraro.

        * page/Settings.yaml:
        * dom/ScriptExecutionContext.cpp:
        (ScriptExecutionContext::reportUnhandledPromiseRejection):
        Add setting for muting the "Unhandled Promise Rejection" console message.

2018-12-03  Tim Horton  <timothy_horton@apple.com>

        Fix the build

        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
        Unified sources, of course.

2018-12-03  Youenn Fablet  <youenn@apple.com>

        A sender created through addTransceiver and populated using addTrack should have its source set
        https://bugs.webkit.org/show_bug.cgi?id=192136

        Reviewed by Eric Carlson.

        In case libwebrtc backend is already created, we need to make sure to
        set the track source to the libwebrtc sender backend that is actually
        tied to the sender.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::removeTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

2018-12-03  YUHAN WU  <yuhan_wu@apple.com>

        Implement non-timeslice mode encoding for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=192069

        Reviewed by Youenn Fablet.

        Implement the encoding for non-timeslice mode of MediaRecorder.
        It only supports to record MP4 file through H264 and AAC encoding, we will need to support more MIME types and encoding methods.
        Add a API in internals to allow testings to turn on the mock source.

        Tests: http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable.html
               http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html
               http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable.html

        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::create):
        (WebCore::MediaRecorder::setCustomPrivateRecorderCreator):
        (WebCore::MediaRecorder::getPrivateImpl):
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::stopRecording):
        (WebCore::MediaRecorder::stopRecordingInternal):
        (WebCore::MediaRecorder::createRecordingDataBlob):
        (WebCore::MediaRecorder::scheduleDeferredTask):
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediarecorder/MediaRecorder.idl:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediarecorder/MediaRecorderPrivate.h:
        (WebCore::MediaRecorderPrivate::stopRecording):
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: Added.
        (WebCore::MediaRecorderPrivateAVFImpl::create):
        (WebCore::MediaRecorderPrivateAVFImpl::MediaRecorderPrivateAVImpl):
        (WebCore::MediaRecorderPrivateAVFImpl::sampleBufferUpdated):
        (WebCore::MediaRecorderPrivateAVFImpl::audioSamplesAvailable):
        (WebCore::MediaRecorderPrivateAVFImpl::stopRecording):
        (WebCore::MediaRecorderPrivateAVFImpl::fetchData):
        (WebCore::MediaRecorderPrivateAVFImpl::mimeType):
        * platform/mediarecorder/MediaRecorderPrivateAVFImpl.h: Added.
        * platform/mediarecorder/MediaRecorderPrivateMock.cpp:
        (WebCore::MediaRecorderPrivateMock::fetchData):
        (WebCore::MediaRecorderPrivateMock::mimeType):
        * platform/mediarecorder/MediaRecorderPrivateMock.h:
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h: Added.
        * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: Added.
        (WebCore::MediaRecorderPrivateWriter::setupWriter):
        (WebCore::MediaRecorderPrivateWriter::setVideoInput):
        (WebCore::MediaRecorderPrivateWriter::setAudioInput):
        (WebCore::copySampleBufferWithCurrentTimeStamp):
        (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
        (WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
        (WebCore::MediaRecorderPrivateWriter::stopRecording):
        (WebCore::MediaRecorderPrivateWriter::fetchData):
        * testing/Internals.cpp:
        (WebCore::createRecorderMockSource):
        (WebCore::Internals::setCustomPrivateRecorderCreator):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-12-03  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090): position:fixed sidebar on https://www.w3.org/TR/SVG2/coords.html does not stay fixed
        https://bugs.webkit.org/show_bug.cgi?id=192320
        <rdar://problem/46429833>

        Reviewed by Zalan Bujtas.
        
        When we fall into slow scrolling mode (for example, because of background-attachment: fixed),
        RenderLayerCompositor::updateCompositingLayers() needs to set the geometry dirty bit on layers
        for viewport-constrained objects so we update them.
        
        This is only necessary for page scrolling; for overflow scrolls, updateLayerPositions() already
        does enough dirtying that fixed layers nested inside scrollers get updated.

        Test: compositing/fixed-with-main-thread-scrolling.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):

2018-12-03  Justin Michaud  <justin_michaud@apple.com>

        CSS Painting API should scale display list when drawing
        https://bugs.webkit.org/show_bug.cgi?id=192217

        Reviewed by Simon Fraser.

        When we replay the display list, fix the scaling. The separate buffer is needed to make sure that globalCompositeOperation functions correctly.

        * html/CustomPaintCanvas.cpp:
        (WebCore::CustomPaintCanvas::replayDisplayList const):
        * html/CustomPaintCanvas.h:
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::doCustomPaint):

2018-12-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Thick overlines and line-throughs grow in the wrong direction
        https://bugs.webkit.org/show_bug.cgi?id=192264

        Reviewed by Dean Jackson.

        Overlines should grow upward, and line-throughs should stay centered.

        Test: fast/css3-text/css3-text-decoration/text-decoration-thicknes-overline-grow-direction.html

        * rendering/TextDecorationPainter.cpp:
        (WebCore::TextDecorationPainter::paintTextDecoration):
        * style/InlineTextBoxStyle.cpp:
        (WebCore::visualOverflowForDecorations):

2018-12-03  Simon Fraser  <simon.fraser@apple.com>

        Viewport-constrained renderers are always RenderLayerModelObjects
        https://bugs.webkit.org/show_bug.cgi?id=192342

        Reviewed by Myles C. Maxfield.

        addViewportConstrainedObject/removeViewportConstrainedObject can take RenderLayerModelObjects,
        since all viewport-constrained renderers have layers.

        * page/FrameView.cpp:
        (WebCore::FrameView::addViewportConstrainedObject):
        (WebCore::FrameView::removeViewportConstrainedObject):
        * page/FrameView.h:
        * rendering/RenderLayerModelObject.cpp:
        (WebCore::RenderLayerModelObject::styleDidChange): The 0 argument is actually a nullptr RenderGeometryMap,
        which has a default value, and the comment was obsolete.

2018-12-03  Don Olmstead  <don.olmstead@sony.com>

        Fix some unused parameter warnings
        https://bugs.webkit.org/show_bug.cgi?id=192336

        Reviewed by Fujii Hironori.

        * Modules/indexeddb/server/IDBSerialization.cpp:
        (WebCore::isLegacySerializedIDBKeyData):
        * platform/FileSystem.cpp:
        (WebCore::FileSystem::openAndLockFile):
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::bindVertexArray):
        * platform/network/curl/CertificateInfo.h:
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):

2018-12-03  Keith Rollin  <krollin@apple.com>

        Add .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192082
        <rdar://problem/46312533>

        Reviewed by Brent Fulgham.

        Add .xcfilelist files for Generate Derived Sources and Generate
        Unified Sources build phases in Xcode. These are just being staged for
        now; they'll be added to the Xcode projects later.

        No new tests -- no changed functionality.

        * DerivedSources-input.xcfilelist: Added.
        * DerivedSources-output.xcfilelist: Added.
        * UnifiedSources-input.xcfilelist: Added.
        * UnifiedSources-output.xcfilelist: Added.

2018-12-03  Alex Christensen  <achristensen@webkit.org>

        Add WKWebProcessPlugInLoadDelegate SPI willStartProvisionalLoadForFrame with a completion handler
        https://bugs.webkit.org/show_bug.cgi?id=192272

        Reviewed by Brady Eidson.

        This is needed for rdar://problem/45910057
        Covered by an API test.

        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::prepareForLoadStart):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Unreviewed build fix.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::fired):

2018-12-03  Jer Noble  <jer.noble@apple.com>

        Get rid of old, dead Mac video fullscreen code.
        https://bugs.webkit.org/show_bug.cgi?id=192315

        Reviewed by Eric Carlson.

        * PlatformMac.cmake:
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::supportsFullscreen const):

2018-12-03  Ryosuke Niwa  <rniwa@webkit.org>

        title attribute on style & link elements should be ignored inside a shadow tree
        https://bugs.webkit.org/show_bug.cgi?id=191297

        Reviewed by Antti Koivisto.

        Fixed the by not setting the stylesheet's title even when the title content attribute is present
        or set on SVG/HTML style and link elements inside a shadow tree.

        Test: fast/shadow-dom/stylesheet-title-in-shadow-tree.html

        * dom/InlineStyleSheetOwner.cpp:
        (WebCore::InlineStyleSheetOwner::createSheet):
        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::parseAttribute):
        (WebCore::HTMLLinkElement::initializeStyleSheet):
        * html/HTMLStyleElement.cpp:
        (WebCore::HTMLStyleElement::parseAttribute):
        * style/StyleScope.cpp:
        (WebCore::Style::Scope::collectActiveStyleSheets):
        * svg/SVGStyleElement.cpp:
        (WebCore::SVGStyleElement::parseAttribute):

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Add logging channel for hover related content observation
        https://bugs.webkit.org/show_bug.cgi?id=192312

        Reviewed by Simon Fraser.

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::updateStyleIfNeeded):
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/Frame.cpp:
        (WebCore::Frame::willDetachPage):
        * platform/Logging.h:

2018-12-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Use SoupSession instead of SoupSessionAsync
        https://bugs.webkit.org/show_bug.cgi?id=107451

        Reviewed by Carlos Garcia Campos.

        With glib-networking 2.57.1, WebKit is no longer able to load TLS error pages. The problem
        is a network process deadlock caused by a change in how glib-networking performs certificate
        verification. Previously it verified certificates *after* the TLS handshake had completed,
        which was weirdly late, but previously not problematic. But now that TLS 1.3 exists,
        application data can be sent before certificate verification occurs, which is no good. So I
        moved verification to occur during the handshake. I needed to do this regardless because I
        need to add a new callback in GnuTLS for another feature. This introduced a deadlock in
        WebKit:

         - glib-networking detects an unacceptable certificate, emits accept-certificate signal
         - NetworkDataTaskSoup::tlsConnectionAcceptCertificate calls
           NetworkDataTaskSoup::invalidateAndCancel calls NetworkDataTaskSoup::clearRequest
         - NetworkDataTaskSoup::clearRequest calls soup_session_cancel_message

        The problem is that, in the deprecated SoupSessionAsync used by WebKit, cancellation is
        always *synchronous* despite the name of the class. So soup_session_cancel_message winds up
        doing its thing to close everything out, and that eventually ends up in a synchronous call
        to g_tls_connection_gnutls_close. The close operation can't proceed until the TLS handshake
        is finished, and the handshake is blocked waiting for WebKit to return from its
        accept-certificate handler. So the close operation winds up polling forever waiting for the
        handshake to finish. Deadlock.

        The only changes required in WebKit to use the modern SoupSession are adjustments for the
        new default property values. Most of the properties we used to set explicitly are now
        defaults and should be removed. Additionally, SoupSession has default timeouts, which we
        want to override to allow NetworkDataTaskSoup to implement its own timeouts.

        No new tests because this is covered by TestSSL (which would be failing if run with the
        newer glib-networking).

        * platform/network/soup/SoupNetworkSession.cpp:
        (WebCore::SoupNetworkSession::SoupNetworkSession):

2018-12-03  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use WallTime for file time
        https://bugs.webkit.org/show_bug.cgi?id=192287

        Reviewed by Darin Adler.

        This patch changes a type of file time from double to WallTime to use strongly typed file time.

        No behavior change.

        * Modules/webdatabase/Database.cpp:
        (WebCore::Database::details const):
        * Modules/webdatabase/DatabaseDetails.h:
        (WebCore::DatabaseDetails::DatabaseDetails):
        (WebCore::DatabaseDetails::creationTime const):
        (WebCore::DatabaseDetails::modificationTime const):
        * Modules/webdatabase/DatabaseManager.cpp:
        (WebCore::DatabaseManager::ProposedDatabase::ProposedDatabase):
        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::detailsForNameAndOrigin):
        * fileapi/AsyncFileStream.cpp:
        (WebCore::AsyncFileStream::getSize):
        * fileapi/AsyncFileStream.h:
        * fileapi/File.cpp:
        (WebCore::File::lastModified const):
        * page/Page.cpp:
        (WebCore::Page::userStyleSheetLocationChanged):
        (WebCore::Page::userStyleSheet const):
        * page/Page.h:
        * platform/FileMetadata.h:
        * platform/FileStream.cpp:
        (WebCore::FileStream::getSize):
        * platform/FileStream.h:
        * platform/FileSystem.cpp:
        (WebCore::FileSystem::getFileModificationTime): Deleted.
        * platform/FileSystem.h:
        (WebCore::FileSystem::invalidFileTime): Deleted.
        (WebCore::FileSystem::isValidFileTime): Deleted.
        * platform/glib/FileSystemGlib.cpp:
        (WebCore::FileSystem::getFileCreationTime):
        (WebCore::FileSystem::getFileModificationTime):
        (WebCore::FileSystem::fileMetadataUsingFunction):
        * platform/network/BlobDataFileReference.cpp:
        (WebCore::BlobDataFileReference::BlobDataFileReference):
        (WebCore::BlobDataFileReference::expectedModificationTime):
        * platform/network/BlobDataFileReference.h:
        * platform/network/FormData.cpp:
        (WebCore::FormData::appendFile):
        (WebCore::FormData::appendFileRange):
        * platform/network/FormData.h:
        (WebCore::FormDataElement::FormDataElement):
        (WebCore::FormDataElement::EncodedFileData::decode):
        * platform/network/cf/FormDataStreamCFNet.cpp:
        (WebCore::advanceCurrentStream):
        * platform/network/soup/ResourceRequestSoup.cpp:
        (WebCore::appendEncodedBlobItemToSoupMessageBody):
        * platform/posix/FileSystemPOSIX.cpp:
        (WebCore::FileSystem::getFileCreationTime):
        (WebCore::FileSystem::getFileModificationTime):
        * platform/sql/SQLiteFileSystem.cpp:
        (WebCore::SQLiteFileSystem::databaseCreationTime):
        (WebCore::SQLiteFileSystem::databaseModificationTime):
        * platform/sql/SQLiteFileSystem.h:
        * platform/win/FileSystemWin.cpp:
        (WebCore::FileSystem::getFileModificationTime):
        (WebCore::FileSystem::getFileCreationTime):
        (WebCore::FileSystem::findDataToFileMetadata):

2018-12-03  Dean Jackson  <dino@apple.com>

        Fix iOS Simulator Release test crashes.

        * platform/network/ios/WebCoreURLResponseIOS.mm:
        (WebCore::adjustMIMETypeIfNecessary): Check for null before using the
        new MIME type.

2018-12-03  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event when more capture device information are revealed.
        https://bugs.webkit.org/show_bug.cgi?id=192268

        Reviewed by Youenn Fablet.

        Test: fast/mediastream/enumerate-devices-change-event.html

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start): Remove code to modify device based on access, that is
        now done in the UI process.
        (WebCore::MediaDevicesRequest::filterDeviceList): Deleted.
        * Modules/mediastream/MediaDevicesRequest.h:
        * platform/mediastream/RealtimeMediaSourceCenter.h:

2018-12-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOSMac] Unable to upload non-image files using drag and drop in WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=192283
        <rdar://problem/46399461>

        Reviewed by Ryosuke Niwa.

        Currently on iOS, file URLs aren't generally written to the pasteboard during drag and drop unless the
        application providing the data explicitly registers "public.file-url" to item providers. As such, our current
        logic on iOS for handling drops does not attempt to prevent "public.file-url" from being advertised as the
        "text/uri-list" MIME type in DataTransfer, though we do currently succeed in suppressing access to the file URL.

        However, on iOSMac, the scenario in which file URLs are registered to item providers becomes pertinent when
        uploading files from other macOS apps (e.g. Finder) into a WKWebView running in iOSMac. Furthermore, the
        `preferredPresentationStyle` flag on `NSItemProvider` is unavailable in iOSMac; currently, this flag is our
        primary cue on iOS that an item should be treated as an attachment rather than inline data. In order to support
        file uploads in iOSMac, we make several adjustments to drop handling logic in iOS to handle the case where the
        "public.file-url" type is registered. See below for more details.

        Tests:  DragAndDropTests.DataTransferExposePlainTextWithFileURLAsFile
                DragAndDropTests.DataTransferGetDataWhenDroppingImageWithFileURL

        * platform/PasteboardItemInfo.h:
        (WebCore::PasteboardItemInfo::encode const):
        (WebCore::PasteboardItemInfo::decode):

        Add a new flag that is set if and only if the item provider contains the "public.file-url" type, and also
        contains some non-URL data type that conforms to one of the file types supported for file uploads (i.e.
        "public.content", zip archives, and folders).

        * platform/cocoa/PasteboardCocoa.mm:
        (WebCore::Pasteboard::fileContentState):

        Consider the pasteboard to contain files in the case where one or more of the items contains a file URL, along
        with some other pasteboard data that can be represented as a file upload.

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::informationForItemAtIndex):
        (WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):

        If the pasteboard contains "public.file-url", don't consider "text/uri-list" to be one of the data types that's
        safe to expose to the page. Our current behavior in this case is that we will advertise "text/uri-list" as a
        pasteboard type in the DataTransfer, but if the page attempts to request this information, we simply return the
        empty string. Instead, we shouldn't expose "text/uri-list" as a type in the first place.

        * platform/ios/WebItemProviderPasteboard.h:
        * platform/ios/WebItemProviderPasteboard.mm:

        Add a few more `__bridge`-ing casts where appropriate.

        (typeConformsToTypes):

        Move this further up the file so that it can be used in `NSItemProvider (WebCoreExtras)`.

        (-[NSItemProvider web_containsFileURLAndFileUploadContent]):

        Add a helper method on NSItemProvider to determine whether an item provider has a file URL, as well as a content
        type suitable for file uploads.

        (-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):

        This currently always returns `NO` in iOSMac; instead, return `YES` on both iOS and iOSMac in the case where the
        item provider contains a file URL and content which may be uploaded.

        (-[WebItemProviderPasteboard preferredFileUploadURLAtIndex:fileType:]):
        (-[WebItemProviderPasteboard typeIdentifiersToLoad:]):

        Refactor this to take an `NSItemProvider` instead of a list of type identifiers, and bail out of loading data
        for "public.url" if the item provider contains a file URL.

        (-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):
        (-[WebItemProviderPasteboard typeIdentifiersToLoadForRegisteredTypeIdentifiers:]): Deleted.

2018-12-02  Zalan Bujtas  <zalan@apple.com>

        Add a runtime feature flag for LayoutFormattingContext.
        https://bugs.webkit.org/show_bug.cgi?id=192280

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setLayoutFormattingContextEnabled):
        (WebCore::RuntimeEnabledFeatures::layoutFormattingContextEnabled const):

2018-12-01  Brent Fulgham  <bfulgham@apple.com>

        Lifetime of HTMLMediaElement is not properly handled in asynchronous actions
        https://bugs.webkit.org/show_bug.cgi?id=192087
        <rdar://problem/45975230>

        Reviewed by Dean Jackson.

        The HTMLMediaElement performs operations that allow arbitrary JavaScript to run. We need to make
        sure the active media element is protected until those calls complete.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::didFinishInsertingNode):
        (WebCore::HTMLMediaElement::exitFullscreen):
        (WebCore::HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured):
        (WebCore::HTMLMediaElement::scheduleConfigureTextTracks):
        (WebCore::HTMLMediaElement::scheduleMediaEngineWasUpdated):
        (WebCore::HTMLMediaElement::scheduleUpdatePlayState):
        (WebCore::HTMLMediaElement::scheduleUpdateMediaState):

2018-12-01  Chris Dumez  <cdumez@apple.com>

        [PSON] process-swapping may occur even though opener has handle to openee
        https://bugs.webkit.org/show_bug.cgi?id=192277

        Reviewed by Antti Koivisto.

        Process-swapping may occur even though opener has handle to openee, which is not Web-compatible. The reason
        is that we rely on the window not having an opener to process-swap. However, the opener can be disowned,
        which does not mean that the opener doesn't still have a handle to its openee.

        To address the issue:
        - Renamed openedViaWindowOpenWithOpener flag to openedByDOMWithOpener
        - Make sure this flag gets set if an opener have ever been set for the browsing context
        - Do not process-swap if this flag is set
        - Drop opener from NavigationAction since it does not provide meaningful information to decide whether
          to process-swap or not.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::setOpener):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::openedByDOMWithOpener const):
        (WebCore::NavigationAction::setOpenedByDOMWithOpener):
        (WebCore::NavigationAction::setOpener): Deleted.
        (WebCore::NavigationAction::opener const): Deleted.
        (WebCore::NavigationAction::openedViaWindowOpenWithOpener const): Deleted.
        (WebCore::NavigationAction::setOpenedViaWindowOpenWithOpener): Deleted.
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
        * page/Page.h:
        (WebCore::Page::openedByDOMWithOpener const):
        (WebCore::Page::setOpenedByDOMWithOpener):
        (WebCore::Page::openedViaWindowOpenWithOpener const): Deleted.
        (WebCore::Page::setOpenedViaWindowOpenWithOpener): Deleted.

2018-12-01  Christopher Reid  <chris.reid@sony.com>

        Add generic implementations to FileSystemPOSIX.cpp
        https://bugs.webkit.org/show_bug.cgi?id=192263

        Reviewed by Yusuke Suzuki.

        No new tests, no change in behavior.

        Add generic FileSystemPOSIX implementations for:
            - stringFromFileSystemRepresentation
            - fileSystemRepresentation
            - moveFile
            - getVolumeFreeSpace

        Also removing an unneeded PLATFORM(GTK) check since GTK is only using FileSystemGlib

        * platform/posix/FileSystemPOSIX.cpp:

2018-12-01  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Call instrinsicWidthConstraints on the correct formatting state.
        https://bugs.webkit.org/show_bug.cgi?id=192274

        Reviewed by Antti Koivisto.

        When we call intrinsic width on a formatting context root, we need to use the formatting state
        that this root constructs and not the one it lives in.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const): it's the caller's responsiblitiy to store the intrinsic values.

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build.

        * platform/network/curl/CookieJarCurl.cpp:
        * platform/network/curl/PublicSuffixCurl.cpp:

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build.

        * platform/network/curl/CookieJarCurl.h:

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Move URL from WebCore to WTF
        https://bugs.webkit.org/show_bug.cgi?id=190234

        Reviewed by Keith Miller.

        A URL is a low-level concept that does not depend on other classes in WebCore.
        We are starting to use URLs in JavaScriptCore for modules.
        I need URL and URLParser in a place with fewer dependencies for rdar://problem/44119696

        * Modules/applepay/ApplePaySession.h:
        * Modules/applepay/ApplePayValidateMerchantEvent.h:
        * Modules/applepay/PaymentCoordinator.cpp:
        * Modules/applepay/PaymentCoordinator.h:
        * Modules/applepay/PaymentCoordinatorClient.h:
        * Modules/applepay/PaymentSession.h:
        * Modules/applicationmanifest/ApplicationManifest.h:
        * Modules/beacon/NavigatorBeacon.cpp:
        * Modules/cache/DOMCache.cpp:
        * Modules/fetch/FetchLoader.h:
        * Modules/mediasession/MediaSessionMetadata.h:
        * Modules/mediasource/MediaSourceRegistry.cpp:
        * Modules/mediasource/MediaSourceRegistry.h:
        * Modules/mediastream/MediaStream.cpp:
        * Modules/mediastream/MediaStreamRegistry.cpp:
        * Modules/mediastream/MediaStreamRegistry.h:
        * Modules/navigatorcontentutils/NavigatorContentUtilsClient.h:
        * Modules/notifications/Notification.h:
        * Modules/paymentrequest/MerchantValidationEvent.h:
        * Modules/paymentrequest/PaymentRequest.h:
        * Modules/plugins/PluginReplacement.h:
        * Modules/webaudio/AudioContext.h:
        * Modules/websockets/ThreadableWebSocketChannel.h:
        * Modules/websockets/WebSocket.h:
        * Modules/websockets/WebSocketHandshake.cpp:
        * Modules/websockets/WebSocketHandshake.h:
        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/CachedModuleScriptLoader.h:
        * bindings/js/CachedScriptFetcher.h:
        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::executeIfJavaScriptURL):
        * bindings/js/ScriptController.h:
        * bindings/js/ScriptModuleLoader.h:
        * bindings/js/ScriptSourceCode.h:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateImplementation):
        * bindings/scripts/test/JS/JSInterfaceName.cpp:
        * bindings/scripts/test/JS/JSMapLike.cpp:
        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
        * bindings/scripts/test/JS/JSTestException.cpp:
        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestInterface.cpp:
        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
        * bindings/scripts/test/JS/JSTestIterable.cpp:
        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestNode.cpp:
        * bindings/scripts/test/JS/JSTestObj.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
        * bindings/scripts/test/JS/JSTestSerialization.cpp:
        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
        * bindings/scripts/test/JS/JSTestStringifier.cpp:
        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
        * contentextensions/ContentExtensionsBackend.cpp:
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):
        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad):
        (WebCore::ContentExtensions::applyBlockedStatusToRequest):
        * contentextensions/ContentExtensionsBackend.h:
        * css/CSSValue.h:
        * css/StyleProperties.h:
        * css/StyleResolver.h:
        * css/StyleSheet.h:
        * css/StyleSheetContents.h:
        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContextHash::hash):
        (WTF::HashTraits<WebCore::CSSParserContext>::constructDeletedValue):
        * css/parser/CSSParserIdioms.h:
        * dom/DataTransfer.cpp:
        (WebCore::DataTransfer::setDataFromItemList):
        * dom/Document.cpp:
        (WebCore::Document::setURL):
        (WebCore::Document::processHttpEquiv):
        (WebCore::Document::completeURL const):
        (WebCore::Document::ensureTemplateDocument):
        * dom/Document.h:
        (WebCore::Document::urlForBindings const):
        * dom/Element.cpp:
        (WebCore::Element::isJavaScriptURLAttribute const):
        * dom/InlineStyleSheetOwner.cpp:
        (WebCore::parserContextForElement):
        * dom/Node.cpp:
        (WebCore::Node::baseURI const):
        * dom/Node.h:
        * dom/ScriptElement.h:
        * dom/ScriptExecutionContext.h:
        * dom/SecurityContext.h:
        * editing/Editor.cpp:
        (WebCore::Editor::pasteboardWriterURL):
        * editing/Editor.h:
        * editing/MarkupAccumulator.cpp:
        (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):
        * editing/cocoa/DataDetection.h:
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::userVisibleString):
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::replaceRichContentWithAttachments):
        (WebCore::WebContentReader::readWebArchive):
        * editing/mac/EditorMac.mm:
        (WebCore::Editor::plainTextFromPasteboard):
        (WebCore::Editor::writeImageToPasteboard):
        * editing/markup.cpp:
        (WebCore::removeSubresourceURLAttributes):
        (WebCore::createFragmentFromMarkup):
        * editing/markup.h:
        * fileapi/AsyncFileStream.cpp:
        * fileapi/AsyncFileStream.h:
        * fileapi/Blob.h:
        * fileapi/BlobURL.cpp:
        * fileapi/BlobURL.h:
        * fileapi/File.h:
        * fileapi/FileReaderLoader.h:
        * fileapi/ThreadableBlobRegistry.h:
        * history/CachedFrame.h:
        * history/HistoryItem.h:
        * html/DOMURL.cpp:
        (WebCore::DOMURL::create):
        * html/DOMURL.h:
        * html/HTMLAttachmentElement.cpp:
        (WebCore::HTMLAttachmentElement::archiveResourceURL):
        * html/HTMLFrameElementBase.cpp:
        (WebCore::HTMLFrameElementBase::isURLAllowed const):
        (WebCore::HTMLFrameElementBase::openURL):
        (WebCore::HTMLFrameElementBase::setLocation):
        * html/HTMLInputElement.h:
        * html/HTMLLinkElement.h:
        * html/HTMLMediaElement.cpp:
        (WTF::LogArgument<URL>::toString):
        (WTF::LogArgument<WebCore::URL>::toString): Deleted.
        * html/HTMLPlugInImageElement.cpp:
        (WebCore::HTMLPlugInImageElement::allowedToLoadFrameURL):
        * html/ImageBitmap.h:
        * html/MediaFragmentURIParser.h:
        * html/PublicURLManager.cpp:
        * html/PublicURLManager.h:
        * html/URLInputType.cpp:
        * html/URLRegistry.h:
        * html/URLSearchParams.cpp:
        (WebCore::URLSearchParams::URLSearchParams):
        (WebCore::URLSearchParams::toString const):
        (WebCore::URLSearchParams::updateURL):
        (WebCore::URLSearchParams::updateFromAssociatedURL):
        * html/URLUtils.h:
        (WebCore::URLUtils<T>::setHost):
        (WebCore::URLUtils<T>::setPort):
        * html/canvas/CanvasRenderingContext.cpp:
        * html/canvas/CanvasRenderingContext.h:
        * html/parser/HTMLParserIdioms.cpp:
        * html/parser/XSSAuditor.cpp:
        (WebCore::semicolonSeparatedValueContainsJavaScriptURL):
        (WebCore::XSSAuditor::filterScriptToken):
        (WebCore::XSSAuditor::filterObjectToken):
        (WebCore::XSSAuditor::filterParamToken):
        (WebCore::XSSAuditor::filterEmbedToken):
        (WebCore::XSSAuditor::filterFormToken):
        (WebCore::XSSAuditor::filterInputToken):
        (WebCore::XSSAuditor::filterButtonToken):
        (WebCore::XSSAuditor::eraseDangerousAttributesIfInjected):
        (WebCore::XSSAuditor::isLikelySafeResource):
        * html/parser/XSSAuditor.h:
        * html/parser/XSSAuditorDelegate.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::openInNewTab):
        * inspector/InspectorInstrumentation.h:
        * inspector/agents/InspectorNetworkAgent.cpp:
        * inspector/agents/InspectorNetworkAgent.h:
        * inspector/agents/InspectorPageAgent.h:
        * inspector/agents/InspectorWorkerAgent.h:
        * loader/ApplicationManifestLoader.h:
        * loader/CookieJar.h:
        * loader/CrossOriginAccessControl.h:
        * loader/CrossOriginPreflightResultCache.h:
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::willSendRequest):
        (WebCore::DocumentLoader::maybeLoadEmpty):
        * loader/DocumentLoader.h:
        (WebCore::DocumentLoader::serverRedirectSourceForHistory const):
        * loader/DocumentWriter.h:
        * loader/FormSubmission.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::submitForm):
        (WebCore::FrameLoader::receivedFirstData):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::createWindow):
        * loader/FrameLoaderClient.h:
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::currentItemShouldBeReplaced const):
        (WebCore::HistoryController::initializeItem):
        * loader/LinkLoader.h:
        * loader/LoadTiming.h:
        * loader/LoaderStrategy.h:
        * loader/MixedContentChecker.cpp:
        (WebCore::MixedContentChecker::checkFormForMixedContent const):
        * loader/MixedContentChecker.h:
        * loader/NavigationScheduler.cpp:
        (WebCore::NavigationScheduler::shouldScheduleNavigation const):
        * loader/NavigationScheduler.h:
        * loader/PingLoader.h:
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * loader/ResourceLoadInfo.h:
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
        * loader/ResourceLoadObserver.h:
        * loader/ResourceLoadStatistics.h:
        * loader/ResourceLoader.h:
        * loader/ResourceTiming.h:
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::requestFrame):
        * loader/SubframeLoader.h:
        * loader/SubstituteData.h:
        * loader/appcache/ApplicationCache.h:
        * loader/appcache/ApplicationCacheGroup.h:
        * loader/appcache/ApplicationCacheHost.h:
        * loader/appcache/ApplicationCacheStorage.cpp:
        * loader/appcache/ApplicationCacheStorage.h:
        * loader/appcache/ManifestParser.cpp:
        * loader/appcache/ManifestParser.h:
        * loader/archive/ArchiveResourceCollection.h:
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::createFromSelection):
        * loader/cache/CachedResource.cpp:
        * loader/cache/CachedResourceLoader.h:
        * loader/cache/CachedStyleSheetClient.h:
        * loader/cache/MemoryCache.h:
        * loader/icon/IconLoader.h:
        * loader/mac/LoaderNSURLExtras.mm:
        * page/CaptionUserPreferencesMediaAF.cpp:
        * page/ChromeClient.h:
        * page/ClientOrigin.h:
        * page/ContextMenuClient.h:
        * page/ContextMenuController.cpp:
        (WebCore::ContextMenuController::checkOrEnableIfNeeded const):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::isInsecureScriptAccess):
        * page/DragController.cpp:
        (WebCore::DragController::startDrag):
        * page/DragController.h:
        * page/EventSource.h:
        * page/Frame.h:
        * page/FrameView.h:
        * page/History.h:
        * page/Location.cpp:
        (WebCore::Location::url const):
        (WebCore::Location::reload):
        * page/Location.h:
        * page/Page.h:
        * page/PageSerializer.h:
        * page/Performance.h:
        * page/PerformanceResourceTiming.cpp:
        * page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::SecurityOrigin):
        (WebCore::SecurityOrigin::create):
        * page/SecurityOrigin.h:
        * page/SecurityOriginData.h:
        * page/SecurityOriginHash.h:
        * page/SecurityPolicy.cpp:
        (WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner):
        * page/SecurityPolicy.h:
        * page/SettingsBase.h:
        * page/ShareData.h:
        * page/SocketProvider.h:
        * page/UserContentProvider.h:
        * page/UserContentURLPattern.cpp:
        * page/UserContentURLPattern.h:
        * page/UserScript.h:
        * page/UserStyleSheet.h:
        * page/VisitedLinkStore.h:
        * page/csp/ContentSecurityPolicy.h:
        * page/csp/ContentSecurityPolicyClient.h:
        * page/csp/ContentSecurityPolicyDirectiveList.h:
        * page/csp/ContentSecurityPolicySource.cpp:
        (WebCore::ContentSecurityPolicySource::portMatches const):
        * page/csp/ContentSecurityPolicySource.h:
        * page/csp/ContentSecurityPolicySourceList.cpp:
        * page/csp/ContentSecurityPolicySourceList.h:
        * page/csp/ContentSecurityPolicySourceListDirective.cpp:
        * platform/ContentFilterUnblockHandler.h:
        * platform/ContextMenuItem.h:
        * platform/Cookie.h:
        * platform/CookiesStrategy.h:
        * platform/DragData.h:
        * platform/DragImage.h:
        * platform/FileStream.h:
        * platform/LinkIcon.h:
        * platform/Pasteboard.cpp:
        (WebCore::Pasteboard::canExposeURLToDOMWhenPasteboardContainsFiles):
        * platform/Pasteboard.h:
        * platform/PasteboardStrategy.h:
        * platform/PasteboardWriterData.cpp:
        (WebCore::PasteboardWriterData::setURLData):
        (WebCore::PasteboardWriterData::setURL): Deleted.
        * platform/PasteboardWriterData.h:
        * platform/PlatformPasteboard.h:
        * platform/PromisedAttachmentInfo.h:
        * platform/SSLKeyGenerator.h:
        * platform/SchemeRegistry.cpp:
        (WebCore::SchemeRegistry::isBuiltinScheme):
        * platform/SharedBuffer.h:
        * platform/SharedStringHash.cpp:
        * platform/SharedStringHash.h:
        * platform/SourcesSoup.txt:
        * platform/UserAgent.h:
        * platform/UserAgentQuirks.cpp:
        * platform/UserAgentQuirks.h:
        * platform/cocoa/NetworkExtensionContentFilter.h:
        * platform/cocoa/NetworkExtensionContentFilter.mm:
        (WebCore::NetworkExtensionContentFilter::willSendRequest):
        * platform/glib/SSLKeyGeneratorGLib.cpp: Copied from Source/WebCore/page/ShareData.h.
        (WebCore::getSupportedKeySizes):
        (WebCore::signedPublicKeyAndChallengeString):
        * platform/glib/UserAgentGLib.cpp:
        * platform/graphics/GraphicsContext.h:
        * platform/graphics/Image.cpp:
        * platform/graphics/Image.h:
        * platform/graphics/ImageObserver.h:
        * platform/graphics/ImageSource.cpp:
        * platform/graphics/ImageSource.h:
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        * platform/graphics/cg/GraphicsContextCG.cpp:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
        (webKitMediaSrcSetUri):
        * platform/graphics/iso/ISOVTTCue.cpp:
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        * platform/gtk/DragImageGtk.cpp:
        * platform/gtk/PasteboardGtk.cpp:
        * platform/gtk/PlatformPasteboardGtk.cpp:
        * platform/gtk/SelectionData.h:
        * platform/ios/PasteboardIOS.mm:
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::write):
        * platform/ios/QuickLook.h:
        * platform/mac/DragDataMac.mm:
        (WebCore::DragData::asPlainText const):
        * platform/mac/DragImageMac.mm:
        * platform/mac/FileSystemMac.mm:
        (WebCore::FileSystem::setMetadataURL):
        * platform/mac/PasteboardMac.mm:
        * platform/mac/PasteboardWriter.mm:
        (WebCore::createPasteboardWriter):
        * platform/mac/PlatformPasteboardMac.mm:
        * platform/mac/PublicSuffixMac.mm:
        (WebCore::decodeHostName):
        * platform/mac/SSLKeyGeneratorMac.mm:
        * platform/mac/WebCoreNSURLExtras.h:
        * platform/mac/WebCoreNSURLExtras.mm:
        (WebCore::isArmenianLookalikeCharacter): Deleted.
        (WebCore::isArmenianScriptCharacter): Deleted.
        (WebCore::isASCIIDigitOrValidHostCharacter): Deleted.
        (WebCore::isLookalikeCharacter): Deleted.
        (WebCore::whiteListIDNScript): Deleted.
        (WebCore::readIDNScriptWhiteListFile): Deleted.
        (WebCore::allCharactersInIDNScriptWhiteList): Deleted.
        (WebCore::isSecondLevelDomainNameAllowedByTLDRules): Deleted.
        (WebCore::isRussianDomainNameCharacter): Deleted.
        (WebCore::allCharactersAllowedByTLDRules): Deleted.
        (WebCore::mapHostNameWithRange): Deleted.
        (WebCore::hostNameNeedsDecodingWithRange): Deleted.
        (WebCore::hostNameNeedsEncodingWithRange): Deleted.
        (WebCore::decodeHostNameWithRange): Deleted.
        (WebCore::encodeHostNameWithRange): Deleted.
        (WebCore::decodeHostName): Deleted.
        (WebCore::encodeHostName): Deleted.
        (WebCore::collectRangesThatNeedMapping): Deleted.
        (WebCore::collectRangesThatNeedEncoding): Deleted.
        (WebCore::collectRangesThatNeedDecoding): Deleted.
        (WebCore::applyHostNameFunctionToMailToURLString): Deleted.
        (WebCore::applyHostNameFunctionToURLString): Deleted.
        (WebCore::mapHostNames): Deleted.
        (WebCore::stringByTrimmingWhitespace): Deleted.
        (WebCore::URLByTruncatingOneCharacterBeforeComponent): Deleted.
        (WebCore::URLByRemovingResourceSpecifier): Deleted.
        (WebCore::URLWithData): Deleted.
        (WebCore::dataWithUserTypedString): Deleted.
        (WebCore::URLWithUserTypedString): Deleted.
        (WebCore::URLWithUserTypedStringDeprecated): Deleted.
        (WebCore::hasQuestionMarkOnlyQueryString): Deleted.
        (WebCore::dataForURLComponentType): Deleted.
        (WebCore::URLByRemovingComponentAndSubsequentCharacter): Deleted.
        (WebCore::URLByRemovingUserInfo): Deleted.
        (WebCore::originalURLData): Deleted.
        (WebCore::createStringWithEscapedUnsafeCharacters): Deleted.
        (WebCore::userVisibleString): Deleted.
        (WebCore::isUserVisibleURL): Deleted.
        (WebCore::rangeOfURLScheme): Deleted.
        (WebCore::looksLikeAbsoluteURL): Deleted.
        * platform/mediastream/MediaEndpointConfiguration.h:
        * platform/network/BlobPart.h:
        * platform/network/BlobRegistry.h:
        * platform/network/BlobRegistryImpl.h:
        * platform/network/BlobResourceHandle.cpp:
        * platform/network/CookieRequestHeaderFieldProxy.h:
        * platform/network/CredentialStorage.cpp:
        * platform/network/CredentialStorage.h:
        * platform/network/DataURLDecoder.cpp:
        * platform/network/DataURLDecoder.h:
        * platform/network/FormData.h:
        * platform/network/ProxyServer.h:
        * platform/network/ResourceErrorBase.h:
        * platform/network/ResourceHandle.cpp:
        (WebCore::ResourceHandle::didReceiveResponse):
        * platform/network/ResourceHandle.h:
        * platform/network/ResourceHandleClient.h:
        * platform/network/ResourceRequestBase.cpp:
        (WebCore::ResourceRequestBase::redirectedRequest const):
        * platform/network/ResourceRequestBase.h:
        * platform/network/ResourceResponseBase.h:
        * platform/network/SocketStreamHandle.h:
        * platform/network/cf/DNSResolveQueueCFNet.cpp:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        * platform/network/cf/ProxyServerCFNet.cpp:
        * platform/network/cf/ResourceErrorCF.cpp:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        * platform/network/curl/CookieJarCurlDatabase.cpp: Added.
        (WebCore::cookiesForSession):
        (WebCore::CookieJarCurlDatabase::setCookiesFromDOM const):
        (WebCore::CookieJarCurlDatabase::setCookiesFromHTTPResponse const):
        (WebCore::CookieJarCurlDatabase::cookiesForDOM const):
        (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const):
        (WebCore::CookieJarCurlDatabase::cookiesEnabled const):
        (WebCore::CookieJarCurlDatabase::getRawCookies const):
        (WebCore::CookieJarCurlDatabase::deleteCookie const):
        (WebCore::CookieJarCurlDatabase::getHostnamesWithCookies const):
        (WebCore::CookieJarCurlDatabase::deleteCookiesForHostnames const):
        (WebCore::CookieJarCurlDatabase::deleteAllCookies const):
        (WebCore::CookieJarCurlDatabase::deleteAllCookiesModifiedSince const):
        * platform/network/curl/CookieJarDB.cpp:
        * platform/network/curl/CookieUtil.h:
        * platform/network/curl/CurlContext.h:
        * platform/network/curl/CurlProxySettings.h:
        * platform/network/curl/CurlResponse.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        * platform/network/curl/ProxyServerCurl.cpp:
        * platform/network/curl/SocketStreamHandleImplCurl.cpp:
        * platform/network/mac/ResourceErrorMac.mm:
        * platform/network/soup/NetworkStorageSessionSoup.cpp:
        * platform/network/soup/ProxyServerSoup.cpp:
        * platform/network/soup/ResourceHandleSoup.cpp:
        * platform/network/soup/ResourceRequest.h:
        * platform/network/soup/ResourceRequestSoup.cpp:
        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
        * platform/network/soup/SoupNetworkSession.cpp:
        * platform/network/soup/SoupNetworkSession.h:
        * platform/text/TextEncoding.h:
        * platform/win/BString.cpp:
        * platform/win/BString.h:
        * platform/win/ClipboardUtilitiesWin.cpp:
        (WebCore::markupToCFHTML):
        * platform/win/ClipboardUtilitiesWin.h:
        * platform/win/DragImageWin.cpp:
        * platform/win/PasteboardWin.cpp:
        * plugins/PluginData.h:
        * rendering/HitTestResult.h:
        * rendering/RenderAttachment.cpp:
        * svg/SVGImageLoader.cpp:
        (WebCore::SVGImageLoader::sourceURI const):
        * svg/SVGURIReference.cpp:
        * svg/graphics/SVGImage.h:
        * svg/graphics/SVGImageCache.h:
        * svg/graphics/SVGImageForContainer.h:
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        * testing/Internals.mm:
        (WebCore::Internals::userVisibleString):
        * testing/MockContentFilter.cpp:
        (WebCore::MockContentFilter::willSendRequest):
        * testing/MockPaymentCoordinator.cpp:
        * testing/js/WebCoreTestSupport.cpp:
        * workers/AbstractWorker.h:
        * workers/WorkerGlobalScope.h:
        * workers/WorkerGlobalScopeProxy.h:
        * workers/WorkerInspectorProxy.h:
        * workers/WorkerLocation.h:
        * workers/WorkerScriptLoader.h:
        * workers/WorkerThread.cpp:
        * workers/WorkerThread.h:
        * workers/service/ServiceWorker.h:
        * workers/service/ServiceWorkerClientData.h:
        * workers/service/ServiceWorkerContainer.cpp:
        * workers/service/ServiceWorkerContextData.h:
        * workers/service/ServiceWorkerData.h:
        * workers/service/ServiceWorkerJobData.h:
        * workers/service/ServiceWorkerRegistrationKey.cpp:
        * workers/service/ServiceWorkerRegistrationKey.h:
        (WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::constructDeletedValue):
        * worklets/WorkletGlobalScope.h:
        * xml/XMLHttpRequest.h:

2018-11-30  Chris Dumez  <cdumez@apple.com>

        Drop unused Cross-Origin-Window-Policy from HTTPHeaderNames.in
        https://bugs.webkit.org/show_bug.cgi?id=192253

        Reviewed by Geoffrey Garen.

        * platform/network/HTTPHeaderNames.in:

2018-11-30  Justin Fan  <justin_fan@apple.com>

        [WebGPU] WebGPUQueue::submit and WebGPURenderingContext::present() implementation
        https://bugs.webkit.org/show_bug.cgi?id=192254

        Reviewed by Dean Jackson.

        Final plumbing to render onto an HTMLCanvasElement with WebGPU. Also added ref-test that draws 
        a green square onto a canvas using WebGPU; reference uses 2D canvas.

        Test: webgpu/simple-triangle-strip.html

        * Modules/webgpu/WebGPUCommandBuffer.h:
        * Modules/webgpu/WebGPUSwapChain.h: Needs to override platformLayer() for CanvasBasedRenderingContext.
        * platform/graphics/gpu/GPUQueue.h:
        * platform/graphics/gpu/GPUSwapChain.h:
        (WebCore::GPUSwapChain::metalLayer const): Renamed from platformLayer. 
        (WebCore::GPUSwapChain::platformLayer const): Deleted.
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::submit):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::getNextTexture): Returns the texture of the swap layer's next drawable. 
        (WebCore::GPUSwapChain::present): Presents the last-returned drawable from getNextTexture, and frees it.
        (WebCore::GPUSwapChain::platformLayer const):

2018-11-30  Zalan Bujtas  <zalan@apple.com>

        Can’t use RalphLauren.com on iPad because hover menus don’t stay up
        https://bugs.webkit.org/show_bug.cgi?id=192236
        <rdar://problem/45792118>

        Reviewed by Geoffrey Garen.

        This patch introduces asynchronous content change observation.
        1. Start observing synchronous content change and timer install as the result of dispatching mouseMoved event.
        2. Start observing synchronous content change and style recalc schedule as the result of a timer callback (installed at #1).
        3. Start observing synchronous content change as the result of a style recalc (scheduled at #2).

        This patch also extends the timeout value from 100ms to 250ms. Certain content prefer longer timeouts (see http://briancherne.github.io/jquery-hoverIntent/ for details).  

        Test: fast/events/touch/ios/hover-when-style-change-is-async.html

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::updateStyleIfNeeded):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKStartObservingStyleRecalcScheduling):
        (WKStopObservingStyleRecalcScheduling):
        (WKIsObservingStyleRecalcScheduling):
        (WKSetShouldObserveNextStyleRecalc):
        (WKShouldObserveNextStyleRecalc):
        (WKSetObservedContentChange):
        * platform/ios/wak/WKContentObservation.h:

2018-11-30  Ryosuke Niwa  <rniwa@webkit.org>

        ShadowRoot should have styleSheets property
        https://bugs.webkit.org/show_bug.cgi?id=191311

        Reviewed by Antti Koivisto.

        Added the support for ShadowRoot.prototype.styleSheets by making StyleSheetList refer to either
        a document or a shadow root. We don't support the named getter in shadow root since that's not
        a standard feature: https://drafts.csswg.org/cssom/#the-stylesheetlist-interface

        Tests: fast/shadow-dom/shadowroot-stylesheets-wrapper-gc.html
               imported/w3c/web-platform-tests/shadow-dom/ShadowRoot-interface.html

        * css/StyleSheetList.cpp:
        (WebCore::StyleSheetList::StyleSheetList): Added a variant which takes ShadowRoot.
        (WebCore::StyleSheetList::styleSheets const):
        (WebCore::StyleSheetList::ownerNode): Added. The replacement for document() since now the opaque
        root could be either a Document or a ShadowRoot.
        (WebCore::StyleSheetList::detach): Renamed from detachFromDocument.
        (WebCore::StyleSheetList::namedItem const): Added a comment that the named getter is only supported
        for Document since it's not in the standard.
        * css/StyleSheetList.h:
        (WebCore::StyleSheetList::create): Added a variant which takes ShadowRoot.
        (WebCore::StyleSheetList::document): Deleted. Replaced by StyleSheetList::ownerNode in .cpp file.
        * css/StyleSheetList.idl:
        * dom/Document.cpp:
        (WebCore::Document::~Document):
        (WebCore::Document::styleSheets):
        * dom/Document.idl:
        * dom/DocumentOrShadowRoot.idl: Moved the declaration of styleSheets here from Document.idl.
        * dom/ShadowRoot.cpp:
        (WebCore::ShadowRoot::~ShadowRoot): Call detach.
        (WebCore::ShadowRoot::styleSheets):
        * dom/ShadowRoot.h:

2018-11-30  Chris Dumez  <cdumez@apple.com>

        [PSON] We are sometimes swapping processes even though there is an opened window with an opener link to us
        https://bugs.webkit.org/show_bug.cgi?id=192242

        Reviewed by Geoffrey Garen.

        Move the setting of the openedViaWindowOpenWithOpener & hasOpenedFrames flags on the
        NavigationAction from FrameLoader::loadURL(), to PolicyChecker::checkNavigationPolicy()
        to make sure those are always accurate and so that the UIProcess can make correct process
        swapping decisions.

        NavigationAction objects are created in other places than FrameLoader::loadURL() as well.
        Even PolicyChecker::checkNavigationPolicy() will create a NavigationAction object if
        there is not already one.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::hasOpenedFrames const):
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):

2018-11-30  Don Olmstead  <don.olmstead@sony.com>

        Rename ENABLE_SUBTLE_CRYPTO to ENABLE_WEB_CRYPTO
        https://bugs.webkit.org/show_bug.cgi?id=192197

        Reviewed by Jiewen Tan.

        No new tests. No change in behavior.

        * Configurations/FeatureDefines.xcconfig:
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::dumpIfTerminal):
        (WebCore::CloneDeserializer::readTerminal):
        * crypto/CommonCryptoUtilities.cpp:
        * crypto/CommonCryptoUtilities.h:
        * crypto/CryptoAlgorithm.cpp:
        * crypto/CryptoAlgorithm.h:
        * crypto/CryptoAlgorithmIdentifier.h:
        * crypto/CryptoAlgorithmParameters.h:
        * crypto/CryptoAlgorithmParameters.idl:
        * crypto/CryptoAlgorithmRegistry.cpp:
        * crypto/CryptoAlgorithmRegistry.h:
        * crypto/CryptoKey.cpp:
        * crypto/CryptoKey.h:
        * crypto/CryptoKey.idl:
        * crypto/CryptoKeyFormat.h:
        * crypto/CryptoKeyPair.h:
        * crypto/CryptoKeyPair.idl:
        * crypto/CryptoKeyType.h:
        * crypto/CryptoKeyUsage.h:
        * crypto/CryptoKeyUsage.idl:
        * crypto/JsonWebKey.h:
        * crypto/JsonWebKey.idl:
        * crypto/RsaOtherPrimesInfo.h:
        * crypto/RsaOtherPrimesInfo.idl:
        * crypto/SerializedCryptoKeyWrap.h:
        * crypto/SubtleCrypto.cpp:
        * crypto/SubtleCrypto.h:
        * crypto/SubtleCrypto.idl:
        * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
        * crypto/algorithms/CryptoAlgorithmAES_CBC.h:
        * crypto/algorithms/CryptoAlgorithmAES_CFB.cpp:
        * crypto/algorithms/CryptoAlgorithmAES_CFB.h:
        * crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:
        * crypto/algorithms/CryptoAlgorithmAES_CTR.h:
        * crypto/algorithms/CryptoAlgorithmAES_GCM.cpp:
        * crypto/algorithms/CryptoAlgorithmAES_GCM.h:
        * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
        * crypto/algorithms/CryptoAlgorithmAES_KW.h:
        * crypto/algorithms/CryptoAlgorithmECDH.cpp:
        * crypto/algorithms/CryptoAlgorithmECDH.h:
        * crypto/algorithms/CryptoAlgorithmECDSA.cpp:
        * crypto/algorithms/CryptoAlgorithmECDSA.h:
        * crypto/algorithms/CryptoAlgorithmHKDF.cpp:
        * crypto/algorithms/CryptoAlgorithmHKDF.h:
        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
        * crypto/algorithms/CryptoAlgorithmHMAC.h:
        * crypto/algorithms/CryptoAlgorithmPBKDF2.cpp:
        * crypto/algorithms/CryptoAlgorithmPBKDF2.h:
        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
        * crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp:
        * crypto/algorithms/CryptoAlgorithmRSA_PSS.h:
        * crypto/algorithms/CryptoAlgorithmSHA1.cpp:
        * crypto/algorithms/CryptoAlgorithmSHA1.h:
        * crypto/algorithms/CryptoAlgorithmSHA224.cpp:
        * crypto/algorithms/CryptoAlgorithmSHA224.h:
        * crypto/algorithms/CryptoAlgorithmSHA256.cpp:
        * crypto/algorithms/CryptoAlgorithmSHA256.h:
        * crypto/algorithms/CryptoAlgorithmSHA384.cpp:
        * crypto/algorithms/CryptoAlgorithmSHA384.h:
        * crypto/algorithms/CryptoAlgorithmSHA512.cpp:
        * crypto/algorithms/CryptoAlgorithmSHA512.h:
        * crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmAES_KWGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:
        * crypto/gcrypt/CryptoAlgorithmRegistryGCrypt.cpp:
        * crypto/gcrypt/CryptoKeyECGCrypt.cpp:
        * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
        * crypto/gcrypt/SerializedCryptoKeyWrapGCrypt.cpp:
        * crypto/keys/CryptoAesKeyAlgorithm.idl:
        * crypto/keys/CryptoEcKeyAlgorithm.idl:
        * crypto/keys/CryptoHmacKeyAlgorithm.idl:
        * crypto/keys/CryptoKeyAES.cpp:
        * crypto/keys/CryptoKeyAES.h:
        * crypto/keys/CryptoKeyAlgorithm.idl:
        * crypto/keys/CryptoKeyEC.cpp:
        * crypto/keys/CryptoKeyEC.h:
        * crypto/keys/CryptoKeyHMAC.cpp:
        * crypto/keys/CryptoKeyHMAC.h:
        * crypto/keys/CryptoKeyRSA.cpp:
        * crypto/keys/CryptoKeyRSA.h:
        * crypto/keys/CryptoKeyRSAComponents.cpp:
        * crypto/keys/CryptoKeyRSAComponents.h:
        * crypto/keys/CryptoKeyRaw.cpp:
        * crypto/keys/CryptoKeyRaw.h:
        * crypto/keys/CryptoRsaHashedKeyAlgorithm.idl:
        * crypto/keys/CryptoRsaKeyAlgorithm.idl:
        * crypto/mac/CommonCryptoDERUtilities.cpp:
        * crypto/mac/CommonCryptoDERUtilities.h:
        * crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:
        * crypto/mac/CryptoAlgorithmAES_CFBMac.cpp:
        * crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:
        * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
        * crypto/mac/CryptoAlgorithmAES_KWMac.cpp:
        * crypto/mac/CryptoAlgorithmECDHMac.cpp:
        * crypto/mac/CryptoAlgorithmECDSAMac.cpp:
        * crypto/mac/CryptoAlgorithmHKDFMac.cpp:
        * crypto/mac/CryptoAlgorithmHMACMac.cpp:
        * crypto/mac/CryptoAlgorithmPBKDF2Mac.cpp:
        * crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:
        * crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:
        * crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:
        * crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:
        * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
        * crypto/mac/CryptoDigestAlgorithm.h:
        * crypto/mac/CryptoKeyECMac.cpp:
        * crypto/mac/CryptoKeyMac.cpp:
        * crypto/mac/CryptoKeyRSAMac.cpp:
        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
        * crypto/parameters/AesCbcCfbParams.idl:
        * crypto/parameters/AesCtrParams.idl:
        * crypto/parameters/AesGcmParams.idl:
        * crypto/parameters/AesKeyParams.idl:
        * crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h:
        * crypto/parameters/CryptoAlgorithmAesCtrParams.h:
        * crypto/parameters/CryptoAlgorithmAesGcmParams.h:
        * crypto/parameters/CryptoAlgorithmAesKeyParams.h:
        * crypto/parameters/CryptoAlgorithmEcKeyParams.h:
        * crypto/parameters/CryptoAlgorithmEcdhKeyDeriveParams.h:
        * crypto/parameters/CryptoAlgorithmEcdsaParams.h:
        * crypto/parameters/CryptoAlgorithmHkdfParams.h:
        * crypto/parameters/CryptoAlgorithmHmacKeyParams.h:
        * crypto/parameters/CryptoAlgorithmPbkdf2Params.h:
        * crypto/parameters/CryptoAlgorithmRsaHashedImportParams.h:
        * crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h:
        * crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h:
        * crypto/parameters/CryptoAlgorithmRsaOaepParams.h:
        * crypto/parameters/CryptoAlgorithmRsaPssParams.h:
        * crypto/parameters/EcKeyParams.idl:
        * crypto/parameters/EcdhKeyDeriveParams.idl:
        * crypto/parameters/EcdsaParams.idl:
        * crypto/parameters/HkdfParams.idl:
        * crypto/parameters/HmacKeyParams.idl:
        * crypto/parameters/Pbkdf2Params.idl:
        * crypto/parameters/RsaHashedImportParams.idl:
        * crypto/parameters/RsaHashedKeyGenParams.idl:
        * crypto/parameters/RsaKeyGenParams.idl:
        * crypto/parameters/RsaOaepParams.idl:
        * crypto/parameters/RsaPssParams.idl:
        * dom/Document.cpp:
        * dom/Document.h:
        * dom/ScriptExecutionContext.h:
        * page/ChromeClient.h:
        * page/Crypto.cpp:
        (WebCore::Crypto::Crypto):
        * page/Crypto.h:
        * page/Crypto.idl:
        * platform/GCrypt.cmake:
        * platform/LocalizedStrings.cpp:
        * platform/LocalizedStrings.h:
        * workers/WorkerGlobalScope.cpp:
        * workers/WorkerGlobalScope.h:
        * worklets/WorkletGlobalScope.h:

2018-11-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        Replace "auto fill" with "AutoFill" in some localizable strings
        https://bugs.webkit.org/show_bug.cgi?id=192233
        <rdar://problem/46311614>

        Reviewed by Chris Fleizach.

        Replace "autofill" with "AutoFill".

        * en.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        (WebCore::AXAutoFillCredentialsLabel):
        (WebCore::AXAutoFillContactsLabel):
        (WebCore::AXAutoFillStrongPasswordLabel):
        (WebCore::AXAutoFillCreditCardLabel):

2018-11-29  Ryosuke Niwa  <rniwa@webkit.org>

        Add CEReactions=NotNeeded on all the relevant IDL files
        https://bugs.webkit.org/show_bug.cgi?id=188368
        <rdar://problem/42987753>

        Rubber-stamped by Antti Koivisto.

        Based on a patch written by Frederic Wang. Added CEReactions=NotNeeded to all the places
        we don't need CEReactions because we don't implement customized builtins but are marked with
        CEReactions in the HTML specification.

        * html/HTMLAnchorElement.idl:
        * html/HTMLAreaElement.idl:
        * html/HTMLBRElement.idl:
        * html/HTMLBaseElement.idl:
        * html/HTMLBodyElement.idl:
        * html/HTMLButtonElement.idl:
        * html/HTMLCanvasElement.idl:
        * html/HTMLDListElement.idl:
        * html/HTMLDataElement.idl:
        * html/HTMLDetailsElement.idl:
        * html/HTMLDirectoryElement.idl:
        * html/HTMLDivElement.idl:
        * html/HTMLEmbedElement.idl:
        * html/HTMLFieldSetElement.idl:
        * html/HTMLFontElement.idl:
        * html/HTMLFormElement.idl:
        * html/HTMLFrameElement.idl:
        * html/HTMLFrameSetElement.idl:
        * html/HTMLHRElement.idl:
        * html/HTMLHeadingElement.idl:
        * html/HTMLHtmlElement.idl:
        * html/HTMLHyperlinkElementUtils.idl:
        * html/HTMLImageElement.idl:
        * html/HTMLInputElement.idl:
        * html/HTMLLIElement.idl:
        * html/HTMLLabelElement.idl:
        * html/HTMLLegendElement.idl:
        * html/HTMLLinkElement.idl:
        * html/HTMLMapElement.idl:
        * html/HTMLMarqueeElement.idl:
        * html/HTMLMediaElement.idl:
        * html/HTMLMenuElement.idl:
        * html/HTMLMetaElement.idl:
        * html/HTMLMeterElement.idl:
        * html/HTMLModElement.idl:
        * html/HTMLOListElement.idl:
        * html/HTMLObjectElement.idl:
        * html/HTMLOptGroupElement.idl:
        * html/HTMLOptionElement.idl:
        * html/HTMLOutputElement.idl:
        * html/HTMLParagraphElement.idl:
        * html/HTMLParamElement.idl:
        * html/HTMLPreElement.idl:
        * html/HTMLProgressElement.idl:
        * html/HTMLQuoteElement.idl:
        * html/HTMLScriptElement.idl:
        * html/HTMLSlotElement.idl:
        * html/HTMLSourceElement.idl:
        * html/HTMLStyleElement.idl:
        * html/HTMLTableCaptionElement.idl:
        * html/HTMLTableCellElement.idl:
        * html/HTMLTableColElement.idl:
        * html/HTMLTableElement.idl:
        * html/HTMLTableRowElement.idl:
        * html/HTMLTableSectionElement.idl:
        * html/HTMLTextAreaElement.idl:
        * html/HTMLTimeElement.idl:
        * html/HTMLTrackElement.idl:
        * html/HTMLUListElement.idl:
        * html/HTMLVideoElement.idl:

2018-11-30  Alexey Proskuryakov  <ap@apple.com>

        Move USE_CFNETWORK_IGNORE_HSTS to its proper place
        https://bugs.webkit.org/show_bug.cgi?id=192173

        Reviewed by Tim Horton.

        * platform/network/mac/WebCoreURLResponse.mm:
        (WebCore::schemeWasUpgradedDueToDynamicHSTS):

2018-11-30  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for ProtectionSpace.
        https://bugs.webkit.org/show_bug.cgi?id=191648

        Reviewed by Alex Christensen.

        Create a platform dependent header and implementation files for ProtectionSpace.

        No new tests because there's no behavior change.

        * platform/Curl.cmake:
        * platform/network/ProtectionSpace.h:
        * platform/network/curl/ProtectionSpaceCurl.cpp: Added.
        (WebCore::ProtectionSpace::certificateInfo const):
        * platform/network/curl/ProtectionSpaceCurl.h: Added.
        (WebCore::ProtectionSpace::ProtectionSpace):
        (WebCore::ProtectionSpace::encodingRequiresPlatformData const):
        (WebCore::ProtectionSpace::platformCompare):

2018-11-30  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Flesh out WebGPURenderPassDescriptor to match the WebGPU IDL
        https://bugs.webkit.org/show_bug.cgi?id=192213

        Reviewed by Dean Jackson.

        WebGPU prototype now uses WebGPURenderPassColorAttachmentDescriptor in WebGPURenderPassDescriptor to match the WebGPU Sketch.
        WebGPU developer can now also set the clearColor in WebGPURenderPassDescriptor.

        No new tests. Older WebGPURenderPass* tests updated. 

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/WebGPUColor.h: Added. Typedef'd to GPUColor.h.
        * Modules/webgpu/WebGPUColor.idl: Added.
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::beginRenderPass): Updated to error check and support the new structure of WebGPURenderPassDescriptor.
        * Modules/webgpu/WebGPURenderPassColorAttachmentDescriptor.h: Added.
        * Modules/webgpu/WebGPURenderPassColorAttachmentDescriptor.idl: Added.
        * Modules/webgpu/WebGPURenderPassDescriptor.h: 
        * Modules/webgpu/WebGPURenderPassDescriptor.idl: Updated to match the sketch IDL.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUColor.h: Added.
        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h: Added. Backing struct for WebGPU__.
        * platform/graphics/gpu/GPURenderPassDescriptor.h: Updated to match new WebGPURenderPassDescriptor.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::create): Now also uses clearColor set by developer.

2018-11-30  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for derived sources.
        * Modules/applepay/PaymentCoordinatorClient.h: Added an extension point for
        PaymentCoordinatorClient.
        * SourcesCocoa.txt: Added WebCoreAdditions.mm as a non-unified source.
        * WebCore.xcodeproj/project.pbxproj: Added WebCoreAdditions.mm.
        * bindings/js/WebCoreBuiltinNames.h: Added an extension point for built-in names.
        * page/SettingsBase.h: Added an extension point for settings.
        * platform/cocoa/WebCoreAdditions.mm: Added.

2018-11-30  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME] CDMInstance should be shipped as a GstContext to the decryptors
        https://bugs.webkit.org/show_bug.cgi?id=192075

        Reviewed by Philippe Normand.

        So far, we were shipping the CDMInstance in an event to the
        decryptors and they were requesting it with bus messages when it
        was not found. Now we ship it with a GstContext that is set to the
        pipeline and read from the decryptors, which is now always
        available.

        As a consequence of changing this flow, the attemptToDecrypt one
        was affected as well because it was tied to CDMInstance
        shipment. A workaround was added: when the decryptors send the
        waitingForKey, an attemptToDecrypt will be performed. A FIXME was
        added for this. A subconsequence is that
        attemptToDecryptWithInstance is reworked to rely always in
        attemptToDecryptWithLocal instance, the former becomes final and
        the latter virtual.

        This is a rework, no new tests needed.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceAttached):
        (WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceDetached):
        (WebCore::MediaPlayerPrivateGStreamerBase::attemptToDecryptWithLocalInstance):
        (WebCore::MediaPlayerPrivateGStreamerBase::dispatchCDMInstance): Deleted.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkit_media_common_encryption_decrypt_class_init):
        (webkitMediaCommonEncryptionDecryptTransformInPlace):
        (webkitMediaCommonEncryptionDecryptIsCDMInstanceAvailable):
        (webkitMediaCommonEncryptionDecryptSinkEventHandler):
        (webKitMediaCommonEncryptionDecryptorSetContext):
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithLocalInstance):
        (WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithInstance): Deleted.
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:

2018-11-30  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Compute min/maxHeight margins only when they are needed.
        https://bugs.webkit.org/show_bug.cgi?id=192223

        Reviewed by Antti Koivisto.

        Test: fast/block/block-only/collapsed-margin-with-min-height.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

2018-11-30  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Geometry::inFlowNonReplacedHeightAndMargin should check for empty inline formatting context.
        https://bugs.webkit.org/show_bug.cgi?id=192215

        Reviewed by Antti Koivisto.

        Check if the inline formatting context actually has any lines.

        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

2018-11-30  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][MarginCollapsing] Do not use computed display box values for border and padding
        https://bugs.webkit.org/show_bug.cgi?id=192214

        Reviewed by Antti Koivisto.

        Border and padding values are not necessarily computed yet when we try to estimate the margin top value. Estimating margin top is required
        to be able to place floats (vertically) sooner than we would compute the final vertical position for a regular block box.

        <body><div style="float: left"></div><div><div style="margin: 10px;"></div></div>

        In the above example, to estimate a final vertical position of the floating box, we need to know whether the nested div's margin is collapsed
        all the way up to the body. However in order to find it out we need to check for borders and paddings (they stop margin collapsing).
        At the time when the floating box is being laied out, those <div> block boxes are still far down in the layout queue.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::hasBorder):
        (WebCore::Layout::hasPadding):
        (WebCore::Layout::hasBorderBefore):
        (WebCore::Layout::hasBorderAfter):
        (WebCore::Layout::hasPaddingBefore):
        (WebCore::Layout::hasPaddingAfter):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParent):
        (WebCore::Layout::isMarginBottomCollapsedThrough):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBottom):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBottomFromLastChild):

2018-11-29  Frederic Wang  <fwang@igalia.com>

        Separate paint and scroll offsets for RenderLayerBacking::m_scrollingContentsLayer
        https://bugs.webkit.org/show_bug.cgi?id=183040

        Currently, scroll offset of RenderLayerBacking::m_scrollingContentsLayer is stored in the
        GraphicsLayer::m_offsetFromRenderer member used for paint offset. This patch separates these
        two concept by introducing a new GraphicsLayer::m_scrollOffset for the scroll offset. This
        makes the API a little bit cleaner, the code easier to understand and might avoid unnecessary
        repaints in composited scroll.

        Reviewed by Simon Fraser.

        No new tests, already covered by existing tests.

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::setScrollOffset): Setter function to update the scroll offset
        of the content layer inside its scrolling parent layer. Ask a repaint if it has changed and
        is requested by the caller.
        (WebCore::GraphicsLayer::paintGraphicsLayerContents): Take into account the scroll offset
        when painting.
        (WebCore::GraphicsLayer::dumpProperties const): Dump the scroll offset property.
        * platform/graphics/GraphicsLayer.h: Include ScrollableArea for the ScrollOffset typedef.
        Add member for the scroll offset of the content layer inside its scrolling parent layer.
        (WebCore::GraphicsLayer::scrollOffset const): Getter function.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateGeometry): Do not include the scroll offset in the
        paint offset of m_scrollingContentsLayer since it is now taken into account in
        paintGraphicsLayerContents. Update the scroll offset of m_scrollingContentsLayer separately.
        Leave the paint offset of m_foregroundLayer unchanged.
        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect): Take into account the scroll
        offset of m_scrollingContentsLayer when calculating the dirty rect.

2018-11-29  Simon Fraser  <simon.fraser@apple.com>

        Overflow scrolling layers need to be self-painting
        https://bugs.webkit.org/show_bug.cgi?id=192201

        Reviewed by Dean Jackson.
        
        Overflow scrolling layers paint their contents, so need to be self-painting in the RenderLayer sense.
        
        Without this change, the overflow in the testcase doesn't get any compositing layers.

        Test: compositing/scrolling/overflow-scrolling-layers-are-self-painting.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):

2018-11-29  Christopher Reid  <chris.reid@sony.com>

        [Win] listDirectory in FileSystemWin.cpp should not skip all directories
        https://bugs.webkit.org/show_bug.cgi?id=192042

        Reviewed by Fujii Hironori.

        Covered by existing tests.

        listDirectory is not returning any child directories which is causing
        ASSERT(diskUsage >= databaseFileSize) in SQLiteIDBBackingStore.cpp to fail.

        Change listDirectory in FileSystemWin to match FileSystemPOSIX's behavior.
        listDirectory should only skip the current and previous directories.

        * platform/win/FileSystemWin.cpp:

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238713.

        Breaks internal builds.

        Reverted changeset:

        "[Cocoa] Add some WKA extension points"
        https://bugs.webkit.org/show_bug.cgi?id=192131
        https://trac.webkit.org/changeset/238713

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238680.

        Caused existing webrtc layout tests to fail an assertion.

        Reverted changeset:

        "A sender created through addTransceiver and populated using
        addTrack should have its source set"
        https://bugs.webkit.org/show_bug.cgi?id=192136
        https://trac.webkit.org/changeset/238680

2018-11-29  Justin Fan  <justin_fan@apple.com>

        Remove dangling WebGPU file references from WebCore project
        https://bugs.webkit.org/show_bug.cgi?id=192185

        Unreviewed project file gardening.

        No new tests.

        * WebCore.xcodeproj/project.pbxproj:

2018-11-29  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix.

        r238637 introduced some DerivedSources.make changes that could produce
        some invalid .idl files, leading to IDLParser.pm error messages.

        * DerivedSources.make:

2018-11-29  Simon Fraser  <simon.fraser@apple.com>

        Add an internal feature flag to enable async overflow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=192184

        Reviewed by Tim Horton.

        Add a new internal feature flag that will enable async overflow-scrolling for
        most overflow:scroll elements. Defaults to off.
        
        Make the "UseAcceleratedTouchScrolling" terminology in RenderLayer etc be more generic,
        and refer to async overflow scrolling.

        * page/Settings.yaml:
        * rendering/RenderLayer.cpp:
        (WebCore::canCreateStackingContext): Remove a line which is not necessary, since -webkit-overflow-scrolling: touch
        already triggers non-auto z-index via code in StyleResolver::adjustRenderStyle().
        (WebCore::RenderLayer::canUseCompositedScrolling const):
        (WebCore::RenderLayer::hasCompositedScrollableOverflow const):
        (WebCore::RenderLayer::handleTouchEvent):
        (WebCore::RenderLayer::usesAsyncScrolling const):
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
        (WebCore::RenderLayer::showsOverflowControls const):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::RenderLayer::canUseAcceleratedTouchScrolling const): Deleted.
        (WebCore::RenderLayer::hasTouchScrollableOverflow const): Deleted.
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
        (WebCore::RenderLayerCompositor::isAsyncScrollableStickyLayer const):
        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):

2018-11-29  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for derived sources.
        * Modules/applepay/PaymentCoordinatorClient.h: Added an extension point for
        PaymentCoordinatorClient.
        * SourcesCocoa.txt: Added WebCoreAdditions.mm as a non-unified source.
        * WebCore.xcodeproj/project.pbxproj: Added WebCoreAdditions.mm.
        * bindings/js/WebCoreBuiltinNames.h: Added an extension point for built-in names.
        * page/SettingsBase.h: Added an extension point for settings.
        * platform/cocoa/WebCoreAdditions.mm: Added.

2018-11-29  Tim Horton  <timothy_horton@apple.com>

        Make drawing tools available when an editable image is focused
        https://bugs.webkit.org/show_bug.cgi?id=192172
        <rdar://problem/30337960>

        Reviewed by Dean Jackson.

        * editing/Editor.cpp:
        (WebCore::Editor::insertEditableImage):
        * editing/Editor.h:
        * editing/InsertEditableImageCommand.cpp:
        (WebCore::InsertEditableImageCommand::insertEditableImage):
        (WebCore::InsertEditableImageCommand::doApply):
        * editing/InsertEditableImageCommand.h:
        Add InsertEditableImageCommand::insertEditableImage, which returns the
        inserted image element.

        * html/HTMLImageElement.h:
        Make HTMLImageElement focusable if it is editable.

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][Quirk] Body and html height stretching.
        https://bugs.webkit.org/show_bug.cgi?id=192154

        Reviewed by Antti Koivisto.

        This patch takes the document box's margin/border/padding into account when stretching html/body to the height of the initial containing block.

        Tests: fast/block/block-only/body-height-with-auto-html-height-quirk.html
               fast/block/block-only/body-height-with-auto-html-height-quirk2.html
               fast/block/block-only/body-height-with-non-auto-html-height-quirk.html
               fast/block/block-only/body-height-with-non-auto-html-height-quirk2.html

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginBottom):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedHeight):

2018-11-29  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Replace forward declare of WebGPUCommandBuffer with include
        https://bugs.webkit.org/show_bug.cgi?id=192179

        Unreviewed build fix.

        No new tests. No behavior change.

        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h:

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [ContentObservation] Make WKSetObservedContentChange logic more explicit.
        https://bugs.webkit.org/show_bug.cgi?id=192183

        Reviewed by Simon Fraser.

        * platform/ios/wak/WKContentObservation.cpp:
        (WKSetObservedContentChange):
        (WebThreadRemoveObservedDOMTimer):

2018-11-29  Youenn Fablet  <youenn@apple.com>

        CSS subresource loads should not be observable from resource timing if the stylesheet is opaque
        https://bugs.webkit.org/show_bug.cgi?id=192132

        Reviewed by Ryosuke Niwa.

        Introduce a new ResourceLoaderOptions to determine whether a load is made from a resource that is opaque.
        Make use of that option to disable exposing such loads to the web page through resource timing.
        The same option might later be used to bypass service workers.

        Make use of this option for CSS subresource loads.
        When the CSS stylesheet is opaque for the page, set this option.

        Test: http/tests/security/clean-origin-exposed-resource-timing.html
              http/tests/security/cross-origin-resource-timing.html

        * css/CSSCursorImageValue.cpp:
        (WebCore::CSSCursorImageValue::CSSCursorImageValue):
        (WebCore::CSSCursorImageValue::loadImage):
        * css/CSSCursorImageValue.h:
        * css/CSSFontFaceSrcValue.cpp:
        (WebCore::CSSFontFaceSrcValue::cachedFont):
        * css/CSSFontFaceSrcValue.h:
        * css/CSSImageSetValue.cpp:
        (WebCore::CSSImageSetValue::CSSImageSetValue):
        (WebCore::CSSImageSetValue::loadBestFitImage):
        * css/CSSImageSetValue.h:
        * css/CSSImageValue.cpp:
        (WebCore::CSSImageValue::CSSImageValue):
        (WebCore::CSSImageValue::loadImage):
        * css/CSSImageValue.h:
        * css/CSSStyleSheet.h:
        * css/StyleRuleImport.cpp:
        (WebCore::StyleRuleImport::setCSSStyleSheet):
        (WebCore::StyleRuleImport::requestStyleSheet):
        * css/StyleSheetContents.h:
        * css/parser/CSSParserContext.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeCursor):
        (WebCore::consumeFontFaceSrcURI):
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeImageSet):
        (WebCore::CSSPropertyParserHelpers::consumeImage):
        * html/HTMLBodyElement.cpp:
        (WebCore::HTMLBodyElement::collectStyleForPresentationAttribute):
        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::initializeStyleSheet):
        (WebCore::HTMLLinkElement::setCSSStyleSheet):
        * html/HTMLTableElement.cpp:
        (WebCore::HTMLTableElement::collectStyleForPresentationAttribute):
        * html/HTMLTablePartElement.cpp:
        (WebCore::HTMLTablePartElement::collectStyleForPresentationAttribute):
        * loader/ResourceLoaderOptions.h:
        * loader/ResourceTimingInformation.cpp:
        (WebCore::ResourceTimingInformation::shouldAddResourceTiming):
        * svg/SVGFontFaceUriElement.cpp:
        (WebCore::SVGFontFaceUriElement::srcValue const):

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Not currenlty testable

        DictionaryLookup uses Reveal now, which is slated to be cross-platform.
        That patch gates the parts of DictionaryLookup that currently do not have
        an available implementation on iOS. Once Reveal is ready, this code will be
        replaced or expanded upon, as appropriate.

        * editing/mac/DictionaryLookup.h:
        * editing/mac/DictionaryLookup.mm:
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::showPopup):
        (WebCore::DictionaryLookup::hidePopup):
        (WebCore::DictionaryLookup::animationControllerForPopup):

2018-11-29  Joseph Pecoraro  <pecoraro@apple.com>

        [Cocoa] Move ServerTimingParser.* into a better group in the Xcode project
        https://bugs.webkit.org/show_bug.cgi?id=192180

        Reviewed by Simon Fraser.

        * WebCore.xcodeproj/project.pbxproj:

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [ContentObservation] DOMTimer::install should explicitly check if timer observation is on
        https://bugs.webkit.org/show_bug.cgi?id=192181

        Reviewed by Simon Fraser.

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKIsObservingDOMTimerScheduling):
        * platform/ios/wak/WKContentObservation.h:

2018-11-29  Ryosuke Niwa  <rniwa@webkit.org>

        Executing "insertunorderedlist" while selecting a contenteditable element inside a shadow dom hangs the browser
        https://bugs.webkit.org/show_bug.cgi?id=184049
        <rdar://problem/38931033>

        Reviewed by Antti Koivisto.

        The primary hung was caused by TextIterator::advance traversing the next node in the tree order using
        NodeTraversal::next which doesn't take the composed tree into account. Fixed the bug by traversing
        the composed tree while sharing code with StylizedMarkupAccumulator.

        This revealed a second hang in InsertListCommand::doApply() caused by endingSelection() being null,
        which was caused by CompositeEditCommand::moveParagraphs failing to restore the ending selection properly
        because it was computing the text indices difference from the beginning of the document until the destination.

        Fixed this second bug by computing the indices against the beginning of the root editable element.
        Note that editability never crosses a shadow boundary.

        Test: editing/execCommand/insert-unordered-list-in-shadow-tree.html

        * dom/ComposedTreeIterator.h:
        (WebCore::nextSkippingChildrenInComposedTreeIgnoringUserAgentShadow): Extracted out of nextSkippingChildren
        in markup.cpp.
        (WebCore::nextInComposedTreeIgnoringUserAgentShadow): Added.
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraphs): Compute the index from the beginning of the root editable
        element as opposed to the beginning of the document.
        * editing/TextIterator.cpp:
        (WebCore::nextNode): Added.
        (WebCore::isDescendantOf): Added.
        (WebCore::TextIterator::advance): Use the newly added functions to traverse the composed tree when the options
        contains TextIteratorTraversesFlatTree.
        * editing/markup.cpp:

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [ContentObservation] Decouple content change and DOM timer scheduling observation
        https://bugs.webkit.org/show_bug.cgi?id=192170

        Reviewed by Simon Fraser.

        This is in preparation for adding style recalc scheduling observation (the main goal here is to simplify the indeterminate change logic).

        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::fired):
        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::mouseMoved):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKStartObservingContentChanges):
        (WKStopObservingContentChanges):
        (WKStartObservingDOMTimerSchedules):
        (WKStopObservingDOMTimerSchedules):
        (WKSetObservedContentChange):
        (WebThreadAddObservedDOMTimer):
        (WKBeginObservingContentChanges): Deleted.
        * platform/ios/wak/WKContentObservation.h:

2018-11-29  Frederic Wang  <fwang@igalia.com>

        Make reconcileViewportConstrainedLayerPositions start from a specified scrolling node
        https://bugs.webkit.org/show_bug.cgi?id=180002

        Reviewed by Simon Fraser.

        For non-programmatic scrolling of frames, AsyncScrollingCoordinator::reconcileScrollingState
        currently always call reconcileViewportConstrainedLayerPositions for the main frame
        since async subframe scrolling is not supported yet (bug 171667 and bug 149264). This
        function in turn calls reconcileLayerPositionForViewportRect on the whole scrolling tree to
        readjust position of fixed/sticky descendants. This patch refactors a bit the code so that
        the operation is actually only applied to the descendants of the frame's scrolling node,
        which would mean a small optimization when subframe are asynchronously scrollable. The code
        is already covered by reconcile-layer-position-recursive.html.

        No new tests, behavior unchanged and already covered by existing tests.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState): Pass the frame's scrolling
        node id.
        (WebCore::AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions): Start
        reconciliation from the specified scrolling node and log its ID.
        * page/scrolling/AsyncScrollingCoordinator.h: Add ScrollingNodeID parameter.
        * page/scrolling/ScrollingCoordinator.h:
        (WebCore::ScrollingCoordinator::reconcileViewportConstrainedLayerPositions): Ditto.

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        Rename *ObservedContentModifier(s) to *ObservedDOMTimer(s)
        https://bugs.webkit.org/show_bug.cgi?id=192168

        Reviewed by Simon Fraser.

        * dom/Document.cpp:
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::clearTimeout):
        * page/Frame.cpp:
        (WebCore::Frame::willDetachPage):
        * platform/ios/wak/WKContentObservation.cpp:
        (WKBeginObservingContentChanges):
        (WKSetObservedContentChange):
        (WebThreadGetObservedDOMTimers):
        (WebThreadCountOfObservedDOMTimers):
        (WebThreadClearObservedDOMTimers):
        (WebThreadContainsObservedDOMTimer):
        (WebThreadAddObservedDOMTimer):
        (WebThreadRemoveObservedDOMTimer):
        (WebThreadCountOfObservedContentModifiers): Deleted.
        (WebThreadClearObservedContentModifiers): Deleted.
        (WebThreadContainsObservedContentModifier): Deleted.
        (WebThreadAddObservedContentModifier): Deleted.
        (WebThreadRemoveObservedContentModifier): Deleted.
        * platform/ios/wak/WKContentObservation.h:
        * platform/ios/wak/WKContentObservationInternal.h:

2018-11-29  Justin Fan  <justin_fan@apple.com>

        [WebGPU] WebGPURenderPassEncoder::setPipeline, draw, and endPass prototypes
        https://bugs.webkit.org/show_bug.cgi?id=192134

        Reviewed by Dean Jackson.

        Wrap up prototype features for WebGPURenderPassEncoder. 

        Test: webgpu/render-command-encoding.html

        * Modules/webgpu/WebGPUCommandBuffer.cpp: 
        (WebCore::WebGPUCommandBuffer::beginRenderPass):
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createRenderPipeline const):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
        (WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
        (WebCore::WebGPUProgrammablePassEncoder::endPass): Returns a reference to the WebGPUCommandBuffer that created this encoder.
        (WebCore::WebGPUProgrammablePassEncoder::setPipeline):
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h: Updated to support endPass and setPipeline.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
        * Modules/webgpu/WebGPURenderPassEncoder.cpp:
        (WebCore::WebGPURenderPassEncoder::create): Must be provided with the WebGPUCommandBuffer.
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::draw):
        * Modules/webgpu/WebGPURenderPassEncoder.h: Updated to cache a reference to the WebGPUCommandBuffer, and for draw.
        * Modules/webgpu/WebGPURenderPassEncoder.idl:
        * Modules/webgpu/WebGPURenderPipeline.cpp:
        (WebCore::WebGPURenderPipeline::create):
        (WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
        * Modules/webgpu/WebGPURenderPipeline.h:
        (WebCore::WebGPURenderPipeline::renderPipeline):
        * Modules/webgpu/WebGPUTexture.cpp:
        * Modules/webgpu/WebGPUTexture.h: Replaced include with forward declaration.
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h: Updated to support new WebGPU_PassEncoder functionality.
        * platform/graphics/gpu/GPURenderPassEncoder.h:
        (WebCore::GPURenderPassEncoder::~GPURenderPassEncoder): Now ends encoding on the MTLCommandEncoder, if not already ended, before freeing it.
        * platform/graphics/gpu/GPURenderPipeline.h: Now remembers the GPUPrimitiveTopology that it was created with.
        (WebCore::GPURenderPipeline::primitiveTopology const): 
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
        (WebCore::GPUProgrammablePassEncoder::endPass): Calls endEncoding on the backing MTLCommandEncoder, if not already ended.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
        (WebCore::GPURenderPassEncoder::platformPassEncoder const):
        (WebCore::GPURenderPassEncoder::setPipeline): Added.
        (WebCore::primitiveTypeForGPUPrimitiveTopology): Added. Helper function to convert GPUPrimitiveTopology to MTLPrimitiveType.
        (WebCore::GPURenderPassEncoder::draw): Added. Draws using primitive topology specified during pipeline creation. 
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setFunctionsForPipelineDescriptor):
        (WebCore::GPURenderPipeline::create):
        (WebCore::GPURenderPipeline::GPURenderPipeline): Now must store the GPURenderPipelineDescriptor for later reference. 

2018-11-29  Justin Michaud  <justin_michaud@apple.com>

        CSS Painting API should pass 'this' correctly to paint callback, and repaint when properties change.
        https://bugs.webkit.org/show_bug.cgi?id=191443

        Reviewed by Dean Jackson.

        Instantiate a new instance of the paint class, and pass it as 'this' object when the paint callback is called. 
        Also, this patch makes sure that custom paint elements get repainted when properties that they care about get changed.
        Finally, we fix two reference cycles that caused WorkletGlobalScope to never be destroyed.

        Tests: fast/css-custom-paint/animate-repaint.html
               fast/css-custom-paint/animate.html

        * bindings/js/JSDOMWrapper.cpp:
        * bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:
        (WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren):
        * bindings/js/JSWorkletGlobalScopeBase.cpp:
        (WebCore::toJS):
        * bindings/js/ScriptState.cpp:
        (WebCore::execStateFromWorkletGlobalScope):
        * css/CSSPaintCallback.h:
        * css/CSSPaintCallback.idl:
        * css/CSSPaintImageValue.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::applyProperty):
        * dom/Document.cpp:
        (WebCore::Document::prepareForDestruction):
        * dom/ScriptExecutionContext.cpp:
        (WebCore::ScriptExecutionContext::vm):
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::CustomPaintImage):
        (WebCore::CustomPaintImage::doCustomPaint):
        * platform/graphics/CustomPaintImage.h:
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::addCustomPaintWatchProperty):
        (WebCore::RenderStyle::changeRequiresRepaint const):
        * rendering/style/RenderStyle.h:
        * rendering/style/StyleRareNonInheritedData.cpp:
        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
        (WebCore::StyleRareNonInheritedData::operator== const):
        * rendering/style/StyleRareNonInheritedData.h:
        * testing/Internals.cpp:
        (WebCore::Internals::isAnyWorkletGlobalScopeAlive const):
        * testing/Internals.h:
        * testing/Internals.idl:
        * worklets/PaintWorkletGlobalScope.cpp:
        (WebCore::PaintWorkletGlobalScope::devicePixelRatio const):
        (WebCore::PaintWorkletGlobalScope::PaintDefinition::PaintDefinition):
        (WebCore::PaintWorkletGlobalScope::registerPaint):
        * worklets/PaintWorkletGlobalScope.h:
        (WebCore::PaintWorkletGlobalScope::~PaintWorkletGlobalScope):
        * worklets/WorkletGlobalScope.cpp:
        (WebCore::WorkletGlobalScope::WorkletGlobalScope):
        (WebCore::WorkletGlobalScope::~WorkletGlobalScope):
        (WebCore::WorkletGlobalScope::prepareForDestruction):
        (WebCore::WorkletGlobalScope::allWorkletGlobalScopesSet):
        (WebCore::WorkletGlobalScope::isJSExecutionForbidden const):
        (WebCore::WorkletGlobalScope::logExceptionToConsole):
        (WebCore::WorkletGlobalScope::addConsoleMessage):
        (WebCore::WorkletGlobalScope::addMessage):
        * worklets/WorkletGlobalScope.h:
        (WebCore::WorkletGlobalScope::script):
        (WebCore::WorkletGlobalScope::responsibleDocument):
        (WebCore::WorkletGlobalScope::responsibleDocument const):
        (WebCore::WorkletGlobalScope::identifier const): Deleted.
        (WebCore::WorkletGlobalScope::responsableDocument): Deleted.
        (WebCore::WorkletGlobalScope::responsableDocument const): Deleted.
        * worklets/WorkletScriptController.cpp:
        (WebCore::WorkletScriptController::~WorkletScriptController):
        (WebCore::WorkletScriptController::disableEval):
        (WebCore::WorkletScriptController::disableWebAssembly):
        (WebCore::WorkletScriptController::initScript):

2018-11-29  Alexey Proskuryakov  <ap@apple.com>

        Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence
        https://bugs.webkit.org/show_bug.cgi?id=192041

        Reviewed by Tim Horton.

        * loader/ResourceLoaderOptions.h: Added a FIXME for poor naming of loader options.
        There is a lot of code that needs to be cleaned up here.

        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::applySniffingPoliciesIfNeeded):

2018-11-29  Youenn Fablet  <youenn@apple.com>

        Updating a service worker during a navigation load sometimes makes the load fail
        https://bugs.webkit.org/show_bug.cgi?id=191986
        <rdar://problem/46259790>

        Reviewed by Chris Dumez.

        Previously, we were registering a document as service worker client at creation of the document.
        According the service worker spec, this should be done when handling the fetch event of the corresponding navigation load.
        This ensures that the service worker will have a client and will not get updated in the middle of the navigation load.

        At navigation load start, we do not have a document yet since it is created when receiving the first bytes.
        Instead, we register a temporary document when starting the navigation load and unregister it when the real document is registered.

        Test: imported/w3c/web-platform-tests/service-workers/service-worker/update-on-navigation.https.html

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::commitData):
        (WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
        (WebCore::DocumentLoader::unregisterTemporaryServiceWorkerClient):
        (WebCore::DocumentLoader::loadMainResource):
        (WebCore::DocumentLoader::clearMainResource):
        * loader/DocumentLoader.h:

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238678.

        Breaks internal builds.

        Reverted changeset:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238678

2018-11-29  Youenn Fablet  <youenn@apple.com>

        A sender created through addTransceiver and populated using addTrack should have its source set
        https://bugs.webkit.org/show_bug.cgi?id=192136

        Reviewed by Eric Carlson.

        In case libwebrtc backend is already created, we need to make sure to
        set the track source to the libwebrtc sender backend that is actually
        tied to the sender.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Not currenlty testable

        DictionaryLookup uses Reveal now, which is slated to be cross-platform.
        That patch gates the parts of DictionaryLookup that currently do not have
        an available implementation on iOS. Once Reveal is ready, this code will be
        replaced or expanded upon, as appropriate.

        * editing/mac/DictionaryLookup.h:
        * editing/mac/DictionaryLookup.mm:
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::showPopup):
        (WebCore::DictionaryLookup::hidePopup):
        (WebCore::DictionaryLookup::animationControllerForPopup):

2018-11-29  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: breaks if binary data (Uint8Array) and autoIncrement key in store
        https://bugs.webkit.org/show_bug.cgi?id=185869
        <rdar://problem/40453623>

        Reviewed by Geoffrey Garen.

        lexicalGlobalObject is casted to JSDOMGlobalObject in CloneSerializer::dumpArrayBufferView, 
        so we should use JSDOMGlobalObject instead of JSGlobalObject in IDB database thread.

        Covered by modified test: storage/indexeddb/objectstore-autoincrement.html

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::databaseThreadVM):
        (WebCore::IDBServer::UniqueIDBDatabase::databaseThreadExecState):
        * bindings/js/JSDOMGlobalObject.cpp:
        (WebCore::JSDOMGlobalObject::create):
        * bindings/js/JSDOMGlobalObject.h:
        * bindings/js/JSDOMWrapper.cpp:
        (WebCore::JSDOMObject::JSDOMObject):

2018-11-29  Sihui Liu  <sihui_liu@apple.com>

        Unexpected constructor / instanceof  behavior when retrieving indexedDB data in an iframe
        https://bugs.webkit.org/show_bug.cgi?id=185906
        <rdar://problem/40583100>

        Reviewed by Geoffrey Garen.

        ScriptExecutionContext::execState() returned state of main frame, so deserialization of 
        IDBValue in iframe used constructors of main frame, which is wrong.

        Test: storage/indexeddb/instanceof-iframe.html

        * dom/ScriptExecutionContext.cpp:
        (WebCore::ScriptExecutionContext::execState):

2018-11-29  Don Olmstead  <don.olmstead@sony.com>

        Make generic ScrollAnimator
        https://bugs.webkit.org/show_bug.cgi?id=192128

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Moves ScrollAnimatorGtk into ScrollAnimatorGeneric where it can be used
        by other implementations. Fixed some compilation issues around using
        this as a default implementation.

        Removing ScrollAnimatorSmooth since it is dead code and doesn't even
        compile at this time.

        Fixing a compilation issue within LowPowerModeNotifierGLib
        implementation that appeared due to unified sources changes.

        * PlatformGTK.cmake:
        * SourcesGTK.txt:
        * platform/LowPowerModeNotifier.h:
        * platform/PlatformWheelEvent.h:
        (WebCore::PlatformWheelEvent::swipeVelocity const):
        * platform/ScrollAnimatorSmooth.cpp: Removed.
        * platform/ScrollAnimatorSmooth.h: Removed.
        * platform/generic/ScrollAnimatorGeneric.cpp: Renamed from Source/WebCore/platform/gtk/ScrollAnimatorGtk.cpp.
        (WebCore::ScrollAnimator::create):
        (WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
        (WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation):
        (WebCore::ScrollAnimatorGeneric::scroll):
        (WebCore::ScrollAnimatorGeneric::scrollToOffsetWithoutAnimation):
        (WebCore::ScrollAnimatorGeneric::computeVelocity):
        (WebCore::ScrollAnimatorGeneric::handleWheelEvent):
        (WebCore::ScrollAnimatorGeneric::willEndLiveResize):
        (WebCore::ScrollAnimatorGeneric::updatePosition):
        (WebCore::ScrollAnimatorGeneric::didAddVerticalScrollbar):
        (WebCore::ScrollAnimatorGeneric::didAddHorizontalScrollbar):
        (WebCore::ScrollAnimatorGeneric::willRemoveVerticalScrollbar):
        (WebCore::ScrollAnimatorGeneric::willRemoveHorizontalScrollbar):
        (WebCore::ScrollAnimatorGeneric::updateOverlayScrollbarsOpacity):
        (WebCore::ScrollAnimatorGeneric::overlayScrollbarAnimationTimerFired):
        (WebCore::ScrollAnimatorGeneric::showOverlayScrollbars):
        (WebCore::ScrollAnimatorGeneric::hideOverlayScrollbars):
        (WebCore::ScrollAnimatorGeneric::mouseEnteredContentArea):
        (WebCore::ScrollAnimatorGeneric::mouseExitedContentArea):
        (WebCore::ScrollAnimatorGeneric::mouseMovedInContentArea):
        (WebCore::ScrollAnimatorGeneric::contentAreaDidShow):
        (WebCore::ScrollAnimatorGeneric::contentAreaDidHide):
        (WebCore::ScrollAnimatorGeneric::notifyContentAreaScrolled):
        (WebCore::ScrollAnimatorGeneric::lockOverlayScrollbarStateToHidden):
        * platform/generic/ScrollAnimatorGeneric.h: Renamed from Source/WebCore/platform/gtk/ScrollAnimatorGtk.h.
        * platform/glib/LowPowerModeNotifierGLib.cpp:
        * platform/gtk/PlatformWheelEventGtk.cpp:
        (WebCore::PlatformWheelEvent::swipeVelocity const): Deleted.

2018-11-28  Dean Jackson  <dino@apple.com>

        [ES Modules] Allow .mjs content when loaded from file://
        https://bugs.webkit.org/show_bug.cgi?id=192100
        <rdar://problem/46320065>

        Reviewed by Sam Weinig.

        Node JS requires ES Module files to be identified by the file
        extension of ".mjs" (no relation to Maciej Stachowiak). This new
        extension causes issues because it isn't recognised as a JavaScript
        file. When using the script tag, the author is able to force the type
        of the referenced file using an attribute, but this isn't possible
        for the import() function or import statement.

        Add a new entry into our table that maps file extensions to MIME types
        so that when a .mjs file is loaded from a file:// reference it is
        identified as JavaScript.

        Test: js/dom/modules/import-mjs-module.html

        * platform/network/mac/WebCoreURLResponse.mm: Add .mjs to the existing dictionary.
        (WebCore::createExtensionToMIMETypeMap):
        * platform/network/ios/WebCoreURLResponseIOS.mm: Add code just for .mjs.
        (WebCore::createExtensionToMIMETypeMap):

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC][Quirk] Width does not need stretching quirk.
        https://bugs.webkit.org/show_bug.cgi?id=192135

        Reviewed by Antti Koivisto.

        In BFC the block box's width (auto) always streches to the content width of the containing block.

        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        * layout/blockformatting/BlockFormattingContextQuirks.cpp:
        (WebCore::Layout::BlockFormattingContext::Quirks::needsStretching):
        (WebCore::Layout::BlockFormattingContext::Quirks::isStretchedToInitialContainingBlock): Deleted.
        (WebCore::Layout::BlockFormattingContext::Quirks::stretchedWidth): Deleted.

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][Quirk] Move quirk functions to dedicated classes.
        https://bugs.webkit.org/show_bug.cgi?id=192133

        Reviewed by Antti Koivisto.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::computedHeightValue):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::initialContainingBlock): Deleted.
        (WebCore::Layout::isStretchedToInitialContainingBlock): Deleted.
        (WebCore::Layout::stretchHeightToInitialContainingBlockQuirk): Deleted.
        (WebCore::Layout::stretchWidthToInitialContainingBlock): Deleted.
        * layout/blockformatting/BlockFormattingState.cpp:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
        (WebCore::Layout::isQuirkContainer): Deleted.
        (WebCore::Layout::hasMarginTopQuirkValue): Deleted.
        (WebCore::Layout::shouldIgnoreMarginTopInQuirkContext): Deleted.
        (WebCore::Layout::isMarginTopCollapsedWithParent): Deleted.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        * layout/inlineformatting/text/TextUtil.h:

2018-11-29  Rob Buis  <rbuis@igalia.com>

        Remove some superfluous code in ContentSecurityPolicy::upgradeInsecureRequestIfNeeded
        https://bugs.webkit.org/show_bug.cgi?id=192076

        Reviewed by Frédéric Wang.

        Since we do an early return if the protocol is not http or ws, the if check
        for ws protocol and else statement are not needed, so use an ASSERT instead.

        * page/csp/ContentSecurityPolicy.cpp:
        (WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded const):

2018-11-29  Frederic Wang  <fwang@igalia.com>

        Add ParentRelativeScrollableRect to ScrollingCoordinator::ScrollingGeometry
        https://bugs.webkit.org/show_bug.cgi?id=172914

        Reviewed by Simon Fraser.

        This patch adds a ParentRelativeScrollableRect ScrollingCoordinator::ScrollingGeometry and
        the corresponding set/get/dump APIs. Currently, the setter is never used so the behavior is
        unchanged. In the future, this rect will be used for hit testing of subframes during
        asynchronous macOS scrolling (but 172917).

        No new tests, behavior unchanged.

        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::updateFrameScrollingNode):
        (WebCore::AsyncScrollingCoordinator::updateOverflowScrollingNode):
        * page/scrolling/ScrollingCoordinator.h:
        * page/scrolling/ScrollingStateScrollingNode.cpp:
        (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
        (WebCore::ScrollingStateScrollingNode::setParentRelativeScrollableRect):
        (WebCore::ScrollingStateScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingStateScrollingNode.h:
        (WebCore::ScrollingStateScrollingNode::parentRelativeScrollableRect const):
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
        (WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
        (WebCore::ScrollingTreeScrollingNode::dumpProperties const):
        * page/scrolling/ScrollingTreeScrollingNode.h:
        (WebCore::ScrollingTreeScrollingNode::parentRelativeScrollableRect const):

2018-11-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOSMac] Dropping text selections from web content into editable elements crashes the web process
        https://bugs.webkit.org/show_bug.cgi?id=192113
        <rdar://problem/46323701>

        Reviewed by Ryosuke Niwa.

        In iOSMac, registering invalid UTIs on NSItemProvider when starting a drag or handling a drop does not work.
        Since iOS writes and reads only "Apple Web Archive pasteboard type" (a.k.a. `WebArchivePboardType`) during drag
        and drop as well as copy and paste, we fail to read or write any web archive data, and subsequently fall back to
        reading RTF or flat RTFD, both of which are not supported in iOSMac, since UIFoundation links against the
        system's macOS WebKit stack.

        To fix this, we add support for reading and writing com.apple.webarchive (`kUTTypeWebArchive`) on iOS, so that
        WebKit-based iOSMac applications can understand web archive data from the host running macOS, and the host can
        also understand web archive data written by the iOSMac app. Additionally, don't allow reading RTF and flat RTFD
        as web content in iOSMac. (Note that writing RTF and flat RTFD is still safe, since it does not depend on
        UIFoundation.framework but rather `WebCore::HTMLConverter`).

        Test: DragAndDropTests.ModernWebArchiveType

        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::createFragment):

        Additionally make sure that we never call into UIFoundation's NSAttributedString to markup conversion codepath
        by making `createFragment` an empty stub on iOSMac.

        * platform/ios/PasteboardIOS.mm:
        (WebCore::supportedImageTypes):
        (WebCore::isTypeAllowedByReadingPolicy):
        (WebCore::Pasteboard::readPasteboardWebContentDataForType):
        (WebCore::Pasteboard::supportedWebContentPasteboardTypes):
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::write):

2018-11-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r238653 and r238656.
        https://bugs.webkit.org/show_bug.cgi?id=192130

        Breaks iOS build (Requested by smfr on #webkit).

        Reverted changesets:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238653

        "Attempt to fix the iOS build by only including RevealSPI.h
        when it's needed."
        https://trac.webkit.org/changeset/238656

2018-11-28  Simon Fraser  <simon.fraser@apple.com>

        Attempt to fix the iOS build by only including RevealSPI.h when it's needed.

        * editing/cocoa/DictionaryLookup.mm:

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Modernize BlobRegistry::writeBlobsToTemporaryFiles
        https://bugs.webkit.org/show_bug.cgi?id=192117

        Reviewed by Dean Jackson.

        No change in behavior.  Just use CompletionHandlers and the new sendWithAsyncReply instead of two way messaging
        and manual completion handler management.

        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
        * platform/network/BlobRegistry.h:
        * platform/network/BlobRegistryImpl.cpp:
        (WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles):
        * platform/network/BlobRegistryImpl.h:

2018-11-15  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Not currenlty testable

        DictionaryLookup uses Reveal now, which is slated to be cross-platform.
        That patch gates the parts of DictionaryLookup that currently do not have
        an available implementation on iOS. Once Reveal is ready, this code will be
        replaced or expanded upon, as appropriate.

        * editing/mac/DictionaryLookup.h:
        * editing/mac/DictionaryLookup.mm:
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::showPopup):
        (WebCore::DictionaryLookup::hidePopup):
        (WebCore::DictionaryLookup::animationControllerForPopup):

2018-11-28  Christopher Reid  <chris.reid@sony.com>

        SQLiteDatabase::open is constantly printing "SQLite database failed to checkpoint: database table is locked" errors
        https://bugs.webkit.org/show_bug.cgi?id=192111

        Reviewed by Alex Christensen.

        Ensure the journal_mode=WAL statement is finalized before wal_checkpoint is executed.

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2018-11-28  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Updating href on linearGradient and radialGradient doesn't update its rendering
        https://bugs.webkit.org/show_bug.cgi?id=191934

        Reviewed by Ryosuke Niwa.

        Mark the gradient renderer for repaint when the value of the 'href'
        attribute changes.

        Tests: fast/shadow-dom/svg-linear-gradient-dynamic-update-href-in-shadow-tree.html
               fast/shadow-dom/svg-radial-gradient-dynamic-update-href-in-shadow-tree.html
               svg/dynamic-updates/SVGLinearGradientElement-svgdom-href-prop.html
               svg/dynamic-updates/SVGRadialGradientElement-svgdom-href-prop.html

        * svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::svgAttributeChanged):


2018-11-28  Youenn Fablet  <youenn@apple.com>

        imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-transceivers.https.html is flaky on iOS simulator
        https://bugs.webkit.org/show_bug.cgi?id=192037

        Reviewed by Eric Carlson.

        The stats report JS map should be created when resolving the stats promise with WebCore RTCStatsReport.
        But resolving the promise might fail in case of a page being suspended.
        In that case, no JSRTCStatsReport is created and there is no backing map.
        Update the code to reflect that.
        Covered by existing test.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::getStats):
        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
        (WebCore::LibWebRTCStatsCollector::~LibWebRTCStatsCollector):
        (WebCore::LibWebRTCStatsCollector::OnStatsDelivered):
        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:

2018-11-28  Keith Rollin  <krollin@apple.com>

        Update generate-{derived,unified}-sources scripts to support generating .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192031
        <rdar://problem/46286816>

        Reviewed by Alex Christensen.

        The Generate Derived Sources and Generate Unified Sources build phases
        in Xcode need to have their inputs and outputs specified. This
        specification will come in the form of .xcfilelist files that will be
        attached to these build phases. There is one .xcfilelist file that
        lists the input file and one that lists the output files. As part of
        this work, the various generate-{derived,unified}-sources scripts that
        are executed in these Generate build phases are modified to help in
        the creation of these .xcfilelist files. In particular, they can now
        be invoked with command-line parameters. These parameters are then
        used to alter the normal execution of these scripts, causing them to
        produce the .xcfilelist files as opposed to actually generating the
        files that are listed in those files.

        No new tests -- no changed functionality.

        * Scripts/generate-derived-sources.sh:
        * Scripts/generate-unified-sources.sh:

2018-11-28  Keith Rollin  <krollin@apple.com>

        Revert print_all_generated_files work in r238008; tighten up target specifications
        https://bugs.webkit.org/show_bug.cgi?id=192025
        <rdar://problem/46284301>

        Reviewed by Alex Christensen.

        In r238008, I added a facility for DerivedSources.make makefiles to
        print out the list of files that they generate. This output was used
        in the generation of .xcfilelist files used to specify the output of
        the associated Generate Derived Sources build phases in Xcode. This
        approach worked, but it meant that people would need to follow a
        specific convention to keep this mechanism working.

        Instead of continuing this approach, I'm going to implement a new
        facility based on the output of `make` when passed the -d flag (which
        prints dependency information). This new mechanism is completely
        automatic and doesn't need maintainers to follow a convention. To that
        end, remove most of the work performed in r238008 that supports the
        print_all_generated_files target.

        At the same time, it's important for the sets of targets and their
        dependencies to be complete and correct. Therefore, also include
        changes to bring those up-to-date. As part of that, you'll see
        prevalent use of a particular technique. Here's an example:

            BYTECODE_FILES = \
                Bytecodes.h \
                BytecodeIndices.h \
                BytecodeStructs.h \
                InitBytecodes.asm \
            #
            BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))

            all : $(BYTECODE_FILES)

            $(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb
                ...

        These lines indicate a set of generated files (those specified in
        BYTECODE_FILES). These files are generated by the BytecodeList.rb
        tool. But, as opposed to the normal rule where a single foo.output is
        generated by foo.input plus some additional dependencies, this rule
        produces multiple output files from a tool whose connection to the
        output files is not immediately clear. A special approach is needed
        where a single rule produces multiple output files. The normal way to
        implement this is to use an .INTERMEDIATE target. However, we used
        this approach in the past and ran into a problem with it, addressing
        it with an alternate approach in r210507. The above example shows this
        approach. The .'s in the list of target files are replaced with %'s,
        and the result is used as the left side of the dependency rule.

        No new tests -- no changed functionality.

        * DerivedSources.make:

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Remove dead code from an earlier attempt at implementing safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=192067

        Reviewed by Chris Dumez.

        * WebCore.xcodeproj/project.pbxproj:
        * loader/EmptyClients.cpp:
        (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoadRequest.h:
        (WebCore::FrameLoadRequest::setShouldSkipSafeBrowsingCheck): Deleted.
        (WebCore::FrameLoadRequest::shouldSkipSafeBrowsingCheck): Deleted.
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadArchive):
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::load):
        (WebCore::FrameLoader::loadWithNavigationAction):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::loadPostRequest):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::loadWithNavigationAction):
        * loader/FrameLoaderClient.h:
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * loader/PolicyChecker.h:
        * loader/ShouldSkipSafeBrowsingCheck.h: Removed.

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Add SessionIDs wherever BlobURLs are used in SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=192062

        Reviewed by Dean Jackson.

        Just adding infrastructure for fixing "the blob bug"

        * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
        (WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
        (WebCore::IDBDatabaseIdentifier::isolatedCopy const):
        * Modules/indexeddb/IDBDatabaseIdentifier.h:
        (WebCore::IDBDatabaseIdentifier::hash const):
        (WebCore::IDBDatabaseIdentifier::sessionID const):
        (WebCore::IDBDatabaseIdentifier::encode const):
        (WebCore::IDBDatabaseIdentifier::decode):
        * Modules/indexeddb/IDBFactory.cpp:
        (WebCore::IDBFactory::openInternal):
        (WebCore::IDBFactory::deleteDatabase):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::putOrAddOnServer):
        * Modules/indexeddb/IDBValue.cpp:
        (WebCore::IDBValue::IDBValue):
        (WebCore::IDBValue::setAsIsolatedCopy):
        * Modules/indexeddb/IDBValue.h:
        (WebCore::IDBValue::sessionID const):
        (WebCore::IDBValue::encode const):
        (WebCore::IDBValue::decode):
        * Modules/indexeddb/server/MemoryIndexCursor.cpp:
        (WebCore::IDBServer::MemoryIndexCursor::currentData):
        * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
        (WebCore::IDBServer::MemoryObjectStoreCursor::currentData):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBCursor.cpp:
        (WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
        * bindings/js/IDBBindingUtilities.cpp:
        (WebCore::deserializeIDBValueToJSValue):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::serialize):
        (WebCore::CloneSerializer::CloneSerializer):
        (WebCore::CloneSerializer::dumpIfTerminal):
        (WebCore::CloneDeserializer::deserialize):
        (WebCore::CloneDeserializer::CloneDeserializer):
        (WebCore::SerializedScriptValue::SerializedScriptValue):
        (WebCore::SerializedScriptValue::create):
        (WebCore::SerializedScriptValue::deserialize):
        (WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
        (WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDBSynchronously):
        * bindings/js/SerializedScriptValue.h:
        (WebCore::SerializedScriptValue::sessionID const):

2018-11-28  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Begin implementation of WebGPURenderPassEncoder and barebones WebGPURenderPassDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=191990

        Reviewed by Dean Jackson.

        Begin implementation of WebGPURenderPassEncoder and its parent interface, WebGPUProgrammablePassEncoder.
        Also add code to allow creation of a primitive WebGPURenderPassDescriptor with the sole purpose of providing 
        a WebGPUTextureView reference to the render pass creation function, WebGPUCommandBuffer::beginRenderPass().

        Test: webgpu/render-passes.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/WebGPUCommandBuffer.cpp:
        (WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
        (WebCore::WebGPUCommandBuffer::beginRenderPass): Added. Returns a WebGPURenderPassEncoder upon success.
        * Modules/webgpu/WebGPUCommandBuffer.h:
        * Modules/webgpu/WebGPUCommandBuffer.idl:
        * Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: Added.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.h: Added.
        * Modules/webgpu/WebGPUProgrammablePassEncoder.idl: Added. Empty (for now) interface parenting WebGPURenderPassEncoder.
        * Modules/webgpu/WebGPURenderPassDescriptor.h:
        * Modules/webgpu/WebGPURenderPassDescriptor.idl: Added. Directly handles a WebGPUTextureView attachment; all other color attachment properties set by implementation for now.
        * Modules/webgpu/WebGPURenderPassEncoder.cpp: Added.
        (WebCore::WebGPURenderPassEncoder::create):
        (WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
        (WebCore::WebGPURenderPassEncoder::passEncoder const):
        * Modules/webgpu/WebGPURenderPassEncoder.h: Added. Interface to GPURenderPassEncoder.
        * Modules/webgpu/WebGPURenderPassEncoder.idl: Added. Allows WebGPU developer to encode commands for the WebGPUCommandBuffer.
        * Modules/webgpu/WebGPUTextureView.cpp:
        (WebCore::WebGPUTextureView::WebGPUTextureView):
        * Modules/webgpu/WebGPUTextureView.h:
        (WebCore::WebGPUTextureView::texture):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * platform/graphics/gpu/GPUCommandBuffer.h:
        (WebCore::GPUCommandBuffer::platformCommandBuffer const):
        * platform/graphics/gpu/GPUProgrammablePassEncoder.h: Added. Base class for GPURenderPassEncoder.
        * platform/graphics/gpu/GPURenderPassDescriptor.h: Added.
        * platform/graphics/gpu/GPURenderPassEncoder.h: Added. Wrapper class for MTLRenderCommandEncoder.
        * platform/graphics/gpu/GPUTexture.h:
        (WebCore::GPUTexture::platformTexture const):
        * platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Added.
        * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm: Added.
        (WebCore::GPURenderPassEncoder::create): Creates the backing MTLRenderCommandEncoder; returns null if this fails. 
        (WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
        (WebCore::GPURenderPassEncoder::~GPURenderPassEncoder): End encoding before destroying the MTLCommandEncoder to prevent an exception.
        (WebCore::GPURenderPassEncoder::platformPassEncoder const):

2018-11-28  Rob Buis  <rbuis@igalia.com>

        [XHR] Document.lastModified doesn't work for non-rendered documents
        https://bugs.webkit.org/show_bug.cgi?id=179375

        Reviewed by Alexey Proskuryakov.

        Add setOverrideLastModified to override last modified date for
        standalone Documents.

        Behavior matches Firefox and Chrome.

        Test: web-platform-tests/xhr/responsexml-document-properties.htm

        * dom/Document.cpp:
        (WebCore::Document::overrideLastModified):
        (WebCore::Document::lastModified const): no need to test m_frame since that's already done in loader().
        (WebCore::Document::lastModified): Deleted.
        * dom/Document.h:
        * xml/XMLHttpRequest.cpp:

2018-11-28  Yongjun Zhang  <yongjun_zhang@apple.com>

        Allow WebKit clients to specify a minimum effective width for layout.
        https://bugs.webkit.org/show_bug.cgi?id=191499
        <rdar://problem/45362678>

        Reviewed by Wenson Hsieh.

        If we ignore the meta viewport (_shouldIgnoreMetaViewport is true), the default layout width will be device
        width. For clients that wish to lay out the content with a different width value, we would need to add a way
        to specify the effective width for layout.

        Tests: fast/viewport/ios/ipad/viewport-overriden-by-minimum-effective-width-if-ignore-meta-viewport.html
               fast/viewport/ios/ipad/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::setViewLayoutSize): Add a new argument effectiveWidth.
        (WebCore::ViewportConfiguration::nativeWebpageParameters): Make sure minimumScale for nativeWebpageParameters
            is small enough so that it won't clamp out the initial scale. If content is wider than the viewport, this
            ensures we can still zoom out the page.
        (WebCore::ViewportConfiguration::updateConfiguration): update _minimumEffectiveDeviceWidth and apply that to
            the layout size scale computation.
        (WebCore::ViewportConfiguration::effectiveLayoutSizeScaleFactor): A helper method to return the effective
            layout scale factor which is also effected by _minimumEffectiveDeviceWidth.
        (WebCore::ViewportConfiguration::updateMinimumLayoutSize): Update m_minimumLayoutSize based on effectiveLayoutSizeScaleFactor().
        (WebCore::ViewportConfiguration::description const): Also dump m_minimumEffectiveDeviceWidth.
        * page/ViewportConfiguration.h: Add a member variable m_minimumEffectiveDeviceWidth.

2018-11-28  Stephan Szabo  <stephan.szabo@sony.com>

        Make generic EventHandler methods
        https://bugs.webkit.org/show_bug.cgi?id=192032

        Reviewed by Michael Catanzaro.

        No new tests. No new behavior.

        Move mostly generic for non-Apple platform implementations
        of methods from EventHandlerGlib into EventHandler. Two
        of these also had different Windows implementations, so
        to limit behavior change from this, those are currently
        overridden for Windows as well as Mac and IOS.

        * page/EventHandler.cpp:
        (WebCore::EventHandler::passMousePressEventToSubframe):
        (WebCore::EventHandler::passMouseReleaseEventToSubframe):
        (WebCore::EventHandler::widgetDidHandleWheelEvent):
        (WebCore::EventHandler::tabsToAllFormControls const):
        (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
        (WebCore::EventHandler::passMouseDownEventToWidget):
        (WebCore::EventHandler::focusDocumentView):
        (WebCore::EventHandler::eventActivatedView const):
        (WebCore::EventHandler::passMouseMoveEventToSubframe):
        * page/win/EventHandlerWin.cpp:
        (WebCore::EventHandler::passMouseMoveEventToSubframe):
        (WebCore::EventHandler::passMousePressEventToSubframe): Deleted.
        (WebCore::EventHandler::passMouseReleaseEventToSubframe): Deleted.
        (WebCore::EventHandler::widgetDidHandleWheelEvent): Deleted.
        (WebCore::EventHandler::tabsToAllFormControls const): Deleted.
        (WebCore::EventHandler::focusDocumentView): Deleted.
        (WebCore::EventHandler::passWidgetMouseDownEventToWidget): Deleted.
        (WebCore::EventHandler::accessKeyModifiers): Deleted.
        * platform/glib/EventHandlerGLib.cpp:
        (WebCore::EventHandler::tabsToAllFormControls const): Deleted.
        (WebCore::EventHandler::focusDocumentView): Deleted.
        (WebCore::EventHandler::passWidgetMouseDownEventToWidget): Deleted.
        (WebCore::EventHandler::passMouseDownEventToWidget): Deleted.
        (WebCore::EventHandler::eventActivatedView const): Deleted.
        (WebCore::EventHandler::widgetDidHandleWheelEvent): Deleted.
        (WebCore::EventHandler::passMousePressEventToSubframe): Deleted.
        (WebCore::EventHandler::passMouseMoveEventToSubframe): Deleted.
        (WebCore::EventHandler::passMouseReleaseEventToSubframe): Deleted.
        (WebCore::EventHandler::accessKeyModifiers): Deleted.

2018-11-28  Zalan Bujtas  <zalan@apple.com>

        [LFC][Quirk] Use non-collapsed vertical margin values when the container is stretched to the size of the ICB.
        https://bugs.webkit.org/show_bug.cgi?id=192078

        Reviewed by Antti Koivisto.

        This quirk happens when the body height is 0 which means its vertical margins collapse through (top and bottom margins are adjoining).
        However now that we stretch the body they don't collapse through anymore, so we need to use the non-collapsed values instead.

        * layout/LayoutUnits.h:
        (WebCore::Layout::HeightAndMargin::usedMarginValues const):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::stretchHeightToInitialContainingBlock):

2018-11-28  Zalan Bujtas  <zalan@apple.com>

        [LFC] Add support for quirk container's collapsing top margin in quirks mode.
        https://bugs.webkit.org/show_bug.cgi?id=192070

        Reviewed by Antti Koivisto.

        In quirk mode when the top margin collapsing is computed for a quirk container (body, table cell) and the canditate margin value is
        also a quirk value, we just ignore it.

        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::isQuirkContainer):
        (WebCore::Layout::hasMarginTopQuirkValue):
        (WebCore::Layout::shouldIgnoreMarginTopInQuirkContext):
        (WebCore::Layout::isMarginTopCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
        * layout/layouttree/LayoutBox.h:
        (WebCore::Layout::Box::isTableCell const):

2018-11-28  Ali Juma  <ajuma@chromium.org>

        Intersection Observer: rootMargin: '' gives weird results
        https://bugs.webkit.org/show_bug.cgi?id=191975

        Reviewed by Simon Fraser.

        When converting the rootMargin string into a LengthBox, explicitly construct a Length
        of size 0px for each dimension, instead of using Length's default constructor. The
        default constructor creates a Length with value Auto, which causes us to incorrectly
        apply a non-zero rootMargin.

        Test: imported/w3c/web-platform-tests/intersection-observer/empty-root-margin.html

        * page/IntersectionObserver.cpp:
        (WebCore::parseRootMargin):

2018-11-28  Thibault Saunier  <tsaunier@igalia.com>

        [WebRTC][GStreamer] Make sure to have the default microphone on the top of the list
        https://bugs.webkit.org/show_bug.cgi?id=192026

        Reviewed by Philippe Normand.

        Otherwise we might end up picking a useless one in some applications
        (not sure what those application do though).

        GStreamer patch proposed as https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/34/diffs

        * platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
        (WebCore::sortDevices):
        (WebCore::GStreamerCaptureDeviceManager::addDevice):
        (WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices):
        * platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:

2018-11-28  Thibault Saunier  <tsaunier@igalia.com>

        [WebRTC][GStreamer] Tag all cameras with as 'Unknown' facing mode
        https://bugs.webkit.org/show_bug.cgi?id=192028

        Reviewed by Philippe Normand.

        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoCaptureSource::capabilities):

2018-11-28  Thibault Saunier  <tsaunier@igalia.com>

        [WebRTC][GStreamer] Use a GUniquePtr to hold the GstAudioConverter in our OutgoingAudioSource
        https://bugs.webkit.org/show_bug.cgi?id=192027

        Reviewed by Xabier Rodriguez-Calvar.

        Cleaning up a bit the code.

        It is a minor refactoring, no new test required.

        * platform/graphics/gstreamer/GUniquePtrGStreamer.h:
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::~RealtimeOutgoingAudioSourceLibWebRTC):
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h:

2018-11-28  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Do not run device monitor for device type we do not handle
        https://bugs.webkit.org/show_bug.cgi?id=191904

        This is useless work and it throws warning about use GstDeviceMonitor without filters.

        Reviewed by Philippe Normand.

        * platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
        (WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices):

2018-11-27  Rob Buis  <rbuis@igalia.com>

        Block more ports (427, 548, 6697)
        https://bugs.webkit.org/show_bug.cgi?id=186092

        Reviewed by Frédéric Wang.

        Block port 427, ports 548 and 6697 are aleady blocked and
        are tested by the updated request-bad-port.html wpt test.

        Behavior matches Firefox and Chrome.

        Test: web-platform-tests/fetch/api/request/request-bad-port.html

        * platform/URL.cpp:
        (WebCore::portAllowed):

2018-11-27  Youenn Fablet  <youenn@apple.com>

        Log WebRTC stats in inspector console only when setting is verbose
        https://bugs.webkit.org/show_bug.cgi?id=192014

        Reviewed by Eric Carlson.

        Add a WebRTCStats channel that is used by default to output WebRTC stats in console.
        When WebRTC Debug logging is enabled, log WebRTC stats in WebRTC channel,
        so that they appear as debug information in Web Inspector.

        No change of JS behavior.
        Covered by manually testing what is logged in inspector and console.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
        * platform/Logging.h:

2018-11-27  Simon Fraser  <simon.fraser@apple.com>

        Fix the mis-spelled "m_clienstWaitingForAsyncDecoding"
        https://bugs.webkit.org/show_bug.cgi?id=192060

        Reviewed by Wenson Hsieh.

        Fix the mis-spelling of "m_clienstWaitingForAsyncDecoding".

        * loader/cache/CachedImage.cpp:
        (WebCore::CachedImage::didRemoveClient):
        (WebCore::CachedImage::isClientWaitingForAsyncDecoding const):
        (WebCore::CachedImage::addClientWaitingForAsyncDecoding):
        (WebCore::CachedImage::removeAllClientsWaitingForAsyncDecoding):
        (WebCore::CachedImage::allClientsRemoved):
        (WebCore::CachedImage::clear):
        (WebCore::CachedImage::createImage):
        (WebCore::CachedImage::imageFrameAvailable):
        * loader/cache/CachedImage.h:

2018-11-27  Mark Lam  <mark.lam@apple.com>

        ENABLE_FAST_JIT_PERMISSIONS should be false for iosmac.
        https://bugs.webkit.org/show_bug.cgi?id=192055
        <rdar://problem/46288783>

        Reviewed by Saam Barati.

        No new tests needed.  Removing an invalid configuration that is not used in WebCore.

        * Configurations/FeatureDefines.xcconfig:

2018-11-27  Jiewen Tan  <jiewen_tan@apple.com>

        Remove kCCNotVerified
        https://bugs.webkit.org/show_bug.cgi?id=192034
        <rdar://problem/46235863>

        Reviewed by Alexey Proskuryakov.

        No change of behaviours.

        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:
        (WebCore::verifyRSASSA_PKCS1_v1_5):

2018-11-27  Simon Fraser  <simon.fraser@apple.com>

        Avoid triggering compositing updates when only the root layer is composited
        https://bugs.webkit.org/show_bug.cgi?id=191813

        Reviewed by Zalan Bujtas.

        If we know that the only composited layer is the root, we can avoid triggering deep
        compositing updates sometimes, for example when layout changes size or position,
        or when z-order lists change.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::updateLayerPosition):
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::updateCompositingLayersAfterScroll):
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): Consult the layer.hasCompositingDescendant()
        flag to cut off descendants traversal when possible.
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-11-27  Eric Carlson  <eric.carlson@apple.com>

        Refactor duplicate code for calling into media controls
        https://bugs.webkit.org/show_bug.cgi?id=192040
        <rdar://problem/46278931>

        Reviewed by Youenn Fablet.

        No new tests, no functional change.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::setupAndCallJS):
        (WebCore::HTMLMediaElement::updateCaptionContainer):
        (WebCore::HTMLMediaElement::configureTextTrackDisplay):
        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
        (WebCore::HTMLMediaElement::setControllerJSProperty):
        (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
        (WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
        (WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):
        * html/HTMLMediaElement.h:

2018-11-27  Simon Fraser  <simon.fraser@apple.com>

        Momentum scrolling ends at the wrong place when a scrolling overflow element has a non-zero border
        https://bugs.webkit.org/show_bug.cgi?id=191322

        Reviewed by Dean Jackson.
        
        The scrolling momentum logic in ScrollController::handleWheelEvent() which computes whether the scroll is pinned
        to the end makes use of ScrollableArea::visibleContentRect(). RenderLayer's implementation of this was incorrect when
        the layer's element had borders, causing the momentum scroll to stop early.
        
        Fix by using the correct size (visible size, not layer size).

        Test: fast/scrolling/momentum-scroll-with-borders.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::visibleContentRectInternal const):

2018-11-27  Simon Fraser  <simon.fraser@apple.com>

        Composited and tiled layers fail to update on scrolling in WebView
        https://bugs.webkit.org/show_bug.cgi?id=191821
        rdar://problem/46009272

        Reviewed by Zalan Bujtas.
        
        We relied on AppKit calling -[NSView viewWillDraw] on scrolling to trigger compositing
        layer flushes which are necessary to update backing store attachment, and tile coverage
        for tiled layers. However, we no longer get these reliably in WebView, so explicitly trigger
        flushes if necessary from FrameView::scrollOffsetChangedViaPlatformWidgetImpl().
        didChangeVisibleRect() is the same code path used by iOS UIWebView for the same purpose.

        Tests: compositing/backing/backing-store-attachment-scroll.html
               compositing/tiling/tile-coverage-on-scroll.html

        * page/FrameView.cpp:
        (WebCore::FrameView::scrollOffsetChangedViaPlatformWidgetImpl):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::updateCoverage):

2018-11-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add support for forcing color scheme appearance in DOM tree.
        https://bugs.webkit.org/show_bug.cgi?id=191820
        rdar://problem/46153172

        Reviewed by Devin Rousso.

        Test: inspector/css/force-page-appearance.html

        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::defaultAppearanceDidChangeImpl):
        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::defaultAppearanceDidChange):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::enable): Fire defaultAppearanceDidChange() on macOS Majave.
        (WebCore::InspectorPageAgent::disable): Call setForcedAppearance() with empty string.
        (WebCore::InspectorPageAgent::defaultAppearanceDidChange): Added.
        (WebCore::InspectorPageAgent::setForcedAppearance): Added.
        * inspector/agents/InspectorPageAgent.h:
        * page/Page.cpp:
        (WebCore::Page::setUseDarkAppearance): Call InspectorInstrumentation::defaultAppearanceDidChange().
        (WebCore::Page::useDarkAppearance const): Return override value if not nullopt.
        (WebCore::Page::setUseDarkAppearanceOverride): Added.
        * page/Page.h:
        (WebCore::Page::defaultUseDarkAppearance const): Added.

2018-11-27  Tim Horton  <timothy_horton@apple.com>

        Serialize and deserialize editable image strokes
        https://bugs.webkit.org/show_bug.cgi?id=192002
        <rdar://problem/30900149>

        Reviewed by Dean Jackson.

        Test: editing/images/paste-editable-image.html

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::parseAttribute):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        (WebCore::HTMLImageElement::didFinishInsertingNode):
        (WebCore::HTMLImageElement::removedFromAncestor):
        (WebCore::HTMLImageElement::hasEditableImageAttribute const):
        (WebCore::HTMLImageElement::updateEditableImage):
        Call updateEditableImage() from didFinishInsertingNode instead of insertedIntoAncestor.
        This is helpful because it means we get the final, deduplicated attachment identifier
        instead of the original one when cloning or pasting.

        This also means that isConnected() is now always accurate when updateEditableImage()
        is called, so we can remove the argument that allowed us to lie from inside insertedIntoAncestor.

        * html/HTMLImageElement.h:
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::isEditableImage const):
        Make use of hasEditableImage instead of separately checking for the attribute.

2018-11-16  Jiewen Tan  <jiewen_tan@apple.com>

        Disallow loading webarchives as iframes
        https://bugs.webkit.org/show_bug.cgi?id=191728
        <rdar://problem/45524528>

        Reviewed by Youenn Fablet.

        Disallow loading webarchives as iframes. We don't allow loading remote webarchives.
        Now, this policy is hardened to disallow loading webarchives as iframes for local
        documents as well.

        To allow old tests still be able to run, a flag is added to always allow loading local
        webarchives in document. The flag can be set via window.internals.

        Tests: webarchive/loading/test-loading-archive-subresource.html
               webarchive/loading/test-loading-top-archive.html

        * dom/Document.h:
        (WebCore::Document::setAlwaysAllowLocalWebarchive):
        (WebCore::Document::alwaysAllowLocalWebarchive):
        * loader/DocumentLoader.cpp:
        (WebCore::disallowWebArchive):
        (WebCore::DocumentLoader::continueAfterContentPolicy):
        (WebCore::isRemoteWebArchive): Deleted.
        * testing/Internals.cpp:
        (WebCore::Internals::setAlwaysAllowLocalWebarchive const):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-11-27  Jer Noble  <jer.noble@apple.com>

        Unregister CDMSessionMediaSourceAVFObjC for error notifications during destruction.
        https://bugs.webkit.org/show_bug.cgi?id=191985
        <rdar://problem/45972018>

        Reviewed by Eric Carlson.

        * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:
        (WebCore::CDMSessionMediaSourceAVFObjC::~CDMSessionMediaSourceAVFObjC):

2018-11-27  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Use LibWebRTC provided vp8 decoders and encoders
        https://bugs.webkit.org/show_bug.cgi?id=191861

        The GStreamer implementations are less feature full and less tested, now that Apple
        also use the LibWebRTC provided implementations it makes a lot of sense for us to
        do the same.

        Basically everything related to temporal scalability is not implemented in GStreamer.

        We should make sure to use GStreamer elements on low powered platforms and for
        accelerated encoders and decoders.

        Reviewed by Philippe Normand.

        This is mostly refactoring, no new test required.

        * platform/graphics/gstreamer/GStreamerCommon.h: Added GstMappedFrame similar to GstMappedBuffer but for video frames.
        (WebCore::GstMappedFrame::GstMappedFrame):
        (WebCore::GstMappedFrame::get):
        (WebCore::GstMappedFrame::ComponentData):
        (WebCore::GstMappedFrame::ComponentStride):
        (WebCore::GstMappedFrame::info):
        (WebCore::GstMappedFrame::width):
        (WebCore::GstMappedFrame::height):
        (WebCore::GstMappedFrame::format):
        (WebCore::GstMappedFrame::~GstMappedFrame):
        (WebCore::GstMappedFrame::operator bool const):
        * platform/graphics/gstreamer/GUniquePtrGStreamer.h:
        * platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp:
        (WebCore::GStreamerVideoFrameLibWebRTC::ToI420): Implemented support for converting frame formats with the GstVideoConverter API
        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::GstDecoderFactory):
        (WebCore::GStreamerVideoDecoder::HasGstDecoder):
        (WebCore::VP8Decoder::Create): Creates a `webrtc::LibvpxVp8Decoder()` if GStreamer decoder would be the LibVPX based one.
        (WebCore::GStreamerVideoDecoderFactory::CreateVideoDecoder):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
        (gst_webrtc_video_encoder_class_init):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: Stop using vp8enc and use LibWebRTC based implementation
        (WebCore::GStreamerH264Encoder::GStreamerH264Encoder): Renamed H264Encoder to GStreamerH264Encoder to be more coherent with what is done in LibVPX
        (WebCore::GStreamerVP8Encoder::GStreamerVP8Encoder): Renamed VP8Encoder to GStreamerVP8Encoder to be more coherent with what is done in LibVPX
        (WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
        (WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

2018-11-27  Javier Fernandez  <jfernandez@igalia.com>

        [css-grid] align-self center and position sticky don't work together
        https://bugs.webkit.org/show_bug.cgi?id=191963

        Reviewed by Manuel Rego Casasnovas.

        This is a fix for a regression introduced in r515391, where we landed
        the implementation of alignment for positioned objects in a Grid Layout
        container.

        We assumed that items with non-static positions shouldn't honor the
        CSS Box Alignment properties. This is only true for out-of-flow items,
        absolute or fixed positioned elements. However, sticky positioned
        elements are treated as relative positioned items, but they indeed use
        non-static position to define their behavior.

        No new tests, this change is covered by current tests and make several cases to pass now.

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::columnAxisPositionForChild const):
        (WebCore::RenderGrid::rowAxisPositionForChild const):

2018-11-26  Daniel Bates  <dabates@apple.com>

        REGRESSION (r238078): Do not draw caps lock indicator when Strong Password button is shown
        https://bugs.webkit.org/show_bug.cgi?id=191969
        <rdar://problem/46247569>

        Reviewed by Dean Jackson.

        Following r238078 we now support drawing the caps lock indicator in password fields on iOS.
        However it is not meaningful to show the caps lock indicator when the Strong Password button
        is visible because the password field is not editable. We should not paint the caps lock
        indicator when the Strong Password button is visible.

        Tests: fast/forms/auto-fill-button/caps-lock-indicator-should-be-visible-after-hiding-auto-fill-strong-password-button.html
               fast/forms/auto-fill-button/caps-lock-indicator-should-not-be-visible-when-auto-fill-strong-password-button-is-visible.html

        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::shouldDrawCapsLockIndicator const): Do not draw the caps
        lock indicator when the password field has the Strong Password button.
        (WebCore::TextFieldInputType::updateAutoFillButton): Call capsLockStateMayHaveChanged() to
        update the visibility of the caps lock indicator when the auto fill button has changed.

2018-11-26  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238357.

        One of the layout tests added with this change is failing on Mojave.

        Reverted changeset:
        "REGRESSION (r238078): Do not draw caps lock indicator when Strong Password button is shown"
        https://bugs.webkit.org/show_bug.cgi?id=191969
        https://trac.webkit.org/changeset/238513

2018-11-26  Tim Horton  <timothy_horton@apple.com>

        Insert <attachment> elements under editable images to make their backing data accessible
        https://bugs.webkit.org/show_bug.cgi?id=191844
        <rdar://problem/30900149>

        Reviewed by Simon Fraser.

        Test: editing/images/editable-image-creates-attachment.html

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::parseAttribute):
        (WebCore::HTMLImageElement::insertedIntoAncestor):
        (WebCore::HTMLImageElement::removedFromAncestor):
        When the x-apple-editable-image attribute changes, or the element is
        moved into or out of a document, call updateEditableImage.

        (WebCore::HTMLImageElement::editableImageViewID const):
        Adopt EditableImageReference.

        (WebCore::HTMLImageElement::updateEditableImage):
        When the image element moves into a document, the setting is on, and
        the appropriate attribute is applied, add an <attachment> into the
        shadow DOM, and inform the UI process both of the editable image's
        creation and that it should be associated with the new attachment.

        Use an EditableImageReference to extend the lifetime of the
        corresponding editable image in the UI process, and to communicate
        the attachment association.

        If the element was cloned from another editable image element, use the
        EditableImageReference and attachmentID from the original; the embedded
        view will be re-parented under this element's layer, and the attachment
        will be cloned (with a new ID) by editing code if the element is parented.

        (WebCore::HTMLImageElement::attachmentIdentifier const):
        (WebCore::HTMLImageElement::copyNonAttributePropertiesFromElement):
        Store the aforementioned bits of information when cloned so that we can
        reconstitute the appropriate attachment data and embedded view.

        * html/HTMLImageElement.h:
        * page/ChromeClient.h:

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/EditableImageReference.cpp: Added.
        (WebCore::EditableImageReference::EditableImageReference):
        (WebCore::EditableImageReference::~EditableImageReference):
        (WebCore::EditableImageReference::associateWithAttachment):
        * page/EditableImageReference.h: Added.
        (WebCore::EditableImageReference::create):
        (WebCore::EditableImageReference::embeddedViewID const):
        Add EditableImageReference, which manages the lifetime of the UI-side
        EditableImage and helps clients communicate about it. It is refcounted
        so that cloned <img> elements can potentially borrow the UI-side state
        (in the case where they end up getting parented).

        * page/NavigatorBase.cpp:
        Fix an unrelated unified build failure that I exposed.

2018-11-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Request the correct route policy and context from the VideoFullscreenModel.

        * platform/cocoa/VideoFullscreenModel.h:
        (WebCore::VideoFullscreenModel::requestRouteSharingPolicyAndContextUID):
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (WebCore::VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID):
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewController setWebKitOverrideRouteSharingPolicy:routingContextUID:]):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
        (VideoFullscreenInterfaceAVKit::doSetup):

2018-11-24  Ryosuke Niwa  <rniwa@webkit.org>

        SVG use element inside a shadow tree cannot reference an element in the same tree
        https://bugs.webkit.org/show_bug.cgi?id=174977
        <rdar://problem/33665636>

        Reviewed by Zalan Bujtas.

        Make fragment URL references used by SVGelements within a shadow tree to refer to other elements
        in the same shadow tree. To do this, this patch makes targetElementFromIRIString take a TreeScope
        instead of a Document, and updates its call sites.

        This patch updates the most uses of targetElementFromIRIString except CSS cursor image, altGraph,
        and glyphRef since the cursor image isn't really a SVG feature, and there aren't really real world
        use cases in which altGraph and glyphRef are used within shadow trees.

        Tests: fast/shadow-dom/svg-animate-href-change-in-shadow-tree.html
               fast/shadow-dom/svg-animate-href-in-shadow-tree.html
               fast/shadow-dom/svg-feimage-href-in-shadow-tree.html
               fast/shadow-dom/svg-linear-gradient-href-in-shadow-tree.html
               fast/shadow-dom/svg-mpath-href-change-in-shadow-tree.html
               fast/shadow-dom/svg-mpath-href-in-shadow-tree.html
               fast/shadow-dom/svg-radial-gradient-href-in-shadow-tree.html
               fast/shadow-dom/svg-text-path-href-change-in-shadow-tree.html
               fast/shadow-dom/svg-text-path-href-in-shadow-tree.html
               fast/shadow-dom/svg-thref-href-change-in-shadow-tree.html
               fast/shadow-dom/svg-thref-href-in-shadow-tree.html
               fast/shadow-dom/svg-use-href-change-in-shadow-tree.html
               fast/shadow-dom/svg-use-href-in-shadow-tree.html

        * accessibility/AccessibilitySVGElement.cpp:
        (WebCore::AccessibilitySVGElement::targetForUseElement const):
        * css/CSSCursorImageValue.cpp:
        * rendering/svg/RenderSVGTextPath.cpp:
        (WebCore::RenderSVGTextPath::layoutPath const):
        * svg/SVGAltGlyphElement.cpp:
        (WebCore::SVGAltGlyphElement::hasValidGlyphElements const):
        * svg/SVGFEImageElement.cpp:
        (WebCore::SVGFEImageElement::buildPendingResource):
        (WebCore::SVGFEImageElement::build):
        * svg/SVGGlyphRefElement.cpp:
        (WebCore::SVGGlyphRefElement::hasValidGlyphElement const):
        * svg/SVGLinearGradientElement.cpp:
        (WebCore::SVGLinearGradientElement::collectGradientAttributes):
        * svg/SVGMPathElement.cpp:
        (WebCore::SVGMPathElement::buildPendingResource):
        (WebCore::SVGMPathElement::pathElement):
        * svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::collectGradientAttributes):
        * svg/SVGTRefElement.cpp:
        (WebCore::SVGTRefElement::buildPendingResource):
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::buildPendingResource):
        * svg/SVGURIReference.cpp:
        (WebCore::SVGURIReference::targetElementFromIRIString):
        * svg/SVGURIReference.h:
        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::updateShadowTree):
        (WebCore::SVGUseElement::findTarget const):
        * svg/animation/SVGSMILElement.cpp:
        (WebCore::SVGSMILElement::buildPendingResource):
        (WebCore::SVGSMILElement::insertedIntoAncestor):
        * svg/graphics/filters/SVGFEImage.cpp:
        (WebCore::FEImage::FEImage):
        (WebCore::FEImage::createWithIRIReference):
        (WebCore::FEImage::referencedRenderer const):
        * svg/graphics/filters/SVGFEImage.h:

2018-11-26  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238357.

        Casued three css tests to fail and crash on ios sim

        Reverted changeset:

        "Avoid triggering compositing updates when only the root layer
        is composited"
        https://bugs.webkit.org/show_bug.cgi?id=191813
        https://trac.webkit.org/changeset/238357

2018-11-26  Daniel Bates  <dabates@apple.com>

        Caret disappears at end of password field when caps lock indicator is shown; password field
        not scrolled when caps lock indicator is shown
        https://bugs.webkit.org/show_bug.cgi?id=191164
        <rdar://problem/45738179>

        Reviewed by Dean Jackson.

        Fixes an issue where the caret may be occluded by- or paint on top of- the caps lock indicator on
        Mac and iOS, respectively.

        If there has not been a previous selection in a focused password field, including a caret
        selection made by pressing the arrow keys, then we never scroll the password field to reveal
        the current selection when the caps lock indicator is made visible. When the caps lock indicator
        is made visible or hidden the size of the inner text renderer changes as it shrinks or expands
        to make space for the caps lock indicator or to fill the void of the now hidden caps lock indicator,
        respectively. We should detect such size changes and schedule an update and reveal of the current
        selection after layout.

        Test: fast/forms/password-scrolled-after-caps-lock-toggled.html

        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::setNeedsSelectionUpdate): Modified to take an enum to override the current
        selection reveal mode for the next update.
        * editing/FrameSelection.h:
        * rendering/RenderTextControlSingleLine.cpp:
        (WebCore::RenderTextControlSingleLine::layout): Schedule post-layout a selection update that
        reveals the current selection. We pass FrameSelection::RevealSelectionAfterUpdate::Forced to ensure
        that the scheduled selection update scrolls to the reveal the current selection regardless of selection
        reveal mode. This is necessary because typing into a password field does not change the current
        selection reveal mode.

2018-11-26  Daniel Bates  <dabates@apple.com>

        Placeholder text is not repainted after caps lock indicator is hidden
        https://bugs.webkit.org/show_bug.cgi?id=191968
        <rdar://problem/46247234>

        Reviewed by Zalan Bujtas.

        Fixes an issue where the placeholder text in a password field is not repainted when the
        caps lock indicator is hidden.

        The placeholder renderer is special. It is an excluded child renderer and does not take
        part in normal flow layout. It is also created and destroyed as needed. The caps lock
        indicator is also special in that it is implemented as a RenderImage and we do not know
        its dimensions before it is loaded and the load happens asynchronously. As a result we
        detect when the inner text size changes and mark the placeholder as dirty as a way to
        keep the dimensions of the placeholder in sync with the dimensions of the inner text.

        Test: fast/repaint/placeholder-after-caps-lock-hidden.html

        * rendering/RenderTextControlSingleLine.cpp:
        (WebCore::RenderTextControlSingleLine::layout): Mark the placeholder as needing layout
        the size of the inner text changes.

2018-11-26  Jeremy Jones  <jeremyj@apple.com>

        Picture-in-picture window size changes unnecesarily when URL changes.
        https://bugs.webkit.org/show_bug.cgi?id=191787

        Reviewed by Jer Noble.

        When loading a new URL, the video dimensions are temporarily 0,0. Instead of 
        defaulting back to 4:3 sized pip window temporarily, keep the old dimensions until
        there is a new valid size.

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (VideoFullscreenInterfaceAVKit::videoDimensionsChanged):

2018-11-26  Andy Estes  <aestes@apple.com>

        [Cocoa] Make it easier to encode NSObjects
        https://bugs.webkit.org/show_bug.cgi?id=191948

        Reviewed by Dean Jackson.

        * Modules/applepay/Payment.h: Changed the PKPayment * constructor to take a
        RetainPtr<PKPayment>&& instead.
        * Modules/applepay/PaymentContact.h: Ditto for PKContact.
        * Modules/applepay/PaymentMerchantSession.h: Ditto for PKPaymentMerchantSession.
        * Modules/applepay/PaymentMethod.h: Ditto for PKPaymentMethod.
        * Modules/applepay/cocoa/PaymentCocoa.mm:
        (WebCore::Payment::Payment): Moved definition out-of-line.
        (WebCore::Payment::pkPayment const): Ditto.
        * Modules/applepay/cocoa/PaymentContactCocoa.mm:
        (WebCore::PaymentContact::PaymentContact): Ditto.
        (WebCore::PaymentContact::pkContact const): Ditto.
        * Modules/applepay/cocoa/PaymentMethodCocoa.mm:
        (WebCore::PaymentMethod::PaymentMethod): Ditto.
        (WebCore::PaymentMethod::pkPaymentMethod const): Ditto.

2018-11-26  Daniel Bates  <dabates@apple.com>

        REGRESSION (r238078): Do not draw caps lock indicator when Strong Password button is shown
        https://bugs.webkit.org/show_bug.cgi?id=191969
        <rdar://problem/46247569>

        Reviewed by Dean Jackson.

        Following r238078 we now support drawing the caps lock indicator in password fields on iOS.
        However it is not meaningful to show the caps lock indicator when the Strong Password button
        is visible because the password field is not editable. We should not paint the caps lock
        indicator when the Strong Password button is visible.

        Tests: fast/forms/auto-fill-button/caps-lock-indicator-should-be-visible-when-after-hiding-auto-fill-strong-password-button.html
               fast/forms/auto-fill-button/caps-lock-indicator-should-not-be-visible-when-auto-fill-strong-password-button-is-visible.html

        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::shouldDrawCapsLockIndicator const): Do not draw the caps
        lock indicator when the password field has the Strong Password button.
        (WebCore::TextFieldInputType::updateAutoFillButton): Call capsLockStateMayHaveChanged() to
        update the visibility of the caps lock indicator when the auto fill button has changed.

2018-11-26  Sam Weinig  <sam@webkit.org>

        Streamline ListHashSet use in floating object code
        https://bugs.webkit.org/show_bug.cgi?id=191957

        Reviewed by Alex Christensen.

        Simplify use of ListHashSet by using new raw pointer overloads and
        making use of reversed order of template arguments in the find() and
        contains() overloads that take hash translators.  

        * rendering/FloatingObjects.cpp:
        (WebCore::FloatingObjects::remove):
        Use raw pointer overloads of contains and remove. Remove seperate call
        to find / check agains end() which is unnecessary as remove() already
        does that.
        
        * rendering/FloatingObjects.h:
        (WebCore::FloatingObjectHashFunctions::hash):
        (WebCore::FloatingObjectHashFunctions::equal):
        (WebCore::FloatingObjectHashTranslator::hash):
        (WebCore::FloatingObjectHashTranslator::equal):
        Add hash()/equal() overloads for the raw pointer cases. As the FIXME
        notes, this could be simplified by changing PtrHashBase to use designated
        bottleneck functions for hash() and equal().

        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::containsFloat const):
        (WebCore::RenderBlockFlow::insertFloatingObject):
        (WebCore::RenderBlockFlow::removeFloatingObject):
        (WebCore::RenderBlockFlow::hasOverhangingFloat):
        (WebCore::RenderBlockFlow::addIntrudingFloats):
        Use simplified calls.
        
        * rendering/RenderBlockLineLayout.cpp:
        (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
        (WebCore::RenderBlockFlow::linkToEndLineIfNeeded):
        Use simplified calls.

2018-11-26  Jeremy Jones  <jeremyj@apple.com>

        Use Full Screen consistently in localizable strings.
        https://bugs.webkit.org/show_bug.cgi?id=190363
        rdar://problem/43882333

        Reviewed by Jon Lee.

        No new tests because only change is to localizable strings.

        Rename "Fullscreen" to "Full Screen" in localizable strings for consistency.

        * English.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        (WebCore::contextMenuItemTagEnterVideoFullscreen):
        (WebCore::contextMenuItemTagExitVideoFullscreen):
        (WebCore::localizedMediaControlElementHelpText):

2018-11-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: CoreAnimation
        https://bugs.webkit.org/show_bug.cgi?id=191777
        <rdar://problem/46140542>

        Reviewed by Zalan Bujtas.

        Update the Windows build of WebKit to refer to the SPI headers, rather than WebKitSystemInterface.
        Move a small amount of glue code from WKSI to WebCore, and remove any includes or link
        directives for WebKitSystemInterface.lib.
        
        No new tests. No change in behavior.

        * platform/graphics/BitmapImage.cpp:
        * platform/graphics/ca/win/CACFLayerTreeHost.h:
        * platform/graphics/ca/win/PlatformCALayerWin.cpp:
        (layerTreeHostForLayer):
        * platform/graphics/cg/GraphicsContextCG.cpp:
        * platform/graphics/cg/PathCG.cpp:
        * platform/graphics/cg/PatternCG.cpp:
        * platform/graphics/win/WKCAImageQueue.cpp:

2018-11-25  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Use float box's margin box to adjust the line constraints.
        https://bugs.webkit.org/show_bug.cgi?id=191961

        Reviewed by Antti Koivisto.

        Test: fast/inline/inline-content-with-float-and-margin.html

        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):

2018-11-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Accessing default web context before gtk_init results in drawing failure (Gtk-WARNING **: drawing failure for widget 'WebKitWebView': invalid value for an input Visual*)
        https://bugs.webkit.org/show_bug.cgi?id=150303

        Reviewed by Michael Catanzaro.

        Ensure gtk has been initialized before trying to get the default display.

        * platform/graphics/PlatformDisplay.cpp:
        (WebCore::PlatformDisplay::createPlatformDisplay):

2018-11-26  Javier Fernandez  <jfernandez@igalia.com>

        [css-grid] absolute positioned child is sized wrongly when using auto-fit, generating spurious collapsed tracks
        https://bugs.webkit.org/show_bug.cgi?id=191938

        Reviewed by Manuel Rego Casasnovas.

        The guttersSize function has a complex logic to compute the gaps in a
        specific GridSpan, considering different scenarios of collapsed tracks
        for such span.

        The first case is avoiding the duplicated gap because of trailing
        collapsed tracks.

        The second case considered is looking for non-empty tracks before the
        GridSpan end, if it points to an empty track, so we must add this gap.

        The last case is to consider the gap of non-empty tracks after the
        GridSpan end line, if it points to an empty track.

        There are several cases that are not considered or incorrectly computed.
        This patch addresses those cases; basically, we should only consider gaps
        when there are non-empty tracks before and after the collapsed tracks.
        Additionally, we should avoid duplicating the gaps size adding both,
        before and after non-empty track's gap.

        No new tests, this change is covered by current tests and make several cases to pass now.

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::guttersSize const):

2018-11-26  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Fix grid container sizing under min-content height
        https://bugs.webkit.org/show_bug.cgi?id=191889

        Reviewed by Javier Fernandez.

        The spec is quite clear
        (https://drafts.csswg.org/css-sizing/#valdef-width-min-content):
          "min-content
             If specified for the inline axis, use the min-content inline size;
             otherwise behaves as the property’s initial value."

        So if a grid container has "height: min-content" it should behave
        the same than with "height: auto".

        The patch removes computeIntrinsicLogicalContentHeightUsing() in
        RenderGrid as we don't need a custom one anymore.
        We can also get rid of m_minContentHeight and m_maxContentHeight
        attributes that were only used for this logic.

        Test: fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html
              fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html
              imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::layoutBlock):
        (WebCore::RenderGrid::computeIntrinsicLogicalWidths const):
        (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize const):
        * rendering/RenderGrid.h:

2018-11-25  Zalan Bujtas  <zalan@apple.com>

        [LFC] Remove PointInContainingBlock and PositionInContainingBlock
        https://bugs.webkit.org/show_bug.cgi?id=191954

        Reviewed by Antti Koivisto.

        Use Point and Position instead. Points and positions are by default in the containing block's coordinate system.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        * layout/LayoutUnits.h:
        (WebCore::Layout::Position::operator LayoutUnit const):
        (WebCore::Layout::operator<):
        (WebCore::Layout::operator==):
        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::FloatAvoider):
        (WebCore::Layout::FloatAvoider::setHorizontalConstraints):
        (WebCore::Layout::FloatAvoider::horizontalPositionCandidate):
        (WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
        * layout/floats/FloatBox.cpp:
        (WebCore::Layout::FloatBox::horizontalPositionCandidate):
        (WebCore::Layout::FloatBox::verticalPositionCandidate):
        (WebCore::Layout::FloatBox::initialVerticalPosition const):
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::positionForFloat const):
        (WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        (WebCore::Layout::FloatingContext::floatingPosition const):
        (WebCore::Layout::FloatingPair::horizontalConstraints const):
        (WebCore::Layout::FloatingPair::bottom const):
        * layout/floats/FloatingContext.h:
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::constraints const):
        (WebCore::Layout::FloatingState::bottom const):
        * layout/floats/FloatingState.h:
        (WebCore::Layout::FloatingState::FloatItem::bottom const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):

2018-11-25  Zalan Bujtas  <zalan@apple.com>

        [LFC] Rename Layout::Position to Layout::Point
        https://bugs.webkit.org/show_bug.cgi?id=191950

        Reviewed by Antti Koivisto.

        It actually represents a point.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::mapTopLeftToAncestor):
        (WebCore::Layout::FormattingContext::mapCoordinateToAncestor):
        * layout/FormattingContext.h:
        * layout/LayoutUnits.h:
        (WebCore::Layout::Point::Point):
        (WebCore::Layout::Point::moveBy):
        (WebCore::Layout::Position::operator LayoutPoint const): Deleted.
        (WebCore::Layout::Position::Position): Deleted.
        (WebCore::Layout::Position::moveBy): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::constraints const):

2018-11-25  Zalan Bujtas  <zalan@apple.com>

        [LFC] Floating code should use typed positions (PositionInContextRoot).
        https://bugs.webkit.org/show_bug.cgi?id=191949

        Reviewed by Antti Koivisto.

        Use PositionInContextRoot instead of LayoutUnit.

        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::constraints const):
        (WebCore::Layout::FloatingState::bottom const):
        * layout/floats/FloatingState.h:
        (WebCore::Layout::FloatingState::leftBottom const):
        (WebCore::Layout::FloatingState::rightBottom const):
        (WebCore::Layout::FloatingState::bottom const):

2018-11-25  Zalan Bujtas  <zalan@apple.com>

        Fix build after r238472.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::runWidth):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::textWidth const):

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Make it possible to insert editable images with a gesture
        https://bugs.webkit.org/show_bug.cgi?id=191937

        Reviewed by Wenson Hsieh.

        Tests:
            editing/images/redo-insert-editable-image-maintains-strokes.html,
            editing/images/undo-insert-editable-image.html,
            editing/images/basic-editable-image-from-execCommand.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * Source/WebCore/editing/EditorCommand.cpp:
        * Source/WebCore/en.lproj/Localizable.strings:
        * editing/EditAction.h:
        * editing/Editor.cpp:
        (WebCore::Editor::insertEditableImage):
        * editing/Editor.h:
        * editing/InsertEditableImageCommand.cpp: Added.
        (WebCore::InsertEditableImageCommand::InsertEditableImageCommand):
        (WebCore::InsertEditableImageCommand::doApply):
        * editing/InsertEditableImageCommand.h: Added.
        (WebCore::InsertEditableImageCommand::create):
        * editing/VisibleSelection.cpp:
        Add an editor command that inserts an editable image.
        It will likely get a bit more complicated, but for now it just inserts
        a 100% by 300px editable image.

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Fix a few localizable string descriptions in WebEditCommandProxy.cpp and WebEditorClient.mm
        https://bugs.webkit.org/show_bug.cgi?id=191945

        Reviewed by Anders Carlsson.

        Run `update-webkit-localizable-strings`.

        * en.lproj/Localizable.strings:

2018-11-24  Sam Weinig  <sam@webkit.org>

        Remove now unnecessary specialized ListHashSet from InlineItem.h
        https://bugs.webkit.org/show_bug.cgi?id=191946

        Reviewed by Zalan Bujtas.

        Now that ListHashSet supports raw pointer overloads for smart pointers,
        we can fix the FIXME in InlineItem.h and remove the specialized ListHashSet
        and ListHashSet::find calls.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::runWidth):
        * layout/inlineformatting/InlineItem.h:
        (WebCore::Layout::InlineItemHashFunctions::hash): Deleted.
        (WebCore::Layout::InlineItemHashFunctions::equal): Deleted.
        (WebCore::Layout::InlineItemHashTranslator::hash): Deleted.
        (WebCore::Layout::InlineItemHashTranslator::equal): Deleted.
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::textWidth const):

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add WKWebView SPI to trigger and remove data detection
        https://bugs.webkit.org/show_bug.cgi?id=191918
        <rdar://problem/36185051>

        Reviewed by Tim Horton.

        Add a helper method on DataDetection to remove all data detected links in the given document. See WebKit changes
        for more detail.

        * editing/cocoa/DataDetection.h:
        * editing/cocoa/DataDetection.mm:
        (WebCore::DataDetection::removeDataDetectedLinksInDocument):

2018-11-24  Andy Estes  <aestes@apple.com>

        [Cocoa] SOFT_LINK_CLASS_FOR_{HEADER,SOURCE} should generate a more concise getter function
        https://bugs.webkit.org/show_bug.cgi?id=191899

        Reviewed by Dean Jackson.

        * editing/cocoa/DataDetection.mm:
        * editing/cocoa/FontAttributesCocoa.mm:
        * editing/cocoa/FontShadowCocoa.mm:
        * platform/cocoa/DataDetectorsCoreSoftLink.h:
        * platform/graphics/cocoa/ColorCocoa.mm:
        * platform/ios/PlatformScreenIOS.mm:

2018-11-23  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Enable Web Authentication as an experimental feature for macOS
        https://bugs.webkit.org/show_bug.cgi?id=191932
        rdar://problem/46225210

        Reviewed by Brent Fulgham.

        Add myself to the contact of Web Authentication.

        * features.json:

2018-11-23  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION (r236785): Nullptr crash in StyledMarkupAccumulator::traverseNodesForSerialization
        https://bugs.webkit.org/show_bug.cgi?id=191921

        Reviewed by Dean Jackson.

        The bug was caused by traverseNodesForSerialization not being able to traverse past the end of shadow root
        when skipping children of a node for which enterNode returns false because  it was using NodeTraversal's
        nextSkippingChildren instead of a member function which supports traversing the composed tree.

        Fixed the crash by using variant of nextSkippingChildren which knows how to traverse past the last node
        in a shadow tree. Also added more assertions to help debug issues like this in the future.

        Test: editing/pasteboard/copy-paste-across-shadow-boundaries-5.html

        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):

2018-11-22  Ryosuke Niwa  <rniwa@webkit.org>

        Updating href on textPath doesn't update its rendering
        https://bugs.webkit.org/show_bug.cgi?id=191920

        Reviewed by Dean Jackson.

        Fixed the bug by invalidating the RenderSVGResource in SVGTextPathElement::svgAttributeChanged
        in addition to updating the pending resources.

        Test: svg/text/textpath-reference-update.html

        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::svgAttributeChanged):

2018-11-23  Ross Kirsling  <ross.kirsling@sony.com>

        Introduce user-defined literal for LayoutUnit
        https://bugs.webkit.org/show_bug.cgi?id=191915

        Reviewed by Dean Jackson.

        * platform/LayoutUnit.h:
        Introduce a user-defined literal for LayoutUnit, _lu, replacing the existing "fromPixel" factory function.

        * layout/FormattingContextGeometry.cpp:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        * layout/inlineformatting/InlineLineBreaker.cpp:
        * page/FrameView.cpp:
        * page/FrameViewLayoutContext.h:
        * page/Page.cpp:
        * page/SpatialNavigation.h:
        * platform/ScrollableArea.cpp:
        * rendering/EllipsisBox.cpp:
        * rendering/FlexibleBoxAlgorithm.cpp:
        * rendering/FloatingObjects.cpp:
        * rendering/GridLayoutFunctions.cpp:
        * rendering/GridTrackSizingAlgorithm.cpp:
        * rendering/InlineFlowBox.cpp:
        * rendering/InlineTextBox.cpp:
        * rendering/LayoutState.h:
        * rendering/LogicalSelectionOffsetCaches.h:
        * rendering/RenderBlock.cpp:
        * rendering/RenderBlock.h:
        * rendering/RenderBlockFlow.cpp:
        * rendering/RenderBlockFlow.h:
        * rendering/RenderBlockLineLayout.cpp:
        * rendering/RenderBox.cpp:
        * rendering/RenderBoxModelObject.cpp:
        * rendering/RenderDeprecatedFlexibleBox.cpp:
        * rendering/RenderDeprecatedFlexibleBox.h:
        * rendering/RenderElement.cpp:
        * rendering/RenderFlexibleBox.cpp:
        * rendering/RenderFlexibleBox.h:
        * rendering/RenderFragmentContainer.cpp:
        * rendering/RenderFragmentedFlow.cpp:
        * rendering/RenderGrid.cpp:
        * rendering/RenderGrid.h:
        * rendering/RenderImage.cpp:
        * rendering/RenderLayer.cpp:
        * rendering/RenderListMarker.cpp:
        * rendering/RenderMultiColumnFlow.cpp:
        * rendering/RenderMultiColumnSet.cpp:
        * rendering/RenderReplaced.cpp:
        * rendering/RenderReplaced.h:
        * rendering/RenderRubyRun.h:
        * rendering/RenderTable.cpp:
        * rendering/RenderTable.h:
        * rendering/RenderTableSection.cpp:
        * rendering/RenderTheme.cpp:
        * rendering/RenderTreeAsText.cpp:
        * rendering/RenderView.cpp:
        * rendering/RootInlineBox.h:
        * rendering/SimpleLineLayout.cpp:
        * rendering/SimpleLineLayoutPagination.cpp:
        * rendering/TableLayout.h:
        * rendering/line/BreakingContext.h:
        * rendering/line/LineLayoutState.h:
        * rendering/line/LineWidth.h:
        * rendering/mathml/MathOperator.cpp:
        * rendering/mathml/MathOperator.h:
        * rendering/mathml/RenderMathMLBlock.h:
        * rendering/mathml/RenderMathMLFraction.cpp:
        * rendering/mathml/RenderMathMLFraction.h:
        * rendering/mathml/RenderMathMLMath.cpp:
        * rendering/mathml/RenderMathMLMath.h:
        * rendering/mathml/RenderMathMLMenclose.h:
        * rendering/mathml/RenderMathMLOperator.cpp:
        * rendering/mathml/RenderMathMLOperator.h:
        * rendering/mathml/RenderMathMLPadded.h:
        * rendering/mathml/RenderMathMLRoot.cpp:
        * rendering/mathml/RenderMathMLRoot.h:
        * rendering/mathml/RenderMathMLRow.h:
        * rendering/mathml/RenderMathMLScripts.cpp:
        * rendering/mathml/RenderMathMLScripts.h:
        * rendering/mathml/RenderMathMLSpace.h:
        * rendering/mathml/RenderMathMLToken.cpp:
        * rendering/mathml/RenderMathMLToken.h:
        * rendering/mathml/RenderMathMLUnderOver.h:
        * rendering/shapes/ShapeOutsideInfo.cpp:
        * rendering/style/CollapsedBorderValue.h:
        Update all instances of LayoutUnit(), LayoutUnit(0), LayoutUnit { 0 }, etc. and add any other
        literal conversions that will be needed when making non-int LayoutUnit constructors explicit.
        For good measure, also mark all default values for LayoutUnit parameters.

2018-11-23  Jim Mason  <jmason@ibinx.com>

        [GTK] Scrollbars not following gtk-primary-button-warps-slider setting
        https://bugs.webkit.org/show_bug.cgi?id=191067

        Updated code per the style guide, removed unreachable break (non-semantic change)

        Reviewed by Michael Catanzaro.

        * platform/gtk/ScrollbarThemeGtk.cpp:
        (WebCore::ScrollbarThemeGtk::handleMousePressEvent):

2018-11-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable drag and drop support for iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=191818
        <rdar://problem/43907454>

        Reviewed by Dean Jackson.

        Enables drag and drop by default on iOSMac by switching on ENABLE_DATA_INTERACTION and ENABLE_DRAG_SUPPORT. This
        enables support for dragging links, text selections, and images, though many advanced features (e.g. custom
        pasteboard data) will require additional support from the platform.

        * Configurations/FeatureDefines.xcconfig:
        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::PlatformPasteboard::informationForItemAtIndex):
        (WebCore::registerItemToPasteboard):
        (WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
        * platform/ios/WebItemProviderPasteboard.mm:
        (-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):
        (-[WebItemProviderPasteboard numberOfFiles]):

        Disable codepaths which attempt to access or set `teamData` or `preferredPresentationStyle` on `NSItemProvider`
        in iOSMac, since these are currently unimplemented.

2018-11-23  Zalan Butjas  <zalan@apple.com>

        [LFC][IFC] Add support for variable height runs.
        https://bugs.webkit.org/show_bug.cgi?id=191925

        Reviewed by Antti Koivisto.

        https://www.w3.org/TR/CSS22/visudet.html#inline-box-height

        10.8 Line height calculations: the 'line-height' and 'vertical-align' properties

        The height of each inline-level box in the line box is calculated. For replaced elements, inline-block elements,
        and inline-table elements, this is the height of their margin box; for inline boxes, this is their 'line-height'.

        The line box height is the distance between the uppermost box top and the lowermost box bottom.

        The minimum height consists of a minimum height above the baseline and a minimum depth below it,
        exactly as if each line box starts with a zero-width inline box with the element's font and line height properties.
        We call that imaginary box a "strut." (The name is inspired by TeX.).

        Test: fast/inline/inline-content-with-image-simple.html

        * layout/Verification.cpp:
        (WebCore::Layout::checkForMatchingNonTextRuns):
        (WebCore::Layout::checkForMatchingTextRuns):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::createFinalRuns const):
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::logicalHeight const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::justifyRuns):
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::logicalWidth const):
        (WebCore::Layout::InlineRun::logicalHeight const):
        (WebCore::Layout::InlineRun::setLogicalWidth):
        (WebCore::Layout::InlineRun::width const): Deleted.
        (WebCore::Layout::InlineRun::height const): Deleted.
        (WebCore::Layout::InlineRun::setWidth): Deleted.
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):

2018-11-23  Antti Koivisto  <antti@apple.com>

        UI side compositing doesn't paint on Mac
        https://bugs.webkit.org/show_bug.cgi?id=191908

        Reviewed by Tim Horton.

        For clarity put RGB10 and RGB10A8 formats behind PLATFORM(IOS_FAMILY). They are not supported on Mac.

        * platform/graphics/cocoa/IOSurface.h:
        * platform/graphics/cocoa/IOSurface.mm:
        (WebCore::IOSurface::IOSurface):
        (WebCore::IOSurface::ensurePlatformContext):
        (WebCore::IOSurface::format const):
        (WebCore::operator<<):

2018-11-23  Javier Fernandez  <jfernandez@igalia.com>

        [css-grid] Implement Baseline Alignment for grid items
        https://bugs.webkit.org/show_bug.cgi?id=145566

        Reviewed by Manuel Rego Casasnovas.

        This patch impements the Baseline Self-Alignment feature for grid items according to
        the CSS Box Alignment specification [1].

        This new layout logic is handled by the Self-Alignment (justify-self and align-self)
        and Default-Alignment (justify-items and align-items) CSS properties.

        This feature allows users to align the grid items sharing a Baseline Alignment Context,
        either row or column contexts, based on their respective baselines.

        [1] https://drafts.csswg.org/css-align-3/#baseline-align-self

        Tests: fast/css-grid-layout/grid-self-baseline-and-flex-tracks-with-indefinite-container-crash.html
               fast/css-grid-layout/grid-self-baseline-and-flexible-tracks-should-not-crash.html
               fast/css-grid-layout/grid-self-baseline-and-item-relayout-should-not-crash.html
               fast/css-grid-layout/grid-self-baseline-and-relative-sized-items-crash.html
               fast/css-grid-layout/grid-self-baseline-and-relative-sized-tracks-crash.html
               fast/css-grid-layout/grid-self-baseline-followed-by-item-style-change-should-not-crash.html

        * Sources.txt:
        * rendering/GridBaselineAlignment.cpp: Added.
        (WebCore::GridBaselineAlignment::marginOverForChild const):
        (WebCore::GridBaselineAlignment::marginUnderForChild const):
        (WebCore::GridBaselineAlignment::logicalAscentForChild const):
        (WebCore::GridBaselineAlignment::ascentForChild const):
        (WebCore::GridBaselineAlignment::descentForChild const):
        (WebCore::GridBaselineAlignment::isDescentBaselineForChild const):
        (WebCore::GridBaselineAlignment::isHorizontalBaselineAxis const):
        (WebCore::GridBaselineAlignment::isOrthogonalChildForBaseline const):
        (WebCore::GridBaselineAlignment::isParallelToBaselineAxisForChild const):
        (WebCore::GridBaselineAlignment::baselineGroupForChild const):
        (WebCore::GridBaselineAlignment::updateBaselineAlignmentContext):
        (WebCore::GridBaselineAlignment::baselineOffsetForChild const):
        (WebCore::GridBaselineAlignment::clear):
        (WebCore::BaselineGroup::BaselineGroup):
        (WebCore::BaselineGroup::update):
        (WebCore::BaselineGroup::isOppositeBlockFlow const):
        (WebCore::BaselineGroup::isOrthogonalBlockFlow const):
        (WebCore::BaselineGroup::isCompatible const):
        (WebCore::BaselineContext::BaselineContext):
        (WebCore::BaselineContext::sharedGroup const):
        (WebCore::BaselineContext::updateSharedGroup):
        (WebCore::BaselineContext::findCompatibleSharedGroup):
        * rendering/GridBaselineAlignment.h: Added.
        (WebCore::BaselineGroup::maxAscent const):
        (WebCore::BaselineGroup::maxDescent const):
        (WebCore::BaselineGroup::size const):
        (WebCore::isBaselinePosition):
        (WebCore::GridBaselineAlignment::setBlockFlow):
        * rendering/GridLayoutFunctions.h:
        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::gridAxisForDirection):
        (WebCore::gridDirectionForAxis):
        (WebCore::GridTrackSizingAlgorithm::availableSpace const):
        (WebCore::GridTrackSizingAlgorithm::isIntrinsicSizedGridArea const):
        (WebCore::GridTrackSizingAlgorithmStrategy::logicalHeightForChild const):
        (WebCore::GridTrackSizingAlgorithmStrategy::minContentForChild const):
        (WebCore::GridTrackSizingAlgorithmStrategy::maxContentForChild const):
        (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
        (WebCore::GridTrackSizingAlgorithm::canParticipateInBaselineAlignment const):
        (WebCore::GridTrackSizingAlgorithm::participateInBaselineAlignment const):
        (WebCore::GridTrackSizingAlgorithm::updateBaselineAlignmentContext):
        (WebCore::GridTrackSizingAlgorithm::baselineOffsetForChild const):
        (WebCore::GridTrackSizingAlgorithm::clearBaselineItemsCache):
        (WebCore::GridTrackSizingAlgorithm::cacheBaselineAlignedItem):
        (WebCore::GridTrackSizingAlgorithm::copyBaselineItemsCache):
        (WebCore::GridTrackSizingAlgorithm::setup):
        (WebCore::GridTrackSizingAlgorithm::computeBaselineAlignmentContext):
        * rendering/GridTrackSizingAlgorithm.h:
        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::firstLineBaseline const):
        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::layoutBlock):
        (WebCore::RenderGrid::computeIntrinsicLogicalWidths const):
        (WebCore::RenderGrid::placeItemsOnGrid const):
        (WebCore::RenderGrid::performGridItemsPreLayout const):
        (WebCore::synthesizedBaselineFromMarginBox):
        (WebCore::RenderGrid::isBaselineAlignmentForChild const):
        (WebCore::RenderGrid::baselinePosition const):
        (WebCore::RenderGrid::firstLineBaseline const):
        (WebCore::RenderGrid::inlineBlockBaseline const):
        (WebCore::RenderGrid::columnAxisBaselineOffsetForChild const):
        (WebCore::RenderGrid::rowAxisBaselineOffsetForChild const):
        (WebCore::RenderGrid::columnAxisOffsetForChild const):
        (WebCore::RenderGrid::rowAxisOffsetForChild const):
        * rendering/RenderGrid.h:

2018-11-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Address post-review feedback after r238438
        https://bugs.webkit.org/show_bug.cgi?id=191913

        Reviewed by Ryosuke Niwa.

        Replace `bool` arguments to `FrameSelection::setSelectedRange`, `Editor::replaceSelectionWithText`, and
        `Editor::replaceSelectionWithFragment` with `enum class`es instead. In particular, introduce the following:

        FrameSelection::ShouldCloseTyping { No, Yes }
        Editor::SelectReplacement { No, Yes }
        Editor::SmartReplace { No, Yes }
        Editor::MatchStyle { No, Yes }

        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::selectText):
        * editing/Editor.cpp:
        (WebCore::Editor::handleTextEvent):
        (WebCore::Editor::replaceSelectionWithFragment):
        (WebCore::Editor::replaceSelectionWithText):
        (WebCore::Editor::setComposition):
        (WebCore::Editor::markMisspellingsAfterTypingToWord):
        (WebCore::Editor::changeBackToReplacedString):
        (WebCore::Editor::transpose):
        (WebCore::Editor::insertAttachment):

        At various call sites, replace boolean arguments with named enums.

        * editing/Editor.h:
        * editing/EditorCommand.cpp:
        (WebCore::expandSelectionToGranularity):
        (WebCore::executeDeleteToMark):
        (WebCore::executeSelectToMark):
        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::setSelectedRange):
        * editing/FrameSelection.h:
        * page/Page.cpp:
        (WebCore::replaceRanges):

        Avoid a bit of ref-count churn, and adjust a few functions to take `const Vector&`s instead of `Vector&&`s.

        (WebCore::Page::replaceRangesWithText):
        (WebCore::Page::replaceSelectionWithText):
        * page/Page.h:

2018-11-21  Ryosuke Niwa  <rniwa@webkit.org>

        Modernize SVGURIReference::targetElementFromIRIString
        https://bugs.webkit.org/show_bug.cgi?id=191898

        Reviewed by Daniel Bates.

        Made targetElementFromIRIString return an element and the fragment identifier,
        and merged urlFromIRIStringWithFragmentIdentifier into it.

        Also replaced the code computing the full URL using the base URL after removing
        the fragment identifier and rejoining it later with a single call to completeURL.

        No new tests since there should be no observable behavior change.

        * accessibility/AccessibilitySVGElement.cpp:
        (WebCore::AccessibilitySVGElement::targetForUseElement const):
        * css/CSSCursorImageValue.cpp:
        (WebCore::CSSCursorImageValue::updateCursorElement):
        * rendering/svg/RenderSVGTextPath.cpp:
        (WebCore::RenderSVGTextPath::layoutPath const):
        * svg/SVGAltGlyphElement.cpp:
        (WebCore::SVGAltGlyphElement::hasValidGlyphElements const):
        * svg/SVGFEImageElement.cpp:
        (WebCore::SVGFEImageElement::buildPendingResource):
        * svg/SVGGlyphRefElement.cpp:
        (WebCore::SVGGlyphRefElement::hasValidGlyphElement const):
        * svg/SVGLinearGradientElement.cpp:
        (WebCore::SVGLinearGradientElement::collectGradientAttributes):
        * svg/SVGMPathElement.cpp:
        (WebCore::SVGMPathElement::buildPendingResource):
        (WebCore::SVGMPathElement::pathElement):
        * svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::collectGradientAttributes):
        * svg/SVGTRefElement.cpp:
        (WebCore::SVGTRefElement::detachTarget):
        (WebCore::SVGTRefElement::buildPendingResource):
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::buildPendingResource):
        * svg/SVGURIReference.cpp:
        (WebCore::SVGURIReference::targetElementFromIRIString):
        (WebCore::urlFromIRIStringWithFragmentIdentifier): Deleted.
        * svg/SVGURIReference.h:
        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::findTarget const):
        * svg/animation/SVGSMILElement.cpp:
        (WebCore::SVGSMILElement::buildPendingResource):
        * svg/graphics/filters/SVGFEImage.cpp:
        (WebCore::FEImage::referencedRenderer const):

2018-11-22  Dean Jackson  <dino@apple.com>

        Implement WebGPUQueue and device.getQueue()
        https://bugs.webkit.org/show_bug.cgi?id=191911
        <rdar://problem/46214871>

        Reviewed by Antoine Quint.

        Implement WebGPUDevice::getQueue(), which creates a WebGPUQueue
        instance if necessary. Also link WebGPUQueue to the existing
        GPUQueue object, and expose the label IDL property.

        This patch is based on some work from Justin Fan.

        Test: webgpu/queue-creation.html

        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
            New files.

        * Modules/webgpu/WebGPUCommandBuffer.h:
        (WebCore::WebGPUCommandBuffer::commandBuffer const):
            Expose a GPUCommandBuffer getter, used when submitting (even though
            the actual GPU submission isn't implemented yet).

        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::getQueue):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
            Implement getQueue().

        * Modules/webgpu/WebGPUQueue.cpp:
        (WebCore::WebGPUQueue::create):
        (WebCore::WebGPUQueue::WebGPUQueue):
        (WebCore::WebGPUQueue::submit):
        * Modules/webgpu/WebGPUQueue.h:
        (WebCore::WebGPUQueue::label const):
        (WebCore::WebGPUQueue::setLabel):
        * Modules/webgpu/WebGPUQueue.idl:
            New class. Mostly sends stuff onto GPUQueue.

        * bindings/js/WebCoreBuiltinNames.h:
            Add WebGPUQueue.

        * platform/graphics/gpu/GPUQueue.h:
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
        (WebCore::GPUQueue::create):
        (WebCore::GPUQueue::submit):
        (WebCore::GPUQueue::label const):
        (WebCore::GPUQueue::setLabel const):
            "label" getter/setter that uses
            the underlying MTLCommandQueue label property, but prefixes
            it with a WebKit identifier, so it can be correctly
            identified in system crash logs as coming from WebGPU.

2018-11-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Merge addNonBreakableStart/NonBreakableEnd calls.
        https://bugs.webkit.org/show_bug.cgi?id=191903

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2018-11-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Offset formatting context root runs with horizontal margins.
        https://bugs.webkit.org/show_bug.cgi?id=191900

        Reviewed by Antti Koivisto.

        Inline runs generated by formatting roots (inline-block) need to be adjusted with the horizontal margins.
        (The test case has padding and border as well, but they are _inside_ the formatting context.)

        Test: fast/inline/inline-content-and-nested-formatting-root-with-margin-left-right.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2018-11-22  Simon Fraser  <simon.fraser@apple.com>

        Extremely small monospace text size when SVG is included as an img
        https://bugs.webkit.org/show_bug.cgi?id=191834

        Reviewed by Myles C. Maxfield.

        Give defaultFixedFontSize a reasonable default value in Settings, so that clients
        who omit to set it (like SVGImages) don't get broken rendering.

        Test: svg/text/monospace-text-size-in-img.html

        * page/Settings.yaml:

2018-11-22  Javier Fernandez  <jfernandez@igalia.com>

        Tables with vertical-lr writing-mode doesn't apply correctly vertical-align: baseline
        https://bugs.webkit.org/show_bug.cgi?id=191881

        Reviewed by Manuel Rego Casasnovas.

        We should use the font's descent value when wriring-mode flips line flow (vertical-lr).

        This change also fixes bug 170175, since Flexbox use the same code to determine the first
        line baseline of a flex item.

        Test: fast/writing-mode/vertical-align-table-baseline-latin.html

        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::firstLineBaseline const):

2018-11-21  Ryosuke Niwa  <rniwa@webkit.org>

        Phantom focus/blur events fire on clicking between text input fields when listening with addEventListener
        https://bugs.webkit.org/show_bug.cgi?id=179990

        Reviewed by Tim Horton.

        The bug was caused by TemporarySelectionChange which is used by TextIndicator::createWithRange
        to set and restore the selection putting the focus on the newly mouse-down'ed input element
        and restoring the focus back to the input element which originally had the focus immediately.

        Fixed the bug by avoiding to set the focus since only selection highlights need to be updated here.
        Also made TemporarySelectionOption an enum class.

        Unfortunately, no new tests since force click testing is broken :( See <rdar://problem/31301721>.

        * editing/Editor.cpp:
        (WebCore::TemporarySelectionChange::TemporarySelectionChange):
        (WebCore::TemporarySelectionChange::~TemporarySelectionChange):
        (WebCore::TemporarySelectionChange::setSelection): Extracted. Fixed the bug by adding
        FrameSelection::DoNotSetFocus to the option when TemporarySelectionOption::DoNotSetFocus is set.
        * editing/Editor.h:
        * page/DragController.cpp:
        (WebCore::DragController::performDragOperation):
        * page/TextIndicator.cpp:
        (WebCore::TextIndicator::createWithRange): Set TemporarySelectionOption::DoNotSetFocus.

2018-11-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WebKit2] Add support for replacing find-in-page text matches
        https://bugs.webkit.org/show_bug.cgi?id=191786
        <rdar://problem/45813871>

        Reviewed by Ryosuke Niwa.

        Add support for replacing Find-in-Page matches. See below for details. Covered by new layout tests as well as a
        new API test.

        Tests: editing/find/find-and-replace-adjacent-words.html
               editing/find/find-and-replace-at-editing-boundary.html
               editing/find/find-and-replace-basic.html
               editing/find/find-and-replace-in-subframes.html
               editing/find/find-and-replace-no-matches.html
               editing/find/find-and-replace-noneditable-matches.html
               editing/find/find-and-replace-replacement-text-input-events.html

        API test: WebKit.FindAndReplace

        * page/Page.cpp:
        (WebCore::replaceRanges):
        (WebCore::Page::replaceRangesWithText):

        Add a helper that, given a list of Ranges, replaces each range with the given text. To do this, we first map
        each Range to editing offsets within the topmost editable root for each Range. This results in a map of editable
        root to list of editing offsets we need to replace. To apply the replacements, for each editable root in the
        map, we iterate over each replacement range (i.e. an offset and length), set the current selection to contain
        that replacement range, and use `Editor::replaceSelectionWithText`. To prevent prior text replacements from
        clobbering the offsets of latter text replacement ranges, we also iterate backwards through text replacement
        ranges when performing each replacement.

        Likewise, we also apply text replacement to each editing container in backwards order: for nodes in the same
        frame, we compare their position in the document, and for nodes in different frames, we instead compare their
        frames in frame tree traversal order.

        We map Ranges to editing offsets and back when performing text replacement because each text replacement may
        split or merge text nodes, which causes adjacent Ranges to shrink or extend while replacing text. In an earlier
        attempt to implement this, I simply iterated over each Range to replace and carried out text replacement for
        each Range. This led to incorrect behavior in some cases, such as replacing adjacent matches. Thus, by computing
        the set of text replacement offsets prior to replacing any text, we're able to target the correct ranges for
        replacement.

        (WebCore::Page::replaceSelectionWithText):

        Add a helper method on Page to replace the current selection with some text. This simply calls out to
        `Editor::replaceSelectionWithText`.

        * page/Page.h:

2018-11-21  Andy Estes  <aestes@apple.com>

        [Cocoa] Create a soft-linking file for PassKit
        https://bugs.webkit.org/show_bug.cgi?id=191875
        <rdar://problem/46203215>

        Reviewed by Myles Maxfield.

        * Modules/applepay/cocoa/PaymentContactCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.
        * Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm: Ditto.
        * SourcesCocoa.txt: Removed @no-unify from PaymentMerchantSessionCocoa.mm.
        * WebCore.xcodeproj/project.pbxproj: Removed PaymentMerchantSessionCocoa.mm from the WebCore target.
        * rendering/RenderThemeCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.

2018-11-21  Zalan Bujtas  <zalan@apple.com>

        [LFC] LayoutState should always be initialized with the initial containing block.
        https://bugs.webkit.org/show_bug.cgi?id=191896

        Reviewed by Antti Koivisto.

        There should always be only one LayoutState per layout tree (it does not mean that layout always starts at the ICB).
        The ICB is a special formatting context root because it does not have a parent formatting context. All the other formatting contexts
        first need to be laid out (partially at least e.g margin) in their parent formatting context.
        Having a non-null parent formatting context as root could lead to undefined behaviour.

        * layout/LayoutFormattingState.cpp:
        (WebCore::Layout::LayoutState::LayoutState):
        (WebCore::Layout::LayoutState::initializeRoot): Deleted.
        * layout/LayoutFormattingState.h:
        * layout/Verification.cpp:
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2018-11-21  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Horizontal margins should be considered as non-breakable space
        https://bugs.webkit.org/show_bug.cgi?id=191894

        Reviewed by Antti Koivisto.

        Like padding and border, horizontal margins also force run breaks and offset them.

        Test: fast/inline/inline-content-with-margin-left-right.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2018-11-20  Ryosuke Niwa  <rniwa@webkit.org>

        Mutation observers doesn't get notified of character data mutation made by the parser
        https://bugs.webkit.org/show_bug.cgi?id=191874

        Reviewed by Antti Koivisto.

        Fixed the bug that CharacterData::parserAppendData was never notifying MutationObserver.

        Test: fast/dom/MutationObserver/observe-parser-character-data-change.html

        * dom/CharacterData.cpp:
        (WebCore::CharacterData::parserAppendData):

2018-11-21  Claudio Saavedra  <csaavedra@igalia.com>

        [SOUP] Follow-up robustness improvements to the certificate decoder
        https://bugs.webkit.org/show_bug.cgi?id=191892

        Reviewed by Michael Catanzaro.

        If at any point the certificate fails to be constructed from
        the DER data, bail out. Likewise, if the certificate returned
        is NULL, return false from the decoder to notify the failure
        to decode it.

        * platform/network/soup/CertificateInfo.h:
        (WTF::Persistence::certificateFromCertificatesDataList):
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):

2018-11-21  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Border should be considered as non-breakable space
        https://bugs.webkit.org/show_bug.cgi?id=191891

        Reviewed by Antti Koivisto.

        Like padding, border also forces run breaks and offsets them.

        Test: fast/inline/inline-content-with-border-left-right.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):

2018-11-21  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Use contains and containsAll in InlineFormattingContext::splitInlineRunIfNeeded consistently
        https://bugs.webkit.org/show_bug.cgi?id=191890

        Rearrange the comment numbers to match the logic below.

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):

2018-11-20  Dean Jackson  <dino@apple.com>

        Move WebGPU platform code to platform/graphics/gpu
        https://bugs.webkit.org/show_bug.cgi?id=191867
        <rdar://problem/46190993>

        Reviewed by Antoine Quint.

        The underlying implementation of WebGPU doesn't need to live in
        Modules, since it technically could be used by other parts of the system. It
        makes more sense for it to be in platform/graphics/gpu.

        Move...
        - Modules/webgpu/GPU* -> platform/graphics/gpu
        - Modules/webgpu/cocoa -> platform/graphics/gpu/cocoa
        - platform/graphics/gpu/GPULegacy* -> platform/graphics/gpu/legacy/
        - platform/graphics/gpu/cocoa/GPULegacy* -> platform/graphics/gpu/legacy/cocoa

        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/gpu/GPUCommandBuffer.h: Renamed from Source/WebCore/Modules/webgpu/GPUCommandBuffer.h.
        * platform/graphics/gpu/GPUDevice.cpp: Renamed from Source/WebCore/Modules/webgpu/GPUDevice.cpp.
        (WebCore::GPUDevice::createShaderModule const):
        (WebCore::GPUDevice::createRenderPipeline const):
        (WebCore::GPUDevice::createCommandBuffer):
        (WebCore::GPUDevice::getQueue):
        * platform/graphics/gpu/GPUDevice.h: Renamed from Source/WebCore/Modules/webgpu/GPUDevice.h.
        (WebCore::GPUDevice::platformDevice const):
        * platform/graphics/gpu/GPUPipelineDescriptorBase.h: Renamed from Source/WebCore/Modules/webgpu/GPUPipelineDescriptorBase.h.
        * platform/graphics/gpu/GPUPipelineStageDescriptor.h: Renamed from Source/WebCore/Modules/webgpu/GPUPipelineStageDescriptor.h.
        * platform/graphics/gpu/GPUQueue.h: Renamed from Source/WebCore/Modules/webgpu/GPUQueue.h.
        (WebCore::GPUQueue::platformQueue const):
        * platform/graphics/gpu/GPURenderPipeline.h: Renamed from Source/WebCore/Modules/webgpu/GPURenderPipeline.h.
        (WebCore::GPURenderPipeline::platformRenderPipeline const):
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Renamed from Source/WebCore/Modules/webgpu/GPURenderPipelineDescriptor.h.
        * platform/graphics/gpu/GPUShaderModule.h: Renamed from Source/WebCore/Modules/webgpu/GPUShaderModule.h.
        (WebCore::GPUShaderModule::platformShaderModule const):
        * platform/graphics/gpu/GPUShaderModuleDescriptor.h: Renamed from Source/WebCore/Modules/webgpu/GPUShaderModuleDescriptor.h.
        * platform/graphics/gpu/GPUSwapChain.h: Renamed from Source/WebCore/Modules/webgpu/GPUSwapChain.h.
        (WebCore::GPUSwapChain::platformLayer const):
        * platform/graphics/gpu/GPUTexture.h: Renamed from Source/WebCore/Modules/webgpu/GPUTexture.h.
        * platform/graphics/gpu/GPUTextureFormatEnum.h: Renamed from Source/WebCore/Modules/webgpu/GPUTextureFormatEnum.h.
        * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUCommandBufferMetal.mm.
        (WebCore::GPUCommandBuffer::create):
        (WebCore::GPUCommandBuffer::GPUCommandBuffer):
        * platform/graphics/gpu/cocoa/GPUDeviceMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUDeviceMetal.mm.
        (WebCore::GPUDevice::create):
        (WebCore::GPUDevice::GPUDevice):
        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUQueueMetal.mm.
        (WebCore::GPUQueue::create):
        (WebCore::GPUQueue::GPUQueue):
        * platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm.
        (WebCore::setFunctionsForPipelineDescriptor):
        (WebCore::GPURenderPipeline::create):
        (WebCore::GPURenderPipeline::GPURenderPipeline):
        * platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUShaderModuleMetal.mm.
        (WebCore::GPUShaderModule::create):
        (WebCore::GPUShaderModule::GPUShaderModule):
        * platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUSwapChainMetal.mm.
        (WebCore::GPUSwapChain::create):
        (WebCore::GPUSwapChain::GPUSwapChain):
        (WebCore::GPUSwapChain::setDevice):
        (WebCore::platformTextureFormatForGPUTextureFormat):
        (WebCore::GPUSwapChain::setFormat):
        (WebCore::GPUSwapChain::reshape):
        (WebCore::GPUSwapChain::getNextTexture):
        (WebCore::GPUSwapChain::present):
        * platform/graphics/gpu/cocoa/GPUTextureMetal.mm: Renamed from Source/WebCore/Modules/webgpu/cocoa/GPUTextureMetal.mm.
        (WebCore::GPUTexture::create):
        (WebCore::GPUTexture::GPUTexture):
        (WebCore::GPUTexture::createDefaultTextureView):
        * platform/graphics/gpu/legacy/GPULegacyBuffer.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyBuffer.cpp.
        (WebCore::GPULegacyBuffer::~GPULegacyBuffer):
        (WebCore::GPULegacyBuffer::length const):
        * platform/graphics/gpu/legacy/GPULegacyBuffer.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyBuffer.h.
        (WebCore::GPULegacyBuffer::contents const):
        (WebCore::GPULegacyBuffer::metal const):
        * platform/graphics/gpu/legacy/GPULegacyCommandBuffer.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyCommandBuffer.cpp.
        (WebCore::GPULegacyCommandBuffer::~GPULegacyCommandBuffer):
        * platform/graphics/gpu/legacy/GPULegacyCommandBuffer.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyCommandBuffer.h.
        (WebCore::GPULegacyCommandBuffer::metal const):
        * platform/graphics/gpu/legacy/GPULegacyCommandQueue.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyCommandQueue.cpp.
        (WebCore::GPULegacyCommandQueue::~GPULegacyCommandQueue):
        * platform/graphics/gpu/legacy/GPULegacyCommandQueue.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyCommandQueue.h.
        (WebCore::GPULegacyCommandQueue::metal const):
        * platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyComputeCommandEncoder.cpp.
        (WebCore::GPULegacyComputeCommandEncoder::~GPULegacyComputeCommandEncoder):
        * platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyComputeCommandEncoder.h.
        * platform/graphics/gpu/legacy/GPULegacyComputePipelineState.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyComputePipelineState.cpp.
        (WebCore::GPULegacyComputePipelineState::~GPULegacyComputePipelineState):
        * platform/graphics/gpu/legacy/GPULegacyComputePipelineState.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyComputePipelineState.h.
        (WebCore::GPULegacyComputePipelineState::metal const):
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDepthStencilDescriptor.cpp.
        (WebCore::GPULegacyDepthStencilDescriptor::~GPULegacyDepthStencilDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDepthStencilDescriptor.h.
        (WebCore::GPULegacyDepthStencilDescriptor::metal const):
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilState.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDepthStencilState.cpp.
        (WebCore::GPULegacyDepthStencilState::~GPULegacyDepthStencilState):
        * platform/graphics/gpu/legacy/GPULegacyDepthStencilState.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDepthStencilState.h.
        (WebCore::GPULegacyDepthStencilState::metal const):
        * platform/graphics/gpu/legacy/GPULegacyDevice.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDevice.cpp.
        (WebCore::GPULegacyDevice::~GPULegacyDevice):
        * platform/graphics/gpu/legacy/GPULegacyDevice.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDevice.h.
        (WebCore::GPULegacyDevice::layer const):
        (WebCore::GPULegacyDevice::metal const):
        (WebCore::GPULegacyDevice::markLayerComposited const):
        * platform/graphics/gpu/legacy/GPULegacyDrawable.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDrawable.cpp.
        (WebCore::GPULegacyDrawable::~GPULegacyDrawable):
        * platform/graphics/gpu/legacy/GPULegacyDrawable.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyDrawable.h.
        * platform/graphics/gpu/legacy/GPULegacyEnums.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyEnums.h.
        * platform/graphics/gpu/legacy/GPULegacyFunction.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyFunction.cpp.
        (WebCore::GPULegacyFunction::~GPULegacyFunction):
        * platform/graphics/gpu/legacy/GPULegacyFunction.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyFunction.h.
        (WebCore::GPULegacyFunction::metal const):
        * platform/graphics/gpu/legacy/GPULegacyLibrary.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyLibrary.cpp.
        (WebCore::GPULegacyLibrary::~GPULegacyLibrary):
        * platform/graphics/gpu/legacy/GPULegacyLibrary.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyLibrary.h.
        (WebCore::GPULegacyLibrary::metal const):
        * platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderCommandEncoder.cpp.
        (WebCore::GPULegacyRenderCommandEncoder::~GPULegacyRenderCommandEncoder):
        * platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderCommandEncoder.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassAttachmentDescriptor.cpp.
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::~GPULegacyRenderPassAttachmentDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassAttachmentDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassColorAttachmentDescriptor.cpp.
        (WebCore::GPULegacyRenderPassColorAttachmentDescriptor::~GPULegacyRenderPassColorAttachmentDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassColorAttachmentDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassDepthAttachmentDescriptor.cpp.
        (WebCore::GPULegacyRenderPassDepthAttachmentDescriptor::~GPULegacyRenderPassDepthAttachmentDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassDepthAttachmentDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassDescriptor.cpp.
        (WebCore::GPULegacyRenderPassDescriptor::~GPULegacyRenderPassDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPassDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp.
        (WebCore::GPULegacyRenderPipelineColorAttachmentDescriptor::~GPULegacyRenderPipelineColorAttachmentDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineColorAttachmentDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineDescriptor.cpp.
        (WebCore::GPULegacyRenderPipelineDescriptor::~GPULegacyRenderPipelineDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineDescriptor.h.
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineState.cpp.
        (WebCore::GPULegacyRenderPipelineState::~GPULegacyRenderPipelineState):
        * platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyRenderPipelineState.h.
        * platform/graphics/gpu/legacy/GPULegacySize.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacySize.h.
        * platform/graphics/gpu/legacy/GPULegacyTexture.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyTexture.cpp.
        (WebCore::GPULegacyTexture::~GPULegacyTexture):
        * platform/graphics/gpu/legacy/GPULegacyTexture.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyTexture.h.
        * platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.cpp: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyTextureDescriptor.cpp.
        (WebCore::GPULegacyTextureDescriptor::~GPULegacyTextureDescriptor):
        * platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPULegacyTextureDescriptor.h.
        * platform/graphics/gpu/legacy/cocoa/GPULegacyBufferMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyBufferMetal.mm.
        (WebCore::GPULegacyBuffer::GPULegacyBuffer):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyCommandBufferMetal.mm.
        (WebCore::GPULegacyCommandBuffer::GPULegacyCommandBuffer):
        (WebCore::GPULegacyCommandBuffer::presentDrawable const):
        (WebCore::GPULegacyCommandBuffer::commit const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyCommandQueueMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyCommandQueueMetal.mm.
        (WebCore::GPULegacyCommandQueue::GPULegacyCommandQueue):
        (WebCore::GPULegacyCommandQueue::label const):
        (WebCore::GPULegacyCommandQueue::setLabel const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyComputeCommandEncoderMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyComputeCommandEncoderMetal.mm.
        (WebCore::MTLSizeMake):
        (WebCore::GPULegacyComputeCommandEncoder::GPULegacyComputeCommandEncoder):
        (WebCore::GPULegacyComputeCommandEncoder::setComputePipelineState const):
        (WebCore::GPULegacyComputeCommandEncoder::setBuffer const):
        (WebCore::GPULegacyComputeCommandEncoder::dispatch const):
        (WebCore::GPULegacyComputeCommandEncoder::endEncoding const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyComputePipelineStateMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyComputePipelineStateMetal.mm.
        (WebCore::GPULegacyComputePipelineState::GPULegacyComputePipelineState):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyDepthStencilDescriptorMetal.mm.
        (WebCore::GPULegacyDepthStencilDescriptor::GPULegacyDepthStencilDescriptor):
        (WebCore::GPULegacyDepthStencilDescriptor::depthWriteEnabled const):
        (WebCore::GPULegacyDepthStencilDescriptor::setDepthWriteEnabled const):
        (WebCore::GPULegacyDepthStencilDescriptor::depthCompareFunction const):
        (WebCore::GPULegacyDepthStencilDescriptor::setDepthCompareFunction const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilStateMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyDepthStencilStateMetal.mm.
        (WebCore::GPULegacyDepthStencilState::GPULegacyDepthStencilState):
        (WebCore::GPULegacyDepthStencilState::label const):
        (WebCore::GPULegacyDepthStencilState::setLabel const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDeviceMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyDeviceMetal.mm.
        (WebCore::GPULegacyDevice::GPULegacyDevice):
        (WebCore::GPULegacyDevice::disconnect):
        (WebCore::GPULegacyDevice::reshape const):
        (WebCore::GPULegacyDevice::platformLayer const):
        (WebCore::GPULegacyDevice::operator! const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyDrawableMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyDrawableMetal.mm.
        (WebCore::GPULegacyDrawable::GPULegacyDrawable):
        (WebCore::GPULegacyDrawable::release):
        (WebCore::GPULegacyDrawable::metal const):
        (WebCore::GPULegacyDrawable::texture const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyFunctionMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyFunctionMetal.mm.
        (WebCore::GPULegacyFunction::GPULegacyFunction):
        (WebCore::GPULegacyFunction::name const):
        (WebCore::GPULegacyFunction::operator! const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyLibraryMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyLibraryMetal.mm.
        (WebCore::GPULegacyLibrary::GPULegacyLibrary):
        (WebCore::GPULegacyLibrary::label const):
        (WebCore::GPULegacyLibrary::setLabel const):
        (WebCore::GPULegacyLibrary::functionNames const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderCommandEncoderMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderCommandEncoderMetal.mm.
        (WebCore::GPULegacyRenderCommandEncoder::GPULegacyRenderCommandEncoder):
        (WebCore::GPULegacyRenderCommandEncoder::setRenderPipelineState const):
        (WebCore::GPULegacyRenderCommandEncoder::setDepthStencilState const):
        (WebCore::GPULegacyRenderCommandEncoder::setVertexBuffer const):
        (WebCore::GPULegacyRenderCommandEncoder::setFragmentBuffer const):
        (WebCore::GPULegacyRenderCommandEncoder::drawPrimitives const):
        (WebCore::GPULegacyRenderCommandEncoder::endEncoding const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassAttachmentDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPassAttachmentDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::GPULegacyRenderPassAttachmentDescriptor):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::loadAction const):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::setLoadAction const):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::storeAction const):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::setStoreAction const):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::setTexture const):
        (WebCore::GPULegacyRenderPassAttachmentDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPassColorAttachmentDescriptor::GPULegacyRenderPassColorAttachmentDescriptor):
        (WebCore::GPULegacyRenderPassColorAttachmentDescriptor::clearColor const):
        (WebCore::GPULegacyRenderPassColorAttachmentDescriptor::setClearColor const):
        (WebCore::GPULegacyRenderPassColorAttachmentDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPassDepthAttachmentDescriptor::GPULegacyRenderPassDepthAttachmentDescriptor):
        (WebCore::GPULegacyRenderPassDepthAttachmentDescriptor::clearDepth const):
        (WebCore::GPULegacyRenderPassDepthAttachmentDescriptor::setClearDepth const):
        (WebCore::GPULegacyRenderPassDepthAttachmentDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPassDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPassDescriptor::GPULegacyRenderPassDescriptor):
        (WebCore::GPULegacyRenderPassDescriptor::colorAttachments const):
        (WebCore::GPULegacyRenderPassDescriptor::depthAttachment const):
        (WebCore::GPULegacyRenderPassDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPipelineColorAttachmentDescriptor::GPULegacyRenderPipelineColorAttachmentDescriptor):
        (WebCore::GPULegacyRenderPipelineColorAttachmentDescriptor::pixelFormat const):
        (WebCore::GPULegacyRenderPipelineColorAttachmentDescriptor::setPixelFormat const):
        (WebCore::GPULegacyRenderPipelineColorAttachmentDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPipelineDescriptorMetal.mm.
        (WebCore::GPULegacyRenderPipelineDescriptor::GPULegacyRenderPipelineDescriptor):
        (WebCore::GPULegacyRenderPipelineDescriptor::depthAttachmentPixelFormat const):
        (WebCore::GPULegacyRenderPipelineDescriptor::setDepthAttachmentPixelFormat const):
        (WebCore::GPULegacyRenderPipelineDescriptor::setVertexFunction const):
        (WebCore::GPULegacyRenderPipelineDescriptor::setFragmentFunction const):
        (WebCore::GPULegacyRenderPipelineDescriptor::colorAttachments const):
        (WebCore::GPULegacyRenderPipelineDescriptor::reset const):
        (WebCore::GPULegacyRenderPipelineDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineStateMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyRenderPipelineStateMetal.mm.
        (WebCore::GPULegacyRenderPipelineState::GPULegacyRenderPipelineState):
        (WebCore::GPULegacyRenderPipelineState::label const):
        (WebCore::GPULegacyRenderPipelineState::setLabel const):
        (WebCore::GPULegacyRenderPipelineState::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyTextureDescriptorMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyTextureDescriptorMetal.mm.
        (WebCore::GPULegacyTextureDescriptor::GPULegacyTextureDescriptor):
        (WebCore::GPULegacyTextureDescriptor::width const):
        (WebCore::GPULegacyTextureDescriptor::setWidth const):
        (WebCore::GPULegacyTextureDescriptor::height const):
        (WebCore::GPULegacyTextureDescriptor::setHeight const):
        (WebCore::GPULegacyTextureDescriptor::sampleCount const):
        (WebCore::GPULegacyTextureDescriptor::setSampleCount const):
        (WebCore::GPULegacyTextureDescriptor::textureType const):
        (WebCore::GPULegacyTextureDescriptor::setTextureType const):
        (WebCore::GPULegacyTextureDescriptor::storageMode const):
        (WebCore::GPULegacyTextureDescriptor::setStorageMode const):
        (WebCore::GPULegacyTextureDescriptor::usage const):
        (WebCore::GPULegacyTextureDescriptor::setUsage const):
        (WebCore::GPULegacyTextureDescriptor::metal const):
        * platform/graphics/gpu/legacy/cocoa/GPULegacyTextureMetal.mm: Renamed from Source/WebCore/platform/graphics/metal/GPULegacyTextureMetal.mm.
        (WebCore::GPULegacyTexture::GPULegacyTexture):
        (WebCore::GPULegacyTexture::width const):
        (WebCore::GPULegacyTexture::height const):
        (WebCore::GPULegacyTexture::metal const):

2018-11-21  Adrian Perez de Castro  <aperez@igalia.com>

        [SOUP] Certificate decoder always returns GByteArray with zero size
        https://bugs.webkit.org/show_bug.cgi?id=191888

        Reviewed by Žan Doberšek.

        No new tests needed.

        * platform/network/soup/CertificateInfo.h:
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::decode): Add missing
        call to g_byte_array_set_size() to make sure byteArray->len has the
        correct value.

2018-11-21  Zalan Butjas  <zalan@apple.com>

        [LFC][IFC] Take nonBreakableStart/End into use.
        https://bugs.webkit.org/show_bug.cgi?id=191873

        Reviewed by Antti Koivisto.

        Offset the final inline runs with the nonBreakableStart/End values.
        (This patch also fixes relative positioned run verification.)

        Test: fast/inline/inline-content-with-padding-left-right.html

        * layout/Verification.cpp:
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):

2018-11-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r237845): [cairo] Hyperlink underscore layout issue
        https://bugs.webkit.org/show_bug.cgi?id=191630

        Reviewed by Michael Catanzaro.

        Only flip Y in GlyphToPathTranslator for ports using CG.

        * platform/graphics/FontCascade.cpp:
        (WebCore::GlyphToPathTranslator::GlyphToPathTranslator):

2018-11-21  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Refactor AppendPipeline deinitialization
        https://bugs.webkit.org/show_bug.cgi?id=191759

        Reviewed by Xabier Rodriguez-Calvar.

        AppendPipeline currently has a method, clearPlayerPrivate(), that the
        client code uses to deinitialize most of the AppendPipeline... just
        before actually destructing it in the next line of code.

        Since at that point there should not be alive RefPtr's pointing to the
        AppendPipeline there is no need for this kind of pre-deinitialization
        in this usage pattern. Instead, we can just rely on C++ destructors,
        cleaning the code a bit and removing the potential for the question
        "what if `clearPlayerPrivate() has been called before?`": it has not.

        Assertions have been added to ensure that there is only one alive
        RefPtr pointing to AppendPipeline, therefore guaranteeing its immediate
        destruction.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::~AppendPipeline):
        (WebCore::AppendPipeline::deinitialize):
        (WebCore::AppendPipeline::clearPlayerPrivate): Deleted.
        * platform/graphics/gstreamer/mse/AppendPipeline.h:
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::~MediaPlayerPrivateGStreamerMSE):
        * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
        (WebCore::MediaSourceClientGStreamerMSE::removedFromMediaSource):

2018-11-20  Dean Jackson  <dino@apple.com>

        Removing using namespace WebCore from WebLayer
        https://bugs.webkit.org/show_bug.cgi?id=191870
        <rdar://problem/46192206>

        Rubber-stamped by Sam Weinig.

        Remove "using namespace WebCore" from WebLayer.mm
        because it will cause type clashes in unified source
        builds.

        * platform/graphics/mac/WebLayer.mm:
        (-[WebLayer drawInContext:]):
        (-[WebSimpleLayer setNeedsDisplay]):
        (-[WebSimpleLayer setNeedsDisplayInRect:]):
        (-[WebSimpleLayer display]):
        (-[WebSimpleLayer drawInContext:]):

2018-11-20  Ryosuke Niwa  <rniwa@webkit.org>

        Input element gains focus when a selectstart event listener on document prevents the default action
        https://bugs.webkit.org/show_bug.cgi?id=191714
        <rdar://problem/46174389>

        Reviewed by Antti Koivisto.

        The bug was caused by WebKit keep firing selectstart upon mousemove after the drag had already started
        when preventDefault had been called in the previous firings of selectstart event. Because input element
        has its own editable element and fires selectstart on the input element itself, which won't be prevented
        by selectstart on docuemnt, this allowed the selection to be set inside the input element even though
        the mouse cursor was simply passing over the input element after the drag had already started.

        Fixed the bug by not firing selectstart if the default action had been prevented by the initial firing
        of selectstart by setting m_mouseDownMayStartDrag to false. This also matches the behaviors of Chrome
        and Firefox.

        Test: fast/events/selectstart-prevent-default-should-not-focus-input.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart):
        (WebCore::EventHandler::updateSelectionForMouseDrag):

2018-11-20  Christopher Reid  <chris.reid@sony.com>

        Remove the need for LocalizedStringsWPE.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191854

        Reviewed by Michael Catanzaro.

        No change in behavior.

        Consolidate "Search the Web" as the default search context menu text on non-COCOA ports.

        GTK, WPE, and non-CF WIN all had the same default localizedString function
        of String::fromUTF8. Move that to LocalizedString.cpp as the default implementation
        for all ports not using CF.

        * en.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        * platform/gtk/LocalizedStringsGtk.cpp:
        * platform/win/LocalizedStringsWin.cpp:
        * platform/wpe/LocalizedStringsWPE.cpp: Removed.

2018-11-20  Zan Dobersek  <zdobersek@igalia.com>

        Segfaults on https://terminalizer.com/
        https://bugs.webkit.org/show_bug.cgi?id=191805

        Reviewed by Michael Catanzaro.

        In HarfBuzzFace, the CacheEntry's HashMap object that caches Unicode
        codepoints and their corresponding glyph indices should allow zero
        values as valid keys since zero is a valid Unicode codepoint.

        This change enables properly caching zero codepoints, avoiding
        repetitive additions to the HashMap cache that end up in a crash.

        * platform/graphics/harfbuzz/HarfBuzzFace.h: Move the elongated
        GlyphCache type alias to the public section of HarfBuzzFace class
        declaration, making it reusable in the helper HarfBuzzFontData struct.
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:

2018-11-20  Antti Koivisto  <antti@apple.com>

        Update hover state in composed tree
        https://bugs.webkit.org/show_bug.cgi?id=191860

        Reviewed by Zalan Bujtas.

        The code was already mostly switched over from render tree to composed tree.
        This patch replaces the remaining common ancestor search code with a DOM based equivalent.

        * dom/Document.cpp:
        (WebCore::findNearestCommonComposedAncestor):
        (WebCore::Document::updateHoverActiveState):
        (WebCore::nearestCommonHoverAncestor): Deleted.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::hoverAncestor const): Deleted.
        * rendering/RenderBlock.h:
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::hoverAncestor const): Deleted.

        No longer needed.

        * rendering/RenderElement.h:

2018-11-20  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Measure run with non-breakable start/end.
        https://bugs.webkit.org/show_bug.cgi?id=191850

        Reviewed by Antti Koivisto.

        Line breaking needs to know the complete width of the run including padding etc.

        * layout/Verification.cpp:
        (WebCore::Layout::collectFlowBoxSubtree):
        (WebCore::Layout::collectInlineBoxes):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::runWidth):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::InlineLineBreaker):
        (WebCore::Layout::InlineLineBreaker::runWidth const):
        (WebCore::Layout::InlineLineBreaker::textWidth const):
        * layout/inlineformatting/InlineLineBreaker.h:
        * layout/inlineformatting/text/TextUtil.cpp:
        (WebCore::Layout::TextUtil::hyphenPositionBefore):
        (WebCore::Layout::TextUtil::width):
        (WebCore::Layout::TextUtil::fixedPitchWidth):
        (WebCore::Layout::TextUtil::TextUtil): Deleted.
        (WebCore::Layout::TextUtil::width const): Deleted.
        (WebCore::Layout::TextUtil::hyphenPositionBefore const): Deleted.
        (WebCore::Layout::TextUtil::textWidth const): Deleted.
        (WebCore::Layout::TextUtil::fixedPitchWidth const): Deleted.
        * layout/inlineformatting/text/TextUtil.h:

2018-11-20  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] InlineFormattingContext::Line should hold the list of runs for the current line.
        https://bugs.webkit.org/show_bug.cgi?id=191845

        Reviewed by Antti Koivisto.

        Collect the runs in InlineFormattingContext::Line and transfer them to InlineFormattingState during line closing.
        (In the most common cases, this is only one extra vector::append() call.)

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::createFinalRuns const):
        (WebCore::Layout::InlineFormattingContext::postProcessInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::closeLine const):
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::InlineFormattingContext::splitInlineRunsIfNeeded const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::hasContent const):
        (WebCore::Layout::InlineFormattingContext::Line::runs):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::justifyRuns):
        (WebCore::Layout::InlineFormattingContext::Geometry::computeExpansionOpportunities):
        (WebCore::Layout::InlineFormattingContext::Geometry::alignRuns):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight const):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):
        (WebCore::Layout::InlineFormattingContext::Line::Line): Deleted.

2018-11-20  Zalan Butjas  <zalan@apple.com>

        [LFC][IFC] Introduce InlineItem::nonBreakableStart/End
        https://bugs.webkit.org/show_bug.cgi?id=191839

        Reviewed by Antti Koivisto.

        Non-breakable start/end marks margin/padding/border space (even when it does not directly come from the associated layout box)

        <span style="padding: 5px"><span>nested content with padding parent</span</span>
        <nested content with padding parent> <- inline run has 5px non-breakable start/end.

        <span style="border: 5px solid green"><span style="padding-right: 10px; margin-right: 1px">1</span>2</span><span>    3</span>
        <1> <- inline run has 5px non-breakable start and 11px non-breakable end.
        <2> <- inline run has 0px non-breakable start and 5px non-breakable end.
        <3> <- no non-breakable values.

        This is what the runs look like (input to line breaking)
        <     1           2     >
        < > (whitespace)
        <3>
        The line breaking treats the paddding/border etc space as part of the run and as non-breaking opportunity.
        With the given runs the first position where we can break the line is at the whitespace.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineItem.h:
        (WebCore::Layout::InlineItem::nonBreakableStart const):
        (WebCore::Layout::InlineItem::nonBreakableEnd const):
        (WebCore::Layout::InlineItem::addNonBreakableStart):
        (WebCore::Layout::InlineItem::addNonBreakableEnd):

2018-11-20  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move detaching rules from InlineFormattingState to InlineItem
        https://bugs.webkit.org/show_bug.cgi?id=191838

        Reviewed by Antti Koivisto.

        This is in preparation for adding more context to InlineItem. In addition to
        detaching rules it will also hold non-breakable start/end information.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::addDetachingRule): Deleted.
        (WebCore::Layout::InlineFormattingState::detachingRules const): Deleted.
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::setDetachingRules): Deleted.
        * layout/inlineformatting/InlineItem.h:
        (WebCore::Layout::InlineItem::addDetachingRule):
        (WebCore::Layout::InlineItem::detachingRules const):

2018-11-20  Zalan Bujjtas  <zalan@apple.com>

        [LFC][IFC] InlineRunProvider::append() should just take const InlineItem&.
        https://bugs.webkit.org/show_bug.cgi?id=191837

        Reviewed by Antti Koivisto.

        This allows us to remove the InlineFormattingState dependency as well.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineRunProvider.cpp:
        (WebCore::Layout::InlineRunProvider::InlineRunProvider):
        (WebCore::Layout::InlineRunProvider::append):
        * layout/inlineformatting/InlineRunProvider.h:

2018-11-20  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Enhance debugging by making sure to print the pipeline in MediaPlayerPrivateGStreamer
        https://bugs.webkit.org/show_bug.cgi?id=191586

        Reviewed by Xabier Rodriguez-Calvar.

        This is minor changes that do not require tests.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::setAudioStreamProperties):
        (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
        (WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::commitLoad):
        (WebCore::MediaPlayerPrivateGStreamer::readyTimerFired):
        (WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
        (WebCore::MediaPlayerPrivateGStreamer::prepareToPlay):
        (WebCore::MediaPlayerPrivateGStreamer::play):
        (WebCore::MediaPlayerPrivateGStreamer::pause):
        (WebCore::MediaPlayerPrivateGStreamer::durationMediaTime const):
        (WebCore::MediaPlayerPrivateGStreamer::seek):
        (WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
        (WebCore::MediaPlayerPrivateGStreamer::paused const):
        (WebCore::MediaPlayerPrivateGStreamer::enableTrack):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        (WebCore::MediaPlayerPrivateGStreamer::processBufferingStats):
        (WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
        (WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):
        (WebCore::MediaPlayerPrivateGStreamer::totalBytes const):
        (WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback):
        (WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback):
        (WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
        (WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
        (WebCore::MediaPlayerPrivateGStreamer::updateStates):
        (WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
        (WebCore::MediaPlayerPrivateGStreamer::didEnd):
        (WebCore::MediaPlayerPrivateGStreamer::setDownloadBuffering):
        (WebCore::MediaPlayerPrivateGStreamer::setPreload):
        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

2018-11-20  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Consider scrollbars in populateGridPositionsForDirection()
        https://bugs.webkit.org/show_bug.cgi?id=191656

        Reviewed by Javier Fernandez.

        We never care about scrollbars in RenderGrid::populateGridPositionsForDirection(),
        that's fine if the scrollbars are at the end (e.g. on the right in horizontal writing mode and LTR direction)
        but it causes problems when they're at the beginning (e.g. on the left in horizontal writing mode and RTL direction).

        The patch modifies the method so it takes into account scrollbar size
        in order to compute the position of the columns/rows depending on the direction and the writing mode.

        Tests: imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::populateGridPositionsForDirection):

2018-11-19  Ryosuke Niwa  <rniwa@webkit.org>

        Click on node assigned to slot in button's shadow cause loss of button focus
        https://bugs.webkit.org/show_bug.cgi?id=191694
        <rdar://problem/46107920>

        Reviewed by Wenson Hsieh.

        Fixed the bug by traversing the parent in the composed tree when looking for an element to focus.

        Test: fast/shadow-dom/focus-slot-parent.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::dispatchMouseEvent): Fixed the bug. Also use RefPtr instead of a raw pointer.

2018-11-19  Fujii Hironori  <Hironori.Fujii@sony.com>

        REGRESSION(r238350) [curl] CertificateInfo.h: error: template specialization requires 'template<>'
        https://bugs.webkit.org/show_bug.cgi?id=191849

        Unreviewed build fix for clang-cl builds.

        No new tests because there's no behaviour change.

        * platform/network/curl/CertificateInfo.h:
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):

2018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for CertificateInfo.
        https://bugs.webkit.org/show_bug.cgi?id=191647

        Reviewed by Alex Christensen.

        Minor changes for WebKit API.

        Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp

        * platform/network/curl/CertificateInfo.h:
        * platform/network/curl/CertificateInfoCurl.cpp:
        (WebCore::CertificateInfo::CertificateInfo):
        (WebCore::CertificateInfo::makeCertificate):
        * platform/network/curl/CurlSSLVerifier.cpp:
        (WebCore::BIOHolder::asCertificate):

2018-11-19  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Begin implementing WebGPUTexture, WebGPUTextureView, and WebGPUTextureFormatEnum, and WebGPUSwapChain::configure upgrades
        https://bugs.webkit.org/show_bug.cgi?id=191794

        Reviewed by Dean Jackson.

        Test: webgpu/textures-textureviews.html

        Implement basic functionality for getting the next WebGPUTexture and TextureView from the WebGPURenderingContext
        to use as a render destination for the next draw call. Also introduce WebGPUTextureFormatEnum and the ability to 
        configure the context with a chosen texture format. 

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/GPUSwapChain.h: Texture/Pixel format can now be set.
        * Modules/webgpu/GPUTexture.h: Added. Interface to a MTLTexture.
        * Modules/webgpu/GPUTextureFormatEnum.h: Added.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createRenderPipeline const): Removed now-unnecessary enum class cast.
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h: Rather than duplicate GPURenderPipelineDescriptor::PrimitiveTopology, alias to it.
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::configure): Can now specify a specific texture format for the underlying CAMetalLayer.
        (WebCore::WebGPUSwapChain::getNextTexture): Added. Request the next drawable texture.
        * Modules/webgpu/WebGPUSwapChain.h: Expose getNextTexture().
        * Modules/webgpu/WebGPUSwapChain.idl:
        * Modules/webgpu/WebGPUTexture.cpp: Added. 
        (WebCore::WebGPUTexture::create):
        (WebCore::WebGPUTexture::WebGPUTexture):
        (WebCore::WebGPUTexture::createDefaultTextureView):
        * Modules/webgpu/WebGPUTexture.h: Added.
        * Modules/webgpu/WebGPUTexture.idl: Added.
        * Modules/webgpu/WebGPUTextureFormatEnum.h: Added. Type alias for GPUTextureFormatEnum.
        * Modules/webgpu/WebGPUTextureFormatEnum.idl: Added. Used to represent any texture format used by WebGPU.
        * Modules/webgpu/WebGPUTextureView.cpp: Added.
        (WebCore::WebGPUTextureView::create):
        (WebCore::WebGPUTextureView::WebGPUTextureView):
        * Modules/webgpu/WebGPUTextureView.h: Added.
        * Modules/webgpu/WebGPUTextureView.idl: Added.
        * Modules/webgpu/cocoa/GPUSwapChainMetal.mm: 
        (WebCore::GPUSwapChain::create):
        (WebCore::GPUSwapChain::setFormat): Called by WebGPUSwapChain::configure().
        (WebCore::GPUSwapChain::getNextTexture):
        * Modules/webgpu/cocoa/GPUTextureFormatEnumMetal.mm: Added.
        (WebCore::convertAndValidate): Convert the WebGPUTextureFormatEnum to a MTLPixelFormat.
        * Modules/webgpu/cocoa/GPUTextureMetal.mm: Added.
        (WebCore::GPUTexture::create):
        (WebCore::GPUTexture::GPUTexture):
        (WebCore::GPUTexture::createDefaultTextureView): Uses the pixelFormat of the original texture.
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Reload Web Inspector" button no longer partially works
        https://bugs.webkit.org/show_bug.cgi?id=191773
        <rdar://problem/46139932>

        Reviewed by Devin Rousso.

        * inspector/InspectorFrontendClient.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::reopen):
        * inspector/InspectorFrontendHost.h:
        * inspector/InspectorFrontendHost.idl:
        Provide a host call to reopen an inspector window to reload it.

        * testing/Internals.cpp:
        Stub implementation, this is not used in tests.

2018-11-19  Rob Buis  <rbuis@igalia.com>

        Setting document.title should have no effect for non SVG/HTML documents
        https://bugs.webkit.org/show_bug.cgi?id=191643

        Reviewed by Chris Dumez.

        Setting document.title should have no effect for non SVG/HTML documents,
        see https://html.spec.whatwg.org/multipage/dom.html#document.title.

        Behavior matches Firefox and Chrome.

        Test: imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-not-in-html-svg.html

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

2018-11-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        Dragging image with a border-image larger than the image element crashes
        https://bugs.webkit.org/show_bug.cgi?id=191817
        <rdar://problem/46159222>

        Reviewed by Ryosuke Niwa.

        When dragging an image element, if the image element has:

        (1) box-sizing: border-box;
        (2) a border-image
        (3) a border-top-width that is at least as large as the height of the element and/or a border-left-width that is
            at least as large as the width of the element

        ...then upon drag, we will fail to create a suitable drag image using the bounding box of the image element
        since the size is empty, thereby causing a crash. To fix this, we bail out of this bounding-rect-dependent
        codepath for generating a drag image in the case where the bounding rect is empty, and instead fall back to an
        icon representation for the drag image.

        Test: fast/events/drag-image-with-border-image.html

        * page/DragController.cpp:
        (WebCore::DragController::doImageDrag):

2018-11-18  Zan Dobersek  <zdobersek@igalia.com>

        HarfBuzzFace::CacheEntry should use 32-bit values in its HashMap
        https://bugs.webkit.org/show_bug.cgi?id=191825

        Reviewed by Michael Catanzaro.

        The HashMap-based glyph cache contained in HarfBuzzFace::CacheEntry
        objects is used to map given Unicode codepoints to corresponding
        glyph indices (which occurs in the harfBuzzGetGlyph() function that's
        invoked by HarfBuzz).

        The 16-bit unsigned integer as the map's value type is not enough here
        when the glyph index mapping is done through Freetype -- its API returns
        32-bit glyph indices, and Cairo assigns this value to the 64-bit
        unsigned index variable in the cairo_glyph_t struct. The value type is
        thus bumped to 32 bits to match the unsigned type size of the index's
        origin.

        * platform/graphics/harfbuzz/HarfBuzzFace.h:
        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:

2018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
        https://bugs.webkit.org/show_bug.cgi?id=191819

        Reviewed by Dan Bernstein.

        Replace UIItemProvider (and related classes) with NSItemProvider.

        * platform/ios/PlatformPasteboardIOS.mm:
        (WebCore::registerItemToPasteboard):
        * platform/ios/WebItemProviderPasteboard.h:
        * platform/ios/WebItemProviderPasteboard.mm:
        (-[WebItemProviderDataRegistrar registerItemProvider:]):
        (-[WebItemProviderWritableObjectRegistrar initWithObject:]):
        (-[WebItemProviderWritableObjectRegistrar representingObject]):
        (-[WebItemProviderWritableObjectRegistrar registerItemProvider:]):
        (-[WebItemProviderRegistrationInfoList addRepresentingObject:]):
        (-[WebItemProviderRegistrationInfoList itemProvider]):
        (-[WebItemProviderPasteboard pasteboardTypes]):
        (-[WebItemProviderPasteboard _preLoadedDataConformingToType:forItemProviderAtIndex:]):
        (-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
        (allLoadableClasses):
        (classForTypeIdentifier):
        (-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
        (-[WebItemProviderPasteboard numberOfFiles]):
        (-[WebItemProviderPasteboard itemProviderAtIndex:]):
        (-[WebItemProviderPasteboard enumerateItemProvidersWithBlock:]):
        * platform/mac/DragDataMac.mm:
        (WebCore::DragData::containsURL const):

2018-11-17  Ross Kirsling  <ross.kirsling@sony.com>

        Remove superfluous LayoutUnit initializations
        https://bugs.webkit.org/show_bug.cgi?id=191791

        Reviewed by Simon Fraser.

        First step toward making LayoutUnit constructors explicit:
        eliminate `= 0` when constructing LayoutUnit lvalues.

        * editing/Editor.cpp:
        (WebCore::Editor::firstRectForRange const):
        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::modify):
        (WebCore::FrameSelection::lineDirectionPointForBlockDirectionNavigation):
        * html/shadow/SliderThumbElement.cpp:
        (WebCore::RenderSliderContainer::computeLogicalHeight const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::justifyRuns):
        * page/FrameView.cpp:
        (WebCore::FrameView::forceLayoutForPagination):
        * page/SpatialNavigation.cpp:
        (WebCore::scrollInDirection):
        (WebCore::distanceDataForNode):
        * rendering/AutoTableLayout.cpp:
        (WebCore::AutoTableLayout::layout):
        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::marginIntrinsicLogicalWidthForChild):
        (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::placeBoxesInBlockDirection):
        (WebCore::InlineFlowBox::paintFillLayer):
        (WebCore::InlineFlowBox::paintBoxDecorations):
        (WebCore::InlineFlowBox::paintMask):
        (WebCore::InlineFlowBox::computeOverAnnotationAdjustment const):
        (WebCore::InlineFlowBox::computeUnderAnnotationAdjustment const):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::marginIntrinsicLogicalWidthForChild const):
        (WebCore::RenderBlock::layoutPositionedObject):
        (WebCore::RenderBlock::selectionGapRectsForRepaint):
        (WebCore::RenderBlock::paintSelection):
        (WebCore::RenderBlock::textIndentOffset const):
        (WebCore::RenderBlock::computeBlockPreferredLogicalWidths const):
        * rendering/RenderBlockFlow.cpp:
        (WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
        (WebCore::RenderBlockFlow::layoutBlock):
        (WebCore::RenderBlockFlow::layoutBlockChildren):
        (WebCore::RenderBlockFlow::marginValuesForChild const):
        (WebCore::RenderBlockFlow::estimateLogicalTopPosition):
        (WebCore::RenderBlockFlow::applyBeforeBreak):
        (WebCore::RenderBlockFlow::applyAfterBreak):
        (WebCore::RenderBlockFlow::adjustBlockChildForPagination):
        (WebCore::RenderBlockFlow::clearFloats):
        (WebCore::RenderBlockFlow::lowestFloatLogicalBottom const):
        (WebCore::RenderBlockFlow::lowestInitialLetterLogicalBottom const):
        (WebCore::RenderBlockFlow::addOverhangingFloats):
        (WebCore::RenderBlockFlow::getClearDelta):
        (WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const):
        * rendering/RenderBlockLineLayout.cpp:
        (WebCore::setLogicalWidthForTextRun):
        (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
        (WebCore::RenderBlockFlow::determineStartPosition):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::fillAvailableMeasure const):
        (WebCore::RenderBox::computeIntrinsicLogicalWidthUsing const):
        (WebCore::RenderBox::computeLogicalWidthInFragmentUsing const):
        (WebCore::RenderBox::computePercentageLogicalHeight const):
        (WebCore::RenderBox::computeReplacedLogicalWidthUsing const):
        (WebCore::RenderBox::computePositionedLogicalWidthUsing const):
        (WebCore::RenderBox::computePositionedLogicalHeightUsing const):
        (WebCore::RenderBox::computePositionedLogicalWidthReplaced const):
        (WebCore::RenderBox::computePositionedLogicalHeightReplaced const):
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::computedCSSPadding const):
        (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry const):
        * rendering/RenderDeprecatedFlexibleBox.cpp:
        (WebCore::marginWidthForChild):
        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
        (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
        * rendering/RenderFileUploadControl.cpp:
        (WebCore::RenderFileUploadControl::paintObject):
        * rendering/RenderFragmentedFlow.cpp:
        (WebCore::RenderFragmentedFlow::validateFragments):
        (WebCore::RenderFragmentedFlow::adjustedPositionRelativeToOffsetParent const):
        (WebCore::RenderFragmentedFlow::updateFragmentsFragmentedFlowPortionRect):
        * rendering/RenderFrameSet.cpp:
        (WebCore::RenderFrameSet::paint):
        * rendering/RenderListItem.cpp:
        (WebCore::RenderListItem::positionListMarker):
        * rendering/RenderListMarker.cpp:
        (WebCore::RenderListMarker::computePreferredLogicalWidths):
        (WebCore::RenderListMarker::updateMargins):
        * rendering/RenderMultiColumnSet.cpp:
        (WebCore::RenderMultiColumnSet::initialBlockOffsetForPainting const):
        * rendering/RenderRubyRun.cpp:
        (WebCore::RenderRubyRun::layoutBlock):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::convertStyleLogicalWidthToComputedWidth):
        (WebCore::RenderTable::layout):
        (WebCore::RenderTable::offsetWidthForColumn const):
        (WebCore::RenderTable::offsetHeightForColumn const):
        (WebCore::RenderTable::outerBorderBefore const):
        (WebCore::RenderTable::outerBorderAfter const):
        (WebCore::RenderTable::outerBorderStart const):
        (WebCore::RenderTable::outerBorderEnd const):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::logicalWidthFromColumns const):
        (WebCore::RenderTableCell::computeIntrinsicPadding):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::calcRowLogicalHeight):
        (WebCore::RenderTableSection::distributeExtraLogicalHeightToPercentRows):
        (WebCore::RenderTableSection::distributeExtraLogicalHeightToAutoRows):
        (WebCore::RenderTableSection::distributeRemainingExtraLogicalHeight):
        (WebCore::RenderTableSection::layoutRows):
        (WebCore::RenderTableSection::calcOuterBorderBefore const):
        (WebCore::RenderTableSection::calcOuterBorderAfter const):
        (WebCore::RenderTableSection::calcOuterBorderStart const):
        (WebCore::RenderTableSection::calcOuterBorderEnd const):
        * rendering/RootInlineBox.cpp:
        (WebCore::RootInlineBox::alignBoxesInBlockDirection):
        (WebCore::RootInlineBox::beforeAnnotationsAdjustment const):
        (WebCore::RootInlineBox::lineSnapAdjustment const):
        (WebCore::RootInlineBox::verticalPositionForBox):
        * rendering/line/BreakingContext.h:
        (WebCore::inlineLogicalWidth):
        * rendering/mathml/RenderMathMLBlock.cpp:
        (WebCore::RenderMathMLBlock::layoutItems):
        * rendering/mathml/RenderMathMLFraction.cpp:
        (WebCore::RenderMathMLFraction::layoutBlock):
        * rendering/mathml/RenderMathMLOperator.cpp:
        (WebCore::RenderMathMLOperator::computePreferredLogicalWidths):
        * rendering/mathml/RenderMathMLRoot.cpp:
        (WebCore::RenderMathMLRoot::computePreferredLogicalWidths):
        (WebCore::RenderMathMLRoot::paint):
        * rendering/mathml/RenderMathMLRow.cpp:
        (WebCore::RenderMathMLRow::computePreferredLogicalWidths):
        * rendering/mathml/RenderMathMLScripts.cpp:
        (WebCore::RenderMathMLScripts::layoutBlock):
        * rendering/mathml/RenderMathMLUnderOver.cpp:
        (WebCore::RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren):
        (WebCore::RenderMathMLUnderOver::layoutBlock):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::getShadowInsetExtent const):
        * rendering/svg/RenderSVGText.cpp:
        (WebCore::RenderSVGText::layout):

2018-11-17  Simon Fraser  <simon.fraser@apple.com>

        Avoid triggering compositing updates when only the root layer is composited
        https://bugs.webkit.org/show_bug.cgi?id=191813

        Reviewed by Zalan Bujtas.

        If we know that the only composited layer is the root, we can avoid triggering deep
        compositing updates sometimes, for example when layout changes size or position,
        or when z-order lists change.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::updateLayerPosition):
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::updateCompositingLayersAfterScroll):
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): Consult the layer.hasCompositingDescendant()
        flag to cut off descendants traversal when possible.
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-11-17  Simon Fraser  <simon.fraser@apple.com>

        Fix an error in 238354 - !=, not ==.
        
        Fixes test failures.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerBecameNonComposited):

2018-11-17  Simon Fraser  <simon.fraser@apple.com>

        Clarify RenderLayerCompositor::hasAnyAdditionalCompositedLayers() and related code.
        https://bugs.webkit.org/show_bug.cgi?id=191810

        Reviewed by Zalan Bujtas.

        Rename m_compositedLayerCount to m_contentLayersCount and have it track layers other
        than the RenderView's layer.

        hasAnyAdditionalCompositedLayers() is really about whether we can drop out of compositing
        because no content layer is composited, and overlays don't require compositing, so
        rename it.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::needsCompositingForContentOrOverlays const):
        (WebCore::RenderLayerCompositor::layerBecameComposited):
        (WebCore::RenderLayerCompositor::layerBecameNonComposited):
        (WebCore::RenderLayerCompositor::layerTreeAsText):
        (WebCore::RenderLayerCompositor::hasAnyAdditionalCompositedLayers const): Deleted.
        * rendering/RenderLayerCompositor.h:

2018-11-17  Simon Fraser  <simon.fraser@apple.com>

        Rename RenderLayerCompositor::inCompositingMode() to usesCompositing()
        https://bugs.webkit.org/show_bug.cgi?id=191808

        Reviewed by Zalan Bujtas.

        Other code uses "usesCompositing" so standardize on that (future changes will make
        "compositing mode" more ambiguous). Also remove a FrameView function that only
        had one caller.

        * page/FrameView.cpp:
        (WebCore::FrameView::clearBackingStores):
        (WebCore::FrameView::handleDeferredScrollbarsUpdateAfterDirectionChange):
        (WebCore::FrameView::delegatesScrollingDidChange):
        (WebCore::FrameView::hasCompositedContent const): Deleted.
        * page/FrameView.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::rebuildZOrderLists):
        (WebCore::RenderLayer::updateLayerPosition):
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::updateCompositingLayersAfterScroll):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingPolicy):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::layerStyleChanged):
        (WebCore::RenderLayerCompositor::updateBacking):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::setIsInWindow):
        (WebCore::RenderLayerCompositor::needsToBeComposited const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const):
        (WebCore::RenderLayerCompositor::rootOrBodyStyleChanged):
        (WebCore::RenderLayerCompositor::rootBackgroundColorOrTransparencyChanged):
        * rendering/RenderLayerCompositor.h:
        * rendering/RenderView.cpp:
        (WebCore::RenderView::repaintViewAndCompositedLayers):
        (WebCore::RenderView::usesCompositing const):

2018-11-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: add button to show system certificate dialog
        https://bugs.webkit.org/show_bug.cgi?id=191458
        <rdar://problem/45977019>

        Reviewed by Joseph Pecoraro.

        Test: http/tests/inspector/network/getSerializedCertificate.html

        * inspector/agents/InspectorNetworkAgent.h:
        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::getSerializedCertificate): Added.

        * inspector/InspectorFrontendHost.idl:
        * inspector/InspectorFrontendHost.h:
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::supportsShowCertificate): Added.
        (WebCore::InspectorFrontendHost::showCertificate): Added.
        * inspector/InspectorFrontendClient.h:
        (InspectorFrontendClient::showCertificate): Added.
        * testing/Internals.cpp:
        (InspectorStubFrontend::showCertificate): Added.

        * platform/network/cf/CertificateInfo.h:
        (WTF::Persistence::encodeCFData): Added.
        (WTF::Persistence::decodeCFData): Added.
        (WTF::Persistence::encodeSecTrustRef): Added.
        (WTF::Persistence::decodeSecTrustRef): Added.
        (WTF::Persistence::encodeCertificateChain): Added.
        (WTF::Persistence::decodeCertificateChain): Added.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode): Added.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode): Added.
        * platform/network/cf/CertificateInfoCFNet.cpp:
        * platform/network/cocoa/CertificateInfoCocoa.mm:

        * platform/network/curl/CertificateInfo.h:
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode): Added.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode): Added.

        * platform/network/soup/CertificateInfo.h:
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::encode): Added.
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::decode): Added.
        (WTF::Persistence::certificatesDataListFromCertificateInfo): Added.
        (WTF::Persistence::certificateFromCertificatesDataList): Added.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode): Added.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode): Added.

2018-11-17  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] InlineFormattingState::addDetachingRule should accumulate rules.
        https://bugs.webkit.org/show_bug.cgi?id=191801

        Reviewed by Antti Koivisto.

        before<span style="position: relative">positioned</span>after
        In the example above the <positioned> inline box has both the BreakAtStart and the BreakAtEnd rules.
        While walking through the inline tree, we add BreakAtStart first and when we figure it's the last child too,
        we add BreakAtEnd as well. BreakAtEnd should not clear the BreakAtStart rule.

        Test: fast/inline/simple-inline-with-out-of-flow-descendant2.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::addDetachingRule):
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::addDetachingRule): Deleted.

2018-11-17  Jonathan Hammer  <jonathan@e3software.com>

        Caret stops blinking after context menu shown
        https://bugs.webkit.org/show_bug.cgi?id=191715

        Reviewed by Ryosuke Niwa.

        Changed EventHandler::sendContextMenuEvent to un-suspend caret blinking so that
        the caret continues to blink even after the context menu is dismissed. The normal
        way of un-suspendeding caret blinking (in EventHandler::handleMouseReleaseEvent) does
        not apply in the case of context menus because handleMouseReleaseEvent is not
        called once the context menu is up.

        Test: fast/events/contextmenu-dismiss-blink-caret.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::sendContextMenuEvent):
        * testing/Internals.cpp:
        (WebCore::Internals::isCaretBlinkingSuspended):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-11-16  Antoine Quint  <graouts@apple.com>

        [Pointer Events] event.isPrimary doesn't always represent the oldest active touch
        https://bugs.webkit.org/show_bug.cgi?id=191752
        <rdar://problem/46129270>

        Reviewed by Dean Jackson.

        Provide isPrimary to the constructor so its value can be determined at the call site.

        Test: pointerevents/ios/pointer-events-is-primary.html

        * dom/PointerEvent.h:
        * dom/ios/PointerEventIOS.cpp:
        (WebCore::PointerEvent::create):
        (WebCore::PointerEvent::PointerEvent):
        (WebCore::m_isPrimary):

2018-11-16  Alex Christensen  <achristensen@webkit.org>

        Tweak _showSafeBrowsingWarningWithTitle SPI
        https://bugs.webkit.org/show_bug.cgi?id=191799

        Reviewed by Wenson Hsieh.

        It turns out I needed to expose both sentinel values used in safe browsing for my application of this SPI in Mac Safari.
        Allowing the caller to make its own sentinel values is insufficient because the malware confirmation needs to be over the warning.
        The completion handler parameter should just be a bool indicating whether the user has chosen to continue after all warnings.

        Covered by updated API tests.

        * en.lproj/Localizable.strings:
        * platform/LocalizedStrings.cpp:
        (WebCore::formControlCancelButtonTitle):
        Make "Cancel"'s description a little more generic.

2018-11-16  Simon Fraser  <simon.fraser@apple.com>

        Optimize composited iframe layer hookup
        https://bugs.webkit.org/show_bug.cgi?id=191778

        Reviewed by Zalan Bujtas.

        The change made in r238229 can be more targeted; we only need to hook up iframe content
        layers when the layer is already composited (otherwise the updateBacking() above would have triggered
        the work), and when it's a RenderWidget layer.
        
        Tested by existing tests.

        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeRecursive):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-11-16  Ross Kirsling  <ross.kirsling@sony.com>

        Provide default implementation of Widget
        https://bugs.webkit.org/show_bug.cgi?id=191784

        Reviewed by Michael Catanzaro.

        * SourcesWPE.txt:
        * platform/Widget.cpp:
        (WebCore::Widget::Widget):
        (WebCore::Widget::frameRect const):
        (WebCore::Widget::~Widget):
        (WebCore::Widget::setFrameRect):
        (WebCore::Widget::paint):
        (WebCore::Widget::setFocus):
        (WebCore::Widget::setCursor):
        (WebCore::Widget::show):
        (WebCore::Widget::hide):
        (WebCore::Widget::setIsSelected):
        * platform/gtk/WidgetGtk.cpp:
        (WebCore::Widget::Widget): Deleted.
        (WebCore::Widget::frameRect const): Deleted.
        * platform/win/WidgetWin.cpp:
        (WebCore::Widget::Widget): Deleted.
        (WebCore::Widget::frameRect const): Deleted.
        * platform/wpe/WidgetWPE.cpp: Removed.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        [macOS] Label "prewarmed" WebContent processes in Activity Monitor
        https://bugs.webkit.org/show_bug.cgi?id=191765
        <rdar://problem/45953463>

        Reviewed by Geoffrey Garen.

        * en.lproj/Localizable.strings:

2018-11-16  Jeremy Jones  <jeremyj@apple.com>

        Enable external playback for video in element fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=190359
        rdar://problem/42560085

        Reviewed by Jer Noble.

        No new tests because we don't have a good way to test external playback.

        Any video that might be auto-pipped from element fullscreen should also enable external playback for video out.
        PiP and external playback are mutually exclusive. Instead of preventing PiP when external playback is active,
        allow PiP, but disable external playback while PiP is active.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::setVideoFullscreenStandby):
        * html/HTMLMediaElement.h:
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::setVideoFullscreenStandby):
        (WebCore::MediaPlayer::videoFullscreenStandby const):
        * platform/graphics/MediaPlayer.h:
        (WebCore::MediaPlayerClient::mediaPlayerVideoFullscreenStandby const):
        * platform/graphics/MediaPlayerPrivate.h:
        (WebCore::MediaPlayerPrivateInterface::setVideoFullscreenStandby):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenStandby):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):

2018-11-16  Jer Noble  <jer.noble@apple.com>

        Regression(r233865): Causes synchronous IPC in the middle of layout
        https://bugs.webkit.org/show_bug.cgi?id=188307
        <rdar://problem/42807306>

        Reviewed by Eric Carlson.

        Revert the changes added in r233865. Rather than make a syncronous call to the UIProcess to
        query whether the view has been backgrounded while (e.g.) JS has been spinning, perform the
        steps of the requestFullscreen() method on the next run loop, allowing messages from the
        UIProcess about page visibilty to be delivered first.

        * dom/Document.cpp:
        (WebCore::Document::requestFullScreenForElement):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::enterFullscreen):
        * html/HTMLMediaElement.h:
        * page/ChromeClient.h:

2018-11-16  Ross Kirsling  <ross.kirsling@sony.com>

        Provide default implementation of Cursor
        https://bugs.webkit.org/show_bug.cgi?id=191772

        Reviewed by Michael Catanzaro.

        * SourcesWPE.txt:
        * platform/Cursor.cpp:
        (WebCore::Cursor::ensurePlatformCursor const):
        * platform/wpe/CursorWPE.cpp: Removed.

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        EditorWPE should be EditorLibWPE
        https://bugs.webkit.org/show_bug.cgi?id=191774

        Reviewed by Michael Catanzaro.

        The platform specific implementations of Editor are all around the
        platform's Pasteboard. Since the Pasteboard implementation is now based
        around USE(LIBWPE) EditorWPE should be renamed to EditorLibWPE.

        * SourcesWPE.txt:
        * editing/libwpe/EditorLibWPE.cpp: Renamed from Source/WebCore/editing/wpe/EditorWPE.cpp.

2018-11-16  Jeremy Jones  <jeremyj@apple.com>

        Include AirPlay destination name in AirPlay placard.
        https://bugs.webkit.org/show_bug.cgi?id=191574
        rdar://problem/45536144

        Reviewed by Eric Carlson.

        Updated existing tests.

        Include the name of the AirPlay destination in the video element's AirPlay placard.

        * Modules/modern-media-controls/controls/airplay-placard.js:
        (AirplayPlacard):
        * Modules/modern-media-controls/controls/placard.js:
        * Modules/modern-media-controls/media/placard-support.js:
        (PlacardSupport.prototype._updatePlacard):
        (PlacardSupport.prototype._updateAirPlayPlacard):
        (PlacardSupport):
        * en.lproj/modern-media-controls-localized-strings.js:

2018-11-16  Zalan Bujtas  <zalan@apple.com>

        Add DidFirstMeaningfulPaint milestone.
        https://bugs.webkit.org/show_bug.cgi?id=191754

        Reviewed by Simon Fraser.

        This milestone fires sone after the paint triggered by the first visually non-empty layout.

        * page/FrameView.cpp:
        (WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):
        (WebCore::FrameView::firePaintRelatedMilestonesIfNeeded):
        * page/LayoutMilestone.h:

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        Provide default implementations of Image and Icon
        https://bugs.webkit.org/show_bug.cgi?id=191764

        Reviewed by Michael Catanzaro.

        Makes IconWPE and ImageWPE implementations the default.

        * Sources.txt:
        * SourcesWPE.txt:
        * platform/graphics/Icon.cpp: Renamed from Source/WebCore/platform/graphics/wpe/IconWPE.cpp.
        * platform/graphics/Image.cpp:
        (WebCore::BitmapImage::invalidatePlatformData): Placed here for consistency with implementing ports.
        (WebCore::Image::loadPlatformResource):
        * platform/graphics/wpe/ImageWPE.cpp: Removed.

2018-11-16  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: CFNetwork
        https://bugs.webkit.org/show_bug.cgi?id=191718
        <rdar://problem/46108732>

        Reviewed by Alex Christensen.

        Remove custom WKSI CFNetwork calls, since the SPI is already documented in PAL. Just
        make the same calls on Windows, like we did for iOS and macOS back in 2017.

        Stop including WebKitSystemInterface.h for files that used to rely on it
        for font-related features.
        
        Tested by existing Windows regression tests. There should be no change in behavior.

        * platform/graphics/win/FontCacheWin.cpp:
        * platform/graphics/win/FontCustomPlatformData.cpp:
        * platform/graphics/win/FontPlatformDataCGWin.cpp:
        * platform/network/cf/CookieStorageCFNet.cpp:
        * platform/network/cf/CredentialStorageCFNet.cpp:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::createPrivateStorageSession):
        (WebCore::NetworkStorageSession::switchToNewTestingSession):
        (WebCore::NetworkStorageSession::ensureSession):
        * platform/network/cf/ResourceError.h:
        * platform/network/cf/ResourceErrorCF.cpp:
        (WebCore::getSSLPeerCertificateData):
        (WebCore::setSSLPeerCertificateData):
        (WebCore::ResourceError::getSSLPeerCertificateDataBytePtr):
        (WebCore::ResourceError::platformLazyInit):
        (WebCore::ResourceError::cfError const):
        * platform/network/cf/ResourceHandleCFNet.cpp:
        (WebCore::setClientCertificateInSSLProperties):
        (WebCore::ResourceHandle::createCFURLConnection):
        * platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:
        * platform/network/cf/ResourceRequestCFNet.cpp:
        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:

2018-11-16  Timothy Hatcher  <timothy@apple.com>

        Add html{color:text} to the simpleUserAgentStyleSheet on macOS.
        https://bugs.webkit.org/show_bug.cgi?id=191760

        Reviewed by Antti Koivisto.

        * css/CSSDefaultStyleSheets.cpp: Added html{color:text} to simpleUserAgentStyleSheet inside
        a PLATFORM(MAC) copy of the string.

2018-11-16  Jer Noble  <jer.noble@apple.com>

        An early return from updateSchedulingInfo can leave some variables uninitialized.
        https://bugs.webkit.org/show_bug.cgi?id=191755
        <rdar://problem/39910089>

        Reviewed by Brent Fulgham.

        * Modules/webaudio/AudioBufferSourceNode.cpp:
        (WebCore::AudioBufferSourceNode::process):
        * Modules/webaudio/AudioScheduledSourceNode.cpp:
        (WebCore::AudioScheduledSourceNode::updateSchedulingInfo):
        * Modules/webaudio/OscillatorNode.cpp:
        (WebCore::OscillatorNode::process):

2018-11-16  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Ignore caps notifications when tearing down the pipeline
        https://bugs.webkit.org/show_bug.cgi?id=191578

        Reviewed by Xabier Rodriguez-Calvar.

        Changing the demuxer to READY state (which is done only in the main
        thread) triggers the unlinking of its srcpads, which in turns emits a
        caps change notification in the previously linked element since they
        become unnegotiated again.

        We are not interested in caps notifications in these cases, so let's
        just ignore caps notifications emitted from the main thread.

        This fixes an assertion failure in the debug builds.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline):

2018-11-16  Sihui Liu  <sihui_liu@apple.com>

        Storing blobs in IDB on iOS: "Error preparing blob/file"
        https://bugs.webkit.org/show_bug.cgi?id=188438
        <rdar://problem/43097279>

        Reviewed by Alex Christensen.

        Grant sandbox extension of temp folder to network process, because we suggested network process had access to 
        the folder on iOS device but it didn't. 

        This makes some existing tests about IDB blob pass on iOS device.

        * Modules/indexeddb/server/IDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
        (WebCore::IDBServer::SQLiteIDBTransaction::moveBlobFilesIfNecessary):
        (WebCore::IDBServer::SQLiteIDBTransaction::deleteBlobFilesIfNecessary):
        (WebCore::IDBServer::SQLiteIDBTransaction::abort):
        * Modules/indexeddb/shared/InProcessIDBServer.h:

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=191401

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Migrates all PLATFORM(WPE) code that calls into wpe_* APIs to
        USE(LIBWPE) instead.

        Renames classes and files to use the suffix LibWPE.

        * PlatformWPE.cmake:
        * SourcesWPE.txt:
        * platform/Pasteboard.h:
        * platform/PasteboardStrategy.h:
        * platform/PlatformKeyboardEvent.h:
        * platform/PlatformPasteboard.h:
        * platform/graphics/PlatformDisplay.cpp:
        (WebCore::PlatformDisplay::createPlatformDisplay):
        * platform/graphics/PlatformDisplay.h:
        * platform/graphics/egl/GLContextEGL.h:
        * platform/graphics/egl/GLContextEGLLibWPE.cpp: Renamed from Source/WebCore/platform/graphics/egl/GLContextEGLWPE.cpp.
        (WebCore::GLContextEGL::createWPEContext):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):
        * platform/graphics/libwpe/PlatformDisplayLibWPE.cpp: Renamed from Source/WebCore/platform/graphics/wpe/PlatformDisplayWPE.cpp.
        (WebCore::PlatformDisplayLibWPE::create):
        (WebCore::PlatformDisplayLibWPE::PlatformDisplayLibWPE):
        (WebCore::PlatformDisplayLibWPE::~PlatformDisplayLibWPE):
        (WebCore::PlatformDisplayLibWPE::initialize):
        * platform/graphics/libwpe/PlatformDisplayLibWPE.h: Renamed from Source/WebCore/platform/graphics/wpe/PlatformDisplayWPE.h.
        * platform/libwpe/PasteboardLibWPE.cpp: Renamed from Source/WebCore/platform/wpe/PasteboardWPE.cpp.
        * platform/libwpe/PlatformKeyboardEventLibWPE.cpp: Renamed from Source/WebCore/platform/wpe/PlatformKeyboardEventWPE.cpp.
        * platform/libwpe/PlatformPasteboardLibWPE.cpp: Renamed from Source/WebCore/platform/wpe/PlatformPasteboardWPE.cpp.

2018-11-16  Zalan Bujtas  <zalan@apple.com>

        [iOS] 2 subsequent taps are required to trigger certain tasks on the desktop version of YouTube.com (hover vs click).
        https://bugs.webkit.org/show_bug.cgi?id=191712
        <rdar://problem/45612900>

        Reviewed by Simon Fraser.

        In handleSyntheticClick() we use WKContentObservation to figure out whether the tap should be treated as a hover or a click.
        In general, if the mouse-move event triggers a visible content change, we assume we hit a hover-like drop down menu (or something similar)
        and no need to dispatch a click event.
        The idea here is that if the new content (result of the mouse-move event) does not respond to mouse click, it is most likely
        only for tooltip-like reasons and it's ok to proceed with the click event.

        Test: fast/events/touch/ios/click-instead-of-hover-simple.html

        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::CheckForVisibilityChange::~CheckForVisibilityChange):

2018-11-16  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add support for out-of-flow positioned boxes
        https://bugs.webkit.org/show_bug.cgi?id=191726

        Reviewed by Antti Koivisto.

        While laying out formatting context roots (inline-block, floats) in an inline formatting context, we need to make sure
        that their out-of-flow descendants get laid out as well.

        Test: fast/inline/simple-inline-with-out-of-flow-descendant.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        * layout/layouttree/LayoutTreeBuilder.cpp: This was returning the wrong context root when the container was also a context root.
        (WebCore::Layout::TreeBuilder::createSubTree):

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add API to enable/disable device mocks
        https://bugs.webkit.org/show_bug.cgi?id=191699

        This basically us to test MediaStream/WebRTC support without
        requiring cameras or microphones and is quite useful.

        Also fix the GStreamerAudioMock by:
          - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
            this was usefull when we were trying to bring the MediaStream
            sources inside the main pipeline, it is not the case anymore
            (and not doable with latest version of LibWebRTC).
          - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
            stream is similar to what Apple port does.

        Reviewed by Xabier Rodriguez-Calvar.

        The mocks are already tested and the API is really simple.

        * platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
        (WebCore::GStreamerAudioCapturer::createSource):
        * platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
        * platform/mediastream/gstreamer/GStreamerCapturer.cpp:
        (WebCore::GStreamerCapturer::addSink):
        * platform/mediastream/gstreamer/GStreamerCapturer.h:

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][MediaStream] Handle track addition and removal
        https://bugs.webkit.org/show_bug.cgi?id=191599

        Reviewed by Xabier Rodriguez-Calvar.

        Test: fast/mediastream/MediaStream-video-element-remove-track.html

        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
        (WebCore::WebKitMediaStreamObserver::~WebKitMediaStreamObserver):
        (WebCore::WebKitMediaStreamObserver::WebKitMediaStreamObserver):
        (WebCore::webkitMediaStreamSrcFinalize):
        (WebCore::webkitMediaStreamSrcChangeState):
        (WebCore::webkit_media_stream_src_init):
        (WebCore::webkitMediaStreamSrcSetupSrc):
        (WebCore::webkitMediaStreamSrcAddTrack):
        (WebCore::webkitMediaStreamSrcRemoveTrackByType):
        (WebCore::webkitMediaStreamSrcSetStream):

2018-11-16  Zan Dobersek  <zdobersek@igalia.com>

        ScalableImageDecoder: don't forcefully decode image data when querying frame completeness, duration
        https://bugs.webkit.org/show_bug.cgi?id=191354

        Reviewed by Michael Catanzaro.

        ScalableImageDecoder::frameIsCompleteAtIndex() should only check the
        index validity and, if the index is valid, check for completeness of the
        corresponding frame. ScalableImageDecoder::frameDurationAtIndex() should
        also only retrieve duration for already-complete frames.

        Both methods avoid calling ScalableImageDecoder::frameBufferAtIndex()
        as that method goes on and decodes image data to determine specific
        information. The ImageSource class that's querying this information
        doesn't anticipate this, and doesn't handle the increased memory
        consumption of the decoded data, leaving MemoryCache in the blind about
        the image resource's actual amount of consumed memory. ImageSource can
        instead gracefully handle any incomplete frame by marking the decoding
        status for this frame as only partial.

        * platform/image-decoders/ScalableImageDecoder.cpp:
        (WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const):
        (WebCore::ScalableImageDecoder::frameHasAlphaAtIndex const):
        (WebCore::ScalableImageDecoder::frameDurationAtIndex const):

2018-11-16  Antoine Quint  <graouts@apple.com>

        PointerEvents should not require touch event listeners to be registered
        https://bugs.webkit.org/show_bug.cgi?id=191333
        <rdar://problem/45857523>

        Reviewed by Dean Jackson.

        Tests: pointerevents/ios/pointer-events-dispatch-on-touch.html
               pointerevents/ios/pointer-events-prevent-default.html

        * dom/EventNames.h:
        (WebCore::EventNames::isTouchEventType const):
        (WebCore::EventNames::touchAndPointerEventNames const):
        (WebCore::EventNames::touchEventNames const): Deleted.
        * dom/Node.cpp:
        (WebCore::Node::moveNodeToNewDocument):

2018-11-15  Zalan Bujtas  <zalan@apple.com>

        [iOS] Do not get stuck in indeterminate content observation state.
        https://bugs.webkit.org/show_bug.cgi?id=191719

        Reviewed by Simon Fraser.

        Reset the _WKContentChange flag to WKContentNoChange when the last observing timer is removed and we are in
        the "can't decide yet if it's a hover or click" state.
        This bug prevents us from firing click event when JS installs and removes the same set of timer(s) during mouse-move dispatch.

        Test: fast/events/touch/ios/stuck-with-hover-state.html

        * platform/ios/wak/WKContentObservation.cpp:
        (WebThreadRemoveObservedContentModifier):

2018-11-15  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r238090) Composited iframes that resize from zero don't show
        https://bugs.webkit.org/show_bug.cgi?id=191733
        rdar://problem/46107764

        Reviewed by Zalan Bujtas.
        
        A zero-sized iframe whose contents are composited should not trigger compositing in the
        parent document (see code in requiresCompositingForFrame()), but when the <iframe> element
        was resized without a style change (e.g. because it's width: 100%, height: 100% and the
        parent resizes), there was no code that triggered a compositing update.

        Fix by having RenderLayer::updateLayerPosition() trigger an update when the size changes,
        for a RenderWidget whose contents are composited.

        Test: compositing/iframes/resize-from-zero-size.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateLayerPosition):

2018-11-15  Simon Fraser  <simon.fraser@apple.com>

        Overlay with -webkit-overflow-scrolling:touch doesn't become scrollable after added text makes it taller
        https://bugs.webkit.org/show_bug.cgi?id=158342
        rdar://problem/26652811

        Reviewed by Zalan Bujtas.
        
        Patch partly by Frédéric Wang.

        This commit fixes an issue when resizing the content of a -webkit-overflow-scrolling: touch
        overflow node on iOS. Indeed, the RenderLayerBacking's scrolling layer may not be properly
        created and hence the UIProcess receives a null UIScrollView pointer. This triggers an
        assertion in debug mode and prevents the user from scrolling the overflow node in release
        mode. This was partially fixed by the refactoring of bug 90342 but this commit addresses
        the remaining issues by forcing a configuration update after layout in order to ensure that
        RenderLayerBacking's scrolling layer is available. For an overflow element that is not yet
        composited, trigger a post-layout update that is necessary to check if we need to make it
        composited when it gains scrollable overflow.

        Tests: fast/scrolling/ios/change-scrollability-on-content-resize-nested.html
               fast/scrolling/ios/change-scrollability-on-content-resize.html

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateScrollInfoAfterLayout): Force a configuration update so that
        RenderLayerCompositor::updateBackingAndHierarchy will later instantiate
        RenderLayerBacking::m_scrollingLayer.

2018-11-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [curl] warning: delete called on non-final 'WebCore::CurlDownload' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
        https://bugs.webkit.org/show_bug.cgi?id=191582

        Reviewed by Alex Christensen.

        No new tests because there's no behaviour change.

        * platform/network/curl/CurlDownload.h: Marked CurlDownload final.

2018-11-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238244.

        Caused High Sierra test runs to fail early with 50 crashes and
        casued 25 API failures.

        Reverted changeset:

        "[css-logical] Implement flow-relative margin, padding and
        border shorthands"
        https://bugs.webkit.org/show_bug.cgi?id=188697
        https://trac.webkit.org/changeset/238244

2018-11-15  Jer Noble  <jer.noble@apple.com>

        AVKit will set videoGravity to a nil string when building against iosmac
        https://bugs.webkit.org/show_bug.cgi?id=191573

        Reviewed by Dean Jackson.

        Workaround AVKit behavior by treating nil videoGravity as the default,
        which is AVLayerVideoGravityResizeAspect.

        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer setVideoGravity:]):

2018-11-15  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: Font Handling
        https://bugs.webkit.org/show_bug.cgi?id=191701
        <rdar://problem/46104809>

        Reviewed by Myles C. Maxfield.

        Move the old Windows font handling code out of WKSI to our regular
        repository. We now handle SPI differently, and don't need to keep
        these implementations in a separate library. This should also help
        avoid the somewhat frequent build failures caused when WKSI is not
        updated in sync with WebKit.

        Tested by existing Windows test cases.

        * platform/graphics/FontCascade.h:
        * platform/graphics/win/FontCGWin.cpp:
        (WebCore::FontCascade::drawGlyphs):
        (WebCore::FontCascade::setFontSmoothingLevel):
        (WebCore::setCGFontSmoothingStyle):
        (WebCore::FontCascade::setFontSmoothingStyle):
        (WebCore::FontCascade::setFontSmoothingContrast):
        (WebCore::clearTypeContrast):
        (WebCore::FontCascade::systemFontSmoothingChanged):
        (WebCore::FontCascade::setCGContextFontRenderingStyle):
        (WebCore::renderingStyleForFont):
        (WebCore::FontCascade::getGlyphAdvances):
        * platform/graphics/win/GlyphPageTreeNodeCGWin.cpp:
        (WebCore::GlyphPage::fill):
        * platform/graphics/win/GraphicsContextCGWin.cpp:
        (WebCore::GraphicsContext::drawFocusRing):
        (WebCore::GraphicsContext::drawDotsForDocumentMarker):
        * platform/graphics/win/SimpleFontDataCGWin.cpp:
        (WebCore::Font::platformWidthForGlyph const):
        * rendering/RenderMediaControls.cpp:
        (WebCore::RenderMediaControls::adjustMediaSliderThumbSize):

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Use a real nonce for CTAPHID_INIT
        https://bugs.webkit.org/show_bug.cgi?id=191533
        <rdar://problem/46103502>

        Reviewed by Brent Fulgham.

        New tests are added into existing test files.

        * Modules/webauthn/fido/FidoConstants.h:

2018-11-15  Justin Fan  <justin_fan@apple.com>

        [WebGPU] WebGPUCommandBuffer prototype
        https://bugs.webkit.org/show_bug.cgi?id=191663

        Reviewed by Dean Jackson.

        Begin implementation of WebGPUCommandBuffers as well as GPUQueues (MTLCommandBuffer, MTLCommandQueue).

        Test: webgpu/command-buffers.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/GPUCommandBuffer.h: Added. Wrapper class around a MTLCommandBuffer.
        * Modules/webgpu/GPUDevice.cpp:
        (WebCore::GPUDevice::createCommandBuffer): Added.
        (WebCore::GPUDevice::getQueue): Returns RefPtr to the device's singleton queue.
        * Modules/webgpu/GPUDevice.h: Now manages the device's GPUQueue.
        (WebCore::GPUDevice::platformDevice const):
        * Modules/webgpu/GPUQueue.h: Added. Wrapper class around a MTLCommandQueue.
        (WebCore::GPUQueue::platformQueue const):
        * Modules/webgpu/GPURenderPipeline.h: Moved from Source/WebCore/Modules/webgpu/cocoa/GPURenderPipeline.h.
        (WebCore::GPURenderPipeline::platformRenderPipeline const):
        * Modules/webgpu/GPUShaderModule.h:
        (WebCore::GPUShaderModule::platformShaderModule const):
        * Modules/webgpu/GPUSwapChain.h: Moved from Source/WebCore/Modules/webgpu/cocoa/GPUSwapChain.h.
        (WebCore::GPUSwapChain::platformLayer const):
        * Modules/webgpu/WebGPUCommandBuffer.cpp: Added. Web interface for a GPU device's command buffer.
        (WebCore::WebGPUCommandBuffer::create):
        (WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
        * Modules/webgpu/WebGPUCommandBuffer.h: Added.
        * Modules/webgpu/WebGPUCommandBuffer.idl: Added.
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createCommandBuffer const): Added.
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/cocoa/GPUCommandBufferMetal.mm: Added. MTLCommandBuffer impl for GPUCommandBuffer.
        (WebCore::GPUCommandBuffer::create): Create a MTLCommandBuffer from the MTLCommandQueue.
        (WebCore::GPUCommandBuffer::GPUCommandBuffer):
        * Modules/webgpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::GPUDevice):
        * Modules/webgpu/cocoa/GPUQueueMetal.mm: Added. MTLCommandQueue impl for GPUQueue.
        (WebCore::GPUQueue::create):
        (WebCore::GPUQueue::GPUQueue):
        * Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::GPURenderPipeline::GPURenderPipeline):
        * Modules/webgpu/cocoa/GPUShaderModuleMetal.mm:
        (WebCore::GPUShaderModule::create):
        (WebCore::GPUShaderModule::GPUShaderModule):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2018-11-15  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Tests: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html
               imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html
               webexposed/css-properties-as-js-properties.html
               webexposed/css-properties-behind-flags.html
               webexposed/css-property-listing.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        Allow the new properties to serialize their computed value.

        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand):
        (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand):
        * css/CSSComputedStyleDeclaration.h:
        Rename getCSSPropertyValuesForSidesShorthand to getCSSPropertyValuesFor4SidesShorthand,
        and add analogous getCSSPropertyValuesFor2SidesShorthand for serializing 2-sided
        shorthands.

        * css/CSSProperties.json:
        Add the new properties behind the CSSLogicalEnabled runtime flag.

        * css/CSSStyleDeclaration.cpp:
        (WebCore::CSSStyleDeclaration::supportedPropertyNames const):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        style declarations.

        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::getPropertyValue const):
        Allow the new properties to serialize their specified value.

        (WebCore::StyleProperties::get2Values const):
        Add get2Values, analogous to get4Values, for serializing 2-sided shorthands.

        (WebCore::StyleProperties::borderPropertyValue const):
        Allow borderPropertyValue to serialize arbitrary multi-sided border shorthands
        corresponding to width, style and color.

        (WebCore::MutableStyleProperties::setProperty):
        Prevent CSS properties disabled behind a runtime flag from being set a value.

        (WebCore::StyleProperties::asText const):
        Allow the new properties to be serialized in cssText.
        Prevent CSS shorthands disabled behind a runtime flag from appearing in cssText,
        and serialize the longhands instead. Note that there could be another shorthand
        available which is enabled, but a proper solution would require bug 190496.

        * css/StyleProperties.h:
        Update declarations of borderPropertyValue and get2Values.

        * css/makeprop.pl:
        (addProperty):
        Add isEnabledCSSProperty function for checking that a CSS property is not
        disabled behind a runtime flag.

        * css/parser/CSSPropertyParser.cpp:
        (WebCore::cssPropertyID):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        computed styles.

        (WebCore::CSSPropertyParser::addProperty):
        Prevent CSS properties disabled behind a runtime flag from being set a value.

        (WebCore::CSSPropertyParser::consumeBorder):
        Change consumeBorder to provide the caller with the parsed values instead of
        setting properties. Then the caller can decide to which properties the values
        should be set, and whether border-image should be reset or not.

        (WebCore::CSSPropertyParser::consume2ValueShorthand):
        (WebCore::CSSPropertyParser::consume4ValueShorthand):
        Rename consume4Values to consume4ValueShorthand, and add analogous
        consume2ValueShorthand for parsing shorthands with two longhands.

        (WebCore::CSSPropertyParser::parseShorthand):
        Allow the new properties to be parsed.

        * css/parser/CSSPropertyParser.h:
        Update declarations of consumeBorder, consume2ValueShorthand and
        consume4ValueShorthand.

        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
        Prevent CSS properties disabled behind a runtime flag from being exposed in
        the CSS inspector tool.

        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setCSSLogicalEnabled):
        (WebCore::RuntimeEnabledFeatures::cssLogicalEnabled const):
        Add the CSSLogicalEnabled runtime flag.

2018-11-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238220.

        Introduced failing tests to iOS and is slowing down EWS

        Reverted changeset:

        "[css-grid] Consider scrollbars in
        populateGridPositionsForDirection()"
        https://bugs.webkit.org/show_bug.cgi?id=191656
        https://trac.webkit.org/changeset/238220

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::AuthenticatorAttachment should be optional
        https://bugs.webkit.org/show_bug.cgi?id=191522

        Reviewed by Brent Fulgham.

        Accordign to the WebIDL, AuthenticatorSelectionCriteria::AuthenticatorAttachment should be optional.
        https://www.w3.org/TR/webauthn/#dictdef-authenticatorselectioncriteria

        Covered by existing tests.

        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        (WebCore::PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::decode):

2018-11-15  Ross Kirsling  <ross.kirsling@sony.com>

        DragImage should have a complete default implementation
        https://bugs.webkit.org/show_bug.cgi?id=191666

        Reviewed by Dean Jackson.

        Move WPE's stub implementation down into the base implementation file.

        * SourcesWPE.txt:
        * platform/DragImage.cpp:
        (WebCore::dragImageSize):
        (WebCore::deleteDragImage):
        (WebCore::scaleDragImage):
        (WebCore::dissolveDragImageToFraction):
        (WebCore::createDragImageFromImage):
        (WebCore::createDragImageIconForCachedImageFilename):
        (WebCore::createDragImageForLink):
        * platform/wpe/DragImageWPE.cpp: Removed.

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] UserHandle can be null
        https://bugs.webkit.org/show_bug.cgi?id=191521

        Reviewed by Alex Christensen.

        According to the newest spec as of 7 August, 2018: https://www.w3.org/TR/webauthn/#conforming-authenticators-u2f.
        UserHandle can now be null.

        Covered by existing tests.

        * Modules/webauthn/AuthenticatorAssertionResponse.h:
        (WebCore::AuthenticatorAssertionResponse::create):
        (WebCore::AuthenticatorAssertionResponse::userHandle const):
        (WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse):
        * Modules/webauthn/AuthenticatorAssertionResponse.idl:
        * Modules/webauthn/PublicKeyCredential.cpp:
        (WebCore::PublicKeyCredential::tryCreate):
        * Modules/webauthn/PublicKeyCredentialData.h:
        (WebCore::PublicKeyCredentialData::encode const):
        (WebCore::PublicKeyCredentialData::decode):
        * Modules/webauthn/fido/DeviceResponseConverter.cpp:
        (fido::readCTAPGetAssertionResponse):

2018-11-15  Youenn Fablet  <youenn@apple.com>

        Modernize RTCPeerConnection handling of pendingActivity
        https://bugs.webkit.org/show_bug.cgi?id=191661

        Reviewed by Eric Carlson.

        makePendingActivity is the modern way to handle set/unset of pending activity.
        No change of behavior.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::create):
        (WebCore::RTCPeerConnection::doStop):
        * Modules/mediastream/RTCPeerConnection.h:

2018-11-15  Keith Rollin  <krollin@apple.com>

        Delete old .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191669
        <rdar://problem/46081994>

        Reviewed by Chris Dumez.

        .xcfilelist files were created and added to the Xcode project files in
        https://trac.webkit.org/changeset/238008/webkit. However, they caused
        build issues and they were removed from the Xcode projects in
        https://trac.webkit.org/changeset/238055/webkit. This check-in removes
        the files from the repository altogether. They'll ultimately be
        replaced with new files with names that indicate whether the
        associated files are inputs to the Run Script phase or are files
        created by the Run Script phase.

        No new tests -- no changed functionality.

        * DerivedSources.xcfilelist: Removed.
        * UnifiedSources.xcfilelist: Removed.

2018-11-15  Youenn Fablet  <youenn@apple.com>

        Update RTCPeerConnection JS built-ins to be closer to specWe
        https://bugs.webkit.org/show_bug.cgi?id=191665

        Reviewed by Eric Carlson.

        Simplify JS built-ins since we no longer need to support callback versions of the API.
        Make sure to have the right number of parameters in the JS built-in functions.
        Make some simplification to the code.
        Covered by existing tests and rebased test.

        * Modules/mediastream/RTCPeerConnection.js:
        (createOffer):
        (createAnswer):
        (setLocalDescription):
        (setRemoteDescription):
        (addIceCandidate):
        * Modules/mediastream/RTCPeerConnectionInternals.js:
        (enqueueOperation):
        (callbacksAndDictionaryOverload): Deleted.

2018-11-15  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION(r238090): Composited iframe contents disappear after switching tabs in Safari
        https://bugs.webkit.org/show_bug.cgi?id=191673
        rdar://problem/46083440

        Reviewed by Antti Koivisto.

        Switching tabs in Safari triggers the "setIsInWindow" code path, that detaches the layer
        tree for every Frame. They get re-attached on tab show, and for subframes this involves
        the triggering of a fake style recalc in the parent document via scheduleInvalidateStyleAndLayerComposition().
        
        The style diff that's sent to RenderLayerCompositor::layerStyleChanged() as a result of that
        fake style recalc is RecompositeLayer, but the code was failing to trigger the necessary
        layer configuration update that gets iframe layers parented.
        
        This stop-gap patch triggers layer config updates on every RecompositeLayer diff. A future
        patch will optimize this, and add a layout test.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-11-15  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Skip non-inflow boxes while splitting the inline runs.
        https://bugs.webkit.org/show_bug.cgi?id=191690

        Reviewed by Antti Koivisto.

        Skip all non-inflow boxes (floats, out-of-flow positioned elements). They don't participate in the inline run context.

        * layout/Verification.cpp:
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):

2018-11-15  Zalan Bujtas  <zalan@apple.com>

        [LFC] FormattingContext base class should not declare computeStaticPosition.
        https://bugs.webkit.org/show_bug.cgi?id=191683

        Reviewed by Antti Koivisto.

        Apparently only BlockFormattingContext uses it.

        * layout/FormattingContext.h:
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeStaticPosition const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2018-11-14  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add support for in-flow positioned inline boxes.
        https://bugs.webkit.org/show_bug.cgi?id=191672

        Reviewed by Antti Koivisto.

        We might offset the in-flow positioned runs differently once runs are moved over to the display tree.

        Test: fast/inline/simple-inline-inflow-positioned.html

        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunsIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::postProcessInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::moveVertically):
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):

2018-11-15  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add support for sending silence or silencing an incoming track
        https://bugs.webkit.org/show_bug.cgi?id=191631

        Reviewed by Xabier Rodriguez-Calvar.

        This will be tested once webkit.org/b/186933 is implemented.

        * platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeIncomingAudioSourceLibWebRTC::OnData):
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):

2018-11-15  Antti Koivisto  <antti@apple.com>

        REGRESSION(r238178): fast/forms/access-key-mutated.html and fast/forms/access-key-case-insensitive.html are timing out
        https://bugs.webkit.org/show_bug.cgi?id=191642

        Reviewed by Zalan Bujtas.

        Invalidate access key map even when thorttling style recalcs.

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

2018-11-15  Antti Koivisto  <antti@apple.com>

        Remove fonts from CSSFontFaceSet safely
        https://bugs.webkit.org/show_bug.cgi?id=191676

        Reviewed by Zalan Bujtas.

        Test: fast/text/font-face-set-remove-safely.html

        * css/CSSFontFaceSet.cpp:
        (WebCore::CSSFontFaceSet::remove):

2018-11-15  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Consider scrollbars in populateGridPositionsForDirection()
        https://bugs.webkit.org/show_bug.cgi?id=191656

        Reviewed by Javier Fernandez.

        We never care about scrollbars in RenderGrid::populateGridPositionsForDirection(),
        that's fine if the scrollbars are at the end (e.g. on the right in horizontal writing mode and LTR direction)
        but it causes problems when they're at the beginning (e.g. on the left in horizontal writing mode and RTL direction).

        The patch modifies the method so it takes into account scrollbar size
        in order to compute the position of the columns/rows depending on the direction and the writing mode.

        Tests: imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html
               imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::populateGridPositionsForDirection):

2018-11-14  Keith Rollin  <krollin@apple.com>

        Move scripts for Derived and Unified Sources to external files
        https://bugs.webkit.org/show_bug.cgi?id=191670
        <rdar://problem/46082278>

        Reviewed by Keith Miller.

        Move the scripts in the Generate Derived Sources and Generate Unified
        Sources Run Script phases from the Xcode projects to external shell
        script files. Then invoke those scripts from the Run Script phases.
        This refactoring is being performed to support later work that will
        invoke these scripts in other contexts.

        The scripts were maintained as-is when making the move. I did a little
        reformatting and added 'set -e' to the top of each file, but that's
        it.

        No new tests -- no changed functionality.

        * Scripts/generate-derived-sources.sh: Added.
        * Scripts/generate-unified-sources.sh: Added.
        * WebCore.xcodeproj/project.pbxproj:

2018-11-14  Keith Rollin  <krollin@apple.com>

        Fix #end vs. #endif typo.
        https://bugs.webkit.org/show_bug.cgi?id=191668
        <rdar://problem/46081704>

        Reviewed by Alexey Proskuryakov.

        Source/WebCore/SourcesCocoa.txt had a #end that should have been a
        #endif. Fix this, an add a check to generate-unified-source-bundles.rb
        to detect similar typos.

        No new tests -- no changed functionality.

        * SourcesCocoa.txt:

2018-11-14  Keith Rollin  <krollin@apple.com>

        Remove VideoFullscreenLayerManager.mm from WebCore/SourcesCocoa.txt
        https://bugs.webkit.org/show_bug.cgi?id=191667
        <rdar://problem/46081286>

        Reviewed by Eric Carlson.

        VideoFullscreenLayerManager.mm no longer exists.

        No new tests -- No changed functionality.

        * SourcesCocoa.txt:

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Enabled dark mode CSS support by default.
        https://bugs.webkit.org/show_bug.cgi?id=191609
        rdar://problem/46046861

        Reviewed by Megan Gardner.

        * page/RuntimeEnabledFeatures.h: Set m_isDarkModeCSSEnabled to true.

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Default the view background color and text color to different values when in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191607
        rdar://problem/46045854

        Reviewed by Dean Jackson.

        Test: css-dark-mode/default-colors.html

        * css/html.css:
        (html): Set color: text on macOS.
        * dom/Document.cpp:
        (WebCore::Document::processSupportedColorSchemes): Call recalculateBaseBackgroundColor().
        * editing/EditingStyle.cpp:
        (WebCore::caretColorFromStyle): Added.
        (WebCore::EditingStyle::prepareToApplyAt): Use equalIgnoringSemanticColor. Check for
        caret-color directly since removeEquivalentProperties fails with semantic colors.
        (WebCore::extractPropertiesNotIn): Use equalIgnoringSemanticColor. Check for caret-color
        directly since removeEquivalentProperties fails with semantic colors.
        * page/Frame.cpp:
        (WebCore::Frame::createView): Drop backgroundColor.
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::recalculateBaseBackgroundColor): Added.
        (WebCore::FrameView::updateBackgroundRecursively): Drop backgroundColor argument.
        Calculate the backgroundColor based on the transparent argument only.
        * page/FrameView.h:
        * platform/graphics/Color.h:
        (WebCore::equalIgnoringSemanticColor): Added for EditingStyle.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::styleDidChange): Call recalculateBaseBackgroundColor().
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::shouldDumpPropertyForLayer const): Use isWhiteColor()
        since it ignores the semantic color flag.
        * testing/Internals.cpp:
        (WebCore::Internals::setViewIsTransparent): Drop backgroundColor.
        (WebCore::Internals::viewBaseBackgroundColor): Added.
        * testing/Internals.h:
        * testing/Internals.idl: Added viewBaseBackgroundColor.

2018-11-14  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Code quality concerns raised for 191291: [WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain
        https://bugs.webkit.org/show_bug.cgi?id=191383

        Reviewed by Dean Jackson.

        Covered by existing WebGPU tests introduced in original patch.

        * Modules/webgpu/GPUDevice.h:
        * Modules/webgpu/GPUPipelineStageDescriptor.h:
        * Modules/webgpu/GPURenderPipelineDescriptor.h: Now a base struct with a guaranteed vertex stage member.
        (): Refactored into enum class.
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor): Removed in favor of init-list construction.
        (WebCore::GPURenderPipelineDescriptor::primitiveTopology): Now a proper enum class member.
        * Modules/webgpu/GPUShaderModule.h:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createRenderPipeline const):
        * Modules/webgpu/WebGPUShaderModule.h:
        (WebCore::WebGPUShaderModule::module const):
        * Modules/webgpu/WebGPUShaderStage.h: Replaced enum with constants to better reflect IDL.
        * Modules/webgpu/cocoa/GPURenderPipeline.h:
        * Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:
        (WebCore::setFunctionsForPipelineDescriptor):
        (WebCore::GPURenderPipeline::create):
        * Modules/webgpu/cocoa/GPUSwapChain.h:
        * WebCore.xcodeproj/project.pbxproj: Removed GPUPipelineDescriptorBase.

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Pass Inspector::FrontendChannel as a reference connect/disconnect methods
        https://bugs.webkit.org/show_bug.cgi?id=191612

        Reviewed by Matt Baker.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::connectFrontend):
        (WebCore::InspectorController::disconnectFrontend):
        (WebCore::InspectorController::show):
        * inspector/InspectorController.h:
        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::connectFrontend):
        (WebCore::WorkerInspectorController::disconnectFrontend):
        * page/PageDebuggable.cpp:
        (WebCore::PageDebuggable::connect):
        (WebCore::PageDebuggable::disconnect):
        * page/PageDebuggable.h:
        * testing/Internals.cpp:
        (WebCore::InspectorStubFrontend::InspectorStubFrontend):
        (WebCore::InspectorStubFrontend::closeWindow):
        * workers/service/context/ServiceWorkerDebuggable.cpp:
        (WebCore::ServiceWorkerDebuggable::connect):
        (WebCore::ServiceWorkerDebuggable::disconnect):
        * workers/service/context/ServiceWorkerDebuggable.h:
        * workers/service/context/ServiceWorkerInspectorProxy.cpp:
        (WebCore::ServiceWorkerInspectorProxy::connectToWorker):
        (WebCore::ServiceWorkerInspectorProxy::disconnectFromWorker):
        * workers/service/context/ServiceWorkerInspectorProxy.h:

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Update prefers-color-scheme media query matching based on GitHub issue #3278.
        https://bugs.webkit.org/show_bug.cgi?id=191654
        rdar://problem/46074307

        Reviewed by Simon Fraser.

        Test: css-dark-mode/prefers-color-scheme.html

        * css/MediaQueryEvaluator.cpp:
        (WebCore::prefersColorSchemeEvaluate): Return true when there is no value. Return false
        for `no-preference` since there is no macOS option for no user preference.
        * css/MediaQueryExpression.cpp:
        (WebCore::isFeatureValidWithoutValue): Added prefers-color-scheme.

2018-11-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: send a call stack with each action instead of an array of call frames
        https://bugs.webkit.org/show_bug.cgi?id=191628

        Reviewed by Dean Jackson.

        Updated existing test: inspector/model/recording.html

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::indexForData):
        (WebCore::InspectorCanvas::buildInitialState):
        (WebCore::InspectorCanvas::buildAction):
        Drive-by: prevent de-duplicated objects from being destroyed while recording.

2018-11-14  Stephan Szabo  <stephan.szabo@sony.com>

        [Win] Compile Service Worker support
        https://bugs.webkit.org/show_bug.cgi?id=191409

        Reviewed by Youenn Fablet.

        Fix compilation errors when ENABLE(SERVICE_WORKER)
        on Windows with clang-cl. Clang on dllexport
        platforms does not support specifying the
        dllexport on both a class and members of the class
        and unistd.h isn't provided but also appeared to
        not be used.

        No new tests, should be covered by existing tests.

        * workers/service/ServiceWorkerProvider.h:
        * workers/service/context/SWContextManager.cpp:

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        * inspector/InspectorClient.h:
        (WebCore::InspectorClient::allowRemoteInspectionToPageDirectly const):
        Provide a hook so that a client may wish to allow direct remote inspection of the Page.
        This is used by WebKitLegacy only.

        * page/Page.cpp:
        (Page::Page):
        Only enable the PageDebuggable if the client wishes remote inspection of the Page directly.
        This is used by WebKitLegacy only.

        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::connectFrontend):
        * inspector/InspectorController.h:
        * page/PageDebuggable.cpp:
        (WebCore::PageDebuggable::connect):
        (WebCore::PageDebuggable::disconnect):
        * page/PageDebuggable.h:
        When a frontend connects, always enable the developer extras for the Page.
        This is pretty much only for the remote path, which allows inspection if developer
        extras were not already enabled (iOS). This simplifies the logic, and toggling
        developer extras after it was already enabled is not really important.

2018-11-14  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (WEBPROCESS_WINDOWSERVER_BLOCKING): requestAnimationFrame Stops Completing
        https://bugs.webkit.org/show_bug.cgi?id=190884

        Reviewed by Dean Jackson.

        Only notify display refresh monitors with matching display ID.

        Test: fast/animation/request-animation-frame-in-two-pages.html

        * platform/graphics/DisplayRefreshMonitorManager.cpp:
        (WebCore::DisplayRefreshMonitorManager::displayWasUpdated):
        * platform/graphics/DisplayRefreshMonitorManager.h:

2018-11-14  Youenn Fablet  <youenn@apple.com>

        Convert libwebrtc error types to DOM exceptions
        https://bugs.webkit.org/show_bug.cgi?id=191590

        Reviewed by Alex Christensen.

        Make use of overloaded callback method that provides an error type.
        This type is then used to create a DOM exception with the correct type.
        Covered by existing tests.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription):
        (WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed):
        (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed):
        (WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * Modules/mediastream/libwebrtc/LibWebRTCObservers.h:
        (WebCore::toExceptionCode):

2018-11-14  Youenn Fablet  <youenn@apple.com>

        Allow to remove MediaStreamPrivate observers when iterating over observers
        https://bugs.webkit.org/show_bug.cgi?id=187256

        Reviewed by Eric Carlson.

        Migrate the observer list from a Vector to a HashSet.
        This is more robust to multiple observing and keeping of order of observers is not required.
        Copy the set of observers to a vector before iterating over it.
        This allows to remove an observer while iterating, which is now used in UserMediaRequest.

        Covered by existing tests.

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::mediaStreamIsReady):
        * platform/mediastream/MediaStreamPrivate.cpp:
        (WebCore::MediaStreamPrivate::addObserver):
        (WebCore::MediaStreamPrivate::removeObserver):
        (WebCore::MediaStreamPrivate::forEachObserver const):
        (WebCore::MediaStreamPrivate::updateActiveState):
        (WebCore::MediaStreamPrivate::addTrack):
        (WebCore::MediaStreamPrivate::removeTrack):
        (WebCore::MediaStreamPrivate::characteristicsChanged):
        * platform/mediastream/MediaStreamPrivate.h:

2018-11-14  Youenn Fablet  <youenn@apple.com>

        Calling removeTrack on different RTCPeerConnection should throw InvalidAccessError
        https://bugs.webkit.org/show_bug.cgi?id=191603

        Reviewed by Chris Dumez.

        Make sure to check that the sender peer connection backend is matching.
        Covered by rebased WPT test.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::removeTrack):
        * Modules/mediastream/RTCRtpSender.cpp:
        (WebCore::RTCRtpSender::isCreatedBy const):
        * Modules/mediastream/RTCRtpSender.h:

2018-11-14  Fujii Hironori  <Hironori.Fujii@sony.com>

        [curl] Unify CookieJarCurlDatabase and the abstract class CookieJarCurl
        https://bugs.webkit.org/show_bug.cgi?id=191620

        Reviewed by Alex Christensen.

        Remove a abstract class CookieJarCurl which is not needed anymore.
        And, rename CookieJarCurlDatabase to CookieJarCurl.

        No new tests because there's no behaviour change in WebCore.

        * platform/Curl.cmake: Replaced CookieJarCurlDatabase.cpp with CookieJarCurl.cpp.
        * platform/network/curl/CookieJarCurl.cpp: Renamed from Source/WebCore/platform/network/curl/CookieJarCurlDatabase.cpp.
        * platform/network/curl/CookieJarCurl.h: Merged CookieJarCurl.h and CookieJarCurlDatabase.h.
        * platform/network/curl/CookieJarCurlDatabase.h: Removed.
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::NetworkStorageSession::NetworkStorageSession): Replaced CookieJarCurlDatabase with CookieJarCurl.

2018-11-14  Christopher Reid  <chris.reid@sony.com>

        [WPE] Remove glib usage in PlatformKeyboardEventWPE.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191606

        Reviewed by Michael Catanzaro.

        No behavior change.

        Use StringBuilder::append(UChar32) as a generic way to convert a uint32_t code point to WTFString.

        * platform/wpe/PlatformKeyboardEventWPE.cpp:
        (WebCore::PlatformKeyboardEvent::keyValueForWPEKeyCode):
        (WebCore::PlatformKeyboardEvent::singleCharacterString):

2018-11-13  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Construct dedicated runs when the inline element requires it (part 2)
        https://bugs.webkit.org/show_bug.cgi?id=191623

        Reviewed by Antti Koivisto.

        This patch expands the breaking behaviour to support separate start/end breaks.

        <span>parent </span><span style="padding: 10px;">start<span> middle </span>end</span><span> parent</span>

        input to line breaking -> <parent start middle end parent>
        output of line breaking (considering infinite constraint) -> <parent start middle end parent>
        due to padding, final runs -> <parent><start middle end><parent>

        "parent" -> n/a
        "start" -> BreakAtStart
        " middle " -> n/a
        "end" -> BreakAtEnd
        "parent" -> n/a

        Another example:
        <span>parent </span><span style="padding-right: 10px;">start<span> middle </span>end</span><span> parent</span>

        line breaking -> <parent start middle end parent>
        due to padding-right, final runs -> <parent start middle end><parent>

        "parent" -> n/a
        "start" -> n/a
        " middle " -> n/a
        "end" -> BreakAtEnd
        "parent" -> n/a

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContent const): Move to a recursive algorithm (which is fine, inline contents don't tend to be too deep)
        (WebCore::Layout::InlineFormattingContext::contentRequiresSeparateRun const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::detachingRules const):
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::lastInlineItem const):
        (WebCore::Layout::InlineFormattingState::addDetachingRule):

2018-11-14  Youenn Fablet  <youenn@apple.com>

        Add support for RTCRtpCodecParameters.sdpFmtpLine
        https://bugs.webkit.org/show_bug.cgi?id=191591

        Reviewed by Eric Carlson.

        Covered by rebased test.

        * Modules/mediastream/RTCRtpCodecParameters.h:
        * Modules/mediastream/RTCRtpCodecParameters.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::toRTCCodecParameters):

2018-11-14  Youenn Fablet  <youenn@apple.com>

        Add support for transport and peerConnection stats
        https://bugs.webkit.org/show_bug.cgi?id=191592

        Reviewed by Alex Christensen.

        Covered by rebased tests.

        * Modules/mediastream/RTCStatsReport.h:
        (WebCore::RTCStatsReport::TransportStats::TransportStats):
        (WebCore::RTCStatsReport::PeerConnectionStats::PeerConnectionStats):
        * Modules/mediastream/RTCStatsReport.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
        (WebCore::fillRTCTransportStats):
        (WebCore::fillRTCPeerConnectionStats):
        (WebCore::LibWebRTCStatsCollector::OnStatsDelivered):

2018-11-14  Ali Juma  <ajuma@chromium.org>

        Transform of composited layer not updated when layer also needs repaint
        https://bugs.webkit.org/show_bug.cgi?id=191598

        Reviewed by Simon Fraser.

        Trigger a compositing geometry update whenever a RenderLayer's transform changes,
        even when other parts of its style have changed in a way that produces a
        StyleDifference greater than RecompositeLayer.

        Test: compositing/geometry/transform-and-repaint-updates-geometry.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::layerStyleChanged):

2018-11-13  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support CTAP HID authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=188623
        <rdar://problem/43353777>

        Reviewed by Brent Fulgham and Chris Dumez.

        This patch removes AuthenticatorCoordinatorClient::~AuthenticatorCoordinatorClient to ignore
        any incompleted CompletionHandlers as calling them in destructors could cause unexpected cyclic
        dependency. Also, it adds a hack to temporarily deal with nullable userhandle.

        Tests: http/wpt/webauthn/ctap-hid-failure.https.html
               http/wpt/webauthn/ctap-hid-success.https.html
               http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html
               http/wpt/webauthn/public-key-credential-create-failure-hid.https.html
               http/wpt/webauthn/public-key-credential-create-success-hid.https.html
               http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html
               http/wpt/webauthn/public-key-credential-get-failure-hid.https.html
               http/wpt/webauthn/public-key-credential-get-success-hid.https.html

        * Modules/webauthn/AuthenticatorCoordinatorClient.cpp:
        (WebCore::AuthenticatorCoordinatorClient::~AuthenticatorCoordinatorClient): Deleted.
        * Modules/webauthn/AuthenticatorCoordinatorClient.h:
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        * Modules/webauthn/fido/DeviceResponseConverter.cpp:
        (fido::readCTAPGetAssertionResponse):
        * Modules/webauthn/fido/FidoConstants.h:

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        [WebRTC] Provide default implementation of LibWebRTCProvider
        https://bugs.webkit.org/show_bug.cgi?id=191611

        Reviewed by Michael Catanzaro.

        Refactor LibWebRTCProvider such that platform-specific implementations need not worry about specifying defaults.

        * PlatformWin.cmake:
        * platform/GStreamer.cmake:
        * platform/SourcesGLib.txt:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
        * platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp.
        * platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGlib.h.
        * platform/mediastream/libwebrtc/LibWebRTCProviderWin.cpp: Removed.

2018-11-13  Timothy Hatcher  <timothy@apple.com>

        Use a light scrollbar for transparent web views in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191559
        rdar://problem/46000489

        Reviewed by Dean Jackson.

        Test: css-dark-mode/supported-color-schemes-scrollbar.html

        * css/CSSProperties.json: Marked supported-color-schemes as a custom Value.
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyValueSupportedColorSchemes):
        * editing/cocoa/WebContentReaderCocoa.mm: Use FrameView's useDarkAppearance().
        (WebCore::createFragment):
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint): Use FrameView's useDarkAppearance().
        * page/FrameView.cpp:
        (WebCore::FrameView::recalculateScrollbarOverlayStyle): Use a light scrollbar for
        transparent web views in dark mode.
        (WebCore::FrameView::rendererForSupportedColorSchemes const): Added.
        Return the body for document element renderer.
        (WebCore::FrameView::useDarkAppearance const): Use rendererForSupportedColorSchemes.
        (WebCore::FrameView::styleColorOptions const): Added. Ditto.
        * page/FrameView.h:
        * rendering/style/RenderStyle.cpp:
        (WebCore::rareInheritedDataChangeRequiresRepaint): Drive-by fix. Added supportedColorSchemes.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::setHasExplicitlySetSupportedColorSchemes): Added.
        (WebCore::RenderStyle::hasExplicitlySetSupportedColorSchemes const): Added.
        (WebCore::RenderStyle::NonInheritedFlags::operator== const): Added supportedColorSchemes.
        * svg/graphics/SVGImage.cpp:
        (WebCore::SVGImage::draw): Use FrameView's useDarkAppearance().
        * testing/Internals.cpp:
        (WebCore::Internals::setViewIsTransparent): Added.
        (WebCore::Internals::scrollbarOverlayStyle const): Added.
        * testing/Internals.h:
        * testing/Internals.idl: Added setViewIsTransparent and scrollbarOverlayStyle.

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        [AppleWin] Unreviewed build fix after r238108.

        * platform/graphics/ca/win/PlatformCALayerWin.cpp:
        (printLayer):
        (PlatformCALayerWin::embeddedViewID const):
        * platform/graphics/ca/win/PlatformCALayerWin.h:

2018-11-13  Youenn Fablet  <youenn@apple.com>

        RTCPeerConnection.getTransceivers is not always exposing all transceivers
        https://bugs.webkit.org/show_bug.cgi?id=191589

        Reviewed by Eric Carlson.

        Implement the collect transceiver algorithm using libwebrtc backend.
        Call this algorithm everytime transceivers are retrieved from JS.
        For Plan B, make this a no-op as this is not supported.
        Introduce senders/receivers/transceivers getters where we just look at already created transceivers.

        Covered by existing and rebased tests.

        * Modules/mediastream/PeerConnectionBackend.h:
        (WebCore::PeerConnectionBackend::collectTransceivers):
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::getSenders const):
        (WebCore::RTCPeerConnection::getReceivers const):
        (WebCore::RTCPeerConnection::getTransceivers const):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::collectTransceivers):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
        (WebCore::LibWebRTCPeerConnectionBackend::existingTransceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::collectTransceivers):
        (WebCore::LibWebRTCPeerConnectionBackend::applyRotationForOutgoingVideoSources):
        (WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:

2018-11-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Do not show selection UI for editable elements with opacity near zero
        https://bugs.webkit.org/show_bug.cgi?id=191442
        <rdar://problem/45958625>

        Reviewed by Simon Fraser.

        Tests: editing/selection/ios/do-not-zoom-to-focused-hidden-contenteditable.html
               editing/selection/ios/hide-selection-after-hiding-contenteditable.html
               editing/selection/ios/hide-selection-in-contenteditable-nested-transparency.html
               editing/selection/ios/hide-selection-in-hidden-contenteditable-frame.html
               editing/selection/ios/hide-selection-in-hidden-contenteditable.html

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::isTransparentRespectingParentFrames const):

        Add a helper function to determine whether a RenderObject is contained within a transparent layer, taking parent
        frames into account. A layer is considered transparent if its opacity is less than a small threshold (i.e. 0.01).
        Opacity on ancestor elements is applied multiplicatively.

        * rendering/RenderObject.h:

2018-11-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Observer AVCaptureDevice "suspended" property
        https://bugs.webkit.org/show_bug.cgi?id=191587
        <rdar://problem/46030598>

        Reviewed by Youenn Fablet.

        No new tests, AVCapture can only be tested manually.

        * platform/mediastream/mac/AVCaptureDeviceManager.h:
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::AVCaptureDeviceManager::captureDevicesInternal): Don't notify of devices "changes"
        the first time the device list is scanned.
        (WebCore::deviceIsAvailable): Don't check for "isInUseByAnotherApplication", it doesn't
        change device availability.
        (WebCore::AVCaptureDeviceManager::beginObservingDevices): New, observe "suspended" on all 
        devices and add them to the cached list.
        (WebCore::AVCaptureDeviceManager::stopObservingDevices): New, opposite of above.
        (WebCore::AVCaptureDeviceManager::refreshCaptureDevices): Watch for changes in the list of
        devices.
        (WebCore::AVCaptureDeviceManager::~AVCaptureDeviceManager): Stop observing all cached devices.
        (WebCore::AVCaptureDeviceManager::registerForDeviceNotifications):
        (-[WebCoreAVCaptureDeviceManagerObserver disconnect]):
        (-[WebCoreAVCaptureDeviceManagerObserver deviceConnectedDidChange:]):
        (-[WebCoreAVCaptureDeviceManagerObserver observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::AVCaptureDeviceManager::refreshAVCaptureDevicesOfType): Deleted.
        (WebCore::AVCaptureDeviceManager::deviceConnected): Deleted.
        (WebCore::AVCaptureDeviceManager::deviceDisconnected): Deleted.
        (-[WebCoreAVCaptureDeviceManagerObserver deviceDisconnected:]): Deleted.
        (-[WebCoreAVCaptureDeviceManagerObserver deviceConnected:]): Deleted.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource): Stop observing "running" (not "rate")
        and "suspended".
        (WebCore::AVVideoCaptureSource::setupSession): Observe "running" (not "rate"), and "suspended".
        (WebCore::AVVideoCaptureSource::captureDeviceSuspendedDidChange):
        (-[WebCoreAVVideoCaptureSourceObserver observeValueForKeyPath:ofObject:change:context:]):

2018-11-13  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION(r238122): fetching the CertificateInfo triggers an ASSERT in workers
        https://bugs.webkit.org/show_bug.cgi?id=191597

        Reviewed by Joseph Pecoraro.

        When WebInspector is open, the `CertificateInfo` for every `ResourceResponse` is now fetched,
        meaning that we may try to fetch in situations previously unexpected.

        * platform/network/cocoa/ResourceResponseCocoa.mm:
        (WebCore::ResourceResponse::platformCertificateInfo const):

2018-11-13  Timothy Hatcher  <timothy@apple.com>

        Treat supported-color-schemes as the second highest priority property.
        https://bugs.webkit.org/show_bug.cgi?id=191556
        rdar://problem/46000076

        Reviewed by Dean Jackson.

        Test: css-dark-mode/supported-color-schemes-priority.html

        * css/CSSProperties.json: Make supported-color-schemes high-priority and add a comment.
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::applyMatchedProperties): Manually handle supported-color-schemes
        after -webkit-ruby-position, before other properties, so it can affect resolved colors.

2018-11-13  Charlie Turner  <cturner@igalia.com>

        [EME][GStreamer] Make CDMInstance's available in decryptors, and factor out some EME utility classes.
        https://bugs.webkit.org/show_bug.cgi?id=191316

        Reviewed by Xabier Rodriguez-Calvar.

        Another preparation in patch getting ready to move the decryption
        logic behind the CDMInstance and out of the GStreamer decryptors
        themselves. The first step taken here is to arrange for the
        instances to always be available in the decryptors when they need
        to decrypt content.

        In doing so, there were a number of hairy bits of code that could
        use some abstraction, so the opportunity was taken to do that as
        well.

        Covered by tests in media/encrypted-media and
        imported/w3c/web-platform-tests/encrypted-media.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Remove
        drm-key-needed since it was not being used anywhere.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage):
        Factor out the parsing of decryption system information from
        GStreamer, since it was not clear what that code was doing unless
        you squinted pretty hard. Also remove the duplicated
        initialization-data-encountered posting.
        (WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
        Refactored to make it a more general method and usable in more
        situations. It now has an optional to stop it from eliding init
        datas for a different key system. This is required the first time
        we post them, since if a CDM instance has already been set, and if
        the stream init datas are for different systems, we ended up never
        posting an encrypted event.
        (WebCore::MediaPlayerPrivateGStreamerBase::attemptToDecryptWithLocalInstance):
        Actually send a CDMInstance now when in regular playback mode.
        (WebCore::MediaPlayerPrivateGStreamerBase::dispatchDecryptionKey):
        Remove m_needToSendCredentials, it was not being used.
        (WebCore::MediaPlayerPrivateGStreamerBase::handleProtectionEvent):
        Refactored to use the new initializationDataEncountered.
        (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey):
        Log the waiting state, since it was currently not clear what that
        logging message was even telling you!
        (WebCore::extractEventsAndSystemsFromMessage): Deleted.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:
        (WebCore::InitData::InitData): New class that encapsulates both
        single instantiation and streaming instantiation.
        (WebCore::InitData::append): Used for the streaming mode, when you
        are concatenating init datas together.
        (WebCore::InitData::payload const):
        (WebCore::InitData::systemId const):
        (WebCore::InitData::payloadContainerType const):
        (WebCore::InitData::isFromDifferentContainer):
        (WebCore::ProtectionSystemEvents::ProtectionSystemEvents):
        (WebCore::ProtectionSystemEvents::events const):
        (WebCore::ProtectionSystemEvents::availableSystems const):
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptTransformInPlace): If you post
        waiting-for-key after requesting a CDM instance, it will flap back
        to not waiting for a key almost immediately, didn't make sense
        positing after requesting an instance. Also post key-received when
        we receive the key.
        (webkitMediaCommonEncryptionDecryptSinkEventHandler): It has now
        been arranged that a CDMInstance will always be present in an OOB
        message, so parse it out here.
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithInstance):
        As above, make sure when posting the OOB that a CDMInstance is present.

2018-11-13  Charlie Turner  <cturner@igalia.com>

        Various compiler warnings/errors fixes.
        https://bugs.webkit.org/show_bug.cgi?id=191583

        Reviewed by Frédéric Wang.

        * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
        (WebCore::IDBServer::MemoryIDBBackingStore::clearObjectStore):
        ASSERT is only compiled in DEBUG mode, so guarding with
        !LOG_DISABLED is wrong.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        showPaintOrderTree is only compiled in ENABLE(TREE_DEBUGGING)
        mode, so guarding with !LOG_DISABLED was wrong.
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        Ditto, this time with member .depth.
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): Ditto.
        * rendering/svg/SVGRenderSupport.cpp:
        (WebCore::SVGRenderSupport::styleChanged): Add another unused
        parameter.

2018-11-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Don't schedule animation frames or update style while an accelerated animation is running
        https://bugs.webkit.org/show_bug.cgi?id=191542
        <rdar://problem/45356027>

        Reviewed by Simon Fraser.

        Test: animations/no-style-recalc-during-accelerated-animation.html

        In order to be more power-efficient, we stop scheduling calls to updateAnimationsAndSendEvents() when running only accelerated
        animations. To do that, we prevent scheduling further animation resolution if we're in the process of updating animations, and
        when we are done, call the new DocumentTimeline::scheduleNextTick() method that will check whether we have only accelerated
        animations running, and in that case check which of those animations needs an update the soonest and starts a timer scheduled
        for that time when we'll schedule animation resolution.

        By default, animations compute the time until their natural completion but in the case of CSS Animations, we want to make sure
        we also update animations in-flight to dispatch "animationiteration" events.

        * animation/AnimationEffect.h: Make the simpleIterationProgress() public so it can be called by WebAnimation::timeToNextTick().
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline): Create the m_tickScheduleTimer and set it up to call scheduleAnimationResolutionIfNeeded().
        (WebCore::DocumentTimeline::suspendAnimations): If we don't already have a cached current time, cache the current time.
        (WebCore::DocumentTimeline::resumeAnimations): Reset the cached current time to ensure we'll get a fresh one when updating animations next.
        (WebCore::DocumentTimeline::liveCurrentTime const): Factor the code to compute the current time out of currentTime() so that we can
        cache the current time in suspendAnimations() without also automatically clearing the current time.
        (WebCore::DocumentTimeline::currentTime): Use liveCurrentTime() and cacheCurrentTime() since much of the code from this function has been
        factored out into those. Additionally, we were failing to clear the current time if called inside an animation frame, which we now do correctly
        by virtue of using cacheCurrentTime(). This fixes some flakiness.
        (WebCore::DocumentTimeline::cacheCurrentTime): Factor the code to cache the current time out of currentTime(). 
        (WebCore::DocumentTimeline::maybeClearCachedCurrentTime): No need to clear the current time if we get suspended.
        (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Prevent scheduling an animation update if we're in the middle of one already,
        scheduleNextTick() will be called after animations are updated to see if we should schedule an animation update instead.
        (WebCore::DocumentTimeline::unscheduleAnimationResolution): Cancel the m_tickScheduleTimer if we need to unschedule animation resolution.
        (WebCore::DocumentTimeline::animationResolutionTimerFired): Factor the call to applyPendingAcceleratedAnimations() out of updateAnimationsAndSendEvents()
        and call scheduleNextTick().
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): Set the new m_isUpdatingAnimations member variable to true while this function is running.
        (WebCore::DocumentTimeline::scheduleNextTick): Schedule an animation update immediately if we have any relevant animation that is not accelerated.
        Otherwise, iterate through all animations to figure out the earliest moment at which we need to update animations.
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Use the new WebAnimation::isRunningAccelerated() function.
        * animation/DocumentTimeline.h:
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::isRunningAccelerated const): Since we end up checking if an animation is running with an accelerated effect, we introduce a new
        function to get that information directly through the WebAnimation object without bothering about its effect.
        (WebCore::WebAnimation::resolve): We should only call updateFinishedState() here since timingDidChange() would also notify the timeline about a potential
        change in relevance, which is not necessary and which would schedule an animation frame even for animations that are accelerated.
        (WebCore::WebAnimation::timeToNextTick const): Compute the time until our animation completion or, in the case of CSS animations, the next iteration.
        * animation/WebAnimation.h:

2018-11-13  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Incorrect tile coverage when resizing a layer out of the visible area
        https://bugs.webkit.org/show_bug.cgi?id=191545

        Reviewed by Žan Doberšek.

        Keep track of layer size changes even if they happen when the layer is not in the visible
        area, so we can update edge tiles when the layer gets visible.

        * platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
        (WebCore::TiledBackingStore::createTiles):
        * platform/graphics/texmap/coordinated/TiledBackingStore.h:

2018-11-12  Rob Buis  <rbuis@igalia.com>

        Content-Type parameter values should allow empty quoted strings
        https://bugs.webkit.org/show_bug.cgi?id=191388

        Reviewed by Dean Jackson.

        According to RFC 2045 and https://mimesniff.spec.whatwg.org/#parsing-a-mime-type empty
        quoted strings are acceptable for Content-Type parameter values. They
        are accepted by Firefox and Chrome implementations as well.

        Test: web-platform-tests/xhr/overridemimetype-blob.html

        * platform/network/ParsedContentType.cpp:
        (WebCore::parseToken):
        (WebCore::parseQuotedString):
        (WebCore::parseContentType):
        * platform/network/ParsedContentType.h:

2018-11-12  Christopher Reid  <chris.reid@sony.com>

        [Curl] Reject entire cookie if the domain fails a tailmatch.
        https://bugs.webkit.org/show_bug.cgi?id=191406

        Reviewed by Youenn Fablet.

        Currently we don't put domain attribute of cookie when it fails a tailmatch. As Firefox
        and Chrome do, we are going to reject the entire cookie if the domain fails a tailmatch instead.
        Also cleanup Cookie database implementation to make them testable better.

        Tests: TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp

        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::canAcceptCookie): Added.
        (WebCore::CookieJarDB::setCookie):
        * platform/network/curl/CookieUtil.cpp:
        (WebCore::CookieUtil::parseCookieAttributes):
        (WebCore::CookieUtil::parseCookieHeader):
        * platform/network/curl/CookieUtil.h:

2018-11-12  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: show secure certificate details per-request
        https://bugs.webkit.org/show_bug.cgi?id=191447
        <rdar://problem/30019476>

        Reviewed by Joseph Pecoraro.

        Test: http/tests/inspector/network/resource-response-security.html

        * loader/ResourceLoader.h:
        (WebCore::ResourceLoader::shouldIncludeCertificateInfo const):
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::shouldIncludeCertificateInfo const): Added.
        Always save certificate information when WebInspector is open.

        * platform/network/CertificateInfoBase.h: Added.
        (WebCore::CertificateInfoBase::containsNonRootSHA1SignedCertificate const):
        (WebCore::CertificateInfoBase::summaryInfo const):
        (WebCore::CertificateInfoBase::isEmpty const):
        * platform/network/cf/CertificateInfo.h:
        (WebCore::CertificateInfo::summaryInfo const): Added.
        * platform/network/cf/CertificateInfoCFNet.cpp: Renamed from Source/WebCore/platform/network/mac/CertificateInfoMac.mm.
        (WebCore::CertificateInfo::containsNonRootSHA1SignedCertificate):
        (WebCore::CertificateInfo::summaryInfo const): Added.
        * platform/network/curl/CertificateInfo.h:
        (WebCore::CertificateInfo::summaryInfo const): Added.
        (WebCore::CertificateInfo::isEmpty const): Added.
        * platform/network/soup/CertificateInfo.h:
        (WebCore::CertificateInfo::summaryInfo const): Added.
        (WebCore::CertificateInfo::isEmpty const): Added.
        Create base class for `CertificateInfo` so that `InspectorNetworkAgent` doesn't need to have
        platform-specific code in its implementation.

        * platform/network/cocoa/CertificateInfoCocoa.mm: Renamed from Source/WebCore/platform/network/mac/CertificateInfoMac.mm.
        * platform/network/curl/CertificateInfoCFNet.cpp: Renamed from Source/WebCore/platform/network/curl/CertificateInfo.cpp.
        * platform/network/soup/CertificateInfoSoup.cpp: Renamed from Source/WebCore/platform/network/soup/CertificateInfo.cpp.

        * inspector/NetworkResourcesData.h:
        (WebCore::NetworkResourcesData::ResourceData::certificateInfo const): Added.
        (WebCore::NetworkResourcesData::ResourceData::setCertificateInfo): Added.
        * inspector/NetworkResourcesData.cpp:
        (WebCore::NetworkResourcesData::responseReceived):

        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):

        * PlatformAppleWin.cmake:
        * PlatformMac.cmake:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/Curl.cmake:
        * platform/SourcesSoup.txt:

2018-11-12  Zalan Bujtas  <zalan@apple.com>

        Do not collapse the soon-to-be-parent anon block when we shuffle around the marker item renderer.
        https://bugs.webkit.org/show_bug.cgi?id=191554
        <rdar://problem/45825265>

        Reviewed by Antti Koivisto.

        While moving the marker item renderer to its correct subtree, we accidentally remove the soon-to-be parent anonymous block.
        Moving a renderer is a 2 step process:
        1. Detach the renderer from its current parent
        2. Attach it to its new parent.
        During step #1, we check if there is a chance to collapse anonymous blocks. In this case the soon-to-be-parent is a sibling anonymous block which, after detaching the marker sibling
        is not needed anymore (except we use it as the new parent).

        Test: fast/inline/marker-list-item-move-should-not-crash.html

        * rendering/updating/RenderTreeBuilder.cpp:
        (WebCore::RenderTreeBuilder::detach):
        * rendering/updating/RenderTreeBuilder.h:
        * rendering/updating/RenderTreeBuilderBlock.cpp:
        (WebCore::RenderTreeBuilder::Block::detach):
        * rendering/updating/RenderTreeBuilderBlock.h:
        * rendering/updating/RenderTreeBuilderList.cpp:
        (WebCore::RenderTreeBuilder::List::updateItemMarker):

2018-11-12  Javier Fernandez  <jfernandez@igalia.com>

        [css-grid] Refactoring to make more explicit the orthogonal items' pre-layout logic
        https://bugs.webkit.org/show_bug.cgi?id=191358

        Reviewed by Manuel Rego Casasnovas.

        These changes are just a refactoring to ease the integration of the new Baseline Alignment
        logic in a follow up patch.

        We need to properly estimate the grid area size of orthogonal items so that we can perform
        an accurate pre-layout. This is important because orthogonal items will synthesize their baseline
        if they participate in any baseline alignment context.

        No new tests, since no behavior change has been introduced in this patch.

        * rendering/Grid.cpp:
        (WebCore::Grid::setNeedsItemsPlacement):
        * rendering/Grid.h:
        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::GridTrackSizingAlgorithm::estimatedGridAreaBreadthForChild const):
        (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
        (WebCore::GridTrackSizingAlgorithm::isRelativeGridLengthAsAuto const):
        (WebCore::GridTrackSizingAlgorithm::isRelativeSizedTrackAsAuto const):
        (WebCore::GridTrackSizingAlgorithm::gridTrackSize const):
        (WebCore::IndefiniteSizeStrategy::findUsedFlexFraction const):
        (WebCore::GridTrackSizingAlgorithm::run):
        (WebCore::GridTrackSizingAlgorithm::reset):
        * rendering/GridTrackSizingAlgorithm.h:
        (WebCore::GridTrackSizingAlgorithmStrategy::gridTrackSize const):
        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::repeatTracksSizingIfNeeded):
        (WebCore::RenderGrid::layoutBlock):
        (WebCore::RenderGrid::computeIntrinsicLogicalWidths const):
        (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize const):
        (WebCore::RenderGrid::placeItemsOnGrid const):
        (WebCore::RenderGrid::performGridItemsPreLayout const):
        (WebCore::overrideSizeChanged):
        (WebCore::hasRelativeBlockAxisSize):
        (WebCore::RenderGrid::updateGridAreaLogicalSize const):
        (WebCore::RenderGrid::layoutGridItems):
        * rendering/RenderGrid.h:

2018-11-12  Sihui Liu  <sihui_liu@apple.com>

        imported/w3c/web-platform-tests/IndexedDB/keygenerator-explicit.html crashing on iOS device
        https://bugs.webkit.org/show_bug.cgi?id=191500

        Reviewed by Dean Jackson.

        When double value is bigger than maximum unsigned int, converting double to unsigned int has
        different behaviors on macOS and iOS. On macOS, the result would be 0 while on iOS it would be
        maximum unsigned int.

        Covered by existing test.

        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::generateKeyNumber):
        (WebCore::IDBServer::SQLiteIDBBackingStore::maybeUpdateKeyGeneratorNumber):

2018-11-12  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API Test for Curl cookie backend.
        https://bugs.webkit.org/show_bug.cgi?id=191493

        Reviewed by Youenn Fablet.

        Refactoring for cookie backend interface.

        Tests: TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp

        * platform/FileSystem.h:
        * platform/network/curl/CookieJarCurlDatabase.cpp:
        (WebCore::cookiesForSession):
        (WebCore::CookieJarCurlDatabase::setCookiesFromDOM const):
        (WebCore::CookieJarCurlDatabase::setCookiesFromHTTPResponse const):
        (WebCore::CookieJarCurlDatabase::getRawCookies const):
        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::openDatabase):
        (WebCore::CookieJarDB::checkSQLiteReturnCode):
        (WebCore::CookieJarDB::isEnabled const):
        (WebCore::CookieJarDB::searchCookies):
        (WebCore::CookieJarDB::setCookie):
        (WebCore::CookieJarDB::deleteCookie):
        (WebCore::CookieJarDB::deleteCookieInternal):
        (WebCore::CookieJarDB::deleteCookies):
        (WebCore::CookieJarDB::deleteAllCookies):
        (WebCore::CookieJarDB::executeSimpleSql):
        (WebCore::CookieJarDB::isEnabled): Deleted.
        * platform/network/curl/CookieJarDB.h:
        * platform/network/curl/CookieUtil.cpp:
        (WebCore::CookieUtil::parseCookieHeader):
        * platform/network/curl/CookieUtil.h:
        * platform/win/FileSystemWin.cpp:
        (WebCore::FileSystem::generateTemporaryPath):
        (WebCore::FileSystem::openTemporaryFile):
        (WebCore::FileSystem::createTemporaryDirectory):
        (WebCore::FileSystem::deleteNonEmptyDirectory):

2018-11-12  Tim Horton  <timothy_horton@apple.com>

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        Tests: editing/images/basic-editable-image.html
               editing/images/reparent-editable-image-maintains-strokes.html

        Add the beginnings of a mechanism to replace images with a special attribute
        with a native drawing view in the UI process.

        * page/Settings.yaml:
        Add a setting to control whether images become natively editable when they
        have the x-apple-editable-image attribute.

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::editableImageViewID const):
        Lazily generate an EmbeddedViewID and persist it on the <img> element.

        * html/HTMLImageElement.h:
        Rearrange the service controls methods to sit before the members.
        Add m_editableImageViewID and editableImageViewID().

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::nextEmbeddedViewID):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::setContentsToEmbeddedView):
        Add a new ContentsLayerPurpose, EmbeddedView, which is only supported
        on Cocoa platforms and when using RemoteLayerTree.
        Add ContentsLayerEmbeddedViewType, which currently only has the EditableImage type.
        Add setContentsToEmbeddedView, which takes a ContentsLayerEmbeddedViewType
        and an EmbeddedViewID to uniquely identify and communicate about the
        embedded view (which may move between layers, since it is tied to an element).

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::createPlatformCALayerForEmbeddedView):
        (WebCore::GraphicsLayerCA::setContentsToEmbeddedView):
        When setting GraphicsLayer's contents to an embedded view, we use
        a special PlatformCALayer factory that takes the EmbeddedViewID and type.
        GraphicsLayerCARemote will override this and make a correctly-initialized
        PlatformCALayerRemote that keeps track of the EmbeddedViewID.

        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.cpp:
        (WebCore::operator<<):
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::embeddedViewID const):
        Add stubs and logging for EmbeddedViewID on PlatformCALayer.
        These will be overridden by PlatformCALayerRemote to do more interesting things.

        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::isEditableImage const):
        Add a getter that return true if the setting is enabled and
        x-apple-editable-image is empty or true.

        (WebCore::RenderImage::requiresLayer const):
        RenderImage requires a layer either if RenderReplaced does, or we are an
        editable image.

        * rendering/RenderImage.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::shouldBeNormalFlowOnly const):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        Push the EmbeddedViewID and type down to GraphicsLayer for editable images.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingLayer const):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::requiresCompositingForEditableImage const):
        * rendering/RenderLayerCompositor.h:
        Make editable images require compositing implicitly.

2018-11-12  Don Olmstead  <don.olmstead@sony.com>

        Shipped PNGs include bad profiles: iCCP: known incorrect sRGB profile
        https://bugs.webkit.org/show_bug.cgi?id=189230
        <rdar://problem/44050379>

        Reviewed by Joseph Pecoraro.

        Runs all png images through zopflipng. This results in a smaller file
        size and takes care of this issue as a byproduct.

        * Modules/modern-media-controls/images/iOS/airplay-placard@1x.png:
        * Modules/modern-media-controls/images/iOS/airplay-placard@2x.png:
        * Modules/modern-media-controls/images/iOS/airplay-placard@3x.png:
        * Modules/modern-media-controls/images/iOS/invalid-placard@1x.png:
        * Modules/modern-media-controls/images/iOS/invalid-placard@2x.png:
        * Modules/modern-media-controls/images/iOS/invalid-placard@3x.png:
        * Modules/modern-media-controls/images/iOS/pip-placard@1x.png:
        * Modules/modern-media-controls/images/iOS/pip-placard@2x.png:
        * Modules/modern-media-controls/images/iOS/pip-placard@3x.png:
        * Modules/modern-media-controls/images/macOS/airplay-placard@1x.png:
        * Modules/modern-media-controls/images/macOS/airplay-placard@2x.png:
        * Modules/modern-media-controls/images/macOS/invalid-placard@1x.png:
        * Modules/modern-media-controls/images/macOS/invalid-placard@2x.png:
        * Modules/modern-media-controls/images/macOS/pip-placard@1x.png:
        * Modules/modern-media-controls/images/macOS/pip-placard@2x.png:
        * Resources/AttachmentPlaceholder.png:
        * Resources/AttachmentPlaceholder@2x.png:
        * Resources/ListButtonArrow.png:
        * Resources/ListButtonArrow@2x.png:
        * Resources/missingImage.png:
        * Resources/missingImage@2x.png:
        * Resources/missingImage@3x.png:
        * Resources/moveCursor.png:
        * Resources/northEastSouthWestResizeCursor.png:
        * Resources/northSouthResizeCursor.png:
        * Resources/northWestSouthEastResizeCursor.png:
        * Resources/nullPlugin.png:
        * Resources/nullPlugin@2x.png:
        * Resources/panIcon.png:
        * Resources/textAreaResizeCorner.png:
        * Resources/textAreaResizeCorner@2x.png:
        * Resources/urlIcon.png:

2018-11-12  Youenn Fablet  <youenn@apple.com>

        RealtimeOutgoing A/V sources should observe their sources only if having a sink
        https://bugs.webkit.org/show_bug.cgi?id=191490

        Reviewed by Eric Carlson.

        Observe the source that generates media based on the sinks:
        - Do not observe at creation time
        - For first sink, start observing
        - When no more sink, stop observing
        Apply this principle for both outgoing audio and video sources.
        Add locks for the sinks to ensure thread-safety.
        Make sinks HashSet which is more robust.

        Do some refactoring to better isolate generic outgoing sources from Cocoa/GTK implementations.

        Covered by existing tests and updated webrtc/remove-track.html.

        * platform/mediastream/RealtimeOutgoingAudioSource.cpp:
        (WebCore::RealtimeOutgoingAudioSource::~RealtimeOutgoingAudioSource):
        (WebCore::RealtimeOutgoingAudioSource::stop):
        (WebCore::RealtimeOutgoingAudioSource::AddSink):
        (WebCore::RealtimeOutgoingAudioSource::RemoveSink):
        (WebCore::RealtimeOutgoingAudioSource::sendAudioFrames):
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        * platform/mediastream/RealtimeOutgoingVideoSource.cpp:
        (WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
        (WebCore::RealtimeOutgoingVideoSource::~RealtimeOutgoingVideoSource):
        (WebCore::RealtimeOutgoingVideoSource::observeSource):
        (WebCore::RealtimeOutgoingVideoSource::setSource):
        (WebCore::RealtimeOutgoingVideoSource::stop):
        (WebCore::RealtimeOutgoingVideoSource::AddOrUpdateSink):
        (WebCore::RealtimeOutgoingVideoSource::RemoveSink):
        * platform/mediastream/RealtimeOutgoingVideoSource.h:
        (WebCore::RealtimeOutgoingVideoSource::isSilenced const):
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):
        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingAudioSourceCocoa::RealtimeOutgoingAudioSourceCocoa):
        (WebCore::RealtimeOutgoingAudioSourceCocoa::audioSamplesAvailable):
        (WebCore::RealtimeOutgoingAudioSourceCocoa::pullAudioData):
        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.h:
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):

2018-11-12  Youenn Fablet  <youenn@apple.com>

        Support setting stream ids when adding a transceiver
        https://bugs.webkit.org/show_bug.cgi?id=191307

        Reviewed by Eric Carlson.

        Add support for streams in RTCTransceiverInit.
        Add plumbing down to libwebrtc.
        Covered by rebased tests.

        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/RTCPeerConnection.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::fromRtpTransceiverInit):

2018-11-12  Antti Koivisto  <antti@apple.com>

        Support dynamic pseudo-classes on elements with display: contents
        https://bugs.webkit.org/show_bug.cgi?id=181640
        <rdar://problem/36605415>

        Reviewed by Dean Jackson.

        The code for :hover and :active style invalidation assumes that only elements with renderer need invalidation.

        This patch fixes '.display-content-element:hover span' case but not '.display-content-element:hover' case but
        includes tests for both. The latter is not super useful anyway (as it only affects rendering with inherited
        text properties).

        Test: fast/css/display-contents-hover-active.html

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

            Traverse up in composed tree instead of render tree when invalidating. This has the same order as render tree
            but also includes display:content elements. This also allows removing the special display:none case.

        * dom/Element.cpp:
        (WebCore::Element::setActive):
        (WebCore::Element::setHovered):

            Also look into display:contents style for invalidation checks.

        (WebCore::Element::renderOrDisplayContentsStyle const):

            Make this helper an Element member.

        * dom/Element.h:
        * dom/Node.cpp:
        (WebCore::Node::parentElementInComposedTree const):

            Support starting from a PseudoElement. This is consistent with ComposedTreeAncestorIterator.

        * rendering/updating/RenderTreePosition.cpp:
        (WebCore::RenderTreePosition::nextSiblingRenderer const):
        * style/StyleTreeResolver.cpp:
        (WebCore::Style::TreeResolver::resolveElement):
        (WebCore::Style::TreeResolver::createAnimatedElementUpdate):
        (WebCore::Style::shouldResolveElement):
        (WebCore::Style::TreeResolver::resolveComposedTree):
        (WebCore::Style::renderOrDisplayContentsStyle): Deleted.

            Use the Element::renderOrDisplayContentsStyle() instead.

2018-11-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations experimental
        https://bugs.webkit.org/show_bug.cgi?id=191543

        Reviewed by Dean Jackson.

        * page/RuntimeEnabledFeatures.h:

2018-11-12  Simon Fraser  <simon.fraser@apple.com>

        feFlood with alpha color doesn't work correctly
        https://bugs.webkit.org/show_bug.cgi?id=163666

        Reviewed by Zalan Bujtas.
        
        FEFlood::platformApplySoftware() erroneously used colorWithOverrideAlpha()
        rather than multiplying the flood color with the flood opacity as other browsers do.

        Test: svg/filters/feFlood-with-alpha-color.html

        * platform/graphics/Color.cpp:
        (WebCore::Color::colorWithAlpha const): I tried using colorWithAlphaMultipliedBy() elsewhere,
        and it triggered a behavior change, so add a comment.
        * platform/graphics/filters/FEFlood.cpp:
        (WebCore::FEFlood::platformApplySoftware):
        * svg/SVGStopElement.cpp:
        (WebCore::SVGStopElement::stopColorIncludingOpacity const):

2018-11-12  Eric Carlson  <eric.carlson@apple.com>

        Require <iframe allow="display"> for an iframe to use getDisplayMedia
        https://bugs.webkit.org/show_bug.cgi?id=191505
        <rdar://problem/45968811>

        Reviewed by Jer Noble.

        Test: http/tests/media/media-stream/get-display-media-iframe-allow-attribute.html

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start):
        * Modules/mediastream/UserMediaController.cpp:
        (WebCore::isAllowedToUse):
        (WebCore::UserMediaController::canCallGetUserMedia):
        (WebCore::UserMediaController::logGetUserMediaDenial):
        * Modules/mediastream/UserMediaController.h:
        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::start):

2018-11-12  Simon Fraser  <simon.fraser@apple.com>

        Make compositing updates incremental
        https://bugs.webkit.org/show_bug.cgi?id=90342

        Reviewed by Antti Koivisto.

        Previously, updating compositing layers required two full RenderLayer tree traversals,
        and all the work was done for every RenderLayer on each composting update. This could be expensive
        on pages with lots of RenderLayers.

        These changes make compositing updates more incremental. Compositing updates still require
        two tree traversals. The first determines which RenderLayers need to be composited (of those which
        weren't already made composited at style-change time), because of reasons that can only be determined
        post-layout, and indirect reasons including overlap. The second traversal updates the configuration, geometry
        and GraphicsLayer tree for the composited layers. Dependencies on both descendant and ancestor state make
        it hard to fold these two traversals together.

        In order to minimize the work done during these traversals, dirty bits are stored on RenderLayers,
        and propagated to ancestor layers in paint order. There are two sets of bits: those related to the first
        "compositing requirements" traversal, and those related to the second "update backing and hierarchy" traversal.
        When a RenderLayer gets a dirty bit set, bits are propagated to ancestors to indicate that children need
        to be visited.

        Sadly entire subtrees can't be skipped during the "compositing requirements" traversal because we still have
        to accumulate overlap rects, but RenderLayerCompositor::traverseUnchangedSubtree() is used to minimize
        work in that case. Subtrees can be skipped in the "update backing and hierarchy" traversal. Entire traversals can
        be skipped if no change has triggered the need for that traversal.
        
        These changes fix a correctness issue where transform changes now trigger overlap re-evaluation, which causes
        more layer geometry updates than before. This regressed the MotionMark "Focus" test, when geometry updates
        triggered layer resizes as the filter blur radius changed, which then triggered repaints. This is fixed by
        excluding composited filters from the composited bounds (but still taking them into account for overlap).

        Care is taken to avoid triggering traversals in non-composited documents (tested by no-updates-in-non-composited-iframe.html).

        Code to set the dirty bits is added in various places that change properties that compositing depends on.
        
        These changes also subsume the patch in 176196; we now never consult properties that rely on layout from the
        style change code path, and the only call stack for geometry updates is from the "update backing and hierarchy"
        traversal, which is always a pre-order traversal.

        Tests: compositing/geometry/stacking-context-change-layer-reparent.html
               compositing/layer-creation/change-to-overlap.html
               compositing/updates/no-updates-in-non-composited-iframe.html

        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::markContextChanged): Need to differentiate between a canvas becoming composited
        for the first time, and its pixels changing with a new 'CanvasPixelsChanged' value.
        * page/FrameView.cpp:
        (WebCore::FrameView::setViewportConstrainedObjectsNeedLayout):
        * page/Page.cpp:
        (WebCore::Page::setPageScaleFactor):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::updateBackdropFilters): If we just made a layer for backdrops, we need to update sublayers.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::styleWillChange):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::~RenderLayer):
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::shouldBeStackingContext const):
        (WebCore::RenderLayer::stackingContext const):
        (WebCore::RenderLayer::dirtyZOrderLists):
        (WebCore::RenderLayer::dirtyNormalFlowList):
        (WebCore::RenderLayer::updateNormalFlowList):
        (WebCore::RenderLayer::rebuildZOrderLists):
        (WebCore::RenderLayer::setAncestorsHaveCompositingDirtyFlag):
        (WebCore::RenderLayer::contentChanged):
        (WebCore::RenderLayer::updateLayerPositions):
        (WebCore::RenderLayer::updateTransform):
        (WebCore::RenderLayer::updateLayerPosition):
        (WebCore::RenderLayer::enclosingCompositingLayer const):
        (WebCore::RenderLayer::enclosingCompositingLayerForRepaint const):
        (WebCore::RenderLayer::clippingRootForPainting const):
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::updateCompositingLayersAfterScroll):
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
        (WebCore::RenderLayer::paintLayerContents):
        (WebCore::RenderLayer::hitTest):
        (WebCore::RenderLayer::hitTestLayer):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputPaintOrderTreeRecursive):
        (WebCore::compositingContainer): Deleted.
        * rendering/RenderLayer.h:
        (WebCore::RenderLayer::clearZOrderLists):
        (WebCore::RenderLayer::paintOrderParent const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateCompositedBounds):
        (WebCore::RenderLayerBacking::updateAfterWidgetResize):
        (WebCore::RenderLayerBacking::updateAfterLayout):
        (WebCore::RenderLayerBacking::updateConfigurationAfterStyleChange):
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::setRequiresBackgroundLayer):
        (WebCore::RenderLayerBacking::updateMaskingLayer):
        (WebCore::RenderLayerBacking::paintsContent const):
        (WebCore::RenderLayerBacking::contentChanged):
        (WebCore::RenderLayerBacking::setContentsNeedDisplay):
        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
        (WebCore::RenderLayerBacking::startAnimation):
        (WebCore::RenderLayerBacking::animationFinished):
        (WebCore::RenderLayerBacking::startTransition):
        (WebCore::RenderLayerBacking::transitionFinished):
        (WebCore::RenderLayerBacking::setCompositedBounds):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::CompositingState::CompositingState):
        (WebCore::RenderLayerCompositor::enableCompositingMode):
        (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
        (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlagsAfterLayout):
        (WebCore::RenderLayerCompositor::willRecalcStyle):
        (WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout):
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
        (WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
        (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
        (WebCore::RenderLayerCompositor::layerBecameNonComposited):
        (WebCore::RenderLayerCompositor::logLayerInfo):
        (WebCore::clippingChanged):
        (WebCore::styleAffectsLayerGeometry):
        (WebCore::RenderLayerCompositor::layerStyleChanged):
        (WebCore::RenderLayerCompositor::needsCompositingUpdateForStyleChangeOnNonCompositedLayer const):
        (WebCore::RenderLayerCompositor::updateBacking):
        (WebCore::RenderLayerCompositor::updateLayerCompositingState):
        (WebCore::RenderLayerCompositor::layerWasAdded):
        (WebCore::RenderLayerCompositor::layerWillBeRemoved):
        (WebCore::RenderLayerCompositor::enclosingNonStackingClippingLayer const):
        (WebCore::RenderLayerCompositor::computeExtent const):
        (WebCore::RenderLayerCompositor::addToOverlapMap):
        (WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
        (WebCore::RenderLayerCompositor::rootLayerConfigurationChanged):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::updateRootLayerPosition):
        (WebCore::RenderLayerCompositor::needsToBeComposited const):
        (WebCore::RenderLayerCompositor::requiresCompositingLayer const):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::clippedByAncestor const):
        (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const):
        (WebCore::RenderLayerCompositor::requiresCompositingForTransform const):
        (WebCore::RenderLayerCompositor::requiresCompositingForVideo const):
        (WebCore::RenderLayerCompositor::requiresCompositingForFilters const):
        (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
        (WebCore::RenderLayerCompositor::requiresCompositingForPlugin const):
        (WebCore::RenderLayerCompositor::requiresCompositingForFrame const):
        (WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame const):
        (WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
        (WebCore::RenderLayerCompositor::styleChangeMayAffectIndirectCompositingReasons):
        (WebCore::RenderLayerCompositor::fixedLayerIntersectsViewport const):
        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
        (WebCore::RenderLayerCompositor::rootOrBodyStyleChanged):
        (WebCore::RenderLayerCompositor::rootBackgroundColorOrTransparencyChanged):
        (WebCore::operator<<):
        (WebCore::RenderLayerCompositor::setCompositingLayersNeedRebuild): Deleted.
        (WebCore::checkIfDescendantClippingContextNeedsUpdate): Deleted.
        (WebCore::isScrollableOverflow): Deleted.
        (WebCore::styleHasTouchScrolling): Deleted.
        (WebCore::styleChangeRequiresLayerRebuild): Deleted.
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): Deleted.
        (WebCore::RenderLayerCompositor::rootFixedBackgroundsChanged): Deleted.
        (WebCore::RenderLayerCompositor::updateLayerTreeGeometry): Deleted.
        (WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry): Deleted.
        * rendering/RenderLayerCompositor.h:
        * rendering/RenderTreeAsText.cpp:
        (WebCore::writeLayers):

2018-11-12  Rob Buis  <rbuis@igalia.com>

        CSSCalcOperation constructor wastes 6KB of Vector capacity on cnn.com
        https://bugs.webkit.org/show_bug.cgi?id=190839

        Reviewed by Frédéric Wang.

        The CSSCalcOperation ctor that takes a leftSide and rightSide parameter
        wastes memory since it will always have size 2 but claims the
        default Vector size. So make sure to reserve an initial capacity of 2.

        * css/CSSCalculationValue.cpp:

2018-11-12  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        WTFMove(xxx) is used in arguments while other arguments touch xxx
        https://bugs.webkit.org/show_bug.cgi?id=191544

        Reviewed by Alex Christensen.

        The order of the evaluation of C++ arguments is undefined. If we use WTFMove(xxx),
        xxx should not be touched in the other arguments. This patch fixes such uses in
        IDB code.

        * Modules/indexeddb/IDBObjectStore.cpp:
        (WebCore::IDBObjectStore::deleteIndex):
        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::scheduleOperation):
        * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
        (WebCore::IDBServer::MemoryIDBBackingStore::registerObjectStore):
        * Modules/indexeddb/server/MemoryObjectStore.cpp:
        (WebCore::IDBServer::MemoryObjectStore::registerIndex):

2018-11-12  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Construct dedicated runs when the inline element requires it.
        https://bugs.webkit.org/show_bug.cgi?id=191509

        Reviewed by Antti Koivisto.

        In certain cases, a run can overlap multiple inline elements like this:

        <span>normal text content</span><span style="position: relative; left: 10px;">but this one needs a dedicated run</span><span>end of text</span>

        The content above generates one long run <normal text contentbut this one needs dedicated runend of text> <- input to line breaking.
        However, since the middle run is positioned, it needs to be moved independently from the rest of the content, hence it needs a dedicated inline run.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::contentRequiresSeparateRun):
        (WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
        (WebCore::Layout::InlineFormattingContext::postProcessInlineRuns const):
        (WebCore::Layout::InlineFormattingContext::closeLine const):
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::inlineFormattingState const):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::nextRun): mid-word breaking is not implemented yet.
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::overlapsMultipleInlineItems const):
        * layout/inlineformatting/InlineRunProvider.cpp:
        (WebCore::Layout::InlineRunProvider::processInlineTextItem):
        * layout/inlineformatting/InlineRunProvider.h:
        (WebCore::Layout::InlineRunProvider::Run::TextContext::expand):
        (WebCore::Layout::InlineRunProvider::Run::textContext):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::setStart): Deleted.
        (WebCore::Layout::InlineRunProvider::Run::TextContext::setLength): Deleted.

2018-11-12  Jer Noble  <jer.noble@apple.com>

        [MSE] Frame re-ordering can cause iframes to never be enqueued
        https://bugs.webkit.org/show_bug.cgi?id=191485

        Reviewed by Eric Carlson.

        Test: media/media-source/media-source-dropped-iframe.html

        Some frame re-ordering techniques result in files where the first frame has a
        decode timestamp < 0, but a presentation timestamp >= 0. When appending these
        samples to existing content, we can fail to enqueue the first frame because its
        DTS overlaps an existing sample, but the presentation timestamp does not.
        Rather than try to only enqueue samples whose decode timestamps are > than the
        greatest decode end timestamp (minus some fudge factor), allow all frames to be
        added to the decode queue if they are strictly ordered greater than the last
        enqueued frame.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::TrackBuffer::TrackBuffer):
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
        (WebCore::SourceBuffer::provideMediaData):
        (WebCore::SourceBuffer::reenqueueMediaForTime):

2018-11-12  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        IDBTransaction does not use "RefPtr<IDBTransaction> self"
        https://bugs.webkit.org/show_bug.cgi?id=190436

        Reviewed by Alex Christensen.

        It seems that `RefPtr<IDBTransaction> self;` is not effective since it does not capture anything.
        Use `protectedThis = makeRef(*this)` instead.

        No behavior change.

        * Modules/indexeddb/IDBTransaction.cpp:
        (WebCore::IDBTransaction::IDBTransaction):

2018-11-12  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Introduce AbortableTaskQueue
        https://bugs.webkit.org/show_bug.cgi?id=190902

        Reviewed by Xabier Rodriguez-Calvar.

        A new synchronization primitive is introduced: AbortableTaskQueue,
        which allows to send work to the main thread from a background thread
        with the option to perform two-phase cancellation (startAborting() and
        finishAborting()).

        This new primitive has been used to overhaul GstBus messaging in
        AppendPipeline. A lot of code made redundant has been deleted in the
        process and lots of internal functions were now able to be made
        private. As part of the refactor all glib signals in AppendPipeline
        now use lambdas. All usages of WTF::isMainThread() in AppendPipeline
        have been replaced by isMainThread() for consistency with the rest of
        WebKit.

        Two-phase cancellation is still not used in AppendPipeline as of this
        patch, but it will be used in a future patch that makes use of
        GStreamer flushes to implement correct MSE abort semantics. There are
        unit tests to ensure it works correctly, even if it's still not used.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/AbortableTaskQueue.h: Added.
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::dumpAppendState):
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::~AppendPipeline):
        (WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
        (WebCore::AppendPipeline::handleAppsinkNewSampleFromAnyThread):
        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
        * platform/graphics/gstreamer/mse/AppendPipeline.h:
        (WebCore::AppendPipeline::sourceBufferPrivate):
        (WebCore::AppendPipeline::appsinkCaps):
        (WebCore::AppendPipeline::track):
        (WebCore::AppendPipeline::demuxerSrcPadCaps):
        (WebCore::AppendPipeline::playerPrivate):

2018-11-12  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME] waitingforkey event should consider decryptors' waiting status
        https://bugs.webkit.org/show_bug.cgi?id=191459

        Reviewed by Carlos Garcia Campos.

        The new cross platform architecture to report waitingforkey and
        recover from it requires a more accurate knowledge of what is
        going on with the decryptors because events are reported only once
        (per key exchange run) and crossplatform only continues if we are
        actually ready to continue, meaning that no decryptors are
        waiting.

        * platform/graphics/gstreamer/GUniquePtrGStreamer.h: Added
        GstIterator deleter.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::setWaitingForKey): Bail
        out if we are requested to not wait anymore but there are still
        waiting decryptors.
        (WebCore::MediaPlayerPrivateGStreamerBase::waitingForKey const):
        Query the pipeline, just a query after pipeline is built and
        manual inspection during build. The query is optimal but sometimes
        we can get this request when the pipeline is under construction so
        queries do not arrive at the decryptors and we have to deliver it
        by ourselves.
        (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey:
        Deleted because it is now inlined.
        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
        (webKitMediaClearKeyDecryptorDecrypt): Fixed small compiler warning.
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkit_media_common_encryption_decrypt_class_init): Override
        query method.
        (webkitMediaCommonEncryptionDecryptTransformInPlace): When the
        decryptor is going to block to wait, report before. When the
        decryptor receives the key, report it got it.
        (webkitMediaCommonEncryptionDecryptSinkEventHandler): Do not
        handle waitingforkey here.
        (webkitMediaCommonEncryptionDecryptorQueryHandler): Report if the
        decryptor is waiting.

2018-11-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Silence ATK_XY_PARENT warnings
        https://bugs.webkit.org/show_bug.cgi?id=191504

        Reviewed by Carlos Garcia Campos.

        * accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
        (atkToContents):
        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
        (textExtents):
        * accessibility/atk/WebKitAccessibleUtil.cpp:
        (contentsRelativeToAtkCoordinateType):

2018-11-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement a new edit command to change the enclosing list type
        https://bugs.webkit.org/show_bug.cgi?id=191487
        <rdar://problem/45955922>

        Reviewed by Ryosuke Niwa.

        Add support for a new edit command that changes the type of the enclosing list element around the selection from
        unordered to ordered list and vice versa. This new edit command is exposed only to internal WebKit2 clients, via
        SPI on WKWebView (`-_changeListType:`).

        This is currently intended for use in Mail compose, but may also be adopted by legacy Notes in the future. As
        such, the behavior of this editing command mostly matches shipping behavior in Mail compose (which is currently
        implemented entirely by Mail). See below for more details.

        Test:   editing/execCommand/change-list-type.html
                WKWebViewEditActions.ChangeListType

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/ChangeListTypeCommand.cpp: Added.
        (WebCore::listConversionTypeForSelection):
        (WebCore::ChangeListTypeCommand::listConversionType):

        Helper that returns a potential list conversion command that may be executed at the given document's selection,
        if any exists. We also use existing logic from Mail here to determine which list to change, by walking up the
        DOM from the lowest common ancestor container of the current selection until we hit the first list element.

        (WebCore::ChangeListTypeCommand::createNewList):

        Helper method to create a new list element to replace the given list, and then clone element data from the given
        list to the new list. This addresses an existing bug in Mail, wherein changing list type for an enclosing list
        which contains inline style properties drops the inline styles, because existing logic in Mail that implements
        this editing command only copies the `class` attribute of the old list to the new list.

        (WebCore::ChangeListTypeCommand::doApply):

        Apply the edit command by running the following steps:
        -   Find the enclosing list element, if any (see above).
        -   Create a new list element of the opposite type as the enclosing list, and clone over element data from the
            list element being replaced.
        -   Insert the new list next to the original list.
        -   Move all children of the original list to the new list.
        -   Remove the original list.
        -   Set the selection to the end of the new list.

        * editing/ChangeListTypeCommand.h: Added.
        * editing/EditAction.h:

        Add a pair of new edit actions for conversion from unordered list to ordered list and vice versa.

        * editing/Editor.cpp:
        (WebCore::Editor::changeSelectionListType):

        Implement this by creating and applying a new ChangeListTypeCommand.

        (WebCore::Editor::canChangeSelectionListType): Deleted.

        Remove this for now, since there's no need for it until full support for edit command validation is implemented.

        * editing/Editor.h:
        * testing/Internals.cpp:
        (WebCore::Internals::changeSelectionListType):
        * testing/Internals.h:
        * testing/Internals.idl:

        Add internal hooks to change list type from layout tests.

2018-11-11  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Draw the caps lock indicator in a focused password field on iOS. This makes the behavior of password
        fields on iOS more closely match the behavior of password fields on Mac.

        The majority of this patch is implementing PlatformKeyboardEvent::currentCapsLockState() for iOS.
        In Legacy WebKit, the implementation boils down to calling call -[::WebEvent modifierFlags]. In
        Modern WebKit the UIProcess is responsible for -[::WebEvent modifierFlags] and passing it the
        WebProcess to store such that invocations of PlatformKeyboardEvent::currentCapsLockState() consult
        the store in the WebProcess. A smaller part of this patch is having both the legacy and modern
        web views listen for keyboard availability changes so as to update the the caps lock state when
        a hardware keyboard is detached or attached.

        * WebCore.xcodeproj/project.pbxproj:
        * page/EventHandler.cpp:
        (WebCore::EventHandler::capsLockStateMayHaveChanged const): Extracted from EventHandler::internalKeyEvent()
        so that it can shared between WebCore, Modern WebKit, and Legacy WebKit code.
        (WebCore::EventHandler::internalKeyEvent): Modified to call capsLockStateMayHaveChanged().
        * page/EventHandler.h:
        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Moved from KeyEventMac.mm.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Moved from KeyEventMac.mm.
        * platform/ios/KeyEventIOS.mm:
        (WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys): Fetch the current modifier state.
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; we now use the Cocoa implementation.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; we now use the Cocoa implementation.
        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (+[WebEvent modifierFlags]): Added.
        * platform/mac/KeyEventMac.mm:
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; moved to KeyEventCocoa.mm to be shared
        by both Mac and iOS.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; moved to KeyEventCocoa.mm to be shared
        by both Mac and iOS.
        * rendering/RenderThemeCocoa.h:
        * rendering/RenderThemeCocoa.mm:
        (WebCore::RenderThemeCocoa::shouldHaveCapsLockIndicator const): Moved from RenderThemeMac.mm.
        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator const): Deleted.
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::shouldHaveCapsLockIndicator const): Deleted; moved to RenderThemeCocoa.mm to be
        shared by both Mac and iOS.

2018-11-11  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] In-flow positioned logic is really formatting context dependent.
        https://bugs.webkit.org/show_bug.cgi?id=191512

        Reviewed by Simon Fraser.

        Move block formatting context specific code from FormattingContext to BlockFormattingContext.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const): Deleted.
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const): Deleted.
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition): Deleted.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2018-11-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Address post-review comments after r237955
        https://bugs.webkit.org/show_bug.cgi?id=191496

        Reviewed by Darin Adler.

        * rendering/TextDecorationPainter.cpp:
        (WebCore::TextDecorationPainter::paintTextDecoration):
        * style/InlineTextBoxStyle.cpp:
        (WebCore::computeUnderlineOffset):
        * style/InlineTextBoxStyle.h:

2018-11-11  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        Rename file.

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        * page/mac/EventHandlerMac.mm:
        * platform/mac/URLMac.mm:
        * platform/mac/WebCoreNSURLExtras.mm:
        * platform/mac/WebCoreObjCExtras.mm:
        * rendering/RenderThemeMac.mm:

2018-11-10  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        * page/mac/EventHandlerMac.mm:
        * platform/mac/URLMac.mm:
        * platform/mac/WebCoreNSURLExtras.mm:
        * platform/mac/WebCoreObjCExtras.mm:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::systemColor const):

2018-11-10  Megan Gardner  <megan_gardner@apple.com>

        Fix build for 32bit Mac
        https://bugs.webkit.org/show_bug.cgi?id=191511

        Unreviewed Build Fix.

        Build fix, not tests needed.

        Make the apporiate delecrations for 32-bit mac support.

        * editing/mac/DictionaryLookup.mm:

2018-11-10  Simon Fraser  <simon.fraser@apple.com>

        Remove support for -webkit-svg-shadow
        https://bugs.webkit.org/show_bug.cgi?id=187429
        <rdar://problem/41920735>

        Reviewed by Dean Jackson.
        
        -webkit-svg-shadow was a non-standard hack for online iWork, and they no longer use it,
        so remove it. No other browser supports it, and chromestatus say it's used on less than
        0.000001% of pages.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/SVGCSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::svgPropertyValue):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyInitialWebkitSvgShadow): Deleted.
        (WebCore::StyleBuilderCustom::applyInheritWebkitSvgShadow): Deleted.
        (WebCore::StyleBuilderCustom::applyValueWebkitSvgShadow): Deleted.
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::didAttachChild):
        * rendering/svg/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::layout):
        * rendering/svg/RenderSVGImage.h:
        * rendering/svg/RenderSVGModelObject.cpp:
        (WebCore::RenderSVGModelObject::RenderSVGModelObject):
        * rendering/svg/RenderSVGModelObject.h:
        (WebCore::RenderSVGModelObject::repaintRectInLocalCoordinatesExcludingSVGShadow const): Deleted.
        (WebCore::RenderSVGModelObject::hasSVGShadow const): Deleted.
        (WebCore::RenderSVGModelObject::setHasSVGShadow): Deleted.
        * rendering/svg/RenderSVGRoot.cpp:
        (WebCore::RenderSVGRoot::RenderSVGRoot):
        (WebCore::RenderSVGRoot::updateCachedBoundaries):
        * rendering/svg/RenderSVGRoot.h:
        * rendering/svg/RenderSVGShape.cpp:
        (WebCore::RenderSVGShape::updateRepaintBoundingBox):
        * rendering/svg/RenderSVGShape.h:
        * rendering/svg/SVGRenderSupport.cpp:
        (WebCore::SVGRenderSupport::clippedOverflowRectForRepaint):
        (WebCore::SVGRenderSupport::layoutChildren):
        (WebCore::SVGRenderSupport::styleChanged):
        (WebCore::SVGRenderSupport::repaintRectForRendererInLocalCoordinatesExcludingSVGShadow): Deleted.
        (WebCore::SVGRenderSupport::rendererHasSVGShadow): Deleted.
        (WebCore::SVGRenderSupport::setRendererHasSVGShadow): Deleted.
        (WebCore::SVGRenderSupport::intersectRepaintRectWithShadows): Deleted.
        (WebCore::SVGRenderSupport::childAdded): Deleted.
        * rendering/svg/SVGRenderSupport.h:

2018-11-10  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238065.

        Breaks internal builds.

        Reverted changeset:

        "Make it possible to edit images inline"
        https://bugs.webkit.org/show_bug.cgi?id=191352
        https://trac.webkit.org/changeset/238065

2018-11-10  Tim Horton  <timothy_horton@apple.com>

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        Tests: editing/images/basic-editable-image.html
               editing/images/reparent-editable-image-maintains-strokes.html

        Add the beginnings of a mechanism to replace images with a special attribute
        with a native drawing view in the UI process.

        * page/Settings.yaml:
        Add a setting to control whether images become natively editable when they
        have the x-apple-editable-image attribute.

        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::editableImageViewID const):
        Lazily generate an EmbeddedViewID and persist it on the <img> element.

        * html/HTMLImageElement.h:
        Rearrange the service controls methods to sit before the members.
        Add m_editableImageViewID and editableImageViewID().

        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::nextEmbeddedViewID):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::setContentsToEmbeddedView):
        Add a new ContentsLayerPurpose, EmbeddedView, which is only supported
        on Cocoa platforms and when using RemoteLayerTree.
        Add ContentsLayerEmbeddedViewType, which currently only has the EditableImage type.
        Add setContentsToEmbeddedView, which takes a ContentsLayerEmbeddedViewType
        and an EmbeddedViewID to uniquely identify and communicate about the
        embedded view (which may move between layers, since it is tied to an element).

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::createPlatformCALayerForEmbeddedView):
        (WebCore::GraphicsLayerCA::setContentsToEmbeddedView):
        When setting GraphicsLayer's contents to an embedded view, we use
        a special PlatformCALayer factory that takes the EmbeddedViewID and type.
        GraphicsLayerCARemote will override this and make a correctly-initialized
        PlatformCALayerRemote that keeps track of the EmbeddedViewID.

        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.cpp:
        (WebCore::operator<<):
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        (WebCore::PlatformCALayerCocoa::embeddedViewID const):
        Add stubs and logging for EmbeddedViewID on PlatformCALayer.
        These will be overridden by PlatformCALayerRemote to do more interesting things.

        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::isEditableImage const):
        Add a getter that return true if the setting is enabled and
        x-apple-editable-image is empty or true.

        (WebCore::RenderImage::requiresLayer const):
        RenderImage requires a layer either if RenderReplaced does, or we are an
        editable image.

        * rendering/RenderImage.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::shouldBeNormalFlowOnly const):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateConfiguration):
        Push the EmbeddedViewID and type down to GraphicsLayer for editable images.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingLayer const):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::requiresCompositingForEditableImage const):
        * rendering/RenderLayerCompositor.h:
        Make editable images require compositing implicitly.

2018-11-09  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        1. Improve visuallyNonEmpty milestone confidence level.
            Ignore whitespace and non visible text content.
            Parsing the main document should not necessarily fire the milestone. Check if there's any pending scripts/css/font loading.
            Check if the html/body is actually visible.

        2. Issue initial paint soon after the milestone fires.
            Use a 0ms timer to flush the initial paint.
            Throttle additional flushes for 500ms and 1.5s (original behaviour).

        3. Suspend optional style recalcs and layouts while painting is being throttled.
           When parsing yields we initiate a 0ms style recalc/layout timer.
           These optional layouts produce content that we have no intention to paint. 

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::shouldScheduleLayout):
        * page/ChromeClient.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::resetLayoutMilestones):
        (WebCore::FrameView::qualifiesAsVisuallyNonEmpty const):
        (WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded):
        (WebCore::FrameView::updateIsVisuallyNonEmpty):
        * page/FrameView.h:
        (WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount): Ignore whitespace characters. Some pages start with plenty of whitespace only content.
        * platform/graphics/FontCascade.h:
        * rendering/RenderText.cpp: Check whether the text is actually visible at this point.
        (WebCore::RenderText::RenderText):

2018-11-09  John Wilander  <wilander@apple.com>

        Add ability to configure document.cookie lifetime cap through user defaults
        https://bugs.webkit.org/show_bug.cgi?id=191480
        <rdar://problem/45240871>

        Reviewed by Chris Dumez.

        No new tests. Existing test makes sure we don't regress.

        This change makes the capped lifetime in seconds configurable through
        user defaults.

        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::NetworkStorageSession::setAgeCapForClientSideCookies):
        (WebCore::NetworkStorageSession::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::filterCookies):
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):

2018-11-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238047.

        Introduced layout test failures on iOS simulator.

        Reverted changeset:

        "[iOS] Draw caps lock indicator in password fields"
        https://bugs.webkit.org/show_bug.cgi?id=190565
        https://trac.webkit.org/changeset/238047

2018-11-09  Tim Horton  <timothy_horton@apple.com>

        Normal-flow-only flex items don't correctly respect z-index
        https://bugs.webkit.org/show_bug.cgi?id=191486

        Reviewed by Simon Fraser.

        Test: css3/flexbox/z-index-with-normal-flow-only.html

        * rendering/RenderLayer.cpp:
        (WebCore::canCreateStackingContext):
        r125693 did not ensure that flex items which would otherwise be
        normal-flow-only would be put into the z-order tree when necessary.
        Fix by respecting the same trigger we use to make layers for flex items;
        namely, not having auto z-index.

2018-11-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Implement SPI on WKWebView to increase and decrease list levels
        https://bugs.webkit.org/show_bug.cgi?id=191471
        <rdar://problem/45952472>

        Reviewed by Tim Horton.

        Add new method stubs for changing the list type for the current selection (to be implemented in a future patch).

        * editing/Editor.cpp:
        (WebCore::Editor::canChangeSelectionListType):
        (WebCore::Editor::changeSelectionListType):
        * editing/Editor.h:

2018-11-09  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix after https://bugs.webkit.org/show_bug.cgi?id=191324

        Remove the use of .xcfilelists until their side-effects are better
        understood.

        * WebCore.xcodeproj/project.pbxproj:

2018-11-09  Jer Noble  <jer.noble@apple.com>

        SourceBuffer throws an error when appending a second init segment after changeType().
        https://bugs.webkit.org/show_bug.cgi?id=191474

        Reviewed by Eric Carlson.

        Test: media/media-source/media-source-changetype-second-init.html

        When encountering an initialization segment after changeType(), add the parsed codec types
        to the list of allowed codecs.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::validateInitializationSegment):
        * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
        (WebCore::MockMediaPlayerMediaSource::supportsType):
        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
        (WebCore::MockSourceBufferPrivate::canSwitchToType):
        * platform/mock/mediasource/MockSourceBufferPrivate.h:

2018-11-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] AVVideoCaptureSource reports incorrect size when frames are scaled
        https://bugs.webkit.org/show_bug.cgi?id=191479
        <rdar://problem/45952201>

        Reviewed by Jer Noble.

        No new tests, tested manually.

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::standardVideoSizes): Drive-by fix: add a few more standard
        video frame sizes, correct a typo.
        (WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate): Drive-by fix: don't consider
        rescaled sized when we already have an exact or aspect ratio match because it won't be used.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        (WebCore::AVVideoCaptureSource::width const): Deleted.
        (WebCore::AVVideoCaptureSource::height const): Deleted.
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset): Delete m_requestedSize.
        (WebCore::AVVideoCaptureSource::shutdownCaptureSession): Delete m_width and m_height.
        (WebCore::AVVideoCaptureSource::processNewFrame): Don't call setSize with captured size,
        the frame may be resized before deliver.

2018-11-09  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed MSVC build fix after r238039 (and r238046).

        * bindings/js/JSWorkerGlobalScopeBase.cpp:
        * bindings/js/JSWorkerGlobalScopeBase.h:

2018-11-09  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl][WebKit] Implement Proxy configuration API.
        https://bugs.webkit.org/show_bug.cgi?id=189053

        Reviewed by Youenn Fablet.

        Added API to set proxy from the app.

        No new tests because there's no behaviour change in WebCore.

        * platform/network/NetworkStorageSession.h:
        * platform/network/curl/CurlContext.h:
        (WebCore::CurlContext::setProxySettings):
        * platform/network/curl/CurlProxySettings.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::NetworkStorageSession::setProxySettings const):

2018-11-09  Antti Koivisto  <antti@apple.com>

        Use OptionSet for layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=191470

        Reviewed by Dean Jackson.

        * WebCore.xcodeproj/project.pbxproj:
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::didReachLayoutMilestone):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        (WebCore::FrameView::addPaintPendingMilestones):
        (WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):
        (WebCore::FrameView::firePaintRelatedMilestonesIfNeeded):
        * page/FrameView.h:
        * page/LayoutMilestone.h: Copied from Source/WebCore/page/LayoutMilestones.h.

        Renamed to appease WK2 IPC code generation.

        * page/LayoutMilestones.h: Removed.
        * page/Page.cpp:
        (WebCore::Page::addLayoutMilestones):
        (WebCore::Page::removeLayoutMilestones):
        (WebCore::Page::isCountingRelevantRepaintedObjects const):
        * page/Page.h:
        (WebCore::Page::requestedLayoutMilestones const):

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Draw the caps lock indicator in a focused password field on iOS. This makes the behavior of password
        fields on iOS more closely match the behavior of password fields on Mac. For now, we only draw the
        indicator when caps locks is enabled via the hardware keyboard. We will look to support the software
        keyboard in a subsequent commit (see <https://bugs.webkit.org/show_bug.cgi?id=191475>).

        The majority of this patch is implementing PlatformKeyboardEvent::currentCapsLockState() for iOS.
        In Legacy WebKit, the implementation boils down to calling call -[::WebEvent modifierFlags]. In
        Modern WebKit the UIProcess is responsible for -[::WebEvent modifierFlags] and passing it the
        WebProcess to store such that invocations of PlatformKeyboardEvent::currentCapsLockState() consult
        the store in the WebProcess. A smaller part of this patch is having both the legacy and modern
        web views listen for keyboard availability changes so as to update the the caps lock state when
        a hardware keyboard is detached or attached.

        * WebCore.xcodeproj/project.pbxproj:
        * page/EventHandler.cpp:
        (WebCore::EventHandler::capsLockStateMayHaveChanged const): Extracted from EventHandler::internalKeyEvent()
        so that it can shared between WebCore, Modern WebKit, and Legacy WebKit code.
        (WebCore::EventHandler::internalKeyEvent): Modified to call capsLockStateMayHaveChanged().
        * page/EventHandler.h:
        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Moved from KeyEventMac.mm.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Moved from KeyEventMac.mm.
        * platform/ios/KeyEventIOS.mm:
        (WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys): Fetch the current modifier state.
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; we now use the Cocoa implementation.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; we now use the Cocoa implementation.
        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (+[WebEvent modifierFlags]): Added.
        * platform/mac/KeyEventMac.mm:
        (WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; moved to KeyEventCocoa.mm to be shared
        by both Mac and iOS.
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; moved to KeyEventCocoa.mm to be shared
        by both Mac and iOS.
        * rendering/RenderThemeCocoa.h:
        * rendering/RenderThemeCocoa.mm:
        (WebCore::RenderThemeCocoa::shouldHaveCapsLockIndicator const): Moved from RenderThemeMac.mm.
        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator const): Deleted.
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::shouldHaveCapsLockIndicator const): Deleted; moved to RenderThemeCocoa.mm to be
        shared by both Mac and iOS.

2018-11-09  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix WinCairo build after r238039.

        * bindings/js/JSWorkerGlobalScopeBase.h:

2018-11-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        Extensions3DOpenGLES.h:  warning: 'blitFramebuffer' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        https://bugs.webkit.org/show_bug.cgi?id=191451

        Reviewed by Dean Jackson.

        No new tests because there is no behavior change.

        * platform/graphics/opengl/Extensions3DOpenGLES.cpp:
        (WebCore::Extensions3DOpenGLES::setEXTContextLostCallback): Deleted unused method.
        * platform/graphics/opengl/Extensions3DOpenGLES.h: Marked 'override'.

2018-11-09  Andy Estes  <aestes@apple.com>

        [Payment Request] canMakePayment() should not consider serialized payment method data
        https://bugs.webkit.org/show_bug.cgi?id=191432

        Reviewed by Dean Jackson.

        In https://github.com/w3c/payment-request/pull/806, we're changing the specification of
        canMakePayment() to not consider serialized payment method data when deciding if a payment
        method is supported. For Apple Pay, this means we resolve to true for
        "https://apple.com/apple-pay", even if an ApplePayRequest is omitted or is missing required
        fields.

        Added test cases to
        http/tests/paymentrequest/payment-request-canmakepayment-method.https.html and
        http/tests/paymentrequest/payment-request-show-method.https.html.

        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::canMakePayment):

2018-11-09  Andy Estes  <aestes@apple.com>

        [Payment Request] PaymentResponse.details should be updated when the user accepts a retried payment
        https://bugs.webkit.org/show_bug.cgi?id=191440

        Reviewed by Dean Jackson.

        PaymentResponse.details was being initialized in the PaymentResponse constructor and never
        updated when the user accepts a retried payment. We need to update it.

        Added a test case to http/tests/paymentrequest/payment-response-retry-method.https.html.

        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::accept):
        * Modules/paymentrequest/PaymentResponse.cpp:
        (WebCore::PaymentResponse::PaymentResponse):
        (WebCore::PaymentResponse::setDetailsFunction):
        * Modules/paymentrequest/PaymentResponse.h:

2018-11-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        MediaPlayerPrivateMediaFoundation.h: warning: 'GetService' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        https://bugs.webkit.org/show_bug.cgi?id=191453

        Reviewed by Per Arne Vollan.

        No new tests because there is no behavior change.

        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h: Marked with 'override' and removed 'virtual'.

2018-11-09  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix internal build on macOS.

        'Export' is defined in several headers.

        * bindings/js/JSDOMGlobalObject.cpp:
        * bindings/js/JSDOMGlobalObject.h:
        * bridge/jsc/BridgeJSC.cpp:
        * bridge/jsc/BridgeJSC.h:

2018-11-09  Chris Dumez  <cdumez@apple.com>

        HTML form validation bubble disappears
        https://bugs.webkit.org/show_bug.cgi?id=191418

        Reviewed by Simon Fraser.

        If we validate a form and find an invalid form control, we'll scroll it into view and show
        the validation bubble. However, scrolling the element into view may be an asynchronous
        operation, in which case it would discard the validation bubble prematurely because scrolling
        hides the validation bubble. To address the issue, we now show the validation message
        asynchronously after focusing the element (and potentially scrolling it into view).

        Test: fast/forms/scroll-into-view-and-show-validation-message.html

        * html/HTMLFormControlElement.cpp:
        (WebCore::HTMLFormControlElement::focusAndShowValidationMessage):

2018-11-09  Brent Fulgham  <bfulgham@apple.com>

        [Windows][DirectX] Be more rigors about BeginFigure/EndFigure and Close operations. 
        https://bugs.webkit.org/show_bug.cgi?id=191452
        <rdar://problem/45933964>

        Reviewed by Zalan Bujtas.

        Do a better job of balancing the BeginFigure/EndFigure calls in
        the PathDirect2D implementation. Failure to do so puts the Geometry sink
        into an error state that prevents it from producing drawing output.
      

        * platform/graphics/Path.h:
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        (WebCore::GraphicsContext::drawPath): Flush is needed here.
        (WebCore::GraphicsContext::fillPath): Ditto.
        (WebCore::GraphicsContext::strokePath): Ditto.
        * platform/graphics/win/PathDirect2D.cpp:
        (WebCore::Path::drawDidComplete):
        (WebCore::Path::closeAnyOpenGeometries):
        (WebCore::Path::transform):
        (WebCore::Path::openFigureAtCurrentPointIfNecessary):
        (WebCore::Path::moveTo):
        (WebCore::Path::closeSubpath):

2018-11-09  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Fix failing imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html test
        https://bugs.webkit.org/show_bug.cgi?id=191396

        Reviewed by Eric Carlson.

        When changeType() is called, exempt video and text tracks (in addition to just audio tracks)
        from "same codec" requirements.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::validateInitializationSegment):

2018-11-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r236365): [GTK] Many form-related tests are failing
        https://bugs.webkit.org/show_bug.cgi?id=189993

        Reviewed by Michael Catanzaro.

        Only the first form data element is added to the message body due to a return added by mistake in r236365.

        * platform/network/soup/ResourceRequestSoup.cpp:
        (WebCore::ResourceRequest::updateSoupMessageBody const): Remove return.

2018-11-09  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Move some code from InlineFormattingContext::Line to InlineFormattingContext/Geometry
        https://bugs.webkit.org/show_bug.cgi?id=191445

        Reviewed by Antti Koivisto.

        The idea here is that Line should not have to deal with all the post processig tasks like the runs final aligments.
        (The line class would eventually turn into a collection of random things).

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::closeLine const):
        (WebCore::Layout::InlineFormattingContext::appendContentToLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalLeft const):
        (WebCore::Layout::InlineFormattingContext::Line::lastRunType const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::adjustedLineLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::Geometry::justifyRuns):
        (WebCore::Layout::InlineFormattingContext::Geometry::computeExpansionOpportunities):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::Line):
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight const):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):
        (WebCore::Layout::adjustedLineLogicalLeft): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::computeExpansionOpportunities): Deleted.
        (WebCore::Layout::InlineFormattingContext::Line::justifyRuns): Deleted.

2018-11-09  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GStreamer build warning fix

        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::newSampleCallback): Timesamp()
        returns a uint32_t, fix format string accordingly.

2018-11-08  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an SPI to allow WebView clients to add additional supported image formats
        https://bugs.webkit.org/show_bug.cgi?id=190454

        Reviewed by Simon Fraser.

        Add an SPI to allow additional supported image formats in WebView. These
        additional formats can be set in the WKWebViewConfiguration as an NSArray
        of NStrings. Each string represents an image source type aka UTI.

        The ImageSourceType in the functions' names will be replaced by ImageType.
        ImageType in this context is the image UTI (Uniform Type Identifier).

        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::supportedImageMIMETypes):
        (WebCore::MIMETypeRegistry::additionalSupportedImageMIMETypes):
        (WebCore::supportedImageMIMETypesForEncoding):
        (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
        * platform/MIMETypeRegistry.h:
        * platform/graphics/cg/ImageDecoderCG.cpp:
        (WebCore::ImageDecoderCG::filenameExtension const):
        (WebCore::ImageDecoderCG::encodedDataStatus const):
        * platform/graphics/cg/ImageSourceCG.h:
        * platform/graphics/cg/ImageSourceCGMac.mm:
        (WebCore::MIMETypeForImageType):
        (WebCore::preferredExtensionForImageType):
        (WebCore::MIMETypeForImageSourceType): Deleted.
        (WebCore::preferredExtensionForImageSourceType): Deleted.
        * platform/graphics/cg/ImageSourceCGWin.cpp:
        (WebCore::MIMETypeForImageType):
        (WebCore::preferredExtensionForImageType):
        (WebCore::MIMETypeForImageSourceType): Deleted.
        (WebCore::preferredExtensionForImageSourceType): Deleted.
        * platform/graphics/cg/UTIRegistry.cpp:
        (WebCore::defaultSupportedImageTypes):
        (WebCore::additionalSupportedImageTypes):
        (WebCore::setAdditionalSupportedImageTypes):
        (WebCore::isSupportedImageType):
        (WebCore::supportedDefaultImageSourceTypes): Deleted.
        (WebCore::isSupportImageSourceType): Deleted.
        * platform/graphics/cg/UTIRegistry.h:

2018-11-08  Megan Gardner  <megan_gardner@apple.com>

        Adopt Reveal Framework to replace Lookup
        https://bugs.webkit.org/show_bug.cgi?id=191097

        Reviewed by Tim Horton.

        Reveal is not currently testable.

        The Reveal framework does the same job as Lookup and DataDectors.
        In this patch we switch from using Lookup to determine what text
        to select and define to using Reveal and RVItems. Since this
        code needs to work on older systems, and Reveal is newer, we also need
        to keep around the old code for old systems so that they can also
        continue to work. Eventually we will remove this code and also likly switch
        to passing RVItems across from the web process rather than making them
        on each side.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/mac/DictionaryLookup.h:
        * editing/mac/DictionaryLookup.mm:

        Create a delegate to respond to Reveal and help draw the string or highlight.

        (-[WebRevealHighlight initWithHighlightRect:useDefaultHighlight:attributedString:]):
        (-[WebRevealHighlight setClearTextIndicator:]):
        (-[WebRevealHighlight revealContext:rectsForItem:]):
        (-[WebRevealHighlight revealContext:drawRectsForItem:]):
        (-[WebRevealHighlight revealContext:shouldUseDefaultHighlightForItem:]):
        (-[WebRevealHighlight revealContext:stopHighlightingItem:]):
        (WebCore::showPopupOrCreateAnimationController):

        Unify the code paths and utalize the Reveal framework to create and/or display the popovers.

        (WebCore::DictionaryLookup::showPopup):
        (WebCore::DictionaryLookup::animationControllerForPopup):

        Pipe the new callback through.

        (WebCore::tokenRange): Deleted.

        Only used with Lookup

        (WebCore::selectionContainsPosition): Deleted.

        Only used with Lookup.

        * editing/mac/DictionaryLookupLegacy.mm: Copied from Source/WebCore/editing/mac/DictionaryLookup.mm.

        Keep a copy of the previous implementation of DictionaryLookup, because Reveal not available on older
        system.

        (WebCore::tokenRange):
        (WebCore::selectionContainsPosition):
        (WebCore::expandSelectionByCharacters):
        (WebCore::showPopupOrCreateAnimationController):
        (WebCore::DictionaryLookup::showPopup):
        (WebCore::DictionaryLookup::hidePopup):
        (WebCore::DictionaryLookup::animationControllerForPopup):

2018-11-08  Keith Rollin  <krollin@apple.com>

        Create .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191324
        <rdar://problem/45852819>

        Reviewed by Alex Christensen.

        As part of preparing for enabling XCBuild, create and use .xcfilelist
        files. These files are using during Run Script build phases in an
        Xcode project. If a Run Script build phase produces new files that are
        used later as inputs to subsequent build phases, XCBuild needs to know
        about these files. These files can be either specified in an "output
        files" section of the Run Script phase editor, or in .xcfilelist files
        that are associated with the Run Script build phase.

        This patch takes the second approach. It consists of three sets of changes:

        - Modify the DerivedSources.make files to have a
          'print_all_generated_files" target that produces a list of the files
          they create.

        - Create a shell script that produces .xcfilelist files from the
          output of the previous step, as well as for the files created in the
          Generate Unified Sources build steps.

        - Add the new .xcfilelist files to the associated projects.

        Note that, with these changes, the Xcode workspace and projects can no
        longer be fully loaded into Xcode 9. Xcode will attempt to load the
        projects that have .xcfilelist files associated with them, but will
        fail and display a placeholder for those projects instead. It's
        expected that all developers are using Xcode 10 by now and that not
        being able to load into Xcode 9 is not a practical issue. Keep in mind
        that this is strictly an IDE issue, and that the projects can still be
        built with `xcodebuild`.

        Also note that the shell script that creates the .xcfilelist files can
        also be used to verify that the set of files that's currently checked
        in is up-to-date. This checking can be used as part of a check-in hook
        or part of check-webkit-style to sooner catch cases where the
        .xcfilelist files need to be regenerated.

        No new tests -- no changed functionality.

        * DerivedSources.make:
        * DerivedSources.xcfilelist: Added.
        * UnifiedSources.xcfilelist: Added.
        * WebCore.xcodeproj/project.pbxproj:

2018-11-08  Don Olmstead  <don.olmstead@sony.com>

        Provide generic implementation of SSLKeyGenerator functions
        https://bugs.webkit.org/show_bug.cgi?id=191428

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Both SSLKeyGeneratorGLib and SSLKeyGeneratorIOS were stub
        implementations. Since <keygen> is deprecated it looks unlikely that
        an implementation is actually needed, however an implementation is
        needed until support is reomved.

        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/SSLKeyGenerator.cpp: Added.
        (WebCore::getSupportedKeySizes):
        (WebCore::signedPublicKeyAndChallengeString):
        * platform/SourcesGLib.txt:
        * platform/glib/SSLKeyGeneratorGLib.cpp: Removed.
        * platform/ios/SSLKeyGeneratorIOS.cpp: Removed.

2018-11-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Unprefix text-decoration CSS3 properties
        https://bugs.webkit.org/show_bug.cgi?id=127193

        Reviewed by Dean Jackson.

        The properties are stable, and there is interop.

        Test: fast/css3-text/css3-text-decoration/unprefix.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/StyleResolver.cpp:
        (WebCore::shouldApplyPropertyInParseOrder):
        (WebCore::isValidVisitedLinkProperty):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::isColorPropertyID):
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):
        * editing/cocoa/DataDetection.mm:
        (WebCore::DataDetection::detectContentInRange):
        * rendering/TextDecorationPainter.cpp:
        (WebCore::decorationColor):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::colorIncludingFallback const):
        (WebCore::RenderStyle::visitedDependentColor const):

2018-11-08  Timothy Hatcher  <timothy@apple.com>

        Add experimental support for a `supported-color-schemes` CSS property.
        https://bugs.webkit.org/show_bug.cgi?id=191319
        rdar://problem/45852261

        Reviewed by Dean Jackson.

        Tests: css-dark-mode/parse-supported-color-schemes.html
               css-dark-mode/supported-color-schemes-css.html

        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::updateSupportedColorSchemes):
        (WebCore::StyleBuilderConverter::convertSupportedColorSchemes):
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::colorFromPrimitiveValue const):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeSupportedColorSchemes):
        (WebCore::CSSPropertyParser::parseSingleValue):
        * dom/Document.cpp:
        (WebCore::Document::resetLinkColor):
        (WebCore::Document::resetVisitedLinkColor):
        (WebCore::Document::resetActiveLinkColor):
        (WebCore::Document::processSupportedColorSchemes):
        (WebCore::Document::useDarkAppearance const):
        (WebCore::Document::styleColorOptions const):
        * dom/Document.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::createFragment):
        * html/canvas/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal):
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint):
        * page/FrameView.cpp:
        (WebCore::FrameView::useDarkAppearance const):
        (WebCore::FrameView::paintScrollCorner):
        * platform/mac/DragImageMac.mm:
        (WebCore::createDragImageForLink):
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::paintBoxDecorations):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paintPlatformDocumentMarker):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintRootBoxFillLayers):
        (WebCore::RenderBox::paintBackground):
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::selectionColor const):
        (WebCore::RenderElement::selectionBackgroundColor const):
        (WebCore::RenderElement::paintFocusRing):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paintAreaElementFocusRing):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintContents):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::paintContents):
        * rendering/RenderListBox.cpp:
        (WebCore::RenderListBox::paintItemForeground):
        (WebCore::RenderListBox::paintItemBackground):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::useDarkAppearance const):
        (WebCore::RenderObject::styleColorOptions const):
        * rendering/RenderObject.h:
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::paintBackgroundsBehindCell):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paint):
        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::usingDarkAppearance const): Deleted.
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::documentViewFor const):
        (WebCore::RenderThemeMac::adjustMenuListStyle const):
        (WebCore::RenderThemeMac::paintCellAndSetFocusedElementNeedsRepaintIfNecessary):
        (WebCore::RenderThemeMac::paintSliderThumb):
        (WebCore::RenderThemeMac::usingDarkAppearance const): Deleted.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::supportedColorSchemes const):
        (WebCore::RenderStyle::setSupportedColorSchemes):
        (WebCore::RenderStyle::initialSupportedColorSchemes):
        * rendering/style/RenderStyleConstants.h:
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:
        * rendering/style/StyleSupportedColorSchemes.h: Added.
        (WebCore::StyleSupportedColorSchemes::StyleSupportedColorSchemes):
        (WebCore::StyleSupportedColorSchemes::operator== const):
        (WebCore::StyleSupportedColorSchemes::operator!= const):
        (WebCore::StyleSupportedColorSchemes::isAuto const):
        (WebCore::StyleSupportedColorSchemes::isOnly const):
        (WebCore::StyleSupportedColorSchemes::colorSchemes const):
        (WebCore::StyleSupportedColorSchemes::add):
        (WebCore::StyleSupportedColorSchemes::contains const):
        (WebCore::StyleSupportedColorSchemes::setAllowsTransformations):
        (WebCore::StyleSupportedColorSchemes::allowsTransformations const):
        * svg/graphics/SVGImage.cpp:
        (WebCore::SVGImage::draw):

2018-11-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Restrict domains at the target level instead of only at the window level
        https://bugs.webkit.org/show_bug.cgi?id=191344

        Reviewed by Devin Rousso.

        * inspector/WorkerInspectorController.cpp:
        (WebCore::WorkerInspectorController::WorkerInspectorController):
        Remove Inspector domain from workers. It was unused anyways.

2018-11-08  Dean Jackson  <dino@apple.com>

        Add a String literal that returns a String
        https://bugs.webkit.org/show_bug.cgi?id=191425
        <rdar://problem/45914556>

        Reviewed by Sam Weinig.

        Use _str where possible.

        API Test in WPT.

        * Modules/fetch/FetchRequest.cpp:
        (WebCore::computeReferrer):
        * Modules/indexeddb/IDBKeyPath.cpp:
        (WebCore::loggingString):
        * Modules/webdatabase/OriginLock.cpp:
        (WebCore::OriginLock::lockFileNameForPath):
        * css/CSSBasicShapes.cpp:
        (WebCore::updateCornerRadiusWidthAndHeight):
        * html/canvas/WebGL2RenderingContext.cpp:
        (WebCore::WebGL2RenderingContext::getParameter):
        * html/canvas/WebGLRenderingContext.cpp:
        (WebCore::WebGLRenderingContext::getParameter):
        * loader/LinkHeader.cpp:
        (WebCore::parseParameterValue):
        * loader/LinkLoader.cpp:
        (WebCore::LinkLoader::preloadIfNeeded):
        * page/NavigatorBase.cpp:
        (WebCore::NavigatorBase::platform):
        * platform/DateComponents.cpp:
        (WebCore::DateComponents::toString const):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::keyIdentifierForKeyEvent):
        * rendering/RenderListMarker.cpp:
        (WebCore::RenderListMarker::suffix const):
        * rendering/RenderMenuList.cpp:
        (RenderMenuList::setText):
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::userInterfaceDirectionPolicy):
        (WebCore::InternalSettings::systemLayoutDirection):
        * testing/Internals.cpp:
        (WebCore::Internals::shadowRootType const):
        (WebCore::Internals::getCurrentCursorInfo):

2018-11-08  Jonathan Hammer  <jonathan@e3software.com>

        Plain text drag in contenteditable is always DragOperationCopy, never DragOperationMove
        https://bugs.webkit.org/show_bug.cgi?id=191228
        <rdar://problem/45786830>

        Reviewed by Wenson Hsieh.

        DragController::beginDrag should not call cleanupAfterSystemDrag because
        the drag is still in progress even after the call to m_client.beginDrag()
        returns. This is in contrast to DragController::doSystemDrag, where the
        call to cleanupAfterSystemDrag is appropriate because the drag has
        concluded by the time m_client.startDrag() returns.

        Test: fast/events/drag-and-drop-move-not-copy.html

        * page/DragController.cpp:
        (WebCore::DragController::beginDrag):

2018-11-08  Zalan Bujtas  <zalan@apple.com>

        [BFC][IFC] InlineFormattingContext::Line::alignRuns() should take care of all the alignments.
        https://bugs.webkit.org/show_bug.cgi?id=191414

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::close):

2018-11-08  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import CTAP device request/response converters from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=190784
        <rdar://problem/45460333>

        Reviewed by Brent Fulgham.

        This patch imports Chromium's CTAP device request/response converters:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#message-encoding
        1. It directly imports the following files and suit them to WebKit's coding style:
        https://cs.chromium.org/chromium/src/device/fido/device_response_converter.cc?l=20&rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/device_response_converter.h?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/authenticator_get_info_response.cc?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/authenticator_get_info_response.h?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/authenticator_supported_options.cc?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/authenticator_supported_options.h?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/ctap_request_unittest.cc?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/ctap_response_unittest.cc?rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        https://cs.chromium.org/chromium/src/device/fido/fido_test_data.h?l=1&rcl=098dfd90850ffa84c27a884ab75edd2d99c4ec45
        2. It gathers the following methods into DeviceRequestConverter:
        CtapGetAssertionRequest::EncodeAsCBOR()
        CtapMakeCredentialRequest::EncodeAsCBOR()
        PublicKeyCredentialDescriptor::ConvertToCBOR()
        PublicKeyCredentialParams::ConvertToCBOR()
        PublicKeyCredentialRpEntity::ConvertToCBOR()
        PublicKeyCredentialUserEntity::ConvertToCBOR()
        3. It also apply a patch from Chromium to CBORValue:
        https://chromium.googlesource.com/chromium/src/+/7b6fbff35cd8e4d508f08e1cd93b4aa0a0dc402c%5E%21/

        Besides importing things from Chromium, it also implements UserVerificationRequirement for both
        PublicKeyCredentialCreationOptions and PublicKeyCredentialRequestOptions such that both options
        can specify more dimensions of a desired authenticator.

        Covered by API tests.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        (WebCore::PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::encode const):
        (WebCore::PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::decode):
        * Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
        * Modules/webauthn/PublicKeyCredentialRequestOptions.h:
        (WebCore::PublicKeyCredentialRequestOptions::encode const):
        (WebCore::PublicKeyCredentialRequestOptions::decode):
        * Modules/webauthn/PublicKeyCredentialRequestOptions.idl:
        * Modules/webauthn/UserVerificationRequirement.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialRequestOptions.idl.
        * Modules/webauthn/UserVerificationRequirement.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialRequestOptions.idl.
        * Modules/webauthn/cbor/CBORValue.cpp:
        (cbor::CBORValue::CBORValue):
        (cbor::CBORValue::getBool const):
        * Modules/webauthn/cbor/CBORValue.h:
        * Modules/webauthn/fido/AuthenticatorGetInfoResponse.cpp: Added.
        (fido::toArrayValue):
        (fido::AuthenticatorGetInfoResponse::AuthenticatorGetInfoResponse):
        (fido::AuthenticatorGetInfoResponse::setMaxMsgSize):
        (fido::AuthenticatorGetInfoResponse::setPinProtocols):
        (fido::AuthenticatorGetInfoResponse::setExtensions):
        (fido::AuthenticatorGetInfoResponse::setOptions):
        (fido::encodeAsCBOR):
        * Modules/webauthn/fido/AuthenticatorGetInfoResponse.h: Added.
        * Modules/webauthn/fido/AuthenticatorSupportedOptions.cpp: Added.
        (fido::AuthenticatorSupportedOptions::setSupportsResidentKey):
        (fido::AuthenticatorSupportedOptions::setUserVerificationAvailability):
        (fido::AuthenticatorSupportedOptions::setUserPresenceRequired):
        (fido::AuthenticatorSupportedOptions::setClientPinAvailability):
        (fido::AuthenticatorSupportedOptions::setIsPlatformDevice):
        (fido::convertToCBOR):
        * Modules/webauthn/fido/AuthenticatorSupportedOptions.h: Added.
        * Modules/webauthn/fido/DeviceRequestConverter.cpp: Added.
        (fido::convertRpEntityToCBOR):
        (fido::convertUserEntityToCBOR):
        (fido::convertParametersToCBOR):
        (fido::convertDescriptorToCBOR):
        (fido::encodeMakeCredenitalRequestAsCBOR):
        (fido::encodeGetAssertionRequestAsCBOR):
        (fido::encodeEmptyAuthenticatorRequest):
        * Modules/webauthn/fido/DeviceRequestConverter.h: Copied from Source/WebCore/Modules/webauthn/fido/FidoConstants.h.
        * Modules/webauthn/fido/DeviceResponseConverter.cpp: Added.
        (fido::convertStringToProtocolVersion):
        (fido::getResponseCode):
        (fido::getCredentialId):
        (fido::readCTAPMakeCredentialResponse):
        (fido::readCTAPGetAssertionResponse):
        (fido::readCTAPGetInfoResponse):
        * Modules/webauthn/fido/DeviceResponseConverter.h: Copied from Source/WebCore/Modules/webauthn/fido/FidoConstants.cpp.
        * Modules/webauthn/fido/FidoConstants.cpp:
        (fido::isCtapDeviceResponseCode):
        (fido::publicKeyCredentialTypeToString):
        * Modules/webauthn/fido/FidoConstants.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-11-07  Justin Michaud  <justin_michaud@apple.com>

        CSS Painting API should pass size, arguments and input properties to paint callback
        https://bugs.webkit.org/show_bug.cgi?id=191309

        Reviewed by Chris Dumez.

        Call paint() callback with input properties and arguments. This patch adds a stub for 
        the CSS Typed OM StylePropertyMapReadOnly, and passes all the arguments as strings without 
        any syntax checking to the paint callback.

        Test: fast/css-custom-paint/properties.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSCSSStyleValueCustom.cpp: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::toJSNewlyCreated):
        (WebCore::toJS):
        * bindings/js/WebCoreBuiltinNames.h:
        * css/CSSPaintCallback.h:
        * css/CSSPaintCallback.idl:
        * css/CSSPaintImageValue.cpp:
        (WebCore::CSSPaintImageValue::image):
        * css/CSSPaintImageValue.h:
        * css/CSSPaintSize.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::CSSPaintSize::create):
        (WebCore::CSSPaintSize::width const):
        (WebCore::CSSPaintSize::height const):
        (WebCore::CSSPaintSize::CSSPaintSize):
        * css/CSSPaintSize.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeCustomPaint):
        * css/typedom/CSSNumericValue.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        * css/typedom/CSSNumericValue.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * css/typedom/CSSStyleValue.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::CSSStyleValue::isUnitValue):
        (WebCore::CSSStyleValue::isUnparsedValue):
        * css/typedom/CSSStyleValue.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * css/typedom/CSSUnitValue.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        * css/typedom/CSSUnitValue.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * css/typedom/CSSUnparsedValue.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        * css/typedom/CSSUnparsedValue.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * css/typedom/StylePropertyMapReadOnly.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::StylePropertyMapReadOnly::create):
        (WebCore::StylePropertyMapReadOnly::get):
        (WebCore::StylePropertyMapReadOnly::StylePropertyMapReadOnly):
        * css/typedom/StylePropertyMapReadOnly.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::CustomPaintImage):
        (WebCore::CustomPaintImage::doCustomPaint):
        * platform/graphics/CustomPaintImage.h:

2018-11-07  Brent Fulgham  <bfulgham@apple.com>

        Provide better Font fallbacks for DirectX backend
        https://bugs.webkit.org/show_bug.cgi?id=191412
        <rdar://problem/45899207>

        Reviewed by Zalan Bujtas.

        Registration of custom fonts through GDI are not always visible
        through the DirectWrite/GDI bridging layer. If a font is not located,
        locate the closest matching avialable font rather than failing.

        * platform/graphics/FontPlatformData.h:
        * platform/graphics/win/FontCustomPlatformData.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData): Use new font
        fallback logic.
        * platform/graphics/win/FontPlatformDataDirect2D.cpp:
        (WebCore::FontPlatformData::platformDataInit):
        (WebCore::FontPlatformData::platformIsEqual const):
        (WebCore::FontPlatformData::createFallbackFont): Added.

2018-11-07  Zalan Bujtas  <zalan@apple.com>

        Click and touch event listeners on the body don't work
        https://bugs.webkit.org/show_bug.cgi?id=191392
        <rdar://problem/5844416>

        Reviewed by Simon Fraser.

        Remove the old quirk of ignoring onclick handlers on the body and beyond.

        Test: fast/events/click-handler-on-body-simple.html

        * page/ios/FrameIOS.mm:
        (WebCore::Frame::nodeRespondingToClickEvents):

2018-11-07  Brent Fulgham  <bfulgham@apple.com>

        [Windows][DirectX] Update canvas code to pass more tests
        https://bugs.webkit.org/show_bug.cgi?id=191337
        <rdar://problem/45878801>

        Reviewed by Dean Jackson.

        Update the Direct2D code paths to comply with our canvas tests, improving the
        the test results scores to 579/770.

        PathDirect2D was updated with an implementation of 'addArcTo' based on work by
        Dirk Schulze <vbs85@gmx.de> (see https://hg.mozilla.org/mozilla-central/rev/b116b49459f8).

        Tests: canvas/philip/tests

        * platform/graphics/ImageBuffer.cpp:
        (WebCore::ImageBuffer::createCompatibleBuffer): Direct2D needs access to the graphics
        context to create the buffer.
        * platform/graphics/ImageBuffer.h:
        * platform/graphics/Path.h:
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        (WebCore::GraphicsContext::drawPattern): Flush needed.
        (WebCore::GraphicsContext::drawRect): Ditto.
        (WebCore::GraphicsContextPlatformPrivate::setMiterLimit): Correct for Direct2D definition of miter limit.
        (WebCore::GraphicsContextPlatformPrivate::strokeStyleProperties const): Added helper function.
        (WebCore::GraphicsContextPlatformPrivate::recomputeStrokeStyle): Update for new helper.
        (WebCore::GraphicsContext::drawLine): Ditto.
        (WebCore::drawWithShadowHelper): Ditto.
        (WebCore::GraphicsContext::fillRect): Add flush.
        (WebCore::GraphicsContext::platformFillRoundedRect): Update for helper.
        (WebCore::GraphicsContext::clipPath): Add flush.
        (WebCore::GraphicsContext::strokeRect): Ditto.
        (WebCore::GraphicsContext::drawLineForText): Update for upstream changes.
        (WebCore::GraphicsContext::drawLinesForText): Ditto.
        * platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
        * platform/graphics/win/ImageBufferDirect2D.cpp:
        (WebCore::createCroppedImageIfNecessary): Add missing implementations.
        (WebCore::createBitmapImageAfterScalingIfNeeded): Ditto.
        (WebCore::ImageBuffer::copyImage const): Ditto.
        (WebCore::ImageBuffer::sinkIntoImage): Ditto.
        (WebCore::ImageBuffer::fastCopyImageMode): Ditto.
        (WebCore::ImageBuffer::sinkIntoNativeImage): Ditto.
        (WebCore::ImageBuffer::copyNativeImage const): Ditto.
        * platform/graphics/win/PathDirect2D.cpp:
        (WebCore::Path::operator=):
        (WebCore::Path::drawDidComplete): This should never have been const.
        It manipulates the path!
        (WebCore::Path::transform): Properly transform existing geometries.
        (WebCore::Path::openFigureAtCurrentPointIfNecessary): Added.
        (WebCore::Path::moveTo):
        (WebCore::Path::addLineTo): Make sure figure starts at a valid point.
        (WebCore::Path::addQuadCurveTo): Ditto.
        (WebCore::Path::addBezierCurveTo): Ditto.
        (WebCore::Path::addArcTo): Add implementation.
        (WebCore::Path::closeSubpath):
        (WebCore::drawArcSection):
        (WebCore::Path::addArc): Update to build large arcs out of small arc segments. If the
        arc is effectively a complete circle, use the ellipse drawing routines.
        (WebCore::Path::addRect): Make sure we start at a valid starting point.
        (WebCore::Path::addEllipse): Correct for definition of D2D ellipse.
        (WebCore::Path::drawDidComplete const): Deleted.
        * platform/graphics/win/SimpleFontDataDirect2D.cpp:
        (WebCore::Font::platformWidthForGlyph const):
        * rendering/svg/RenderSVGResourceClipper.cpp:
        (WebCore::RenderSVGResourceClipper::applyClippingToContext):
        * rendering/svg/RenderSVGResourceFilter.cpp:
        (WebCore::RenderSVGResourceFilter::applyResource):
        * rendering/svg/RenderSVGResourceMasker.cpp:
        (WebCore::RenderSVGResourceMasker::applyResource):
        * rendering/svg/SVGRenderingContext.cpp:
        (WebCore::SVGRenderingContext::createImageBuffer):
        * rendering/svg/SVGRenderingContext.h:

2018-11-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add an editing command for creating and inserting child lists
        https://bugs.webkit.org/show_bug.cgi?id=191335
        <rdar://problem/45814050>

        Reviewed by Ryosuke Niwa.

        Currently, insertOrderedList and insertUnorderedList only toggle or change list state (i.e. if the selection is
        in an ordered or unordered list, reinserting the same list type removes the current list, and inserting a
        different list type changes the enclosing list).

        However, for certain internal clients (e.g. Mail), if the start of the selection is enclosed by a list item, we
        instead create a new list item and insert it after the enclosing list item, and then create a new list within
        that list item. Currently, this logic is implemented in Mail for legacy-WebKit-based Mail compose. This patch
        brings this logic into WebKit in the form of a new editing command.

        Tests: editing/execCommand/insert-nested-lists-in-table.html
               editing/execCommand/insert-nested-lists-with-pre.html
               editing/execCommand/insert-nested-lists.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/Editor.cpp:
        (WebCore::Editor::insertOrderedList):
        (WebCore::Editor::insertUnorderedList):
        * editing/EditorCommand.cpp:
        (WebCore::executeInsertOrderedList):
        (WebCore::executeInsertUnorderedList):
        (WebCore::executeInsertNestedUnorderedList):
        (WebCore::executeInsertNestedOrderedList):
        (WebCore::createCommandMap):
        * editing/IndentOutdentCommand.cpp:
        (WebCore::IndentOutdentCommand::outdentParagraph):
        * editing/InsertListCommand.cpp:
        (WebCore::InsertListCommand::doApply):
        (WebCore::InsertListCommand::editingAction const):
        * editing/InsertListCommand.h:

        Change a couple of `enum`s into `enum class`es.

        * editing/InsertNestedListCommand.cpp: Added.
        (WebCore::InsertNestedListCommand::insertUnorderedList):
        (WebCore::InsertNestedListCommand::insertOrderedList):
        (WebCore::InsertNestedListCommand::doApply):
        * editing/InsertNestedListCommand.h: Added.

        Add a new edit command to insert a new list (as a child of any containing list). If the start of the selection
        is in a list item, we create a new list item, move the selection into the list item, and increment its list
        level; otherwise, simply fall back to inserting a list.

        * editing/ModifySelectionListLevel.cpp:
        (WebCore::IncreaseSelectionListLevelCommand::doApply):
        (WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevel):
        (WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevelOrdered):
        (WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevelUnordered):
        * editing/ModifySelectionListLevel.h:

        Expose this constructor, allowing other edit commands to change selection list level as a composite edit
        command. Also, change an `enum` into an `enum class`.

        (WebCore::IncreaseSelectionListLevelCommand::create):

2018-11-07  Chris Dumez  <cdumez@apple.com>

        ASSERT(renderer()) under HTMLTextAreaElement::updateValue()
        https://bugs.webkit.org/show_bug.cgi?id=191391
        <rdar://problem/34219633>

        Reviewed by Geoffrey Garen.

        Update HTMLTextFormControlElement::didEditInnerTextValue() to not call subtreeHasChanged()
        if the element has no renderer, similarly to what is already done in 
        HTMLTextFormControlElement::setRangeText() and HTMLInputElement::setEditingValue().

        Test: editing/inserting/inset-html-textarea-without-renderer.html

        * html/HTMLTextFormControlElement.cpp:
        (WebCore::HTMLTextFormControlElement::didEditInnerTextValue):

2018-11-07  Youenn Fablet  <youenn@apple.com>

        Allow setting RTCRtpTransceiver.direction
        https://bugs.webkit.org/show_bug.cgi?id=191346

        Reviewed by Eric Carlson.

        Remove readonly from the direction attribute.
        Keep setDirection for now as it is in use, with an intent to remove it.
        Driven-by fix as in some cases, the rtc source track might be changed
        and current implementation is not expecting that.
        In such a case, stop observing the old track (which should no longer call us)
        before observing the new one.

        Covered by rebased tests.

        * Modules/mediastream/RTCRtpTransceiver.idl:
        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
        (WebCore::RealtimeIncomingAudioSource::setSourceTrack):
        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::setSourceTrack):

2018-11-07  Sihui Liu  <sihui_liu@apple.com>

        RELEASE_ASSERT(!m_hardClosedForUserDelete) fails in WebCore::IDBServer::UniqueIDBDatabase::invokeOperationAndTransactionTimer
        https://bugs.webkit.org/show_bug.cgi?id=191326
        <rdar://problem/45769269>

        Reviewed by Geoffrey Garen.

        UniqueIDBDatabase should ignore incoming requests or operations when it is already marked as
        hardClosedForUserDelete.

        Test: IndexedDB.IndexedDBUserDelete.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::didPerformActivateTransactionInBackingStore):
        (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::establishTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::deleteTransaction):
        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::commit):

2018-11-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Positioned text underline can look like a strike-through
        https://bugs.webkit.org/show_bug.cgi?id=191341

        Reviewed by Simon Fraser.

        We should just clamp the value so it can't go above the baseline.

        We shouldn't do this at parse time because it's totally reasonable for text-underline-position: under to want
        a negative text-underline-offset. Instead, we just do it at used value time.

        Test: fast/css3-text/css3-text-decoration/text-underline-negative.html

        * style/InlineTextBoxStyle.cpp:
        (WebCore::computeUnderlineOffset):

2018-11-07  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        * platform/network/cocoa/ResourceResponseCocoa.mm:
        (WebCore::ResourceResponse::platformCertificateInfo const):

2018-11-07  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        * platform/network/cocoa/ResourceResponseCocoa.mm:
        (WebCore::ResourceResponse::platformCertificateInfo const):

2018-11-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Dotted underlines that skip descenders are invisible
        https://bugs.webkit.org/show_bug.cgi?id=191403

        Reviewed by Simon Fraser.

        Turns out our underline bounding boxes had negative width. When drawing the full
        underline that was fine because it was handled by the 2D graphics engine, but when
        we try to split up the box into dots, our "for" loop was taking 0 iterations (because
        the end was before the start).

        Test: fast/css3-text/css3-text-decoration/text-underline-style.html

        * platform/graphics/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawLineForText):
        * platform/graphics/cg/GraphicsContextCG.cpp:
        (WebCore::GraphicsContext::drawLineForText):
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        (WebCore::GraphicsContext::drawLineForText):

2018-11-07  Andy Estes  <aestes@apple.com>

        Crash in WebCore::PaymentRequest::canMakePayment when Apple Pay payment method data is missing
        https://bugs.webkit.org/show_bug.cgi?id=191331

        Reviewed by Alexey Proskuryakov.

        Apple Pay requires merchants specify an ApplePayRequest (which contains several required
        fields) as payment method data when constructing a new PaymentRequest. If the
        ApplePayRequest is missing required fields, or is missing entirely, canMakePayment() should
        resolve to false.

        We would properly resolve to false when an ApplePayRequest was specified with missing
        required fields, but we would crash when the ApplePayRequest was missing entirely.

        This patch fixes the crash by checking for an empty JSValue before trying to convert it to
        an ApplePayRequest struct. Because we stringify ApplePayRequests in the PaymentRequest
        constructor then parse them again in canMakePayments, an undefined or null payment method
        data stringifies to a null String, which then parses to an empty JSValue.

        Added test case to http/tests/paymentrequest/payment-request-canmakepayment-method.https.html.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::convertData):
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::canMakePayment):

2018-11-07  Simon Fraser  <simon.fraser@apple.com>

        Revert 237849: it breaks MotionMark
        https://bugs.webkit.org/show_bug.cgi?id=191398

        Reviewed by Simon Fraser.

        This change broke painting while the test is running.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):

2018-11-07  Don Olmstead  <don.olmstead@sony.com>

        Simplify macros in platform
        https://bugs.webkit.org/show_bug.cgi?id=191378

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Modifies a few cases where a platform macro could be simplified.

        * page/EventHandler.cpp:
        * platform/network/DNS.h:
        * platform/network/NetworkStateNotifier.h:

2018-11-07  Simon Fraser  <simon.fraser@apple.com>

        Some WK1 repaint tests are flakey
        https://bugs.webkit.org/show_bug.cgi?id=190627

        Reviewed by Zalan Bujtas.

        Repaint tracking in GraphicsLayerCA was sensitive to whether there were already dirty
        rects on the layer, since tracking happened after checks against existing dirty rects.
        This caused some WK1 repaint tests to be flakey, since there's no guarantee that
        no repaints happen between the last layer flush and a test calling startTrackingRepaints().

        Fix by moving the repaint tracking to before the checks against existing dirty rects.
        This is more similar to how repaint tracking on FrameView works.

        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::setNeedsDisplayInRect):

2018-11-07  Dean Jackson  <dino@apple.com>

        [iOS] WebGL leaks exact GPU type
        https://bugs.webkit.org/show_bug.cgi?id=191393

        Reviewed by Tim Horton.

        The fully exposed renderer info shouldn't be necessary
        on iOS, where the GPUs and drivers are consistent
        enough that people shouldn't need to write code specifically
        for them. Reduce the ability to fingerprint by simply
        returning "Apple GPU".

        The other option would have been to disable the extension,
        but I think it might still be useful to know you're on
        an iOS device.

        Test: fast/canvas/webgl/hide-some-renderer-info.html

        * html/canvas/WebGL2RenderingContext.cpp: Return "Apple GPU"
        on iOS.
        (WebCore::WebGL2RenderingContext::getParameter):
        * html/canvas/WebGLRenderingContext.cpp: Ditto.
        (WebCore::WebGLRenderingContext::getParameter):

2018-11-07  Daniel Bates  <dabates@apple.com>

        Override +[UIKeyboard isInHardwareKeyboardMode] in WebKitTestRunner and DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=190141

        Reviewed by Darin Adler.

        Remove the runtime application check for WebKitTestRunner as we no longer need this
        now that WebKitTestRunner and DumpRenderTree override +[UIKeyboard isInHardwareKeyboardMode].

        * platform/RuntimeApplicationChecks.h:
        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        (WebCore::IOSApplication::isWebKitTestRunner): Deleted.

2018-11-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix "Javascript" => "JavaScript" enum in protocol generated objects
        https://bugs.webkit.org/show_bug.cgi?id=191340

        Reviewed by Devin Rousso.

        * inspector/agents/InspectorMemoryAgent.cpp:
        (WebCore::InspectorMemoryAgent::collectSample):
        Use new enum name.

2018-11-07  Dan Bernstein  <mitz@apple.com>

        Add a pseudoclass that matches img elements that are backed by an attachment
        https://bugs.webkit.org/show_bug.cgi?id=191286
        <rdar://problem/45823554>

        Reviewed by Dean Jackson.

        Test: fast/css/has-attachment.html

        Added a :has-attachment pseudoclass, enabled only when the attachment element is enabled at
        runtime, that matches elements (currently only img elements qualify) that have an attachment
        element in their shadow DOM.

        * css/CSSSelector.cpp:
        (WebCore::CSSSelector::selectorText const): Handle the new PseudoClassHasAttachment value.
        * css/CSSSelector.h: Added a new value to the PseudoClassType enum.

        * css/SelectorChecker.cpp:
        (WebCore::SelectorChecker::checkOne const): Check the new PseudoClassHasAttachment value
          using the new hasAttachment test function.

        * css/SelectorCheckerTestFunctions.h:
        (WebCore::hasAttachment): Added. Tests if the element is an img element that has an
          attachment.

        * css/SelectorPseudoClassAndCompatibilityElementMap.in: Added has-attachment.

        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext): Initialize new attachmentEnabled member based
          on RuntimeEnabledFeatures.
        (WebCore::operator==): Compare new attachmentEnabled member.
        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContextHash::hash): Include new attachmentEnabled member.

        * css/parser/CSSSelectorParser.cpp:
        (WebCore::CSSSelectorParser::consumePseudo): Reject :has-attachment if the attachment
          element is not enabled.

        * cssjit/SelectorCompiler.cpp:
        (WebCore::SelectorCompiler::addPseudoClassType): Handle PseudoClassHasAttachment.

2018-11-07  Don Olmstead  <don.olmstead@sony.com>

        Make generic MainThreadSharedTimer implementation
        https://bugs.webkit.org/show_bug.cgi?id=191327

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Moves generic implementation for MainThreadSharedTimerGlib.cpp into
        MainThreadSharedTimer.cpp.

        * platform/MainThreadSharedTimer.cpp:
        (WebCore::MainThreadSharedTimer::MainThreadSharedTimer):
        (WebCore::MainThreadSharedTimer::setFireInterval):
        (WebCore::MainThreadSharedTimer::stop):
        (WebCore::MainThreadSharedTimer::invalidate):
        * platform/MainThreadSharedTimer.h:
        * platform/SourcesGLib.txt:
        * platform/glib/MainThreadSharedTimerGLib.cpp: Removed.

2018-11-07  Ali Juma  <ajuma@chromium.org>

        IntersectionObserverEntry doesn't keep JS wrappers of rects alive
        https://bugs.webkit.org/show_bug.cgi?id=191330

        Reviewed by Chris Dumez.

        Retain wrappers of each rect in an IntersectionObserverEntry as long as the entry's wrapper
        is alive, by adding these wrappers as opaque roots.

        Test: intersection-observer/intersection-observer-entry-keeps-js-wrappers-of-rects-alive.html

        * bindings/js/JSIntersectionObserverEntryCustom.cpp:
        (WebCore::JSIntersectionObserverEntry::visitAdditionalChildren):
        * dom/DOMRectReadOnly.idl:
        * page/IntersectionObserverEntry.h:
        (WebCore::IntersectionObserverEntry::rootBounds const): Make this return a raw pointer instead of a RefPtr so that it
        can be called in JSIntersectionObserverEntry::visitAdditionalChildren, which can be called from non-main threads.
        (WebCore::IntersectionObserverEntry::boundingClientRect const): Ditto.
        (WebCore::IntersectionObserverEntry::intersectionRect const): Ditto.

2018-11-07  Simon Fraser  <simon.fraser@apple.com>

        TileController::tileSize() should not have side effects
        https://bugs.webkit.org/show_bug.cgi?id=191349

        Reviewed by Zalan Bujtas.

        Calling TileController::tileSize() would recompute a new tile size and set m_tileSizeLocked,
        which caused test failures if logging was enabled when running tests.

        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::tileSize const):
        (WebCore::TileController::computeTileSize):
        * platform/graphics/ca/TileController.h:
        * platform/graphics/ca/TileGrid.cpp:
        (WebCore::TileGrid::revalidateTiles):

2018-11-07  Charlie Turner  <cturner@igalia.com>

        [EME][GStreamer] Ensure key id buffers are present and simplify lifetime management of ClearKey class.
        https://bugs.webkit.org/show_bug.cgi?id=191157

        Reviewed by Xabier Rodriguez-Calvar.

        This is in preparation for moving the clearkey decryptor behind a
        new decrypt API in CDMInstance, which will be sent into the
        pipeline to handle key management and decryption. This is for a
        later patch.

        Covered by existing clear key tests in media/encrypted-media.

        * platform/graphics/gstreamer/GStreamerCommon.h:
        (WebCore::GstMappedBuffer::data const): Add a const data accessor,
        since we are now providing operator=='s on const objects of this
        class that need const access to the data pointer.
        (WebCore::GstMappedBuffer::operator==): Add a swap of the new
        equality operator so you don't have to remember to have the
        GstBuffer on the RHS of the equality all the time.
        (WebCore::operator==): Define an equality operator between Gst
        buffers and WebCore's mapped buffers. Gst creates a ref and a
        separate read view under the covers in the memcmp call, so we do
        not need to map the buffer ourselves.
        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
        (webkit_media_clear_key_decrypt_class_init): Remove setup/release
        bindings.
        (webkit_media_clear_key_decrypt_init): Initialize gcrypt cipher
        here once instead of for every buffer to be decrypted.
        (webKitMediaClearKeyDecryptorFinalize): And destroy the cipher
        context when the decryptor is destroyed.
        (webKitMediaClearKeyDecryptorFindAndSetKey): Factor out the key
        retrieval and context setting in this method, call it for each
        sample.
        (webKitMediaClearKeyDecryptorDecrypt): Base key id buffer into
        this function, and remove cipher creation / destroy methods.
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkit_media_common_encryption_decrypt_class_init): Remove
        setup/release bindings.
        (webkitMediaCommonEncryptionDecryptTransformInPlace): Ensure a key
        id is present and pass it to the decrypt class method.
        (webKitMediaCommonEncryptionDecryptDefaultSetupCipher): Deleted.
        (webKitMediaCommonEncryptionDecryptDefaultReleaseCipher): Deleted.
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:

2018-11-07  Frederic Wang  <fwang@igalia.com>

        [Cairo] Move state change operations from GraphicsContextCairo to CairoOperations
        https://bugs.webkit.org/show_bug.cgi?id=179610

        Unreviewed build fix.

        * platform/graphics/cairo/GraphicsContextCairo.cpp: Add missing include.

2018-11-06  Joseph Pecoraro  <pecoraro@apple.com>

        ServiceWorker Inspector: Uncaught Exception: null is not an object (evaluating 'resource.target.addResource')
        https://bugs.webkit.org/show_bug.cgi?id=191339

        Reviewed by Matt Baker.

        * workers/service/ServiceWorkerJob.cpp:
        (WebCore::ServiceWorkerJob::fetchScriptWithContext):
        Use the Service Worker's identifier, not this static but otherwise unknown identifier.

2018-11-06  Youenn Fablet  <youenn@apple.com>

        sender.replaceTrack() fails with InvalidStateError if the transceiver.direction is "inactive"
        https://bugs.webkit.org/show_bug.cgi?id=191202

        Reviewed by Eric Carlson.

        Covered by updated test.

        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::removeTrack):
        Update as per spec, in particular make sure to not stop the sender when removing the track.

2018-11-06  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain
        https://bugs.webkit.org/show_bug.cgi?id=191291

        Reviewed by Myles Maxfield.

        Test: webgpu/render-pipelines.html
        Also update test webgpu/webgpu-basics.html to create a WebGPURenderPipeline.

        Begin implementation of WebGPURenderPipeline and WebGPUSwapChain. A WebGPURenderPipeline is backed by a
        GPURenderPipeline, created lazily using the properties of the passed-in WebGPURenderPipelineDescriptor.
        On Metal-supported systems, GPURenderPipeline is an interface to a MTLRenderPipelineState.
        The MTLRenderPipelineState is created with the WebGPUDevice currently configured on the WebGPURenderingContext.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * DerivedSources.make:
        * Modules/webgpu/GPUDevice.cpp:
        (WebCore::GPUDevice::createRenderPipeline const):
        * Modules/webgpu/GPUDevice.h:
        * Modules/webgpu/GPUPipelineDescriptorBase.h:
        * Modules/webgpu/GPUPipelineStageDescriptor.h:
        * Modules/webgpu/GPURenderPipelineDescriptor.h:
        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
        (WebCore::GPURenderPipelineDescriptor::primitiveTopology):
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::createRenderPipeline const):
        * Modules/webgpu/WebGPUDevice.h:
        (WebCore::WebGPUDevice::adapter const):
        (WebCore::WebGPUDevice::device const):
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUPipelineDescriptorBase.h:
        * Modules/webgpu/WebGPUPipelineDescriptorBase.idl:
        * Modules/webgpu/WebGPUPipelineStageDescriptor.h:
        * Modules/webgpu/WebGPUPipelineStageDescriptor.idl:
        * Modules/webgpu/WebGPURenderPipeline.cpp:
        (WebCore::WebGPURenderPipeline::create):
        (WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
        * Modules/webgpu/WebGPURenderPipeline.h:
        * Modules/webgpu/WebGPURenderPipeline.idl:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.h:
        * Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
        * Modules/webgpu/WebGPURenderingContext.cpp:
        (WebCore::WebGPURenderingContext::create):
        (WebCore::WebGPURenderingContext::WebGPURenderingContext):
        * Modules/webgpu/WebGPURenderingContext.h:
        * Modules/webgpu/WebGPUShaderModule.h:
        (WebCore::WebGPUShaderModule::module const):
        * Modules/webgpu/WebGPUShaderStage.h:
        * Modules/webgpu/WebGPUShaderStage.idl:
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::configure):
        (WebCore::WebGPUSwapChain::reshape):
        (WebCore::WebGPUSwapChain::markLayerComposited):
        * Modules/webgpu/WebGPUSwapChain.h:
        (WebCore::WebGPUSwapChain::WebGPUSwapChain):
        * Modules/webgpu/WebGPUSwapChain.idl:
        * Modules/webgpu/cocoa/GPURenderPipeline.h:
        (WebCore::GPURenderPipeline::platformRenderPipeline const):
        * Modules/webgpu/cocoa/GPURenderPipelineMetal.mm: Added.
        (WebCore::setFunctionsForPipelineDescriptor):
        (WebCore::GPURenderPipeline::create):
        (WebCore::GPURenderPipeline::GPURenderPipeline):
        * Modules/webgpu/cocoa/GPUSwapChain.h:
        (WebCore::GPUSwapChain::platformLayer const):
        * Modules/webgpu/cocoa/GPUSwapChainMetal.mm:
        (WebCore::GPUSwapChain::create):
        (WebCore::GPUSwapChain::GPUSwapChain):
        (WebCore::GPUSwapChain::setDevice):
        (WebCore::GPUSwapChain::reshape):
        (WebCore::GPUSwapChain::present):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Add support for sender/receiver getCapabilities
        https://bugs.webkit.org/show_bug.cgi?id=191192

        Reviewed by Eric Carlson.

        Expose sender/receiver RTCRtpCapabilities to JS.
        Add corresponding IDL and plumbing down to libwebrtc peer connection factory.
        Covered by rebased tests.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::receiverCapabilities):
        (WebCore::PeerConnectionBackend::senderCapabilities):
        * Modules/mediastream/PeerConnectionBackend.h:
        * Modules/mediastream/RTCRtpCapabilities.idl: Added.
        * Modules/mediastream/RTCRtpReceiver.cpp:
        (WebCore::RTCRtpReceiver::getCapabilities):
        * Modules/mediastream/RTCRtpReceiver.h:
        * Modules/mediastream/RTCRtpReceiver.idl:
        * Modules/mediastream/RTCRtpSender.cpp:
        (WebCore::RTCRtpSender::getCapabilities):
        * Modules/mediastream/RTCRtpSender.h:
        * Modules/mediastream/RTCRtpSender.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::receiverCapabilities):
        (WebCore::PeerConnectionBackend::senderCapabilities):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediastream/RTCPMuxPolicy.h:
        * platform/mediastream/RTCRtpCapabilities.h: Added.
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::typeFromKind):
        (WebCore::fromStdString):
        (WebCore::toChannels):
        (WebCore::toRTCRtpCapabilities):
        (WebCore::LibWebRTCProvider::receiverCapabilities):
        (WebCore::LibWebRTCProvider::senderCapabilities):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Calling sender.replaceTrack() twice produces a new transceiver and its corresponding m= section
        https://bugs.webkit.org/show_bug.cgi?id=191261

        Reviewed by Eric Carlson.

        Handle the case of replacing a track in a sender that has no track.
        In particular, do not create a new m-section as was implied by plan B implementation.
        Instead, set the track directly on the rtc sender.
        Covered by webrtc/video-addTransceiver.html.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::createSourceAndRTCTrack):
        (WebCore::LibWebRTCMediaEndpoint::addTransceiver):
        (WebCore::LibWebRTCMediaEndpoint::setSenderSourceFromTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::setSenderSourceFromTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
        (WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

2018-11-06  Chris Dumez  <cdumez@apple.com>

        Post too much text to iFrame could crash webkit
        https://bugs.webkit.org/show_bug.cgi?id=190947
        <rdar://problem/45678231>

        Reviewed by Geoffrey Garen.

        Optimize SuffixTree (Which is used by XSSAuditor) to stop storing each Node's
        children as a static array of 128 pointers and use a dynamic array (vector)
        instead. This uses way less memory. Also make SuffixTree and SuffixTree::Node
        as fast allocated for performance. This part of the change is based on the
        following Blink change:
        - https://chromium.googlesource.com/chromium/src.git/+/6ca590e1c7edaa7c56cac9e3e3c39cf398ca8d4d

        Also update the XSSAuditor to construct the SuffixTree lazily since there are
        many cases (including the one in this bug) where we were spending a significant
        amount of time building the SuffixTree and then never querying it.

        * html/parser/XSSAuditor.cpp:
        (WebCore::XSSAuditor::init):
        (WebCore::XSSAuditor::decodedHTTPBodySuffixTree):
        (WebCore::XSSAuditor::isContainedInRequest):
        * html/parser/XSSAuditor.h:
        * platform/text/SuffixTree.h:
        (WebCore::SuffixTree::mightContain):
        (WebCore::SuffixTree::Node::Node):
        (WebCore::SuffixTree::Node::~Node):
        (WebCore::SuffixTree::Node::find):
        (WebCore::SuffixTree::Node::end):
        (WebCore::SuffixTree::build):
        (WebCore::SuffixTree<Codebook>::Node::childAt):
        (WebCore::SuffixTree::Node::at): Deleted.

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Support onremovetrack for RTCPeerConnection removed tracks
        https://bugs.webkit.org/show_bug.cgi?id=191299

        Reviewed by Eric Carlson.

        When applying SDP, LibWebRTCMediaEndpoint gets notified of a removed track.
        In that case, make sure to remove it from its remote stream(s) so as
        to notify the application of the changes.
        Work around the receiver missing the list of streams by storing in a map
        the list of the remote streams for a given remote track.

        Covered by rebased test.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
        (WebCore::LibWebRTCMediaEndpoint::removeRemoteTrack):
        (WebCore::LibWebRTCMediaEndpoint::removeRemoteStream):
        (WebCore::LibWebRTCMediaEndpoint::stop):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:

2018-11-06  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r237878): css-dark-mode/supported-color-schemes.html is failing on Mojave
        https://bugs.webkit.org/show_bug.cgi?id=191338

        Reviewed by Dean Jackson.

        * page/Page.cpp:
        (WebCore::Page::appearanceDidChange): Add back call to didChangeStyleSheetEnvironment().
        It was dropped by mistake when I moved code to appearanceDidChange(). This is needed to
        update styles for semantic colors and from controls when the media prefers-color-scheme
        media query is not used on the page.

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Make mDNS ICE Candidate an experimental flag again
        https://bugs.webkit.org/show_bug.cgi?id=191262

        Reviewed by Dean Jackson.

        Rename mdnsICECandidatesEnabled to webRTCICECandidatesEnabled.
        This allows grouping the WebRTC runtime flags.
        No change of behavior.

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::newICECandidate):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::webRTCMDNSICECandidatesEnabled const):
        (WebCore::RuntimeEnabledFeatures::setWebRTCMDNSICECandidatesEnabled):
        (WebCore::RuntimeEnabledFeatures::mdnsICECandidatesEnabled const): Deleted.
        (WebCore::RuntimeEnabledFeatures::setMDNSICECandidatesEnabled): Deleted.

2018-11-06  Myles C. Maxfield  <mmaxfield@apple.com>

        Implement text-underline-offset and text-decoration-thickness
        https://bugs.webkit.org/show_bug.cgi?id=190774

        Reviewed by Dean Jackson.

        Because of our existing infrastructure for text decorations, adding support for these
        is fairly simple. This patch updates our existing functions to handle thick & placed
        underlines, as well as updating our repaint code to correcly handle repainting them.
        It also handles animations.

        Tests: animations/text-decoration-thickness.html
               animations/text-underline-offset.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-2.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-3.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-auto-length.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-baseline.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-from-font-auto.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-from-font-length.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-repaint.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-under-auto.html
               fast/css3-text/css3-text-decoration/text-decoration-offset-under-length.html
               fast/css3-text/css3-text-decoration/text-decoration-offset.html
               fast/css3-text/css3-text-decoration/text-decoration-thickness-length.html
               fast/css3-text/css3-text-decoration/text-decoration-thickness-repaint.html

        * page/animation/CSSPropertyAnimation.cpp:
        (WebCore::blendFunc):
        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
        * platform/graphics/FontMetrics.h:
        (WebCore::FontMetrics::underlinePosition const):
        (WebCore::FontMetrics::setUnderlinePosition):
        (WebCore::FontMetrics::underlineThickness const):
        (WebCore::FontMetrics::setUnderlineThickness):
        * platform/graphics/cocoa/FontCocoa.mm:
        (WebCore::Font::platformInit):
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::addToLine):
        * rendering/SimpleLineLayout.cpp:
        (WebCore::SimpleLineLayout::canUseForStyle):
        * rendering/TextDecorationPainter.cpp:
        (WebCore::TextDecorationPainter::paintTextDecoration):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::changeAffectsVisualOverflow const):
        * rendering/style/TextDecorationThickness.h:
        (WebCore::TextDecorationThickness::resolve const):
        * style/InlineTextBoxStyle.cpp:
        (WebCore::computeUnderlineOffset):
        (WebCore::visualOverflowForDecorations):
        * style/InlineTextBoxStyle.h:
        (WebCore::textDecorationStrokeThickness): Deleted.

2018-11-06  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove cap on partitioned cache max age if it matches a network reload (redirect-only)
        https://bugs.webkit.org/show_bug.cgi?id=189760
        <rdar://problem/44612242>

        Reviewed by Youenn Fablet and Antti Koivisto.

        No new tests. Existing test fleshed out.

        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::isRedirection const):
        * platform/network/ResourceResponseBase.h:
        (WebCore::ResourceResponseBase::isRedirection const): Deleted.
            Moved to the implementation file so that I can export it without warning.

2018-11-06  Myles C. Maxfield  <mmaxfield@apple.com>

        Spelling dots are drawn in the wrong place
        https://bugs.webkit.org/show_bug.cgi?id=190764

        Reviewed by Dean Jackson.

        - Dots should not be clipped.
        - Dots should be horizontally centered.
        - Dots should be drawn behind the text.
        - Distance from the baseline to the top of the dot should be 11.035% of font size.
        - Dot diameter should be 13.247% of the font size.
        - Distance between the dots (right side of the left dot to left side of the right dot) should be 9.457% of the font size.
        - The "font size" used in these calculations should be clamped so it's 10px <= font size <= 40px.

        Tests: editing/spelling/spelling-dots-position-2.html
               editing/spelling/spelling-dots-position-3.html
               editing/spelling/spelling-dots-position.html
               editing/spelling/spelling-dots-repaint.html

        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::colorForMarkerLineStyle): Align iOS and macOS implementations.
        (WebCore::GraphicsContext::drawDotsForDocumentMarker): Place the dots correctly.
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::addToLine): The KnownToHaveNoOverflow flag should be cleared if the element has spelling dots,
            because there is no guarantee the spelling dots will lie inside the layout rect of the element.
        (WebCore::InlineFlowBox::addTextBoxVisualOverflow): Update the repaint rects to include splling dot positions.
        * rendering/InlineFlowBox.h: Comments should explain why, not say what.
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint): Draw the dots behind the text.
        (WebCore::InlineTextBox::hasMarkers const): Convenience.
        (WebCore::InlineTextBox::paintPlatformDocumentMarkers): Refactor bounds information into a helper function.
        (WebCore::InlineTextBox::calculateUnionOfAllDocumentMarkerBounds const): Use for repaint rect calculation.
        (WebCore::InlineTextBox::calculateDocumentMarkerBounds const): Place the dots correctly.
        (WebCore::InlineTextBox::paintPlatformDocumentMarker): Call the helper method.
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers const):
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers): Deleted.
        * rendering/InlineTextBox.h: Declare the helper methods.
        * rendering/SimpleLineLayout.cpp: Simple line layout doesn't know how to paint spelling dots, so make the presence of
            spelling dots opt us out of SLL.
        (WebCore::SimpleLineLayout::canUseForWithReason):
        * rendering/SimpleLineLayoutCoverage.cpp:
        (WebCore::SimpleLineLayout::printReason):
        * rendering/SimpleLineLayoutCoverage.h: Add a new opt-out reason.

2018-11-06  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (r230523): Caps lock indicator not shown in password field
        https://bugs.webkit.org/show_bug.cgi?id=190056

        Reviewed by Ryosuke Niwa.

        When WindowServer access is blocked, GetCurrentModifiers() always returns 0. Instead of calling
        GetCurrentModifiers(), store the current modifiers from the key event argument in the method
        WebKit::WebPage::keyEvent, and use the stored value to detect if Caps lock is on. Additionally,
        the modifiers needs to be updated when the window becomes active.

        Test: fast/events/detect-caps-lock.html

        * Sources.txt:
        * platform/PlatformKeyboardEvent.h:
        * platform/graphics/FontTaggedSettings.cpp:
        * platform/mac/KeyEventMac.mm:
        (WebCore::PlatformKeyboardEvent::currentCapsLockState):
        (WebCore::PlatformKeyboardEvent::getCurrentModifierState):
        * testing/Internals.cpp:
        (WebCore::Internals::capsLockIsOn):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-11-06  Javier Fernandez  <jfernandez@igalia.com>

        CSS grid elements with justify-content: space-around have extra whitespace, sometimes a lot
        https://bugs.webkit.org/show_bug.cgi?id=191308

        Reviewed by Dean Jackson.

        The CSS WG resolved [1] that Content Alignment should account to the
        track sizing algorithm.

        The sizing algorithm has been modified so that two new steps (1.5
        and 2.5) were added to compute the Content Alignment offsets after
        resolving the columns' and rows' sizes respectively.

        This change decouples the Content Alignment logic from the tracks
        position, so that we can use it as part of the track sizing algorithm.

        I also had to store the whole ContentAlignmentData structure in two
        class attributes. We need both, position and distribution offsets, to
        be used in different parts of the layout logic.

        [1] https://github.com/w3c/csswg-drafts/issues/2557

        Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-001.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-cols-filled-shrinkwrap-001.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-cols-spanned-shrinkwrap-001.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-rows-filled-shrinkwrap-001.html
               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-rows-spanned-shrinkwrap-001.html

        * rendering/GridTrackSizingAlgorithm.cpp:
        (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::repeatTracksSizingIfNeeded):
        (WebCore::RenderGrid::layoutBlock):
        (WebCore::RenderGrid::gridItemOffset const):
        (WebCore::RenderGrid::trackSizesForComputedStyle const):
        (WebCore::RenderGrid::populateGridPositionsForDirection):
        (WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild):
        (WebCore::contentDistributionOffset):
        (WebCore::RenderGrid::computeContentPositionAndDistributionOffset):
        (WebCore::RenderGrid::nonCollapsedTracks const):
        * rendering/RenderGrid.h:
        (WebCore::ContentAlignmentData::isValid):
        (WebCore::ContentAlignmentData::defaultOffsets):

2018-11-06  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: WAL file keeps growing
        https://bugs.webkit.org/show_bug.cgi?id=191294
        <rdar://problem/41333493>

        Reviewed by Chris Dumez.

        When we quit apps, the database connection may not be shut down properly, and WAL file will be retained on disk.
        On the next open of database connection, new logs will be appended to the original WAL file, which keeps 
        increasing size of the WAL file. We should do a manual checkpoint when we open a IndexedDB to make sure previous
        log is written to database and truncate WAL file.

        Test: IndexedDB.IndexedDBTempFileSize

        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::open):

2018-11-06  Ali Juma  <ajuma@chromium.org>

        IntersectionObserver doesn't keep target's JS wrapper alive
        https://bugs.webkit.org/show_bug.cgi?id=190235

        Reviewed by Ryosuke Niwa.

        Retain JS wrappers of targets in queued entries using a vector of GCReachableRef owned by
        IntersectionObserver, which gets cleared after the entries have been delivered.

        Make IntersectionObserver::takeRecords return a struct which has both the vector of GCReachableRefs
        for targets and the vector of intersection observer entries, so that the GCReachableRefs survive
        until the creation of JS wrappers for the entries.

        Modify IntersectionObserver::hasPendingActivity to keep the observer alive while it has
        entries to deliver.

        Tests: intersection-observer/intersection-observer-entry-keeps-js-wrapper-of-target-alive.html
               intersection-observer/intersection-observer-keeps-js-wrapper-of-target-alive.html
               intersection-observer/target-deleted.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSIntersectionObserverEntryCustom.cpp:
        (WebCore::JSIntersectionObserverEntry::visitAdditionalChildren): Keep the target element's wrapper alive while the
        IntersectionObserverEntry's wrapper is alive.
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::takeRecords): Change return type to include GCReachableRefs for each record's target, so that
        each target can be kept until a JS wrapper is constructed for its IntersectionObserverEntry.
        (WebCore::IntersectionObserver::appendQueuedEntry):
        (WebCore::IntersectionObserver::notify): Erase GCReachableRefs for targets after delivering the corresponding records.
        (WebCore::IntersectionObserver::hasPendingActivity const): Keep the IntersectionObserver alive until queued entries are delivered.
        (WebCore::IntersectionObserver::stop):
        * page/IntersectionObserver.h:
        * page/IntersectionObserver.idl:
        * page/IntersectionObserverEntry.h:
        (WebCore::IntersectionObserverEntry::target const): Make this return a raw pointer instead of a RefPtr so that it
        can be called in JSIntersectionObserverEntry::visitAdditionalChildren, which runs on the GC thread (it's illegal to ref a Node
        on a non-main thread).
        * page/IntersectionObserverEntry.idl:

2018-11-06  Timothy Hatcher  <timothy@apple.com>

        <picture> container doesn't update when prefers-color-scheme media query changes
        https://bugs.webkit.org/show_bug.cgi?id=190913
        rdar://problem/45608456

        Reviewed by Dean Jackson.

        Test: css-dark-mode/prefers-color-scheme-picture-element.html

        * css/MediaQueryEvaluator.cpp:
        (WebCore::isAppearanceDependent): Added.
        (WebCore::MediaQueryEvaluator::evaluate const): Keep track of appearanceDependentResults.
        * css/MediaQueryEvaluator.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::addAppearanceDependentMediaQueryResult): Added.
        (WebCore::StyleResolver::hasMediaQueriesAffectedByAppearanceChange const): Added.
        * css/StyleResolver.h:
        (WebCore::StyleResolver::hasAppearanceDependentMediaQueries const): Added.
        * dom/Document.cpp:
        (WebCore::Document::evaluateMediaQueryList): Call checkAppearanceDependentPictures.
        (WebCore::Document::checkAppearanceDependentPictures): Added.
        (WebCore::Document::addAppearanceDependentPicture): Added.
        (WebCore::Document::removeAppearanceDependentPicture): Added.
        * dom/Document.h:
        * html/HTMLImageElement.cpp:
        (WebCore::HTMLImageElement::bestFitSourceFromPictureElement): Call addAppearanceDependentPicture.
        * html/HTMLPictureElement.cpp:
        (WebCore::HTMLPictureElement::~HTMLPictureElement): Call removeAppearanceDependentPicture.
        (WebCore::HTMLPictureElement::didMoveToNewDocument): Ditto.
        (WebCore::HTMLPictureElement::appearanceChangeAffectedPicture const): Added.
        * html/HTMLPictureElement.h:
        * page/Page.cpp:
        (WebCore::Page::appearanceDidChange): Added.
        (WebCore::Page::setUseSystemAppearance): Call appearanceDidChange.
        (WebCore::Page::setUseDarkAppearance): Call appearanceDidChange.
        * page/Page.h:
        * style/StyleScope.cpp:
        (WebCore::Style::Scope::evaluateMediaQueriesForAppearanceChange): Added.
        * style/StyleScope.h:

2018-11-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237834.

        Tests for this change crash on iOS Simulator

        Reverted changeset:

        "Spelling dots are drawn in the wrong place"
        https://bugs.webkit.org/show_bug.cgi?id=190764
        https://trac.webkit.org/changeset/237834

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] transitions/remove-transition-style.html crashes with GuardMalloc on
        https://bugs.webkit.org/show_bug.cgi?id=191304
        <rdar://problem/45819476>

        Reviewed by Dean Jackson.

        Ensure we remove animations from the m_allAnimations ListHashSet upon destruction.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::forgetAnimation):
        (WebCore::AnimationTimeline::cancelDeclarativeAnimation):
        * animation/AnimationTimeline.h:
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::getAnimations const):
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::~WebAnimation):

2018-11-06  Youenn Fablet  <youenn@apple.com>

        RealtimeOutgoingAudioSourceCocoa should unobserve its source at destruction time
        https://bugs.webkit.org/show_bug.cgi?id=191295

        Reviewed by Eric Carlson.

        Make RealtimeOutgoingAudioSource subclasses unobserve their source
        inside their destructor instead of RealtimeOutgoingAudioSource.
        This is consistent with how starting to observe works.
        Covered by existing tests.

        * platform/mediastream/RealtimeOutgoingAudioSource.cpp:
        (WebCore::RealtimeOutgoingAudioSource::unobserveSource):
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::~RealtimeOutgoingAudioSourceLibWebRTC):
        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingAudioSourceCocoa::RealtimeOutgoingAudioSourceCocoa):
        (WebCore::RealtimeOutgoingAudioSourceCocoa::~RealtimeOutgoingAudioSourceCocoa):
        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.h:

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Make sure RTCIceCandidateStats address is undefined for host and peer reflexive case
        https://bugs.webkit.org/show_bug.cgi?id=191263

        Reviewed by Eric Carlson.

        Test: webrtc/datachannel/getStats-no-prflx-remote-candidate.html

        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
        (WebCore::fillRTCIceCandidateStats):

2018-11-06  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Handle setting max number of frame between keyframes
        https://bugs.webkit.org/show_bug.cgi?id=190682

        Reviewed by Philippe Normand.

        That has been manually checked.

        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
        (gst_webrtc_video_encoder_get_property):
        (gst_webrtc_video_encoder_set_property):
        (register_known_encoder):
        (gst_webrtc_video_encoder_class_init):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):

2018-11-03  Alex Christensen  <achristensen@webkit.org>

        [Mac] Implement safe browsing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=188871

        Reviewed by Tim Horton.

        * en.lproj/Localizable.strings:

2018-11-06  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Account for CSS zoom when computing client rects
        https://bugs.webkit.org/show_bug.cgi?id=191282

        Reviewed by Simon Fraser.

        When computing rects for an IntersectionObserverEntry, account for the effective zoom when
        converting from absolute to client coordinates.

        Test: web-platform-tests/intersection-observer/bounding-box.html

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

2018-11-06  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Implement black frame generation
        https://bugs.webkit.org/show_bug.cgi?id=190684

        Reviewed by Xabier Rodriguez-Calvar.

        Avoiding webrtc/video-mute-vp8.html to crash but it still fails because
        we are missing the canvas bridging code.

        * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingVideoSourceLibWebRTC::createBlackFrame):
        * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h:

2018-11-06  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Do not try to handle framerate modulation in the encoder
        https://bugs.webkit.org/show_bug.cgi?id=190683

        Reviewed by Philippe Normand.

        This has to already be handled in capturing pipeline or in libwebrtc itself.

        No other encoder implementation do that, and libwebrtc is not happy with encoder that do not output the exact number of frames that have been passed in.

        No regressions detected and libwebrtc is happier this way, less warning output and no more frame corruption in H264 streams found.

        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):

2018-11-06  Frederic Wang  <fwang@igalia.com>

        Unreviewed, follow-up of previous commit.

        Actually move OptionSet in the header since it's used there too.

        * page/WindowFeatures.cpp:
        * page/WindowFeatures.h:

2018-11-06  Frederic Wang  <fwang@igalia.com>

        Unreviewed build fix.

        * page/WindowFeatures.cpp: Add missing header for OptionSet.
        * platform/graphics/FontTaggedSettings.cpp: Add missing header for IntegerHash.

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] Don't reset pending tasks when setting a null effect
        https://bugs.webkit.org/show_bug.cgi?id=191301
        <rdar://problem/45838422>

        Reviewed by Dean Jackson.

        The issue https://github.com/w3c/csswg-drafts/issues/2077 has changed the Web Animations API such that
        we no longer reset pending tasks when setting a null effect on an animation.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::setEffect):

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] Update the API to allow the "auto" composite value
        https://bugs.webkit.org/show_bug.cgi?id=191300
        <rdar://problem/45838373>

        Reviewed by Dean Jackson.

        The Web Animations API has been changed such that the various "composite" properties are no longer optional and instead
        allow an "auto" value in their enumeration.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * animation/CompositeOperationOrAuto.h: Copied from Source/WebCore/animation/KeyframeEffect.idl.
        * animation/CompositeOperationOrAuto.idl: Copied from Source/WebCore/animation/KeyframeEffect.idl.
        * animation/KeyframeEffect.cpp:
        (WebCore::processKeyframeLikeObject):
        (WebCore::processIterableKeyframes):
        (WebCore::processPropertyIndexedKeyframes):
        (WebCore::KeyframeEffect::getKeyframes):
        * animation/KeyframeEffect.h:
        * animation/KeyframeEffect.idl:

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] Update the API to implement Animation.updatePlaybackRate()
        https://bugs.webkit.org/show_bug.cgi?id=186510
        <rdar://problem/41000641>

        Reviewed by Dean Jackson.

        The Web Animations API has been changed to allow for changes to an animation's playback rate both synchronously,
        with the existing "playbackRate" property, and asynchronously, with the new updatePlaybackRate() method. In this
        patch we update the various procedures to account for pending playback rate changes and the notion of an "effective
        playback rate".

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::setEffect):
        (WebCore::WebAnimation::setTimeline):
        (WebCore::WebAnimation::setStartTime):
        (WebCore::WebAnimation::setCurrentTime):
        (WebCore::WebAnimation::effectivePlaybackRate const):
        (WebCore::WebAnimation::setPlaybackRate):
        (WebCore::WebAnimation::updatePlaybackRate):
        (WebCore::WebAnimation::applyPendingPlaybackRate):
        (WebCore::WebAnimation::playState const):
        (WebCore::WebAnimation::resetPendingTasks):
        (WebCore::WebAnimation::finish):
        (WebCore::WebAnimation::play):
        (WebCore::WebAnimation::runPendingPlayTask):
        (WebCore::WebAnimation::reverse):
        (WebCore::WebAnimation::runPendingPauseTask):
        * animation/WebAnimation.h:
        (WebCore::WebAnimation::playbackRate const):
        * animation/WebAnimation.idl:

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] Implement getTiming() and updateTiming()
        https://bugs.webkit.org/show_bug.cgi?id=186511
        <rdar://problem/41000677>

        Reviewed by Dean Jackson.

        The Web Animations API has been further simplified by removing the AnimationEffectTiming and AnimationEffectTimingReadOnly
        interfaces, removing the "timing" property on AnimationEffect replacing it with getTiming() and updateTiming() methods. This
        does not change the features of the API but simply how they are exposed.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * animation/AnimationEffect.cpp:
        (WebCore::AnimationEffect::AnimationEffect):
        (WebCore::AnimationEffect::~AnimationEffect):
        (WebCore::AnimationEffect::phase const):
        (WebCore::AnimationEffect::activeTime const):
        (WebCore::AnimationEffect::overallProgress const):
        (WebCore::AnimationEffect::simpleIterationProgress const):
        (WebCore::AnimationEffect::currentIteration const):
        (WebCore::AnimationEffect::currentDirection const):
        (WebCore::AnimationEffect::transformedProgress const):
        (WebCore::AnimationEffect::getTiming):
        (WebCore::AnimationEffect::getComputedTiming):
        (WebCore::AnimationEffect::updateTiming):
        (WebCore::AnimationEffect::setIterationStart):
        (WebCore::AnimationEffect::setIterations):
        (WebCore::AnimationEffect::endTime const):
        (WebCore::AnimationEffect::setDelay):
        (WebCore::AnimationEffect::setEndDelay):
        (WebCore::AnimationEffect::setFill):
        (WebCore::AnimationEffect::setIterationDuration):
        (WebCore::AnimationEffect::setDirection):
        (WebCore::AnimationEffect::setTimingFunction):
        (WebCore::AnimationEffect::activeDuration const):
        * animation/AnimationEffect.h:
        (WebCore::AnimationEffect::delay const):
        (WebCore::AnimationEffect::endDelay const):
        (WebCore::AnimationEffect::fill const):
        (WebCore::AnimationEffect::iterationStart const):
        (WebCore::AnimationEffect::iterations const):
        (WebCore::AnimationEffect::iterationDuration const):
        (WebCore::AnimationEffect::direction const):
        (WebCore::AnimationEffect::timingFunction const):
        * animation/AnimationEffect.idl:
        * animation/AnimationEffectTiming.idl: Removed.
        * animation/AnimationEffectTimingReadOnly.cpp: Removed.
        * animation/AnimationEffectTimingReadOnly.h: Removed.
        * animation/AnimationEffectTimingReadOnly.idl: Removed.
        * animation/CSSAnimation.cpp:
        (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation):
        * animation/CSSTransition.cpp:
        (WebCore::CSSTransition::setTimingProperties):
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        * animation/DocumentTimeline.cpp:
        * animation/EffectTiming.idl:
        * animation/KeyframeEffect.cpp:
        (WebCore::KeyframeEffect::create):
        (WebCore::KeyframeEffect::KeyframeEffect):
        (WebCore::KeyframeEffect::copyPropertiesFromSource):
        (WebCore::KeyframeEffect::setAnimatedPropertiesInStyle):
        (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
        (WebCore::KeyframeEffect::backingAnimationForCompositedRenderer const):
        * animation/KeyframeEffect.h:
        * animation/OptionalEffectTiming.h: Renamed from Source/WebCore/animation/AnimationEffectTiming.h.
        * animation/OptionalEffectTiming.idl: Renamed from Source/WebCore/animation/AnimationEffectTiming.cpp.
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::effectTimingDidChange):
        (WebCore::WebAnimation::updatePlaybackRate):
        * animation/WebAnimation.h:
        (WebCore::WebAnimation::isRelevant const):
        * bindings/js/JSAnimationEffectTimingReadOnlyCustom.cpp: Removed.
        * bindings/js/WebCoreBuiltinNames.h:

2018-11-06  Antoine Quint  <graouts@apple.com>

        [Web Animations] Update the Web Animations API to remove all the ReadOnly interfaces
        https://bugs.webkit.org/show_bug.cgi?id=186512
        <rdar://problem/41000691>

        Reviewed by Dean Jackson.

        The Web Animations API has been simplified by removing its various ReadOnly interfaces. In this patch,
        we make the following changes, not adding code but merely merging and renaming files:

        - AnimationEffectReadOnly and AnimationEffect are now a single AnimationEffect interface
        - KeyframeEffectReadOnly and KeyframeEffect are now a single KeyframeEffect interface
        - ComputedTimingProperties is now named ComputedEffectTiming
        - AnimationEffectTimingProperties is now named EffectTiming

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * animation/AnimationEffect.cpp: Renamed from Source/WebCore/animation/AnimationEffectReadOnly.cpp.
        (WebCore::AnimationEffect::~AnimationEffect):
        (WebCore::AnimationEffect::timingDidChange):
        (WebCore::AnimationEffect::localTime const):
        (WebCore::AnimationEffect::phase const):
        (WebCore::AnimationEffect::activeTime const):
        (WebCore::AnimationEffect::overallProgress const):
        (WebCore::AnimationEffect::simpleIterationProgress const):
        (WebCore::AnimationEffect::currentIteration const):
        (WebCore::AnimationEffect::currentDirection const):
        (WebCore::AnimationEffect::directedProgress const):
        (WebCore::AnimationEffect::transformedProgress const):
        (WebCore::AnimationEffect::iterationProgress const):
        (WebCore::AnimationEffect::getComputedTiming):
        * animation/AnimationEffect.h: Renamed from Source/WebCore/animation/AnimationEffectReadOnly.h.
        (WebCore::AnimationEffect::isKeyframeEffect const):
        * animation/AnimationEffect.idl: Renamed from Source/WebCore/animation/AnimationEffectReadOnly.idl.
        * animation/AnimationEffectTimingReadOnly.cpp:
        * animation/AnimationEffectTimingReadOnly.h:
        (WebCore::AnimationEffectTimingReadOnly::setEffect):
        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::removeAnimation):
        (WebCore::AnimationTimeline::cssAnimationForElementAndProperty):
        * animation/CSSTransition.cpp:
        * animation/ComputedEffectTiming.h: Renamed from Source/WebCore/animation/ComputedTimingProperties.h.
        * animation/ComputedEffectTiming.idl: Renamed from Source/WebCore/animation/ComputedTimingProperties.idl.
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::initialize):
        (WebCore::DeclarativeAnimation::flushPendingStyleChanges const):
        (WebCore::DeclarativeAnimation::phaseWithoutEffect const):
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        * animation/DeclarativeAnimation.h:
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::getAnimations const):
        (WebCore::DocumentTimeline::transitionDidComplete):
        (WebCore::DocumentTimeline::computeExtentOfAnimation const):
        (WebCore::DocumentTimeline::isRunningAnimationOnRenderer const):
        (WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const):
        (WebCore::DocumentTimeline::animatedStyleForRenderer):
        (WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement):
        (WebCore::DocumentTimeline::applyPendingAcceleratedAnimations):
        (WebCore::DocumentTimeline::resolveAnimationsForElement):
        * animation/EffectTiming.h: Renamed from Source/WebCore/animation/AnimationEffectTimingProperties.h.
        * animation/EffectTiming.idl: Renamed from Source/WebCore/animation/AnimationEffectTimingProperties.idl.
        * animation/KeyframeEffect.cpp:
        (WebCore::invalidateElement):
        (WebCore::CSSPropertyIDToIDLAttributeName):
        (WebCore::IDLAttributeNameToAnimationPropertyName):
        (WebCore::computeMissingKeyframeOffsets):
        (WebCore::processKeyframeLikeObject):
        (WebCore::processIterableKeyframes):
        (WebCore::processPropertyIndexedKeyframes):
        (WebCore::KeyframeEffect::create):
        (WebCore::KeyframeEffect::KeyframeEffect):
        (WebCore::KeyframeEffect::copyPropertiesFromSource):
        (WebCore::KeyframeEffect::getKeyframes):
        (WebCore::KeyframeEffect::processKeyframes):
        (WebCore::KeyframeEffect::updateBlendingKeyframes):
        (WebCore::KeyframeEffect::forceLayoutIfNeeded):
        (WebCore::KeyframeEffect::setBlendingKeyframes):
        (WebCore::KeyframeEffect::checkForMatchingTransformFunctionLists):
        (WebCore::KeyframeEffect::checkForMatchingFilterFunctionLists const):
        (WebCore::KeyframeEffect::checkForMatchingFilterFunctionLists):
        (WebCore::KeyframeEffect::checkForMatchingBackdropFilterFunctionLists):
        (WebCore::KeyframeEffect::checkForMatchingColorFilterFunctionLists):
        (WebCore::KeyframeEffect::computeDeclarativeAnimationBlendingKeyframes):
        (WebCore::KeyframeEffect::computeCSSAnimationBlendingKeyframes):
        (WebCore::KeyframeEffect::computeCSSTransitionBlendingKeyframes):
        (WebCore::KeyframeEffect::computedNeedsForcedLayout):
        (WebCore::KeyframeEffect::computeStackingContextImpact):
        (WebCore::KeyframeEffect::setTarget):
        (WebCore::KeyframeEffect::apply):
        (WebCore::KeyframeEffect::invalidate):
        (WebCore::KeyframeEffect::computeShouldRunAccelerated):
        (WebCore::KeyframeEffect::getAnimatedStyle):
        (WebCore::KeyframeEffect::setAnimatedPropertiesInStyle):
        (WebCore::KeyframeEffect::timingFunctionForKeyframeAtIndex):
        (WebCore::KeyframeEffect::updateAcceleratedAnimationState):
        (WebCore::KeyframeEffect::addPendingAcceleratedAction):
        (WebCore::KeyframeEffect::animationDidSeek):
        (WebCore::KeyframeEffect::animationSuspensionStateDidChange):
        (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
        (WebCore::KeyframeEffect::backingAnimationForCompositedRenderer const):
        (WebCore::KeyframeEffect::renderer const):
        (WebCore::KeyframeEffect::currentStyle const):
        (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):
        (WebCore::containsRotation):
        (WebCore::KeyframeEffect::computeTransformedExtentViaTransformList const):
        (WebCore::KeyframeEffect::computeTransformedExtentViaMatrix const):
        * animation/KeyframeEffect.h:
        (WebCore::KeyframeEffect::ParsedKeyframe::ParsedKeyframe):
        (WebCore::KeyframeEffect::target const):
        (WebCore::KeyframeEffect::iterationComposite const):
        (WebCore::KeyframeEffect::composite const):
        (WebCore::KeyframeEffect::isRunningAccelerated const):
        (WebCore::KeyframeEffect::hasPendingAcceleratedAction const):
        (WebCore::KeyframeEffect::hasBlendingKeyframes const):
        (WebCore::KeyframeEffect::animatedProperties const):
        * animation/KeyframeEffect.idl:
        * animation/KeyframeEffectOptions.h:
        * animation/KeyframeEffectOptions.idl:
        * animation/KeyframeEffectReadOnly.cpp: Removed.
        * animation/KeyframeEffectReadOnly.h: Removed.
        * animation/KeyframeEffectReadOnly.idl: Removed.
        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::create):
        (WebCore::WebAnimation::setEffect):
        (WebCore::WebAnimation::setEffectInternal):
        (WebCore::WebAnimation::setTimeline):
        (WebCore::WebAnimation::applyPendingAcceleratedActions):
        (WebCore::WebAnimation::computeRelevance):
        * animation/WebAnimation.h:
        (WebCore::WebAnimation::effect const):
        * animation/WebAnimation.idl:
        * bindings/js/JSAnimationEffectCustom.cpp: Renamed from Source/WebCore/bindings/js/JSAnimationEffectReadOnlyCustom.cpp.
        (WebCore::toJSNewlyCreated):
        (WebCore::toJS):
        * bindings/js/JSWebAnimationCustom.cpp:
        (WebCore::constructJSWebAnimation):
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/Document.cpp:

2018-11-06  Rob Buis  <rbuis@igalia.com>

        Some minor X-Content-Type-Options parsing issues
        https://bugs.webkit.org/show_bug.cgi?id=191107

        Reviewed by Darin Adler.

        Implement new parsing rules for X-Content-Type-Options [1]:
        https://github.com/whatwg/fetch/pull/818

        [1] https://fetch.spec.whatwg.org/#x-content-type-options-header

        Test: web-platform-tests/fetch/nosniff/parsing-nosniff.html

        * platform/network/HTTPParsers.cpp:
        (WebCore::isHTTPTabOrSpace):
        (WebCore::parseContentTypeOptionsHeader):

2018-11-06  Frederic Wang  <fwang@igalia.com>

        Overlay with -webkit-overflow-scrolling:touch doesn't become scrollable after added text makes it taller
        https://bugs.webkit.org/show_bug.cgi?id=158342

        Reviewed by Simon Fraser.

        Resizing the content of a -webkit-overflow-scrolling:touch overflow node on iOS may make it
        scrollable. However, the RenderLayerBacking's scrolling layer is not properly created
        when RenderLayerCompositor::updateScrollCoordinatedLayer is called and hence the UIProcess
        receives a null UIScrollView pointer when ScrollingTreeScrollingNodeDelegateIOS performs the
        associated update. In debug mode this hits an ASSERT and in release mode the overflow node
        remains unscrollable from the user's point of view. This patch fixes this issue by ensuring
        the RenderLayerBacking's scrolling layer is created during updateScrollCoordinatedStatus.

        Test: fast/scrolling/ios/update-scroll-coordinated-status.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus): Call updateConfiguration()
        to ensure the scrolling layer is present and indicate whether a rebuild is necessary.

2018-11-05  Zan Dobersek  <zdobersek@igalia.com>

        Place Fontconfig-specific RefPtr specializations in RefPtrFontconfig.h
        https://bugs.webkit.org/show_bug.cgi?id=191267

        Reviewed by Michael Catanzaro.

        Move the Fontconfig-specific RefPtr specialization declarations from
        RefPtrCairo.h to RefPtrFontconfig.h, with definitions moved to the new
        RefPtrFontconfig.cpp implementation file. These specializations are
        not tied to Cairo in any way.

        * platform/FreeType.cmake:
        * platform/graphics/FontPlatformData.h:
        * platform/graphics/cairo/RefPtrCairo.cpp:
        * platform/graphics/cairo/RefPtrCairo.h:
        * platform/graphics/freetype/FontCacheFreeType.cpp:
        * platform/graphics/freetype/RefPtrFontconfig.cpp: Added.
        (WTF::refIfNotNull):
        (WTF::derefIfNotNull):
        * platform/graphics/freetype/RefPtrFontconfig.h: Copied from Source/WebCore/platform/graphics/cairo/RefPtrCairo.h.

2018-11-05  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Fix WebCore/Modules includes
        https://bugs.webkit.org/show_bug.cgi?id=191287

        Reviewed by Fujii Hironori.

        No new tests. No change in behavior.

        Add in applicationmanifest to the list of includes and sort the
        modules directory.

        * CMakeLists.txt:

2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Cache glyph paths and share underline skipping code between all the ports
        https://bugs.webkit.org/show_bug.cgi?id=191239

        Reviewed by Alex Christensen.

        I was hoping that caching the glyph paths was going to be a performance progression,
        but it turns out that the additional overhead of WebCore::Path compensated for it.
        In total, the performance is the same (my testing says that this patch is a 1%
        progression, but that's within the noise).

        Because the ink skipping logic is now shared among all ports, Windows now gets it for
        free.

        Test: PerformanceTests/Layout/underline.html

        * platform/graphics/Font.cpp:
        (WebCore::Font::pathForGlyph const):
        * platform/graphics/Font.h:
        * platform/graphics/FontCascade.cpp:
        (WebCore::computeUnderlineType):
        (WebCore::GlyphIterationState::GlyphIterationState):
        (WebCore::findIntersectionPoint):
        (WebCore::updateX):
        (WebCore::findPathIntersections):
        (WebCore::GlyphToPathTranslator::GlyphToPathTranslator):
        (WebCore::GlyphToPathTranslator::containsMorePaths):
        (WebCore::GlyphToPathTranslator::path):
        (WebCore::GlyphToPathTranslator::extents):
        (WebCore::GlyphToPathTranslator::underlineType):
        (WebCore::GlyphToPathTranslator::advance):
        (WebCore::FontCascade::dashesForIntersectionsWithRect const):
        * platform/graphics/FontCascade.h:
        * platform/graphics/GlyphMetricsMap.h:
        (WebCore::GlyphMetricsMap::existingMetricsForGlyph):
        (WebCore::GlyphMetricsMap::GlyphMetricsPage::existingMetricsForGlyph const):
        (WebCore::GlyphMetricsMap<std::optional<Path>>::unknownMetrics):
        * platform/graphics/TextRun.h:
        * platform/graphics/cairo/FontCairo.cpp:
        (WebCore::Font::platformPathForGlyph const):
        (WebCore::GlyphIterationState::GlyphIterationState): Deleted.
        (WebCore::findIntersectionPoint): Deleted.
        (WebCore::updateX): Deleted.
        (WebCore::findPathIntersections): Deleted.
        (): Deleted.
        (WebCore::CairoGlyphToPathTranslator::path): Deleted.
        (WebCore::CairoGlyphToPathTranslator::extents): Deleted.
        (WebCore::CairoGlyphToPathTranslator::underlineType): Deleted.
        (WebCore::CairoGlyphToPathTranslator::advance): Deleted.
        (WebCore::FontCascade::dashesForIntersectionsWithRect const): Deleted.
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::GlyphIterationState::GlyphIterationState): Deleted.
        (WebCore::findIntersectionPoint): Deleted.
        (WebCore::updateX): Deleted.
        (WebCore::findPathIntersections): Deleted.
        (): Deleted.
        (WebCore::MacGlyphToPathTranslator::path): Deleted.
        (WebCore::MacGlyphToPathTranslator::extents): Deleted.
        (WebCore::MacGlyphToPathTranslator::underlineType): Deleted.
        (WebCore::MacGlyphToPathTranslator::advance): Deleted.
        (WebCore::FontCascade::dashesForIntersectionsWithRect const): Deleted.
        * platform/graphics/cocoa/FontCocoa.mm:
        (WebCore::Font::platformPathForGlyph const):
        * rendering/TextDecorationPainter.cpp:
        (WebCore::drawSkipInkUnderline):
        (WebCore::TextDecorationPainter::paintTextDecoration):

2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Clean up text decoration drawing code
        https://bugs.webkit.org/show_bug.cgi?id=191245

        Reviewed by Zalan Bujtas.

        This is some general clean up of the text decorations code. There is no behavior change.

        This patch modifies GraphicsContext::drawLineForText() & friends to accept a FloatRect instead of a FloatPoint + float width.
        This is helpful because it allows for easier bounding box calculations.
        This patch also removes some redundant computations that the skip:ink codepath was performing.
        This patch also refactors the wavy decoration parameters to not use out params.

        No new tests because there is no behavior change.

        * platform/graphics/GraphicsContext.cpp:
        (WebCore::GraphicsContext::computeUnderlineBoundsForText):
        (WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):
        * platform/graphics/GraphicsContext.h:
        * platform/graphics/GraphicsContextImpl.h:
        * platform/graphics/cg/GraphicsContextCG.cpp:
        (WebCore::GraphicsContext::drawLineForText):
        (WebCore::GraphicsContext::drawLinesForText):
        * platform/graphics/displaylists/DisplayListItems.cpp:
        (WebCore::DisplayList::DrawLinesForText::apply const):
        (WebCore::DisplayList::DrawLinesForText::localBounds const):
        (WebCore::DisplayList::operator<<):
        * platform/graphics/displaylists/DisplayListItems.h:
        (WebCore::DisplayList::DrawLinesForText::create):
        (WebCore::DisplayList::DrawLinesForText::thickness const):
        (WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
        * platform/graphics/displaylists/DisplayListRecorder.cpp:
        (WebCore::DisplayList::Recorder::drawLinesForText):
        * platform/graphics/displaylists/DisplayListRecorder.h:
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paintMarkedTextDecoration):
        (WebCore::InlineTextBox::paintCompositionUnderline const):
        * rendering/SimpleLineLayoutFunctions.cpp:
        (WebCore::SimpleLineLayout::paintFlow):
        * rendering/TextDecorationPainter.cpp:
        (WebCore::strokeWavyTextDecoration):
        (WebCore::translateIntersectionPointsToSkipInkBoundaries):
        (WebCore::TextDecorationPainter::TextDecorationPainter):
        (WebCore::TextDecorationPainter::paintTextDecoration):
        (WebCore::drawSkipInkUnderline): Deleted.
        * rendering/TextDecorationPainter.h:
        (WebCore::TextDecorationPainter::setInlineTextBox):
        (WebCore::TextDecorationPainter::setWidth):
        (WebCore::TextDecorationPainter::setFont): Deleted.
        (WebCore::TextDecorationPainter::setBaseline): Deleted.
        * style/InlineTextBoxStyle.cpp:
        (WebCore::getWavyStrokeParameters):
        (WebCore::visualOverflowForDecorations):
        * style/InlineTextBoxStyle.h:

2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Fix the Windows build after r237835
        https://bugs.webkit.org/show_bug.cgi?id=191242

        Reviewed by Simon Fraser.

        * rendering/style/TextDecorationThickness.h:
        (WebCore::TextDecorationThickness::operator== const):

2018-11-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Swatch appears squished and off-center in inputs of type color
        https://bugs.webkit.org/show_bug.cgi?id=191279
        <rdar://problem/45816319>

        Reviewed by Tim Horton.

        This patch makes some small adjustments to color inputs on iOS to bring them closer to the intended design.
        See comments below for more details.

        Tests:  fast/forms/color/color-input-uses-color-well-appearance.html
                fast/forms/color/input-appearance-color.html

        * css/html.css:

        Adjust the UA stylesheet for color inputs on iOS.

        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paintDecorations):

        When painting decorations for `ColorWellPart`, treat it as a standard button instead of the square button
        appearance.

        (WebCore::RenderTheme::colorInputStyleSheet const):

        Add `-webkit-appearance: color-well;` to the stylesheet for color inputs. Previously, this was special-cased on
        iOS, where color input elements had appearances of `textfield`; however, this patch makes some adjustments to
        RenderThemeIOS, allowing us to use `color-well` on iOS.

        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::platformUsesColorWellAppearance const): Deleted.

        Remove this from RenderTheme. This is no longer necessary, since all platforms now use
        `-webkit-appearance: color-well;`.

        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::adjustButtonStyle const):

        When painting buttons for color inputs, don't add rounded corners that are present by default for regular
        buttons.

2018-11-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] An audio track should be muted when capture is interrupted by the OS.
        https://bugs.webkit.org/show_bug.cgi?id= 191283
         <rdar://problem/45773103>

        Reviewed by Jon Lee.

        Test: fast/mediastream/media-stream-track-interrupted.html

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::setInterruptedForTesting):
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::beginInterruption):
        (WebCore::CoreAudioCaptureSource::endInterruption):
        * testing/Internals.cpp:
        (WebCore::Internals::setMediaStreamSourceInterrupted):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Parsing support for text-underline-offset and text-decoration-thickness
        https://bugs.webkit.org/show_bug.cgi?id=191242

        Reviewed by Simon Fraser.

        Before we can implement the properties properly, we have to parse them.

        https://github.com/w3c/csswg-drafts/issues/3118#issuecomment-432297480 describes the grammar:
        text-underline-position: auto | [ [ under | from-font] || [ left | right ] ]
        text-underline-offset: auto | <length>
        text-decoration-thickness: auto | from-font | <length>

        This patch also takes the opportunity to update the grammar of text-underline-position to match the spec,
        and to add an alias to the unprefixed version.

        We still don't support the left and right values on text-underline-position. We should add those eventually.

        Tests: fast/css3-text/css3-text-decoration/text-decoration-thickness-parse.html
               fast/css3-text/css3-text-decoration/text-underline-offset-parse.html

        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::textUnderlineOffsetToCSSValue):
        (WebCore::textDecorationThicknessToCSSValue):
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator TextUnderlinePosition const):
        (WebCore::CSSPrimitiveValue::operator OptionSet<TextUnderlinePosition> const): Deleted.
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertTextUnderlinePosition):
        (WebCore::StyleBuilderConverter::convertTextUnderlineOffset):
        (WebCore::StyleBuilderConverter::convertTextDecorationThickness):
        * css/StyleResolver.cpp:
        (WebCore::shouldApplyPropertyInParseOrder):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeTextUnderlineOffset):
        (WebCore::consumeTextDecorationThickness):
        (WebCore::CSSPropertyParser::parseSingleValue):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::textUnderlinePosition const):
        (WebCore::RenderStyle::textUnderlineOffset const):
        (WebCore::RenderStyle::textDecorationThickness const):
        (WebCore::RenderStyle::setTextUnderlinePosition):
        (WebCore::RenderStyle::setTextUnderlineOffset):
        (WebCore::RenderStyle::setTextDecorationThickness):
        (WebCore::RenderStyle::initialTextUnderlinePosition):
        (WebCore::RenderStyle::initialTextUnderlineOffset):
        (WebCore::RenderStyle::initialTextDecorationThickness):
        * rendering/style/RenderStyleConstants.h:
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:
        * rendering/style/TextDecorationThickness.h: Added.
        (WebCore::TextDecorationThickness::createWithAuto):
        (WebCore::TextDecorationThickness::createFromFont):
        (WebCore::TextDecorationThickness::createWithLength):
        (WebCore::TextDecorationThickness::isAuto const):
        (WebCore::TextDecorationThickness::isFromFont const):
        (WebCore::TextDecorationThickness::isLength const):
        (WebCore::TextDecorationThickness::setLengthValue):
        (WebCore::TextDecorationThickness::lengthValue const):
        (WebCore::TextDecorationThickness::operator== const):
        (WebCore::TextDecorationThickness::operator!= const):
        (WebCore::TextDecorationThickness::TextDecorationThickness):
        (WebCore::operator<<):
        * rendering/style/TextUnderlineOffset.h: Added.
        (WebCore::TextUnderlineOffset::createWithAuto):
        (WebCore::TextUnderlineOffset::createWithLength):
        (WebCore::TextUnderlineOffset::isAuto const):
        (WebCore::TextUnderlineOffset::isLength const):
        (WebCore::TextUnderlineOffset::setLengthValue):
        (WebCore::TextUnderlineOffset::lengthValue const):
        (WebCore::TextUnderlineOffset::lengthOr const):
        (WebCore::TextUnderlineOffset::operator== const):
        (WebCore::TextUnderlineOffset::operator!= const):
        (WebCore::TextUnderlineOffset::TextUnderlineOffset):
        (WebCore::operator<<):
        * style/InlineTextBoxStyle.cpp:
        (WebCore::computeUnderlineOffset):
        * style/InlineTextBoxStyle.h:

2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Spelling dots are drawn in the wrong place
        https://bugs.webkit.org/show_bug.cgi?id=190764

        Reviewed by Dean Jackson.

        - Dots should not be clipped.
        - Dots should be horizontally centered.
        - Dots should be drawn behind the text.
        - Distance from the baseline to the top of the dot should be 11.035% of font size.
        - Dot diameter should be 13.247% of the font size.
        - Distance between the dots (right side of the left dot to left side of the right dot) should be 9.457% of the font size.
        - The "font size" used in these calculations should be clamped so it's 10px <= font size <= 40px.

        Tests: editing/spelling/spelling-dots-position-2.html
               editing/spelling/spelling-dots-position-3.html
               editing/spelling/spelling-dots-position.html
               editing/spelling/spelling-dots-repaint.html

        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::colorForMarkerLineStyle): Align iOS and macOS implementations.
        (WebCore::GraphicsContext::drawDotsForDocumentMarker): Place the dots correctly.
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::addToLine): The KnownToHaveNoOverflow flag should be cleared if the element has spelling dots,
            because there is no guarantee the spelling dots will lie inside the layout rect of the element.
        (WebCore::InlineFlowBox::addTextBoxVisualOverflow): Update the repaint rects to include splling dot positions.
        * rendering/InlineFlowBox.h: Comments should explain why, not say what.
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint): Draw the dots behind the text.
        (WebCore::InlineTextBox::hasMarkers const): Convenience.
        (WebCore::InlineTextBox::paintPlatformDocumentMarkers): Refactor bounds information into a helper function.
        (WebCore::InlineTextBox::calculateUnionOfAllDocumentMarkerBounds const): Use for repaint rect calculation.
        (WebCore::InlineTextBox::calculateDocumentMarkerBounds const): Place the dots correctly.
        (WebCore::InlineTextBox::paintPlatformDocumentMarker): Call the helper method.
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers const):
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers): Deleted.
        * rendering/InlineTextBox.h: Declare the helper methods.
        * rendering/SimpleLineLayout.cpp: Simple line layout doesn't know how to paint spelling dots, so make the presence of
            spelling dots opt us out of SLL.
        (WebCore::SimpleLineLayout::canUseForWithReason):
        * rendering/SimpleLineLayoutCoverage.cpp:
        (WebCore::SimpleLineLayout::printReason):
        * rendering/SimpleLineLayoutCoverage.h: Add a new opt-out reason.

2018-11-05  Dean Jackson  <dino@apple.com>

        Attempted build fix.

        * dom/messageports/MessagePortChannelRegistry.cpp:

2018-11-05  Chris Dumez  <cdumez@apple.com>

        Crash under DOMWindow::postMessageTimerFired()
        https://bugs.webkit.org/show_bug.cgi?id=191217
        <rdar://problem/40888466>

        Reviewed by Geoffrey Garen.

        Protect the frame in DOMWindow::postMessageTimerFired() before calling dispatchEvent() as dispatching the
        event may cause JS to run and this JS may cause the frame to be destroyed, in which case we will crash
        when trying to use the frame on the next line.

        Test: fast/dom/Window/remove-frame-in-message-event-handler.html

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::postMessageTimerFired):

2018-11-05  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Fix EncodedImage timestamps to match what libWebRTC expects
        https://bugs.webkit.org/show_bug.cgi?id=190035

        Reviewed by Philippe Normand.

        We can't rely on GStreamer timestamps to pass to EncodedImages after encoding
        because libWebRTC doesn't use the timestamp we fed it but does
        some computation on the input timestamp in the images we pass in before it passes
        them back to the encoder. Then internally LibWebRTC relies on those exact timestamps
        passed into the encoder to do checks and compute RTP timestamps so we need to carefully
        pass the exact timestamps to LibWebRTC (in practice we still use GStreamer timestamps in
        all the GStreamer processing pipelines as the WebRTC object basically wraps the "same"
        `GstSample` all around, but we are not synced on the clock anyway).

        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
        * platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp:
        (WebCore::LibWebRTCVideoFrameFromGStreamerSample):
        * platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.h:
        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::newSampleCallback):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
        (WebCore::GStreamerVideoEncoder::newSampleCallback):

2018-11-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Changing view scale sometimes does not zoom the page to the new initial scale when the page is zoomed in when ignoring meta viewport
        https://bugs.webkit.org/show_bug.cgi?id=191226
        <rdar://problem/45781765>

        Reviewed by Tim Horton.

        When `_setViewScale:` SPI is used to adjust the layout scale factor of the page, we multiply minimum, initial
        and maximum scales by the given layout scale factor to adjust for a larger or smaller minimum layout size.
        However, in the case where the layout size scale factor is greater than 1 and we're also forcing the viewport to
        be scalable, we override the default minimum scale with 1 (i.e. `forceAlwaysUserScalableMinimumScale`). This
        means that the might be off by a small margin due to rounding error when computing the content width and view
        width (see: r237743).

        This means that in the case where (1) the viewport is forced to be user-scalable, and (2) we're ignoring meta
        viewport parameters, and (3) `_viewScale` exceeds 1, we may end up computing a slightly different minimum scale
        than the default minimum scale multiplied by the layout size scale factor; subsequently, the page scale factor
        will be slightly different from initial scale, such that we'll no longer zoom to the new initial scale when
        changing view scale.

        This patch adjusts `forceAlwaysUserScalableMinimumScale` and `forceAlwaysUserScalableMaximumScale` to take the
        current layout scale factor into account when computing min and max scales when the viewport is forced to be
        always scalable.

        Test: fast/viewport/ios/minimum-scale-after-changing-view-scale.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::minimumScale const):
        * page/ViewportConfiguration.h:
        (WebCore::ViewportConfiguration::maximumScale const):
        (WebCore::ViewportConfiguration::forceAlwaysUserScalableMaximumScale const):
        (WebCore::ViewportConfiguration::forceAlwaysUserScalableMinimumScale const):

        Turn these from constant values to const functions on ViewportConfiguration, which factor in the current
        viewport layout size scale factor.

2018-11-05  Dean Jackson  <dino@apple.com>

        Expose a constructor for PointerEvent from PlatformTouchEvent
        https://bugs.webkit.org/show_bug.cgi?id=191238
        <rdar://problem/45795682>

        Reviewed by Antoine Quint.

        Implement a constructor that takes a PlatformTouchEvent to
        create a PointerEvent. At the moment the code to call this
        constructor will live in WebKitAdditions, so no new tests
        yet.

        * SourcesCocoa.txt: Add PointerEventIOS.cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.
        * dom/EventNames.h: Add macros for pointerdown, pointermove,
             pointerup, pointercancel.
        * dom/PointerEvent.cpp: Remove JSC namespace.
        * dom/PointerEvent.h: Add create and constructor that takes
             a PlatformTouchEvent.
        * dom/ios/PointerEventIOS.cpp: Added.

2018-11-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237785.

        Introduced layout test and API test failures on macOS and iOS.

        Reverted changeset:

        "[iOS] Issue initial paint soon after the visuallyNonEmpty
        milestone is fired."
        https://bugs.webkit.org/show_bug.cgi?id=191078
        https://trac.webkit.org/changeset/237785

2018-11-05  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Error out when simulcast is activated
        https://bugs.webkit.org/show_bug.cgi?id=190678

        Reviewed by Philippe Normand.

        Implementing it is not for now yet.

        Tests for simulcast have been disabled as they now fail (instead of crashing).

        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):

2018-11-05  Youenn Fablet  <youenn@apple.com>

        RealtimeOutgoingAudioSource subclasses should observe its source when fully constructed
        https://bugs.webkit.org/show_bug.cgi?id=191241

        Reviewed by Eric Carlson.

        Moving the logic to observe the audio source to the point where the
        RealtimeOutgoingAudioSource subclass is fully initialized.
        Covered by existing tests.

        * platform/mediastream/RealtimeOutgoingAudioSource.cpp:
        (WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
        (WebCore::RealtimeOutgoingAudioSource::observeSource):
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
        (WebCore::RealtimeOutgoingAudioSourceLibWebRTC::RealtimeOutgoingAudioSourceLibWebRTC):
        * platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingAudioSourceCocoa::RealtimeOutgoingAudioSourceCocoa):

2018-11-05  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add webrtcencoder bin to cleanup and refactor the way we set encoders
        https://bugs.webkit.org/show_bug.cgi?id=190674

        Reviewed by Philippe Normand.

        webrtcencoder is a simple GstBin with a set of well known GStreamer encoders which
        it can use to implement encoding for different formats exposing a trimmed down unified API.

        It also adds proper handling of H264 profiles.

        The added files follow GStreamer coding style as we aim at upstreaming the element
        in the future.

        This is a refactoring so current tests already cover it.

        * platform/GStreamer.cmake:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::initializeGStreamerAndRegisterWebKitElements):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp: Added.
        (gst_webrtc_video_encoder_get_property):
        (gst_webrtc_video_encoder_set_bitrate):
        (gst_webrtc_video_encoder_set_format):
        (gst_webrtc_video_encoder_set_property):
        (register_known_encoder):
        (setup_x264enc):
        (setup_vp8enc):
        (setup_openh264enc):
        (set_bitrate_kbit_per_sec):
        (set_bitrate_bit_per_sec):
        (gst_webrtc_video_encoder_class_init):
        (gst_webrtc_video_encoder_init):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoder.h: Added.
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
        (WebCore::GStreamerVideoEncoder::InitEncode):
        (WebCore::GStreamerVideoEncoder::createEncoder):
        (WebCore::GStreamerVideoEncoder::AddCodecIfSupported):
        (WebCore::GStreamerVideoEncoder::ImplementationName const):
        (WebCore::GStreamerVideoEncoder::SetRestrictionCaps):

2018-11-05  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] properly mark H.264 stream type in the "decoder"
        https://bugs.webkit.org/show_bug.cgi?id=190676

        Reviewed by Philippe Normand.

        Avoiding to have h264parse make assumption (which might be wrong at some
        point).

        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::GetCapsForFrame):

2018-11-05  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Do not sync libwerbtc stream on the clock
        https://bugs.webkit.org/show_bug.cgi?id=190677

        The approach here is basically to let libwebrtc do all the
        synchronisation for us, and the same way as it is done in apple ports,
        we basically try to display what libwebrtc outputs as fast as possible.

        Reviewed by Philippe Normand.

        Manually tested

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::setSyncOnSink):
        (WebCore::MediaPlayerPrivateGStreamer::syncOnClock):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::load):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

2018-11-05  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Fix isIntersecting computation when 0 is not a threshold
        https://bugs.webkit.org/show_bug.cgi?id=191210

        Reviewed by Simon Fraser.

        isIntersecting should be false if the intersection ratio is smaller than the
        smallest threshold value. Update the computation of isIntersecting to depend on
        the current thresholdIndex.

        Test: imported/w3c/web-platform-tests/intersection-observer/initial-observation-with-threshold-expected.html

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

2018-11-05  Rob Buis  <rbuis@igalia.com>

        Remove some virtual methods in CachedRawResource
        https://bugs.webkit.org/show_bug.cgi?id=191251

        Reviewed by Frédéric Wang.

        Since CachedRawResource is final no need to introduce new virtual
        methods in CachedRawResource. This patch also removes an outdated
        comment and forward declaration.

        No new tests since no change in functionality.

        * loader/cache/CachedRawResource.h:

2018-11-05  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Move elements registration to GStreamerCommon
        https://bugs.webkit.org/show_bug.cgi?id=191189

        Reviewed by Xabier Rodriguez-Calvar.

        It was a bit odd to have this in the base player class and to have
        sub-classes calling a static function of the super-class.

        Covered by existing tests.

        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::initializeGStreamerAndRegisterWebKitElements):
        * platform/graphics/gstreamer/GStreamerCommon.h:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::isAvailable):
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
        (WebCore::MediaPlayerPrivateGStreamer::getSupportedTypes):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
        (WebCore::MediaPlayerPrivateGStreamerMSE::registerMediaEngine):
        (WebCore::MediaPlayerPrivateGStreamerMSE::load):
        (WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):
        (WebCore::MediaPlayerPrivateGStreamerMSE::supportsType):

2018-11-04  Rob Buis  <rbuis@igalia.com>

        Remove ENABLE_OPENCL fully
        https://bugs.webkit.org/show_bug.cgi?id=191172

        Reviewed by Yusuke Suzuki.

        Forgot to simplify this, no need for applyAll anymore
        since it just calls apply.

        No new tests since no change in functionality.

        * platform/graphics/filters/FilterEffect.h:
        (WebCore::FilterEffect::applyAll): Deleted.
        * rendering/svg/RenderSVGResourceFilter.cpp:
        (WebCore::RenderSVGResourceFilter::postApplyResource):

2018-11-04  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        1. Improve visuallyNonEmpty milestone confidence level.
            Ignore whitespace and non visible text content.
            Parsing the main document should not necessarily fire the milestone. Check if there's any pending scripts/css/font loading.
            Check if the html/body is actually visible.

        2. Issue initial paint soon after the milestone fires.
            Use a 0ms timer to flush the initial paint.
            Throttle additional flushes for 500ms (remove the non-initial 1.5 throttling)

        3. Suspend optional style recalcs and layouts while painting is being throttled.
           When parsing yields we initiate a 0ms style recalc/layout timer.
           These optional layouts produce content that we have no intention to paint. 

        * dom/Document.cpp:
        (WebCore::Document::scheduleStyleRecalc):
        (WebCore::Document::shouldScheduleLayout):
        * page/ChromeClient.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::resetLayoutMilestones):
        (WebCore::FrameView::qualifiesAsVisuallyNonEmpty const):
        (WebCore::FrameView::updateSignificantRenderedTextMilestoneIfNeeded):
        (WebCore::FrameView::updateIsVisuallyNonEmpty):
        * page/FrameView.h:
        (WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount): Ignore whitespace characters. Some pages start with plenty of whitespace only content.
        * platform/graphics/FontCascade.h:
        * rendering/RenderText.cpp: Check whether the text is actually visible at this point.
        (WebCore::RenderText::RenderText):

2018-11-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Add support for percentage height in quirks mode.
        https://bugs.webkit.org/show_bug.cgi?id=191232

        Reviewed by Antti Koivisto.

        In quirks mode, we go and travers the containing block chain to find a block level
        box with fixed height value to resolve the percentage value.

        Test: fast/block/basic/quirk-mode-percent-height.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::computedHeightValue):
        * layout/Verification.cpp:
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):

2018-11-04  Zalan Bujtas  <zalan@apple.com>

        [LFC][BCF] Add support for block level non-replaced inflow height percentage
        https://bugs.webkit.org/show_bug.cgi?id=191229

        Reviewed by Antti Koivisto.

        Test: fast/block/basic/child-block-level-box-with-height-percent.html

        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::computedHeightValue):
        (WebCore::Layout::computedHeightValue): Deleted.
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

2018-11-04  Youenn Fablet  <youenn@apple.com>

        RealtimeOutgoingAudioSource should use DestructionThread::Main
        https://bugs.webkit.org/show_bug.cgi?id=191230

        Reviewed by Eric Carlson.

        Covered by imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html
        that should no longer crash in debug.

        * platform/mediastream/RealtimeOutgoingAudioSource.h:

2018-11-04  Youenn Fablet  <youenn@apple.com>

        IDB should allow storing RTCCertificate
        https://bugs.webkit.org/show_bug.cgi?id=191077

        Reviewed by Chris Dumez.

        Add support for serialization/deserialization of RTCCertificate.
        Store the origin in RTCCertificate and make sure that a certificate
        with a different origin cannot be used to create a RTCPeerConnection.

        Test: imported/w3c/web-platform-tests/webrtc/RTCCertificate-postMessage.html

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::generateCertificate):
        * Modules/mediastream/RTCCertificate.cpp:
        (WebCore::RTCCertificate::create):
        (WebCore::RTCCertificate::RTCCertificate):
        * Modules/mediastream/RTCCertificate.h:
        (WebCore::RTCCertificate::origin const):
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::certificatesFromConfiguration):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
        (WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::RTCCertificateGeneratorCallback):
        (WebCore::LibWebRTCCertificateGenerator::generateCertificate):
        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.h:
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneSerializer::dumpIfTerminal):
        (WebCore::CloneDeserializer::CachedString::takeString):
        (WebCore::CloneDeserializer::readRTCCertificate):
        (WebCore::CloneDeserializer::readTerminal):

2018-11-04  Youenn Fablet  <youenn@apple.com>

        Add support for RTCMuxPolicy
        https://bugs.webkit.org/show_bug.cgi?id=191188

        Reviewed by Eric Carlson.

        Add support for RTCMuxPolicy dictionary option for both constructor and setConfiguration.
        Make sure setConfiguration throws if trying to change this policy.
        Pipe this parameter up to libwebrtc.
        Covered by rebased test.

        * Modules/mediastream/RTCConfiguration.h:
        * Modules/mediastream/RTCConfiguration.idl:
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::iceServersFromConfiguration):
        (WebCore::RTCPeerConnection::initializeConfiguration):
        (WebCore::RTCPeerConnection::setConfiguration):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::rtcpMuxPolicyfromConfiguration):
        (WebCore::configurationFromMediaEndpointConfiguration):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediastream/MediaEndpointConfiguration.cpp:
        (WebCore::MediaEndpointConfiguration::MediaEndpointConfiguration):
        * platform/mediastream/MediaEndpointConfiguration.h:
        * platform/mediastream/RTCPMuxPolicy.h: Added.

2018-11-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: capture changes to <canvas> that would affect the recorded context
        https://bugs.webkit.org/show_bug.cgi?id=190854

        Reviewed by Matt Baker.

        Updated existing tests: inspector/canvas/recording-2d.html
                                inspector/canvas/recording-bitmaprenderer.html
                                inspector/canvas/recording-webgl.html

        * html/HTMLCanvasElement.idl:
        Apply `CallTracingCallback=recordCanvasAction` to the `width` and `height` attributes so
        that they are recorded through the same path as `CanvasRenderingContext`.

        * html/CanvasBase.h:
        * html/CanvasBase.cpp:
        (WebCore::CanvasBase::callTracingActive const): Added.

        * bindings/js/CallTracer.h:
        * bindings/js/CallTracer.cpp:
        (WebCore::CallTracer::recordCanvasAction):


2018-11-03  Andy Estes  <aestes@apple.com>

        [Payment Request] PaymentResponse.retry()'s errorFields should be optional
        https://bugs.webkit.org/show_bug.cgi?id=191212

        Reviewed by Youenn Fablet.

        Per WebIDL, the errorFields argument to PaymentResponse.retry() should be optional. See
        <https://github.com/w3c/payment-request/issues/804> for details.

        Added test case to http/tests/paymentrequest/payment-response-retry-method.https.html.

        * Modules/paymentrequest/PaymentResponse.idl:

2018-11-02  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] Resolve percentage height values.
        https://bugs.webkit.org/show_bug.cgi?id=191224

        Reviewed by Antti Koivisto.

        10.5 Content height: the 'height' property
        The percentage is calculated with respect to the height of the generated box's containing block.
        If the height of the containing block is not specified explicitly (i.e., it depends on content height),
        and this element is not absolutely positioned, the used height is calculated as if 'auto' was specified.

        https://www.w3.org/TR/CSS22/visudet.html#propdef-height

        Test: fast/block/basic/height-percentage-simple.html

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::isHeightAuto):
        (WebCore::Layout::computedHeightValue):
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        (WebCore::Layout::FormattingContext::Geometry::computedMaxHeight):
        (WebCore::Layout::FormattingContext::Geometry::computedMinHeight):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):

2018-11-03  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] enumerateDevices should not expose devices that are not available to getUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=191177
        <rdar://problem/45747873>

        Reviewed by Jer Noble.

        Test: http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute.html

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start): Only expose devices that are available to gUM.

        * Modules/mediastream/UserMediaController.cpp:
        (WebCore::isSecure): Moved from UserMediaRequest.cpp.
        (WebCore::isAllowedToUse): Ditto.
        (WebCore::UserMediaController::canCallGetUserMedia): Modified from UserMediaRequest.cpp.
        (WebCore::UserMediaController::logGetUserMediaDenial): Log reason for denial.
        * Modules/mediastream/UserMediaController.h:

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::start): Use UserMediaController::canCallGetUserMedia.
        (WebCore::isSecure): Deleted.
        (WebCore::isAllowedToUse): Deleted.
        (WebCore::canCallGetUserMedia): Deleted.

2018-11-02  Justin Michaud  <justin_michaud@apple.com>

        Add new global object and preliminary Worklets support for CSS painting api
        https://bugs.webkit.org/show_bug.cgi?id=190979

        Reviewed by Chris Dumez.

        Test: fast/css-custom-paint/worklet.html

        Add a new ScriptExecutionContext and global object to run worklets in. This is mostly copy+paste
        from Workers, but without any of the threading. Worklet.addModule does not yet support loading scripts
        or doing cross origin checking. There are quite a few parts of the ScriptExecutionContext api that are
        left as ASSERT_NOT_REACHED().

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSDOMGlobalObject.cpp:
        (WebCore::JSDOMGlobalObject::scriptExecutionContext const):
        * bindings/js/JSPaintWorkletGlobalScopeCustom.cpp: Renamed from Source/WebCore/bindings/js/JSCSSPaintWorkletGlobalScopeCustom.cpp.
        (WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren):
        (WebCore::JSPaintWorkletGlobalScope::registerPaint):
        * bindings/js/JSWorkletGlobalScopeBase.cpp: Added.
        (WebCore::JSWorkletGlobalScopeBase::JSWorkletGlobalScopeBase):
        (WebCore::JSWorkletGlobalScopeBase::finishCreation):
        (WebCore::JSWorkletGlobalScopeBase::clearDOMGuardedObjects):
        (WebCore::JSWorkletGlobalScopeBase::visitChildren):
        (WebCore::JSWorkletGlobalScopeBase::destroy):
        (WebCore::JSWorkletGlobalScopeBase::scriptExecutionContext const):
        (WebCore::JSWorkletGlobalScopeBase::supportsRichSourceInfo):
        (WebCore::JSWorkletGlobalScopeBase::shouldInterruptScript):
        (WebCore::JSWorkletGlobalScopeBase::shouldInterruptScriptBeforeTimeout):
        (WebCore::JSWorkletGlobalScopeBase::javaScriptRuntimeFlags):
        (WebCore::toJS):
        (WebCore::toJSWorkletGlobalScope):
        * bindings/js/JSWorkletGlobalScopeBase.h: Added.
        (WebCore::JSWorkletGlobalScopeBase::wrapped const):
        (WebCore::JSWorkletGlobalScopeBase::proxy const):
        (WebCore::JSWorkletGlobalScopeBase::createStructure):
        (WebCore::toJS):
        * bindings/js/ScriptState.cpp:
        (WebCore::execStateFromWorkerGlobalScope):
        (WebCore::execStateFromWorkletGlobalScope):
        * bindings/js/ScriptState.h:
        * bindings/js/WebCoreBuiltinNames.h:
        * bindings/scripts/CodeGeneratorJS.pm:
        (IsDOMGlobalObject):
        (ShouldUseGlobalObjectPrototype):
        (GenerateHeader):
        (GenerateRuntimeEnableConditionalStringForExposed):
        (GenerateImplementation):
        * bindings/scripts/preprocess-idls.pl:
        * css/CSSPaintImageValue.cpp:
        (WebCore::CSSPaintImageValue::image):
        * css/DOMCSSPaintWorklet.cpp:
        (WebCore::DOMCSSPaintWorklet::ensurePaintWorklet):
        (WebCore::DOMCSSPaintWorklet::ensurePaintWorkletGlobalScope): Deleted.
        * css/DOMCSSPaintWorklet.h:
        * css/DOMCSSPaintWorklet.idl:
        * dom/Document.cpp:
        (WebCore::Document::ensureCSSPaintWorklet):
        (WebCore::Document::setCSSPaintWorkletGlobalScope):
        (WebCore::Document::ensureCSSPaintWorkletGlobalScope): Deleted.
        * dom/Document.h:
        (WebCore::Document::getCSSPaintWorkletGlobalScope):
        * dom/EventTargetFactory.in:
        * dom/ScriptExecutionContext.cpp:
        (WebCore::ScriptExecutionContext::vm):
        (WebCore::ScriptExecutionContext::execState):
        * dom/ScriptExecutionContext.h:
        (WebCore::ScriptExecutionContext::isWorkletGlobalScope const):
        * inspector/agents/worker/WorkerDebuggerAgent.cpp:
        (WebCore::WorkerDebuggerAgent::injectedScriptForEval):
        * inspector/agents/worker/WorkerRuntimeAgent.cpp:
        (WebCore::WorkerRuntimeAgent::injectedScriptForEval):
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::CustomPaintImage):
        (WebCore::CustomPaintImage::doCustomPaint):
        * platform/graphics/CustomPaintImage.h:
        * worklets/PaintWorkletGlobalScope.cpp: Copied from Source/WebCore/css/CSSPaintWorkletGlobalScope.cpp.
        (WebCore::PaintWorkletGlobalScope::create):
        (WebCore::PaintWorkletGlobalScope::PaintWorkletGlobalScope):
        (WebCore::PaintWorkletGlobalScope::devicePixelRatio):
        (WebCore::PaintWorkletGlobalScope::addRegisteredPaint):
        * worklets/PaintWorkletGlobalScope.h: Renamed from Source/WebCore/css/CSSPaintWorkletGlobalScope.h.
        * worklets/PaintWorkletGlobalScope.idl: Copied from Source/WebCore/css/CSSPaintWorkletGlobalScope.idl.
        * worklets/Worklet.cpp: Copied from Source/WebCore/css/CSSPaintWorkletGlobalScope.cpp.
        (WebCore::Worklet::create):
        (WebCore::Worklet::Worklet):
        (WebCore::Worklet::addModule):
        * worklets/Worklet.h: Renamed from Source/WebCore/css/CSSPaintWorkletGlobalScope.cpp.
        * worklets/Worklet.idl: Copied from Source/WebCore/css/CSSPaintWorkletGlobalScope.idl.
        * worklets/WorkletConsoleClient.cpp: Copied from Source/WebCore/inspector/agents/worker/WorkerDebuggerAgent.cpp.
        (WebCore::WorkletConsoleClient::WorkletConsoleClient):
        (WebCore::WorkletConsoleClient::messageWithTypeAndLevel):
        (WebCore::WorkletConsoleClient::count):
        (WebCore::WorkletConsoleClient::time):
        (WebCore::WorkletConsoleClient::timeEnd):
        (WebCore::WorkletConsoleClient::profile):
        (WebCore::WorkletConsoleClient::profileEnd):
        (WebCore::WorkletConsoleClient::takeHeapSnapshot):
        (WebCore::WorkletConsoleClient::timeStamp):
        (WebCore::WorkletConsoleClient::record):
        (WebCore::WorkletConsoleClient::recordEnd):
        * worklets/WorkletConsoleClient.h: Added.
        * worklets/WorkletGlobalScope.cpp: Added.
        (WebCore::WorkletGlobalScope::WorkletGlobalScope):
        (WebCore::WorkletGlobalScope::~WorkletGlobalScope):
        (WebCore::WorkletGlobalScope::evaluate):
        (WebCore::WorkletGlobalScope::isJSExecutionForbidden const):
        (WebCore::WorkletGlobalScope::disableEval):
        (WebCore::WorkletGlobalScope::disableWebAssembly):
        (WebCore::WorkletGlobalScope::completeURL const):
        (WebCore::WorkletGlobalScope::logExceptionToConsole):
        (WebCore::WorkletGlobalScope::addConsoleMessage):
        (WebCore::WorkletGlobalScope::addMessage):
        * worklets/WorkletGlobalScope.h: Added.
        (WebCore::WorkletGlobalScope::isPaintWorkletGlobalScope const):
        (WebCore::WorkletGlobalScope::identifier const):
        (WebCore::WorkletGlobalScope::script):
        (WebCore::WorkletGlobalScope::jsRuntimeFlags const):
        (isType):
        * worklets/WorkletGlobalScope.idl: Renamed from Source/WebCore/css/CSSPaintWorkletGlobalScope.idl.
        * worklets/WorkletScriptController.cpp: Added.
        (WebCore::WorkletScriptController::WorkletScriptController):
        (WebCore::WorkletScriptController::~WorkletScriptController):
        (WebCore::WorkletScriptController::forbidExecution):
        (WebCore::WorkletScriptController::isExecutionForbidden const):
        (WebCore::WorkletScriptController::disableEval):
        (WebCore::WorkletScriptController::disableWebAssembly):
        (WebCore::WorkletScriptController::initScriptWithSubclass):
        (WebCore::WorkletScriptController::initScript):
        (WebCore::WorkletScriptController::evaluate):
        (WebCore::WorkletScriptController::setException):
        * worklets/WorkletScriptController.h: Added.
        (WebCore::WorkletScriptController::workletGlobalScopeWrapper):
        (WebCore::WorkletScriptController::vm):
        (WebCore::WorkletScriptController::initScriptIfNeeded):

2018-11-02  Myles C. Maxfield  <mmaxfield@apple.com>

        Clean up drawLineForDocumentMarker()
        https://bugs.webkit.org/show_bug.cgi?id=191215

        Reviewed by Zalan Bujtas.

        In preparation for https://bugs.webkit.org/show_bug.cgi?id=190764, I need to do a little bit of refactoring.
        This patch has no behavior change; it just does the following:

        1. Renames drawLineForDocumentMarker() to drawDotsForDocumentMarker(), because 2 of the 3 implementations draw dots
        2. Moves our implementation back into GraphicsContext, because it's simpler and  GraphicsContext is already platform-
               specific.
        3. The signature used to accept a location and a width, but without a height, it's difficult to know what the bounding
               box is. In particular, knowing the bounding box must be possible without a GraphicsContext. So, I've modified
               the signature to accept a rectangle instead. The GraphicsContext draws only within this rectangle.

        No new tests because there is no behavior change.

        * platform/graphics/GraphicsContext.h:
        * platform/graphics/GraphicsContextImpl.h:
        * platform/graphics/cairo/CairoOperations.cpp:
        (WebCore::Cairo::drawDotsForDocumentMarker):
        (WebCore::Cairo::drawLineForDocumentMarker): Deleted.
        * platform/graphics/cairo/CairoOperations.h:
        * platform/graphics/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawDotsForDocumentMarker):
        (WebCore::GraphicsContext::drawLineForDocumentMarker): Deleted.
        * platform/graphics/cairo/GraphicsContextImplCairo.cpp:
        (WebCore::GraphicsContextImplCairo::drawDotsForDocumentMarker):
        (WebCore::GraphicsContextImplCairo::drawLineForDocumentMarker): Deleted.
        * platform/graphics/cairo/GraphicsContextImplCairo.h:
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::colorForMarkerLineStyle):
        (WebCore::GraphicsContext::drawDotsForDocumentMarker):
        (WebCore::GraphicsContext::drawLineForDocumentMarker): Deleted.
        * platform/graphics/displaylists/DisplayListItems.cpp:
        (WebCore::DisplayList::Item::sizeInBytes):
        (WebCore::DisplayList::DrawDotsForDocumentMarker::apply const):
        (WebCore::DisplayList::DrawDotsForDocumentMarker::localBounds const):
        (WebCore::DisplayList::operator<<):
        (WebCore::DisplayList::DrawLineForDocumentMarker::apply const): Deleted.
        (WebCore::DisplayList::DrawLineForDocumentMarker::localBounds const): Deleted.
        * platform/graphics/displaylists/DisplayListItems.h:
        (WebCore::DisplayList::DrawDotsForDocumentMarker::create):
        (WebCore::DisplayList::DrawDotsForDocumentMarker::rect const):
        (WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker):
        (WebCore::DisplayList::DrawLineForDocumentMarker::create): Deleted.
        (WebCore::DisplayList::DrawLineForDocumentMarker::point const): Deleted.
        (WebCore::DisplayList::DrawLineForDocumentMarker::width const): Deleted.
        (WebCore::DisplayList::DrawLineForDocumentMarker::DrawLineForDocumentMarker): Deleted.
        * platform/graphics/displaylists/DisplayListRecorder.cpp:
        (WebCore::DisplayList::Recorder::drawDotsForDocumentMarker):
        (WebCore::DisplayList::Recorder::drawLineForDocumentMarker): Deleted.
        * platform/graphics/displaylists/DisplayListRecorder.h:
        * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
        (Nicosia::CairoOperationRecorder::drawDotsForDocumentMarker):
        (Nicosia::CairoOperationRecorder::drawLineForDocumentMarker): Deleted.
        * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
        * platform/graphics/win/GraphicsContextCGWin.cpp:
        (WebCore::GraphicsContext::drawDotsForDocumentMarker):
        (WebCore::GraphicsContext::drawLineForDocumentMarker): Deleted.
        * platform/graphics/win/GraphicsContextDirect2D.cpp:
        (WebCore::GraphicsContext::drawDotsForDocumentMarker):
        (WebCore::GraphicsContext::drawLineForDocumentMarker): Deleted.
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paintPlatformDocumentMarker):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::drawLineForDocumentMarker): Deleted.
        * rendering/RenderTheme.h:
        * rendering/RenderThemeCocoa.h:
        * rendering/RenderThemeCocoa.mm:
        (WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Deleted.
        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderThemeIOS::colorForMarkerLineStyle): Deleted.
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::colorForMarkerLineStyle): Deleted.

2018-11-02  Ali Juma  <ajuma@chromium.org>

        requestAnimationFrame causes bad location of position:fixed inside overflow:auto and iframe
        https://bugs.webkit.org/show_bug.cgi?id=176243

        Reviewed by Simon Fraser.

        When a new layer tree is committed to the UIProcess, the positions of layers for fixed
        or sticky nodes in the newly-committed tree can be stale, because of scrolling that has
        happened in the UIProcess since the tree was updated in the WebProcess. To handle this,
        RemoteLayerTreeDrawingAreaProxy::commitLayerTree updates the positions of these layers
        by calling RemoteScrollingCoordinatorProxy::viewportChangedViaDelegatedScrolling, which
        leads to a recursive traversal of the ScrollingTree to update each such layer. However,
        since ScrollingTreeFrameScrollingNodeIOS didn't implement updateLayersAfterAncestorChange,
        this traversal never descended into scrolling nodes within an iframe, so the layers for
        these nodes were left with stale positions.

        Implement ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterAncestorChange so that
        fixed and sticky layers within an iframe do get their positions updated when a new layer
        tree is committed.

        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterAncestorChange):

2018-11-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Changing view scale sometimes does not zoom the page to the new initial scale, when the page is at initial scale
        https://bugs.webkit.org/show_bug.cgi?id=191180
        <rdar://problem/45744786>

        Reviewed by Simon Fraser.

        When computing the minimum scale in ViewportConfiguration::minimumScale, if our content width or height is
        shorter than the view width or height, then we recompute the minimum scale such that the content dimensions will
        fill the bounds of the view by setting the minimum scale to the view width or height divided by the content
        width or height.

        Suppose the minimum scale is equal to some value `s`; additionally, let `w_c` denote the content width and `w_v`
        denote the view width (as integers). If `w_v / s` is not an integral value, the computed content width `w_c` may
        be rounded, such that `w_v / w_c` is not precisely equal to `s`. In the case that `w_v / w_c` is ever so
        slightly larger than `s`, we will end up overriding the minimum scale `s` with `w_v / w_c`.

        As a result, specifying a viewport with a decimal `minimum-scale` will sometimes cause the computed minimum
        scale of the viewport (and platform view) to be very slightly different from the minimum scale. The new layout
        test below exercises this scenario, specifying a viewport with minimum and initial scales of 0.94 that results
        in `ViewportConfiguration::minimumScale` returning 0.94158.

        With the `WebPage::setViewportConfigurationViewLayoutSize` check added in r237127, this means setting
        `_viewScale:` when the page is at initial scale sometimes doesn't zoom the page to the new initial scale when it
        should, since the page scale factor and the initial scale are different enough such that
        `areEssentiallyEqualAsFloat` returns false.

        This patch addresses these issues by snapping to the minimum scale if the computed scale that fits content
        dimensions to view dimensions results in a minimum scale that is close enough to the configuration's minimum
        scale, such that the difference can be attributed to rounding error when computing content or view dimensions.

        Test: fast/viewport/ios/viewport-minimum-and-initial-scale.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::minimumScale const):

2018-11-02  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Unreviewed, another --no-video --no-web-audio build fix following r237677

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::addEventListenersToNode):

2018-11-02  Daniel Bates  <dabates@apple.com>

        [iOS] Normalize character string based on key code
        https://bugs.webkit.org/show_bug.cgi?id=191120

        Reviewed by Tim Horton.

        Following r236417 (https://bugs.webkit.org/show_bug.cgi?id=189604) we always have a valid key code
        for a special key (e.g. page up) and can simplify the character string normalization code.

        No functionality changed. So, no new tests.

        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping): Modified to take a key code and wrote algorithm
        in terms of it.

        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
        Pass the key code for the event to normalizedStringWithAppKitCompatibilityMapping().

2018-11-02  Daniel Bates  <dabates@apple.com>

        [iOS] WebKit should dispatch DOM events when a modifier key is pressed
        https://bugs.webkit.org/show_bug.cgi?id=190487

        Reviewed by Tim Horton.

        Add support for modifier flags change events.

        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::modifiersForEvent): Modifier keys do not have an associated character and do not
        participate in key repeat.
        (WebCore::keyIdentifierForKeyEvent): Identify modifier keys, returning "Unidentified" if
        the modifier key is unidentified. This matches the behavior on Mac.
        (WebCore::keyForKeyEvent): Identify modifier keys, returning the empty string if the modifier
        key is unidentified. This matches the behavior on Mac.
        (WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):
        * platform/ios/WebEvent.h:

        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
        Modifier keys do not have an associated character and do not participate in key repeat.

        (-[WebEvent _eventDescription]): Modified to print a description for a keydown or keyup event
        that represents a modifier flags change.
        (-[WebEvent characters]): Modifier keys do not have an associated character. Assert this
        invariant as it is a programming error. On Mac, the same operation would result in a
        NSInternalInconsistencyException exception being raised.
        (-[WebEvent charactersIgnoringModifiers]): Ditto.

2018-11-02  Ali Juma  <ajuma@chromium.org>

        Allow cross-document intersection observing
        https://bugs.webkit.org/show_bug.cgi?id=165746

        Reviewed by Simon Fraser.

        Add logic to compute the intersection between the viewport and an element in a
        subframe.

        Add a FloatRect version of ScrollView::rootViewToContents, and FloatRect versions
        of the methods it calls.

        Test: http/tests/intersection-observer/intermediate-frame-changes.html
        Also covered by rebased tests in imported/w3c/web-platform-tests/intersection-observer.

        * dom/Document.cpp:
        (WebCore::computeClippedRectInRootContentsSpace):
        (WebCore::computeIntersectionState):
        (WebCore::Document::updateIntersectionObservations):
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportContentsChanged):
        (WebCore::FrameView::convertFromContainingViewToRenderer const):
        (WebCore::FrameView::convertFromContainingView const):
        * page/FrameView.h:
        * platform/ScrollView.cpp:
        (WebCore::ScrollView::viewToContents const):
        (WebCore::ScrollView::contentsToView const):
        (WebCore::ScrollView::rootViewToContents const):
        * platform/ScrollView.h:
        * platform/Widget.cpp:
        (WebCore::Widget::convertFromRootView const):
        (WebCore::Widget::convertFromContainingView const):
        * platform/Widget.h:

2018-11-02  Rob Buis  <rbuis@igalia.com>

        Remove ENABLE_OPENCL fully
        https://bugs.webkit.org/show_bug.cgi?id=191172

        Reviewed by Yusuke Suzuki.

        No new tests since no change in functionality.

        * platform/graphics/filters/FilterEffect.h:
        (WebCore::FilterEffect::hasResult const):
        (WebCore::FilterEffect::applyAll):
        (WebCore::FilterEffect::openCLImage): Deleted.
        (WebCore::FilterEffect::setOpenCLImage): Deleted.

2018-11-02  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add support for intrinsic width calculation
        https://bugs.webkit.org/show_bug.cgi?id=191144

        Reviewed by Antti Koivisto.

        This is the inline formatting version of the shrink-to-fit computation. It generates inline runs
        and uses InlineLineBreaker to compute min/max width. This is very similar to ::layout.

        Test: fast/inline/simple-shrink-to-fit-inline-block.html

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const):
        (WebCore::Layout::InlineFormattingContext::collectInlineContent const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForInlineBox const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:

2018-11-02  Zalan Bujtas  <zalan@apple.com>

        [LFC][BFC] BlockFormattingContext::instrinsicWidthConstraints logic should look similar to ::layout
        https://bugs.webkit.org/show_bug.cgi?id=191181

        Reviewed by Antti Koivisto.

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):

2018-11-02  Zalan Bujtas  <zalan@apple.com>

        [LFC] Align shrink-to-fit width computation with the layout implementation.
        https://bugs.webkit.org/show_bug.cgi?id=191179

        Reviewed by Antti Koivisto.

        There are many similarities between layout and shrink-to-fit.
        They both operate on formatting roots only (shrink-to-fit -> float, out-of-flow, inline-block) and in both cases
        the algoritm depends on what type of formatting context the element establishes.

        This patch is in preparation for transforming the "shrink-to-fit" width computation to make it behave more like layout.
        With this change the instrinsicWidthConstraints() computation happens in the formatting context that the element establishes (similar to layout).

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        * layout/FormattingContext.h:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

2018-11-01  Antoine Quint  <graouts@apple.com>

        [Web Animations] Make document.getAnimations() return declarative animations in the correct order
        https://bugs.webkit.org/show_bug.cgi?id=191153

        Reviewed by Dean Jackson.

        The Web Animations spec has the notion of "composite order" which determines the order in which animations should
        be returned when document.getAnimations() is called. The CSS Transitions and CSS Animations specifications also
        determine the composite order of their respective animation classes, as well as the notion of "owning element",
        the element that was the animation target when specified through style, prior to any manipulation via the Web
        Animations API. We implement these two notions so that we can pass the document.getAnimations() tests for
        declarative animations.

        It is important that we have the notion of an "owning element" since when a CSS Transition or CSS Animation is
        modified via the Web Animations API in a way that an animation created through CSS we must consider no longer
        as a declarative animation but as a regular Web Animation. In this patch, we remove the DeclarativeAnimation's
        target(), which returned a reference, to owningElement(), which returns a pointer and return nullptr once the
        declarative animation has been modified.

        In order to also keep a correct count of declarative animations applied to elements, we correctly add transitions
        that have completed to a list of completed transitions, as specified by the CSS Transitions spec. We have had this
        list declared in AnimationTimeline.h for a while but never actually did the work to add items to it. Thanks to that,
        AnimationTimeline::updateCSSTransitionsForElement() now correctly accounts for completed transitions so that they
        may be canceled if overridden with a new animation, correctly removing their "owning element".

        Finally, now that we have saner lists of animations per classes, we can apply the right sorting routines to match
        the composite order for CSS Transitions, CSS Animations and Web Animations, keeping a list of all animations created
        in order as the final criterion for sorting.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::animationTimingDidChange): Make sure this animation is tracked on the list of all animations
        created for this timeline in the order in which they were created, which is needed to sort animations correctly when
        document.getAnimations() is called.
        (WebCore::AnimationTimeline::animationWasAddedToElement): We've removed the relevantMapForAnimation() method which we used
        to determine which map we should add an animation to based on its class and instead have code that accounts for not just
        the animation's class, but also whether it has an owning element since a valid owning element is required to qualify as
        a CSS Transition or CSS Animation, regardless of the animation's original class.
        (WebCore::removeAnimationFromMapForElement): Adding this helper to remove an animation from the provided animation map so
        that animationWasRemovedFromElement() can call this with all of the various animation maps.
        (WebCore::AnimationTimeline::animationWasRemovedFromElement): Check all of the various animation maps to see which may
        contain the animation we're trying to remove as the owning element might have been cleared by the time this function is
        called and looking at the animation's class would not be sufficient to determine which animation map the animation was in.
        (WebCore::AnimationTimeline::removeDeclarativeAnimationFromListsForOwningElement): New function in which the logic from
        animationWasRemovedFromElement() that dealt with removing animations from the list of running CSS Animations/Transitions as
        well as completed CSS Transitions was factored out. This allowed us to also call this function from
        DeclarativeAnimation::disassociateFromOwningElement().
        (WebCore::AnimationTimeline::elementWasRemoved): We no longer need to remove an animation as canceling it will remove it
        correctly when DocumentTimeline::updateAnimationsAndSendEvents() is called.
        (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Call cancelDeclarativeAnimation() instead of the removed
        cancelOrRemoveDeclarativeAnimation() when a CSS Animation should be canceled.
        (WebCore::AnimationTimeline::ensureRunningTransitionsByProperty): Now that we correctly remove transitions from the list
        of running transitions once they've completed or have been canceled, we need a helper to always get a valid map of running
        transitions for a given element as that map can be cleared while updateCSSTransitionsForElement() is running. 
        (WebCore::AnimationTimeline::updateCSSTransitionsForElement): Call cancelDeclarativeAnimation() instead of the removed
        cancelOrRemoveDeclarativeAnimation() when a CSS Transition should be canceled. Additionally we always get the list of running
        transitions for a given element as it can be cleared by a prior cancelation.
        (WebCore::AnimationTimeline::cancelDeclarativeAnimation): New function replacing cancelOrRemoveDeclarativeAnimation() in which
        we call the new DeclarativeAnimation::cancelFromStyle() function on the provided animation and then remove the animation from
        all known lists, including the new list of all animations. We do this final part so that the animation gets re-added as if it
        were a new animation since canceling a declarative animation via a style change removes its declarative-ness. This guarantees
        that a declarative animation that is canceled through style but then resumed through the Web Animations API sorts after any
        declarative animation with an owning element.
        (WebCore::AnimationTimeline::relevantMapForAnimation): Deleted.
        (WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation): Deleted.
        * animation/AnimationTimeline.h:
        (WebCore::AnimationTimeline::timingModelDidChange): Deleted. This was left over in the patch where we implemented the "update
        animations and send events" procedure.
        (WebCore::AnimationTimeline::animations const): Deleted.
        * animation/CSSAnimation.cpp:
        (WebCore::CSSAnimation::create): Some refactoring to make the handling of a declarative animation's owning element part of the
        DeclarativeAnimation constructor.
        * animation/CSSTransition.cpp:
        (WebCore::CSSTransition::create): Some refactoring to make the handling of a declarative animation's owning element part of the
        DeclarativeAnimation constructor.
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::DeclarativeAnimation):
        (WebCore::DeclarativeAnimation::tick): Make sure we disassociate from the animation's owning element once we transition from a
        relevant state to an idle state. This will catch any changes made via the Web Animations API to a declarative animation when the
        "update animations and send events" procedure is run.
        (WebCore::DeclarativeAnimation::disassociateFromOwningElement): Remove this animation from the list of declarative animations on
        the associated timeline and make owningElement() nullptr so that document.getAnimations() will know to sort this animation with other
        Web Animations created via the Web Animations API.
        (WebCore::DeclarativeAnimation::initialize):
        (WebCore::DeclarativeAnimation::cancelFromStyle): New method called from AnimationTimeline::cancelDeclarativeAnimation() which
        cancels the animation but also disassociates it from its owning element.
        (WebCore::DeclarativeAnimation::invalidateDOMEvents):
        (WebCore::DeclarativeAnimation::enqueueDOMEvent):
        * animation/DeclarativeAnimation.h:
        (WebCore::DeclarativeAnimation::owningElement const):
        (WebCore::DeclarativeAnimation::target const): Deleted.
        * animation/DocumentTimeline.cpp:
        (WebCore::compareDeclarativeAnimationOwningElementPositionsInDocumentTreeOrder): Adding a new utility used when sorting both
        CSS Transitions and CSS Animations by tree order when their owning element differ, with special logic for pseudo-elements.
        (WebCore::DocumentTimeline::getAnimations const): Filter and sort animations according to their composite order.
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): Compile a list of transitions that move to a finished state to
        the list of completed transitions so that they may be canceled correctly in AnimationTimeline::updateCSSTransitionsForElement().
        (WebCore::DocumentTimeline::transitionDidComplete):
        * animation/DocumentTimeline.h:

2018-11-02  Zan Dobersek  <zdobersek@igalia.com>

        PNGImageDecoder: report no repetition for non-animated images
        https://bugs.webkit.org/show_bug.cgi?id=191068

        Reviewed by Michael Catanzaro.

        When building with APNG support enabled, the
        PNGImageDecoder::repetitionCount() method until now reported  infinite
        repetition count for all PNG images, even the ones that were not
        animated. This is now changed so that no repetition is reported for
        non-animated images.

        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::repetitionCount const):

2018-11-02  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Experimental prototype for MSL shaders
        https://bugs.webkit.org/show_bug.cgi?id=191084

        Reviewed by Dean Jackson.

        Begin implementation for WebGPUDevice and WebGPUShaderModule and associated descriptor objects.

        Test: webgpu/webgpu-basics.html
        Test: webgpu/shader-modules.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/GPUDevice.cpp: 
        (WebCore::GPUDevice::createShaderModule const):
        * Modules/webgpu/GPUDevice.h: 
        (WebCore::GPUDevice::platformDevice const):
        * Modules/webgpu/GPUShaderModule.h:
        (WebCore::GPUShaderModule::platformShaderModule const):
        * Modules/webgpu/GPUShaderModuleDescriptor.h:
        * Modules/webgpu/WebGPU.cpp:
        (WebCore::WebGPU::requestAdapter const):
        * Modules/webgpu/WebGPUAdapter.cpp:
        (WebCore::WebGPUAdapter::create):
        (WebCore::WebGPUAdapter::createDevice):
        * Modules/webgpu/WebGPUAdapter.h:
        * Modules/webgpu/WebGPUAdapter.idl:
        * Modules/webgpu/WebGPUDevice.cpp:
        (WebCore::WebGPUDevice::create):
        (WebCore::WebGPUDevice::WebGPUDevice):
        (WebCore::WebGPUDevice::createShaderModule const):
        * Modules/webgpu/WebGPUDevice.h:
        * Modules/webgpu/WebGPUDevice.idl:
        * Modules/webgpu/WebGPUShaderModule.cpp:
        (WebCore::WebGPUShaderModule::create):
        (WebCore::WebGPUShaderModule::WebGPUShaderModule):
        * Modules/webgpu/WebGPUShaderModule.h:
        * Modules/webgpu/WebGPUShaderModule.idl:
        * Modules/webgpu/WebGPUShaderModuleDescriptor.h:
        * Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
        * Modules/webgpu/WebGPUSwapChain.cpp:
        (WebCore::WebGPUSwapChain::configure):
        * Modules/webgpu/WebGPUSwapChain.h:
        * Modules/webgpu/WebGPUSwapChain.idl:
        * Modules/webgpu/cocoa/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::create):
        (WebCore::GPUDevice::GPUDevice):
        * Modules/webgpu/cocoa/GPUShaderModuleMetal.mm:
        (WebCore::GPUShaderModule::create):
        (WebCore::GPUShaderModule::GPUShaderModule):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * platform/Logging.h:

2018-11-01  Jiewen Tan  <jiewen_tan@apple.com>

        Replace CommonRandom SPI with API
        https://bugs.webkit.org/show_bug.cgi?id=191178
        <rdar://problem/45722391>

        Reviewed by Brent Fulgham.

        The API is available since macOS 10.10 and iOS 10, and therefore it is safe to replace
        all SPI usages with API.

        No change of behaviors.

        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoKeyMac.cpp:
        (WebCore::CryptoKey::randomData):
        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
        (WebCore::createAndStoreMasterKey):
        (WebCore::wrapSerializedCryptoKey):
        * page/Crypto.cpp:
        (WebCore::Crypto::getRandomValues):

2018-11-01  Chris Dumez  <cdumez@apple.com>

        [WebIDL] Rename CallWith=ScriptState to CallWith=ExecState
        https://bugs.webkit.org/show_bug.cgi?id=191162

        Reviewed by Alex Christensen.

        Rename CallWith=ScriptState to CallWith=ExecState in our Web IDL as ScriptState is no longer a thing
        in modern WebKit. The implementation is actually passed an ExecState nowadays.

        * Modules/applepay/ApplePaySession.idl:
        * Modules/encryptedmedia/MediaKeyStatusMap.idl:
        * Modules/fetch/FetchBody.idl:
        * Modules/indexeddb/IDBCursor.idl:
        * Modules/indexeddb/IDBFactory.idl:
        * Modules/indexeddb/IDBIndex.idl:
        * Modules/indexeddb/IDBKeyRange.idl:
        * Modules/indexeddb/IDBObjectStore.idl:
        * Modules/mediastream/RTCPeerConnection.idl:
        * animation/Animatable.idl:
        * animation/KeyframeEffect.idl:
        * animation/KeyframeEffectReadOnly.idl:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateCallWith):
        (GenerateConstructorDefinition):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::jsTestObjWithExecStateAttributeGetter):
        (WebCore::jsTestObjWithExecStateAttribute):
        (WebCore::setJSTestObjWithExecStateAttributeSetter):
        (WebCore::setJSTestObjWithExecStateAttribute):
        (WebCore::jsTestObjWithScriptExecutionContextAndExecStateAttributeGetter):
        (WebCore::jsTestObjWithScriptExecutionContextAndExecStateAttribute):
        (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateAttributeSetter):
        (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateAttribute):
        (WebCore::jsTestObjWithScriptExecutionContextAndExecStateWithSpacesAttributeGetter):
        (WebCore::jsTestObjWithScriptExecutionContextAndExecStateWithSpacesAttribute):
        (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateWithSpacesAttributeSetter):
        (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateWithSpacesAttribute):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidBody):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoid):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateObjBody):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateObj):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidExceptionBody):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidException):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateObjExceptionBody):
        (WebCore::jsTestObjPrototypeFunctionWithExecStateObjException):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateBody):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecState):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateObjExceptionBody):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateObjException):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateWithSpacesBody):
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateWithSpaces):
        (WebCore::jsTestObjWithScriptStateAttributeGetter): Deleted.
        (WebCore::jsTestObjWithScriptStateAttribute): Deleted.
        (WebCore::setJSTestObjWithScriptStateAttributeSetter): Deleted.
        (WebCore::setJSTestObjWithScriptStateAttribute): Deleted.
        (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeGetter): Deleted.
        (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute): Deleted.
        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeSetter): Deleted.
        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute): Deleted.
        (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeGetter): Deleted.
        (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute): Deleted.
        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeSetter): Deleted.
        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateVoid): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateObjBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateObj): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidExceptionBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidException): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateObjExceptionBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptStateObjException): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjExceptionBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpacesBody): Deleted.
        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces): Deleted.
        * bindings/scripts/test/TestObj.idl:
        * bindings/scripts/test/TestPromiseRejectionEvent.idl:
        * crypto/SubtleCrypto.idl:
        * dom/Element.idl:
        * dom/ErrorEvent.idl:
        * dom/MessagePort.idl:
        * dom/MouseEvent.idl:
        * html/HTMLCanvasElement.idl:
        * html/HTMLFrameElement.idl:
        * html/OffscreenCanvas.idl:
        * html/track/DataCue.idl:
        * inspector/CommandLineAPIHost.idl:
        * page/DOMWindow.idl:
        * page/RemoteDOMWindow.idl:
        * page/WindowOrWorkerGlobalScope.idl:
        * testing/Internals.idl:
        * workers/DedicatedWorkerGlobalScope.idl:
        * workers/Worker.idl:

2018-11-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        Rename <wtf/unicode/UTF8.h> to <wtf/unicode/UTF8Conversion.h> in order to avoid conflicting with ICU's unicode/utf8.h
        https://bugs.webkit.org/show_bug.cgi?id=189693

        Reviewed by Yusuke Suzuki.

        No new tests because there's no behaviro changes.

        * platform/SharedBuffer.cpp: Replaced <wtf/unicode/UTF8.h> with <wtf/unicode/UTF8Conversion.h>.
        * xml/XSLTProcessorLibxslt.cpp: Ditto.
        * xml/parser/XMLDocumentParserLibxml2.cpp: Ditto.

2018-11-01  John Wilander  <wilander@apple.com>

        In WebCore::ResourceLoadObserver, use document.sessionID().isEphemeral() when possible and check for page existence when not
        https://bugs.webkit.org/show_bug.cgi?id=191119
        <rdar://problem/44176965>

        Reviewed by Chris Dumez.

        New API test added.

        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logSubresourceLoading):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

2018-11-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: remove unnecessary media event tracking
        https://bugs.webkit.org/show_bug.cgi?id=191174

        Reviewed by Joseph Pecoraro.

        No new tests, as this simply removes some event listeners for the WebInspector frontend.

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::addEventListenersToNode):

2018-11-01  Chris Dumez  <cdumez@apple.com>

        Location object sans browsing context
        https://bugs.webkit.org/show_bug.cgi?id=191060

        Reviewed by Geoffrey Garen.

        As per https://github.com/whatwg/html/pull/4076, a Location object's URL should be "about:blank" when
        it does not have a browsing context (Frame), not "".

        No new tests, rebaselined existing tests.

        * page/Location.cpp:
        (WebCore::Location::url const):
        (WebCore::Location::href const):
        (WebCore::Location::protocol const):
        (WebCore::Location::host const):
        (WebCore::Location::hostname const):
        (WebCore::Location::port const):
        (WebCore::Location::pathname const):
        (WebCore::Location::search const):
        (WebCore::Location::origin const):
        (WebCore::Location::hash const):

2018-11-01  Sihui Liu  <sihui_liu@apple.com>

        Add a storage limit for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=190598
        <rdar://problem/44654715>

        Reviewed by Chris Dumez.

        Set a storage limit in IndexedDB for each pair of mainFrameOrigin and openingOrigin. 
        IndexedDB will return a QuotaExceededError if limit is reached.

        If the size of free disk space is over 1 GB, the default limit is 500 MB; otherwise it is 
        half the free disk space.

        Test: storage/indexeddb/storage-limit.html

        * Modules/indexeddb/server/IDBBackingStore.h:
        * Modules/indexeddb/server/IDBServer.cpp:
        (WebCore::IDBServer::IDBServer::createBackingStore):
        (WebCore::IDBServer::IDBServer::setPerOriginQuota):
        * Modules/indexeddb/server/IDBServer.h:
        (WebCore::IDBServer::IDBServer::perOriginQuota const):
        * Modules/indexeddb/server/MemoryIDBBackingStore.h:
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const):
        (WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
        (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore):
        (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex):
        (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.h:
        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::setQuota):
        * Modules/indexeddb/server/UniqueIDBDatabase.h:

2018-11-01  Justin Michaud  <justin_michaud@apple.com>

        CSS Custom Properties API Should Support syntax="*" and "<length>", and handle cycles properly
        https://bugs.webkit.org/show_bug.cgi?id=191042

        Reviewed by Antti Koivisto.

        Refactor code so that:
        - All properties applied in StyleResolver::applyMatchedProperties are only applied once. 
        - Custom properties are only resolved once, in StyleResolver, when they are applied to the RenderStyle. They were previously resolved
          every time they were referenced, and again in RenderStyle.
        - The font-size property is applied after its variable references, but before custom properties that depend on it.
        - Cycles are detected at the same time as resolution.
        - MutableStyleProperties' custom properties cannot be set from Javascript or WebKitLegacy if they do not parse for the property's type.
          If they contain var(--...) references, however, then they can be set because we cannot check if the references are valid from setProperty.
          This behaviour matches chrome, but is not documented in the spec. 
        - Custom property values have more explicit resolved/unresolved state.
        - RenderStyle only ever holds resolved custom properties, and StyleResolver::CascadedProperties only holds unresolved properties.

        Tests: css-custom-properties-api/crash.html
               css-custom-properties-api/cycles.html
               css-custom-properties-api/inline.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::equals const):
        (WebCore::CSSCustomPropertyValue::customCSSText const):
        (WebCore::CSSCustomPropertyValue::tokens const):
        (WebCore::CSSCustomPropertyValue::checkVariablesForCycles const): Deleted.
        (WebCore::CSSCustomPropertyValue::resolveVariableReferences const): Deleted.
        (WebCore::CSSCustomPropertyValue::setResolvedTypedValue): Deleted.
        * css/CSSCustomPropertyValue.h:
        * css/CSSRegisteredCustomProperty.cpp:
        (WebCore::CSSRegisteredCustomProperty::CSSRegisteredCustomProperty):
        * css/CSSRegisteredCustomProperty.h:
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::CSSVariableData):
        (WebCore::CSSVariableData::consumeAndUpdateTokens): Deleted.
        (WebCore::CSSVariableData::checkVariablesForCycles const): Deleted.
        (WebCore::CSSVariableData::checkVariablesForCyclesWithRange const): Deleted.
        (WebCore::CSSVariableData::resolveVariableFallback const): Deleted.
        (WebCore::CSSVariableData::resolveVariableReference const): Deleted.
        (WebCore::CSSVariableData::resolveVariableReferences const): Deleted.
        (WebCore::CSSVariableData::resolveTokenRange const): Deleted.
        * css/CSSVariableData.h:
        (WebCore::CSSVariableData::create):
        (WebCore::CSSVariableData::createResolved): Deleted.
        (WebCore::CSSVariableData::needsVariableResolution const): Deleted.
        (WebCore::CSSVariableData::CSSVariableData): Deleted.
        * css/CSSVariableReferenceValue.cpp:
        (WebCore::resolveVariableFallback):
        (WebCore::resolveVariableReference):
        (WebCore::resolveTokenRange):
        (WebCore::CSSVariableReferenceValue::resolveVariableReferences const):
        (WebCore::CSSVariableReferenceValue::checkVariablesForCycles const): Deleted.
        * css/CSSVariableReferenceValue.h:
        (WebCore::CSSVariableReferenceValue::create):
        (WebCore::CSSVariableReferenceValue::equals const):
        (WebCore::CSSVariableReferenceValue::variableDataValue const): Deleted.
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        * css/PropertySetCSSStyleDeclaration.cpp:
        (WebCore::PropertySetCSSStyleDeclaration::setProperty):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyInitialCustomProperty):
        (WebCore::StyleBuilderCustom::applyValueCustomProperty):
        * css/StyleProperties.cpp:
        (WebCore::MutableStyleProperties::setCustomProperty):
        * css/StyleProperties.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::State::setStyle):
        (WebCore::StyleResolver::styleForKeyframe):
        (WebCore::StyleResolver::styleForPage):
        (WebCore::StyleResolver::applyMatchedProperties):
        (WebCore::StyleResolver::applyPropertyToCurrentStyle):
        (WebCore::StyleResolver::applyProperty):
        (WebCore::StyleResolver::resolvedVariableValue const):
        (WebCore::StyleResolver::CascadedProperties::applyDeferredProperties):
        (WebCore::StyleResolver::CascadedProperties::Property::apply):
        (WebCore::StyleResolver::applyCascadedCustomProperty):
        (WebCore::StyleResolver::applyCascadedProperties):
        * css/StyleResolver.h:
        * css/parser/CSSParser.cpp:
        (WebCore::CSSParser::parseValueWithVariableReferences):
        * css/parser/CSSParser.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::CSSPropertyParser):
        (WebCore::CSSPropertyParser::canParseTypedCustomPropertyValue):
        (WebCore::CSSPropertyParser::parseTypedCustomPropertyValue):
        (WebCore::CSSPropertyParser::collectParsedCustomPropertyValueDependencies):
        (WebCore::CSSPropertyParser::parseValueStart):
        (WebCore::CSSPropertyParser::parseSingleValue):
        * css/parser/CSSPropertyParser.h:
        * css/parser/CSSVariableParser.cpp:
        (WebCore::CSSVariableParser::parseDeclarationValue):
        * dom/ConstantPropertyMap.cpp:
        (WebCore::ConstantPropertyMap::setValueForProperty):
        (WebCore::variableDataForPositivePixelLength):
        (WebCore::variableDataForPositiveDuration):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::checkVariablesInCustomProperties): Deleted.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::setInheritedCustomPropertyValue):
        (WebCore::RenderStyle::setNonInheritedCustomPropertyValue):
        * rendering/style/StyleCustomPropertyData.h:
        (WebCore::StyleCustomPropertyData::operator== const):
        (WebCore::StyleCustomPropertyData::setCustomPropertyValue):
        (WebCore::StyleCustomPropertyData::StyleCustomPropertyData):
        (): Deleted.

2018-11-01  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [CG] Adopt CG SPI for non-even cornered rounded rects
        https://bugs.webkit.org/show_bug.cgi?id=190155

        Reviewed by Simon Fraser.

        Instead of creating bezier curves for the non-even corners of the rounded
        rects, we should use the optimized SPI provided by CG.

        * platform/graphics/cg/PathCG.cpp:
        (WebCore::Path::platformAddPathForRoundedRect):

2018-11-01  Youenn Fablet  <youenn@apple.com>

        RTCTrackEvent.streams should be SameObject
        https://bugs.webkit.org/show_bug.cgi?id=191130

        Reviewed by Eric Carlson.

        Mimick SameObject using CachedAttribute.
        Covered by rebased test.

        * Modules/mediastream/RTCTrackEvent.idl:

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add support for inline-block elements.
        https://bugs.webkit.org/show_bug.cgi?id=191143

        Reviewed by Antti Koivisto.

        This patch add support for laying out non-shrink-to-width inline-block elements.

        Test: fast/inline/simple-inline-block.html

        * layout/FormattingContext.h:
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin):
        * layout/layouttree/LayoutInlineContainer.cpp:
        (WebCore::Layout::InlineContainer::establishesInlineFormattingContext const):
        * layout/layouttree/LayoutInlineContainer.h:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):

2018-11-01  Claudio Saavedra  <csaavedra@igalia.com>

        Fix build with VIDEO and WEB_AUDIO disabled
        https://bugs.webkit.org/show_bug.cgi?id=191147

        Reviewed by Philippe Normand.

        Supported or not, there were a few build fixes needed
        to be able to build WebKit with media disabled. Mostly
        low-hanging fruits.

        * Modules/mediasource/VideoPlaybackQuality.cpp:
        * Modules/mediasource/VideoPlaybackQuality.h:
        * Modules/mediasource/VideoPlaybackQuality.idl:
        * dom/Document.cpp:
        (WebCore::Document::dispatchFullScreenChangeOrErrorEvent):
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::InspectorDOMAgent):
        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
        * inspector/agents/InspectorDOMAgent.h:
        * rendering/RenderThemeGtk.cpp:

2018-10-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: create a setting for auto-recording newly created contexts
        https://bugs.webkit.org/show_bug.cgi?id=190856

        Reviewed by Brian Burg.

        Test: inspector/canvas/setRecordingAutoCaptureFrameCount.html

        * inspector/agents/InspectorCanvasAgent.h:
        (WebCore::InspectorCanvasAgent::RecordingOptions): Added.
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::enable):
        (WebCore::InspectorCanvasAgent::disable):
        (WebCore::InspectorCanvasAgent::setRecordingAutoCaptureFrameCount): Added.
        (WebCore::InspectorCanvasAgent::startRecording):
        (WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
        (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
        (WebCore::InspectorCanvasAgent::startRecording): Added.
        Unify the different functions that are able to start a recording to use a single path.

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::resetRecordingData):
        (WebCore::InspectorCanvas::recordAction):
        (WebCore::InspectorCanvas::setFrameCount): Added.
        (WebCore::InspectorCanvas::overFrameCount const): Added.

2018-10-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: display low-power enter/exit events in Timelines and Network node waterfalls
        https://bugs.webkit.org/show_bug.cgi?id=190641
        <rdar://problem/45319049>

        Reviewed by Joseph Pecoraro.

        No new tests, as low power mode is indeterminate. Should not affect functionality.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::InspectorDOMAgent):
        (WebCore::InspectorDOMAgent::addEventListenersToNode):
        (WebCore::InspectorDOMAgent::mediaMetricsTimerFired): Added.

2018-10-31  Alicia Boya García  <aboya@igalia.com>

        [MSE] Use tolerance when growing the coded frame group
        https://bugs.webkit.org/show_bug.cgi?id=190085

        Reviewed by Jer Noble.

        Test: media/media-source/media-source-append-acb-tolerance.html

        This patch introduces a millisecond tolerance in the range of
        potential frames that should be erased frame from the track buffer
        when the coded frame group is growing.

        This is necessary because some files have imprecise overlapping
        timestamps (especially WebM files).

        This fixes a stall when seeking back and forth in YouTube with WebM
        video.

        A test case simulating the problem with video/mock using timestamps
        similar to those of a typical 30 fps WebM video is also added.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2018-10-31  Jer Noble  <jer.noble@apple.com>

        MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L60.B0') is inproperly rejected
        https://bugs.webkit.org/show_bug.cgi?id=191129

        Reviewed by Eric Carlson.

        Test: media/media-source/media-source-istypesupported-case-sensitive.html

        According to RFC 2045: "All media type values, subtype values, and parameter names as
        defined are case-insensitive. However, parameter values are case-sensitive unless otherwise
        specified for the specific parameter." So rather than fold the entire ContentType into lower-
        case, leave the original string intact and require clients to enforce case-insensitivity.

        * Modules/mediasource/MediaSource.cpp:
        (WebCore::MediaSource::isTypeSupported):

2018-10-31  Jer Noble  <jer.noble@apple.com>

        Unreivewed build fix; fix the non-HAVE_AVCONTENTKEYSESSION builds by adding guards around
        access of m_cdmInstance.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):

2018-10-31  YUHAN WU  <yuhan_wu@apple.com>

        MediaRecorder should fire dataavailable event when all tracks are ended and stop() is called
        https://bugs.webkit.org/show_bug.cgi?id=190778
        <rdar://problem/45703574>

        Reviewed by Youenn Fablet.

        Add a include to fix the unified build error.

        No tests since no new functionality.

        * Modules/webgpu/WebGPUDevice.cpp:

2018-10-26  Jer Noble  <jer.noble@apple.com>

        [EME][Cocoa] Cannot play unmuxed video and audio fMP4 streams encrypted with different keys via MSE
        https://bugs.webkit.org/show_bug.cgi?id=190946

        Reviewed by Eric Carlson.

        Use separate AVContentKeySessions per CDMInstanceSession (rather than one AVContentKeySession per
        CDMInstance).

        - Add a mechanism for sending a message out from platform/CDMInstance to MediaKeySession without
          requiring MediaKeySession to send a callback first.

        - Move all the AVContentKeySession delegate methods from CDMInstanceFairPlayStreamingAVFObjC to
          CDMInstanceSessionFairPlayStreamingAVFObjC.

        - Add a mechanism for requesting the correct CDMInstanceSession for a given KeyID.

        - Support key renewal through a "renew" message.

        - Remember the keyID in SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID()
          and ask for the correct CDMInstanceSession for that keyID in attemptToDecrypt().

        - Pass the CDMInstance down from MediaPlayerPrivateMediaSourceAVFObjC -> SourceBufferPrivateAVFObjC.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::sendMessage):
        * Modules/encryptedmedia/MediaKeySession.h:
        * platform/encryptedmedia/CDMInstanceSession.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (-[WebCoreFPSContentKeySessionDelegate initWithParent:]):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::createSession):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionForKeyIDs const):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::CDMInstanceSessionFairPlayStreamingAVFObjC):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::~CDMInstanceSessionFairPlayStreamingAVFObjC):
        (WebCore::keyIDsForRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyIDs):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::nextRequest):
        (WebCore::requestStatusToCDMStatus):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyStatuses const):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSession):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceAttached):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceDetached):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceAttached):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceDetached):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::attemptToDecryptWithInstance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKey const):
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
        (WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
        (WebCore::MediaSourcePrivateAVFObjC::cdmInstanceAttached):
        (WebCore::MediaSourcePrivateAVFObjC::cdmInstanceDetached):
        (WebCore::MediaSourcePrivateAVFObjC::attemptToDecryptWithInstance):
        (WebCore::MediaSourcePrivateAVFObjC::waitingForKey const):
        (WebCore::MediaSourcePrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::destroyParser):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):
        (WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt):
        (WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):

2018-10-31  Zach Li  <zacharyli323@gmail.com>

        Add credit card autofill button
        https://bugs.webkit.org/show_bug.cgi?id=191051
        <rdar://problem/45657011>

        Reviewed by Wenson Hsieh.

        Test: fast/forms/auto-fill-button/input-credit-card-auto-fill-button.html

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
        * css/html.css:
        (input::-webkit-credit-card-auto-fill-button):
        Add credit card autofill button.
        (input::-webkit-credit-card-auto-fill-button:hover):
        (input::-webkit-credit-card-auto-fill-button:active):
        * html/HTMLTextFormControlElement.h:
        * html/TextFieldInputType.cpp:
        (WebCore::autoFillButtonTypeToAccessibilityLabel):
        (WebCore::autoFillButtonTypeToAutoFillButtonText):
        (WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
        (WebCore::isAutoFillButtonTypeChanged):
        * platform/LocalizedStrings.cpp:
        (WebCore::AXAutoFillCreditCardLabel):
        * platform/LocalizedStrings.h:
        * testing/Internals.cpp:
        (WebCore::toAutoFillButtonType):
        (WebCore::toInternalsAutoFillButtonType):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-10-31  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Don't reveal device IDs until the user has granted permission to capture
        https://bugs.webkit.org/show_bug.cgi?id=191112
        <rdar://problem/45699932>

        Reviewed by Youenn Fablet.

        No new tests, existing tests updated.

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start): Don't reveal device ID or group ID until the user 
        has granted permssion to capture.

2018-10-31  YUHAN WU  <yuhan_wu@apple.com>

        MediaRecorder should fire dataavailable event when all tracks are ended and stop() is called
        https://bugs.webkit.org/show_bug.cgi?id=190778

        Reviewed by Youenn Fablet.

        Implement JavaScript dispatch event dataavailable and JavaScript exposed method stop().
        Implement a mock string as the output buffer of MediaRecorder.
        Remove the declaration of timecode in BlobEvent since it has not been implemented in MediaRecorder and MediaRecorderPrivate. 

        Tests: http/wpt/mediarecorder/MediaRecorder-dataavailable.html
               http/wpt/mediarecorder/MediaRecorder-mock-dataavailable.html
               imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html
               imported/w3c/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html

        * CMakeLists.txt:
        * Modules/mediarecorder/BlobEvent.cpp: Added.
        (WebCore::BlobEvent::create):
        (WebCore::BlobEvent::BlobEvent):
        (WebCore::BlobEvent::eventInterface const):
        * Modules/mediarecorder/BlobEvent.h:
        * Modules/mediarecorder/BlobEvent.idl:
        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::~MediaRecorder):
        (WebCore::MediaRecorder::stop):
        (WebCore::MediaRecorder::startRecording):
        (WebCore::MediaRecorder::stopRecording):
        (WebCore::MediaRecorder::stopRecordingInternal):
        (WebCore::MediaRecorder::didAddOrRemoveTrack):
        (WebCore::MediaRecorder::trackEnded):
        (WebCore::MediaRecorder::sampleBufferUpdated):
        (WebCore::MediaRecorder::audioSamplesAvailable):
        (WebCore::MediaRecorder::scheduleDeferredTask):
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediarecorder/MediaRecorder.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/EventNames.h:
        * dom/EventNames.in:
        * platform/mediarecorder/MediaRecorderPrivate.h: Added.
        * platform/mediarecorder/MediaRecorderPrivateMock.cpp: Added.
        (WebCore::MediaRecorderPrivateMock::sampleBufferUpdated):
        (WebCore::MediaRecorderPrivateMock::audioSamplesAvailable):
        (WebCore::MediaRecorderPrivateMock::generateMockString):
        (WebCore::MediaRecorderPrivateMock::fetchData):
        * platform/mediarecorder/MediaRecorderPrivateMock.h: Added.

2018-10-31  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK][WPE] Remaining topPrivatelyControlledDomain() fixes
        https://bugs.webkit.org/show_bug.cgi?id=191110

        Reviewed by Michael Catanzaro.

        Covered by existing tests.

        Turns out that this method is expected to reject domains that
        are not registrable. Also sync with the Mac implementation in
        that given domains that are not all ASCII should be returned
        back as is. This fixes the remaining Public Suffix API tests.

        * platform/soup/PublicSuffixSoup.cpp:
        (WebCore::topPrivatelyControlledDomain):

2018-10-31  Antti Koivisto  <antti@apple.com>

        Remove LayerFlushScheduler
        https://bugs.webkit.org/show_bug.cgi?id=191103

        Reviewed by Anders Carlsson.

        It is only used in WK1.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/ca/LayerFlushScheduler.cpp: Removed.
        * platform/graphics/ca/LayerFlushScheduler.h: Removed.
        * platform/graphics/ca/LayerFlushSchedulerClient.h: Removed.
        * platform/graphics/ca/cocoa/LayerFlushSchedulerMac.cpp: Removed.

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        Missing from r237634

        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::formattingContext):

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] Do not pass LayoutState& to compute* and layout* functions
        https://bugs.webkit.org/show_bug.cgi?id=191100

        Reviewed by Antti Koivisto.

        Reduce noise by removing LayoutState& parameter where possible.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        (WebCore::Layout::FormattingContext::computeBorderAndPadding const):
        (WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
        (WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
        * layout/FormattingContext.h:
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        * layout/LayoutFormattingState.cpp:
        (WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layout const):
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForInlineBox const):
        (WebCore::Layout::InlineFormattingContext::computeFloatPosition const):
        (WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
        (WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] FormattingContext class should take FormattingState&
        https://bugs.webkit.org/show_bug.cgi?id=191099

        Reviewed by Antti Koivisto.

        This is in preparation for not passing LayoutState& into every layout functions.
        FormattingContext has FormattingState now and LayoutState can be acquired through FormattingState.
        LayoutState <- FormattingState <- FormattingContext

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::FormattingContext):
        (WebCore::Layout::FormattingContext::formattingState const):
        (WebCore::Layout::FormattingContext::layoutState const):
        * layout/FormattingContext.h:
        * layout/FormattingState.cpp:
        (WebCore::Layout::FormattingState::FormattingState):
        * layout/FormattingState.h:
        (WebCore::Layout::FormattingState::layoutState const):
        * layout/LayoutFormattingState.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::BlockFormattingContext):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/blockformatting/BlockFormattingState.cpp:
        (WebCore::Layout::BlockFormattingState::BlockFormattingState):
        (WebCore::Layout::BlockFormattingState::formattingContext):
        (WebCore::Layout::BlockFormattingState::formattingContext const): Deleted.
        * layout/blockformatting/BlockFormattingState.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::InlineFormattingState):
        (WebCore::Layout::InlineFormattingState::formattingContext):
        (WebCore::Layout::InlineFormattingState::formattingContext const): Deleted.
        * layout/inlineformatting/InlineFormattingState.h:

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] The *FormattingState class should provide the *FormattingContext.
        https://bugs.webkit.org/show_bug.cgi?id=191089

        Reviewed by Antti Koivisto.

        BlockFormattingState provides the BlockFormattingContext object, while InlineFormattingState provides the InlineFormattingContext.

        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
        * layout/FormattingState.h:
        * layout/LayoutFormattingState.cpp:
        (WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
        (WebCore::Layout::LayoutState::formattingContext const): Deleted.
        * layout/LayoutFormattingState.h:
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/blockformatting/BlockFormattingState.cpp:
        (WebCore::Layout::BlockFormattingState::formattingContext const):
        * layout/blockformatting/BlockFormattingState.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::formattingContext const):
        * layout/inlineformatting/InlineFormattingState.h:

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [LFC] Rename LayoutContext to LayoutState
        https://bugs.webkit.org/show_bug.cgi?id=191080

        Reviewed by Antti Koivisto.

        LayoutContext naming was a bit misleading since none of the other *FormattingContext classes (BlockFormattingContext etc) hold states.
        (LayoutContext.cpp -> LayoutFormattingState.cpp because LayoutState.cpp name is already taken.)

        Now the current state is as follows:

        LayoutState has
        1. Layout tree
        2. State content for each formatting subtrees
        3. Display tree

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/FormattingContext.cpp:
        (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
        (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
        (WebCore::Layout::FormattingContext::computeBorderAndPadding const):
        (WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
        (WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
        (WebCore::Layout::FormattingContext::mapBoxToAncestor):
        (WebCore::Layout::FormattingContext::mapTopLeftToAncestor):
        (WebCore::Layout::FormattingContext::mapCoordinateToAncestor):
        (WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
        * layout/FormattingContext.h:
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::contentHeightForFormattingContextRoot):
        (WebCore::Layout::FormattingContext::Geometry::computedMaxHeight):
        (WebCore::Layout::FormattingContext::Geometry::computedMinHeight):
        (WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
        (WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):
        (WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::complicatedCases):
        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
        (WebCore::Layout::FormattingContext::Geometry::computedBorder):
        (WebCore::Layout::FormattingContext::Geometry::computedPadding):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
        (WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):
        * layout/FormattingState.cpp:
        (WebCore::Layout::FormattingState::FormattingState):
        * layout/FormattingState.h:
        (WebCore::Layout::FormattingState::setInstrinsicWidthConstraints):
        (WebCore::Layout::FormattingState::instrinsicWidthConstraints const):
        * layout/LayoutFormattingState.cpp: Renamed from Source/WebCore/layout/LayoutContext.cpp.
        (WebCore::Layout::LayoutState::LayoutState):
        (WebCore::Layout::LayoutState::initializeRoot):
        (WebCore::Layout::LayoutState::updateLayout):
        (WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
        (WebCore::Layout::LayoutState::displayBoxForLayoutBox const):
        (WebCore::Layout::LayoutState::styleChanged):
        (WebCore::Layout::LayoutState::markNeedsUpdate):
        (WebCore::Layout::LayoutState::formattingStateForBox const):
        (WebCore::Layout::LayoutState::establishedFormattingState const):
        (WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
        (WebCore::Layout::LayoutState::formattingContext const):
        * layout/LayoutFormattingState.h: Renamed from Source/WebCore/layout/LayoutContext.h.
        (WebCore::Layout::LayoutState::setInQuirksMode):
        (WebCore::Layout::LayoutState::hasDisplayBox const):
        (WebCore::Layout::LayoutState::inQuirksMode const):
        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
        (WebCore::Layout::verifyAndOutputSubtree):
        (WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
        (WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const): Deleted.
        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layout const):
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):
        (WebCore::Layout::hasPrecomputedMarginTop):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        (WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
        (WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
        (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
        (WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
        * layout/blockformatting/BlockFormattingContext.h:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::isStretchedToInitialContainingBlock):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
        (WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):
        (WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginTop):
        * layout/blockformatting/BlockFormattingState.cpp:
        (WebCore::Layout::BlockFormattingState::BlockFormattingState):
        * layout/blockformatting/BlockFormattingState.h:
        * layout/blockformatting/BlockInvalidation.cpp:
        (WebCore::Layout::computeUpdateType):
        (WebCore::Layout::computeUpdateTypeForAncestor):
        (WebCore::Layout::BlockInvalidation::invalidate):
        * layout/blockformatting/BlockInvalidation.h:
        * layout/blockformatting/BlockMarginCollapse.cpp:
        (WebCore::Layout::isMarginTopCollapsedWithParent):
        (WebCore::Layout::isMarginBottomCollapsedThrough):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginTopFromFirstChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginTop):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginTop):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBottom):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBottom):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBottomFromLastChild):
        (WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBottom):
        * layout/displaytree/DisplayBox.h:
        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::FloatAvoider):
        * layout/floats/FloatAvoider.h:
        * layout/floats/FloatBox.cpp:
        (WebCore::Layout::FloatBox::FloatBox):
        * layout/floats/FloatBox.h:
        * layout/floats/FloatingContext.cpp:
        (WebCore::Layout::FloatingContext::positionForFloat const):
        (WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
        (WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
        * layout/floats/FloatingContext.h:
        (WebCore::Layout::FloatingContext::layoutState const):
        (WebCore::Layout::FloatingContext::layoutContext const): Deleted.
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::FloatItem::FloatItem):
        (WebCore::Layout::FloatingState::FloatingState):
        (WebCore::Layout::FloatingState::constraints const):
        * layout/floats/FloatingState.h:
        (WebCore::Layout::FloatingState::create):
        (WebCore::Layout::FloatingState::layoutState const):
        (WebCore::Layout::FloatingState::layoutContext const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForInlineBox const):
        (WebCore::Layout::InlineFormattingContext::computeFloatPosition const):
        (WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
        (WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):
        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin):
        * layout/inlineformatting/InlineFormattingState.cpp:
        (WebCore::Layout::InlineFormattingState::InlineFormattingState):
        * layout/inlineformatting/InlineFormattingState.h:
        * layout/inlineformatting/InlineInvalidation.cpp:
        (WebCore::Layout::InlineInvalidation::invalidate):
        * layout/inlineformatting/InlineInvalidation.h:
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::InlineLineBreaker):
        (WebCore::Layout::InlineLineBreaker::runWidth const):
        * layout/inlineformatting/InlineLineBreaker.h:
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):
        (WebCore::Layout::outputLayoutTree):
        (WebCore::Layout::showLayoutTree):
        * layout/layouttree/LayoutTreeBuilder.h:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::layoutUsingFormattingContext):

2018-10-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Attachment dropped from one web view to another is missing its file wrapper
        https://bugs.webkit.org/show_bug.cgi?id=190530
        <rdar://problem/45232149>

        Reviewed by Tim Horton.

        Add support for copying and pasting attachment elements across web views by encoding and adding file wrapper
        data as subresources in the web archive when writing selected web content to the pasteboard, and then decoding
        and creating NSFileWrappers upon reading web content.

        Test: WKAttachmentTests.CopyAndPasteBetweenWebViews

        * WebCore.xcodeproj/project.pbxproj:
        * editing/Editor.cpp:
        (WebCore::Editor::registerAttachments):
        * editing/Editor.h:

        Add registerAttachments(), which registers _WKAttachments in the UI process given a list of
        SerializedAttachmentData. This behaves similarly to registerAttachmentIdentifiers(), but differs in that (1) it
        sends serialized file wrapper data, and (2) it sends a list of serialized attachments, rather than information
        about just a single attachment.

        * editing/SerializedAttachmentData.h:

        Introduce SerializedAttachmentData, a struct containing information needed to serialize and deserialize an
        attachment. These are used both when writing attachment data to the pasteboard, and when consuming attachment
        data upon paste.

        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::replaceRichContentWithAttachments):

        Add a step when pasting rich content with attachments, to collect and send serialized attachments to the client.
        Also, drive-by fix: don't WTFMove() the Ref here if it's still going to be used below.

        * html/HTMLAttachmentElement.cpp:
        (WebCore::HTMLAttachmentElement::archiveResourceURL):
        * html/HTMLAttachmentElement.h:

        Add a static helper function to compute a URL that represents the data for the given attachment identifier, for
        use in a web archive resource.

        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::addSubresourcesForAttachmentElementsIfNecessary):

        Add a helper function to create and append ArchiveResources representing attachment element data when writing
        attachments to the pasteboard via web archive data.

        (WebCore::LegacyWebArchive::create):
        * page/EditorClient.h:
        (WebCore::EditorClient::registerAttachments):
        (WebCore::EditorClient::serializedAttachmentDataForIdentifiers):

2018-10-30  David Kilzer  <ddkilzer@apple.com>

        XSLTProcessor should limit max transform depth
        <https://webkit.org/b/191075>
        <rdar://problem/45531453>

        Reviewed by Alex Christensen.

        Test: fast/xsl/xslt-max-depth.html

        * xml/SoftLinkLibxslt.cpp: Add macro for `xsltMaxDepth` global.
        * xml/SoftLinkLibxslt.h: Ditto.
        * xml/XSLTProcessorLibxslt.cpp:
        (WebCore::XSLTProcessor::transformToString): Set `xsltMaxDepth`
        to 1000.  Default in libxslt.dylib is 3000.

2018-10-30  Jim Mason  <jmason@ibinx.com>

        [GTK] Scrollbars not following gtk-primary-button-warps-slider setting
        https://bugs.webkit.org/show_bug.cgi?id=191067

        Reviewed by Michael Catanzaro.

        * platform/gtk/ScrollbarThemeGtk.cpp:
        (WebCore::ScrollbarThemeGtk::handleMousePressEvent):

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete MAX_ALLOWED macros
        https://bugs.webkit.org/show_bug.cgi?id=190916

        Reviewed by Tim Horton.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::exernalDeviceDisplayNameForPlayer):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::globalPointForEvent):
        (WebCore::pointForEvent):
        (WebCore::mouseButtonForEvent):
        (WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):

2018-10-30  Ali Juma  <ajuma@chromium.org>

        Calling window.open("", "_self") allows working around restrictions on window.close()
        https://bugs.webkit.org/show_bug.cgi?id=191073

        Reviewed by Chris Dumez.

        Do not treat a re-used frame in DOMWindow::createWindow as having been opened by DOM.

        Test: fast/dom/Window/window-open-self-disallow-close.html

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):

2018-10-30  Andy Estes  <aestes@apple.com>

        [Payment Request] Implement PaymentResponse.retry()
        https://bugs.webkit.org/show_bug.cgi?id=190985

        Reviewed by Daniel Bates.

        Implemented the retry() method on PaymentResponse as specified in the Payment Request API
        W3C Editor's Draft of 24 October 2018.

        See https://w3c.github.io/payment-request/#retry-method for details.

        Tests: http/tests/paymentrequest/payment-response-rejects-if-not-active.https.html
               http/tests/paymentrequest/payment-response-retry-method.https.html

        * Modules/applepay/PaymentCoordinator.h:
        (WebCore::PaymentCoordinator::client): Added. Returns m_client.
        * Modules/applepay/PaymentCoordinatorClient.h:
        (WebCore::PaymentCoordinatorClient::isMockPaymentCoordinator const): Added. Used to downcast
        a PaymentCoordinatorClient to a MockPaymentCoordinator.
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const): Made const.
        (WebCore::ApplePayPaymentHandler::computeErrors const): Broke this function into
        computeAddressErrors, computePayerErrors, and computePaymentMethodErrors, then modified this
        function to call those functions. Exceptions thrown by computePaymentMethodErrors are ignored.
        (WebCore::ApplePayPaymentHandler::computeAddressErrors const): Added.
        (WebCore::ApplePayPaymentHandler::computePayerErrors const): Added.
        (WebCore::ApplePayPaymentHandler::computePaymentMethodErrors const): Added.
        (WebCore::ApplePayPaymentHandler::complete): Added ASSERTs to verify whether result is a
        final result.
        (WebCore::ApplePayPaymentHandler::retry): Computed PaymentErrors from PaymentValidationErrors,
        ensured the PaymentAuthorizationResult was non-final by adding an unknown error if necessary,
        and called PaymentCoordinator::completePaymentSession.
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
        * Modules/paymentrequest/PaymentHandler.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::show): Changed to call settleShowPromise.
        (WebCore::PaymentRequest::abortWithException): Changed to abort PaymentResponse's retry
        promise, if present, instead of PaymentResponse's show promise.
        (WebCore::PaymentRequest::settleShowPromise): Added. Settles m_showPromise then sets it to
        std::nullopt.
        (WebCore::PaymentRequest::closeActivePaymentHandler): Added. Hides the active payment
        handler then sets it to std::nullopt.
        (WebCore::PaymentRequest::stop): Stopped calling abortWithException, since that function
        might settle PaymentResponse's retry promise. PaymentResponse is now an ActiveDOMObject and
        will settle its own promise in its implementation of stop.
        (WebCore::PaymentRequest::abort): Changed to throw an InvalidStateError if there is a
        pending retry promise and to call abortWithException instead of stop.
        (WebCore::PaymentRequest::completeMerchantValidation): Changed to call abortWithException
        instead of stop.
        (WebCore::PaymentRequest::settleDetailsPromise): Ditto.
        (WebCore::PaymentRequest::accept): Updated the existing PaymentResponse, if present, rather
        than creating a new one. Settled the existing PaymentResponse's retry promise, if present,
        rather than the show promise.
        (WebCore::PaymentRequest::complete): Changed to throw an AbortError if there is no longer an
        active payment handler.
        (WebCore::PaymentRequest::retry): Changed to throw an AbortError if there is no longer an
        active payment handler, and to call PaymentHandler::retry if there is.
        (WebCore::PaymentRequest::cancel): Changed to call abortWithException instead of stop.
        * Modules/paymentrequest/PaymentRequest.h:
        * Modules/paymentrequest/PaymentRequest.idl:
        * Modules/paymentrequest/PaymentResponse.cpp:
        (WebCore::PaymentResponse::PaymentResponse):
        (WebCore::PaymentResponse::finishConstruction): Pending activities create strong references
        to |this|, so they cannot be created in constructors without relaxing adoption requirements.
        Added this function so that the pending activity can be created after the PaymentResponse is
        created and adopted.
        (WebCore::PaymentResponse::~PaymentResponse):
        (WebCore::PaymentResponse::complete): Updated to throw an AbortError or InvalidStateError
        when necessary.
        (WebCore::PaymentResponse::retry): Implemented. Throws an AbortError or InvalidStateError
        when necessary, otherwise calls PaymentRequest::retry and stores the retry promise in
        m_retryPromise.
        (WebCore::PaymentResponse::abortWithException): Added. Rejects the retry promise with
        |exception|, clears the pending activity, and sets m_state to Completed.
        (WebCore::PaymentResponse::settleRetryPromise): Added. Settles the retry promise and sets it
        to std::nullopt.
        (WebCore::PaymentResponse::canSuspendForDocumentSuspension const): Added. Returns true if
        there is no pending activity.
        (WebCore::PaymentResponse::stop): Added. Rejects the retry promise with AbortError, clears
        the pending activity, and sets m_state to Stopped.
        * Modules/paymentrequest/PaymentResponse.h: Changed create to call finishConstruction and
        made PaymentResponse an ActiveDOMObject instead of a ContextDestructionObserver.
        * testing/Internals.cpp:
        (WebCore::Internals::Internals): Changed to only create a MockPaymentCoordinator for main frames.
        (WebCore::Internals::mockPaymentCoordinator): Changed to get the MockPaymentCoordinator by
        downcasting the page's payment coordinator client.
        * testing/Internals.h:
        * testing/Internals.idl:
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::completePaymentSession): Changed to only increment
        hideCount for final results.
        * testing/MockPaymentCoordinator.h:
        (isType): Added so that PaymentCoordinatorClients can be downcasted to MockPaymentCoordinators.

2018-10-30  Zalan Bujtas  <zalan@apple.com>

        [iOS] Use the mainframe view size to compute window.outerWidth/height.
        https://bugs.webkit.org/show_bug.cgi?id=191070
        <rdar://problem/42368377>

        Reviewed by Tim Horton.

        Use a more reasonable value for window.outerWidth and height.
        (WKWebView's frame rect -> drawing area sizing -> WebPage's view size -> FrameView size)

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::outerHeight const):
        (WebCore::DOMWindow::outerWidth const):

2018-10-30  Andy Estes  <aestes@apple.com>

        [Apple Pay] PaymentRequest.canMakePayment() should resolve to true whenever Apple Pay is available
        https://bugs.webkit.org/show_bug.cgi?id=191039

        Reviewed by Megan Gardner.

        During a recent Web Payments WG F2F, we decided that canMakePayment() should return true
        whenever the user agent supports one or more of the specified payment methods, even if those
        payment methods do not have active instruments.

        Change WebKit's implementation of canMakePayment() for Apple Pay to resolve with the value
        of ApplePaySession.canMakePayments() rather than ApplePaySession.canMakePaymentsWithActiveCard().

        Added a test case to http/tests/paymentrequest/payment-request-canmakepayment-method.https.html.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::canMakePayment):
        (WebCore::shouldDiscloseApplePayCapability): Deleted.
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::canMakePayments):
        (WebCore::MockPaymentCoordinator::canMakePaymentsWithActiveCard):
        * testing/MockPaymentCoordinator.h:
        * testing/MockPaymentCoordinator.idl:

2018-10-30  Sihui Liu  <sihui_liu@apple.com>

        Add a deprecation warning to console for Web SQL
        https://bugs.webkit.org/show_bug.cgi?id=190936

        Reviewed by Ryosuke Niwa.

        No new tests. Just adding a console message.

        * Modules/webdatabase/DOMWindowWebDatabase.cpp:
        (WebCore::DOMWindowWebDatabase::openDatabase):

2018-10-30  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: iteration of cursors skip records if updated or deleted
        https://bugs.webkit.org/show_bug.cgi?id=190917
        <rdar://problem/35250410>

        Reviewed by Chris Dumez.

        When object store has changes, we cleared cached records and reset the SQLite statement, 
        updating the boundary to the next key in cursor's direction. Therefore, the cursor could 
        jump to the next key after update or deletion.
        We should cache those records before changing the statement.

        Test: storage/indexeddb/cursor-update-while-iterating.html

        * Modules/indexeddb/server/SQLiteIDBCursor.cpp:
        (WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
        (WebCore::IDBServer::SQLiteIDBCursor::fetch):
        * Modules/indexeddb/server/SQLiteIDBCursor.h:

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Introduce InlineFormattingContextGeometry class
        https://bugs.webkit.org/show_bug.cgi?id=191054

        Reviewed by Antti Koivisto.

        This is in preparation for inline-block support.

        Move float and inline-block elements layout to layoutFormattingContextRoot().
        computeWidthAndHeightForInlineBox takes care of replaced elements.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForInlineBox const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeight const): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineFormattingContextGeometry.cpp: Added.
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin):

2018-10-28  Antoine Quint  <graouts@apple.com>

        [Web Animations] Implement the update animations and send events procedure
        https://bugs.webkit.org/show_bug.cgi?id=191013
        <rdar://problem/45620495>

        Reviewed by Dean Jackson.

        While we implemented the various parts of what the Web Animations specification refers to as the "update animations and send events"
        procedure, we did not implement it as one function and in the correct order, specifically updating animations and sending events in
        two separate tasks. We now have a single method on DocumentTimeline which runs as the DisplayRefreshMonitor fires to update each
        "relevant" animation with the current time, perform a microtask checkpoint and dispatch events.

        Implementing this procedure allowed us to make several enhancements:

        1. We introduce the concept of a "relevant" animation, which is essentially an animation that is either pending or playing. All animations
        in a different state are no longer owned by the DocumentTimeline and can thus be destroyed if the developer doesn't hold references in JS.
        Maintaining such a list guarantees that we're only updating animations that would have changed state since the last time the "update animations
        and send events" procedure was run. Note that DeclarativeAnimation instances are also considered to be relevant if they have queued DOM events
        to dispatch as they could otherwise be destroyed before they can fully dispatch them.

        2. We no longer conflate the timing model and effects. Until now the way we would update animations was to go through all elements for which
        we had a registered animation, invalidate their style and finally forcing a style update on the document. We had a separate data structure where
        we help animations without targets so we update these as well in a separate pass, in order to make sure that promises and events would fire for
        them as expected. We now let the "update animations and send events" procedure update the timing of all relevant animations and let individual
        animation effects invalidate their style as needed, the document style invalidation happening naturally without DocumentTimeline forcing it. 

        3. We use a single step to schedule the update of animations, which is to register for a display refresh monitor update provided a "relevant"
        animation is known since the previous update. Until now we first had an "timing model invalidation" task scheduled upon any change of an animation's
        timing model, which would then create a timer to the earliest moment any listed animation would require an update, finally registering a display
        refresh monitor update, which used at least GenericTaskQueue<Timer> and potentially two, whereas we use none right now.

        4. We allow for a display refresh monitor update to be canceled should the number of "relevant" animations since the last update goes back to 0.

        To facilitate all of this, we have changed the m_animations ListHashSet to contain only the "relevant" animations, and no longer every animation created
        that has this DocumentTimeline set as their "timeline" property. To keep this list current, every single change that changes a given animation's timing
        ends up calling AnimationTimeline::animationTimingDidChange() passing the animation as the sole parameter and adding this animation to m_animations. We
        immediately schedule a display refresh monitor update if one wasn't already scheduled. Then, when running the "update animations and send events"
        procedure, we call a new WebAnimation::tick() method on each of those animations, which updates this animation's effect and relevance, using the newly
        computed relevance to identify whether this animation should be kept in the m_animations ListHashSet.

        This is only the first step towards a more efficient update and ownership model of animations by the document timeline since animations created as CSS
        Animations and CSS Transitions are committed through CSS have dedicated data structures that are not updated in this particular patch, but this will be
        addressed in a followup to keep this already significant patch smaller. Another issue that will be addressed later is the ability to not schedule display
        refresh monitor udpates when only accelerated animations are running.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::animationTimingDidChange): Called by animations when any aspect of their timing model changes. The provided animation is then
        added to the m_animations list unless its timeline is no longer this timeline.
        (WebCore::AnimationTimeline::removeAnimation): Remove the provided animation from m_animations and remove any animation registered on the element-specific
        animation lists if this animation has an effect with a target.
        (WebCore::AnimationTimeline::animationWasAddedToElement): We no longer need to worry about the m_animationsWithoutTarget data structure since we removed it.
        (WebCore::removeCSSTransitionFromMap): Fix a bug where we would remove any CSSTransition in the provided map that had a matching transition-property instead
        of checking the CSSTransition registered for this transition-property was indeed the provided CSSTransition. The other code changes in this patch made this
        code now cause regressions in the Web Platform Tests.
        (WebCore::AnimationTimeline::animationWasRemovedFromElement): Stop updating m_animationsWithoutTarget since it no longer exists.
        (WebCore::AnimationTimeline::elementWasRemoved):
        (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Fix a small error that caused a regression in the Web Platform Tests where we could attempt to
        call setBackingAnimation() on a nullptr instead of a valid CSSAnimation.
        (WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation):
        (WebCore::AnimationTimeline::addAnimation): Deleted.
        * animation/AnimationTimeline.h:
        (WebCore::AnimationTimeline::hasElementAnimations const): Deleted.
        (WebCore::AnimationTimeline:: const): Deleted.
        (WebCore::AnimationTimeline::elementToAnimationsMap): Deleted.
        (WebCore::AnimationTimeline::elementToCSSAnimationsMap): Deleted.
        (WebCore::AnimationTimeline::elementToCSSTransitionsMap): Deleted.
        * animation/CSSTransition.cpp:
        (WebCore::CSSTransition::canBeListed const): Deleted.
        * animation/CSSTransition.h:
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::tick): Call the superclass's method and queue any necessary DOM events reflecting the timing model changes.
        (WebCore::DeclarativeAnimation::needsTick const): Call the superclass's method and return true also if we have pending events since otherwise this animation
        could be removed from m_animations on its AnimationTimeline and potentially destroyed before the GenericEventQueue had a chance to dispatch all events.
        (WebCore::DeclarativeAnimation::startTime const): We removed the custom binding for this IDL property and renamed the method from bindingsStartTime to startTime.
        (WebCore::DeclarativeAnimation::setStartTime): We removed the custom binding for this IDL property and renamed the method from setBindingsStartTime to setStartTime.
        (WebCore::DeclarativeAnimation::bindingsStartTime const): Deleted.
        (WebCore::DeclarativeAnimation::setBindingsStartTime): Deleted.
        * animation/DeclarativeAnimation.h:
        * animation/DocumentAnimationScheduler.cpp:
        (WebCore::DocumentAnimationScheduler::unscheduleWebAnimationsResolution): Add a method to mark that we no longer need a display refresh monitor update for this
        document's animation timeline. This is called when m_animations becomes empty.
        * animation/DocumentAnimationScheduler.h:
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        (WebCore::DocumentTimeline::detachFromDocument): Stop clearing two task queues and a timer that no longer exist and instead only clear the task queue to clear
        the cached current time, which we queue any time we generate a new one (see DocumentTimeline::currentTime).
        (WebCore::DocumentTimeline::getAnimations const): Use isRelevant() instead of canBeListed().
        (WebCore::DocumentTimeline::updateThrottlingState):
        (WebCore::DocumentTimeline::suspendAnimations):
        (WebCore::DocumentTimeline::resumeAnimations):
        (WebCore::DocumentTimeline::numberOfActiveAnimationsForTesting const):
        (WebCore::DocumentTimeline::currentTime): Queue a task in the new m_currentTimeClearingTaskQueue task queue to clear the current time that we've generated and cached
        in the next run loop (provided all pending JS execution has also completed). 
        (WebCore::DocumentTimeline::maybeClearCachedCurrentTime):
        (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Schedule a display refresh monitor update if we are not suspended and have "relevant" animations.
        (WebCore::DocumentTimeline::animationTimingDidChange): Call scheduleAnimationResolutionIfNeeded() after calling the superclass's implementation.
        (WebCore::DocumentTimeline::removeAnimation): Call unscheduleAnimationResolution() if the list of "relevant" animations is now empty.
        (WebCore::DocumentTimeline::unscheduleAnimationResolution): Unschedule a pending display refresh monitor update.
        (WebCore::DocumentTimeline::animationResolutionTimerFired):
        (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): Implement the "update animations and send events" procedure as specified by the Web Animations spec.
        During this procedure, we call tick() on all animations listed in m_animations and create a list of animations to remove from that list if this animation is no
        longer relevant following the call to tick().
        (WebCore::DocumentTimeline::enqueueAnimationPlaybackEvent):
        (WebCore::DocumentTimeline::timingModelDidChange): Deleted.
        (WebCore::DocumentTimeline::scheduleInvalidationTaskIfNeeded): Deleted.
        (WebCore::DocumentTimeline::performInvalidationTask): Deleted.
        (WebCore::DocumentTimeline::updateAnimationSchedule): Deleted.
        (WebCore::DocumentTimeline::animationScheduleTimerFired): Deleted.
        (WebCore::DocumentTimeline::updateAnimations): Deleted.
        (WebCore::compareAnimationPlaybackEvents): Deleted.
        (WebCore::DocumentTimeline::performEventDispatchTask): Deleted.
        * animation/DocumentTimeline.h:
        * animation/WebAnimation.cpp: The majority of the changes to this class is that we call the new timingDidChange() method when any code that modifies the timing model
        is run. We also remove methods to set the pending play and pause tasks as well as the animation's start time and hold time since any time we're changing these instance
        variables, we later already have a call to update the timing model and we were doing more work than needed. As a result we no longer need an internal method to set the
        start time and can stop requiring a custom IDL binding for the "startTime" property.
        (WebCore::WebAnimation::effectTimingPropertiesDidChange):
        (WebCore::WebAnimation::setEffect):
        (WebCore::WebAnimation::setEffectInternal):
        (WebCore::WebAnimation::setTimeline):
        (WebCore::WebAnimation::setTimelineInternal):
        (WebCore::WebAnimation::startTime const):
        (WebCore::WebAnimation::setStartTime):
        (WebCore::WebAnimation::silentlySetCurrentTime):
        (WebCore::WebAnimation::setCurrentTime):
        (WebCore::WebAnimation::setPlaybackRate):
        (WebCore::WebAnimation::cancel):
        (WebCore::WebAnimation::resetPendingTasks):
        (WebCore::WebAnimation::finish):
        (WebCore::WebAnimation::timingDidChange): New method called any time a timing property changed where we run the "update the finished state" procedure and notify the
        animation's timeline that its timing changed so that it can be considered the next time the "update animations and send events" procedure runs.
        (WebCore::WebAnimation::invalidateEffect):
        (WebCore::WebAnimation::updateFinishedState): Update the animation's relevance after running the procedure as specified.
        (WebCore::WebAnimation::play):
        (WebCore::WebAnimation::runPendingPlayTask):
        (WebCore::WebAnimation::pause):
        (WebCore::WebAnimation::runPendingPauseTask):
        (WebCore::WebAnimation::needsTick const):
        (WebCore::WebAnimation::tick): New method called during the "update animations and send events" procedure where we run the "update the finished state" procedure and run
        the pending play and pause tasks.
        (WebCore::WebAnimation::resolve):
        (WebCore::WebAnimation::updateRelevance):
        (WebCore::WebAnimation::computeRelevance):
        (WebCore::WebAnimation::timingModelDidChange): Deleted.
        (WebCore::WebAnimation::setHoldTime): Deleted.
        (WebCore::WebAnimation::bindingsStartTime const): Deleted.
        (WebCore::WebAnimation::setBindingsStartTime): Deleted.
        (WebCore::WebAnimation::setTimeToRunPendingPlayTask): Deleted.
        (WebCore::WebAnimation::setTimeToRunPendingPauseTask): Deleted.
        (WebCore::WebAnimation::updatePendingTasks): Deleted.
        (WebCore::WebAnimation::timeToNextRequiredTick const): Deleted.
        (WebCore::WebAnimation::runPendingTasks): Deleted.
        (WebCore::WebAnimation::canBeListed const): Deleted.
        * animation/WebAnimation.h:
        (WebCore::WebAnimation::isRelevant const):
        (WebCore::WebAnimation::hasPendingPlayTask const):
        (WebCore::WebAnimation::isEffectInvalidationSuspended):
        * animation/WebAnimation.idl:
        * dom/Element.cpp:
        (WebCore::Element::getAnimations): Use isRelevant() instead of canBeListed().

2018-10-30  Youenn Fablet  <youenn@apple.com>

        LibWebRTCRtpReceiverBackend::getSynchronizationSources should use Vector::append
        https://bugs.webkit.org/show_bug.cgi?id=191026

        Reviewed by Eric Carlson.

        Covered by updated test.

        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
        (WebCore::LibWebRTCRtpReceiverBackend::getSynchronizationSources const):

2018-10-30  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK][WPE] Fixes to the PublicSuffix implementation
        https://bugs.webkit.org/show_bug.cgi?id=191031

        Reviewed by Michael Catanzaro.

        Covered by existing tests.

        Downcase hostnames before passing it on to the underlying
        libsoup API. Special case localhost and fix a mixed-up
        libsoup GError checks. This fixes most of the failures.

        * platform/soup/PublicSuffixSoup.cpp:
        (WebCore::isPublicSuffix):
        (WebCore::topPrivatelyControlledDomain):

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        Missing from r237549

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):
        (WebCore::Layout::hasPrecomputedMarginTop):

2018-10-29  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed speculative build fix for AppleWin after r237559.

        * PlatformAppleWin.cmake:

2018-10-29  Justin Michaud  <justin_michaud@apple.com>

        Revert r237347 registered custom properties... https://bugs.webkit.org/show_bug.cgi?id=190039
        https://bugs.webkit.org/show_bug.cgi?id=190919

        Reviewed by Michael Saboff.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::customCSSText const):
        (WebCore::CSSCustomPropertyValue::tokens const):
        (WebCore::CSSCustomPropertyValue::checkVariablesForCycles const):
        (WebCore::CSSCustomPropertyValue::resolveVariableReferences const):
        (WebCore::CSSCustomPropertyValue::setResolvedTypedValue):
        (WebCore::CSSCustomPropertyValue::equals const): Deleted.
        * css/CSSCustomPropertyValue.h:
        * css/CSSRegisteredCustomProperty.cpp:
        (WebCore::CSSRegisteredCustomProperty::CSSRegisteredCustomProperty):
        * css/CSSRegisteredCustomProperty.h:
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::consumeAndUpdateTokens):
        (WebCore::CSSVariableData::CSSVariableData):
        (WebCore::CSSVariableData::checkVariablesForCycles const):
        (WebCore::CSSVariableData::checkVariablesForCyclesWithRange const):
        (WebCore::CSSVariableData::resolveVariableFallback const):
        (WebCore::CSSVariableData::resolveVariableReference const):
        (WebCore::CSSVariableData::resolveVariableReferences const):
        (WebCore::CSSVariableData::resolveTokenRange const):
        * css/CSSVariableData.h:
        (WebCore::CSSVariableData::create):
        (WebCore::CSSVariableData::createResolved):
        (WebCore::CSSVariableData::needsVariableResolution const):
        (WebCore::CSSVariableData::CSSVariableData):
        * css/CSSVariableReferenceValue.cpp:
        (WebCore::CSSVariableReferenceValue::checkVariablesForCycles const):
        (WebCore::resolveVariableFallback): Deleted.
        (WebCore::resolveVariableReference): Deleted.
        (WebCore::resolveTokenRange): Deleted.
        (WebCore::CSSVariableReferenceValue::resolveVariableReferences const): Deleted.
        * css/CSSVariableReferenceValue.h:
        (WebCore::CSSVariableReferenceValue::create):
        (WebCore::CSSVariableReferenceValue::variableDataValue const):
        (WebCore::CSSVariableReferenceValue::equals const):
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        * css/PropertySetCSSStyleDeclaration.cpp:
        (WebCore::PropertySetCSSStyleDeclaration::setProperty):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyInitialCustomProperty):
        (WebCore::StyleBuilderCustom::applyValueCustomProperty):
        * css/StyleProperties.cpp:
        (WebCore::MutableStyleProperties::setCustomProperty):
        * css/StyleProperties.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::State::setStyle):
        (WebCore::StyleResolver::styleForKeyframe):
        (WebCore::StyleResolver::styleForPage):
        (WebCore::StyleResolver::applyMatchedProperties):
        (WebCore::StyleResolver::applyPropertyToCurrentStyle):
        (WebCore::StyleResolver::applyProperty):
        (WebCore::StyleResolver::resolvedVariableValue const):
        (WebCore::StyleResolver::CascadedProperties::applyDeferredProperties):
        (WebCore::StyleResolver::CascadedProperties::Property::apply):
        (WebCore::StyleResolver::applyCascadedProperties):
        (WebCore::StyleResolver::applyCascadedCustomProperty): Deleted.
        * css/StyleResolver.h:
        * css/parser/CSSParser.cpp:
        (WebCore::CSSParser::parseValueWithVariableReferences):
        * css/parser/CSSParser.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::CSSPropertyParser):
        (WebCore::CSSPropertyParser::parseValueStart):
        (WebCore::CSSPropertyParser::parseSingleValue):
        (WebCore::CSSPropertyParser::canParseTypedCustomPropertyValue): Deleted.
        (WebCore::CSSPropertyParser::parseTypedCustomPropertyValue): Deleted.
        (WebCore::CSSPropertyParser::collectParsedCustomPropertyValueDependencies): Deleted.
        * css/parser/CSSPropertyParser.h:
        * css/parser/CSSVariableParser.cpp:
        (WebCore::CSSVariableParser::parseDeclarationValue):
        * dom/ConstantPropertyMap.cpp:
        (WebCore::ConstantPropertyMap::setValueForProperty):
        (WebCore::variableDataForPositivePixelLength):
        (WebCore::variableDataForPositiveDuration):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::checkVariablesInCustomProperties):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::setInheritedCustomPropertyValue):
        (WebCore::RenderStyle::setNonInheritedCustomPropertyValue):
        * rendering/style/StyleCustomPropertyData.h:
        (WebCore::StyleCustomPropertyData::operator== const):
        (WebCore::StyleCustomPropertyData::setCustomPropertyValue):
        (WebCore::StyleCustomPropertyData::StyleCustomPropertyData):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Remove the previous MDNS resolution mechanism.
        Instead, add support for the AsyncResolver mechanism added to libwebrtc.
        Covered by current mdns webrtc test that is unflaked.

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::addIceCandidate):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::LibWebRTCProvider::createPeerConnection):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):
        * testing/MockLibWebRTCPeerConnection.h:

2018-10-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: increase size limits for NetworkResourceData
        https://bugs.webkit.org/show_bug.cgi?id=191034
        <rdar://problem/45529852>

        Reviewed by Joseph Pecoraro.

        No tests since no new functionality.

        * inspector/NetworkResourcesData.cpp:
        All resources: 100MB => 200MB
        Each resource:  10MB =>  50MB

2018-10-29  Tim Horton  <timothy_horton@apple.com>

        Modernize WebKit nibs and lprojs for localization's sake
        https://bugs.webkit.org/show_bug.cgi?id=190911
        <rdar://problem/45349466>

        Reviewed by Dan Bernstein.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * WebCore.xcodeproj/project.pbxproj:
        * en.lproj/Localizable.strings: Renamed from Source/WebCore/English.lproj/Localizable.strings.
        * en.lproj/Localizable.stringsdict: Renamed from Source/WebCore/English.lproj/Localizable.stringsdict.
        * en.lproj/mediaControlsLocalizedStrings.js: Renamed from Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js.
        * en.lproj/modern-media-controls-localized-strings.js: Renamed from Source/WebCore/English.lproj/modern-media-controls-localized-strings.js.
        English->en

2018-10-29  Tim Horton  <timothy_horton@apple.com>

        Make FindOptionsShowOverlay work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190551

        Reviewed by Andy Estes.

        * platform/graphics/GraphicsContext.h:
        Export some more GraphicsContext methods.

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Invalid ssrc value in the stats of type 'inbound-rtp'
        https://bugs.webkit.org/show_bug.cgi?id=190826
        <rdar://problem/45487435>

        Reviewed by Eric Carlson.

        Value was not initialized in WebCore if missing from libwebrtc.
        Change value to an optional so that it will not appear if libwebrtc does not expose it.
        Move integer/boolean values from being initialized to be optional so
        that we do not expose them to JS if not exposed by libwebrtc.

        Covered by updated tests.

        * Modules/mediastream/RTCStatsReport.h:

2018-10-29  Jer Noble  <jer.noble@apple.com>

        CRASH in CoreGraphics: ERROR_CGDataProvider_BufferIsNotBigEnough
        https://bugs.webkit.org/show_bug.cgi?id=190954

        Reviewed by Simon Fraser.

        Crash analyitics show that WebProcess will crash in ERROR_CGDataProvider_BufferIsNotBigEnough,
        which attempts to fetch the last byte in the image buffer in order to verify that the entire
        buffer is readable. Unfortunately, the stack trace generated by this crash does not identify
        what CGDataProvider is responsible for the not-big-enough buffer. In order to identify which
        CGDataProvider created by WebKit is responsible (if any), we will add our own version of
        ERROR_CGDataProvider_BufferIsNotBigEnough, called at CGDataProvider creation time, which should
        generate a crash within the responsible stack frame.

        (This assumes that the issue is the wrong sized buffer at CGDataProvider creation time, and not
        that the buffer itself is reclaimed between creation time and access.)

        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/cg/GraphicsContext3DCG.cpp:
        (WebCore::GraphicsContext3D::paintToCanvas):
        * platform/graphics/cg/ImageBufferCG.cpp:
        (WebCore::ImageBuffer::ImageBuffer):
        (WebCore::ImageBuffer::toCFData const):
        (WebCore::cfData):
        * platform/graphics/cocoa/WebGLLayer.mm:
        (-[WebGLLayer copyImageSnapshotWithColorSpace:]):
        * platform/graphics/cv/PixelBufferConformerCV.cpp:
        (WebCore::CVPixelBufferGetBytePointerCallback):
        (WebCore::PixelBufferConformerCV::createImageFromPixelBuffer):
        * platform/graphics/cg/ImageUtilitiesCG.h: Added.
        (WebCore::verifyImageBufferIsBigEnough):

2018-10-29  David Kilzer  <ddkilzer@apple.com>

        Fix clang static analyzer warning in StyleBuilderConverter.h
        <https://webkit.org/b/190907>

        Reviewed by Antti Koivisto.

        Fix the following clang static warning in StyleBuilderConverter.h:
            Value stored to 'autoFlow' during its initialization is never read

        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertGridAutoFlow): Move
        assignment of RenderStyle::initialGridAutoFlow() to `default`
        case.  Make `CSSValueDense` consistent with other cases by
        assigning value to `autoFlow` instead of returning early.

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Guard H264 simulcast with a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=191025

        Reviewed by Eric Carlson.

        Add a runtime flag for H264 simulcast and enable libwebrtc field trial based on it.
        Covered by existing test.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::webRTCH264SimulcastEnabled const):
        (WebCore::RuntimeEnabledFeatures::setWebRTCH264SimulcastEnabled):

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Compute estimated margin top for inline formatting root's ancestors
        https://bugs.webkit.org/show_bug.cgi?id=191018

        Reviewed by Antti Koivisto.

        <div><img style="float: left"></div>
        This inline formatting context (root -> div) inherits the floating context from the parent block formatting context.
        Floats are added to the floating context relative to the floating context's root. In order to position this float properly we
        need to precompute the ancestor's margin top (stop at the block formatting root boundary).

        Test: fast/inline/simple-intruding-floats3.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        [LFC] Add support for inflow non replaced content height when the box is an inline formatting root.
        https://bugs.webkit.org/show_bug.cgi?id=191011

        Reviewed by Antti Koivisto.

        // 10.6.3 Block-level non-replaced elements in normal flow when 'overflow' computes to 'visible'
        // Height is the bottom edge of the last line box, if the box establishes a inline formatting context with one or more lines

        This is temporary until after inline runs transition to the display tree.

        Test: fast/inline/simple-intruding-floats2.html

        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::logicalLeft const):
        (WebCore::Layout::InlineRun::logicalRight const):
        (WebCore::Layout::InlineRun::logicalTop const):
        (WebCore::Layout::InlineRun::logicalBottom const):
        (WebCore::Layout::InlineRun::width const):
        (WebCore::Layout::InlineRun::height const):
        (WebCore::Layout::InlineRun::setWidth):
        (WebCore::Layout::InlineRun::setLogicalLeft):
        (WebCore::Layout::InlineRun::setLogicalRight):
        (WebCore::Layout::InlineRun::moveHorizontally):
        (WebCore::Layout::InlineRun::InlineRun):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add support for simple intruding floats.
        https://bugs.webkit.org/show_bug.cgi?id=190998

        Reviewed by Antti Koivisto.

        In order to be able to figure out whether a float is intruding on a line, we need to provide the line's final vertical position.
        This vertical position must be in the same coordinate system as the float's position is. In case of intruding float,
        it is the parent block formatting root's coordinate system (that's where the float lives.)

        Test: fast/inline/simple-intruding-float1.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        (WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
        (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRootIfNeeded const):
        (WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
        (WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
        (WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
        * layout/blockformatting/BlockFormattingContext.h:
        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::constraints const):

2018-10-29  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Inline layout produces separate runs when float is present.
        https://bugs.webkit.org/show_bug.cgi?id=190980

        Reviewed by Antti Koivisto.

        <div>foo<img src="foobar.jpg" style="float: left">bar</div> produces 2 inline boxes (foo) and (bar) -> current inline code
        while it is really just one continuous run (foobar) -> LFC
        Adjust verification code to check for such runs.

        * layout/Verification.cpp:
        (WebCore::Layout::checkForMatchingNonTextRuns):
        (WebCore::Layout::checkForMatchingTextRuns):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::textContext const):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        [WebRTC] Enable VP8 by default
        https://bugs.webkit.org/show_bug.cgi?id=190672
        <rdar://problem/43663785>

        Reviewed by Eric Carlson.

        No change of behavior.

        * page/RuntimeEnabledFeatures.h: Set default value to true.

2018-10-28  Andy Estes  <aestes@apple.com>

        [Payment Request] Implement MerchantValidationEvent.methodName
        https://bugs.webkit.org/show_bug.cgi?id=190058

        Reviewed by Darin Adler.

        Implemented MerchantValidationEvent's methodName attribute and MerchantValidationEventInit's
        methodName property as specified in the Payment Request API W3C Editor's Draft of
        27 September 2018.

        Covered by web-platform-tests/payment-request/MerchantValidationEvent/constructor.https.html.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::validateMerchant): Passed the payment method identifier
        (as a string) to MerchantValidationEvent::create()
        * Modules/paymentrequest/MerchantValidationEvent.cpp:
        (WebCore::MerchantValidationEvent::create): Validated the methodName before constructing the
        event, throwing a RangeError on failure.
        (WebCore::MerchantValidationEvent::MerchantValidationEvent):
        * Modules/paymentrequest/MerchantValidationEvent.h:
        * Modules/paymentrequest/MerchantValidationEvent.idl:

2018-10-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Remove WebAnimation::description()
        https://bugs.webkit.org/show_bug.cgi?id=190995

        Reviewed by Dean Jackson.

        This method is never used.

        * animation/WebAnimation.cpp:
        (WebCore::WebAnimation::description): Deleted.
        * animation/WebAnimation.h:

2018-10-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Move the logic of Document::getAnimations() to DocumentTimeline
        https://bugs.webkit.org/show_bug.cgi?id=190994

        Reviewed by Dean Jackson.

        It would be cleaner to have the logic of document.getAnimations() on the DocumentTimeline instead of the Document, keep more
        animation-related code compartmentalized in the animation directory. No change in behavior, so no test update.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::getAnimations const):
        * animation/DocumentTimeline.h:
        * dom/Document.cpp:
        (WebCore::Document::getAnimations):

2018-10-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Move bindings methods requiring style flush from CSSAnimation to DeclarativeAnimation
        https://bugs.webkit.org/show_bug.cgi?id=190996

        Reviewed by Dean Jackson.

        Moving all of the IDL bindings methods that require flushing style from CSSAnimation to its superclass
        DeclarativeAnimation so we follow the same route in CSSTransition. Note that there was code in
        CSSAnimation::bindingsCurrentTime() that was not moved as it proved to not be necessary.

        * animation/CSSAnimation.cpp:
        (WebCore::CSSAnimation::bindingsPlay):
        (WebCore::CSSAnimation::bindingsPause):
        (WebCore::CSSAnimation::bindingsStartTime const): Deleted.
        (WebCore::CSSAnimation::setBindingsStartTime): Deleted.
        (WebCore::CSSAnimation::bindingsCurrentTime const): Deleted.
        (WebCore::CSSAnimation::setBindingsCurrentTime): Deleted.
        (WebCore::CSSAnimation::bindingsPlayState const): Deleted.
        (WebCore::CSSAnimation::bindingsPending const): Deleted.
        (WebCore::CSSAnimation::bindingsReady): Deleted.
        (WebCore::CSSAnimation::bindingsFinished): Deleted.
        (WebCore::CSSAnimation::flushPendingStyleChanges const): Deleted.
        * animation/CSSAnimation.h:
        * animation/DeclarativeAnimation.cpp:
        (WebCore::DeclarativeAnimation::bindingsStartTime const):
        (WebCore::DeclarativeAnimation::setBindingsStartTime):
        (WebCore::DeclarativeAnimation::bindingsCurrentTime const):
        (WebCore::DeclarativeAnimation::setBindingsCurrentTime):
        (WebCore::DeclarativeAnimation::bindingsPlayState const):
        (WebCore::DeclarativeAnimation::bindingsPending const):
        (WebCore::DeclarativeAnimation::bindingsReady):
        (WebCore::DeclarativeAnimation::bindingsFinished):
        (WebCore::DeclarativeAnimation::bindingsPlay):
        (WebCore::DeclarativeAnimation::bindingsPause):
        (WebCore::DeclarativeAnimation::flushPendingStyleChanges const):
        * animation/DeclarativeAnimation.h:

2018-10-27  Charlie Turner  <cturner@igalia.com>

        [EME] Add a logging macro
        https://bugs.webkit.org/show_bug.cgi?id=190984

        Reviewed by Xabier Rodriguez-Calvar.

        No tests since no new functionality.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::MediaKeySession):
        (WebCore::MediaKeySession::generateRequest):
        (WebCore::MediaKeySession::update):
        (WebCore::MediaKeySession::close):
        (WebCore::MediaKeySession::remove):
        (WebCore::MediaKeySession::sessionClosed):
        * Modules/encryptedmedia/MediaKeys.cpp:
        (WebCore::MediaKeys::createSession):
        * Modules/encryptedmedia/NavigatorEME.cpp:
        (WebCore::NavigatorEME::requestMediaKeySystemAccess):
        * platform/Logging.h:

2018-10-27  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME] Post key received to bus should be done before waking up other threads
        https://bugs.webkit.org/show_bug.cgi?id=190822

        Reviewed by Philippe Normand.

        Notify after posting message to bus.

        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptSinkEventHandler):

2018-10-27  Charlie Turner  <cturner@igalia.com>

        Fix release build with -DLOG_DISABLED=0
        https://bugs.webkit.org/show_bug.cgi?id=190866

        Reviewed by Xabier Rodriguez-Calvar.

        No new tests since no functionality changed.

        * platform/graphics/Font.cpp:
        * platform/graphics/Font.h:
        * platform/graphics/FontPlatformData.h:
        * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
        * platform/graphics/freetype/FontPlatformDataFreeType.cpp:
        * platform/graphics/win/FontPlatformDataWin.cpp:

2018-10-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237458.
        https://bugs.webkit.org/show_bug.cgi?id=190973

        broke internal iOS builds (Requested by zalan on #webkit).

        Reverted changeset:

        "Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI"
        https://bugs.webkit.org/show_bug.cgi?id=190951
        https://trac.webkit.org/changeset/237458

2018-10-26  Antoine Quint  <graouts@apple.com>

        [Web Animations] Remove useless internals methods
        https://bugs.webkit.org/show_bug.cgi?id=190968

        Reviewed by Dean Jackson.

        We had a few internals methods added early on in the Web Animations implementation that are no longer
        relevant now that the full API is implemented. We can safely remove them now.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::setCurrentTime): Deleted.
        (WebCore::AnimationTimeline::description): Deleted.
        * animation/AnimationTimeline.h:
        (WebCore::AnimationTimeline::currentTime):
        (WebCore::AnimationTimeline::pause): Deleted.
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::currentTime):
        (WebCore::DocumentTimeline::pause): Deleted.
        * animation/DocumentTimeline.h:
        * testing/Internals.cpp:
        (WebCore::Internals::timelineDescription): Deleted.
        (WebCore::Internals::pauseTimeline): Deleted.
        (WebCore::Internals::setTimelineCurrentTime): Deleted.
        * testing/Internals.h:
        * testing/Internals.idl:

2018-10-26  Antoine Quint  <graouts@apple.com>

        Web Inspector: Crash in http/tests/inspector/network/resource-response-source-memory-cache-revalidate-expired-only.html
        https://bugs.webkit.org/show_bug.cgi?id=190955

        Reviewed by Dean Jackson.

        We can get in situations when running tests where runtime flags are not consistent throughout the time a test is run since
        showing the Web Inspector can cause flags to be re-set after the initial test was loaded. As such, to avoid crashes due to
        the ASSERT(!frame().animation().hasAnimations()) in FrameView::didDestroyRenderTree(), we now cancel animations upon teardown
        no matter what the value of the runtime flag for the Web Animations CSS Integration on both the DocumentTimeline (if it exists)
        and the CSSAnimationController.

        * dom/Element.cpp:
        (WebCore::Element::removedFromAncestor):
        * dom/PseudoElement.cpp:
        (WebCore::PseudoElement::clearHostElement):
        * page/FrameView.cpp:
        (WebCore::FrameView::didDestroyRenderTree):
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::tearDownRenderers):

2018-10-26  Timothy Hatcher  <timothy@apple.com>

        Use dark appearance scrollbar when page background is dark or document supports dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=190937
        rdar://problem/41225839

        Reviewed by Beth Dakin.

        * page/FrameView.cpp:
        (WebCore::FrameView::useDarkAppearance const): Added. Ask the document.
        (WebCore::FrameView::paintScrollCorner): Set LocalDefaultSystemAppearance based
        on the scrollbar overlay style too.
        * page/FrameView.h:
        * platform/ScrollableArea.h:
        (WebCore::ScrollableArea::useDarkAppearance const): Added. Default to false.
        * platform/mac/ScrollAnimatorMac.mm:
        (-[WebScrollerImpDelegate effectiveAppearanceForScrollerImp:]): Added.
        Ask the ScrollableArea if a dark appearance is desired.

2018-10-26  Antti Koivisto  <antti@apple.com>

        Use random() instead of begin() to limit cache sizes
        https://bugs.webkit.org/show_bug.cgi?id=190957

        Reviewed by Chris Dumez.

        We currently use cache.remove(cache.begin()) pattern to limit sized of various caches.
        This is a bad pattern for tables that never rehash (because they have fixed maximum size) as most of the
        keys get permanently stuck in the table.

        * css/CSSValuePool.cpp:
        (WebCore::CSSValuePool::createColorValue):
        (WebCore::CSSValuePool::createFontFamilyValue):
        (WebCore::CSSValuePool::createFontFaceValue):
        * dom/InlineStyleSheetOwner.cpp:
        (WebCore::InlineStyleSheetOwner::createSheet):
        * dom/SelectorQuery.cpp:
        * platform/graphics/FontCascade.cpp:
        (WebCore::retrieveOrAddCachedFonts):
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::shouldAutoActivateFontIfNeeded):
        * platform/mac/PublicSuffixMac.mm:
        (WebCore::topPrivatelyControlledDomain):

2018-10-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Request the correct route policy and context from the VideoFullscreenModel.

        * platform/cocoa/VideoFullscreenModel.h:
        (WebCore::VideoFullscreenModel::requestRouteSharingPolicyAndContextUID):
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (WebCore::VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID):
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewController setWebKitOverrideRouteSharingPolicy:routingContextUID:]):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
        (VideoFullscreenInterfaceAVKit::doSetup):

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add more inline information to outputLayoutTree
        https://bugs.webkit.org/show_bug.cgi?id=190945

        Reviewed by Antti Koivisto.

        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):
        (WebCore::Layout::outputLayoutBox):

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Layout floats as part of the inline content
        https://bugs.webkit.org/show_bug.cgi?id=190942

        Reviewed by Antti Koivisto.

        Add float handling to InlineFormattingContext::layoutInlineContent.
        Note that floats don't actually generate inline runs.

        Test: fast/block/basic/inline-content-with-floating-image.html

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
        * layout/floats/FloatAvoider.cpp:
        (WebCore::Layout::FloatAvoider::FloatAvoider): Check if any mapping is needed.
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::isTrimmableContent):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::trimLeadingRun): Deleted.
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::isClosed const):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalRight):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Adjust current line with float constraints.
        https://bugs.webkit.org/show_bug.cgi?id=190940

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::moveHorizontally):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::Line::adjustLogicalRight):

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Compute float box size and position
        https://bugs.webkit.org/show_bug.cgi?id=190938

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeight const):
        (WebCore::Layout::InlineFormattingContext::computeFloatPosition const):
        * layout/inlineformatting/InlineFormattingContext.h:

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add line logical top and bottom
        https://bugs.webkit.org/show_bug.cgi?id=190934

        Reviewed by Antti Koivisto.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::initializeNewLine const):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::isFirstLine const):
        (WebCore::Layout::InlineFormattingContext::Line::logicalTop const):
        (WebCore::Layout::InlineFormattingContext::Line::logicalBottom const):
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight):
        (WebCore::Layout::InlineFormattingContext::Line::close):

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Find floating constraints for a given vertical position
        https://bugs.webkit.org/show_bug.cgi?id=190928

        Reviewed by Antti Koivisto.

        https://www.w3.org/TR/CSS22/visuren.html#inline-formatting

        "In general, the left edge of a line box touches the left edge of its containing block and the right edge touches the right edge of its containing block.
        However, floating boxes may come between the containing block edge and the line box edge.
        Thus, although line boxes in the same inline formatting context generally have the same width
        (that of the containing block), they may vary in width if available horizontal space is reduced due to floats."

        This patch adds support for retrieving left/right constraints for a given line (vertical position).

        * layout/floats/FloatingState.cpp:
        (WebCore::Layout::FloatingState::constraints const):
        * layout/floats/FloatingState.h:

2018-10-26  Zalan Bujtas  <zalan@apple.com>

        [LFC] Inline formatting context has higher priority than block
        https://bugs.webkit.org/show_bug.cgi?id=190924

        Reviewed by Antti Koivisto.

        When an element establishes both inline and block formatting contexts, we need to pick one to
        create (and we choose the content driven formatting type (inline)). See example below:

        <div style="overflow: hidden">This text should be inside an inlines formatting context.</div>

        * layout/LayoutContext.cpp:
        (WebCore::Layout::LayoutContext::formattingContext const):

2018-10-26  Ali Juma  <ajuma@chromium.org>

        REGRESSION (r237255): Text selection is broken in form fields
        https://bugs.webkit.org/show_bug.cgi?id=190899

        Reviewed by Ryosuke Niwa.

        Fix missing negation when checking for a fully-clipped-out rect. This was causing
        RenderObject::computeVisibleRectInContainer to incorrectly early-out.

        Test: fast/repaint/text-selection-overflow-hidden.html

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::computeVisibleRectInContainer const):

2018-10-25  Chris Dumez  <cdumez@apple.com>

        [PSON] Navigating cross-site with locked history but unlocked back/forward list fails to create a new BackForwardListItem
        https://bugs.webkit.org/show_bug.cgi?id=190915
        <rdar://problem/45059069>

        Reviewed by Geoffrey Garen.

        * history/PageCache.cpp:
        (WebCore::canCacheFrame):
        Make sure we do not put into PageCache a page whose main frame is showing the initial empty document.
        We usually do not try to put those into PageCache because we do not have a HistoryItem to save the
        PageCache entry on. However, when we process-swap on a navigation with the history locked, the new
        process has a HistoryItem and is initially showing the initial empty document before continuing
        the load from the previous process. Note that saving the initial empty document in PageCache would
        lead to crashes later on previous the initial empty document's Window is taken and reused for the
        next load.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::load):
        Stop assuming that we're continuing a client-side redirect when lockHistory is Yes. It is
        lockBackForwardList that is actually Yes when we're doing a client-side redirect.

        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        Stop using calling the completion handler with an invalid URL when the policy decision is 'Suspend' and
        use 'about:blank' instead. Without this change, FrameLoader::continueLoadAfterNavigationPolicy() would
        not load 'about:blank' when its AllowNavigationToInvalidURL parameter is No.

2018-10-25  Devin Rousso  <drousso@apple.com>

        Fix build after r237431 for platforms that don't support FULLSCREEN_API

        Reviewed by Joseph Pecoraro.

        No new tests. No change in behavior.

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::addEventListenersToNode):

2018-10-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: display fullscreen enter/exit events in Timelines and Network node waterfalls
        https://bugs.webkit.org/show_bug.cgi?id=189874
        <rdar://problem/44700000>

        Reviewed by Joseph Pecoraro.

        Updated existing test: http/tests/inspector/dom/didFireEvent.html

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::EventFiredCallback::handleEvent):
        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
        (WebCore::InspectorDOMAgent::addEventListenersToNode):
        (WebCore::InspectorDOMAgent::discardBindings):
        (WebCore::InspectorDOMAgent::eventDidResetAfterDispatch): Added.
        Prevent the same event from being sent to the frontend more than once.

        * dom/Event.cpp:
        (WebCore::Event::resetAfterDispatch):

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

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::eventDidResetAfterDispatch): Added.
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::eventDidResetAfterDispatchImpl): Added.

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence a -Wreturn-type warning

        When every return is supposed to be covered by a switch statement, a release assert or CRASH
        is required by GCC.

        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
        (WebCore::LibWebRTCCertificateGenerator::keyParamsFromCertificateType):

2018-10-25  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations CSS Integration off by default
        https://bugs.webkit.org/show_bug.cgi?id=190901

        Reviewed by Dean Jackson.

        * page/RuntimeEnabledFeatures.h:

2018-10-25  Jon Davis  <jond@apple.com>

        Changed "Under Development" status to use "In Development" instead
        https://bugs.webkit.org/show_bug.cgi?id=187615

        Reviewed by Joseph Pecoraro.

        * features.json: Updated CSS Painting API Level 1 and CSS Properties and Values API Level 1.

2018-10-25  Chris Dumez  <cdumez@apple.com>

        REGRESSION (236779) scandinaviandesigns.com product pages auto redirect to product image
        https://bugs.webkit.org/show_bug.cgi?id=190891
        <rdar://problem/45296796>

        Reviewed by Antti Koivisto.

        When a radio element gets clicked, we should only fire the 'input' and 'change' if the checked state
        of the radio element has changed.

        Test: fast/dom/HTMLInputElement/radio-element-fires-change-event-only-when-checked-state-changes.html

        * html/RadioInputType.cpp:
        (WebCore::RadioInputType::didDispatchClick):

2018-10-25  Joseph Pecoraro  <pecoraro@apple.com>

        InspectorCanvas is not getting cleared properly for OffscreenCanvas
        https://bugs.webkit.org/show_bug.cgi?id=190894
        <rdar://problem/45498435>

        Reviewed by Simon Fraser.

        Covered by existing tests not crashing with guard malloc.

        InspectorCanvasAgents tracks all CanvasRenderingContexts and needs to
        remove its reference when the containing CanvasBase goes away. It does
        this by registering as a notification observer, but if it can't map
        from the CanvasBase back to the rendering context we were failing to
        remove our reference. Enforce CanvasBase classes to notify observers
        of destruction while they still have their CanvasRenderingContext.

        * html/CanvasBase.cpp:
        (WebCore::CanvasBase::~CanvasBase):
        (WebCore::CanvasBase::notifyObserversCanvasDestroyed):
        * html/CanvasBase.h:
        Assert that subclasses notify observers of the canvas being destroyed,
        since they will need to do this before m_context is cleared.

        * html/CustomPaintCanvas.cpp:
        (WebCore::CustomPaintCanvas::~CustomPaintCanvas):
        * html/OffscreenCanvas.cpp:
        (WebCore::OffscreenCanvas::~OffscreenCanvas):
        Follow the new expected pattern of notifying observers before clearing
        the context. HTMLCanvasElement already followed this pattern.

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::canvasDestroyed):
        Add an assertion that would catch this earlier.

2018-10-24  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete macOS version guards
        https://bugs.webkit.org/show_bug.cgi?id=190887

        Reviewed by Dan Bernstein.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::maximumDurationToCacheMediaTime const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::didPassCORSAccessCheck const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wouldTaintOrigin const):

2018-10-24  Tim Horton  <timothy_horton@apple.com>

        Attachment filenames with RTL characters should format similar to Finder
        https://bugs.webkit.org/show_bug.cgi?id=190736
        <rdar://problem/44735946>

        Reviewed by Dan Bernstein.

        Test: fast/attachment/attachment-title-with-rtl.html

        * html/HTMLAttachmentElement.cpp:
        (WebCore::HTMLAttachmentElement::attachmentTitleForDisplay const):
        * html/HTMLAttachmentElement.h:
        Add attachmentTitleForDisplay(), which wraps the non-extension part of
        attachmentTitle in BiDi isolates, matching Finder's behavior.

        * rendering/RenderThemeIOS.mm:
        (WebCore::RenderAttachmentInfo::buildWrappedLines):
        (WebCore::RenderAttachmentInfo::RenderAttachmentInfo):
        * rendering/RenderThemeMac.mm:
        (WebCore::AttachmentLayout::layOutTitle):
        Adopt attachmentTitleForDisplay, and ask CoreText to use a subrange of
        the original string for the last line, instead of splitting the string
        ourselves. This ensures that BiDi control characters are respected
        even in the last line of the string.

2018-10-24  Megan Gardner  <megan_gardner@apple.com>

        Turn on Conic Gradients
        https://bugs.webkit.org/show_bug.cgi?id=190810

        Reviewed by Tim Horton.

        Added tests previously, only switching feature from experimental to always avaiable.

        * Configurations/FeatureDefines.xcconfig:
        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        (WebCore::operator==):
        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContextHash::hash):
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeConicGradient):
        * page/Settings.yaml:

2018-10-11  Jiewen Tan  <jiewen_tan@apple.com>

        Only report resource timing to parent frame for the first iframe load
        https://bugs.webkit.org/show_bug.cgi?id=190498
        <rdar://problem/44347398>

        Reviewed by Youenn Fablet.

        Only the first iframe navigation or the first iframe navigation after about:blank should be reported.
        https://www.w3.org/TR/resource-timing-2/#resources-included-in-the-performanceresourcetiming-interface

        Test: http/tests/misc/resource-timing-navigation-in-restored-iframe.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadWithDocumentLoader):
        * loader/FrameLoader.h:
        (WebCore::FrameLoader::shouldReportResourceTimingToParentFrame):
        (WebCore::FrameLoader::setShouldReportResourceTimingToParentFrame): Deleted.
        * loader/ResourceTimingInformation.cpp:
        (WebCore::ResourceTimingInformation::addResourceTiming):

2018-10-24  Brent Fulgham  <bfulgham@apple.com>

        Cure Windows Direct2D Backend of a nasty case of bitrot
        https://bugs.webkit.org/show_bug.cgi?id=190875
        <rdar://problem/45523268>
        
        Reviewed by Zalan Bujtas.

        The Direct2D backend has drifted out of date with the rest of WebKit.
        This patch updates things so we can get a runnable build.
        
        * platform/graphics/FontPlatformData.h:
        * platform/graphics/ImageBuffer.cpp:
        (WebCore::ImageBuffer::create):
        * platform/graphics/ImageBuffer.h:
        * platform/graphics/ImageDecoder.h:
        * platform/graphics/ImageSource.cpp:
        (WebCore::ImageSource::setTargetContext):
        * platform/graphics/opentype/OpenTypeMathData.cpp:
        (WebCore::OpenTypeMathData::OpenTypeMathData): Need non-default constructor to make Visual
        Studio happy.
        * platform/graphics/win/GradientDirect2D.cpp:
        (WebCore::Gradient::generateGradient):
        * platform/graphics/win/GraphicsContextDirect2D.cpp: Update for new display list implementation.
        (WebCore::GraphicsContextPlatformPrivate::setAlpha):
        (WebCore::GraphicsContext::savePlatformState):
        (WebCore::GraphicsContext::restorePlatformState):
        (WebCore::GraphicsContext::drawNativeImage):
        (WebCore::GraphicsContext::drawPattern):
        (WebCore::GraphicsContext::drawRect):
        (WebCore::GraphicsContext::drawLine):
        (WebCore::GraphicsContext::drawEllipse):
        (WebCore::GraphicsContext::drawPath):
        (WebCore::GraphicsContext::fillPath):
        (WebCore::GraphicsContext::strokePath):
        (WebCore::GraphicsContext::fillRect):
        (WebCore::GraphicsContext::platformFillRoundedRect):
        (WebCore::GraphicsContext::fillRectWithRoundedHole):
        (WebCore::GraphicsContext::clip):
        (WebCore::GraphicsContext::clipOut):
        (WebCore::GraphicsContext::clipPath):
        (WebCore::GraphicsContext::clipBounds const):
        (WebCore::GraphicsContext::beginPlatformTransparencyLayer):
        (WebCore::GraphicsContext::endPlatformTransparencyLayer):
        (WebCore::GraphicsContext::setMiterLimit):
        (WebCore::GraphicsContext::clearRect):
        (WebCore::GraphicsContext::strokeRect):
        (WebCore::GraphicsContext::setLineCap):
        (WebCore::GraphicsContext::setLineDash):
        (WebCore::GraphicsContext::setLineJoin):
        (WebCore::GraphicsContext::scale):
        (WebCore::GraphicsContext::rotate):
        (WebCore::GraphicsContext::translate):
        (WebCore::GraphicsContext::concatCTM):
        (WebCore::GraphicsContext::setCTM):
        (WebCore::GraphicsContext::getCTM const):
        (WebCore::GraphicsContext::roundToDevicePixels):
        (WebCore::GraphicsContext::drawLinesForText):
        (WebCore::GraphicsContext::setURLForRect):
        (WebCore::GraphicsContext::setIsCALayerContext):
        (WebCore::GraphicsContext::isCALayerContext const):
        (WebCore::GraphicsContext::setIsAcceleratedContext):
        (WebCore::GraphicsContext::isAcceleratedContext const):
        (WebCore::GraphicsContext::setPlatformShouldAntialias):
        (WebCore::GraphicsContext::setPlatformShouldSmoothFonts):
        (WebCore::GraphicsContext::setPlatformCompositeOperation):
        (WebCore::GraphicsContext::platformFillEllipse):
        (WebCore::GraphicsContext::platformStrokeEllipse):
        * platform/graphics/win/GraphicsLayerDirect2D.cpp:
        (WebCore::GraphicsLayer::create):
        (): Deleted.
        * platform/graphics/win/ImageBufferDataDirect2D.cpp:
        (WebCore::ImageBufferData::putData):
        * platform/graphics/win/ImageBufferDataDirect2D.h:
        * platform/graphics/win/ImageBufferDirect2D.cpp:
        (WebCore::ImageBuffer::createCompatibleBuffer):
        (WebCore::ImageBuffer::ImageBuffer):
        * platform/graphics/win/ImageDecoderDirect2D.cpp:
        (WebCore::ImageDecoderDirect2D::bytesDecodedToDetermineProperties const):
        (WebCore::ImageDecoderDirect2D::encodedDataStatus const):
        (WebCore::ImageDecoderDirect2D::repetitionCount const):
        (WebCore::ImageDecoderDirect2D::frameOrientationAtIndex const):
        (WebCore::ImageDecoderDirect2D::frameDurationAtIndex const):
        (WebCore::ImageDecoderDirect2D::frameAllowSubsamplingAtIndex const):
        (WebCore::ImageDecoderDirect2D::frameHasAlphaAtIndex const):
        (WebCore::ImageDecoderDirect2D::createFrameImageAtIndex):
        (WebCore::ImageDecoderDirect2D::setData):
        (WebCore::ImageDecoderDirect2D::bytesDecodedToDetermineProperties): Deleted.
        (WebCore::ImageDecoderDirect2D::createFrameImageAtIndex const): Deleted.
        * platform/graphics/win/ImageDecoderDirect2D.h:
        * platform/graphics/win/ImageDirect2D.cpp:
        (WebCore::BitmapImage::drawFrameMatchingSourceSize):
        * platform/graphics/win/PatternDirect2D.cpp:
        (WebCore::Pattern::createPlatformPattern const):

2018-10-24  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Cleanup: MIMETypeRegistry functions
        https://bugs.webkit.org/show_bug.cgi?id=190838

        Reviewed by Simon Fraser.

        Modernize the initialization of the lists in MIMETypeRegistry. Make the
        functions that return these list be self-contained. Use NeverDestroy<> to
        allocate the local static variable. Use std::initializer_list() and
        makeNeverDestroyed() to initialize NeverDestroy<> variables only once.

        supportedImageResourceMIMETypes will be deleted and all the calls to it 
        will be replaced by supportedImageMIMETypes because they are identical.

        * loader/archive/ArchiveFactory.cpp:
        (WebCore::ArchiveFactory::registerKnownArchiveMIMETypes): This function
        is called while initializing the supportedNonImageMIMETypes(). So it
        should not have a direct call to it. Instead, supportedNonImageMIMETypes
        is passed to it.
        * loader/archive/ArchiveFactory.h:
        * platform/MIMETypeRegistry.cpp:
        (WebCore::MIMETypeRegistry::supportedImageMIMETypes):
        (WebCore::supportedImageMIMETypesForEncoding):
        (WebCore::supportedJavaScriptMIMETypes):
        (WebCore::MIMETypeRegistry::supportedNonImageMIMETypes):
        (WebCore::MIMETypeRegistry::supportedMediaMIMETypes):
        (WebCore::pdfMIMETypes):
        (WebCore::MIMETypeRegistry::unsupportedTextMIMETypes):
        (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
        (WebCore::MIMETypeRegistry::isSupportedImageMIMETypeForEncoding):
        (WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType):
        (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
        (WebCore::MIMETypeRegistry::isSupportedMediaMIMEType):
        (WebCore::MIMETypeRegistry::isUnsupportedTextMIMEType):
        (WebCore::MIMETypeRegistry::isPDFMIMEType):
        (WebCore::MIMETypeRegistry::systemPreviewMIMETypes):
        (WebCore::MIMETypeRegistry::isSystemPreviewMIMEType):
        (WebCore::initializeSupportedImageMIMETypes): Deleted.
        (WebCore::initializeSupportedImageMIMETypesForEncoding): Deleted.
        (WebCore::initializeSupportedJavaScriptMIMETypes): Deleted.
        (WebCore::initializePDFMIMETypes): Deleted.
        (WebCore::initializeSupportedNonImageMimeTypes): Deleted.
        (WebCore::initializeSupportedMediaMIMETypes): Deleted.
        (WebCore::initializeUnsupportedTextMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType): Deleted.
        (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getSupportedMediaMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getPDFMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getUnsupportedTextMIMETypes): Deleted.
        (WebCore::MIMETypeRegistry::getSystemPreviewMIMETypes): Deleted.
        * platform/MIMETypeRegistry.h:
        * platform/graphics/Image.cpp:
        (WebCore::Image::supportsType):
        * platform/graphics/cg/ImageDecoderCG.cpp:
        (WebCore::ImageDecoderCG::encodedDataStatus const):
        * platform/graphics/cg/UTIRegistry.cpp:
        (WebCore::supportedDefaultImageSourceTypes):
        (WebCore::isSupportImageSourceType):
        (WebCore::allowedImageUTIs): Deleted.
        (WebCore::isAllowedImageUTI): Deleted.
        * platform/graphics/cg/UTIRegistry.h:
        * platform/mac/PasteboardMac.mm:
        (WebCore::Pasteboard::write):

2018-10-24  Chris Dumez  <cdumez@apple.com>

        [PSON] When navigating back and forth, 'about:blank' shows up in the back/forward list
        https://bugs.webkit.org/show_bug.cgi?id=190846
        <rdar://problem/45058938>

        Reviewed by Antti Koivisto.

        When a page gets suspended after a process-swap, we navigate it to about:blank from inside the navigation
        policy handler, by overriding the request URL. This normally works fine because we usually process-swap
        on standard navigation. However, when we would process-swap on a back/forward navigation, we would end
        up using the back/forward navigation load type to do the about:blank load. This would have repercussions
        because history navigations update the current history item with the new URL (in this case 'about:blank').
        To avoid the issue, switch to a standard load type whenever the client asks us to suspend and we load
        'about:blank' as a result.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):

2018-10-24  Andy Estes  <aestes@apple.com>

        [macOS Debug WK2] Layout Test http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=190650
        <rdar://problem/45341914>

        Reviewed by Alex Christensen.

        In computeErrors, we intend to ignore errors when computing paymentMethodErrors. But we
        weren't clearing exceptions generated from calling convert(), so they would end up being
        logged as unhandled promise rejections.

        Changed ApplePayPaymentHandler::computeErrors() to use a CatchScope to clear exceptions when
        decoding paymentMethodErrors.

        Also changed ApplePayShippingAddressChangeEventErrorsV3.https.html to catch promise
        rejections from calling PaymentRequest.abort().

        Covered by existing test.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::computeErrors const):

2018-10-22  Antti Koivisto  <antti@apple.com>

        topPrivatelyControlledDomain is slow
        https://bugs.webkit.org/show_bug.cgi?id=190792

        Reviewed by Alex Christensen and Chris Dumez.

        It calls into some slowish CFNetwork code and ends up showing up in profiles.

        * platform/mac/PublicSuffixMac.mm:
        (WebCore::topPrivatelyControlledDomain):

        Add a cache that avoids calls into frameworks.

2018-10-22  Jer Noble  <jer.noble@apple.com>

        Use WeakPtr and GenericTaskQueue within ObjC classes used by MediaPlayerPrivateAVFoundationObjC
        https://bugs.webkit.org/show_bug.cgi?id=190790

        Reviewed by Alex Christensen.

        Move towards using WeakPtr callbacks instead of raw pointers within the utility objects used by
        MediaPlayerPrivateAVFoundationObjC. Additionally, accessing WeakPtr off the thread which created
        the pointer is not allowed, so use a GenericTaskQueue to schedule callbacks instead. Make 
        GenericTaskQueue<Timer> thread-safe by locking around access to m_pendingTasks, and by making 
        incrementing the pending task count atomic.

        * platform/GenericTaskQueue.cpp:
        (WebCore::TaskDispatcher<Timer>::postTask):
        (WebCore::TaskDispatcher<Timer>::sharedLock):
        (WebCore::TaskDispatcher<Timer>::sharedTimerFired):
        (WebCore::TaskDispatcher<Timer>::dispatchOneTask):
        (WebCore::TaskDispatcher<Timer>::pendingDispatchers):
        * platform/GenericTaskQueue.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
        (-[WebCoreAVFMovieObserver initWithPlayer:]):
        (-[WebCoreAVFMovieObserver disconnect]):
        (-[WebCoreAVFMovieObserver metadataLoaded]):
        (-[WebCoreAVFMovieObserver didEnd:]):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
        (-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
        (-[WebCoreAVFLoaderDelegate initWithPlayer:]):
        (-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
        (-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):
        (-[WebCoreAVFPullDelegate initWithPlayer:]):
        (-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
        (-[WebCoreAVFMovieObserver initWithCallback:]): Deleted.
        (-[WebCoreAVFLoaderDelegate initWithCallback:]): Deleted.
        (-[WebCoreAVFLoaderDelegate setCallback:]): Deleted.
        (-[WebCoreAVFPullDelegate initWithCallback:]): Deleted.
        (-[WebCoreAVFPullDelegate setCallback:]): Deleted.

2018-10-23  Jer Noble  <jer.noble@apple.com>

        TextTrack cues should be updated more often than every 250ms.
        https://bugs.webkit.org/show_bug.cgi?id=190827

        Reviewed by Eric Carlson.

        Test: media/track/track-cue-timing.html

        TextTracks cues are recalculated on the playback timer, which fires at least every 250ms.
        In addition to this timer, add a method to MediaPlayer to provide a task which will be
        performed at a particular media time, and use this new method to request cues be updated
        at the next interesting media time. The next interesting time would be either when the
        soonest current cue will end, or when the next non-current cue will start, whichever is
        earlier.

        (Determining the "next non-current cue" requires new API on PODIntervalTree, as that class
        does not have iterators per-se.)

        * html/HTMLMediaElement.cpp:
        (WebCore::compareCueIntervalEndTime):
        (WebCore::HTMLMediaElement::updateActiveTextTrackCues):
        * platform/PODIntervalTree.h:
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::performTaskAtMediaTime):
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/MediaPlayerPrivate.h:
        (WebCore::MediaPlayerPrivateInterface::performTaskAtMediaTime):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::performTaskAtMediaTime):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::performTaskAtMediaTime):

2018-10-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Assertion fails while destructing local static AtomicString of FontCache::lastResortFallbackFont
        https://bugs.webkit.org/show_bug.cgi?id=190748

        Reviewed by Myles C. Maxfield.

        FontCache::lastResortFallbackFont had local static AtomicString
        variables which are not capsuled by NeverDestroyed. Hence, those
        variables are destructed on IPC thread when WebProcess exits.

        Changed those AtomicString to NeverDestroyed<AtomicString> not to
        be destructed on exit.

        This change can't be tested automatically because WebKitTestRunner
        doesn't support Windows port yet.

        * platform/graphics/win/FontCacheWin.cpp:
        (WebCore::FontCache::lastResortFallbackFont): Changed
        fallbackFonts's type from AtomicString array to
        NeverDestroyed<AtomicString> array.

2018-10-23  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Rename old GPU* implementation files to GPULegacy* for WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190817

        Reviewed by Dean Jackson.

        No new tests. No change in behavior.

        * [Large list of refactored classes and renamed files]: GPU* is now GPULegacy*

2018-10-23  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237261.

        The layout test for this change crashes under GuardMalloc.

        Reverted changeset:

        "Handle MDNS resolution of candidates through libwebrtc
        directly"
        https://bugs.webkit.org/show_bug.cgi?id=190681
        https://trac.webkit.org/changeset/237261

2018-10-23  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r237357.

        API test is now failing on all platforms.

        Reverted changeset:

        "topPrivatelyControlledDomain is slow"
        https://bugs.webkit.org/show_bug.cgi?id=190792
        https://trac.webkit.org/changeset/237357

2018-10-23  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r237350.

        Caused several Crashes cross multiple tests and platforms.

        Reverted changeset:

        "Use WeakPtr and GenericTaskQueue within ObjC classes used by
        MediaPlayerPrivateAVFoundationObjC"
        https://bugs.webkit.org/show_bug.cgi?id=190790
        https://trac.webkit.org/changeset/237350

2018-10-23  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237280.

        Causes fast/box-shadow/box-shadow-with-zero-radius.html to
        fail on iOS Simulator.

        Reverted changeset:

        "[CG] Adopt CG SPI for non-even cornered rounded rects"
        https://bugs.webkit.org/show_bug.cgi?id=190155
        https://trac.webkit.org/changeset/237280

2018-10-23  Antti Koivisto  <antti@apple.com>

        topPrivatelyControlledDomain is slow
        https://bugs.webkit.org/show_bug.cgi?id=190792

        Reviewed by Alex Christensen.

        It calls into some slowish CFNetwork code and ends up showing up in profiles.

        * platform/mac/PublicSuffixMac.mm:
        (WebCore::topPrivatelyControlledDomain):

        Add a cache that avoids calls into frameworks.

2018-10-23  Chris Dumez  <cdumez@apple.com>

        [PSON] Add support for cross-site client-side redirects
        https://bugs.webkit.org/show_bug.cgi?id=190806
        <rdar://problem/45047344>

        Reviewed by Geoffrey Garen.

        Add support for cross-site client-side redirects so that it swaps process and so that the back
        forward list looks as expected. To support this, the following changes had to be done:
        - The NavigationAction now provides additional information so that the WebProcess can communicate
          things about the client-side redirect to the UIProcess: lockHistory / lockBackForwardList and
          clientRedirectSourceForHistory.
        - If the UIProcess decides to process-swap on a client-side redirect, we pass the client-side
          redirect information to the new WebContent process via LoadRequest struct. WebCore then takes
          care of setting things up using this information so that it recognizes that it is continuing
          a load that is a client side redirect.
        - We also need to pass the current BackForwardListItem / HistoryItem to the new WebContent
          process so that the new process can truly lock history and keep updating the *current*
          HistoryItem, instead of creating a new HistoryItem.
        - After a process swap, when we re-construct the WebFrameProxy for the main frame in the new
          process, we now set the frame's URL in the UIProcess to the URL it had before we swapped.
          Clients such as Safari, rely on the main frame's URL being the expected value (the last
          committed load URL) until the next load is committed when receiving didPerformRedirect
          calls. Because we are destroying the main frame on process-swapping, we were losing the
          last committed URL and Safari would hit assertions.

        With this model, the willPerformClientRedirect IPC is still sent from the previous WebProcess
        and the didPerformClientRedirect IPC is now sent by the new WebProcess. No change should be
        observable from the client's point of view.

        * loader/FrameLoadRequest.h:
        (WebCore::FrameLoadRequest::setLockHistory):
        (WebCore::FrameLoadRequest::setlockBackForwardList):
        (WebCore::FrameLoadRequest::clientRedirectSourceForHistory const):
        (WebCore::FrameLoadRequest::setClientRedirectSourceForHistory):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::load):
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::updateForRedirectWithLockedBackForwardList):
        * loader/HistoryController.h:
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::lockHistory const):
        (WebCore::NavigationAction::setLockHistory):
        (WebCore::NavigationAction::lockBackForwardList const):
        (WebCore::NavigationAction::setLockBackForwardList):

2018-10-23  Jer Noble  <jer.noble@apple.com>

        Use WeakPtr and GenericTaskQueue within ObjC classes used by MediaPlayerPrivateAVFoundationObjC
        https://bugs.webkit.org/show_bug.cgi?id=190790

        Reviewed by Alex Christensen.

        Move towards using WeakPtr callbacks instead of raw pointers within the utility objects used by
        MediaPlayerPrivateAVFoundationObjC. Additionally, accessing WeakPtr off the thread which created
        the pointer is not allowed, so use a GenericTaskQueue to schedule callbacks instead. Make 
        GenericTaskQueue<Timer> thread-safe by locking around access to m_pendingTasks, and by making 
        incrementing the pending task count atomic.

        * platform/GenericTaskQueue.cpp:
        (WebCore::TaskDispatcher<Timer>::postTask):
        (WebCore::TaskDispatcher<Timer>::sharedLock):
        (WebCore::TaskDispatcher<Timer>::sharedTimerFired):
        (WebCore::TaskDispatcher<Timer>::dispatchOneTask):
        (WebCore::TaskDispatcher<Timer>::pendingDispatchers):
        * platform/GenericTaskQueue.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
        (-[WebCoreAVFMovieObserver initWithPlayer:]):
        (-[WebCoreAVFMovieObserver disconnect]):
        (-[WebCoreAVFMovieObserver metadataLoaded]):
        (-[WebCoreAVFMovieObserver didEnd:]):
        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
        (-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
        (-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
        (-[WebCoreAVFLoaderDelegate initWithPlayer:]):
        (-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
        (-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):
        (-[WebCoreAVFPullDelegate initWithPlayer:]):
        (-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
        (-[WebCoreAVFMovieObserver initWithCallback:]): Deleted.
        (-[WebCoreAVFLoaderDelegate initWithCallback:]): Deleted.
        (-[WebCoreAVFLoaderDelegate setCallback:]): Deleted.
        (-[WebCoreAVFPullDelegate initWithCallback:]): Deleted.
        (-[WebCoreAVFPullDelegate setCallback:]): Deleted.

2018-10-22  Justin Michaud  <justin_michaud@apple.com>

        Registered custom properties should support syntax parameter for <length> and *
        https://bugs.webkit.org/show_bug.cgi?id=190039

        Reviewed by Antti Koivisto.

        Refactor code so that:
        - All properties applied in StyleResolver::applyMatchedProperties are only applied once. 
        - Custom properties are only resolved once, in StyleResolver, when they are applied to the RenderStyle. They were previously resolved
          every time they were referenced, and again in RenderStyle.
        - The font-size property is applied after its variable references, but before custom properties that depend on it.
        - Cycles are detected at the same time as resolution.
        - MutableStyleProperties' custom properties cannot be set from Javascript or WebKitLegacy if they do not parse for the property's type.
          If they contain var(--...) references, however, then they can be set because we cannot check if the references are valid from setProperty.
          This behaviour matches chrome, but is not documented in the spec. 
        - Custom property values have more explicit resolved/unresolved state.
        - RenderStyle only ever holds resolved custom properties, and StyleResolver::CascadedProperties only holds unresolved properties.

        Tests: css-custom-properties-api/crash.html
               css-custom-properties-api/cycles.html
               css-custom-properties-api/inline.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::equals const):
        (WebCore::CSSCustomPropertyValue::customCSSText const):
        (WebCore::CSSCustomPropertyValue::tokens const):
        (WebCore::CSSCustomPropertyValue::checkVariablesForCycles const): Deleted.
        (WebCore::CSSCustomPropertyValue::resolveVariableReferences const): Deleted.
        (WebCore::CSSCustomPropertyValue::setResolvedTypedValue): Deleted.
        * css/CSSCustomPropertyValue.h:
        * css/CSSRegisteredCustomProperty.cpp:
        (WebCore::CSSRegisteredCustomProperty::CSSRegisteredCustomProperty):
        * css/CSSRegisteredCustomProperty.h:
        * css/CSSStyleSheet.h:
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::CSSVariableData):
        (WebCore::CSSVariableData::consumeAndUpdateTokens): Deleted.
        (WebCore::CSSVariableData::checkVariablesForCycles const): Deleted.
        (WebCore::CSSVariableData::checkVariablesForCyclesWithRange const): Deleted.
        (WebCore::CSSVariableData::resolveVariableFallback const): Deleted.
        (WebCore::CSSVariableData::resolveVariableReference const): Deleted.
        (WebCore::CSSVariableData::resolveVariableReferences const): Deleted.
        (WebCore::CSSVariableData::resolveTokenRange const): Deleted.
        * css/CSSVariableData.h:
        (WebCore::CSSVariableData::create):
        (WebCore::CSSVariableData::createResolved): Deleted.
        (WebCore::CSSVariableData::needsVariableResolution const): Deleted.
        (WebCore::CSSVariableData::CSSVariableData): Deleted.
        * css/CSSVariableReferenceValue.cpp:
        (WebCore::resolveVariableFallback):
        (WebCore::resolveVariableReference):
        (WebCore::resolveTokenRange):
        (WebCore::CSSVariableReferenceValue::resolveVariableReferences const):
        (WebCore::CSSVariableReferenceValue::checkVariablesForCycles const): Deleted.
        * css/CSSVariableReferenceValue.h:
        (WebCore::CSSVariableReferenceValue::create):
        (WebCore::CSSVariableReferenceValue::equals const):
        (WebCore::CSSVariableReferenceValue::variableDataValue const): Deleted.
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        * css/PropertySetCSSStyleDeclaration.cpp:
        (WebCore::PropertySetCSSStyleDeclaration::setProperty):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyInitialCustomProperty):
        (WebCore::StyleBuilderCustom::applyValueCustomProperty):
        * css/StyleProperties.cpp:
        (WebCore::MutableStyleProperties::setCustomProperty):
        * css/StyleProperties.h:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::State::setStyle):
        (WebCore::StyleResolver::styleForKeyframe):
        (WebCore::StyleResolver::styleForPage):
        (WebCore::StyleResolver::applyMatchedProperties):
        (WebCore::StyleResolver::applyPropertyToCurrentStyle):
        (WebCore::StyleResolver::applyProperty):
        (WebCore::StyleResolver::resolvedVariableValue const):
        (WebCore::StyleResolver::CascadedProperties::applyDeferredProperties):
        (WebCore::StyleResolver::CascadedProperties::Property::apply):
        (WebCore::StyleResolver::applyCascadedCustomProperty):
        (WebCore::StyleResolver::applyCascadedProperties):
        * css/StyleResolver.h:
        * css/parser/CSSParser.cpp:
        (WebCore::CSSParser::parseValueWithVariableReferences):
        * css/parser/CSSParser.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::CSSPropertyParser):
        (WebCore::CSSPropertyParser::canParseTypedCustomPropertyValue):
        (WebCore::CSSPropertyParser::parseTypedCustomPropertyValue):
        (WebCore::CSSPropertyParser::collectParsedCustomPropertyValueDependencies):
        (WebCore::CSSPropertyParser::parseValueStart):
        (WebCore::CSSPropertyParser::parseSingleValue):
        * css/parser/CSSPropertyParser.h:
        * css/parser/CSSVariableParser.cpp:
        (WebCore::CSSVariableParser::parseDeclarationValue):
        * dom/ConstantPropertyMap.cpp:
        (WebCore::ConstantPropertyMap::setValueForProperty):
        (WebCore::variableDataForPositivePixelLength):
        (WebCore::variableDataForPositiveDuration):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::checkVariablesInCustomProperties): Deleted.
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::setInheritedCustomPropertyValue):
        (WebCore::RenderStyle::setNonInheritedCustomPropertyValue):
        * rendering/style/StyleCustomPropertyData.h:
        (WebCore::StyleCustomPropertyData::operator== const):
        (WebCore::StyleCustomPropertyData::setCustomPropertyValue):
        (WebCore::StyleCustomPropertyData::StyleCustomPropertyData):
        (): Deleted.

2018-10-22  Justin Michaud  <justin_michaud@apple.com>

        CSS Paint API should give a 2d rendering context
        https://bugs.webkit.org/show_bug.cgi?id=190762

        Reviewed by Dean Jackson.

        Add a new type of canvas and 2d rendering context to support the CSS Painting API.
        Make many of the methods from HTMLCanvasElement virtual functions on CanvasBase, and
        remove many of the downcasts in CanvasRenderingContext2DBase as a result.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSPaintRenderingContext2DCustom.cpp: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::root):
        (WebCore::JSPaintRenderingContext2DOwner::isReachableFromOpaqueRoots):
        (WebCore::JSPaintRenderingContext2D::visitAdditionalChildren):
        * bindings/js/WebCoreBuiltinNames.h:
        * css/CSSPaintCallback.h:
        * css/CSSPaintCallback.idl:
        * html/CanvasBase.cpp:
        (WebCore::CanvasBase::~CanvasBase):
        * html/CanvasBase.h:
        (WebCore::CanvasBase::isCustomPaintCanvas const):
        * html/CustomPaintCanvas.cpp: Added.
        (WebCore::CustomPaintCanvas::create):
        (WebCore::CustomPaintCanvas::CustomPaintCanvas):
        (WebCore::CustomPaintCanvas::~CustomPaintCanvas):
        (WebCore::CustomPaintCanvas::width const):
        (WebCore::CustomPaintCanvas::setWidth):
        (WebCore::CustomPaintCanvas::height const):
        (WebCore::CustomPaintCanvas::setHeight):
        (WebCore::CustomPaintCanvas::size const):
        (WebCore::CustomPaintCanvas::setSize):
        (WebCore::CustomPaintCanvas::getContext):
        (WebCore::CustomPaintCanvas::copiedImage const):
        (WebCore::CustomPaintCanvas::drawingContext const):
        (WebCore::CustomPaintCanvas::existingDrawingContext const):
        (WebCore::CustomPaintCanvas::makeRenderingResultsAvailable):
        * html/CustomPaintCanvas.h: Copied from Source/WebCore/html/OffscreenCanvas.h.
        * html/HTMLCanvasElement.h:
        * html/OffscreenCanvas.h:
        * html/canvas/CanvasRenderingContext.cpp:
        (WebCore::CanvasRenderingContext::wouldTaintOrigin):
        * html/canvas/CanvasRenderingContext.h:
        (WebCore::CanvasRenderingContext::isPaint const):
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::DisplayListDrawingContext::DisplayListDrawingContext):
        (WebCore::CanvasRenderingContext2DBase::unwindStateStack):
        (WebCore::CanvasRenderingContext2DBase::isAccelerated const):
        (WebCore::CanvasRenderingContext2DBase::setStrokeStyle):
        (WebCore::CanvasRenderingContext2DBase::setFillStyle):
        (WebCore::CanvasRenderingContext2DBase::resetTransform):
        (WebCore::CanvasRenderingContext2DBase::clearCanvas):
        (WebCore::CanvasRenderingContext2DBase::transformAreaToDevice const):
        (WebCore::CanvasRenderingContext2DBase::rectContainsCanvas const):
        (WebCore::CanvasRenderingContext2DBase::calculateCompositingBufferRect):
        (WebCore::CanvasRenderingContext2DBase::compositeBuffer):
        (WebCore::CanvasRenderingContext2DBase::createPattern):
        (WebCore::CanvasRenderingContext2DBase::didDrawEntireCanvas):
        (WebCore::CanvasRenderingContext2DBase::didDraw):
        (WebCore::CanvasRenderingContext2DBase::paintRenderingResultsToCanvas):
        (WebCore::CanvasRenderingContext2DBase::drawingContext const):
        * html/canvas/CanvasRenderingContext2DBase.h:
        * html/canvas/PaintRenderingContext2D.cpp: Copied from Source/WebCore/css/CSSPaintCallback.h.
        (WebCore::PaintRenderingContext2D::create):
        (WebCore::PaintRenderingContext2D::PaintRenderingContext2D):
        * html/canvas/PaintRenderingContext2D.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        * html/canvas/PaintRenderingContext2D.idl: Copied from Source/WebCore/css/CSSPaintCallback.idl.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.h:
        * platform/graphics/CustomPaintImage.cpp:
        (WebCore::CustomPaintImage::doCustomPaint):

2018-10-22  Keith Rollin  <krollin@apple.com>

        Use Location = "Relative to Build Products" rather than "Relative to Group"
        https://bugs.webkit.org/show_bug.cgi?id=190781

        Reviewed by Alexey Proskuryakov.

        Almost all Derived Files are included in Xcode projects with the
        Location attribute set to "Relative to Group". While this currently
        works, the Derived Files can no longer be found when enabling XCBuild
        (which has stricter requirements). Fix this by setting the Location
        attribute to "Relative to Build Products".

        No new tests -- no changed functionality.

        * WebCore.xcodeproj/project.pbxproj:

2018-10-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add justify text-align support.
        https://bugs.webkit.org/show_bug.cgi?id=190779

        Reviewed by Antti Koivisto.

        Collect expansion opportunities and adjust runs accordingly.

        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::expansionOpportunity):
        (WebCore::Layout::InlineRun::TextContext::setStart):
        (WebCore::Layout::InlineRun::TextContext::setLength):
        (WebCore::Layout::InlineRun::setTextContext):
        (WebCore::Layout::InlineRun::createRun): Deleted.
        (WebCore::Layout::InlineRun::createTextRun): Deleted.
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::Line):
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::InlineFormattingContext::Line::computeExpansionOpportunities):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::justifyRuns):
        (WebCore::Layout::InlineFormattingContext::Line::close):
        (WebCore::Layout::isNonCollapsedText): Deleted.

2018-10-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add (right, center)text-align support.
        https://bugs.webkit.org/show_bug.cgi?id=190745

        Reviewed by Antti Koivisto.

        Adjust the logical left of each run while closing the line.

        * layout/Verification.cpp:
        (WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::trimLeadingRun):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::hasContent const):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalLeft const): Deleted.
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::nextRun):
        (WebCore::Layout::InlineLineBreaker::splitRun):
        * layout/inlineformatting/InlineLineBreaker.h:
        * layout/inlineformatting/InlineRun.h:
        (WebCore::Layout::InlineRun::setLogicalLeft):
        (WebCore::Layout::InlineRun::TextContext::start const):
        (WebCore::Layout::InlineRun::createRun):
        (WebCore::Layout::InlineRun::createTextRun):
        (WebCore::Layout::InlineRun::InlineRun):
        (WebCore::Layout::InlineRun::TextContext::TextContext):
        (WebCore::Layout::InlineRun::TextContext::position const): Deleted.
        * layout/inlineformatting/Line.cpp:
        (WebCore::Layout::InlineFormattingContext::Line::Line):
        (WebCore::Layout::InlineFormattingContext::Line::init):
        (WebCore::Layout::adjustedLineLogicalLeft):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalRight):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):
        (WebCore::Layout::InlineFormattingContext::Line::setConstraints): Deleted.
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):

2018-10-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Implement Replaced helper class.
        https://bugs.webkit.org/show_bug.cgi?id=190719

        Reviewed by Antti Koivisto.

        * layout/layouttree/LayoutBox.cpp:
        (WebCore::Layout::Box::Box):
        * layout/layouttree/LayoutBox.h:
        (WebCore::Layout::Box::replaced const):
        * layout/layouttree/LayoutReplaced.cpp:
        (WebCore::Layout::Replaced::Replaced):
        (WebCore::Layout::Replaced::hasIntrinsicWidth const):
        (WebCore::Layout::Replaced::hasIntrinsicHeight const):
        (WebCore::Layout::Replaced::hasIntrinsicRatio const):
        (WebCore::Layout::Replaced::intrinsicWidth const):
        (WebCore::Layout::Replaced::intrinsicHeight const):
        (WebCore::Layout::Replaced::intrinsicRatio const):
        * layout/layouttree/LayoutReplaced.h:
        (WebCore::Layout::Replaced::hasIntrinsicWidth const): Deleted.
        (WebCore::Layout::Replaced::hasIntrinsicHeight const): Deleted.
        (WebCore::Layout::Replaced::hasIntrinsicRatio const): Deleted.
        (WebCore::Layout::Replaced::intrinsicWidth const): Deleted.
        (WebCore::Layout::Replaced::intrinsicHeight const): Deleted.
        (WebCore::Layout::Replaced::intrinsicRatio const): Deleted.
        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):

2018-10-22  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Block formatting context roots avoid floats.
        https://bugs.webkit.org/show_bug.cgi?id=190723

        Reviewed by Antti Koivisto.

        Inline formatting context roots don't avoid floats (unless they also establish block formatting context).

        * layout/blockformatting/BlockFormattingContext.cpp:
        (WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):

2018-10-20  YUHAN WU  <yuhan_wu@apple.com>

        MediaRecorder should fire a stop event when all tracks are ended
        https://bugs.webkit.org/show_bug.cgi?id=190642

        Reviewed by Youenn Fablet.

        This patch only implements to fire the stop event when all tracks are ended.
        We will need to fire a dataavailable event when all tracks are ended.

        Test: imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html

        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::~MediaRecorder):
        (WebCore::MediaRecorder::trackEnded):
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediarecorder/MediaRecorder.idl:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/EventNames.h:

2018-10-19  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Search terms are not saved for <input type="search">
        https://bugs.webkit.org/show_bug.cgi?id=188174

        Reviewed by Fujii Hironori.

        No new tests, should be covered by existing tests of search 
        inputs.

        Add support for saving the search terms for <input
        type="search"> to a SQLite database, replacing the
        CF-based implementation for Windows and adding support
        for non-legacy WebKit.

        * PlatformWin.cmake:
        * platform/win/SearchPopupMenuDB.cpp: Added.
        (WebCore::SearchPopupMenuDB::singleton):
        (WebCore::SearchPopupMenuDB::SearchPopupMenuDB):
        (WebCore::SearchPopupMenuDB::~SearchPopupMenuDB):
        (WebCore::SearchPopupMenuDB::saveRecentSearches):
        (WebCore::SearchPopupMenuDB::loadRecentSearches):
        (WebCore::SearchPopupMenuDB::checkDatabaseValidity): Use
        quick_check pragma to test database status.
        (WebCore::SearchPopupMenuDB::deleteAllDatabaseFiles):
        (WebCore::SearchPopupMenuDB::openDatabase):
        (WebCore::SearchPopupMenuDB::closeDatabase):
        (WebCore::SearchPopupMenuDB::verifySchemaVersion): Check
        schema version and update for schema changes.
        (WebCore::SearchPopupMenuDB::checkSQLiteReturnCode): Check
        for error codes that indicate database errors and remove and
        recreate the database.
        (WebCore::SearchPopupMenuDB::executeSimpleSql):
        (WebCore::SearchPopupMenuDB::createPreparedStatement):
        * platform/win/SearchPopupMenuDB.h: Added.
        * platform/win/SearchPopupMenuWin.cpp:
        (WebCore::SearchPopupMenuWin::enabled): Always enable support
        for search term popup
        (WebCore::SearchPopupMenuWin::saveRecentSearches): Switch from
        CF implementation to SQLite database implementation
        (WebCore::SearchPopupMenuWin::loadRecentSearches): Switch from
        CF implementation to SQLite database implementation
        (WebCore::autosaveKey): Deleted.

2018-10-19  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Add stubs for WebGPUSwapChain and WebGPURenderingContext
        https://bugs.webkit.org/show_bug.cgi?id=190742

        Reviewed by Dean Jackson.

        Test: updated webgpu-enabled.html to check for WebGPURenderingContext.

        Implement support for creating a "webgpu" context from an HTML canvas.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/WebGPURenderingContext.cpp: Added.
        (WebCore::WebGPURenderingContext::create):
        (WebCore::WebGPURenderingContext::WebGPURenderingContext):
        * Modules/webgpu/WebGPURenderingContext.h: Added.
        * Modules/webgpu/WebGPURenderingContext.idl: Added.
        * Modules/webgpu/WebGPUSwapChain.cpp: Added.
        (WebCore::WebGPUSwapChain::configure):
        (WebCore::WebGPUSwapChain::present):
        (WebCore::WebGPUSwapChain::reshape):
        (WebCore::WebGPUSwapChain::markLayerComposited):
        * Modules/webgpu/WebGPUSwapChain.h: Added.
        (WebCore::WebGPUSwapChain::WebGPUSwapChain):
        * Modules/webgpu/WebGPUSwapChain.idl: Added.
        * Modules/webgpu/WebGPUSwapChainDescriptor.h: Added.
        * Modules/webgpu/WebGPUSwapChainDescriptor.idl: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/Document.cpp:
        (WebCore::Document::getCSSCanvasContext):
        * dom/Document.h:
        * dom/Document.idl:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::getContext):
        (WebCore::HTMLCanvasElement::isWebGPUType):
        (WebCore::HTMLCanvasElement::createContextWebGPU):
        (WebCore::HTMLCanvasElement::getContextWebGPU):
        * html/HTMLCanvasElement.h:
        * html/HTMLCanvasElement.idl:
        * html/canvas/CanvasRenderingContext.h:
        (WebCore::CanvasRenderingContext::isWebGPU const):

2018-10-19  John Wilander  <wilander@apple.com>

        Only cap lifetime of persistent cookies created client-side through document.cookie when resource load statistics is enabled
        https://bugs.webkit.org/show_bug.cgi?id=190687
        <rdar://problem/45349024>

        Reviewed by Alex Christensen.

        Test: http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js.html

        NetworkStorageSession::setCookiesFromDOM() now consults the new
        m_shouldCapLifetimeForClientSideCookies member variable before
        capping the lifetime of cookies.

        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
            Removal of the isMarkedForCookieBlocking member.
        * loader/ResourceLoadStatistics.h:
            Removal of the isMarkedForCookieBlocking member.
        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::NetworkStorageSession::setShouldCapLifetimeForClientSideCookies):
        (WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor):
            No longer takes the boolean clearFirst parameter and now always clears first.
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::filterCookies):
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] RenderReplaced renderer should create InlineBox
        https://bugs.webkit.org/show_bug.cgi?id=190720

        Reviewed by Antti Koivisto.

        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::TreeBuilder::createSubTree):

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Inline replaced width should default to 300px only if width is auto.
        https://bugs.webkit.org/show_bug.cgi?id=190722

        Reviewed by Antti Koivisto.

        See #5

        // 5. Otherwise, if 'width' has a computed value of 'auto', but none of the conditions above are met, then the used value of 'width' becomes 300px.

        * layout/FormattingContextGeometry.cpp:
        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add inline runs to showLayoutTree
        https://bugs.webkit.org/show_bug.cgi?id=190718

        Reviewed by Antti Koivisto.

        * layout/layouttree/LayoutTreeBuilder.cpp:
        (WebCore::Layout::outputInlineRuns):
        (WebCore::Layout::outputLayoutBox):
        (WebCore::Layout::outputLayoutTree):

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Remove the previous version of inline content handling.
        https://bugs.webkit.org/show_bug.cgi?id=190716

        Reviewed by Antti Koivisto.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/Verification.cpp:
        (WebCore::Layout::areEssentiallyEqual):
        (WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
        (WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::inlineContent):
        (WebCore::Layout::InlineFormattingState::addLayoutRuns): Deleted.
        (WebCore::Layout::InlineFormattingState::layoutRuns const): Deleted.
        * layout/inlineformatting/text/TextUtil.cpp: Renamed from Source/WebCore/layout/inlineformatting/textlayout/TextUtil.cpp.
        (WebCore::Layout::TextUtil::TextUtil):
        (WebCore::Layout::TextUtil::width const):
        (WebCore::Layout::TextUtil::hyphenPositionBefore const):
        (WebCore::Layout::TextUtil::textWidth const):
        (WebCore::Layout::TextUtil::fixedPitchWidth const):
        * layout/inlineformatting/text/TextUtil.h: Renamed from Source/WebCore/layout/inlineformatting/textlayout/TextUtil.h.
        * layout/inlineformatting/textlayout/Runs.h: Removed.
        * layout/inlineformatting/textlayout/TextContentProvider.cpp: Removed.
        * layout/inlineformatting/textlayout/TextContentProvider.h: Removed.
        * layout/inlineformatting/textlayout/simple/SimpleLineBreaker.cpp: Removed.
        * layout/inlineformatting/textlayout/simple/SimpleLineBreaker.h: Removed.
        * layout/inlineformatting/textlayout/simple/SimpleTextRunGenerator.cpp: Removed.
        * layout/inlineformatting/textlayout/simple/SimpleTextRunGenerator.h: Removed.

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add generic inline content handling.
        https://bugs.webkit.org/show_bug.cgi?id=190713

        Reviewed by Antti Koivisto.

        layoutInlineContent turns InlineLineBreaker::Run objects into final inline runs by
        resolving heading/trailing whitespace, aligment, expansion opportunities etc.
        These inline runs are input to the display tree construction.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/displaytree/DisplayBox.h:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        (WebCore::Layout::trimLeadingRun):
        (WebCore::Layout::InlineFormattingContext::layoutInlineContent const):
        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeight const):
        * layout/inlineformatting/InlineFormattingContext.h:
        (WebCore::Layout::InlineFormattingContext::Line::hasContent const):
        (WebCore::Layout::InlineFormattingContext::Line::contentLogicalLeft const):
        (WebCore::Layout::InlineFormattingContext::Line::availableWidth const):
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::inlineRuns):
        (WebCore::Layout::InlineFormattingState::appendInlineRun):
        * layout/inlineformatting/InlineLineBreaker.cpp:
        (WebCore::Layout::InlineLineBreaker::nextRun):
        (WebCore::Layout::InlineLineBreaker::nextLayoutRun): Deleted.
        * layout/inlineformatting/InlineLineBreaker.h:
        * layout/inlineformatting/InlineRun.h: Added.
        (WebCore::Layout::InlineRun::logicalLeft const):
        (WebCore::Layout::InlineRun::logicalRight const):
        (WebCore::Layout::InlineRun::width const):
        (WebCore::Layout::InlineRun::setWidth):
        (WebCore::Layout::InlineRun::setLogicalRight):
        (WebCore::Layout::InlineRun::TextContext::position const):
        (WebCore::Layout::InlineRun::TextContext::length const):
        (WebCore::Layout::InlineRun::TextContext::setLength):
        (WebCore::Layout::InlineRun::textContext):
        (WebCore::Layout::InlineRun::inlineItem const):
        (WebCore::Layout::InlineRun::InlineRun):
        (WebCore::Layout::InlineRun::TextContext::TextContext):
        * layout/inlineformatting/Line.cpp: Added.
        (WebCore::Layout::InlineFormattingContext::Line::Line):
        (WebCore::Layout::InlineFormattingContext::Line::setConstraints):
        (WebCore::Layout::isNonCollapsedText):
        (WebCore::Layout::isTrimmableContent):
        (WebCore::Layout::InlineFormattingContext::Line::appendContent):
        (WebCore::Layout::InlineFormattingContext::Line::close):

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add generic inline line breaker
        https://bugs.webkit.org/show_bug.cgi?id=190698

        Reviewed by Antti Koivisto.

        InlineLineBreaker takes the inline runs and applies the appropriate line breaking rules on them.
        InlineRunProvider::Run objects ->

            <foobar><image box><hello>< ><world>

        InlineLineBreaker::Run ->

            <foobar><image box><hello world>

        InlineLineBreaker::Run also contains information whether the run is at the beginning or at the end of the line.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/LayoutContext.h:
        (WebCore::Layout::LayoutContext::hasDisplayBox const):
        * layout/inlineformatting/InlineLineBreaker.cpp: Added.
        (WebCore::Layout::InlineLineBreaker::InlineLineBreaker):
        (WebCore::Layout::InlineLineBreaker::nextLayoutRun):
        (WebCore::Layout::InlineLineBreaker::isAtContentEnd const):
        (WebCore::Layout::InlineLineBreaker::lineBreakingBehavior):
        (WebCore::Layout::InlineLineBreaker::runWidth const):
        (WebCore::Layout::InlineLineBreaker::splitRun):
        (WebCore::Layout::InlineLineBreaker::adjustSplitPositionWithHyphenation const):
        * layout/inlineformatting/InlineLineBreaker.h: Added.
        * layout/inlineformatting/textlayout/TextUtil.cpp: Added.
        (WebCore::Layout::TextUtil::TextUtil):
        (WebCore::Layout::TextUtil::width const):
        (WebCore::Layout::TextUtil::hyphenPositionBefore const):
        (WebCore::Layout::TextUtil::textWidth const):
        (WebCore::Layout::TextUtil::fixedPitchWidth const):
        * layout/inlineformatting/textlayout/TextUtil.h: Added.
        * layout/layouttree/LayoutBox.cpp:

2018-10-19  Zalan Bujtas  <zalan@apple.com>

        [LFC][IFC] Add generic inline run generator.
        https://bugs.webkit.org/show_bug.cgi?id=190696

        Reviewed by Antti Koivisto.

        InlineRunProvider turns the following inline content ->

            <span>foo<span>bar</span></span>
            <img src="broken.jpg"><span>hello world</span>

        into a set of runs ->

            <foobar><image box><hello>< ><world>

        Note that a text run can overlap multiple inline elements. InlineRunProvider::Run only stores a reference to
        the first inline element (continuous content can be accessed by iterating through the InlineContent ListHashSet).
        These runs are the input to the line breaking algoritm.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * layout/inlineformatting/InlineFormattingContext.cpp:
        (WebCore::Layout::InlineFormattingContext::layout const):
        * layout/inlineformatting/InlineFormattingState.h:
        (WebCore::Layout::InlineFormattingState::inlineContent):
        * layout/inlineformatting/InlineItem.h: Added.
        (WebCore::Layout::InlineItem::layoutBox const):
        (WebCore::Layout::InlineItem::style const):
        (WebCore::Layout::InlineItemHashFunctions::hash):
        (WebCore::Layout::InlineItemHashFunctions::equal):
        (WebCore::Layout::InlineItemHashTranslator::hash):
        (WebCore::Layout::InlineItemHashTranslator::equal):
        (WebCore::Layout::InlineItem::InlineItem):
        (WebCore::Layout::InlineItem::type const):
        (WebCore::Layout::InlineItem::textContent const):
        * layout/inlineformatting/InlineRunProvider.cpp: Added.
        (WebCore::Layout::InlineRunProvider::InlineRunProvider):
        (WebCore::Layout::InlineRunProvider::append):
        (WebCore::Layout::InlineRunProvider::insertBefore):
        (WebCore::Layout::InlineRunProvider::remove):
        (WebCore::Layout::isWhitespace):
        (WebCore::Layout::isSoftLineBreak):
        (WebCore::Layout::InlineRunProvider::isContinousContent):
        (WebCore::Layout::InlineRunProvider::processInlineTextItem):
        (WebCore::Layout::InlineRunProvider::moveToNextNonWhitespacePosition):
        (WebCore::Layout::InlineRunProvider::moveToNextBreakablePosition):
        * layout/inlineformatting/InlineRunProvider.h: Added.
        (WebCore::Layout::InlineRunProvider::Run::type const):
        (WebCore::Layout::InlineRunProvider::Run::isText const):
        (WebCore::Layout::InlineRunProvider::Run::isWhitespace const):
        (WebCore::Layout::InlineRunProvider::Run::isNonWhitespace const):
        (WebCore::Layout::InlineRunProvider::Run::isLineBreak const):
        (WebCore::Layout::InlineRunProvider::Run::isBox const):
        (WebCore::Layout::InlineRunProvider::Run::isFloat const):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::start const):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::length const):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::isCollapsed const):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::setStart):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::setLength):
        (WebCore::Layout::InlineRunProvider::Run::textContext const):
        (WebCore::Layout::InlineRunProvider::Run::style const):
        (WebCore::Layout::InlineRunProvider::Run::inlineItem const):
        (WebCore::Layout::InlineRunProvider::runs const):
        (WebCore::Layout::InlineRunProvider::Run::createBoxRun):
        (WebCore::Layout::InlineRunProvider::Run::createFloatRun):
        (WebCore::Layout::InlineRunProvider::Run::createSoftLineBreakRun):
        (WebCore::Layout::InlineRunProvider::Run::createHardLineBreakRun):
        (WebCore::Layout::InlineRunProvider::Run::createWhitespaceRun):
        (WebCore::Layout::InlineRunProvider::Run::createNonWhitespaceRun):
        (WebCore::Layout::InlineRunProvider::Run::Run):
        (WebCore::Layout::InlineRunProvider::Run::TextContext::TextContext):
        * layout/layouttree/LayoutBox.h:
        (WebCore::Layout::Box::isLineBreakBox const):
        * layout/layouttree/LayoutInlineBox.cpp:
        (WebCore::Layout::InlineBox::InlineBox):
        * layout/layouttree/LayoutInlineBox.h:
        (WebCore::Layout::InlineBox::hasTextContent const):
        (WebCore::Layout::InlineBox::textContent const):
        * layout/layouttree/LayoutLineBreakBox.cpp: Copied from Source/WebCore/layout/layouttree/LayoutInlineBox.cpp.
        (WebCore::Layout::LineBreakBox::LineBreakBox):
        * layout/layouttree/LayoutLineBreakBox.h: Copied from Source/WebCore/layout/layouttree/LayoutInlineBox.cpp.

2018-10-19  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Handle zero-area intersections
        https://bugs.webkit.org/show_bug.cgi?id=189624

        Reviewed by Simon Fraser.

        Use edge-inclusive intersection when applying clips and intersecting with the
        root, so that two rects that touch each other are considered intersecting even
        if the area of their intersection is 0.

        Covered by rebased tests in imported/w3c/web-platform-tests/intersection-observer.

        * dom/Document.cpp:
        (WebCore::computeIntersectionState):
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::computeIntersectionRects): Deleted.

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        No new tests, covered by existing tests.

        * Sources.txt: Add RemoteVideoSample.cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/MediaSample.h:
        (WebCore::MediaSample::videoPixelFormat const):

        * platform/graphics/RemoteVideoSample.cpp: Added.
        (WebCore::RemoteVideoSample::~RemoteVideoSample):
        (WebCore::RemoteVideoSample::create):
        (WebCore::RemoteVideoSample::RemoteVideoSample):
        (WebCore::RemoteVideoSample::surface):
        * platform/graphics/RemoteVideoSample.h: Added.
        (WebCore::RemoteVideoSample::time const):
        (WebCore::RemoteVideoSample::videoFormat const):
        (WebCore::RemoteVideoSample::size const):
        (WebCore::RemoteVideoSample::encode const):
        (WebCore::RemoteVideoSample::decode):
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        * platform/graphics/cv/ImageTransferSessionVT.h:

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::remoteVideoSampleAvailable): Call observers.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::dispatchMediaSampleToObservers): Dispatch remote samples without
        resizing, resize local samples if necessary.
        * platform/mediastream/RealtimeVideoSource.h:

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection): Don't resize
        samples, it will be done in the base class if necessary.

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::emitFrame): Don't resize samples when running in the UI
        process, it will be done in the web process.

        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: Remove unneeded include.

2018-10-18  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [CG] Adopt CG SPI for non-even cornered rounded rects
        https://bugs.webkit.org/show_bug.cgi?id=190155

        Reviewed by Simon Fraser.

        Instead of creating bezier curves for the non-even corners of the rounded
        rects, we should use the optimized SPI provided by CG.

        * platform/graphics/cg/PathCG.cpp:
        (WebCore::Path::platformAddPathForRoundedRect):

2018-10-18  Justin Michaud  <justin_michaud@apple.com>

        Add new image type for CSS painting API
        https://bugs.webkit.org/show_bug.cgi?id=190697

        Reviewed by Dean Jackson.

        Add a new image type for the CSS painting API, and hook it up so it can be drawn.
        For now, it uses a WebGL rendering context from OfflineCanvas because that was
        easy to hook up. The spec actually calls for a RenderingContext2D, which can be
        handled in another patch.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSImageGeneratorValue.cpp:
        (WebCore::CSSImageGeneratorValue::image):
        (WebCore::CSSImageGeneratorValue::isFixedSize const):
        (WebCore::CSSImageGeneratorValue::fixedSize):
        (WebCore::CSSImageGeneratorValue::isPending const):
        (WebCore::CSSImageGeneratorValue::knownToBeOpaque const):
        (WebCore::CSSImageGeneratorValue::loadSubimages):
        * css/CSSPaintCallback.h:
        * css/CSSPaintCallback.idl:
        * css/CSSPaintImageValue.cpp:
        (WebCore::CSSPaintImageValue::image):
        * css/CSSPaintImageValue.h:
        * platform/graphics/CustomPaintImage.cpp: Added.
        (WebCore::CustomPaintImage::CustomPaintImage):
        (WebCore::CustomPaintImage::doCustomPaint):
        (WebCore::CustomPaintImage::draw):
        (WebCore::CustomPaintImage::drawPattern):
        * platform/graphics/CustomPaintImage.h: Copied from Source/WebCore/css/CSSPaintCallback.h.
        * platform/graphics/Image.h:
        (WebCore::Image::isCustomPaintImage const):
        * platform/graphics/ImageBuffer.h:
        * platform/graphics/cairo/CairoOperations.cpp:

2018-10-18  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r237272.

        Broke on device iOS builds and Windows builds

        Reverted changeset:

        "[MediaStream] Allow ports to optionally do screen capture in
        the UI process"
        https://bugs.webkit.org/show_bug.cgi?id=190728
        https://trac.webkit.org/changeset/237272

2018-10-18  Jer Noble  <jer.noble@apple.com>

        [MSE] timestampOffset can introduce floating-point rounding errors to incoming samples
        https://bugs.webkit.org/show_bug.cgi?id=190590
        <rdar://problem/45275626>

        Reviewed by Eric Carlson.

        Test: media/media-source/media-source-timestampoffset-rounding-error.html

        SourceBuffer.timestampOffset is a double property, which, when added to a MediaTime will
        result in a double-backed MediaTime as PTS & DTS. This can introduce rounding errors when
        these samples are appended as overlapping existing samples. Rather than converting a MediaTime
        to double-backed when adding the timestampOffset, convert the offset to a multiple of the
        sample's timeBase.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::setTimestampOffset):
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        No new tests, covered by existing tests.

        * Sources.txt: Add RemoteVideoSample.cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/MediaSample.h:
        (WebCore::MediaSample::videoPixelFormat const):

        * platform/graphics/RemoteVideoSample.cpp: Added.
        (WebCore::RemoteVideoSample::~RemoteVideoSample):
        (WebCore::RemoteVideoSample::create):
        (WebCore::RemoteVideoSample::RemoteVideoSample):
        (WebCore::RemoteVideoSample::surface):
        * platform/graphics/RemoteVideoSample.h: Added.
        (WebCore::RemoteVideoSample::time const):
        (WebCore::RemoteVideoSample::videoFormat const):
        (WebCore::RemoteVideoSample::size const):
        (WebCore::RemoteVideoSample::encode const):
        (WebCore::RemoteVideoSample::decode):
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        * platform/graphics/cv/ImageTransferSessionVT.h:

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::remoteVideoSampleAvailable): Call observers.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::dispatchMediaSampleToObservers): Dispatch remote samples without
        resizing, resize local samples if necessary.
        * platform/mediastream/RealtimeVideoSource.h:

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection): Don't resize
        samples, it will be done in the base class if necessary.

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::emitFrame): Don't resize samples when running in the UI
        process, it will be done in the web process.

        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: Remove unneeded include.

2018-10-18  Jer Noble  <jer.noble@apple.com>

        Safari is not able to adapt between H264 streams with EditList and without EditList
        https://bugs.webkit.org/show_bug.cgi?id=190638
        <rdar://problem/45342208>

        Reviewed by Eric Carlson.

        Test: media/media-source/media-source-append-overlapping-dts.html

        The MSE frame replacement algorithm does not take decode timestamps into account; this can
        lead to situations where the replacement algorithm may leave in place frames where the 
        presentationTimestamp is less than the replacement frame, but whose decodeTimestamp is
        after the replacement frame. When re-enqueuing these frames, they may cause a decode error
        if they break the group-of-pictures sequence of the replaced range.

        * Modules/mediasource/SampleMap.cpp:
        (WebCore::DecodeOrderSampleMap::findSamplesBetweenDecodeKeys):
        * Modules/mediasource/SampleMap.h:
        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2018-10-18  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Region parameter and value should be separated by ':'
        https://bugs.webkit.org/show_bug.cgi?id=190735

        Reviewed by Eric Carlson.

        This is specified in https://w3c.github.io/webvtt/#region-settings.

        No new tests. Modified existing tests.

        * html/track/VTTRegion.cpp:
        (WebCore::VTTRegion::setRegionSettings):

2018-10-18  Jer Noble  <jer.noble@apple.com>

        Add support for MediaKeyEncryptionScheme
        https://bugs.webkit.org/show_bug.cgi?id=190173

        Reviewed by Eric Carlson.

        Added sub-tests to: media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html

        Add support for the MediaKeyEncryptionScheme extension to EME, as detailed here:
        <https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md>

        As the strings "cenc" and "cbcs" are explicitly lower-case, add support to the bindings generator to keep
        those strings as lower-case when converting from IDL.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/encryptedmedia/MediaKeyEncryptionScheme.h:
        * Modules/encryptedmedia/MediaKeyEncryptionScheme.idl:
        * Modules/encryptedmedia/MediaKeySystemMediaCapability.h:
        * Modules/encryptedmedia/MediaKeySystemMediaCapability.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/scripts/CodeGenerator.pm:
        (WK_ucfirst):
        * platform/encryptedmedia/CDMEncryptionScheme.h: Copied from Source/WebCore/testing/MockCDMFactory.idl.
        * platform/encryptedmedia/CDMMediaCapability.h:
        * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
        (WebCore::CDMPrivateFairPlayStreaming::supportsConfiguration const):
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsMediaCapability):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
        * testing/MockCDMFactory.cpp:
        (WebCore::m_supportedEncryptionSchemes):
        (WebCore::MockCDM::supportsConfiguration const):
        * testing/MockCDMFactory.h:
        (WebCore::MockCDMFactory::supportedEncryptionSchemes const):
        (WebCore::MockCDMFactory::setSupportedEncryptionSchemes):
        * testing/MockCDMFactory.idl:

2018-10-18  Alexey Proskuryakov  <ap@apple.com>

        Switch from PLATFORM(IOS) to PLATFORM(IOS_FAMILY)
        https://bugs.webkit.org/show_bug.cgi?id=190729

        Reviewed by Tim Horton.

        * DerivedSources.make:
        * Modules/applepay/cocoa/PaymentContactCocoa.mm:
        (WebCore::subLocality):
        (WebCore::setSubLocality):
        (WebCore::subAdministrativeArea):
        (WebCore::setSubAdministrativeArea):
        * Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.cpp:
        * Modules/geolocation/Geolocation.cpp:
        (WebCore::isRequestFromIBooks):
        * Modules/geolocation/GeolocationPosition.h:
        * Modules/geolocation/NavigatorGeolocation.cpp:
        * Modules/geolocation/NavigatorGeolocation.h:
        * Modules/geolocation/ios/GeolocationPositionIOS.mm:
        * Modules/mediasession/WebMediaSessionManager.cpp:
        * Modules/mediasession/WebMediaSessionManager.h:
        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::filterDeviceList):
        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::JSQuickTimePluginReplacement::timedMetaData const):
        (WebCore::JSQuickTimePluginReplacement::accessLog const):
        (WebCore::JSQuickTimePluginReplacement::errorLog const):
        * Modules/speech/SpeechSynthesis.cpp:
        (WebCore::SpeechSynthesis::SpeechSynthesis):
        (WebCore::SpeechSynthesis::speak):
        * Modules/speech/SpeechSynthesis.h:
        * Modules/webaudio/AudioContext.cpp:
        * Modules/webaudio/AudioScheduledSourceNode.cpp:
        * Modules/webdatabase/Database.cpp:
        (WebCore::Database::performOpenAndVerify):
        * Modules/webdatabase/DatabaseContext.h:
        * Modules/webdatabase/DatabaseManagerClient.h:
        * Modules/webdatabase/DatabaseTracker.cpp:
        (WebCore::DatabaseTracker::deleteDatabaseFile):
        * Modules/webdatabase/DatabaseTracker.h:
        * WebCorePrefix.h:
        * accessibility/AXObjectCache.cpp:
        (WebCore::createFromRenderer):
        * accessibility/AccessibilityMediaObject.cpp:
        * accessibility/AccessibilityMediaObject.h:
        * accessibility/AccessibilityMenuList.cpp:
        (WebCore::AccessibilityMenuList::press):
        (WebCore::AccessibilityMenuList::isCollapsed const):
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
        (WebCore::AccessibilityObject::press):
        (WebCore::AccessibilityObject::actionVerb const):
        * accessibility/AccessibilityObject.h:
        * accessibility/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::stringValue const):
        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
        (WebCore::AccessibilityRenderObject::actionVerb const):
        * accessibility/AccessibilityTableColumn.cpp:
        (WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const):
        * accessibility/AccessibilityTableHeaderContainer.cpp:
        (WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const):
        * accessibility/ios/AXObjectCacheIOS.mm:
        * accessibility/ios/AccessibilityObjectIOS.mm:
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        * bindings/js/CommonVM.cpp:
        (WebCore::commonVMSlow):
        * bindings/js/JSCallbackData.h:
        (WebCore::JSCallbackData::~JSCallbackData):
        * bindings/js/JSDOMWindowBase.cpp:
        (WebCore::JSDOMWindowBase::shouldInterruptScriptBeforeTimeout):
        * bindings/js/ScriptController.cpp:
        (WebCore::ScriptController::initializeThreading):
        * bridge/objc/objc_class.mm:
        (JSC::Bindings::ObjcClass::fieldNamed const):
        * crypto/CommonCryptoUtilities.h:
        * crypto/mac/CryptoKeyRSAMac.cpp:
        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
        (WebCore::masterKeyAccountNameForCurrentApplication):
        (WebCore::createAndStoreMasterKey):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        * css/CSSProperties.json:
        * css/CSSStyleDeclaration.cpp:
        * css/CSSValueKeywords.in:
        * css/MediaQueryEvaluator.cpp:
        (WebCore::prefersReducedMotionEvaluate):
        * css/StyleBuilderConverter.h:
        * css/html.css:
        (video):
        (input, textarea, keygen, select, button):
        (#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY):
        (#if defined(ENABLE_INPUT_TYPE_DATE) && ENABLE_INPUT_TYPE_DATE):
        (#endif):
        (#if defined(ENABLE_DATALIST_ELEMENT) && ENABLE_DATALIST_ELEMENT):
        (textarea):
        (input:matches([type="radio"], [type="checkbox"])):
        (input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::-webkit-file-upload-button, button):
        (input[type="range"]::-webkit-slider-thumb, input[type="range"]::-webkit-media-slider-thumb):
        (#if !(defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY)):
        (input[type="checkbox"]):
        (#endif // defined(ENABLE_INPUT_TYPE_COLOR) && ENABLE_INPUT_TYPE_COLOR):
        (#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS): Deleted.
        (#if !(defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS)): Deleted.
        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        (WebCore::CSSParserFastPaths::isKeywordPropertyID):
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::cssPropertyID):
        (WebCore::CSSPropertyParser::parseSingleValue):
        * css/parser/CSSPropertyParser.h:
        * css/svg.css:
        (#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY):
        (#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS): Deleted.
        * dom/DeviceMotionController.cpp:
        * dom/DeviceMotionController.h:
        * dom/DeviceOrientationController.cpp:
        (WebCore::DeviceOrientationController::DeviceOrientationController):
        * dom/DeviceOrientationController.h:
        * dom/DeviceOrientationData.cpp:
        * dom/DeviceOrientationData.h:
        * dom/DeviceOrientationEvent.cpp:
        * dom/DeviceOrientationEvent.h:
        * dom/DeviceOrientationEvent.idl:
        * dom/Document.cpp:
        (WebCore::Document::~Document):
        (WebCore::Document::suspendDeviceMotionAndOrientationUpdates):
        (WebCore::Document::resumeDeviceMotionAndOrientationUpdates):
        (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
        * dom/Document.h:
        * dom/DocumentMarker.h:
        (WebCore::DocumentMarker::allMarkers):
        * dom/DocumentMarkerController.cpp:
        (WebCore::shouldInsertAsSeparateMarker):
        (WebCore::DocumentMarkerController::shiftMarkers):
        * dom/DocumentMarkerController.h:
        * dom/Element.cpp:
        (WebCore::Element::focus):
        * dom/Node.cpp:
        (WebCore::Node::~Node):
        (WebCore::Node::willBeDeletedFrom):
        (WebCore::Node::moveNodeToNewDocument):
        (WebCore::tryAddEventListener):
        (WebCore::tryRemoveEventListener):
        (WebCore::Node::defaultEventHandler):
        (WebCore::Node::willRespondToMouseMoveEvents):
        (WebCore::Node::willRespondToMouseClickEvents):
        * dom/Range.cpp:
        * dom/Range.h:
        * dom/TreeScope.cpp:
        (WebCore::absolutePointIfNotClipped):
        * dom/ViewportArguments.cpp:
        (WebCore::setViewportFeature):
        * dom/ViewportArguments.h:
        * editing/CompositeEditCommand.cpp:
        (WebCore::EditCommandComposition::unapply):
        (WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers):
        (WebCore::CompositeEditCommand::moveParagraphs):
        * editing/Editor.cpp:
        (WebCore::TemporarySelectionChange::TemporarySelectionChange):
        (WebCore::TemporarySelectionChange::~TemporarySelectionChange):
        (WebCore::Editor::handleTextEvent):
        (WebCore::Editor::Editor):
        (WebCore::Editor::clear):
        (WebCore::Editor::insertTextWithoutSendingTextEvent):
        (WebCore::Editor::setBaseWritingDirection):
        (WebCore::Editor::setComposition):
        (WebCore::Editor::showSpellingGuessPanel):
        (WebCore::Editor::markMisspellingsAfterTypingToWord):
        (WebCore::Editor::markMisspellingsOrBadGrammar):
        (WebCore::Editor::changeBackToReplacedString):
        (WebCore::Editor::updateMarkersForWordsAffectedByEditing):
        (WebCore::Editor::revealSelectionAfterEditingOperation):
        (WebCore::Editor::setIgnoreSelectionChanges):
        (WebCore::Editor::changeSelectionAfterCommand):
        (WebCore::Editor::shouldChangeSelection const):
        (WebCore::Editor::respondToChangedSelection):
        (WebCore::Editor::editorUIUpdateTimerFired):
        (WebCore::Editor::resolveTextCheckingTypeMask):
        * editing/Editor.h:
        * editing/FontAttributes.h:
        * editing/FrameSelection.cpp:
        (WebCore::FrameSelection::FrameSelection):
        (WebCore::FrameSelection::updateDataDetectorsForSelection):
        (WebCore::FrameSelection::setSelectedRange):
        (WebCore::FrameSelection::updateAppearance):
        (WebCore::FrameSelection::shouldDeleteSelection const):
        (WebCore::FrameSelection::revealSelection):
        (WebCore::FrameSelection::setSelectionFromNone):
        (WebCore::FrameSelection::shouldChangeSelection const):
        * editing/FrameSelection.h:
        * editing/InsertIntoTextNodeCommand.cpp:
        * editing/InsertIntoTextNodeCommand.h:
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::markMisspellingsAfterTyping):
        (WebCore::TypingCommand::deleteKeyPressed):
        (WebCore::TypingCommand::forwardDeleteKeyPressed):
        * editing/TypingCommand.h:
        * editing/cocoa/DataDetection.h:
        * editing/cocoa/DataDetection.mm:
        * editing/cocoa/FontAttributesCocoa.mm:
        * editing/cocoa/FontShadowCocoa.mm:
        (WebCore::FontShadow::createShadow const):
        * editing/cocoa/HTMLConverter.h:
        * editing/cocoa/HTMLConverter.mm:
        (_fontForNameAndSize):
        (_shadowForShadowStyle):
        (HTMLConverter::computedAttributesForElement):
        (HTMLConverter::_addAttachmentForElement):
        (HTMLConverter::_processMetaElementWithName):
        (HTMLConverter::_processElement):
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::attributesForAttributedStringConversion):
        (WebCore::WebContentReader::readURL):
        * editing/ios/DictationCommandIOS.cpp:
        * editing/ios/DictationCommandIOS.h:
        * editing/ios/EditorIOS.mm:
        * editing/mac/FrameSelectionMac.mm:
        (WebCore::FrameSelection::notifyAccessibilityForSelectionChange):
        * fileapi/FileCocoa.mm:
        * history/CachedFrame.cpp:
        (WebCore::CachedFrameBase::restore):
        (WebCore::CachedFrame::CachedFrame):
        * history/CachedPage.cpp:
        (WebCore::CachedPage::restore):
        * history/HistoryItem.cpp:
        (WebCore::HistoryItem::HistoryItem):
        * history/HistoryItem.h:
        * history/PageCache.cpp:
        (WebCore::canCachePage):
        * html/BaseDateAndTimeInputType.cpp:
        * html/BaseDateAndTimeInputType.h:
        * html/ColorInputType.cpp:
        (WebCore::ColorInputType::isKeyboardFocusable const):
        * html/HTMLAppletElement.cpp:
        (WebCore::HTMLAppletElement::updateWidget):
        * html/HTMLAttachmentElement.h:
        * html/HTMLCanvasElement.cpp:
        (WebCore::maxActivePixelMemory):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::collectStyleForPresentationAttribute):
        * html/HTMLIFrameElement.h:
        * html/HTMLImageElement.cpp:
        * html/HTMLImageElement.h:
        * html/HTMLInputElement.cpp:
        * html/HTMLInputElement.h:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::finishInitialization):
        (WebCore::HTMLMediaElement::registerWithDocument):
        (WebCore::HTMLMediaElement::unregisterWithDocument):
        (WebCore::HTMLMediaElement::setVolume):
        (WebCore::HTMLMediaElement::nextScanRate):
        (WebCore::HTMLMediaElement::sourceWasAdded):
        (WebCore::HTMLMediaElement::mediaEngineWasUpdated):
        (WebCore::HTMLMediaElement::updateVolume):
        (WebCore::HTMLMediaElement::userCancelledLoad):
        (WebCore::HTMLMediaElement::mediaSessionTitle const):
        (WebCore::HTMLMediaElement::purgeBufferedDataIfPossible):
        * html/HTMLMediaElement.h:
        * html/HTMLMetaElement.cpp:
        (WebCore::HTMLMetaElement::process):
        * html/HTMLObjectElement.cpp:
        * html/HTMLPlugInElement.h:
        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::usesMenuList const):
        (WebCore::HTMLSelectElement::createElementRenderer):
        (WebCore::HTMLSelectElement::childShouldCreateRenderer const):
        (WebCore::HTMLSelectElement::willRespondToMouseClickEvents):
        (WebCore::HTMLSelectElement::updateListBoxSelection):
        (WebCore::HTMLSelectElement::scrollToSelection):
        (WebCore::HTMLSelectElement::setOptionsChangedOnRenderer):
        (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
        (WebCore::HTMLSelectElement::defaultEventHandler):
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::createInnerTextStyle):
        * html/HTMLTextFormControlElement.cpp:
        (WebCore::HTMLTextFormControlElement::select):
        (WebCore::HTMLTextFormControlElement::adjustInnerTextStyle const):
        * html/HTMLTextFormControlElement.h:
        * html/HTMLVideoElement.cpp:
        (WebCore::HTMLVideoElement::parseAttribute):
        (WebCore::HTMLVideoElement::supportsFullscreen const):
        * html/HTMLVideoElement.h:
        * html/ImageDocument.cpp:
        (WebCore::ImageDocument::ImageDocument):
        (WebCore::ImageDocument::createDocumentStructure):
        (WebCore::ImageDocument::imageUpdated):
        * html/ImageDocument.h:
        * html/InputType.cpp:
        * html/InputType.h:
        * html/MediaDocument.cpp:
        (WebCore::MediaDocumentParser::createDocumentStructure):
        * html/MediaElementSession.cpp:
        (WebCore::MediaElementSession::clientDataBufferingTimerFired):
        (WebCore::MediaElementSession::showPlaybackTargetPicker):
        (WebCore::MediaElementSession::wirelessVideoPlaybackDisabled const):
        (WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners):
        (WebCore::MediaElementSession::isPlayingToWirelessPlaybackTarget const):
        (WebCore::MediaElementSession::requiresFullscreenForVideoPlayback const):
        * html/MediaElementSession.h:
        * html/PluginDocument.cpp:
        (WebCore::PluginDocumentParser::createDocumentStructure):
        * html/RangeInputType.cpp:
        (WebCore::RangeInputType::handleTouchEvent):
        * html/RangeInputType.h:
        * html/SearchInputType.cpp:
        (WebCore::SearchInputType::addSearchResult):
        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::isKeyboardFocusable const):
        (WebCore::TextFieldInputType::handleFocusEvent):
        (WebCore::TextFieldInputType::handleBlurEvent):
        (WebCore::TextFieldInputType::didSetValueByUserEdit):
        (WebCore::TextFieldInputType::listAttributeTargetChanged):
        * html/parser/HTMLParserScheduler.h:
        (WebCore::HTMLParserScheduler::shouldYieldBeforeToken):
        * html/parser/HTMLTreeBuilder.cpp:
        (WebCore::HTMLTreeBuilder::processCharacterBufferForInBody):
        * html/parser/HTMLTreeBuilder.h:
        * html/shadow/MediaControlElements.cpp:
        * html/shadow/MediaControlElements.h:
        * html/shadow/MediaControls.h:
        * html/shadow/SliderThumbElement.cpp:
        (WebCore::SliderThumbElement::dragFrom):
        * html/shadow/SliderThumbElement.h:
        * html/shadow/TextControlInnerElements.cpp:
        (WebCore::SearchFieldResultsButtonElement::defaultEventHandler):
        (WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement):
        * html/shadow/TextControlInnerElements.h:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::setIndicating):
        * inspector/InspectorFrontendHost.cpp:
        (WebCore::InspectorFrontendHost::platform):
        * inspector/PageScriptDebugServer.cpp:
        (WebCore::PageScriptDebugServer::runEventLoopWhilePaused):
        * inspector/agents/InspectorTimelineAgent.cpp:
        (WebCore::currentRunLoop):
        * loader/DocumentLoader.cpp:
        * loader/DocumentLoader.h:
        * loader/DocumentThreadableLoader.cpp:
        (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
        * loader/DocumentWriter.cpp:
        (WebCore::DocumentWriter::createDocument):
        * loader/EmptyClients.cpp:
        * loader/EmptyClients.h:
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkCompleted):
        (WebCore::FrameLoader::willLoadMediaElementURL):
        (WebCore::FrameLoader::stopForUserCancel):
        (WebCore::FrameLoader::commitProvisionalLoad):
        (WebCore::FrameLoader::didFirstLayout):
        (WebCore::createWindow):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::saveScrollPositionAndViewStateToItem):
        (WebCore::HistoryController::restoreScrollPositionAndViewState):
        * loader/ResourceLoader.cpp:
        (WebCore::ResourceLoader::init):
        (WebCore::ResourceLoader::willSendRequestInternal):
        * loader/ResourceLoader.h:
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::loadPlugin):
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::create):
        (WebCore::SubresourceLoader::willCancel):
        (WebCore::SubresourceLoader::notifyDone):
        (WebCore::SubresourceLoader::releaseResources):
        * loader/SubresourceLoader.h:
        * loader/cache/CachedImage.cpp:
        * page/CaptionUserPreferencesMediaAF.cpp:
        (WebCore::userCaptionPreferencesChangedNotificationCallback):
        * page/Chrome.cpp:
        (WebCore::Chrome::createColorChooser):
        (WebCore::Chrome::dispatchViewportPropertiesDidChange const):
        (WebCore::Chrome::didReceiveDocType):
        * page/Chrome.h:
        * page/ChromeClient.h:
        * page/DOMTimer.cpp:
        (WebCore::DOMTimer::install):
        (WebCore::DOMTimer::fired):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::outerHeight const):
        (WebCore::DOMWindow::outerWidth const):
        (WebCore::DOMWindow::clearTimeout):
        (WebCore::DOMWindow::addEventListener):
        (WebCore::DOMWindow::resetAllGeolocationPermission):
        (WebCore::DOMWindow::removeEventListener):
        (WebCore::DOMWindow::removeAllEventListeners):
        * page/DOMWindow.h:
        * page/DeprecatedGlobalSettings.cpp:
        (WebCore::DeprecatedGlobalSettings::globalConstRedeclarationShouldThrow):
        * page/DeprecatedGlobalSettings.h:
        * page/DragController.cpp:
        * page/EditorClient.h:
        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleMousePressEventSingleClick):
        (WebCore::EventHandler::handleMouseReleaseEvent):
        (WebCore::EventHandler::startPanScrolling):
        (WebCore::EventHandler::handleMouseMoveEvent):
        * page/EventHandler.h:
        * page/Frame.cpp:
        (WebCore::Frame::Frame):
        (WebCore::Frame::willDetachPage):
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        (WebCore::FrameView::clear):
        (WebCore::FrameView::effectiveFrameFlattening const):
        (WebCore::FrameView::flushCompositingStateForThisFrame):
        (WebCore::FrameView::scrollPositionRespectingCustomFixedPosition const):
        (WebCore::FrameView::viewportConstrainedVisibleContentRect const):
        (WebCore::FrameView::updateContentsSize):
        (WebCore::FrameView::computeScrollability const):
        (WebCore::FrameView::adjustTiledBackingCoverage):
        (WebCore::FrameView::calculateExtendedBackgroundMode const):
        (WebCore::FrameView::performPostLayoutTasks):
        (WebCore::FrameView::sizeForResizeEvent const):
        (WebCore::FrameView::sendResizeEventIfNeeded):
        * page/FrameView.h:
        * page/FrameViewLayoutContext.cpp:
        (WebCore::FrameViewLayoutContext::layout):
        * page/MemoryRelease.cpp:
        (WebCore::releaseCriticalMemory):
        (WebCore::releaseMemory):
        * page/Navigator.cpp:
        * page/Navigator.h:
        * page/NavigatorBase.cpp:
        * page/Page.cpp:
        (WebCore::Page::setIsVisibleInternal):
        (WebCore::Page::showPlaybackTargetPicker):
        * page/Page.h:
        * page/PerformanceMonitor.cpp:
        (WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
        * page/ResourceUsageOverlay.cpp:
        (WebCore::ResourceUsageOverlay::initialize):
        * page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::canDisplay const):
        * page/SettingsBase.cpp:
        * page/SettingsBase.h:
        * page/SettingsDefaultValues.h:
        (WebCore::editingBehaviorTypeForPlatform):
        * page/TextIndicator.cpp:
        (WebCore::TextIndicator::createWithRange):
        (WebCore::initializeIndicator):
        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::textDocumentParameters):
        * page/cocoa/MemoryReleaseCocoa.mm:
        (WebCore::platformReleaseMemory):
        (WebCore::jettisonExpensiveObjectsOnTopLevelNavigation):
        * page/cocoa/ResourceUsageOverlayCocoa.mm:
        (WebCore::showText):
        * page/cocoa/ResourceUsageThreadCocoa.mm:
        (WebCore::vmPageSize):
        * page/cocoa/SettingsBaseCocoa.mm:
        * page/ios/EventHandlerIOS.mm:
        * page/ios/FrameIOS.mm:
        * page/mac/ChromeMac.mm:
        * page/mac/PageMac.mm:
        (WebCore::Page::platformInitialize):
        * page/mac/WebCoreFrameView.h:
        * page/scrolling/AsyncScrollingCoordinator.cpp:
        (WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
        * page/scrolling/ScrollingTree.h:
        * page/scrolling/ScrollingTreeScrollingNode.h:
        * page/scrolling/ScrollingTreeScrollingNodeDelegate.cpp:
        * page/scrolling/ScrollingTreeScrollingNodeDelegate.h:
        * page/scrolling/ios/ScrollingCoordinatorIOS.h:
        * page/scrolling/ios/ScrollingCoordinatorIOS.mm:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
        * page/scrolling/ios/ScrollingTreeIOS.cpp:
        * page/scrolling/ios/ScrollingTreeIOS.h:
        * platform/ContentFilterUnblockHandler.h:
        * platform/Cursor.cpp:
        * platform/Cursor.h:
        * platform/DragImage.cpp:
        * platform/DragImage.h:
        * platform/FileChooser.cpp:
        * platform/FileChooser.h:
        * platform/HostWindow.h:
        * platform/LocalizedStrings.cpp:
        * platform/LocalizedStrings.h:
        * platform/LowPowerModeNotifier.cpp:
        * platform/LowPowerModeNotifier.h:
        * platform/MIMETypeRegistry.cpp:
        (WebCore::initializeSupportedImageMIMETypes):
        (WebCore::initializeSupportedNonImageMimeTypes):
        (WebCore::initializeUnsupportedTextMIMETypes):
        * platform/Pasteboard.h:
        * platform/PasteboardStrategy.h:
        * platform/PlatformKeyboardEvent.h:
        * platform/PlatformPasteboard.h:
        * platform/PlatformScreen.h:
        * platform/RemoteCommandListener.cpp:
        * platform/RuntimeApplicationChecks.h:
        * platform/ScrollAnimator.cpp:
        * platform/ScrollView.cpp:
        (WebCore::ScrollView::contentsScrollPosition const):
        (WebCore::ScrollView::setContentsScrollPosition):
        (WebCore::ScrollView::visibleContentRectInternal const):
        * platform/ScrollView.h:
        * platform/ScrollableArea.cpp:
        * platform/ScrollableArea.h:
        * platform/Scrollbar.cpp:
        * platform/Scrollbar.h:
        * platform/ThreadTimers.cpp:
        * platform/Timer.cpp:
        (WebCore::shouldSuppressThreadSafetyCheck):
        * platform/Timer.h:
        (WebCore::TimerBase::isActive const):
        * platform/ValidationBubble.h:
        * platform/Widget.h:
        * platform/audio/AudioHardwareListener.cpp:
        (WebCore::AudioHardwareListener::AudioHardwareListener):
        * platform/audio/PlatformMediaSession.h:
        * platform/audio/PlatformMediaSessionManager.h:
        * platform/audio/ios/AudioDestinationIOS.cpp:
        * platform/audio/ios/AudioDestinationIOS.h:
        * platform/audio/ios/AudioFileReaderIOS.cpp:
        * platform/audio/ios/AudioFileReaderIOS.h:
        * platform/audio/ios/AudioSessionIOS.mm:
        (WebCore::AudioSession::setCategory):
        (WebCore::AudioSession::routingContextUID const):
        * platform/audio/ios/MediaSessionManagerIOS.h:
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        * platform/cf/MainThreadSharedTimerCF.cpp:
        (WebCore::setupPowerObserver):
        (WebCore::MainThreadSharedTimer::setFireInterval):
        * platform/cf/URLCF.cpp:
        * platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
        (WebCore::ContentFilterUnblockHandler::wrapWithDecisionHandler):
        (WebCore::ContentFilterUnblockHandler::needsUIProcess const):
        (WebCore::ContentFilterUnblockHandler::encode const):
        (WebCore::ContentFilterUnblockHandler::decode):
        (WebCore::ContentFilterUnblockHandler::canHandleRequest const):
        (WebCore::dispatchToMainThread):
        (WebCore::ContentFilterUnblockHandler::requestUnblockAsync const):
        * platform/cocoa/DataDetectorsCoreSoftLink.h:
        * platform/cocoa/DataDetectorsCoreSoftLink.mm:
        * platform/cocoa/KeyEventCocoa.mm:
        * platform/cocoa/LocalizedStringsCocoa.mm:
        (WebCore::localizedNSString):
        * platform/cocoa/NetworkExtensionContentFilter.mm:
        (WebCore::NetworkExtensionContentFilter::initialize):
        * platform/cocoa/ParentalControlsContentFilter.mm:
        (WebCore::ParentalControlsContentFilter::unblockHandler const):
        * platform/cocoa/PasteboardCocoa.mm:
        (WebCore::Pasteboard::fileContentState):
        * platform/cocoa/PlatformView.h:
        * platform/cocoa/PlaybackSessionInterface.h:
        * platform/cocoa/PlaybackSessionModel.h:
        * platform/cocoa/PlaybackSessionModelMediaElement.h:
        * platform/cocoa/PlaybackSessionModelMediaElement.mm:
        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        * platform/cocoa/SystemVersion.mm:
        (WebCore::createSystemMarketingVersion):
        * platform/cocoa/VideoFullscreenChangeObserver.h:
        * platform/cocoa/VideoFullscreenModel.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        * platform/gamepad/cocoa/GameControllerGamepad.h:
        * platform/gamepad/cocoa/GameControllerGamepad.mm:
        * platform/gamepad/cocoa/GameControllerGamepadProvider.h:
        * platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
        * platform/graphics/BitmapImage.h:
        * platform/graphics/Color.h:
        * platform/graphics/ComplexTextController.cpp:
        * platform/graphics/DisplayRefreshMonitor.cpp:
        (WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor):
        * platform/graphics/FloatSize.h:
        * platform/graphics/Font.cpp:
        (WebCore::Font::Font):
        (WebCore::createAndFillGlyphPage):
        * platform/graphics/Font.h:
        * platform/graphics/FontCache.cpp:
        (WebCore::FontCache::getCachedFontPlatformData):
        (WebCore::FontCache::fontForPlatformData):
        (WebCore::FontCache::purgeInactiveFontData):
        (WebCore::FontCache::inactiveFontCount):
        * platform/graphics/FontCascade.cpp:
        (WebCore::FontCascade::FontCascade):
        * platform/graphics/FontCascadeFonts.h:
        * platform/graphics/FontDescription.h:
        * platform/graphics/FontPlatformData.h:
        (WebCore::FontPlatformData::isEmoji const):
        * platform/graphics/GraphicsContext.cpp:
        (WebCore::GraphicsContext::drawImage):
        * platform/graphics/GraphicsContext3D.h:
        * platform/graphics/GraphicsLayer.h:
        * platform/graphics/Icon.h:
        * platform/graphics/Image.cpp:
        (WebCore::Image::drawTiled):
        (WebCore::Image::computeIntrinsicDimensions):
        * platform/graphics/Image.h:
        * platform/graphics/IntPoint.h:
        * platform/graphics/IntRect.h:
        * platform/graphics/IntSize.h:
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::isAvailable):
        (WebCore::MediaPlayer::volumeChanged):
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/MediaPlayerPrivate.h:
        * platform/graphics/NamedImageGeneratedImage.cpp:
        (WebCore::NamedImageGeneratedImage::draw):
        * platform/graphics/StringTruncator.cpp:
        (WebCore::centerTruncateToBuffer):
        (WebCore::rightTruncateToBuffer):
        (WebCore::rightClipToWordBuffer):
        * platform/graphics/TextTrackRepresentation.cpp:
        * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:
        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:
        * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::supportsFullscreen const):
        (WebCore::MediaPlayerPrivateAVFoundation::rateChanged):
        * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp:
        * platform/graphics/avfoundation/WebMediaSessionManagerMac.h:
        * platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:
        * platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::supportsPersistentKeys):
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h:
        * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenMode):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVolume):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesLastModifiedTime const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::liveUpdateInterval const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::maximumDurationToCacheMediaTime const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::didPassCORSAccessCheck const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wouldTaintOrigin const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::isCurrentPlaybackTargetWireless const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetName const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsPictureInPicture const):
        * platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::flushCompositingState):
        (WebCore::GraphicsLayerCA::computeVisibleAndCoverageRect const):
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/ca/PlatformCALayer.h:
        * platform/graphics/ca/TileController.cpp:
        (WebCore::TileController::~TileController):
        (WebCore::TileController::adjustTileCoverageRect const):
        * platform/graphics/ca/TileController.h:
        * platform/graphics/ca/TileGrid.cpp:
        (WebCore::TileGrid::startedNewCohort):
        (WebCore::TileGrid::platformCALayerPaintContents):
        * platform/graphics/ca/TileGrid.h:
        * platform/graphics/ca/cocoa/LayerFlushSchedulerMac.cpp:
        (WebCore::currentRunLoop):
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (-[WebAnimationDelegate animationDidStart:]):
        (-[WebAnimationDelegate animationDidStop:finished:]):
        (WebCore::PlatformCALayerCocoa::setContentsScale):
        (WebCore::layerContentsFormat):
        (WebCore::PlatformCALayer::drawLayerContents):
        (WebCore::PlatformCALayerCocoa::backingStoreBytesPerPixel const):
        * platform/graphics/cg/GradientCG.cpp:
        (WebCore::Gradient::paint):
        * platform/graphics/cg/GraphicsContextCG.cpp:
        (WebCore::displayP3ColorSpaceRef):
        (WebCore::GraphicsContext::drawNativeImage):
        (WebCore::drawPatternCallback):
        (WebCore::GraphicsContext::drawPattern):
        (WebCore::GraphicsContext::drawLine):
        (WebCore::applyShadowOffsetWorkaroundIfNeeded):
        (WebCore::GraphicsContext::setURLForRect):
        * platform/graphics/cg/ImageBufferCG.cpp:
        (WebCore::jpegUTI):
        * platform/graphics/cg/ImageBufferDataCG.cpp:
        * platform/graphics/cg/ImageDecoderCG.cpp:
        (WebCore::ImageDecoderCG::createFrameImageAtIndex):
        * platform/graphics/cg/ImageSourceCGMac.mm:
        * platform/graphics/cg/PDFDocumentImage.cpp:
        * platform/graphics/cocoa/ColorCocoa.h:
        * platform/graphics/cocoa/ColorCocoa.mm:
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontCache::similarFont):
        (WebCore::computeNecessarySynthesis):
        (WebCore::FontDatabase::fontForPostScriptName):
        (WebCore::variationCapabilitiesForFontDescriptor):
        (WebCore::lookupFallbackFont):
        (WebCore::FontCache::systemFallbackForCharacters):
        (WebCore::FontCache::lastResortFallbackFont):
        * platform/graphics/cocoa/FontCascadeCocoa.mm:
        (WebCore::FontCascade::drawGlyphs):
        (WebCore::FontCascade::fontForCombiningCharacterSequence const):
        * platform/graphics/cocoa/FontCocoa.mm:
        (WebCore::Font::platformInit):
        (WebCore::Font::variantCapsSupportsCharacterForSynthesis const):
        (WebCore::Font::determinePitch):
        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::FontCascadeDescription::effectiveFamilyCount const):
        (WebCore::FontCascadeDescription::effectiveFamilyAt const):
        * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
        (WebCore::FontPlatformData::FontPlatformData):
        (WebCore::cascadeToLastResortAndVariationsFontDescriptor):
        * platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::texImageIOSurface2D):
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        * platform/graphics/cocoa/IOSurface.mm:
        (WebCore::optionsForBiplanarSurface):
        (WebCore::optionsFor32BitSurface):
        (WebCore::IOSurface::maximumSize):
        (WebCore::IOSurface::surfaceID const):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
        (WebCore::SystemFontDatabaseCoreText::cascadeList):
        * platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
        * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:
        (-[WebCoreTextTrackRepresentationCocoaHelper observeValueForKeyPath:ofObject:change:context:]):
        * platform/graphics/cocoa/WebMetalLayer.h:
        * platform/graphics/cv/ImageTransferSessionVT.mm:
        (WebCore::cvPixelFormatOpenGLKey):
        (WebCore::ImageTransferSessionVT::ImageTransferSessionVT):
        * platform/graphics/cv/VideoTextureCopierCV.h:
        * platform/graphics/ios/DisplayRefreshMonitorIOS.h:
        * platform/graphics/ios/DisplayRefreshMonitorIOS.mm:
        * platform/graphics/ios/FontAntialiasingStateSaver.h:
        (WebCore::FontAntialiasingStateSaver::FontAntialiasingStateSaver):
        (WebCore::FontAntialiasingStateSaver::setup):
        (WebCore::FontAntialiasingStateSaver::restore):
        * platform/graphics/ios/FontCacheIOS.mm:
        * platform/graphics/ios/IconIOS.mm:
        * platform/graphics/mac/ComplexTextControllerCoreText.mm:
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
        * platform/graphics/mac/FloatPointMac.mm:
        * platform/graphics/mac/FloatRectMac.mm:
        * platform/graphics/mac/FloatSizeMac.mm:
        * platform/graphics/mac/FontCustomPlatformData.cpp:
        (WebCore::createFontCustomPlatformData):
        * platform/graphics/mac/ImageMac.mm:
        * platform/graphics/mac/IntPointMac.mm:
        * platform/graphics/mac/IntRectMac.mm:
        * platform/graphics/mac/IntSizeMac.mm:
        * platform/graphics/mac/WebKitNSImageExtras.h:
        * platform/graphics/mac/WebKitNSImageExtras.mm:
        * platform/graphics/mac/WebLayer.mm:
        (-[WebSimpleLayer display]):
        (-[WebSimpleLayer drawInContext:]):
        * platform/graphics/opengl/Extensions3DOpenGL.cpp:
        (WebCore::Extensions3DOpenGL::supportsExtension):
        * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
        * platform/graphics/transforms/TransformationMatrix.cpp:
        (WebCore::TransformationMatrix::multiply):
        * platform/graphics/transforms/TransformationMatrix.h:
        * platform/ios/CursorIOS.cpp:
        * platform/ios/Device.cpp:
        * platform/ios/Device.h:
        * platform/ios/DeviceMotionClientIOS.h:
        * platform/ios/DeviceMotionClientIOS.mm:
        (WebCore::DeviceMotionClientIOS::motionChanged):
        * platform/ios/DeviceOrientationClientIOS.h:
        * platform/ios/DeviceOrientationClientIOS.mm:
        (WebCore::DeviceOrientationClientIOS::orientationChanged):
        * platform/ios/DragImageIOS.mm:
        * platform/ios/EventLoopIOS.mm:
        * platform/ios/KeyEventIOS.mm:
        * platform/ios/LegacyTileCache.h:
        * platform/ios/LegacyTileCache.mm:
        * platform/ios/LegacyTileGrid.h:
        * platform/ios/LegacyTileGrid.mm:
        * platform/ios/LegacyTileGridTile.h:
        * platform/ios/LegacyTileGridTile.mm:
        * platform/ios/LegacyTileLayer.h:
        * platform/ios/LegacyTileLayer.mm:
        * platform/ios/LegacyTileLayerPool.h:
        * platform/ios/LegacyTileLayerPool.mm:
        * platform/ios/LowPowerModeNotifierIOS.mm:
        * platform/ios/PasteboardIOS.mm:
        * platform/ios/PlatformEventFactoryIOS.h:
        * platform/ios/PlatformEventFactoryIOS.mm:
        * platform/ios/PlatformPasteboardIOS.mm:
        * platform/ios/PlatformScreenIOS.mm:
        * platform/ios/PlatformSpeechSynthesizerIOS.mm:
        * platform/ios/PlaybackSessionInterfaceAVKit.h:
        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        * platform/ios/RemoteCommandListenerIOS.h:
        * platform/ios/RemoteCommandListenerIOS.mm:
        * platform/ios/SSLKeyGeneratorIOS.cpp:
        * platform/ios/ScrollAnimatorIOS.h:
        * platform/ios/ScrollAnimatorIOS.mm:
        * platform/ios/ScrollViewIOS.mm:
        (WebCore::ScrollView::platformSetContentsSize):
        * platform/ios/ScrollbarThemeIOS.h:
        * platform/ios/ScrollbarThemeIOS.mm:
        * platform/ios/SystemMemoryIOS.cpp:
        (WebCore::systemMemoryLevel):
        * platform/ios/ThemeIOS.h:
        * platform/ios/ThemeIOS.mm:
        * platform/ios/TileControllerMemoryHandlerIOS.cpp:
        * platform/ios/TileControllerMemoryHandlerIOS.h:
        * platform/ios/UserAgentIOS.mm:
        (WebCore::deviceNameForUserAgent):
        * platform/ios/ValidationBubbleIOS.mm:
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (WebCore::supportsPictureInPicture):
        * platform/ios/WebAVPlayerController.h:
        * platform/ios/WebAVPlayerController.mm:
        * platform/ios/WebBackgroundTaskController.h:
        * platform/ios/WebBackgroundTaskController.mm:
        * platform/ios/WebCoreMotionManager.h:
        * platform/ios/WebCoreMotionManager.mm:
        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        * platform/ios/WebSQLiteDatabaseTrackerClient.h:
        * platform/ios/WebSQLiteDatabaseTrackerClient.mm:
        * platform/ios/WebVideoFullscreenControllerAVKit.h:
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::requestUpdateInlineRect):
        (VideoFullscreenControllerContext::requestVideoContentLayer):
        (VideoFullscreenControllerContext::returnVideoContentLayer):
        (VideoFullscreenControllerContext::didSetupFullscreen):
        (VideoFullscreenControllerContext::didExitFullscreen):
        * platform/ios/WidgetIOS.mm:
        * platform/ios/wak/FloatingPointEnvironment.cpp:
        * platform/ios/wak/FloatingPointEnvironment.h:
        * platform/ios/wak/WAKAppKitStubs.m:
        * platform/ios/wak/WAKClipView.m:
        * platform/ios/wak/WAKResponder.m:
        * platform/ios/wak/WAKScrollView.mm:
        * platform/ios/wak/WAKView.mm:
        * platform/ios/wak/WAKWindow.mm:
        * platform/ios/wak/WKContentObservation.cpp:
        * platform/ios/wak/WKGraphics.mm:
        * platform/ios/wak/WKUtilities.c:
        * platform/ios/wak/WKView.mm:
        * platform/ios/wak/WebCoreThread.mm:
        * platform/ios/wak/WebCoreThreadRun.cpp:
        * platform/ios/wak/WebCoreThreadSystemInterface.cpp:
        * platform/mac/DragDataMac.mm:
        (WebCore::rtfPasteboardType):
        (WebCore::rtfdPasteboardType):
        (WebCore::stringPasteboardType):
        (WebCore::urlPasteboardType):
        (WebCore::htmlPasteboardType):
        (WebCore::colorPasteboardType):
        (WebCore::pdfPasteboardType):
        (WebCore::tiffPasteboardType):
        (WebCore::DragData::containsURL const):
        * platform/mac/MediaRemoteSoftLink.cpp:
        * platform/mac/MediaRemoteSoftLink.h:
        * platform/mac/SuddenTermination.mm:
        * platform/mac/WebCoreFullScreenPlaceholderView.mm:
        * platform/mac/WebCoreFullScreenWarningView.h:
        * platform/mac/WebCoreFullScreenWarningView.mm:
        * platform/mac/WebCoreFullScreenWindow.h:
        * platform/mac/WebCoreFullScreenWindow.mm:
        * platform/mac/WebNSAttributedStringExtras.mm:
        * platform/mediastream/RealtimeMediaSourceFactory.h:
        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::~RealtimeVideoSource):
        (WebCore::RealtimeVideoSource::prepareToProduceData):
        * platform/mediastream/ios/AVAudioSessionCaptureDevice.h:
        * platform/mediastream/ios/AVAudioSessionCaptureDevice.mm:
        * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
        * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
        * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
        * platform/mediastream/libwebrtc/LibWebRTCMacros.h:
        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
        (WebCore::deviceIsAvailable):
        * platform/mediastream/mac/AVMediaCaptureSource.mm:
        (WebCore::AVMediaCaptureSource::AVMediaCaptureSource):
        (WebCore::AVMediaCaptureSource::stopProducingData):
        (-[WebCoreAVMediaCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVMediaCaptureSourceObserver removeNotificationObservers]):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::stopProducingData):
        (WebCore::AVVideoCaptureSource::prefersPreset):
        (WebCore::sensorOrientation):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::monitorOrientation):
        (-[WebCoreAVVideoCaptureSourceObserver addNotificationObservers]):
        (-[WebCoreAVVideoCaptureSourceObserver removeNotificationObservers]):
        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
        (WebCore::AudioTrackPrivateMediaStreamCocoa::createAudioUnit):
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioSharedUnit::setupAudioUnit):
        (WebCore::CoreAudioCaptureSource::create):
        (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
        (WebCore::CoreAudioCaptureSource::~CoreAudioCaptureSource):
        (WebCore::CoreAudioCaptureSource::startProducingData):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa):
        (WebCore::DisplayCaptureSourceCocoa::startProducingData):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        * platform/mock/MediaPlaybackTargetMock.cpp:
        * platform/mock/MediaPlaybackTargetMock.h:
        * platform/mock/MediaPlaybackTargetPickerMock.cpp:
        * platform/mock/MediaPlaybackTargetPickerMock.h:
        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
        (WebCore::MockRealtimeAudioSource::startProducingData):
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        * platform/mock/MockRealtimeVideoSource.cpp:
        * platform/network/CredentialStorage.cpp:
        * platform/network/NetworkStateNotifier.h:
        * platform/network/ResourceHandle.cpp:
        (WebCore::builtinResourceHandleConstructorMap):
        * platform/network/ResourceHandle.h:
        * platform/network/ResourceHandleClient.h:
        * platform/network/ResourceRequestBase.cpp:
        * platform/network/ResourceRequestBase.h:
        * platform/network/cf/DNSResolveQueueCFNet.cpp:
        * platform/network/cf/ProxyServerCFNet.cpp:
        * platform/network/cf/ResourceHandleCFNet.cpp:
        (WebCore::ResourceHandle::createCFURLConnection):
        * platform/network/cf/ResourceRequest.h:
        (WebCore::ResourceRequest::resourcePrioritiesEnabled):
        * platform/network/cf/ResourceRequestCFNet.cpp:
        (WebCore::ResourceRequest::doUpdatePlatformRequest):
        (WebCore::ResourceRequest::doUpdateResourceRequest):
        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
        (WebCore::callbacksRunLoop):
        (WebCore::copyCONNECTProxyResponse):
        * platform/network/cocoa/CookieCocoa.mm:
        (WebCore::Cookie::operator NSHTTPCookie * _Nullable  const):
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::cookiesForURL):
        (WebCore::setHTTPCookiesForURL):
        * platform/network/cocoa/ResourceRequestCocoa.mm:
        (WebCore::ResourceRequest::doUpdateResourceRequest):
        (WebCore::ResourceRequest::doUpdatePlatformRequest):
        * platform/network/ios/NetworkStateNotifierIOS.mm:
        * platform/network/ios/WebCoreURLResponseIOS.h:
        * platform/network/ios/WebCoreURLResponseIOS.mm:
        * platform/network/mac/ResourceErrorMac.mm:
        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::createNSURLConnection):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
        * platform/network/mac/UTIUtilities.mm:
        * platform/sql/SQLiteDatabase.h:
        (WebCore::SQLiteDatabase::sqlite3Handle const):
        * platform/sql/SQLiteFileSystem.cpp:
        * platform/sql/SQLiteFileSystem.h:
        * platform/sql/SQLiteTransaction.cpp:
        (WebCore::SQLiteTransaction::begin):
        (WebCore::SQLiteTransaction::commit):
        (WebCore::SQLiteTransaction::rollback):
        (WebCore::SQLiteTransaction::stop):
        * platform/text/PlatformLocale.cpp:
        * platform/text/PlatformLocale.h:
        * platform/text/ios/LocalizedDateCache.h:
        * platform/text/ios/LocalizedDateCache.mm:
        * platform/text/ios/TextEncodingRegistryIOS.mm:
        * platform/text/mac/LocaleMac.h:
        * platform/text/mac/LocaleMac.mm:
        * plugins/PluginViewBase.h:
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paintPlatformDocumentMarker):
        (WebCore::InlineTextBox::resolveStyleForMarkedText):
        (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers):
        * rendering/MarkedText.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paint):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBoxDecorations):
        (WebCore::allowMinMaxPercentagesInAutoHeightBlocksQuirk):
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
        * rendering/RenderButton.cpp:
        * rendering/RenderButton.h:
        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::styleWillChange):
        (WebCore::RenderElement::styleDidChange):
        * rendering/RenderEmbeddedObject.cpp:
        (WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing const):
        (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
        (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription):
        * rendering/RenderFileUploadControl.cpp:
        (WebCore::RenderFileUploadControl::maxFilenameWidth const):
        (WebCore::RenderFileUploadControl::paintObject):
        * rendering/RenderFrameSet.cpp:
        (WebCore::RenderFrameSet::positionFrames):
        * rendering/RenderIFrame.h:
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paintAreaElementFocusRing):
        * rendering/RenderImage.h:
        * rendering/RenderInline.cpp:
        * rendering/RenderInline.h:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::canCreateStackingContext):
        (WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
        (WebCore::RenderLayer::scrollTo):
        (WebCore::RenderLayer::scrollRectToVisible):
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
        (WebCore::RenderLayer::showsOverflowControls const):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
        (WebCore::RenderLayerBacking::shouldClipCompositedBounds const):
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::paintsIntoWindow const):
        (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
        (WebCore::RenderLayerBacking::paintIntoLayer):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
        (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
        (WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
        (WebCore::RenderLayerCompositor::didFlushChangesForLayer):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::setIsInWindow):
        (WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame const):
        (WebCore::RenderLayerCompositor::isAsyncScrollableStickyLayer const):
        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
        (WebCore::RenderLayerCompositor::contentsScaleMultiplierForNewTiles const):
        (WebCore::RenderLayerCompositor::ensureRootLayer):
        (WebCore::RenderLayerCompositor::computeStickyViewportConstraints const):
        (WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
        (WebCore::RenderLayerCompositor::didAddScrollingLayer):
        * rendering/RenderLayerCompositor.h:
        * rendering/RenderLayerModelObject.cpp:
        (WebCore::RenderLayerModelObject::shouldPlaceBlockDirectionScrollbarOnLeft const):
        * rendering/RenderLineBreak.cpp:
        * rendering/RenderLineBreak.h:
        * rendering/RenderMenuList.cpp:
        (WebCore::RenderMenuList::RenderMenuList):
        (WebCore::RenderMenuList::willBeDestroyed):
        (WebCore::RenderMenuList::adjustInnerStyle):
        (RenderMenuList::updateFromElement):
        (RenderMenuList::setTextFromOption):
        (RenderMenuList::hidePopup):
        (RenderMenuList::popupDidHide):
        * rendering/RenderMenuList.h:
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::shouldApplyCompositedContainerScrollsForRepaint):
        (WebCore::RenderObject::destroy):
        * rendering/RenderObject.h:
        * rendering/RenderSearchField.cpp:
        (WebCore::RenderSearchField::itemText const):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::setRenderedText):
        * rendering/RenderText.h:
        * rendering/RenderTextControl.cpp:
        * rendering/RenderTextControl.h:
        * rendering/RenderTextControlMultiLine.cpp:
        (WebCore::RenderTextControlMultiLine::getAverageCharWidth):
        * rendering/RenderTextControlSingleLine.cpp:
        (WebCore::RenderTextControlSingleLine::layout):
        (WebCore::RenderTextControlSingleLine::getAverageCharWidth):
        (WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth const):
        * rendering/RenderTextLineBoxes.cpp:
        (WebCore::lineDirectionPointFitsInBox):
        (WebCore::RenderTextLineBoxes::positionForPoint const):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paintBorderOnly):
        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeIOS.mm:
        (WebCore::arKitBundle):
        * rendering/RenderView.cpp:
        (WebCore::RenderView::availableLogicalHeight const):
        (WebCore::RenderView::clientLogicalWidthForFixedPosition const):
        (WebCore::RenderView::clientLogicalHeightForFixedPosition const):
        (WebCore::RenderView::repaintViewRectangle const):
        * rendering/RenderWidget.cpp:
        (WebCore::RenderWidget::willBeDestroyed):
        * rendering/RootInlineBox.cpp:
        (WebCore::RootInlineBox::selectionTop const):
        (WebCore::RootInlineBox::selectionBottom const):
        * rendering/style/RenderStyle.h:
        * rendering/style/StyleRareInheritedData.cpp:
        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
        (WebCore::StyleRareInheritedData::operator== const):
        * rendering/style/StyleRareInheritedData.h:
        * rendering/updating/RenderTreeUpdater.cpp:
        (WebCore::RenderTreeUpdater::updateElementRenderer):
        * style/StyleResolveForDocument.cpp:
        (WebCore::Style::resolveForDocument):
        * testing/Internals.cpp:
        (WebCore::Internals::getCurrentCursorInfo):
        (WebCore::Internals::isSelectPopupVisible):
        (WebCore::Internals::setQuickLookPassword):
        * testing/Internals.mm:
        (WebCore::Internals::userPrefersReducedMotion const):
        * testing/js/WebCoreTestSupportPrefix.h:
        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::workerThread):

2018-10-18  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] The TextTrackLoader parameter in TextTrackLoaderClient virtual methods should be a reference
        https://bugs.webkit.org/show_bug.cgi?id=190730

        Reviewed by Chris Dumez.

        No new tests. No change in behavior.

        * html/track/LoadableTextTrack.cpp:
        (WebCore::LoadableTextTrack::newCuesAvailable):
        (WebCore::LoadableTextTrack::cueLoadingCompleted):
        (WebCore::LoadableTextTrack::newRegionsAvailable):
        * html/track/LoadableTextTrack.h:
        * loader/TextTrackLoader.cpp:
        (WebCore::TextTrackLoader::cueLoadTimerFired):
        (WebCore::TextTrackLoader::newRegionsParsed):
        * loader/TextTrackLoader.h:

2018-10-18  Alex Christensen  <achristensen@webkit.org>

        Clean up FrameLoader two-state enums
        https://bugs.webkit.org/show_bug.cgi?id=190731

        Reviewed by Chris Dumez.

        This patch does three things:
        1. Add an overload to EnumTraits so we do not need to list out the valid values of boolean enum classes.
        The valid values are always 0 and 1.  This is used when decoding from IPC.
        2. Add a 2-state enum class for NewLoadInProgress instad of a bool so we can understand the code better.
        3. Begin passing LockBackForwardList to the UIProcess.  We will need it soon for PSON.

        * history/CachedFrame.h:
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::provisionalLoadStarted):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::commitProvisionalLoad):
        (WebCore::FrameLoader::clientRedirectCancelledOrFinished):
        (WebCore::FrameLoader::clientRedirected):
        (WebCore::FrameLoader::receivedMainResourceError):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * loader/FrameLoaderTypes.h:
        * loader/NavigationScheduler.cpp:
        (WebCore::ScheduledNavigation::didStopTimer):
        (WebCore::NavigationScheduler::cancel):
        * loader/NavigationScheduler.h:
        * platform/network/StoredCredentialsPolicy.h:

2018-10-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [GTK] fast/css/pseudo-visited-background-color-on-input.html is failing since r237425
        https://bugs.webkit.org/show_bug.cgi?id=190712

        Reviewed by Tim Horton.

        Ensure that color inputs are enabled by default on GTK, and that color inputs have a `-webkit-appearance` of
        `color-well` by default. Fixes fast/css/pseudo-visited-background-color-on-input.html on GTK.

        * page/RuntimeEnabledFeatures.cpp:
        (WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::colorInputStyleSheet const):
        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::platformUsesColorWellAppearance const):
        (WebCore::RenderTheme::platformColorInputStyleSheet const): Deleted.

        Replace this with a platform hook that determines whether we want to use `-webkit-appearance: color-well;` by
        default for inputs of type color. For now, only iOS overrides this to return false; in the future, we should
        support `-webkit-appearance: color-well;` on iOS, and remove this platform hook entirely.

        * rendering/RenderThemeIOS.h:
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::platformColorInputStyleSheet const): Deleted.

2018-10-18  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Remove the previous MDNS resolution mechanism.
        Instead, add support for the AsyncResolver mechanism added to libwebrtc.
        Covered by current mdns webrtc test that is unflaked.

        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::addIceCandidate):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::LibWebRTCProvider::createPeerConnection):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):
        * testing/MockLibWebRTCPeerConnection.h:

2018-10-18  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Factor out rect mapping and clipping logic from computeRectForRepaint
        https://bugs.webkit.org/show_bug.cgi?id=189833

        Reviewed by Simon Fraser.

        Factor out the rect mapping and clipping logic from computeRectForRepaint to a new
        computeVisibleRectInContainer method that computeRectForRepaint now calls. Make
        computeVisibleRectInContainer take a VisibleRectContext with options to use
        edge-inclusive intersection and to apply all clips and scrolls rather than only
        the clips and scrolls that are currently applied by the repaint logic. These
        options will be used by IntersectionObserver in a future patch.

        No new tests, no change in behavior.

        * platform/graphics/FloatRect.cpp:
        (WebCore::FloatRect::edgeInclusiveIntersect):
        * platform/graphics/FloatRect.h:
        * platform/graphics/LayoutRect.cpp:
        (WebCore::LayoutRect::edgeInclusiveIntersect):
        * platform/graphics/LayoutRect.h:
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::applyCachedClipAndScrollPosition const):
        (WebCore::RenderBox::computeVisibleRectUsingPaintOffset const):
        (WebCore::RenderBox::computeVisibleRectInContainer const):
        (WebCore::RenderBox::applyCachedClipAndScrollPositionForRepaint const): Deleted.
        (WebCore::RenderBox::shouldApplyClipAndScrollPositionForRepaint const): Deleted.
        The iOS-specific logic in this method has moved to RenderObject::shouldApplyCompositedContainerScrollsForRepaint.
        (WebCore::RenderBox::computeRectForRepaint const): Deleted.
        * rendering/RenderBox.h:
        (WebCore::RenderBox::computeRectForRepaint): Deleted.
        * rendering/RenderInline.cpp:
        (WebCore::RenderInline::clippedOverflowRectForRepaint const):
        (WebCore::RenderInline::computeVisibleRectUsingPaintOffset const):
        (WebCore::RenderInline::computeVisibleRectInContainer const):
        (WebCore::RenderInline::computeRectForRepaint const): Deleted.
        * rendering/RenderInline.h:
        (WebCore::RenderInline::computeRectForRepaint): Deleted.
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::shouldApplyCompositedContainerScrollsForRepaint):
        (WebCore::RenderObject::visibleRectContextForRepaint):
        (WebCore::RenderObject::computeRectForRepaint const):
        (WebCore::RenderObject::computeFloatRectForRepaint const):
        (WebCore::RenderObject::computeVisibleRectInContainer const):
        (WebCore::RenderObject::computeFloatVisibleRectInContainer const):
        * rendering/RenderObject.h:
        (WebCore::RenderObject::computeAbsoluteRepaintRect const):
        (WebCore::RenderObject::VisibleRectContext::VisibleRectContext):
        (WebCore::RenderObject::RepaintContext::RepaintContext): Deleted.
        (WebCore::RenderObject::computeRectForRepaint): Deleted.
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::computeVisibleRectInContainer const):
        (WebCore::RenderTableCell::computeRectForRepaint const): Deleted.
        * rendering/RenderTableCell.h:
        * rendering/RenderView.cpp:
        (WebCore::RenderView::computeVisibleRectInContainer const):
        (WebCore::RenderView::computeRectForRepaint const): Deleted.
        * rendering/RenderView.h:
        * rendering/svg/RenderSVGForeignObject.cpp:
        (WebCore::RenderSVGForeignObject::computeFloatVisibleRectInContainer const):
        (WebCore::RenderSVGForeignObject::computeVisibleRectInContainer const):
        (WebCore::RenderSVGForeignObject::computeFloatRectForRepaint const): Deleted.
        (WebCore::RenderSVGForeignObject::computeRectForRepaint const): Deleted.
        * rendering/svg/RenderSVGForeignObject.h:
        * rendering/svg/RenderSVGInline.cpp:
        (WebCore::RenderSVGInline::computeFloatVisibleRectInContainer const):
        (WebCore::RenderSVGInline::computeFloatRectForRepaint const): Deleted.
        * rendering/svg/RenderSVGInline.h:
        * rendering/svg/RenderSVGModelObject.cpp:
        (WebCore::RenderSVGModelObject::computeFloatVisibleRectInContainer const):
        (WebCore::RenderSVGModelObject::computeFloatRectForRepaint const): Deleted.
        * rendering/svg/RenderSVGModelObject.h:
        * rendering/svg/RenderSVGRoot.cpp:
        (WebCore::RenderSVGRoot::computeFloatVisibleRectInContainer const):
        (WebCore::RenderSVGRoot::computeFloatRectForRepaint const): Deleted.
        * rendering/svg/RenderSVGRoot.h:
        * rendering/svg/RenderSVGText.cpp:
        (WebCore::RenderSVGText::computeVisibleRectInContainer const):
        (WebCore::RenderSVGText::computeFloatVisibleRectInContainer const):
        (WebCore::RenderSVGText::computeRectForRepaint const): Deleted.
        (WebCore::RenderSVGText::computeFloatRectForRepaint const): Deleted.
        * rendering/svg/RenderSVGText.h:
        * rendering/svg/SVGRenderSupport.cpp:
        (WebCore::SVGRenderSupport::clippedOverflowRectForRepaint):
        (WebCore::SVGRenderSupport::computeFloatVisibleRectInContainer):
        (WebCore::SVGRenderSupport::computeFloatRectForRepaint): Deleted.
        * rendering/svg/SVGRenderSupport.h:

2018-10-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable the datalist element by default on iOS and macOS
        https://bugs.webkit.org/show_bug.cgi?id=190594
        <rdar://problem/45281159>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Rebaselined existing layout tests.

        * Configurations/FeatureDefines.xcconfig:
        * bindings/js/WebCoreBuiltinNames.h:
        * css/CSSDefaultStyleSheets.cpp:
        (WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
        * css/CSSDefaultStyleSheets.h:
        * css/InspectorCSSOMWrappers.cpp:
        (WebCore::InspectorCSSOMWrappers::collectDocumentWrappers):
        * css/html.css:

        Remove color input and datalist style rules from the default UA stylesheet.

        (input[type="color"]::-webkit-color-swatch-wrapper): Deleted.
        * html/HTMLDataListElement.idl:

        Make HTMLDataListElement runtime-enabled.

        * html/HTMLTagNames.in:
        * html/RangeInputType.cpp:

        Make a slight adjustment here so that inputs of type range respect the list attribute. Fixes a few layout tests
        that add a datalist to an input of type range. See <https://bugs.webkit.org/show_bug.cgi?id=190613> for more
        details.

        (WebCore::RangeInputType::shouldRespectListAttribute):
        * html/TextFieldInputType.cpp:
        (WebCore::TextFieldInputType::shouldRespectListAttribute):
        * page/RuntimeEnabledFeatures.h:

        Add a runtime-enabled feature for the datalist element. Additionally, make the runtime-enabled feature for input
        type color false by default, so that it's off in WebKitLegacy.

        (WebCore::RuntimeEnabledFeatures::dataListElementEnabled const):
        (WebCore::RuntimeEnabledFeatures::setDataListElementEnabled):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::colorInputStyleSheet const):

        Add new style-sheet hooks for datalist and input type color, so that style rules for color inputs and datalists
        can be added at runtime only if the feature is enabled. This ensures that in WebKitLegacy (or other ports where
        either or both elements are disabled), we don't still apply rules for datalist and input[type="color"]. Notably,
        this allows fallback content inside datalist elements to still work in WebKitLegacy (which would otherwise be
        hidden when using the default stylesheet since `display: none` is applied to datalist by default). This also
        prevents inputs of type color from having a smaller size, no outline, and the appearance of a color well on
        macOS.

        (WebCore::RenderTheme::dataListStyleSheet const):
        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::platformColorInputStyleSheet const):
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::platformColorInputStyleSheet const):

2018-10-17  Justin Michaud  <justin_michaud@apple.com>

        Parse paint() and store paint callbacks for CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190657

        Reviewed by Dean Jackson.

        Implement support for parsing paint() images in css, and store CSS paint callback objects in the paint definition map.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSCSSPaintWorkletGlobalScopeCustom.cpp:
        (WebCore::JSCSSPaintWorkletGlobalScope::visitAdditionalChildren):
        (WebCore::JSCSSPaintWorkletGlobalScope::registerPaint):
        * css/CSSImageGeneratorValue.cpp:
        (WebCore::CSSImageGeneratorValue::image):
        (WebCore::CSSImageGeneratorValue::isFixedSize const):
        (WebCore::CSSImageGeneratorValue::fixedSize):
        (WebCore::CSSImageGeneratorValue::isPending const):
        (WebCore::CSSImageGeneratorValue::knownToBeOpaque const):
        (WebCore::CSSImageGeneratorValue::loadSubimages):
        * css/CSSPaintImageValue.cpp: Added.
        (WebCore::CSSPaintImageValue::customCSSText const):
        * css/CSSPaintImageValue.h: Added.
        * css/CSSPaintWorkletGlobalScope.h:
        * css/CSSPaintWorkletGlobalScope.idl:
        * css/CSSValue.cpp:
        (WebCore::CSSValue::equals const):
        (WebCore::CSSValue::cssText const):
        (WebCore::CSSValue::destroy):
        * css/CSSValue.h:
        (WebCore::CSSValue::isPaintImageValue const):
        * css/CSSValueKeywords.in:
        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeCustomPaint):
        (WebCore::CSSPropertyParserHelpers::consumeGeneratedImage):
        (WebCore::CSSPropertyParserHelpers::isGeneratedImage):
        * platform/mediastream/mac/RealtimeVideoUtilities.h:

2018-10-17  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Consolidate all image conversion and resizing into one class
        https://bugs.webkit.org/show_bug.cgi?id=190519
        <rdar://problem/45224307>

        Try to fix the iOSMac build after r237236.

        * platform/graphics/cv/ImageTransferSessionVT.h:
        * platform/graphics/cv/ImageTransferSessionVT.mm:

2018-10-17  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Implement WebGPU bindings up through WebGPUDevice creation
        https://bugs.webkit.org/show_bug.cgi?id=190653

        Reviewed by Dean Jackson.

        Test: webgpu/webgpu-enabled.html

        Add WebGPU Sketch bindings for window.webgpu, WebGPUAdapter, WebGPUAdapterDescriptor,
        and WebGPUDevice creation. Based off IDL commit version b6c61ee. 
        https://github.com/gpuweb/gpuweb/blob/master/design/sketch.webidl

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webgpu/DOMWindowWebGPU.cpp: Added.
        (WebCore::DOMWindowWebGPU::DOMWindowWebGPU):
        (WebCore::DOMWindowWebGPU::supplementName):
        (WebCore::DOMWindowWebGPU::from):
        (WebCore::DOMWindowWebGPU::webgpu):
        (WebCore::DOMWindowWebGPU::webgpu const):
        * Modules/webgpu/DOMWindowWebGPU.h: Added.
        * Modules/webgpu/DOMWindowWebGPU.idl: Added.
        * Modules/webgpu/WebGPU.cpp: Added.
        (WebCore::WebGPU::create):
        (WebCore::WebGPU::requestAdapter const):
        * Modules/webgpu/WebGPU.h: Added.
        * Modules/webgpu/WebGPU.idl: Added.
        * Modules/webgpu/WebGPUAdapter.cpp: Added.
        (WebCore::WebGPUAdapter::create):
        (WebCore::WebGPUAdapter::WebGPUAdapter):
        (WebCore::WebGPUAdapter::createDevice):
        * Modules/webgpu/WebGPUAdapter.h: Added.
        * Modules/webgpu/WebGPUAdapter.idl: Added.
        * Modules/webgpu/WebGPUAdapterDescriptor.h: Added.
        * Modules/webgpu/WebGPUAdapterDescriptor.idl: Added.
        * Modules/webgpu/WebGPUDevice.cpp: Added.
        (WebCore::WebGPUDevice::create):
        (WebCore::WebGPUDevice::WebGPUDevice):
        * Modules/webgpu/WebGPUDevice.h: Added.
        (WebCore::WebGPUDevice::adapter const):
        * Modules/webgpu/WebGPUDevice.idl: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:

2018-10-17  Andy Estes  <aestes@apple.com>

        [Apple Pay] Increment the API version to 5
        https://bugs.webkit.org/show_bug.cgi?id=190686
        <rdar://problem/45348523>

        Reviewed by Simon Fraser.

        Test: http/tests/ssl/applepay/ApplePaySessionV5.html

        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::supportsVersion):

2018-10-17  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Consolidate all image conversion and resizing into one class
        https://bugs.webkit.org/show_bug.cgi?id=190519
        <rdar://problem/45224307>

        Reviewed by Youenn Fablet.

        No new tests, no functional change.

        * SourcesCocoa.txt: Add ImageTransferSessionVT.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/MediaSample.h:
        (WebCore::MediaSample::videoPixelFormat const): New.

        * platform/cocoa/VideoToolboxSoftLink.cpp: Add new kVTPixelTransferProperty keys.
        * platform/cocoa/VideoToolboxSoftLink.h:

        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
        (WebCore::MediaSampleAVFObjC::create): Remove unimplemented variant.
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
        (WebCore::MediaSampleAVFObjC::videoPixelFormat const): New.

        * platform/graphics/cv/ImageTransferSessionVT.h: Added.
        (WebCore::ImageTransferSessionVT::create):
        * platform/graphics/cv/ImageTransferSessionVT.mm: Added.
        (WebCore::ImageTransferSessionVT::ImageTransferSessionVT):
        (WebCore::ImageTransferSessionVT::~ImageTransferSessionVT):
        (WebCore::ImageTransferSessionVT::setSize):
        (WebCore::ImageTransferSessionVT::createPixelBuffer):
        (WebCore::ImageTransferSessionVT::createCMSampleBuffer):
        (WebCore::roundUpToMacroblockMultiple):
        (WebCore::ImageTransferSessionVT::ioSurfacePixelBufferCreationOptions):
        (WebCore::ImageTransferSessionVT::createMediaSample):

        * platform/graphics/cv/PixelBufferResizer.h: Removed.
        * platform/graphics/cv/PixelBufferResizer.mm: Removed.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::prefersPreset):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection): Remove
        the resizing logic, it is handled by the base class.

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::capabilities):
        (WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
        (WebCore::DisplayCaptureSourceCocoa::setIntrinsicSize):
        (WebCore::DisplayCaptureSourceCocoa::emitFrame): Remove resizing logic, just use a transfer
        session to create an image from the capture source native output format.
        (WebCore::DisplayCaptureSourceCocoa::sampleBufferFromPixelBuffer): Deleted.
        (WebCore::roundUpToMacroblockMultiple): Deleted.
        (WebCore::DisplayCaptureSourceCocoa::pixelBufferFromIOSurface): Deleted.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

        * platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): Use image transfer session.
        (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer): Deleted.
        (WebCore::MockRealtimeVideoSourceMac::pixelBufferFromCGImage const): Deleted.
        (WebCore::MockRealtimeVideoSourceMac::setSizeAndFrameRateWithPreset): Deleted.

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
        (WebCore::ScreenDisplayCaptureSourceMac::generateFrame): Return the IOSurface directly.

        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
        (WebCore::WindowDisplayCaptureSourceMac::generateFrame): Return the CGImage directly.
        (WebCore::WindowDisplayCaptureSourceMac::pixelBufferFromCGImage): Deleted.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::capabilities): Only the camera supports device ID.
        (WebCore::MockRealtimeVideoSource::settings): Ditto.

2018-10-17  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up capture source factory management
        https://bugs.webkit.org/show_bug.cgi?id=190502
        <rdar://problem/45212447>

        Reviewed by Youenn Fablet.

        No new tests, no functional change.

        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::setAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::audioFactory):
        (WebCore::RealtimeMediaSourceCenter::setVideoFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetVideoFactory):
        (WebCore::RealtimeMediaSourceCenter::videoFactory):
        (WebCore::RealtimeMediaSourceCenter::setDisplayCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetDisplayCaptureFactory):
        (WebCore::RealtimeMediaSourceCenter::displayCaptureFactory):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        (WebCore::RealtimeMediaSourceCenter::setAudioFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory): Deleted.
        (): Deleted.
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::audioFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::videoFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::displayCaptureFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::audioCaptureSourceFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::audioFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::videoFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::displayCaptureFactory): Deleted.
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.h:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        (WebCore::RealtimeMediaSourceCenterMac::audioFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterMac::videoFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterMac::displayCaptureFactoryPrivate):
        (WebCore::RealtimeMediaSourceCenterMac::videoCaptureSourceFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterMac::displayCaptureSourceFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterMac::audioCaptureSourceFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterMac::audioFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterMac::videoFactory): Deleted.
        (WebCore::RealtimeMediaSourceCenterMac::displayCaptureFactory): Deleted.
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeMediaSourceCenter::audioFactoryPrivate):
        (WebCore::MockRealtimeMediaSourceCenter::videoFactoryPrivate):
        (WebCore::MockRealtimeMediaSourceCenter::displayCaptureFactoryPrivate):
        (WebCore::MockRealtimeMediaSourceCenter::audioFactory): Deleted.
        (WebCore::MockRealtimeMediaSourceCenter::videoFactory): Deleted.
        (WebCore::MockRealtimeMediaSourceCenter::displayCaptureFactory): Deleted.
        * platform/mock/MockRealtimeMediaSourceCenter.h:

2018-10-17  Alex Christensen  <achristensen@webkit.org>

        BackForwardClient needs to be able to support UIProcess-only back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190675

        Reviewed by Chris Dumez.

        Return a RefPtr<HistoryItem> instead of a HistoryItem so that we will be able to return a
        HistoryItem that has been created instead of a pointer to a HistoryItem that is owned by something else.
        Also use unsigned for the back and forward list counts because they can never be negative.

        * history/BackForwardClient.h:
        * history/BackForwardController.cpp:
        (WebCore::BackForwardController::backItem):
        (WebCore::BackForwardController::currentItem):
        (WebCore::BackForwardController::forwardItem):
        (WebCore::BackForwardController::canGoBackOrForward const):
        (WebCore::BackForwardController::goBackOrForward):
        (WebCore::BackForwardController::goBack):
        (WebCore::BackForwardController::goForward):
        (WebCore::BackForwardController::count const):
        (WebCore::BackForwardController::backCount const):
        (WebCore::BackForwardController::forwardCount const):
        (WebCore::BackForwardController::itemAtIndex):
        * history/BackForwardController.h:
        (WebCore::BackForwardController::backItem): Deleted.
        (WebCore::BackForwardController::currentItem): Deleted.
        (WebCore::BackForwardController::forwardItem): Deleted.
        * loader/EmptyClients.cpp:
        * loader/NavigationScheduler.cpp:
        (WebCore::NavigationScheduler::scheduleHistoryNavigation):

2018-10-17  Antoine Quint  <graouts@apple.com>

        [Web Animations] Do not create a DocumentTimeline to suspend or resume animations
        https://bugs.webkit.org/show_bug.cgi?id=190660

        Reviewed by Dean Jackson.

        We check that there is an existing timeline before trying to suspend or resume its animations, otherwise
        we're creating a DocumentTimeline when nothing requires for it to exist. We also have to check that we
        suspend animations when a DocumentTimeline is created while the page is not visible.

        No new tests as there is no change in behavior here.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::DocumentTimeline):
        * dom/Document.cpp:
        (WebCore::Document::didBecomeCurrentDocumentInFrame):
        (WebCore::Document::resume):
        * page/Frame.cpp:
        (WebCore::Frame::clearTimers):
        * page/Page.cpp:
        (WebCore::Page::setIsVisibleInternal):
        (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged):

2018-10-17  Antti Koivisto  <antti@apple.com>

        Tiling CSS gradients is slow
        https://bugs.webkit.org/show_bug.cgi?id=190615

        Reviewed by Tim Horton.

        Painting blocks the main thread on CG rendering queue to make a copy of the backing store.

        * platform/graphics/BitmapImage.cpp:
        (WebCore::BitmapImage::drawPattern):

        Also use sinkIntoImage for bitmap image pattern drawing.

        * platform/graphics/GradientImage.cpp:
        (WebCore::GradientImage::drawPattern):

        Sink the gradient into an Image after generating it. Unlike ImageBuffer, painting it doesn't involve inefficient copies.
        Previous isCompatibleWithContext test is replaced with an equivalent scale factor test.

        * platform/graphics/GradientImage.h:

2018-10-17  Chris Dumez  <cdumez@apple.com>

        Update more DOMWindow getters to return references instead of raw pointers
        https://bugs.webkit.org/show_bug.cgi?id=190654

        Reviewed by Youenn Fablet.

        Update more DOMWindow getters to return references instead of raw pointers, since they
        can no longer return null after recent refactoring.

        * Modules/gamepad/GamepadManager.cpp:
        (WebCore::navigatorGamepadFromDOMWindow):
        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::JSDOMWindow::heapSnapshot):
        * dom/Document.cpp:
        (WebCore::Document::location const):
        (WebCore::Document::dispatchPopstateEvent):
        * dom/Event.cpp:
        (WebCore::Event::timeStampForBindings const):
        * loader/DocumentThreadableLoader.cpp:
        (WebCore::DocumentThreadableLoader::loadRequest):
        * loader/ResourceTimingInformation.cpp:
        (WebCore::ResourceTimingInformation::addResourceTiming):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::screen):
        (WebCore::DOMWindow::history):
        (WebCore::DOMWindow::crypto const):
        (WebCore::DOMWindow::locationbar):
        (WebCore::DOMWindow::menubar):
        (WebCore::DOMWindow::personalbar):
        (WebCore::DOMWindow::scrollbars):
        (WebCore::DOMWindow::statusbar):
        (WebCore::DOMWindow::toolbar):
        (WebCore::DOMWindow::applicationCache):
        (WebCore::DOMWindow::navigator):
        (WebCore::DOMWindow::performance const):
        (WebCore::DOMWindow::nowTimestamp const):
        (WebCore::DOMWindow::location):
        (WebCore::DOMWindow::visualViewport):
        (WebCore::DOMWindow::styleMedia):
        * page/DOMWindow.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::updateLayoutViewport):
        * page/History.cpp:
        (WebCore::History::stateObjectAdded):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::createTimestamp const):
        * page/PerformanceObserver.cpp:
        (WebCore::PerformanceObserver::PerformanceObserver):
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (WebCore::VideoFullscreenModelVideoElement::requestFullscreenMode):

2018-10-17  Chris Fleizach  <cfleizach@apple.com>

        AX: Certain tags should identify their context to iOS API
        https://bugs.webkit.org/show_bug.cgi?id=190622
        <rdar://problem/45308194>

        Reviewed by Zalan Bujtas.

        Convey the semantic meaning of <code> tag to the iOS API so VoiceOver can make use of it.

        Tests: accessibility/ios-simulator/text-context-attributes.html

        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
        (-[WebAccessibilityObjectWrapper accessibilityTextualContext]):
        (AXAttributeStringSetStyle):

2018-10-17  Youenn Fablet  <youenn@apple.com>

        Remove unused code from RealtimeOutgoingVideoSourceCocoa
        https://bugs.webkit.org/show_bug.cgi?id=190666

        Reviewed by Eric Carlson.

        No change of behavior, removed no longer used code.

        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        (): Deleted.

2018-10-17  Ali Juma  <ajuma@chromium.org>

        Flaky IntersectionObserver web platform tests involving style updates
        https://bugs.webkit.org/show_bug.cgi?id=189091

        Reviewed by Simon Fraser.

        Update intersection observations when flushing layers from the WebProcess
        to the UIProcess to make the timing of these updates more predictable, and
        more consistent with the IntersectionObserver spec, since the spec expects
        these updates to happen as part of the "Update the rendering" step in the
        HTML EventLoop.

        Getting a similar approach to work with WK1 seems to add more complexity than it's
        worth, since flushes don't happen for scrolls handled by platform widgets, and
        flushes for other invalidations only happen when in compositing mode.

        The only remaining timer-driven intersection observation update is for handling
        the initial observation on a newly added target, which needs to happen even if
        there are no changes triggering a flush.

        Tested by the following tests no longer being flaky:
            imported/w3c/web-platform-tests/intersection-observer/bounding-box.html
            imported/w3c/web-platform-tests/intersection-observer/display-none.html
            imported/w3c/web-platform-tests/intersection-observer/containing-block.html

        * dom/Document.cpp:
        (WebCore::Document::resolveStyle):
        (WebCore::Document::updateIntersectionObservations):
        (WebCore::Document::scheduleForcedIntersectionObservationUpdate):
        (WebCore::Document::scheduleIntersectionObservationUpdate): Deleted.
        * dom/Document.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::flushCompositingStateForThisFrame):
        (WebCore::FrameView::viewportContentsChanged):
        * page/IntersectionObserver.cpp:
        (WebCore::IntersectionObserver::observe):
        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::willDisplayPage):
        (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate):
        (WebCore::Page::updateIntersectionObservations):
        (WebCore::Page::scheduleForcedIntersectionObservationUpdate):
        * page/Page.h:

2018-10-17  Charlie Turner  <cturner@igalia.com>

        [EME] Sanity check key ID length in the keyids init data format
        https://bugs.webkit.org/show_bug.cgi?id=190629

        Reviewed by Xabier Rodriguez-Calvar.

        Covered by web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https.html

        * Modules/encryptedmedia/InitDataRegistry.cpp:
        (WebCore::extractKeyIDsKeyids): Ensure the decoded key id length
        is at least 1 byte and no more than 512 bytes.

2018-10-16  Chris Dumez  <cdumez@apple.com>

        Regression(r236795) Check boxes are sometimes checked when they should not be
        https://bugs.webkit.org/show_bug.cgi?id=190651
        <rdar://problem/45319934>

        Reviewed by Ryosuke Niwa.

        r236795 mistakenly dropped the statement resetting m_reflectsCheckedAttribute to true
        in HTMLInputElement::parseAttribute() because it looked like a no-op given that we
        made sure it was true a couple of line above. However, I overlooked that calling
        HTMLInputElement::setChecked() sets m_reflectsCheckedAttribute to false.

        This patch thus re-introduces the statement. It also renames m_reflectsCheckedAttribute
        to m_dirtyCheckednessFlag and reverses its value in order to match the specification
        more closely:
        - https://html.spec.whatwg.org/#concept-input-checked-dirty-flag

        Test: fast/dom/HTMLInputElement/checkbox-dirty-checkedness-flag.html

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::HTMLInputElement):
        (WebCore::HTMLInputElement::parseAttribute):
        (WebCore::HTMLInputElement::finishParsingChildren):
        (WebCore::HTMLInputElement::reset):
        (WebCore::HTMLInputElement::setChecked):
        (WebCore::HTMLInputElement::copyNonAttributePropertiesFromElement):
        * html/HTMLInputElement.h:

2018-10-16  Sihui Liu  <sihui_liu@apple.com>

        Add a switch for Web SQL
        https://bugs.webkit.org/show_bug.cgi?id=190271

        Reviewed by Ryosuke Niwa.

        Web SQL is still enabled by default.

        * Modules/webdatabase/DOMWindowWebDatabase.idl:
        * Modules/webdatabase/Database.idl:
        * Modules/webdatabase/SQLError.idl:
        * Modules/webdatabase/SQLResultSet.idl:
        * Modules/webdatabase/SQLResultSetRowList.idl:
        * bindings/js/WebCoreBuiltinNames.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setWebSQLDisabled):
        (WebCore::RuntimeEnabledFeatures::webSQLEnabled const):

2018-10-16  Chris Dumez  <cdumez@apple.com>

        window.performance should not become null after the window loses its browsing context
        https://bugs.webkit.org/show_bug.cgi?id=190636

        Reviewed by Ryosuke Niwa.

        window.performance should not become null after the window loses its browsing context. This
        WebKit behavior does not match the HTML specification nor the behavior of other browsers.

        Also note that the attribute is not nullable in the specification:
        - https://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute

        No new tests, updated existing test.

        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::performance const):
        * page/Performance.cpp:
        (WebCore::Performance::Performance):
        * page/Performance.h:
        * platform/GenericTaskQueue.h:
        (WebCore::TaskDispatcher::TaskDispatcher):
        (WebCore::TaskDispatcher::postTask):
        (WebCore::GenericTaskQueue::GenericTaskQueue):
        (WebCore::GenericTaskQueue::isClosed const):
        * workers/WorkerGlobalScope.cpp:
        (WebCore::WorkerGlobalScope::WorkerGlobalScope):

2018-10-16  Jer Noble  <jer.noble@apple.com>

        Refactoring: Convert HTMLMediaElement::scheduleDelayedAction() to individually schedulable & cancelable tasks
        https://bugs.webkit.org/show_bug.cgi?id=188208

        Reviewed by Eric Carlson.

        Rather than have a single, monolithic, zero-duration-timer based dispatch for
        a bunch of methods to be performed in a future run-loop, convert them all to
        use a DeferrableTask, which in turn is a kind of GenericTaskQueue which can
        enqueue only a single task at a time. Convert some other zero-duration-timer
        and GenericTaskQueue dispatches to this new DeferrableTask.

        * WebCore.xcodeproj/project.pbxproj:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::HTMLMediaElement):
        (WebCore::HTMLMediaElement::finishParsingChildren):
        (WebCore::HTMLMediaElement::scheduleCheckPlaybackTargetCompatability):
        (WebCore::HTMLMediaElement::checkPlaybackTargetCompatablity):
        (WebCore::HTMLMediaElement::prepareForLoad):
        (WebCore::HTMLMediaElement::setReadyState):
        (WebCore::HTMLMediaElement::seekWithTolerance):
        (WebCore::HTMLMediaElement::setMuted):
        (WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack):
        (WebCore::HTMLMediaElement::didAddTextTrack):
        (WebCore::HTMLMediaElement::scheduleConfigureTextTracks):
        (WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
        (WebCore::HTMLMediaElement::scheduleMediaEngineWasUpdated):
        (WebCore::HTMLMediaElement::mediaEngineWasUpdated):
        (WebCore::HTMLMediaElement::mediaPlayerEngineUpdated):
        (WebCore::HTMLMediaElement::scheduleUpdatePlayState):
        (WebCore::HTMLMediaElement::updatePlayState):
        (WebCore::HTMLMediaElement::setPlaying):
        (WebCore::HTMLMediaElement::setPausedInternal):
        (WebCore::HTMLMediaElement::cancelPendingTasks):
        (WebCore::HTMLMediaElement::userCancelledLoad):
        (WebCore::HTMLMediaElement::clearMediaPlayer):
        (WebCore::HTMLMediaElement::contextDestroyed):
        (WebCore::HTMLMediaElement::stop):
        (WebCore::HTMLMediaElement::suspend):
        (WebCore::HTMLMediaElement::resume):
        (WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
        (WebCore::HTMLMediaElement::dispatchEvent):
        (WebCore::HTMLMediaElement::removeEventListener):
        (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
        (WebCore::HTMLMediaElement::didBecomeFullscreenElement):
        (WebCore::HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured):
        (WebCore::HTMLMediaElement::scheduleUpdateMediaState):
        (WebCore::HTMLMediaElement::updateMediaState):
        (WebCore::HTMLMediaElement::playbackControlsManagerBehaviorRestrictionsTimerFired):
        (WebCore::setFlags): Deleted.
        (WebCore::clearFlags): Deleted.
        (WebCore::actionName): Deleted.
        (WebCore::HTMLMediaElement::scheduleDelayedAction): Deleted.
        (WebCore::HTMLMediaElement::pendingActionTimerFired): Deleted.
        * html/HTMLMediaElement.h:
        * html/HTMLMediaElementEnums.h:
        * platform/DeferrableTask.h: Added.
        (WebCore::DeferrableTask::DeferrableTask):
        (WebCore::DeferrableTask::scheduleTask):
        (WebCore::DeferrableTask::close):
        (WebCore::DeferrableTask::cancelTask):
        (WebCore::DeferrableTask::hasPendingTask const):

2018-10-16  Timothy Hatcher  <timothy@apple.com>

        Add <meta name="supported-color-schemes"> to control what color schemes the page supports
        https://bugs.webkit.org/show_bug.cgi?id=190526
        rdar://problem/45230140

        Reviewed by Dean Jackson.

        Test: css-dark-mode/supported-color-schemes.html

        * dom/Document.cpp:
        (WebCore::isColorSchemeSeparator): Added.
        (WebCore::processColorSchemes): Added.
        (WebCore::Document::processSupportedColorSchemes): Added.
        (WebCore::Document::useDarkAppearance const): Take system appearance and document's
        suppoerted color shcemes into account.
        * dom/Document.h:
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::createFragment): Update use of LocalDefaultSystemAppearance.
        * html/HTMLMetaElement.cpp:
        (WebCore::HTMLMetaElement::process): Added supported-color-schemes behind runtime feature check.
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::paint): Update use of LocalDefaultSystemAppearance.
        * platform/mac/DragImageMac.mm:
        (WebCore::createDragImageForLink): Update use of LocalDefaultSystemAppearance.
        * platform/mac/LocalDefaultSystemAppearance.h:
        * platform/mac/LocalDefaultSystemAppearance.mm:
        (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance):
        Drop the need for useSystemAppearance. This is accounted for in Document::useDarkAppearance.
        * platform/mac/ThemeMac.mm:
        (WebCore::ThemeMac::paint): Update use of LocalDefaultSystemAppearance.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::paintContents): Update use of LocalDefaultSystemAppearance.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::paintContents): Update use of LocalDefaultSystemAppearance.
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paint): Use document instead of page.
        * rendering/RenderThemeCocoa.mm:
        (WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Update use of LocalDefaultSystemAppearance.
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::documentViewFor const): Update use of LocalDefaultSystemAppearance.
        (WebCore::RenderThemeMac::platformActiveSelectionBackgroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const): Ditto.
        (WebCore::RenderThemeMac::transformSelectionBackgroundColor const): Ditto.
        (WebCore::RenderThemeMac::supportsSelectionForegroundColors const): Ditto.
        (WebCore::RenderThemeMac::platformActiveSelectionForegroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformInactiveSelectionForegroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformActiveListBoxSelectionForegroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformInactiveListBoxSelectionForegroundColor const): Ditto.
        (WebCore::RenderThemeMac::platformActiveTextSearchHighlightColor const): Ditto.
        (WebCore::RenderThemeMac::colorCache const): Ditto.
        (WebCore::RenderThemeMac::systemColor const): Ditto.
        (WebCore::RenderThemeMac::paintCellAndSetFocusedElementNeedsRepaintIfNecessary): Ditto.
        (WebCore::RenderThemeMac::paintSliderThumb): Ditto.
        (WebCore::RenderThemeMac::usingDarkAppearance const): No need to limit to macOS here.
        * svg/graphics/SVGImage.cpp:
        (WebCore::SVGImage::draw): Update use of LocalDefaultSystemAppearance.

2018-10-16  Rob Buis  <rbuis@igalia.com>

        Remove superfluous VIDEO build guard
        https://bugs.webkit.org/show_bug.cgi?id=190624

        Reviewed by Michael Catanzaro.

        Remove some instances where the VIDEO build guard is included within another VIDEO build guard.

        No new tests. No change in behavior.

        * platform/graphics/MediaPlayer.cpp:
        (WebCore::buildMediaEnginesVector):
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/MediaPlayerPrivate.h:

2018-10-16  Youenn Fablet  <youenn@apple.com>

        Support RTCConfiguration.certificates
        https://bugs.webkit.org/show_bug.cgi?id=190603

        Reviewed by Eric Carlson.

        Update RTCConfiguration to have a certificates member.
        Add the conversion from RTCCertificate to libwebrtc certificates.
        Add check to ensure that certificates are not expired.
        Add check to ensure that certificates passed to setConfiguration were
        the same as the ones passed to RTCPeerConnection constructor.
        Once these checks are done, we reuse the certificates created at
        RCPeerConnection creation time when setting the configuration again.

        Covered by rebased WPT test.

        * Modules/mediastream/RTCConfiguration.h:
        * Modules/mediastream/RTCConfiguration.idl:
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::certificatesFromConfiguration):
        (WebCore::RTCPeerConnection::initializeConfiguration):
        (WebCore::RTCPeerConnection::setConfiguration):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::setConfiguration):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::configurationFromMediaEndpointConfiguration):
        * platform/mediastream/MediaEndpointConfiguration.cpp:
        (WebCore::MediaEndpointConfiguration::MediaEndpointConfiguration):
        * platform/mediastream/MediaEndpointConfiguration.h:

2018-10-16  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237163.

        Introduced layout test failures on iOS Simulator.

        Reverted changeset:

        "[CG] Adopt CG SPI for non-even cornered rounded rects"
        https://bugs.webkit.org/show_bug.cgi?id=190155
        https://trac.webkit.org/changeset/237163

2018-10-16  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: capture previously saved states and add them to the recording payload
        https://bugs.webkit.org/show_bug.cgi?id=190473

        Reviewed by Joseph Pecoraro.

        Updated existing tests: inspector/canvas/recording-2d.html
                                inspector/model/recording.html

        Instead of sending a single object of the current state of the context, send an array of
        objects, one for each restore point.

        * html/canvas/CanvasRenderingContext2DBase.h:
        * html/canvas/CanvasRenderingContext2DBase.cpp:
        (WebCore::CanvasRenderingContext2DBase::stateStack): Added.

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::stringIndexForKey): Added.
        (WebCore::InspectorCanvas::buildInitialState):

2018-10-16  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag and bindings for CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190237

        Reviewed by Ryosuke Niwa.

        Add feature flag and bindings for CSS Painting API. This adds a new property,
        CSS.paintWorkletGlobalScope, which will be a temporary way to access the paint
        worklet global scope untill CSS.paintWorklet is implemented.

        There are a few small changes, mostly adding headers and "using" declarations,
        that were required to get this to build. This is probably related to unified sources.

        Tests: fast/css-custom-paint/basic.html
               fast/css-custom-paint/registerPaintBindings.html

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSCSSPaintWorkletGlobalScopeCustom.cpp: Added.
        (WebCore::throwInvalidModificationError):
        (WebCore::JSCSSPaintWorkletGlobalScope::registerPaint):
        * bindings/js/JSEventListener.cpp:
        * bindings/js/JSRemoteDOMWindowCustom.cpp:
        * bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp:
        * bindings/js/WebCoreBuiltinNames.h:
        * css/CSSPaintCallback.h: Copied from Source/WebCore/css/MediaQueryParserContext.cpp.
        (WebCore::CSSPaintCallback::~CSSPaintCallback):
        * css/CSSPaintCallback.idl: Added.
        * css/CSSPaintWorkletGlobalScope.cpp: Copied from Source/WebCore/css/MediaQueryParserContext.cpp.
        (WebCore::CSSPaintWorkletGlobalScope::create):
        (WebCore::CSSPaintWorkletGlobalScope::CSSPaintWorkletGlobalScope):
        (WebCore::CSSPaintWorkletGlobalScope::devicePixelRatio):
        (WebCore::CSSPaintWorkletGlobalScope::addRegisteredPaint):
        * css/CSSPaintWorkletGlobalScope.h: Copied from Source/WebCore/css/MediaQueryParserContext.cpp.
        (WebCore::CSSPaintWorkletGlobalScope::paintDefinitionMap):
        * css/CSSPaintWorkletGlobalScope.idl: Added.
        * css/DOMCSSPaintWorklet.cpp: Copied from Source/WebCore/css/MediaQueryParserContext.cpp.
        (WebCore::DOMCSSPaintWorklet::ensurePaintWorkletGlobalScope):
        (WebCore::DOMCSSPaintWorklet::from):
        (WebCore::DOMCSSPaintWorklet::supplementName):
        * css/DOMCSSPaintWorklet.h: Copied from Source/WebCore/css/MediaQueryParserContext.cpp.
        * css/DOMCSSPaintWorklet.idl: Added.
        * css/MediaQueryParserContext.cpp:
        * css/StyleBuilder.h:
        * dom/Document.cpp:
        (WebCore::Document::ensureCSSPaintWorkletGlobalScope):
        * dom/Document.h:
        * features.json:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setCSSPaintingAPIEnabled):
        (WebCore::RuntimeEnabledFeatures::cssPaintingAPIEnabled const):

2018-10-16  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Support inline WebVTT styles
        https://bugs.webkit.org/show_bug.cgi?id=190369

        Reviewed by Eric Carlson.

        Add support for inline WebVTT styles, see https://w3c.github.io/webvtt/#styling. The parsed
        style strings from the VTT file are added to an optional vector of style strings in the
        TextTrack class. These styles are then added as HTMLStyleElement children to the parent of
        the cue span element.

        Test: media/track/track-cue-css.html

        * html/track/InbandGenericTextTrack.cpp:
        (WebCore::InbandGenericTextTrack::newStyleSheetsParsed):
        * html/track/InbandGenericTextTrack.h:
        * html/track/InbandWebVTTTextTrack.cpp:
        (WebCore::InbandWebVTTTextTrack::newStyleSheetsParsed):
        * html/track/InbandWebVTTTextTrack.h:
        * html/track/LoadableTextTrack.cpp:
        (WebCore::LoadableTextTrack::newStyleSheetsAvailable):
        * html/track/LoadableTextTrack.h:
        * html/track/TextTrack.h:
        (WebCore::TextTrack::styleSheets const):
        * html/track/VTTCue.cpp:
        (WebCore::VTTCue::getDisplayTree):
        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::getNewCues):
        (WebCore::WebVTTParser::getStyleSheets):
        (WebCore::WebVTTParser::parse):
        (WebCore::WebVTTParser::collectWebVTTBlock):
        (WebCore::WebVTTParser::collectStyleSheet):
        (WebCore::WebVTTParser::checkStyleSheet):
        (WebCore::WebVTTParser::checkAndStoreStyleSheet):
        * html/track/WebVTTParser.h:
        * loader/TextTrackLoader.cpp:
        (WebCore::TextTrackLoader::newStyleSheetsParsed):
        (WebCore::TextTrackLoader::getNewStyleSheets):
        * loader/TextTrackLoader.h:

2018-10-16  Chris Dumez  <cdumez@apple.com>

        window.navigator should not become null after the window loses its browsing context
        https://bugs.webkit.org/show_bug.cgi?id=190595

        Reviewed by Ryosuke Niwa.

        window.navigator should not become null after the window loses its browsing context.
        This does not match the HTML specification or the behavior of other browsers.

        No new tests, updated existing tests.

        * Modules/geolocation/NavigatorGeolocation.cpp:
        (WebCore::NavigatorGeolocation::geolocation const):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::navigator):
        * page/Navigator.cpp:
        (WebCore::Navigator::Navigator):
        * page/Navigator.h:
        * page/NavigatorBase.cpp:
        (WebCore::NavigatorBase::NavigatorBase):
        * page/NavigatorBase.h:
        * page/WorkerNavigator.cpp:
        (WebCore::WorkerNavigator::WorkerNavigator):
        * workers/service/ServiceWorkerContainer.cpp:
        (WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
        * workers/service/ServiceWorkerContainer.h:

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Replace HistoryItem* with HistoryItem& where possible
        https://bugs.webkit.org/show_bug.cgi?id=190617

        Reviewed by Chris Dumez.

        * history/BackForwardClient.h:
        * history/BackForwardController.cpp:
        (WebCore::BackForwardController::setCurrentItem):
        * history/BackForwardController.h:
        * history/HistoryItem.cpp:
        (WebCore::defaultNotifyHistoryItemChanged):
        (WebCore::HistoryItem::setAlternateTitle):
        (WebCore::HistoryItem::setURLString):
        (WebCore::HistoryItem::setOriginalURLString):
        (WebCore::HistoryItem::setReferrer):
        (WebCore::HistoryItem::setTitle):
        (WebCore::HistoryItem::setTarget):
        (WebCore::HistoryItem::setShouldRestoreScrollPosition):
        (WebCore::HistoryItem::setStateObject):
        (WebCore::HistoryItem::notifyChanged):
        * history/HistoryItem.h:
        * loader/EmptyClients.cpp:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        (WebCore::FrameLoader::loadSameDocumentItem):
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::goToItem):
        (WebCore::HistoryController::updateForCommit):
        (WebCore::HistoryController::recursiveUpdateForCommit):
        (WebCore::HistoryController::recursiveUpdateForSameDocumentNavigation):
        (WebCore::HistoryController::setCurrentItem):
        (WebCore::HistoryController::createItem):
        (WebCore::HistoryController::itemsAreClones const):
        (WebCore::HistoryController::currentFramesMatchItem const):
        * loader/HistoryController.h:

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Remove unused WebHistoryItem._transientPropertyForKey
        https://bugs.webkit.org/show_bug.cgi?id=190606

        Reviewed by Chris Dumez.

        This is unnecessary complexity in HistoryItem.

        * history/HistoryItem.h:
        * history/mac/HistoryItemMac.mm:
        (WebCore::HistoryItem::getTransientProperty const): Deleted.
        (WebCore::HistoryItem::setTransientProperty): Deleted.

2018-10-16  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Separate SSL Class for platform dependent way of setup.
        https://bugs.webkit.org/show_bug.cgi?id=190597

        Reviewed by Alex Christensen.

        SSL setup is very platform dependent. This patch separate the class to allow
        platform-dependent setup at the SSL handle instantiation.

        No new tests because there's no behaviro changes.

        * PlatformWinCairo.cmake:
        * platform/network/curl/CurlSSLHandle.cpp:
        (WebCore::CurlSSLHandle::CurlSSLHandle):
        (WebCore::CurlSSLHandle::getCACertPathEnv): Moved.
        * platform/network/curl/CurlSSLHandle.h:
        * platform/network/win/CurlSSLHandleWin.cpp:
        (WebCore::getCACertPathEnv):
        (WebCore::CurlSSLHandle::platformInitialize):

2018-10-15  Keith Miller  <keith_miller@apple.com>

        Support arm64 CPUs with a 32-bit address space
        https://bugs.webkit.org/show_bug.cgi?id=190273

        Reviewed by Michael Saboff.

        Fix missing namespace annotation.

        * cssjit/SelectorCompiler.cpp:
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):

2018-10-15  Justin Fan  <justin_fan@apple.com>

        Add WebGPU 2018 feature flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=190509

        Reviewed by Dean Jackson.

        Re-add ENABLE_WEBGPU, an experimental feature flag, and a RuntimeEnabledFeature
        for the 2018 WebGPU prototype.

        * Configurations/FeatureDefines.xcconfig:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setWebGPUEnabled):
        (WebCore::RuntimeEnabledFeatures::webGPUEnabled const):

2018-10-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237162.
        https://bugs.webkit.org/show_bug.cgi?id=190612

        Broke Windows build (Requested by dolmstead on #webkit).

        Reverted changeset:

        "Add stub implementation for accessibility objects"
        https://bugs.webkit.org/show_bug.cgi?id=190608
        https://trac.webkit.org/changeset/237162

2018-10-15  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [CG] Adopt CG SPI for non-even cornered rounded rects
        https://bugs.webkit.org/show_bug.cgi?id=190155

        Reviewed by Simon Fraser.

        Instead of creating bezier curves for the non-even corners of the rounded
        rects, we should use the optimized SPI provided by CG.

        * platform/graphics/cg/PathCG.cpp:
        (WebCore::Path::platformAddPathForRoundedRect):

2018-10-15  Don Olmstead  <don.olmstead@sony.com>

        Add stub implementation for accessibility objects
        https://bugs.webkit.org/show_bug.cgi?id=190608

        Reviewed by Michael Catanzaro.

        No new tests. No change in behavior.

        Add default implementation to associated cpp file. Removes the WPE
        specific stubs.

        * SourcesWPE.txt:
        * accessibility/AXObjectCache.cpp:
        (WebCore::AXObjectCache::detachWrapper):
        (WebCore::AXObjectCache::attachWrapper):
        (WebCore::AXObjectCache::postPlatformNotification):
        (WebCore::AXObjectCache::nodeTextChangePlatformNotification):
        (WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
        (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
        (WebCore::AXObjectCache::handleScrolledToAnchor):
        * accessibility/AccessibilityObject.cpp:
        (WebCore::AccessibilityObject::accessibilityIgnoreAttachment const):
        (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):
        * accessibility/AccessibilityObject.h:
        * accessibility/wpe/AXObjectCacheWPE.cpp: Removed.
        * accessibility/wpe/AccessibilityObjectWPE.cpp: Removed.

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Modernize BackForwardClient.h
        https://bugs.webkit.org/show_bug.cgi?id=190610

        Reviewed by Chris Dumez.

        * editing/markup.cpp:
        (WebCore::createPageForSanitizingWebContent):
        * history/BackForwardClient.h:
        * history/BackForwardController.h:
        (WebCore::BackForwardController::client):
        (WebCore::BackForwardController::client const):
        * inspector/InspectorOverlay.cpp:
        (WebCore::InspectorOverlay::overlayPage):
        * loader/EmptyClients.cpp:
        (WebCore::pageConfigurationWithEmptyClients):
        (WebCore::createEmptyFrameNetworkingContext): Deleted.
        (WebCore::fillWithEmptyClients): Deleted.
        (WebCore::createEmptyEditorClient): Deleted.
        * loader/EmptyClients.h:
        * page/Page.cpp:
        (WebCore::Page::Page):
        * page/PageConfiguration.cpp:
        (WebCore::PageConfiguration::PageConfiguration):
        * page/PageConfiguration.h:
        * svg/graphics/SVGImage.cpp:
        (WebCore::SVGImage::dataChanged):

2018-10-15  Timothy Hatcher  <timothy@apple.com>

        Add support for prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=190499
        rdar://problem/45212025

        Reviewed by Dean Jackson.

        Test: css-dark-mode/prefers-color-scheme.html

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_DARK_MODE_CSS.
        * css/CSSValueKeywords.in: Added light and dark.
        * css/MediaFeatureNames.h: Added prefers-color-scheme.
        * css/MediaQueryEvaluator.cpp:
        (WebCore::prefersColorSchemeEvaluate): Added.
        * css/MediaQueryExpression.cpp:
        (WebCore::featureWithValidIdent): Added prefers-color-scheme.
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setDarkModeCSSEnabled): Added.
        (WebCore::RuntimeEnabledFeatures::darkModeCSSEnabled const): Added.
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::resetToConsistentState): Reset setUseDarkAppearance.
        (WebCore::InternalSettings::setUseDarkAppearance): Added.
        * testing/InternalSettings.h: Added setUseDarkAppearance.
        * testing/InternalSettings.idl: Ditto.

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused WebView._globalHistoryItem
        https://bugs.webkit.org/show_bug.cgi?id=190601

        Reviewed by Chris Dumez.

        This was a hack to give the client a more reliable current back/forward item, but it hasn't been used for years
        and it's adding unnecessary complexity to the history code.

        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
        * loader/FrameLoaderClient.h:
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::goToItem):
        (WebCore::HistoryController::updateForStandardLoad):
        (WebCore::HistoryController::updateForRedirectWithLockedBackForwardList):

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Experiment: target=_blank on anchors should imply rel=noopener
        https://bugs.webkit.org/show_bug.cgi?id=190481

        Reviewed by Alex Christensen.

        As an experiment, try and make it so that target=_blank on anchors implies `rel=noopener` for improved security.
        WebContent can then request an opener relationship by using `rel=opener` instead.

        This change was discussed at:
        - https://github.com/whatwg/html/issues/4078

        We want to attempt this change is STP to see if it is Web-compatible. Preliminary testing seems to indicate
        that OAuth workflows still work.

        * html/HTMLAnchorElement.cpp:
        (WebCore::HTMLAnchorElement::parseAttribute):
        (WebCore::HTMLAnchorElement::handleClick):
        (WebCore::HTMLAnchorElement::effectiveTarget const):
        * html/HTMLAnchorElement.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setBlankAnchorTargetImpliesNoOpenerEnabled):
        (WebCore::RuntimeEnabledFeatures::blankAnchorTargetImpliesNoOpenerEnabled const):

2018-10-15  Andy Estes  <aestes@apple.com>

        [Apple Pay] New shipping methods are ignored when updating after the shippingaddresschange event
        https://bugs.webkit.org/show_bug.cgi?id=190560
        <rdar://problem/44559075>

        Reviewed by Youenn Fablet.

        When a PaymentDetailsUpdate with shipping options was specified to updateWith() after the
        shippingaddresschange event fires, ApplePayPaymentHandler needs to convert the shipping
        options to ShippingMethods and add them to the ShippingContactUpdate so that the Apple Pay
        UI renders the new options.

        Added test cases to http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html.

        * Modules/applepay/ApplePayShippingMethod.idl:
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::computeShippingMethods):
        (WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::convert):
        (WebCore::MockPaymentCoordinator::showPaymentUI):
        (WebCore::MockPaymentCoordinator::completeShippingContactSelection):
        * testing/MockPaymentCoordinator.h:
        * testing/MockPaymentCoordinator.idl:

2018-10-15  Youenn Fablet  <youenn@apple.com>

        RTCPeerConnection.generateCertificate is not a function
        https://bugs.webkit.org/show_bug.cgi?id=173541
        <rdar://problem/32638029>

        Reviewed by Eric Carlson.

        Add support for RTCCertificate generation through libwebrtc certificate generator.
        Make generation in the webrtc network thread.
        Support is as per spec (ECDSA and RSASSA_PKCS).

        Partially covered by WPT tests.

        * css/StyleBuilder.h: Fixing build.
        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/webauthn/PublicKeyCredential.cpp: Fixing build.
        * Modules/mediastream/PeerConnectionBackend.cpp:
        (WebCore::PeerConnectionBackend::generateCertificate):
        * Modules/mediastream/PeerConnectionBackend.h:
        (WebCore::PeerConnectionBackend::CertificateInformation::RSASSA_PKCS1_v1_5):
        (WebCore::PeerConnectionBackend::CertificateInformation::ECDSA_P256):
        (WebCore::PeerConnectionBackend::CertificateInformation::CertificateInformation):
        * Modules/mediastream/RTCCertificate.cpp: Added.
        (WebCore::RTCCertificate::create):
        (WebCore::RTCCertificate::RTCCertificate):
        * Modules/mediastream/RTCCertificate.h: Added.
        (WebCore::RTCCertificate::expires const):
        (WebCore::RTCCertificate::getFingerprints const):
        * Modules/mediastream/RTCCertificate.idl: Added.
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::certificateTypeFromAlgorithmIdentifier):
        (WebCore::RTCPeerConnection::generateCertificate):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/RTCPeerConnection.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp: Added.
        (WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::RTCCertificateGeneratorCallback):
        (WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::~RTCCertificateGeneratorCallback):
        (WebCore::LibWebRTCCertificateGenerator::keyParamsFromCertificateType):
        (WebCore::LibWebRTCCertificateGenerator::generateCertificate):
        * Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.h: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        (WebCore::LibWebRTCProvider::certificateGenerator):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        Add compact logging for the paint-order RenderLayer tree
        https://bugs.webkit.org/show_bug.cgi?id=190592

        Reviewed by Zalan Bujtas.

        Add a way to dump the RenderLayer tree in paint order, which will be extended in future
        to show more dirty bit state.

        * rendering/RenderLayer.cpp:
        (WebCore::outputPaintOrderTreeLegend):
        (WebCore::outputIdent):
        (WebCore::outputPaintOrderTreeRecursive):
        (WebCore::showPaintOrderTree):
        * rendering/RenderLayer.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused parameters from FrameLoaderClient::createFrame
        https://bugs.webkit.org/show_bug.cgi?id=190587

        Reviewed by Chris Dumez.

        * loader/EmptyClients.cpp:
        (WebCore::EmptyFrameLoaderClient::createFrame):
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoaderClient.h:
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::loadSubframe):

2018-10-15  Andy Estes  <aestes@apple.com>

        [Apple Pay] Payment authorization results with ApplePayErrors should never be considered final
        https://bugs.webkit.org/show_bug.cgi?id=190559
        <rdar://problem/37250908>

        Reviewed by Anders Carlsson.

        When PaymentCoordinator thinks a payment authorization result is final it releases the
        active ApplePaySession. The Apple Pay UI is dismissed after a receiving a final result.

        However, WebCore::isFinalStateResult had the wrong idea about what was a final state,
        in some cases causing PaymentCoordinator to release the active session even when the UI is
        still presented. If the user authorizes payment again, the website will not receive another
        paymentauthorized event, and the Apple Pay UI will eventually time out waiting for a result.

        Specifically, isFinalStateResult thought that:

        (1) results with STATUS_SUCCESS were always final, even if they had errors
        (2) errors with code "unknown" were final

        Both of these assumptions are wrong. PassKit considers any result with errors to be
        non-final, even if an error has code "unknown."

        Fixed WebCore::isFinalStateResult to agree with what PassKit considers to be final results.

        Test: http/tests/ssl/applepay/ApplePaySessionFinalState.https.html

        * Modules/applepay/ApplePaySessionPaymentRequest.cpp:
        (WebCore::isFinalStateResult):
        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::completePaymentSession):

2018-10-15  Andy Estes  <aestes@apple.com>

        [Payment Request] PaymentResponse should be a ContextDestructionObserver
        https://bugs.webkit.org/show_bug.cgi?id=190558

        Reviewed by Alex Christensen.

        Make PaymentResponse a ContextDestructionObserver so it has a ScriptExecutionContext to
        return for its override of EventTarget::scriptExecutionContext(). Do this instead of
        downcasting m_request to an ActiveDOMObject to ask for its context.

        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::accept):
        * Modules/paymentrequest/PaymentResponse.cpp:
        (WebCore::PaymentResponse::PaymentResponse):
        (WebCore::PaymentResponse::scriptExecutionContext const): Deleted.
        * Modules/paymentrequest/PaymentResponse.h:

2018-10-15  Andy Estes  <aestes@apple.com>

        [Payment Request] Use a PendingActivity token rather than calling (un)setPendingActivity
        https://bugs.webkit.org/show_bug.cgi?id=190557

        Reviewed by Alex Christensen.

        PaymentRequest has pending activity whenever there is an active payment handler, since
        user-initiated events can occur whenever the payment UI is displayed.

        Rather than manually track the pending activity with setPendingActivity() and
        unsetPendingActivity(), use a PendingActivity token tied to the lifetime of the active
        payment handler. Also, rewrite canSuspendForDocumentSuspension() in terms of
        hasPendingActivity().

        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::show):
        (WebCore::PaymentRequest::abortWithException):
        (WebCore::PaymentRequest::canSuspendForDocumentSuspension const):
        (WebCore::PaymentRequest::paymentMethodChanged):
        (WebCore::PaymentRequest::completeMerchantValidation):
        (WebCore::PaymentRequest::settleDetailsPromise):
        (WebCore::PaymentRequest::complete):
        (WebCore::PaymentRequest::cancel):
        * Modules/paymentrequest/PaymentRequest.h:

2018-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Changing view scale should zoom to initial scale if the page is already at initial scale
        https://bugs.webkit.org/show_bug.cgi?id=190570
        <rdar://problem/45261877>

        Reviewed by Tim Horton.

        Add a getter for ViewportConfiguration's layout size scale factor.
        See Source/WebKit/ChangeLog for more details.

        * page/ViewportConfiguration.h:
        (WebCore::ViewportConfiguration::layoutSizeScaleFactor const):

2018-10-15  Charlie Turner  <cturner@igalia.com>

        Fix build error with !LOG_DISABLED in Release mode
        https://bugs.webkit.org/show_bug.cgi?id=190465

        Reviewed by Michael Catanzaro.

        No tests due to no new functionality.

        * workers/service/ServiceWorkerRegistrationKey.cpp:
        * workers/service/ServiceWorkerRegistrationKey.h:

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        LayerListMutationDetector should take a reference
        https://bugs.webkit.org/show_bug.cgi?id=190586

        Reviewed by Zalan Bujtas.
        
        Change LayerListMutationDetector to take a RenderLayer&.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintList):
        (WebCore::RenderLayer::hitTestLayer):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:
        (WebCore::LayerListMutationDetector::LayerListMutationDetector):
        (WebCore::LayerListMutationDetector::~LayerListMutationDetector):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::traverseVisibleNonCompositedDescendantLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
        (WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
        (WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
        (WebCore::RenderLayerCompositor::recursiveRepaintLayer):
        (WebCore::RenderLayerCompositor::layerHas3DContent const):

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        Share some code to dirty z-order and normal flow lists when child layers are added or removed
        https://bugs.webkit.org/show_bug.cgi?id=190585

        Reviewed by Zalan Bujtas.

        Factor code which dirties the normal flow list and child stacking context z-order lists
        when a layer is added or removed.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::dirtyPaintOrderListsOnChildChange):
        * rendering/RenderLayer.h:

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        Make a helper function to check for reflection layers
        https://bugs.webkit.org/show_bug.cgi?id=190584

        Reviewed by Zalan Bujtas.

        Add RenderLayer::isReflectionLayer() which returns true if the passed layer
        is the layer of this layer's reflection. It's used in z-order list building.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateNormalFlowList):
        (WebCore::RenderLayer::rebuildZOrderLists):
        (WebCore::RenderLayer::collectLayers):
        (WebCore::expandClipRectForDescendantsAndReflection):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        RenderLayer::addChild() and removeChild() should take references
        https://bugs.webkit.org/show_bug.cgi?id=190582

        Reviewed by Zalan Bujtas.

        Pass the layer to be added or removed as a reference; it's never null.

        * rendering/RenderElement.cpp:
        (WebCore::addLayers):
        (WebCore::RenderElement::removeLayers):
        (WebCore::RenderElement::moveLayers):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::insertOnlyThisLayer):
        (WebCore::RenderLayer::removeOnlyThisLayer):
        * rendering/RenderLayer.h:

2018-10-15  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [Cairo] Incorrect rendering for 135-deg skews
        https://bugs.webkit.org/show_bug.cgi?id=190513

        Compensation value to zero the the translation components
        of the transformation matrix is incorrect if the matrix
        has a shear factor.

        Reviewed by Žan Doberšek.

        Tests: fast/transforms/skew-x-135deg-with-gradient.html
               fast/transforms/skew-y-135deg-with-gradient.html

        * platform/graphics/cairo/CairoUtilities.cpp:
        (WebCore::drawPatternToCairoContext):

2018-10-15  Christopher Reid  <chris.reid@sony.com>

        [Curl][WinCairo] Add Public Suffix support to WinCairo
        https://bugs.webkit.org/show_bug.cgi?id=183060

        Reviewed by Alex Christensen.

        Add Public Suffix support to WinCairo using LibPSL.
        LibPSL has been added to WinCairoRequirements in v2018.10.09.

        * platform/Curl.cmake:
        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::searchCookies): Search for cookies using the topPrivatelyControlledDomain
        (WebCore::CookieJarDB::setCookie): Prevent cookies from being added under TLDs
        * platform/network/curl/PublicSuffixCurl.cpp: Added.
        (WebCore::isPublicSuffix):
        (WebCore::topPrivatelyControlledDomainInternal):
        (WebCore::topPrivatelyControlledDomain):

2018-10-15  Simon Fraser  <simon.fraser@apple.com>

        RenderLayer tree-related cleanup
        https://bugs.webkit.org/show_bug.cgi?id=190572

        Reviewed by Zalan Bujtas.

        Move code around so that functions related to parent/child and z-order tree structure
        are near the top of RenderLayer.cpp, since this is one of the primary functions of layers.
        
        Attempts to use inheritance or composition to separate out tree structure resulted in
        unwieldy code and/or performance regressions.
        
        The only behavior change is to store a bit for m_isStackingContext so that we don't have
        to consult the old style to know if it changed.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::insertOnlyThisLayer):
        (WebCore::RenderLayer::removeOnlyThisLayer):
        (WebCore::canCreateStackingContext):
        (WebCore::RenderLayer::shouldBeNormalFlowOnly const):
        (WebCore::RenderLayer::shouldBeStackingContext const):
        (WebCore::RenderLayer::setIsNormalFlowOnly):
        (WebCore::RenderLayer::setIsStackingContext):
        (WebCore::RenderLayer::setParent):
        (WebCore::RenderLayer::dirtyZOrderLists):
        (WebCore::RenderLayer::dirtyStackingContextZOrderLists):
        (WebCore::RenderLayer::dirtyNormalFlowList):
        (WebCore::RenderLayer::updateNormalFlowList):
        (WebCore::RenderLayer::rebuildZOrderLists):
        (WebCore::RenderLayer::collectLayers):
        (WebCore::RenderLayer::updateLayerListsIfNeeded):
        (WebCore::RenderLayer::beginTransparencyLayers):
        (WebCore::RenderLayer::willBeDestroyed):
        (WebCore::RenderLayer::isDescendantOf const):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::compareZIndex): Deleted.
        * rendering/RenderLayer.h:

2018-10-15  Antti Koivisto  <antti@apple.com>

        [PSON] Prewarm system fallback fonts
        https://bugs.webkit.org/show_bug.cgi?id=190517

        Reviewed by Ryosuke Niwa.

        This seems to be ~2% progression in PSON PLT4 with large (40ms+) improvements on some pages
        after process swaps.

        * page/PrewarmInformation.h:
        (WebCore::PrewarmInformation::encode const):
        (WebCore::PrewarmInformation::decode):
        * page/ProcessWarming.cpp:
        (WebCore::ProcessWarming::collectPrewarmInformation):
        (WebCore::ProcessWarming::prewarmWithInformation):
        * platform/graphics/FontCache.cpp:
        (WebCore::FontCache::collectPrewarmInformation const):
        (WebCore::FontCache::prewarm):
        * platform/graphics/FontCache.h:
        (WebCore::FontCache::PrewarmInformation::isolatedCopy const):
        (WebCore::FontCache::PrewarmInformation::encode const):
        (WebCore::FontCache::PrewarmInformation::decode):

        Make font cache prewarm information a struct with encode/decode support and move it into FontCache scope.

        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontDatabase::collectionForFamily):
        (WebCore::FontCache::systemFallbackForCharacters):

        Collect the names of fonts that end up needing character specific system fallbacks.

        (WebCore::FontCache::collectPrewarmInformation const):

        Include them into prewarm information.

        (WebCore::FontCache::prewarm):

        Invoking CTFontCreateForCharactersWithLanguage for the correct named font seems sufficient to fully
        prewarm it for fallbacks (independent of size, locale or other characteristics).
        Any future calls to systemFallbackForCharacters are fast.

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Restrict browsing context lookup by name to frames that are related to one another
        https://bugs.webkit.org/show_bug.cgi?id=190475

        Reviewed by Alex Christensen.

        Update our frame lookup by name logic to take in the active / requesting frame and
        only a return a frame that is related to it. By related to it, I mean:
        - Ancestor <-> Descendant relationship
        - Opener <-> Openee relationship

        Being able to look up unrelated frames makes process swapping difficult so we need
        to be stricter.

        This change is being discussed at:
        - https://github.com/whatwg/html/issues/313

        Tests: http/tests/dom/new-window-can-target-opener.html
               http/tests/dom/noopener-window-cannot-target-opener.html
               http/tests/dom/noopener-window-not-targetable.html
               http/tests/dom/noopener-window-not-targetable2.html
               http/tests/dom/noreferrer-window-not-targetable.html
               http/tests/dom/opened-window-not-targetable-after-disowning-opener.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::findFrameForNavigation):
        * page/FrameTree.cpp:
        (WebCore::isFrameFamiliarWith):
        (WebCore::FrameTree::find const):
        * page/FrameTree.h:
        * rendering/HitTestResult.cpp:
        (WebCore::HitTestResult::targetFrame const):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Shrink more enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190540

        Reviewed by Chris Dumez.

        * Modules/notifications/NotificationDirection.h:
        * dom/Document.h:
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * loader/HistoryController.h:
        * loader/ShouldSkipSafeBrowsingCheck.h:
        * loader/ShouldTreatAsContinuingLoad.h:
        * page/AutoplayEvent.h:
        * page/ChromeClient.h:
        * page/DiagnosticLoggingClient.h:
        * page/Page.h:
        * platform/CookiesStrategy.h:
        * platform/audio/AudioSession.h:
        * platform/network/NetworkStorageSession.h:
        * platform/network/StoredCredentialsPolicy.h:
        * workers/service/SWClientConnection.h:
        * workers/service/ServiceWorkerContainer.h:
        * workers/service/ServiceWorkerRegistrationData.h:
        * workers/service/ServiceWorkerRegistrationOptions.h:
        * workers/service/ServiceWorkerTypes.h:
        * workers/service/ServiceWorkerUpdateViaCache.h:
        * workers/service/server/SWServer.h:
        * workers/service/server/SWServerRegistration.h:

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Implement subprocess sandboxing
        https://bugs.webkit.org/show_bug.cgi?id=188568

        Reviewed by Michael Catanzaro.

        Link against libseccomp.

        * PlatformGTK.cmake:

2018-10-15  YUHAN WU  <yuhan_wu@apple.com>

        Implement error handler of MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=190438

        Reviewed by Youenn Fablet.

        Test: imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-error.html

        Implement error event handler (onerror) for MediaRecorder and basic architecture of start() function.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::~MediaRecorder):
        (WebCore::MediaRecorder::stop):
        (WebCore::MediaRecorder::start):
        (WebCore::MediaRecorder::setNewRecordingState):
        (WebCore::MediaRecorder::scheduleDeferredTask):
        (WebCore::MediaRecorder::didAddOrRemoveTrack):
        * Modules/mediarecorder/MediaRecorder.h:
        * Modules/mediarecorder/MediaRecorder.idl:
        * Modules/mediarecorder/MediaRecorderErrorEvent.cpp: Added.
        (WebCore::MediaRecorderErrorEvent::create):
        (WebCore::MediaRecorderErrorEvent::MediaRecorderErrorEvent):
        (WebCore::MediaRecorderErrorEvent::eventInterface const):
        * Modules/mediarecorder/MediaRecorderErrorEvent.h: Added.
        * Modules/mediarecorder/MediaRecorderErrorEvent.idl: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/EventNames.in:
        * dom/EventTargetFactory.in:

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Window's properties such as 'location' should not become null when it loses its browsing context
        https://bugs.webkit.org/show_bug.cgi?id=190539

        Reviewed by Alex Christensen.

        Window's properties such as 'location' should not become null when it loses its browsing context.
        This Webkit behavior is not standard and does not match other browsers so this patch makes it so
        that those properties persist.

        Tests: http/tests/dom/cross-origin-detached-window-properties.html
               http/tests/dom/same-origin-detached-window-properties.html

        * bindings/js/JSDOMBindingSecurity.cpp:
        (WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):
        * bindings/js/JSDOMBindingSecurity.h:
        * bindings/js/JSDOMWindowProperties.cpp:
        (WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):
        (WebCore::JSDOMWindowProperties::getOwnPropertySlot):
        * bindings/js/JSLocationCustom.cpp:
        (WebCore::getOwnPropertySlotCommon):
        (WebCore::putCommon):
        (WebCore::JSLocation::deleteProperty):
        (WebCore::JSLocation::deletePropertyByIndex):
        (WebCore::JSLocation::getOwnPropertyNames):
        (WebCore::JSLocation::defineOwnProperty):
        (WebCore::JSLocation::getPrototype):
        (WebCore::JSLocation::toStringName):
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateAttributeGetterBodyDefinition):
        (GenerateAttributeSetterBodyDefinition):
        (GenerateOperationBodyDefinition):
        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
        (WebCore::jsTestActiveDOMObjectExcitingAttrGetter):
        (WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
        * crypto/SubtleCrypto.cpp:
        (WebCore::SubtleCrypto::SubtleCrypto):
        * crypto/SubtleCrypto.h:
        (WebCore::SubtleCrypto::create):
        * dom/Document.cpp:
        (WebCore::Document::~Document):
        * page/Crypto.cpp:
        (WebCore::Crypto::Crypto):
        * page/Crypto.h:
        (WebCore::Crypto::create):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::~DOMWindow):
        (WebCore::DOMWindow::frameDestroyed):
        (WebCore::DOMWindow::screen):
        (WebCore::DOMWindow::history):
        (WebCore::DOMWindow::crypto):
        (WebCore::DOMWindow::locationbar):
        (WebCore::DOMWindow::menubar):
        (WebCore::DOMWindow::personalbar):
        (WebCore::DOMWindow::scrollbars):
        (WebCore::DOMWindow::statusbar):
        (WebCore::DOMWindow::toolbar):
        (WebCore::DOMWindow::console const):
        (WebCore::DOMWindow::applicationCache):
        (WebCore::DOMWindow::navigator):
        (WebCore::DOMWindow::performance const):
        (WebCore::DOMWindow::location):
        (WebCore::DOMWindow::visualViewport):
        (WebCore::DOMWindow::styleMedia):
        * page/DOMWindow.h:
        * page/DOMWindow.idl:
        * workers/WorkerGlobalScope.cpp:
        (WebCore::WorkerGlobalScope::crypto):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Include EnumTraits.h less
        https://bugs.webkit.org/show_bug.cgi?id=190535

        Reviewed by Chris Dumez.

        * Modules/applepay/ApplePaySessionPaymentRequest.h:
        * Modules/applepay/PaymentAuthorizationStatus.h:
        * Modules/applicationmanifest/ApplicationManifest.h:
        * Modules/fetch/FetchHeaders.h:
        * Modules/webauthn/AuthenticatorTransport.h:
        * Modules/webauthn/PublicKeyCredentialType.h:
        * loader/ShouldSkipSafeBrowsingCheck.h:
        * loader/ShouldTreatAsContinuingLoad.h:
        * platform/Cookie.h:
        * platform/audio/AudioSession.h:
        * platform/mediastream/CaptureDevice.h:
        * platform/mediastream/MediaStreamRequest.h:
        * platform/mediastream/RealtimeMediaSourceSettings.h:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/network/NetworkLoadInformation.h:
        * workers/service/ServiceWorkerClientType.h:
        * workers/service/ServiceWorkerTypes.h:
        * workers/service/ServiceWorkerUpdateViaCache.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove InjectedBundle processing of back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190459

        Reviewed by Chris Dumez.

        The uses of these functions are dead code I removed in rdar://problem/45180545
        Removing these functions is a step towards fixing the PSON history bugs.

        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoaderClient.h:
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::goToItem):

2018-10-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove Option::useAsyncIterator
        https://bugs.webkit.org/show_bug.cgi?id=190567

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2018-10-15  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Fix EME build for GStreamer 1.14.x
        https://bugs.webkit.org/show_bug.cgi?id=190471

        Reviewed by Xabier Rodriguez-Calvar.

        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptTransformCaps): The
        GST_PROTECTION_UNSPECIFIED_SYSTEM_ID #define won't be shipped
        until the GStreamer 1.16.0 release, so its use needs to be wrapped
        between a version check.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered): Ditto.

2018-10-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the view
        https://bugs.webkit.org/show_bug.cgi?id=190504
        <rdar://problem/45117760>

        Reviewed by Tim Horton.

        Add support in ViewportConfiguration for applying a layout size scale factor to the viewport. See below for
        more details.

        Tests: fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html
               fast/viewport/ios/device-width-viewport-after-changing-view-scale.html

        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::setViewLayoutSize):

        The viewport's layout size may now be changed alongside the layout size scale factor. If either of these two
        variables change, we recompute our minimum layout size and viewport configuration parameters.

        (WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const):
        (WebCore::ViewportConfiguration::nativeWebpageParameters):
        (WebCore::ViewportConfiguration::testingParameters):
        (WebCore::ViewportConfiguration::updateConfiguration):

        Multiply the minimum scale, initial scale, and maximum scale by the layout size scale factor. This allows us to
        keep the document well-proportioned within the viewport, while still laying out at a different layout size.

        (WebCore::ViewportConfiguration::updateMinimumLayoutSize):

        Compute the minimum layout size by scaling the default layout size derived from our view's size.

        (WebCore::ViewportConfiguration::layoutWidth const):
        (WebCore::ViewportConfiguration::layoutHeight const):
        * page/ViewportConfiguration.h:

        Maintain the original initial scale, unaffected by the layout size scale factor. This is used when computing
        layout width and height to prevent scaling by the layout size scale factor twice when computing layout sizes.

        (WebCore::ViewportConfiguration::description const):

        Include the layout size scale factor in ViewportConfiguration's description string.

        (WebCore::ViewportConfiguration::Parameters::operator== const):
        (WebCore::operator<<):

2018-10-12  Youenn Fablet  <youenn@apple.com>

        Use downcast for use of RealtimeMediaSource in LibWebRTCMediaEndpoint
        https://bugs.webkit.org/show_bug.cgi?id=190533

        Reviewed by Chris Dumez.

        Clean-up work.
        No change of behavior.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::setExistingReceiverSourceTrack):
        * platform/mediastream/RealtimeIncomingAudioSource.h:
        (isType):
        * platform/mediastream/RealtimeIncomingVideoSource.h:
        (isType):
        * platform/mediastream/RealtimeMediaSource.h:

2018-10-12  Jer Noble  <jer.noble@apple.com>

        WebAVSampleBufferErrorListener's parent should be a WeakPtr.
        https://bugs.webkit.org/show_bug.cgi?id=190524
        <rdar://problem/44359307>

        Reviewed by Eric Carlson.

        Once WebAVSampleBufferErrorListener's parent is a WeakPtr, we no longer need to pass
        protectedSelf into the callOnMainThread lambdas; we can pass in the parent itself.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener initWithParent:]):
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
        (-[WebAVSampleBufferErrorListener layerFailedToDecode:]):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::destroyRenderers):

2018-10-12  Ryosuke Niwa  <rniwa@webkit.org>

        Address the review comment which was meant to be addressed in r237025.

        * editing/MarkupAccumulator.cpp:
        (WebCore::elementCannotHaveEndTag):

2018-10-12  Youenn Fablet  <youenn@apple.com> and Alejandro G. Castro  <alex@igalia.com>

        Refresh libwebrtc up to 343f4144be
        https://bugs.webkit.org/show_bug.cgi?id=190361

        Reviewed by Chris Dumez.

        This refresh should not change behavior but will allow us to implement better
        mdns candidate support and simulcast activation surfacing through addTransceiver.
        Covered by existing tests.

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::MockLibWebRTCPeerConnection::CreateAnswer):
        * testing/MockLibWebRTCPeerConnection.h:
        (WebCore::MockRtpSender::GetParameters): Deleted.
        (WebCore::MockRtpSender::SetParameters): Deleted.
        (WebCore::MockRtpSender::GetDtmfSender const): Deleted.

2018-10-12  Alex Christensen  <achristensen@webkit.org>

        Allow encoding of small enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190531

        Reviewed by Tim Horton.

        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        * dom/Document.h:
        * editing/FontAttributeChanges.h:
        * history/CachedFrame.h:
        * loader/FrameLoaderTypes.h:
        * platform/CookiesStrategy.h:
        * platform/PasteboardItemInfo.h:
        * platform/ReferrerPolicy.h:

2018-10-12  Rob Buis  <rbuis@igalia.com>

        Solve the confusion around blankURL() and isBlankURL() in URL
        https://bugs.webkit.org/show_bug.cgi?id=158988

        Reviewed by Alex Christensen.

        The name isBlankURL is not accurate as the function tests the
        protocol, not the full URL. Choose protocolIsAbout to align with
        exisiting protocolIsData, protocolIsBlob etc.

        No tests as no change in functionality.

        * WebCore.order:
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::loadApplicationManifest):
        (WebCore::DocumentLoader::startIconLoading):
        * loader/NavigationAction.cpp:
        (WebCore::shouldTreatAsSameOriginNavigation):
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::SerializerMarkupAccumulator::appendCustomAttributes):
        (WebCore::PageSerializer::serializeFrame):
        * page/csp/ContentSecurityPolicyDirectiveList.cpp:
        (WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrame const):
        (WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForObjectSource const):
        * platform/URL.cpp:
        (WebCore::URL::protocolIsAbout const):
        (WebCore::URL::isBlankURL const): Deleted.
        * platform/URL.h:
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::loadFull):

2018-10-12  Youenn Fablet  <youenn@apple.com>

        DOMCache should dereference itself as soon as stopped
        https://bugs.webkit.org/show_bug.cgi?id=190441

        Reviewed by Chris Dumez.

        Dereference the DOMCache as soon as its context is stopped instead of waiting for garbage collection.
        This allows freeing resources sooner in the network process.
        No observable change of behavior since the DOMCache becomes no-op when its context is stopped.

        * Modules/cache/DOMCache.cpp:
        (WebCore::DOMCache::~DOMCache):
        (WebCore::DOMCache::stop):

2018-10-12  Jer Noble  <jer.noble@apple.com>

        CRASH in WebCore::MediaPlayerPrivateAVFoundation::setPreload
        https://bugs.webkit.org/show_bug.cgi?id=190485
        <rdar://problem/34613350>

        Reviewed by Eric Carlson.

        Crash analytics show that a pure-virtual function is called by MediaPlayerPrivateAVFoundation::setPreload(), and
        the likely cause of that pure-virtual function call is that the MediaPlayerPrivateAVFoundation object itself has
        been destroyed, likely as a side effect of calling MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL().
        The usual suspect for this kind of crash is due to calling into JS (e.g., from a callback passed up to
        HTMLMediaElement). Code inspection hasn't yielded any good hints about why this might be occurring, so we will
        add a ScriptDisallowedScope assertion inside HTMLMediaElement::prepareToPlay(), to generate a good crashlog
        showing exactly what callback is resulting in a JS call. But just in case the deallocation is not due to JS,
        also add an explicit strong-ref inside MediaPlayer::prepareToPlay.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::prepareToPlay):
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::prepareToPlay):

2018-10-12  Jer Noble  <jer.noble@apple.com>

        Null-dereference in SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged
        https://bugs.webkit.org/show_bug.cgi?id=190490
        <rdar://problem/42213807>

        Reviewed by Eric Carlson.

        Crash analytics show a null dereference occurring, likely because m_mediaSource is null.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):

2018-10-11  Don Olmstead  <don.olmstead@sony.com>

        Add Houdini specs to features.json
        https://bugs.webkit.org/show_bug.cgi?id=190494
        <rdar://problem/45211879>

        Unreviewed fix.

        Specifications should not reference other specifications. Also
        move Worklet into the specifications section.

        * features.json:

2018-10-11  Youenn Fablet  <youenn@apple.com>

        IOS 12 - Service worker cache not shared when added to homescreen
        https://bugs.webkit.org/show_bug.cgi?id=190269
        <rdar://problem/45009961>

        Reviewed by Alex Christensen.

        Expose Cache Storage API when Service Worker API is exposed.
        This is used for API tests.

        * dom/ScriptExecutionContext.h: Make hasServiceWorkerScheme
        available outside SERVICE_WORKER compilation flag since used by DOMWindowCaches.
        * dom/ScriptExecutionContext.cpp: Ditto.
        * Modules/cache/DOMWindowCaches.idl:

2018-10-10  Simon Fraser  <simon.fraser@apple.com>

        Hide RenderLayer z-order and normal flow lists behind iterators
        https://bugs.webkit.org/show_bug.cgi?id=190457

        Reviewed by Zalan Bujtas.

        Expose the positive z-order, negative z-order and normal flow lists
        from RenderLayer as iterators rather than vectors of raw pointers.
        
        This hides the fact that the vectors can be null, and allows for easier casting in future.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::update3DTransformedDescendantStatus):
        (WebCore::RenderLayer::paintLayerContents):
        (WebCore::RenderLayer::paintList):
        (WebCore::RenderLayer::hitTestLayer):
        (WebCore::RenderLayer::hitTestList):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::traverseVisibleNonCompositedDescendantLayers):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
        (WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
        (WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
        (WebCore::RenderLayerCompositor::recursiveRepaintLayer):
        (WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):
        (WebCore::RenderLayerCompositor::layerHas3DContent const):
        * rendering/RenderTreeAsText.cpp:
        (WebCore::writeLayers):

2018-10-11  Don Olmstead  <don.olmstead@sony.com>

        Add Houdini specs to features.json
        https://bugs.webkit.org/show_bug.cgi?id=190494

        Reviewed by Simon Fraser.

        Add CSS Typed OM Level 1, CSS Layout API Level 1, CSS Animation
        Worklet, and group them under a Houdini feature set.

        * features.json:

2018-10-11  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Semaphore.h conflicts with POSIX header
        https://bugs.webkit.org/show_bug.cgi?id=190486

        Reviewed by Yusuke Suzuki.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

2018-10-11  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Support arbitrary video resolution in getUserMedia API
        https://bugs.webkit.org/show_bug.cgi?id=189734

        Reviewed by Xabier Rodriguez-Calvar.

        Implement arbitrary video resolution for the getUserMedia API in GStreamer.

        Fix the MockRealtimeMediaSource device list to make devices properties match
        test expectations.

        Reactivate tests that were failling because of that.

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::standardVideoSizes):
        (WebCore::standardVideoSizes): Deleted.
        * platform/mediastream/RealtimeVideoSource.h:
        * platform/mediastream/VideoPreset.h:
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoPreset::create):
        (WebCore::GStreamerVideoPreset::GStreamerVideoPreset):
        (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
        (WebCore::GStreamerVideoCaptureSource::capabilities):
        (WebCore::GStreamerVideoCaptureSource::generatePresets):
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::defaultDevices):

2018-10-11  Keith Rollin  <krollin@apple.com>

        CURRENT_ARCH should not be used in Run Script phase.
        https://bugs.webkit.org/show_bug.cgi?id=190407
        <rdar://problem/45133556>

        Reviewed by Alexey Proskuryakov.

        CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
        CURRENT_ARCH is not well-defined during this phase (and may even have
        the value "undefined") since this phase is run just once per build
        rather than once per supported architecture. Migrate away from
        CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
        performing an operation for each value, or by picking the first entry
        in ARCHS and using that as a representative value.

        No new tests -- no functional changes.

        * DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
        first entry in ARCHS rather than use CURRENT_ARCH.

2018-10-11  Daniel Bates  <dabates@apple.com>

        Support building WebKit for macOS Mojave using a newer SDK
        https://bugs.webkit.org/show_bug.cgi?id=190431

        Reviewed by Andy Estes.

        * platform/network/cocoa/CookieCocoa.mm:
        (WebCore::coreSameSitePolicy):
        (WebCore::nsSameSitePolicy):

2018-10-11  Daniel Bates  <dabates@apple.com>

        [iOS] Add typedef for WebEvent keyboard flags
        https://bugs.webkit.org/show_bug.cgi?id=190435

        Reviewed by Wenson Hsieh.

        Currently WebEvent and UIKit SPI are intertwined when it comes to keyboard flags. It seems sufficient
        to have WebEvent defined its own keyboard flags so that callers do not need to be aware of UIKit SPI.

        No functionality changed. So, no new tests.

        * platform/ios/WebEvent.h:
        * platform/ios/WebEvent.mm:
        (-[WebEvent keyboardFlags]):

2018-10-11  Antti Koivisto  <antti@apple.com>

        Use finer grained locking in FontDatabase
        https://bugs.webkit.org/show_bug.cgi?id=190467

        Reviewed by Alex Christensen.

        * platform/graphics/FontCache.h:

        Also use ListHashSet for prewarming info so we can prewarm in the same order the fonts were
        seen last time.

        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontDatabase::collectionForFamily):

        Only hold the lock when accessing the hashmap. There is no need to hold it during font construction
        which can take a long time.

        (WebCore::FontDatabase::fontForPostScriptName):

        This is currently not prewarmed from a thread so no need for locking.

        (WebCore::FontDatabase::clear):

2018-10-11  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Fix race condition in GStreamerVideoDecoder
        https://bugs.webkit.org/show_bug.cgi?id=190470

        The GStreamerVideoDecoder.m_dtsPtsMap filed is accessed from
        the main thread and some GStreamer streaming thread, make sure
        to protect its access.

        And use WTF::StdMap instead of std::map.

        Reviewed by Philippe Normand.

        Manually tested and a random crash is gone.

        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::newSampleCallback):

2018-10-11  Enrique Ocaña González  <eocanha@igalia.com>

        [GStreamer][MSE] Fix height calculation for streams with source aspect ratio
        https://bugs.webkit.org/show_bug.cgi?id=190464

        Reviewed by Xabier Rodriguez-Calvar.

        This patch is authored by Nikola Veljkovic <Nikola.Veljkovic@zenterio.com>

        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::getVideoResolutionFromCaps): Reverse the SAR adjustment to "undo" it
        instead of applying it twice.

2018-10-11  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add mediaDevices.enumerateDevices support
        https://bugs.webkit.org/show_bug.cgi?id=185761

        Reviewed by Youenn Fablet.

        We are adopting the same policy COCOA is using when returning the
        list of media devices if the user does not have persistent
        access. Namely, we just return the first media device for audio
        and video capture.

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::filterDeviceList): Add support for
        other platforms when filtering devices if there is no persistent
        access to the origin.

2018-10-10  Chris Dumez  <cdumez@apple.com>

        Rename a couple of DOMWindowProperty virtual functions
        https://bugs.webkit.org/show_bug.cgi?id=190458

        Reviewed by Geoffrey Garen.

        Rename a couple of DOMWindowProperty virtual functions as the current naming no longer makes
        sense after recent refactoring.

        disconnectFrameForDocumentSuspension() was renamed to suspendForPageCache(), and
        reconnectFrameFromDocumentSuspension(Frame*) was renamed to resumeFromPageCache().
        DOMWindowProperty objects no longer need to disconnect / reconnect from their
        frame since they now get their frame from their associated Window. However, some
        DOMWindowProperty subclasses do have some page cache suspension / resuming logic
        implemented of overrides of these functions.

        Also drop the disconnectDOMWindowProperties() / reconnectDOMWindowProperties()
        methods in DOMWindow. The naming made little sense as it does not really
        disconnect those properties in any way. Instead, inline them in
        DOMWindow's suspendForPageCache() / resumeFromPageCache() since these are
        the only callers.

        * Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
        (WebCore::DOMWindowIndexedDatabase::suspendForPageCache):
        (WebCore::DOMWindowIndexedDatabase::resumeFromPageCache):
        (WebCore::DOMWindowIndexedDatabase::disconnectFrameForDocumentSuspension): Deleted.
        (WebCore::DOMWindowIndexedDatabase::reconnectFrameFromDocumentSuspension): Deleted.
        * Modules/indexeddb/DOMWindowIndexedDatabase.h:
        * history/CachedFrame.cpp:
        (WebCore::CachedFrame::CachedFrame):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::open):
        * loader/appcache/DOMApplicationCache.cpp:
        (WebCore::DOMApplicationCache::suspendForPageCache):
        (WebCore::DOMApplicationCache::resumeFromPageCache):
        (WebCore::DOMApplicationCache::disconnectFrameForDocumentSuspension): Deleted.
        (WebCore::DOMApplicationCache::reconnectFrameFromDocumentSuspension): Deleted.
        * loader/appcache/DOMApplicationCache.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::suspendForPageCache):
        (WebCore::DOMWindow::resumeFromPageCache):
        (WebCore::DOMWindow::suspendForDocumentSuspension): Deleted.
        (WebCore::DOMWindow::resumeFromDocumentSuspension): Deleted.
        (WebCore::DOMWindow::disconnectDOMWindowProperties): Deleted.
        (WebCore::DOMWindow::reconnectDOMWindowProperties): Deleted.
        * page/DOMWindow.h:
        * page/DOMWindowExtension.cpp:
        (WebCore::DOMWindowExtension::suspendForPageCache):
        (WebCore::DOMWindowExtension::resumeFromPageCache):
        (WebCore::DOMWindowExtension::disconnectFrameForDocumentSuspension): Deleted.
        (WebCore::DOMWindowExtension::reconnectFrameFromDocumentSuspension): Deleted.
        * page/DOMWindowExtension.h:
        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::suspendForPageCache):
        (WebCore::DOMWindowProperty::resumeFromPageCache):
        (WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension): Deleted.
        (WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension): Deleted.
        * page/DOMWindowProperty.h:

2018-10-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: create special Network waterfall for media events
        https://bugs.webkit.org/show_bug.cgi?id=189773
        <rdar://problem/44626605>

        Reviewed by Joseph Pecoraro.

        Test: http/tests/inspector/dom/didFireEvent.html

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::HTMLMediaElement):

        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::addEventListenersToNode): Added.
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::addEventListenersToNodeImpl): Added.

        * inspector/agents/InspectorDOMAgent.h:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::EventFiredCallback): Added.
        (WebCore::EventFiredCallback::create): Added.
        (WebCore::EventFiredCallback::operator==): Added.
        (WebCore::EventFiredCallback::handleEvent): Added.
        (WebCore::EventFiredCallback::EventFiredCallback): Added.
        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
        (WebCore::InspectorDOMAgent::addEventListenersToNode): Added.

2018-10-10  Daniel Bates  <dabates@apple.com>

        [iOS] Cleanup -[WAKView _selfHandleEvent:] and -[WAKWindow sendEventSynchronously:]
        https://bugs.webkit.org/show_bug.cgi?id=190402

        Reviewed by Anders Carlsson.

        Unindent case statements. Remove use of default case statements with body ASSERT_NOT_REACHED()
        to catch the cases of a missing enumerator. By omitting the default case statement we turn
        such a scenario into a compile-time error instead of handling it as a runtime error.

        * platform/ios/wak/WAKView.mm:
        (-[WAKView _selfHandleEvent:]):
        * platform/ios/wak/WAKWindow.mm:
        (-[WAKWindow sendEventSynchronously:]):

2018-10-05  Ryosuke Niwa  <rniwa@webkit.org>

        Rename MarkupAccumulator::appendStartTag, appendElement, etc... for clarity
        https://bugs.webkit.org/show_bug.cgi?id=190308

        Reviewed by Darin Adler.

        Renamed appendStartTag and appendEndTag to startAppendingNode and endAppendingNode since serialize any node,
        not just elements which produce start and end tags.

        Renamed appendElement and appendEndElement to appendStartTag and appendEndTag since that's what they do.

        * editing/MarkupAccumulator.cpp:
        (WebCore::elementCannotHaveEndTag): Made this a static local function.
        (WebCore::shouldSelfClose): Ditto.
        (WebCore::MarkupAccumulator::serializeNodesWithNamespaces):
        (WebCore::MarkupAccumulator::startAppendingNode): Renamed from appendStartTag.
        (WebCore::MarkupAccumulator::endAppendingNode): Renamed from appendEndElement and merged appendEndMarkup here.
        (WebCore::MarkupAccumulator::appendTextSubstring): Deleted. This was only used by StyledMarkupAccumulator.
        (WebCore::MarkupAccumulator::appendStringView): Added.
        (WebCore::MarkupAccumulator::appendStartTag): Renamed from appendElement.
        (WebCore::MarkupAccumulator::appendCloseTag):
        (WebCore::MarkupAccumulator::appendNonElementNode): Renamed from appendStartMarkup. No longer serializes
        an element. StyledMarkupAccumulator had a check before calling this function already so this clarifies
        the purpose of this function.
        (WebCore::MarkupAccumulator::appendElement): Deleted.
        (WebCore::MarkupAccumulator::appendEndMarkup): Deleted. Merged into appendEndTag.
        * editing/MarkupAccumulator.h:
        (WebCore::MarkupAccumulator::appendNodeEnd): Renamed from appendEndTag.
        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::wrapWithNode):
        (WebCore::StyledMarkupAccumulator::appendStartTag): Renamed from appendElement.
        (WebCore::StyledMarkupAccumulator::appendEndTag): Renamed from appendEndElement.
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
        (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Use String::substring directly instead of
        going through appendTextSubstring which has been deleted.
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::SerializerMarkupAccumulator::appendStartTag): Renamed from appendElement.
        (WebCore::PageSerializer::SerializerMarkupAccumulator::appendEndTag): Renamed from appendEndElement.

2018-10-10  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the build with current SDKs.

        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::getPublicKeyComponents):

2018-10-10  Brent Fulgham  <bfulgham@apple.com>

        Only report the supported WebGL version
        https://bugs.webkit.org/show_bug.cgi?id=190434
        <rdar://problem/45024677>

        Reviewed by Dean Jackson.

        Tested by fast/canvas/webgl/gl-getstring.html

        Revise getParameter(gl.VERSION) to only return the WebGL version without the hardware and
        driver-specific details available through the low-level OpenGL driver interface. These details
        are not needed for WebGL use and expose information about the user's system that we do not
        need to share.

        * html/canvas/WebGL2RenderingContext.cpp:
        (WebCore::WebGL2RenderingContext::getParameter):
        * html/canvas/WebGLRenderingContext.cpp:
        (WebCore::WebGLRenderingContext::getParameter):

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Unreviewed, add missing headers for inline functions
        https://bugs.webkit.org/show_bug.cgi?id=190429

        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

2018-10-10  Tim Horton  <timothy_horton@apple.com>

        Share more WKShareSheet code between macOS and iOS, and fix a few bugs
        https://bugs.webkit.org/show_bug.cgi?id=190420

        Reviewed by Simon Fraser.

        Test: fast/web-share/share-with-no-url.html

        * page/Navigator.cpp:
        (WebCore::Navigator::share):
        * page/ShareData.h:
        Make 'url' an optional field on ShareDataWithParsedURL, and don't
        reject the share() promise if the URL is totally empty (as opposed to invalid).

2018-10-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: notify the frontend when a canvas has started recording via console.record
        https://bugs.webkit.org/show_bug.cgi?id=190306

        Reviewed by Brian Burg.

        Updated existing tests: LayoutTests/inspector/canvas/recording-2d.html
                                LayoutTests/inspector/canvas/recording-bitmaprenderer.html
                                LayoutTests/inspector/canvas/recording-webgl-snapshots.html
                                LayoutTests/inspector/canvas/recording-webgl.html

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::startRecording):
        (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):

        * inspector/InspectorCanvas.h:
        Default `singleFrame` to false to better match the default behaviour of other `console`
        functions (`profile` doesn't stop until `profileEnd` is called, so the same should be true
        of `record` and `recordEnd`).

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
        https://bugs.webkit.org/show_bug.cgi?id=190429

        Reviewed by Saam Barati.

        Use `tryCreate` or new `create`. If we use new `create`, we can use Ref<> and remove null check.

        * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
        (WebCore::CDMSessionClearKey::cachedKeyForKeyID const):
        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithDictionaryInContext):
        * Modules/webaudio/AudioBuffer.cpp:
        (WebCore::AudioBuffer::AudioBuffer):
        (WebCore::AudioBuffer::getChannelData):
        * Modules/webvr/VREyeParameters.cpp:
        (WebCore::VREyeParameters::offset const):
        * Modules/webvr/VRFrameData.cpp:
        (WebCore::matrixToArray):
        * Modules/webvr/VRPose.cpp:
        (WebCore::optionalFloat3ToJSCArray):
        (WebCore::VRPose::position const):
        (WebCore::VRPose::orientation const):
        * Modules/webvr/VRStageParameters.cpp:
        (WebCore::VRStageParameters::sittingToStandingTransform const):
        * bindings/js/ReadableStreamDefaultController.h:
        (WebCore::ReadableStreamDefaultController::enqueue):
        * bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::readArrayBufferView):
        * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
        (WebCore::CryptoKeyRSA::algorithm const):
        * crypto/mac/CryptoKeyRSAMac.cpp:
        (WebCore::CryptoKeyRSA::algorithm const):
        * css/DOMMatrixReadOnly.cpp:
        (WebCore::DOMMatrixReadOnly::toFloat32Array const):
        (WebCore::DOMMatrixReadOnly::toFloat64Array const):
        * css/FontFace.cpp:
        (WebCore::FontFace::create):
        * dom/TextEncoder.cpp:
        (WebCore::TextEncoder::encode const):
        * html/ImageData.cpp:
        (WebCore::ImageData::ImageData):
        * html/ImageData.h:
        (WebCore::ImageData::data const):
        (): Deleted.
        * html/canvas/WebGL2RenderingContext.cpp:
        (WebCore::WebGL2RenderingContext::bufferData):
        (WebCore::WebGL2RenderingContext::bufferSubData):
        (WebCore::WebGL2RenderingContext::getInternalformatParameter):
        (WebCore::WebGL2RenderingContext::getParameter):
        * html/canvas/WebGLRenderingContext.cpp:
        (WebCore::WebGLRenderingContext::getParameter):
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::getUniform):
        (WebCore::WebGLRenderingContextBase::getVertexAttrib):
        (WebCore::WebGLRenderingContextBase::getWebGLFloatArrayParameter):
        (WebCore::WebGLRenderingContextBase::getWebGLIntArrayParameter):
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):
        * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
        (WebCore::CDMSessionAVFoundationCF::generateKeyRequest):
        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
        (WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
        (WebCore::CDMSessionAVContentKeySession::generateKeyRequest):
        (WebCore::CDMSessionAVContentKeySession::releaseKeys):
        (WebCore::CDMSessionAVContentKeySession::update):
        (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):
        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
        (WebCore::CDMSessionAVFoundationObjC::generateKeyRequest):
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::generateKeyRequest):
        (WebCore::CDMSessionAVStreamSession::releaseKeys):
        (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
        (WebCore::MediaSampleAVFObjC::getRGBAImageData const):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        * platform/graphics/cairo/ImageBufferCairo.cpp:
        (WebCore::getImageData):
        * platform/graphics/cg/ImageBufferDataCG.cpp:
        (WebCore::ImageBufferData::getData const):
        * platform/graphics/filters/FEGaussianBlur.cpp:
        (WebCore::FEGaussianBlur::platformApplySoftware):
        * platform/graphics/filters/FilterEffect.cpp:
        (WebCore::FilterEffect::unmultipliedResult):
        (WebCore::FilterEffect::premultipliedResult):
        (WebCore::FilterEffect::copyUnmultipliedResult):
        (WebCore::FilterEffect::copyPremultipliedResult):
        (WebCore::FilterEffect::createUnmultipliedImageResult):
        (WebCore::FilterEffect::createPremultipliedImageResult):
        * platform/graphics/win/ImageBufferDataDirect2D.cpp:
        (WebCore::ImageBufferData::getData const):
        * platform/mac/SerializedPlatformRepresentationMac.mm:
        (WebCore::jsValueWithDictionaryInContext):
        * platform/mock/mediasource/MockBox.cpp:
        (WebCore::MockBox::peekType):
        (WebCore::MockBox::peekLength):
        (WebCore::MockTrackBox::MockTrackBox):
        (WebCore::MockInitializationBox::MockInitializationBox):
        (WebCore::MockSampleBox::MockSampleBox):
        * rendering/shapes/Shape.cpp:
        (WebCore::Shape::createRasterShape):
        * testing/LegacyMockCDM.cpp:
        (WebCore::initDataPrefix):
        (WebCore::keyPrefix):
        (WebCore::keyRequest):

2018-10-10  Daniel Bates  <dabates@apple.com>

        [iOS] Compare input string to UIKeyInput constants using string comparison instead of pointer comparison
        https://bugs.webkit.org/show_bug.cgi?id=190432

        Reviewed by Tim Horton.

        Pointer comparision is brittle. We should be more forgiving and perform string comparision
        of an input string to a UIKeyInput constant.

        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping):

2018-10-10  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r236802.

        Working on getting the HTML spec updated instead
        (https://github.com/whatwg/html/pull/4079)

        Reverted changeset:

        "Passing noopener=NOOPENER to window.open() should cause the
        new window to not have an opener"
        https://bugs.webkit.org/show_bug.cgi?id=190251
        https://trac.webkit.org/changeset/236802

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        XMLHttpRequest should use reportExtraMemoryAllocated/reportExtraMemoryVisited instead of deprecatedReportExtraMemory
        https://bugs.webkit.org/show_bug.cgi?id=190279

        Reviewed by Ryosuke Niwa.

        This patch switches deprecatedReportExtraMemory to reportExtraMemoryAllocated/reportExtraMemoryVisited
        in XMLHttpRequest. We report extra memory allocation when the readyState becomes DONE. And memoryCost
        function returns the memory cost which is based on the readyState and m_responseBuilder.
        We annotate XMLHttpRequest with ReportExtraMemoryCost to use reportExtraMemoryVisited automatically with
        memoryCost() function.

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::changeState):
        (WebCore::XMLHttpRequest::abort):
        (WebCore::XMLHttpRequest::internalAbort):
        (WebCore::XMLHttpRequest::networkErrorTimerFired):
        (WebCore::XMLHttpRequest::memoryCost const):
        (WebCore::XMLHttpRequest::didFinishLoading):
        (WebCore::XMLHttpRequest::didReachTimeout):
        (WebCore::XMLHttpRequest::dropProtection): Deleted.
        * xml/XMLHttpRequest.h:
        * xml/XMLHttpRequest.idl:

2018-10-09  Antoine Quint  <graouts@apple.com>

        Remove the frames() timing function
        https://bugs.webkit.org/show_bug.cgi?id=190034
        <rdar://problem/44827544>

        Reviewed by Dean Jackson.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::createTimingFunctionValue):
        * css/CSSTimingFunctionValue.cpp:
        (WebCore::CSSFramesTimingFunctionValue::customCSSText const): Deleted.
        (WebCore::CSSFramesTimingFunctionValue::equals const): Deleted.
        * css/CSSTimingFunctionValue.h:
        * css/CSSToStyleMap.cpp:
        (WebCore::CSSToStyleMap::mapAnimationTimingFunction):
        * css/CSSValue.cpp:
        (WebCore::CSSValue::equals const):
        (WebCore::CSSValue::cssText const):
        (WebCore::CSSValue::destroy):
        * css/CSSValue.h:
        (WebCore::CSSValue::isStepsTimingFunctionValue const):
        (WebCore::CSSValue::isFramesTimingFunctionValue const): Deleted.
        * css/CSSValueKeywords.in:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeAnimationTimingFunction):
        (WebCore::consumeFrames): Deleted.
        * platform/animation/TimingFunction.cpp:
        (WebCore::operator<<):
        (WebCore::TimingFunction::transformTime const):
        (WebCore::TimingFunction::createFromCSSValue):
        * platform/animation/TimingFunction.h:
        (WebCore::TimingFunction::isStepsTimingFunction const):
        (WebCore::TimingFunction::isFramesTimingFunction const): Deleted.
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::animationCanBeAccelerated const):
        (WebCore::animationHasFramesTimingFunction): Deleted.

2018-10-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: show redirect requests in Network and Timelines tabs
        https://bugs.webkit.org/show_bug.cgi?id=150005
        <rdar://problem/5378164>

        Reviewed by Joseph Pecoraro.

        Updated existing test http/tests/inspector/network/resource-timing.html.

        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::buildObjectForTiming):
        (WebCore::InspectorNetworkAgent::didFinishLoading):
        Add missing fields for `Network.types.ResourceTiming`.

2018-10-09  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION(r234620): SVGLangSpace::svgAttributeChanged() should invalidate the renderer of the SVGGeometryElement descendant only
        https://bugs.webkit.org/show_bug.cgi?id=190411

        Reviewed by Simon Fraser.

        Test: svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html

        When changing the attributes of the SVGLangSpace, we should invalidate
        the renderer of the SVGGeometryElement descendant only. Renderer of other
        elements, like SVGStopElement, should not be invalidated because they do
        not have geometry and they can be used as resources for drawing another
        SVGGeometryElement.

        * svg/SVGElement.h:
        (WebCore::SVGElement::isSVGGeometryElement const):
        * svg/SVGGeometryElement.h:
        (isType):
        * svg/SVGLangSpace.cpp:
        (WebCore::SVGLangSpace::svgAttributeChanged):

2018-10-09  Chris Dumez  <cdumez@apple.com>

        Anchor target should be ignored on activation when the download attribute is set
        https://bugs.webkit.org/show_bug.cgi?id=190408

        Reviewed by Geoffrey Garen.

        Anchor target should be ignored on activation when the download attribute is set:
        - https://html.spec.whatwg.org/#the-a-element:downloading-hyperlinks-2

        When the download attribute is set, we should use the "download the hyperlink" algorithm [1]
        instead of the "follow the hyperlink" [2] algorithm.

        Note that the "download the hyperlink" triggers a download and ignores the target attribute
        entirely.

        This is important as an anchor element with target=_blank and the download attribute set may
        fail because of Safari's popup blocker if we do not disregard the anchor target.

        [1] https://html.spec.whatwg.org/#downloading-hyperlinks
        [2] https://html.spec.whatwg.org/#following-hyperlinks-2

        Tests: fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-base-target-popup-not-allowed.html
               fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-target-popup-not-allowed.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):

2018-10-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Complex text crashes with harfbuzz 1.8.8
        https://bugs.webkit.org/show_bug.cgi?id=190409

        Reviewed by Žan Doberšek.

        We discovered that harfbuzz 1.8.8 breaks WebKit by changing the ownership semantics of
        hb_icu_get_unicode_funcs() from (transfer full) to (transfer none). Our code was actually
        expecting (transfer none), so it's not immediately clear to me why it's crashing now, but
        doesn't matter as Behdad recommends removing this line of code because it hasn't been
        been needed for many years.

        This should be covered by all our complex text tests if the bots were upgraded to the newer
        harfbuzz.

        * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

2018-10-09  Daniel Bates  <dabates@apple.com>

        [iOS] Cleanup EventHandler::passSubframeEventToSubframe()
        https://bugs.webkit.org/show_bug.cgi?id=190390

        Reviewed by Wenson Hsieh.

        Unindent case statements in switch block and use more auto.

        * page/ios/EventHandlerIOS.mm:
        (WebCore::EventHandler::passSubframeEventToSubframe):

2018-10-09  Daniel Bates  <dabates@apple.com>

        Cleanup WebEvent.mm
        https://bugs.webkit.org/show_bug.cgi?id=190391

        Reviewed by Wenson Hsieh.

        Unindent case statements in switch blocks.

        * platform/ios/WebEvent.mm:
        (-[WebEvent _typeDescription]):
        (-[WebEvent _modiferFlagsDescription]):
        (-[WebEvent _touchPhaseDescription:]):
        (-[WebEvent _eventDescription]):

2018-10-09  Oriol Brufau  <obrufau@igalia.com>

        Resolve inset properties to computed style when there is overconstraintment
        https://bugs.webkit.org/show_bug.cgi?id=188711

        Reviewed by Manuel Rego Casasnovas.

        This patch makes WebKit behave closer to Blink. Specifically,
         - In overconstrained relative or absolute positioning, inset properties resolve
           to the computed value (absolutizing percentages) instead of to the used value.
         - In fixed positioning, the resolved value of non-'auto' values is no longer
           increased by the border of the containg block.

        This patch can slighlty alter the resolved value if it's a long decimal number.

        Tests: imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-fixed.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-nobox.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-relative.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-static.html
               imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-sticky.html

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::positionOffsetValue):
        * rendering/RenderBox.h:

2018-10-09  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import CTAP HID message and packet structure from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=189289
        <rdar://problem/44120310>

        Reviewed by Brent Fulgham.

        This patch imports CTAP HID message and packet structure:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#message-and-packet-structure
        from Chromium. With this library, WebKit can now turn binaries into messages that CTAP devices could understand.
        This patch contains the following Chromium files and modifies them to fit into WebKit:
        https://cs.chromium.org/chromium/src/device/fido/fido_constants.cc?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
        https://cs.chromium.org/chromium/src/device/fido/fido_constants.h?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.cc?l=1&rcl=387f3725de2842e0e6b7175a9b2ed472b0cf781a
        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message_unittest.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75

        Covered by API tests.

        * Modules/webauthn/fido/FidoConstants.cpp: Added.
        (fido::isFidoHidDeviceCommand):
        * Modules/webauthn/fido/FidoConstants.h: Added.
        * Modules/webauthn/fido/FidoHidMessage.cpp: Added.
        (fido::FidoHidMessage::create):
        (fido::FidoHidMessage::createFromSerializedData):
        (fido::FidoHidMessage::messageComplete const):
        (fido::FidoHidMessage::getMessagePayload const):
        (fido::FidoHidMessage::popNextPacket):
        (fido::FidoHidMessage::addContinuationPacket):
        (fido::FidoHidMessage::numPackets const):
        (fido::FidoHidMessage::FidoHidMessage):
        * Modules/webauthn/fido/FidoHidMessage.h: Added.
        * Modules/webauthn/fido/FidoHidPacket.cpp: Added.
        (fido::FidoHidPacket::FidoHidPacket):
        (fido::FidoHidInitPacket::createFromSerializedData):
        (fido::FidoHidInitPacket::FidoHidInitPacket):
        (fido::FidoHidInitPacket::getSerializedData const):
        (fido::FidoHidContinuationPacket::createFromSerializedData):
        (fido::FidoHidContinuationPacket::FidoHidContinuationPacket):
        (fido::FidoHidContinuationPacket::getSerializedData const):
        * Modules/webauthn/fido/FidoHidPacket.h: Added.
        * Modules/webauthn/fido/FidoParsingUtils.cpp: Added.
        (fido::getInitPacketData):
        (fido::getContinuationPacketData):
        * Modules/webauthn/fido/FidoParsingUtils.h: Added.
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-10-09  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [CoordGraphics] Remove the 'previous backing store' logic
        https://bugs.webkit.org/show_bug.cgi?id=188838

        Reviewed by Žan Doberšek.

        Remove previousBackingStore from LayerState, since it's not needed anymore.
        When there is scale adjustment, we now simply discard mainBackingStore and
        recreate a new one.

        No new tests required.

        * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.h:
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
        (WebCore::CoordinatedGraphicsLayer::purgeBackingStores):

2018-10-09  Antti Koivisto  <antti@apple.com>

        [PSON] Prewarm system UI font
        https://bugs.webkit.org/show_bug.cgi?id=190397

        Reviewed by Geoffrey Garen.

        Cache system UI font fallbacks. Almost every web process needs these.

        * page/ProcessWarming.cpp:
        (WebCore::ProcessWarming::prewarmGlobally):

2018-10-09  Chris Dumez  <cdumez@apple.com>

        REGRESSION (Safari 12): Download of Blob URL fails
        https://bugs.webkit.org/show_bug.cgi?id=190351
        <rdar://problem/45091181>

        Reviewed by Geoffrey Garen.

        When using both the download attribute and target="_blank" on an anchor element, we would
        mistakenly drop the download attribute after the "new window" policy decision has been made.
        As a result, we would try to load the blob instead of downloading it.

        Test: fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-target.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):

2018-10-09  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] r236735 has some dead ASSERTs that need to be moved
        https://bugs.webkit.org/show_bug.cgi?id=190394

        Reviewed by Xabier Rodriguez-Calvar.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::createOptionalParserForFormat):

2018-10-09  Chris Dumez  <cdumez@apple.com>

        Have DOMWindow get its frame from its document
        https://bugs.webkit.org/show_bug.cgi?id=190389

        Reviewed by Geoff Garen.

        Have DOMWindow get its frame from its document instead of having its own m_frame which can potentially
        be out-of-sync.

        * dom/Document.cpp:
        (WebCore::Document::frameDestroyed):
        (WebCore::Document::willDetachPage):
        (WebCore::Document::attachToCachedFrame):
        * dom/Document.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::allowPopUp):
        (WebCore::ContextDestructionObserver):
        (WebCore::DOMWindow::didSecureTransitionTo):
        (WebCore::DOMWindow::frameDestroyed):
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        (WebCore::DOMWindow::reconnectDOMWindowProperties):
        (WebCore::DOMWindow::isCurrentlyDisplayedInFrame const):
        (WebCore::DOMWindow::collectMatchingElementsInFlatTree):
        (WebCore::DOMWindow::matchingElementInFlatTree):
        (WebCore::DOMWindow::orientation const):
        (WebCore::DOMWindow::console const):
        (WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
        (WebCore::DOMWindow::webkitNamespace):
        (WebCore::DOMWindow::postMessage):
        (WebCore::DOMWindow::postMessageTimerFired):
        (WebCore::DOMWindow::frameElement const):
        (WebCore::DOMWindow::focus):
        (WebCore::DOMWindow::blur):
        (WebCore::DOMWindow::close):
        (WebCore::DOMWindow::print):
        (WebCore::DOMWindow::stop):
        (WebCore::DOMWindow::alert):
        (WebCore::DOMWindow::confirm):
        (WebCore::DOMWindow::prompt):
        (WebCore::DOMWindow::find const):
        (WebCore::DOMWindow::outerHeight const):
        (WebCore::DOMWindow::outerWidth const):
        (WebCore::DOMWindow::innerHeight const):
        (WebCore::DOMWindow::innerWidth const):
        (WebCore::DOMWindow::screenX const):
        (WebCore::DOMWindow::screenY const):
        (WebCore::DOMWindow::scrollX const):
        (WebCore::DOMWindow::scrollY const):
        (WebCore::DOMWindow::closed const):
        (WebCore::DOMWindow::length const):
        (WebCore::DOMWindow::name const):
        (WebCore::DOMWindow::setName):
        (WebCore::DOMWindow::setStatus):
        (WebCore::DOMWindow::setDefaultStatus):
        (WebCore::DOMWindow::self const):
        (WebCore::DOMWindow::opener const):
        (WebCore::DOMWindow::disownOpener):
        (WebCore::DOMWindow::parent const):
        (WebCore::DOMWindow::top const):
        (WebCore::DOMWindow::getMatchedCSSRules const):
        (WebCore::DOMWindow::devicePixelRatio const):
        (WebCore::DOMWindow::scrollBy const):
        (WebCore::DOMWindow::scrollTo const):
        (WebCore::DOMWindow::allowedToChangeWindowGeometry const):
        (WebCore::DOMWindow::moveBy const):
        (WebCore::DOMWindow::moveTo const):
        (WebCore::DOMWindow::resizeBy const):
        (WebCore::DOMWindow::resizeTo const):
        (WebCore::DOMWindow::clearTimeout):
        (WebCore::DOMWindow::isSameSecurityOriginAsMainFrame const):
        (WebCore::DOMWindow::finishedLoading):
        (WebCore::DOMWindow::setLocation):
        (WebCore::DOMWindow::open):
        (WebCore::DOMWindow::showModalDialog):
        (WebCore::DOMWindow::frame const):
        (WebCore::FrameDestructionObserver): Deleted.
        (WebCore::DOMWindow::willDetachPage): Deleted.
        (WebCore::DOMWindow::detachFromFrame): Deleted.
        (WebCore::DOMWindow::attachToFrame): Deleted.
        * page/DOMWindow.h:

2018-10-09  Jer Noble  <jer.noble@apple.com>

        ISOTrackEncryptionBox returns incorrect defaultKeyID
        https://bugs.webkit.org/show_bug.cgi?id=190368

        Reviewed by Eric Carlson.

        Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox

        ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.

        Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/iso/ISOBox.h:
        * platform/graphics/iso/ISOOriginalFormatBox.h:
        * platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
        * platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
        * platform/graphics/iso/ISOSchemeInformationBox.h:
        * platform/graphics/iso/ISOSchemeTypeBox.h:
        * platform/graphics/iso/ISOTrackEncryptionBox.cpp:
        (WebCore::ISOTrackEncryptionBox::parse):
        * platform/graphics/iso/ISOTrackEncryptionBox.h:

2018-10-09  Youenn Fablet  <youenn@apple.com>

        Add support for IceCandidate stats
        https://bugs.webkit.org/show_bug.cgi?id=190329

        Reviewed by Eric Carlson.

        Convert IceCandidate stats gathered by libwebrtc.
        Since networkType might be sensitive information, we currently do not expose it.
        We do not expose address either if it is a host or prflx candidate.

        Test: webrtc/candidate-stats.html

        * Modules/mediastream/RTCStatsReport.h:
        * Modules/mediastream/RTCStatsReport.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
        (WebCore::iceCandidateState):
        (WebCore::fillRTCIceCandidateStats):
        (WebCore::LibWebRTCStatsCollector::OnStatsDelivered):

2018-10-09  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Stealing cross-origin video pixel with HLS
        https://bugs.webkit.org/show_bug.cgi?id=190003

        Reviewed by Xabier Rodriguez-Calvar.

        Report the SecurityOrigin of downloaded adaptivedemux (HLS, DASH,
        SmoothStreaming) fragments as tainted if their origin differs from
        the manifest SecurityOrigin. SecurityOrigins are stored in the
        CachedResourceStreamingClient implemented in the internal
        GStreamer HTTP(S) source element.

        The implementation is not ideal yet because the fragments download
        is performed by the WebProcess, until bug 189967 is fixed. When
        this bug is fixed, the m_hasTaintedOrigin member variable should
        be removed and all checks be done unconditionally to the
        webkithttpsrc element which will manage the download of the
        manifests and fragments.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::loadFull): Reset the m_hasTaintedOrigin value.
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Get the
        fragment URL from the adaptivedemux stats message and check if its
        origin is tainted.
        (WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):
        Initial implementation by checking the m_hasTaintedOrigin member
        variable value.
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (CachedResourceStreamingClient::responseReceived): Store the
        resource origin internally so it can be checked later on by
        webKitSrtcWouldTaintOrigin().
        (webKitSrcWouldTaintOrigin): Check given origin against cached
        origins. This implementation is similar to Cocoa's
        WebCoreNSURLSession implementation.
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

2018-10-09  Antti Koivisto  <antti@apple.com>

        Prewarm FontDatabase on process swap
        https://bugs.webkit.org/show_bug.cgi?id=190312

        Reviewed by Chris Dumez.

        Implement basic prewarming of FontDatabase. When the domain of the first page load on
        a new process is known we pass the list of font families previous used by that domain to the
        process. This is used to prewarm CoreText font database. Initialization (which involves lots of
        blocking IPC) happens outside the main thread so the fonts are ready to use when needed.

        * WebCore.xcodeproj/project.pbxproj:
        * page/PrewarmInformation.h: Added.
        (WebCore::PrewarmInformation::encode const):
        (WebCore::PrewarmInformation::decode):

        Add data structure for prewarm information with encode/decode support.

        * page/ProcessWarming.cpp:
        (WebCore::ProcessWarming::collectPrewarmInformation):
        (WebCore::ProcessWarming::prewarmWithInformation):

        Prewarming interface to be used from WebKit.

        * page/ProcessWarming.h:
        * platform/graphics/FontCache.cpp:
        (WebCore::FontCache::collectPrewarmInformation const):
        (WebCore::FontCache::prewarm):
        * platform/graphics/FontCache.h:
        * platform/graphics/cocoa/FontCacheCoreText.cpp:
        (WebCore::FontDatabase::collectionForFamily):
        (WebCore::FontDatabase::fontForPostScriptName):
        (WebCore::FontDatabase::clear):

        Add mutex for thread safe access.

        (WebCore::FontCache::createFontPlatformData):
        (WebCore::FontCache::collectPrewarmInformation const):

        Collect font families seen by this process.

        (WebCore::FontCache::prewarm):

        Prewarm FontDatabase in a dispatch queue.

2018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WK2] Add support for text alignment and text lists in font attributes
        https://bugs.webkit.org/show_bug.cgi?id=190342
        <rdar://problem/44767118>

        Reviewed by Tim Horton.

        Adds support for computing and encoding information about text alignment and enclosing list elements in the font
        attributes dictionary, exposed to the UI delegate on Cocoa platforms. This is exposed through NSParagraphStyle,
        which contains properties for both `NSTextAlignment` and an array of enclosing `NSTextList` objects.

        Test:   FontAttributes.NestedTextListsWithHorizontalAlignment
                FontAttributes.FontAttributesAfterChangingSelection

        * editing/Editor.cpp:
        (WebCore::editableTextListsAtPositionInDescendingOrder):

        Add a helper function to ascend the DOM, starting at the given position, in search of enclosing list elements.
        For each enclosing list element we find within the scope of the editable root, we create a `TextList`
        representing the list element.

        (WebCore::Editor::fontAttributesAtSelectionStart const):

        Compute and set enclosing text lists and text alignment. For text alignment, we convert the initial text-align
        value, `start`, to NSTextAlignmentNatural (the default text alignment type on Cocoa platforms); other values
        then map to Left, Right, Center, and Justified as expected (taking direction into account).

        * editing/FontAttributes.h:
        (WebCore::TextList::encode const):
        (WebCore::TextList::decode):

        Introduce TextList, a platform-agnostic representation of an unordered or ordered list. On Cocoa, this can be
        used to construct a corresponding NSTextList.

        * editing/cocoa/FontAttributesCocoa.mm:
        (WebCore::cocoaTextListMarkerName):

        Attempt to map a WebCore list style type to a `NSTextListMarker*` constant. While most of the Cocoa marker
        formats have a corresponding web-exposed list style type, many web-exposed types have no Cocoa equivalent; as
        such, fall back to default marker formats: "{disc}" for unordered lists and "{decimal}" for ordered lists.

        (WebCore::TextList::createTextList const):
        (WebCore::FontAttributes::createDictionary const):

        Include an NSParagraphStyle in the dictionary of font attributes that includes information about text alignment
        and enclosing text lists (per Cocoa convention, in order from outermost list to innermost list).

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325
        <rdar://problem/44990443>

        Reviewed by Dean Jackson.

        Existing WebGPU tests also renamed to reflect WebGPU -> WebMetal change.

        Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * DerivedSources.make:
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderPassAttachmentDescriptorCustom.cpp.
        (WebCore::toJSNewlyCreated):
        (WebCore::toJS):
        * bindings/js/JSWebMetalRenderingContextCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderingContextCustom.cpp.
        (WebCore::JSWebMetalRenderingContext::visitAdditionalChildren):
        * bindings/js/WebCoreBuiltinNames.h:
        * dom/Document.cpp:
        (WebCore::Document::getCSSCanvasContext):
        * dom/Document.h:
        * dom/Document.idl:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::getContext):
        (WebCore::HTMLCanvasElement::isWebMetalType):
        (WebCore::HTMLCanvasElement::createContextWebMetal):
        (WebCore::HTMLCanvasElement::getContextWebMetal):
        (WebCore::HTMLCanvasElement::isWebGPUType): Deleted.
        (WebCore::HTMLCanvasElement::createContextWebGPU): Deleted.
        (WebCore::HTMLCanvasElement::getContextWebGPU): Deleted.
        * html/HTMLCanvasElement.h:
        * html/HTMLCanvasElement.idl:
        * html/canvas/CanvasRenderingContext.h:
        (WebCore::CanvasRenderingContext::isWebMetal const):
        (WebCore::CanvasRenderingContext::isWebGPU const): Deleted.
        * html/canvas/WebGPURenderingContext.cpp: Removed.
        * html/canvas/WebMetalBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.cpp.
        (WebCore::WebMetalBuffer::create):
        (WebCore::WebMetalBuffer::WebMetalBuffer):
        * html/canvas/WebMetalBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.h.
        * html/canvas/WebMetalBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.idl.
        * html/canvas/WebMetalCommandBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp.
        (WebCore::WebMetalCommandBuffer::create):
        (WebCore::WebMetalCommandBuffer::WebMetalCommandBuffer):
        (WebCore::WebMetalCommandBuffer::~WebMetalCommandBuffer):
        (WebCore::WebMetalCommandBuffer::commit):
        (WebCore::WebMetalCommandBuffer::presentDrawable):
        (WebCore::WebMetalCommandBuffer::createRenderCommandEncoderWithDescriptor):
        (WebCore::WebMetalCommandBuffer::createComputeCommandEncoder):
        (WebCore::WebMetalCommandBuffer::completed):
        * html/canvas/WebMetalCommandBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.h.
        * html/canvas/WebMetalCommandBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.idl.
        * html/canvas/WebMetalCommandQueue.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.cpp.
        (WebCore::WebMetalCommandQueue::create):
        (WebCore::WebMetalCommandQueue::WebMetalCommandQueue):
        (WebCore::WebMetalCommandQueue::createCommandBuffer):
        * html/canvas/WebMetalCommandQueue.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.h.
        * html/canvas/WebMetalCommandQueue.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.idl.
        * html/canvas/WebMetalComputeCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.cpp.
        (WebCore::GPUSizeMake):
        (WebCore::WebMetalComputeCommandEncoder::create):
        (WebCore::WebMetalComputeCommandEncoder::WebMetalComputeCommandEncoder):
        (WebCore::WebMetalComputeCommandEncoder::setComputePipelineState):
        (WebCore::WebMetalComputeCommandEncoder::setBuffer):
        (WebCore::WebMetalComputeCommandEncoder::dispatch):
        (WebCore::WebMetalComputeCommandEncoder::endEncoding):
        * html/canvas/WebMetalComputeCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.h.
        * html/canvas/WebMetalComputeCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.idl.
        * html/canvas/WebMetalComputePipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.cpp.
        (WebCore::WebMetalComputePipelineState::create):
        (WebCore::WebMetalComputePipelineState::WebMetalComputePipelineState):
        * html/canvas/WebMetalComputePipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.h.
        * html/canvas/WebMetalComputePipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.idl.
        * html/canvas/WebMetalDepthStencilDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.cpp.
        (WebCore::WebMetalDepthStencilDescriptor::create):
        (WebCore::WebMetalDepthStencilDescriptor::depthWriteEnabled const):
        (WebCore::WebMetalDepthStencilDescriptor::setDepthWriteEnabled):
        (WebCore::WebMetalDepthStencilDescriptor::depthCompareFunction const):
        (WebCore::WebMetalDepthStencilDescriptor::setDepthCompareFunction):
        * html/canvas/WebMetalDepthStencilDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.h.
        * html/canvas/WebMetalDepthStencilDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.idl.
        * html/canvas/WebMetalDepthStencilState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.cpp.
        (WebCore::WebMetalDepthStencilState::create):
        (WebCore::WebMetalDepthStencilState::WebMetalDepthStencilState):
        (WebCore::WebMetalDepthStencilState::label const):
        (WebCore::WebMetalDepthStencilState::setLabel):
        * html/canvas/WebMetalDepthStencilState.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.h.
        * html/canvas/WebMetalDepthStencilState.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.idl.
        * html/canvas/WebMetalDrawable.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.cpp.
        (WebCore::WebMetalDrawable::create):
        (WebCore::WebMetalDrawable::WebMetalDrawable):
        * html/canvas/WebMetalDrawable.h: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.h.
        (WebCore::WebMetalDrawable::texture):
        * html/canvas/WebMetalDrawable.idl: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.idl.
        * html/canvas/WebMetalEnums.cpp: Renamed from Source/WebCore/html/canvas/WebGPUEnums.cpp.
        (WebCore::toWebMetalCompareFunction):
        (WebCore::web3DCompareFunctionName):
        (WebCore::toGPUCompareFunction):
        * html/canvas/WebMetalEnums.h: Renamed from Source/WebCore/html/canvas/WebGPUEnums.h.
        * html/canvas/WebMetalEnums.idl: Renamed from Source/WebCore/html/canvas/WebGPUEnums.idl.
        * html/canvas/WebMetalFunction.cpp: Renamed from Source/WebCore/html/canvas/WebGPUFunction.cpp.
        (WebCore::WebMetalFunction::create):
        (WebCore::WebMetalFunction::WebMetalFunction):
        * html/canvas/WebMetalFunction.h: Renamed from Source/WebCore/html/canvas/WebGPUFunction.h.
        * html/canvas/WebMetalFunction.idl: Renamed from Source/WebCore/html/canvas/WebGPUFunction.idl.
        * html/canvas/WebMetalLibrary.cpp: Renamed from Source/WebCore/html/canvas/WebGPULibrary.cpp.
        (WebCore::WebMetalLibrary::create):
        (WebCore::WebMetalLibrary::WebMetalLibrary):
        (WebCore::WebMetalLibrary::functionNames const):
        (WebCore::WebMetalLibrary::functionWithName const):
        * html/canvas/WebMetalLibrary.h: Renamed from Source/WebCore/html/canvas/WebGPULibrary.h.
        * html/canvas/WebMetalLibrary.idl: Renamed from Source/WebCore/html/canvas/WebGPULibrary.idl.
        * html/canvas/WebMetalRenderCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp.
        (WebCore::WebMetalRenderCommandEncoder::create):
        (WebCore::WebMetalRenderCommandEncoder::WebMetalRenderCommandEncoder):
        (WebCore::WebMetalRenderCommandEncoder::setRenderPipelineState):
        (WebCore::WebMetalRenderCommandEncoder::setDepthStencilState):
        (WebCore::WebMetalRenderCommandEncoder::setVertexBuffer):
        (WebCore::WebMetalRenderCommandEncoder::setFragmentBuffer):
        (WebCore::WebMetalRenderCommandEncoder::drawPrimitives):
        (WebCore::WebMetalRenderCommandEncoder::endEncoding):
        * html/canvas/WebMetalRenderCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h.
        * html/canvas/WebMetalRenderCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.idl.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.cpp.
        (WebCore::WebMetalRenderPassAttachmentDescriptor::WebMetalRenderPassAttachmentDescriptor):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::loadAction const):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::setLoadAction):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::storeAction const):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::setStoreAction):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::texture const):
        (WebCore::WebMetalRenderPassAttachmentDescriptor::setTexture):
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.h.
        * html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.idl.
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.cpp.
        (WebCore::WebMetalRenderPassColorAttachmentDescriptor::create):
        (WebCore::WebMetalRenderPassColorAttachmentDescriptor::WebMetalRenderPassColorAttachmentDescriptor):
        (WebCore::WebMetalRenderPassColorAttachmentDescriptor::descriptor const):
        (WebCore::WebMetalRenderPassColorAttachmentDescriptor::clearColor const):
        (WebCore::WebMetalRenderPassColorAttachmentDescriptor::setClearColor):
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.h.
        * html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.idl.
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.cpp.
        (WebCore::WebMetalRenderPassDepthAttachmentDescriptor::create):
        (WebCore::WebMetalRenderPassDepthAttachmentDescriptor::WebMetalRenderPassDepthAttachmentDescriptor):
        (WebCore::WebMetalRenderPassDepthAttachmentDescriptor::clearDepth const):
        (WebCore::WebMetalRenderPassDepthAttachmentDescriptor::setClearDepth):
        (WebCore::WebMetalRenderPassDepthAttachmentDescriptor::descriptor const):
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.h.
        * html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.idl.
        * html/canvas/WebMetalRenderPassDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp.
        (WebCore::WebMetalRenderPassDescriptor::create):
        (WebCore::WebMetalRenderPassDescriptor::depthAttachment):
        (WebCore::WebMetalRenderPassDescriptor::colorAttachments):
        * html/canvas/WebMetalRenderPassDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.h.
        * html/canvas/WebMetalRenderPassDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.idl.
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.cpp.
        (WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::create):
        (WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::WebMetalRenderPipelineColorAttachmentDescriptor):
        (WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::pixelFormat const):
        (WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::setPixelFormat):
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.h.
        * html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.idl.
        * html/canvas/WebMetalRenderPipelineDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp.
        (WebCore::WebMetalRenderPipelineDescriptor::create):
        (WebCore::WebMetalRenderPipelineDescriptor::vertexFunction const):
        (WebCore::WebMetalRenderPipelineDescriptor::setVertexFunction):
        (WebCore::WebMetalRenderPipelineDescriptor::fragmentFunction const):
        (WebCore::WebMetalRenderPipelineDescriptor::setFragmentFunction):
        (WebCore::WebMetalRenderPipelineDescriptor::colorAttachments):
        (WebCore::WebMetalRenderPipelineDescriptor::depthAttachmentPixelFormat const):
        (WebCore::WebMetalRenderPipelineDescriptor::setDepthAttachmentPixelFormat):
        (WebCore::WebMetalRenderPipelineDescriptor::reset):
        * html/canvas/WebMetalRenderPipelineDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.h.
        * html/canvas/WebMetalRenderPipelineDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.idl.
        * html/canvas/WebMetalRenderPipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.cpp.
        (WebCore::WebMetalRenderPipelineState::create):
        (WebCore::WebMetalRenderPipelineState::WebMetalRenderPipelineState):
        (WebCore::WebMetalRenderPipelineState::label const):
        (WebCore::WebMetalRenderPipelineState::setLabel):
        * html/canvas/WebMetalRenderPipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.h.
        * html/canvas/WebMetalRenderPipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.idl.
        * html/canvas/WebMetalRenderingContext.cpp: Added.
        (WebCore::WebMetalRenderingContext::create):
        (WebCore::WebMetalRenderingContext::WebMetalRenderingContext):
        (WebCore::WebMetalRenderingContext::canvas const):
        (WebCore::WebMetalRenderingContext::initializeNewContext):
        (WebCore::WebMetalRenderingContext::clampedCanvasSize const):
        (WebCore::WebMetalRenderingContext::hasPendingActivity const):
        (WebCore::WebMetalRenderingContext::stop):
        (WebCore::WebMetalRenderingContext::activeDOMObjectName const):
        (WebCore::WebMetalRenderingContext::canSuspendForDocumentSuspension const):
        (WebCore::WebMetalRenderingContext::platformLayer const):
        (WebCore::WebMetalRenderingContext::markLayerComposited):
        (WebCore::WebMetalRenderingContext::reshape):
        (WebCore::WebMetalRenderingContext::createLibrary):
        (WebCore::WebMetalRenderingContext::createRenderPipelineState):
        (WebCore::WebMetalRenderingContext::createDepthStencilState):
        (WebCore::WebMetalRenderingContext::createComputePipelineState):
        (WebCore::WebMetalRenderingContext::createCommandQueue):
        (WebCore::WebMetalRenderingContext::nextDrawable):
        (WebCore::WebMetalRenderingContext::createBuffer):
        (WebCore::WebMetalRenderingContext::createTexture):
        * html/canvas/WebMetalRenderingContext.h: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.h.
        * html/canvas/WebMetalRenderingContext.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.idl.
        * html/canvas/WebMetalSize.h: Renamed from Source/WebCore/html/canvas/WebGPUSize.h.
        * html/canvas/WebMetalSize.idl: Renamed from Source/WebCore/html/canvas/WebGPUSize.idl.
        * html/canvas/WebMetalTexture.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTexture.cpp.
        (WebCore::WebMetalTexture::create):
        (WebCore::WebMetalTexture::WebMetalTexture):
        * html/canvas/WebMetalTexture.h: Renamed from Source/WebCore/html/canvas/WebGPUTexture.h.
        * html/canvas/WebMetalTexture.idl: Renamed from Source/WebCore/html/canvas/WebGPUTexture.idl.
        * html/canvas/WebMetalTextureDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.cpp.
        (WebCore::WebMetalTextureDescriptor::create):
        (WebCore::WebMetalTextureDescriptor::WebMetalTextureDescriptor):
        (WebCore::WebMetalTextureDescriptor::width const):
        (WebCore::WebMetalTextureDescriptor::setWidth):
        (WebCore::WebMetalTextureDescriptor::height const):
        (WebCore::WebMetalTextureDescriptor::setHeight):
        (WebCore::WebMetalTextureDescriptor::sampleCount const):
        (WebCore::WebMetalTextureDescriptor::setSampleCount):
        (WebCore::WebMetalTextureDescriptor::textureType const):
        (WebCore::WebMetalTextureDescriptor::setTextureType):
        (WebCore::WebMetalTextureDescriptor::storageMode const):
        (WebCore::WebMetalTextureDescriptor::setStorageMode):
        (WebCore::WebMetalTextureDescriptor::usage const):
        (WebCore::WebMetalTextureDescriptor::setUsage):
        * html/canvas/WebMetalTextureDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.h.
        * html/canvas/WebMetalTextureDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.idl.
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildObjectForCanvas):
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::requestContent):
        (WebCore::contextAsScriptValue):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setWebMetalEnabled):
        (WebCore::RuntimeEnabledFeatures::webMetalEnabled const):
        (WebCore::RuntimeEnabledFeatures::setWebGPUEnabled): Deleted.
        (WebCore::RuntimeEnabledFeatures::webGPUEnabled const): Deleted.
        * platform/Logging.h:
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
        (WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
        * platform/graphics/cocoa/WebMetalLayer.h: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.h.
        * platform/graphics/cocoa/WebMetalLayer.mm: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.mm.
        (-[WebMetalLayer initWithGPUDevice:]):
        * platform/graphics/gpu/GPUBuffer.cpp:
        (WebCore::GPUBuffer::~GPUBuffer):
        * platform/graphics/gpu/GPUBuffer.h:
        * platform/graphics/gpu/GPUCommandBuffer.cpp:
        (WebCore::GPUCommandBuffer::~GPUCommandBuffer):
        * platform/graphics/gpu/GPUCommandBuffer.h:
        * platform/graphics/gpu/GPUCommandQueue.cpp:
        (WebCore::GPUCommandQueue::~GPUCommandQueue):
        * platform/graphics/gpu/GPUCommandQueue.h:
        * platform/graphics/gpu/GPUComputeCommandEncoder.cpp:
        (WebCore::GPUComputeCommandEncoder::~GPUComputeCommandEncoder):
        * platform/graphics/gpu/GPUComputeCommandEncoder.h:
        * platform/graphics/gpu/GPUComputePipelineState.cpp:
        (WebCore::GPUComputePipelineState::~GPUComputePipelineState):
        * platform/graphics/gpu/GPUComputePipelineState.h:
        * platform/graphics/gpu/GPUDepthStencilDescriptor.cpp:
        (WebCore::GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor):
        * platform/graphics/gpu/GPUDepthStencilDescriptor.h:
        * platform/graphics/gpu/GPUDepthStencilState.cpp:
        (WebCore::GPUDepthStencilState::~GPUDepthStencilState):
        * platform/graphics/gpu/GPUDepthStencilState.h:
        * platform/graphics/gpu/GPUDevice.cpp:
        (WebCore::GPUDevice::~GPUDevice):
        * platform/graphics/gpu/GPUDevice.h:
        (WebCore::GPUDevice::layer const):
        * platform/graphics/gpu/GPUDrawable.cpp:
        (WebCore::GPUDrawable::~GPUDrawable):
        * platform/graphics/gpu/GPUDrawable.h:
        * platform/graphics/gpu/GPUEnums.h:
        * platform/graphics/gpu/GPUFunction.cpp:
        (WebCore::GPUFunction::~GPUFunction):
        * platform/graphics/gpu/GPUFunction.h:
        * platform/graphics/gpu/GPULibrary.cpp:
        (WebCore::GPULibrary::~GPULibrary):
        * platform/graphics/gpu/GPULibrary.h:
        * platform/graphics/gpu/GPURenderCommandEncoder.cpp:
        (WebCore::GPURenderCommandEncoder::~GPURenderCommandEncoder):
        * platform/graphics/gpu/GPURenderCommandEncoder.h:
        * platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp:
        (WebCore::GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor):
        * platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h:
        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp:
        (WebCore::GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor):
        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h:
        * platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp:
        (WebCore::GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor):
        * platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h:
        * platform/graphics/gpu/GPURenderPassDescriptor.cpp:
        (WebCore::GPURenderPassDescriptor::~GPURenderPassDescriptor):
        * platform/graphics/gpu/GPURenderPassDescriptor.h:
        * platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp:
        (WebCore::GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor):
        * platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h:
        * platform/graphics/gpu/GPURenderPipelineDescriptor.cpp:
        (WebCore::GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor):
        * platform/graphics/gpu/GPURenderPipelineDescriptor.h:
        * platform/graphics/gpu/GPURenderPipelineState.cpp:
        (WebCore::GPURenderPipelineState::~GPURenderPipelineState):
        * platform/graphics/gpu/GPURenderPipelineState.h:
        * platform/graphics/gpu/GPUSize.h:
        * platform/graphics/gpu/GPUTexture.cpp:
        (WebCore::GPUTexture::~GPUTexture):
        * platform/graphics/gpu/GPUTexture.h:
        * platform/graphics/gpu/GPUTextureDescriptor.cpp:
        (WebCore::GPUTextureDescriptor::~GPUTextureDescriptor):
        * platform/graphics/gpu/GPUTextureDescriptor.h:
        * platform/graphics/metal/GPUBufferMetal.mm:
        (WebCore::GPUBuffer::GPUBuffer):
        * platform/graphics/metal/GPUCommandBufferMetal.mm:
        * platform/graphics/metal/GPUCommandQueueMetal.mm:
        * platform/graphics/metal/GPUComputeCommandEncoderMetal.mm:
        * platform/graphics/metal/GPUComputePipelineStateMetal.mm:
        (WebCore::GPUComputePipelineState::GPUComputePipelineState):
        * platform/graphics/metal/GPUDepthStencilDescriptorMetal.mm:
        * platform/graphics/metal/GPUDepthStencilStateMetal.mm:
        (WebCore::GPUDepthStencilState::setLabel const):
        * platform/graphics/metal/GPUDeviceMetal.mm:
        (WebCore::GPUDevice::reshape const):
        * platform/graphics/metal/GPUDrawableMetal.mm:
        (WebCore::GPUDrawable::release):
        * platform/graphics/metal/GPUFunctionMetal.mm:
        * platform/graphics/metal/GPULibraryMetal.mm:
        (WebCore::GPULibrary::GPULibrary):
        * platform/graphics/metal/GPURenderCommandEncoderMetal.mm:
        (WebCore::GPURenderCommandEncoder::GPURenderCommandEncoder):
        * platform/graphics/metal/GPURenderPassAttachmentDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPassColorAttachmentDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPassDepthAttachmentDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPassDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPipelineColorAttachmentDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPipelineDescriptorMetal.mm:
        * platform/graphics/metal/GPURenderPipelineStateMetal.mm:
        (WebCore::GPURenderPipelineState::setLabel const):
        * platform/graphics/metal/GPUTextureDescriptorMetal.mm:
        * platform/graphics/metal/GPUTextureMetal.mm:
        (WebCore::GPUTexture::GPUTexture):
        * testing/InternalSettings.cpp:
        (WebCore::InternalSettings::Backup::Backup):
        (WebCore::InternalSettings::Backup::restoreTo):
        (WebCore::InternalSettings::setWebMetalEnabled):
        (WebCore::InternalSettings::setWebGPUEnabled): Deleted.
        * testing/InternalSettings.h:
        * testing/InternalSettings.idl:

2018-10-08  Dean Jackson  <dino@apple.com>

        CrashTracer: backboardd at Recursion :: QuartzCore: CA::Render::Updater::prepare_sublayer0
        https://bugs.webkit.org/show_bug.cgi?id=190376
        <rdar://problem/44986520>

        Reviewed by Tim Horton.

        Very deep CoreAnimation layer trees can cause problems. Reduce our maximum
        depth from 256 to 128.

        Modified existing test: compositing/layer-creation/deep-tree.html

        * platform/graphics/ca/GraphicsLayerCA.cpp: Cap the depth at 128.

2018-10-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236941.
        https://bugs.webkit.org/show_bug.cgi?id=190374

        Causing API test failures in new test (Requested by jernoble
        on #webkit).

        Reverted changeset:

        "ISOTrackEncryptionBox returns incorrect defaultKeyID"
        https://bugs.webkit.org/show_bug.cgi?id=190368
        https://trac.webkit.org/changeset/236941

2018-10-08  Aditya Keerthi  <akeerthi@apple.com>

        Make <input type=color> a runtime enabled (on-by-default) feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Reviewed by Wenson Hsieh and Tim Horton.

        Enable the build-time flag INPUT_TYPE_COLOR by default and introduce a runtime-enabled feature for input type
        color, also on by default.

        Covered by rebaselining existing layout tests.

        * Configurations/FeatureDefines.xcconfig:
        * html/InputType.cpp:
        (WebCore::createInputTypeFactoryMap):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::inputTypeColorEnabled const):
        (WebCore::RuntimeEnabledFeatures::setInputTypeColorEnabled):

2018-10-08  Jer Noble  <jer.noble@apple.com>

        ISOTrackEncryptionBox returns incorrect defaultKeyID
        https://bugs.webkit.org/show_bug.cgi?id=190368

        Reviewed by Eric Carlson.

        Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox

        ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.

        Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/iso/ISOBox.h:
        * platform/graphics/iso/ISOOriginalFormatBox.h:
        * platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
        * platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
        * platform/graphics/iso/ISOSchemeInformationBox.h:
        * platform/graphics/iso/ISOSchemeTypeBox.h:
        * platform/graphics/iso/ISOTrackEncryptionBox.cpp:
        (WebCore::ISOTrackEncryptionBox::parse):
        * platform/graphics/iso/ISOTrackEncryptionBox.h:

2018-10-08  Antti Koivisto  <antti@apple.com>

        Move SystemFontDatabase to a file of its own
        https://bugs.webkit.org/show_bug.cgi?id=190347

        Reviewed by Chris Dumez.

        Also rename it to SystemFontDatabaseCoreText as it is CoreText specific.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * page/MemoryRelease.cpp:
        (WebCore::releaseNoncriticalMemory):
        * page/cocoa/MemoryReleaseCocoa.mm:

        Release SystemFontDatabaseCoreText directly from platform specific cleanup code.

        (WebCore::platformReleaseMemory):
        * platform/graphics/cocoa/FontDescriptionCocoa.cpp:
        (WebCore::FontDescription::invalidateCaches):
        (WebCore::systemFontCascadeList):
        (WebCore::FontCascadeDescription::effectiveFamilyCount const):
        (WebCore::FontCascadeDescription::effectiveFamilyAt const):
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters): Deleted.
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue const): Deleted.
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator== const): Deleted.
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash const): Deleted.
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::hash): Deleted.
        (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::equal): Deleted.
        (): Deleted.
        (WebCore::SystemFontDatabase::singleton): Deleted.
        (WebCore::SystemFontDatabase::systemFontCascadeList): Deleted.
        (WebCore::SystemFontDatabase::clear): Deleted.
        (WebCore::SystemFontDatabase::SystemFontDatabase): Deleted.
        (WebCore::SystemFontDatabase::applyWeightItalicsAndFallbackBehavior): Deleted.
        (WebCore::SystemFontDatabase::removeCascadeList): Deleted.
        (WebCore::SystemFontDatabase::computeCascadeList): Deleted.
        (WebCore::systemFontParameters): Deleted.
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: Added.
        (WebCore::SystemFontDatabaseCoreText::singleton):
        (WebCore::SystemFontDatabaseCoreText::SystemFontDatabaseCoreText):
        (WebCore::SystemFontDatabaseCoreText::systemFontCascadeList):
        (WebCore::SystemFontDatabaseCoreText::clear):
        (WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
        (WebCore::SystemFontDatabaseCoreText::removeCascadeList):
        (WebCore::SystemFontDatabaseCoreText::computeCascadeList):
        (WebCore::SystemFontDatabaseCoreText::systemFontParameters):
        * platform/graphics/cocoa/SystemFontDatabaseCoreText.h: Added.
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParameters):
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::isHashTableDeletedValue const):
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::operator== const):
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::hash const):
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::hash):
        (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::equal):
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Remove dead code: VideoFullscreenModel::isVisible()
        https://bugs.webkit.org/show_bug.cgi?id=190356

        Reviewed by Jon Lee.

        No new tests because there is no behavior change.

        Remove isVisible() since it is no longer used.

        * platform/cocoa/VideoFullscreenModel.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (WebCore::VideoFullscreenModelVideoElement::isVisible const): Deleted.
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::isVisible const): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Remove dead code: resetMediaState.
        https://bugs.webkit.org/show_bug.cgi?id=190355

        Reviewed by Jon Lee.

        No new tests because no behavior change.

        Remove resetMediaState since it is no longer used.

        * platform/cocoa/PlaybackSessionInterface.h:
        (WebCore::PlaybackSessionInterface::~PlaybackSessionInterface):
        * platform/ios/PlaybackSessionInterfaceAVKit.h:
        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::resetMediaState): Deleted.
        * platform/ios/WebAVPlayerController.h:
        * platform/ios/WebAVPlayerController.mm:
        (-[WebAVPlayerController resetMediaState]): Deleted.
        * platform/mac/PlaybackSessionInterfaceMac.h:
        * platform/mac/PlaybackSessionInterfaceMac.mm:
        (WebCore::PlaybackSessionInterfaceMac::resetMediaState): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Use MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
        https://bugs.webkit.org/show_bug.cgi?id=190357

        Reviewed by Jon Lee.

        No new tests because no behavior change.

        Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.

        * platform/cocoa/VideoFullscreenModel.h:
        (): Deleted.
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (WebCore::VideoFullscreenModelVideoElement::setVideoLayerGravity):
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer setVideoGravity:]):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::setVideoLayerGravity):
        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):

2018-10-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: group media network entries by the node that triggered the request
        https://bugs.webkit.org/show_bug.cgi?id=189606
        <rdar://problem/44438527>

        Reviewed by Brian Burg.

        Test: http/tests/inspector/network/resource-initiatorNode.html

        Add extra arguments to functions that create `ResourceRequest` objects for media resources so
        that `initiatorNodeIdentifier` can be set for WebInspector frontend to use for grouping.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::loadResource):
        * html/HTMLVideoElement.cpp:
        (WebCore::HTMLVideoElement::setDisplayMode):
        * loader/FrameLoader.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::willLoadMediaElementURL):
        Handles initial (e.g. DNT) resource requests.

        * loader/ImageLoader.cpp:
        (ImageLoader::updateFromElement):
        Handles "poster" requests.

        * loader/MediaResourceLoader.cpp:
        (MediaResourceLoader::requestResource):
        Handles byte-range requests.

        * html/track/LoadableTextTrack.cpp:
        (WebCore::LoadableTextTrack::loadTimerFired):
        * loader/TextTrackLoader.h:
        * loader/TextTrackLoader.cpp:
        (WebCore::TextTrackLoader::load):
        * html/HTMLTrackElement.h:
        Handles <track> (e.g. subtitle) requests.

        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::identifierForNode):
        * inspector/InspectorInstrumentation.h:
        (WebCore::InspectorInstrumentation::identifierForNode):
        * inspector/InspectorInstrumentation.cpp:
        (WebCore::InspectorInstrumentation::identifierForNodeImpl):
        Allows callers to get a `DOM.nodeId` for the given `Node`, which is (in this patch) attached
        to the `ResourceRequest` and later used by `InspectorNetworkAgent`.

        * inspector/agents/InspectorNetworkAgent.h:
        * inspector/agents/InspectorNetworkAgent.cpp:
        (WebCore::InspectorNetworkAgent::willSendRequest):
        (WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache):
        (WebCore::InspectorNetworkAgent::buildInitiatorObject):

        * platform/network/ResourceRequestBase.h:
        (WebCore::ResourceRequestBase::initiatorNodeIdentifier const):
        (WebCore::ResourceRequestBase::setInitiatorNodeIdentifier):
        * platform/network/ResourceRequestBase.cpp:
        (WebCore::ResourceRequestBase::setAsIsolatedCopy):
        * platform/network/cf/ResourceRequestCFNet.cpp:
        (WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::shouldContinueAfterNotifyingLoadedFromMemoryCache):

        * inspector/InspectorCanvas.h:
        * inspector/InspectorCanvas.cpp:
        (WebCore::InspectorCanvas::buildObjectForCanvas):
        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::enable):
        (WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
        Don't try to push the canvas' node to the frontend, as this will create a dangling node in
        `InspectorDOMAgent` if the canvas' node is detached from the DOM.

2018-10-08  Andy Estes  <aestes@apple.com>

        [Payment Request] Requests should be aborted after details settle when the user cancels
        https://bugs.webkit.org/show_bug.cgi?id=190333

        Reviewed by Alex Christensen.

        In Payment Request's "update a PaymentRequest's details" algorithm, user agents are expected
        to disable the payment UI when PaymentRequest details are being updated by the merchant.
        This is to prevent the user from accepting a payment before updated details are displayed.

        Further, Payment Request's "user aborts the payment request" algorithm says that the
        algorithm should be terminated prior to throwing an AbortError if the request is currently
        being updated, and also that user agents SHOULD ensure this never occurs. This is based on
        the assumption that payment UIs are disabled during details updates.

        For Apple Pay, while it is true that a payment cannot be accepted by the user while details
        are being updated by the merchant, the payment UI is not completely disabled. In particular,
        the user is allowed to abort the payment while details are being updated. We need to honor
        the user's request to abort without doing so in the middle of a details update.

        This patch defers a user-initiated abort until after details are settled, at which point the
        promise returned by show() is rejected with an AbortError. This behaves as if the details
        update promise were rejected by the merchant.

        Added a test case to http/tests/paymentrequest/payment-request-show-method.https.html.

        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::settleDetailsPromise):
        (WebCore::PaymentRequest::whenDetailsSettled):
        (WebCore::PaymentRequest::cancel):
        * Modules/paymentrequest/PaymentRequest.h:

2018-10-08  Chris Dumez  <cdumez@apple.com>

        Have DOMWindowProperty get is frame from its associated DOMWindow
        https://bugs.webkit.org/show_bug.cgi?id=190341

        Reviewed by Alex Christensen.

        Have DOMWindowProperty get is frame from its associated DOMWindow, instead of having its own
        m_frame that can potentially get out-of-sync.

        * Modules/cache/DOMWindowCaches.cpp:
        (WebCore::DOMWindowCaches::DOMWindowCaches):
        * Modules/geolocation/NavigatorGeolocation.cpp:
        (WebCore::NavigatorGeolocation::NavigatorGeolocation):
        (WebCore::NavigatorGeolocation::from):
        * Modules/geolocation/NavigatorGeolocation.h:
        * Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
        (WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
        * Modules/mediastream/NavigatorMediaDevices.cpp:
        (WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
        (WebCore::NavigatorMediaDevices::from):
        * Modules/mediastream/NavigatorMediaDevices.h:
        * Modules/quota/DOMWindowQuota.cpp:
        (WebCore::DOMWindowQuota::DOMWindowQuota):
        * Modules/quota/NavigatorStorageQuota.cpp:
        (WebCore::NavigatorStorageQuota::NavigatorStorageQuota):
        * Modules/quota/NavigatorStorageQuota.h:
        * Modules/speech/DOMWindowSpeechSynthesis.cpp:
        (WebCore::DOMWindowSpeechSynthesis::DOMWindowSpeechSynthesis):
        * css/StyleMedia.cpp:
        (WebCore::StyleMedia::StyleMedia):
        (WebCore::StyleMedia::type const):
        (WebCore::StyleMedia::matchMedium const):
        * css/StyleMedia.h:
        * loader/appcache/DOMApplicationCache.cpp:
        (WebCore::DOMApplicationCache::DOMApplicationCache):
        (WebCore::DOMApplicationCache::applicationCacheHost const):
        (WebCore::DOMApplicationCache::scriptExecutionContext const):
        * loader/appcache/DOMApplicationCache.h:
        * page/BarProp.cpp:
        (WebCore::BarProp::BarProp):
        (WebCore::BarProp::visible const):
        * page/BarProp.h:
        (WebCore::BarProp::create):
        * page/DOMSelection.cpp:
        (WebCore::DOMSelection::DOMSelection):
        (WebCore::DOMSelection::visibleSelection const):
        (WebCore::DOMSelection::anchorNode const):
        (WebCore::DOMSelection::anchorOffset const):
        (WebCore::DOMSelection::focusNode const):
        (WebCore::DOMSelection::focusOffset const):
        (WebCore::DOMSelection::baseNode const):
        (WebCore::DOMSelection::baseOffset const):
        (WebCore::DOMSelection::extentNode const):
        (WebCore::DOMSelection::extentOffset const):
        (WebCore::DOMSelection::isCollapsed const):
        (WebCore::DOMSelection::type const):
        (WebCore::DOMSelection::rangeCount const):
        (WebCore::DOMSelection::collapse):
        (WebCore::DOMSelection::collapseToEnd):
        (WebCore::DOMSelection::collapseToStart):
        (WebCore::DOMSelection::empty):
        (WebCore::DOMSelection::setBaseAndExtent):
        (WebCore::DOMSelection::setPosition):
        (WebCore::DOMSelection::modify):
        (WebCore::DOMSelection::extend):
        (WebCore::DOMSelection::getRangeAt):
        (WebCore::DOMSelection::removeAllRanges):
        (WebCore::DOMSelection::addRange):
        (WebCore::DOMSelection::deleteFromDocument):
        (WebCore::DOMSelection::containsNode const):
        (WebCore::DOMSelection::toString):
        (WebCore::DOMSelection::shadowAdjustedNode const):
        (WebCore::DOMSelection::shadowAdjustedOffset const):
        (WebCore::DOMSelection::isValidForPosition const):
        * page/DOMSelection.h:
        (WebCore::DOMSelection::create):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::screen):
        (WebCore::DOMWindow::history):
        (WebCore::DOMWindow::locationbar):
        (WebCore::DOMWindow::menubar):
        (WebCore::DOMWindow::personalbar):
        (WebCore::DOMWindow::scrollbars):
        (WebCore::DOMWindow::statusbar):
        (WebCore::DOMWindow::toolbar):
        (WebCore::DOMWindow::applicationCache):
        (WebCore::DOMWindow::navigator):
        (WebCore::DOMWindow::location):
        (WebCore::DOMWindow::visualViewport):
        (WebCore::DOMWindow::webkitNamespace):
        (WebCore::DOMWindow::getSelection):
        (WebCore::DOMWindow::styleMedia):
        * page/DOMWindow.h:
        * page/DOMWindowExtension.cpp:
        (WebCore::DOMWindowExtension::DOMWindowExtension):
        * page/DOMWindowExtension.h:
        (WebCore::DOMWindowExtension::create):
        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::DOMWindowProperty):
        (WebCore::DOMWindowProperty::~DOMWindowProperty):
        (WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
        (WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension):
        (WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
        (WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
        (WebCore::DOMWindowProperty::willDetachGlobalObjectFromFrame):
        (WebCore::DOMWindowProperty::frame const):
        * page/DOMWindowProperty.h:
        (WebCore::DOMWindowProperty::window const):
        * page/History.cpp:
        (WebCore::History::History):
        (WebCore::History::length const):
        (WebCore::History::scrollRestoration const):
        (WebCore::History::setScrollRestoration):
        (WebCore::History::stateInternal const):
        (WebCore::History::go):
        (WebCore::History::urlForState):
        (WebCore::History::stateObjectAdded):
        * page/History.h:
        * page/Location.cpp:
        (WebCore::Location::Location):
        (WebCore::Location::url const):
        (WebCore::Location::href const):
        (WebCore::Location::protocol const):
        (WebCore::Location::host const):
        (WebCore::Location::hostname const):
        (WebCore::Location::port const):
        (WebCore::Location::pathname const):
        (WebCore::Location::search const):
        (WebCore::Location::origin const):
        (WebCore::Location::ancestorOrigins const):
        (WebCore::Location::hash const):
        (WebCore::Location::setHref):
        (WebCore::Location::setProtocol):
        (WebCore::Location::setHost):
        (WebCore::Location::setHostname):
        (WebCore::Location::setPort):
        (WebCore::Location::setPathname):
        (WebCore::Location::setSearch):
        (WebCore::Location::setHash):
        (WebCore::Location::assign):
        (WebCore::Location::replace):
        (WebCore::Location::reload):
        (WebCore::Location::setLocation):
        * page/Location.h:
        (WebCore::Location::create):
        * page/Navigator.cpp:
        (WebCore::Navigator::Navigator):
        (WebCore::Navigator::appVersion const):
        (WebCore::Navigator::userAgent const):
        (WebCore::Navigator::share):
        (WebCore::Navigator::plugins):
        (WebCore::Navigator::mimeTypes):
        (WebCore::Navigator::cookieEnabled const):
        (WebCore::Navigator::javaEnabled const):
        (WebCore::Navigator::standalone const):
        * page/Navigator.h:
        * page/Performance.cpp:
        (WebCore::Performance::navigation):
        (WebCore::Performance::timing):
        * page/PerformanceNavigation.cpp:
        (WebCore::PerformanceNavigation::PerformanceNavigation):
        (WebCore::PerformanceNavigation::type const):
        (WebCore::PerformanceNavigation::redirectCount const):
        * page/PerformanceNavigation.h:
        (WebCore::PerformanceNavigation::create):
        * page/PerformanceTiming.cpp:
        (WebCore::PerformanceTiming::PerformanceTiming):
        (WebCore::PerformanceTiming::documentLoader const):
        (WebCore::PerformanceTiming::documentTiming const):
        * page/PerformanceTiming.h:
        (WebCore::PerformanceTiming::create):
        * page/Screen.cpp:
        (WebCore::Screen::Screen):
        (WebCore::Screen::height const):
        (WebCore::Screen::width const):
        (WebCore::Screen::colorDepth const):
        (WebCore::Screen::pixelDepth const):
        (WebCore::Screen::availLeft const):
        (WebCore::Screen::availTop const):
        (WebCore::Screen::availHeight const):
        (WebCore::Screen::availWidth const):
        * page/Screen.h:
        * page/VisualViewport.cpp:
        (WebCore::VisualViewport::VisualViewport):
        (WebCore::VisualViewport::scriptExecutionContext const):
        (WebCore::VisualViewport::addEventListener):
        (WebCore::VisualViewport::updateFrameLayout const):
        (WebCore::VisualViewport::offsetLeft const):
        (WebCore::VisualViewport::offsetTop const):
        (WebCore::VisualViewport::pageLeft const):
        (WebCore::VisualViewport::pageTop const):
        (WebCore::VisualViewport::width const):
        (WebCore::VisualViewport::height const):
        (WebCore::VisualViewport::scale const):
        (WebCore::VisualViewport::update):
        (WebCore::VisualViewport::enqueueResizeEvent):
        (WebCore::VisualViewport::enqueueScrollEvent):
        * page/VisualViewport.h:
        * page/WebKitNamespace.cpp:
        (WebCore::WebKitNamespace::WebKitNamespace):
        * page/WebKitNamespace.h:
        (WebCore::WebKitNamespace::create):
        * plugins/DOMMimeTypeArray.cpp:
        (WebCore::DOMMimeTypeArray::DOMMimeTypeArray):
        (WebCore::DOMMimeTypeArray::item):
        (WebCore::DOMMimeTypeArray::namedItem):
        (WebCore::DOMMimeTypeArray::getPluginData const):
        * plugins/DOMMimeTypeArray.h:
        (WebCore::DOMMimeTypeArray::create):
        * plugins/DOMPluginArray.cpp:
        (WebCore::DOMPluginArray::DOMPluginArray):
        (WebCore::DOMPluginArray::item):
        (WebCore::DOMPluginArray::namedItem):
        (WebCore::DOMPluginArray::refresh):
        (WebCore::DOMPluginArray::pluginData const):
        * plugins/DOMPluginArray.h:
        (WebCore::DOMPluginArray::create):
        * storage/Storage.cpp:
        (WebCore::Storage::create):
        (WebCore::Storage::Storage):
        (WebCore::Storage::setItem):
        (WebCore::Storage::removeItem):
        (WebCore::Storage::clear):
        * storage/Storage.h:

2018-10-08  Antti Koivisto  <antti@apple.com>

        Move FontCascadeDescription to a file of its own
        https://bugs.webkit.org/show_bug.cgi?id=190348

        Reviewed by Chris Dumez.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/FontCascade.h:
        * platform/graphics/FontCascadeDescription.cpp: Copied from Source/WebCore/platform/graphics/FontDescription.cpp.
        (WebCore::FontDescription::FontDescription): Deleted.
        (WebCore::m_shouldAllowUserInstalledFonts): Deleted.
        (WebCore::FontDescription::setLocale): Deleted.
        (WebCore::FontDescription::invalidateCaches): Deleted.
        * platform/graphics/FontCascadeDescription.h: Copied from Source/WebCore/platform/graphics/FontDescription.h.
        (WebCore::FontDescription::operator!= const): Deleted.
        (WebCore::FontDescription::computedSize const): Deleted.
        (WebCore::FontDescription::computedPixelSize const): Deleted.
        (WebCore::FontDescription::italic const): Deleted.
        (WebCore::FontDescription::stretch const): Deleted.
        (WebCore::FontDescription::weight const): Deleted.
        (WebCore::FontDescription::fontSelectionRequest const): Deleted.
        (WebCore::FontDescription::renderingMode const): Deleted.
        (WebCore::FontDescription::textRenderingMode const): Deleted.
        (WebCore::FontDescription::script const): Deleted.
        (WebCore::FontDescription::locale const): Deleted.
        (WebCore::FontDescription::orientation const): Deleted.
        (WebCore::FontDescription::nonCJKGlyphOrientation const): Deleted.
        (WebCore::FontDescription::widthVariant const): Deleted.
        (WebCore::FontDescription::featureSettings const): Deleted.
        (WebCore::FontDescription::variationSettings const): Deleted.
        (WebCore::FontDescription::fontSynthesis const): Deleted.
        (WebCore::FontDescription::variantCommonLigatures const): Deleted.
        (WebCore::FontDescription::variantDiscretionaryLigatures const): Deleted.
        (WebCore::FontDescription::variantHistoricalLigatures const): Deleted.
        (WebCore::FontDescription::variantContextualAlternates const): Deleted.
        (WebCore::FontDescription::variantPosition const): Deleted.
        (WebCore::FontDescription::variantCaps const): Deleted.
        (WebCore::FontDescription::variantNumericFigure const): Deleted.
        (WebCore::FontDescription::variantNumericSpacing const): Deleted.
        (WebCore::FontDescription::variantNumericFraction const): Deleted.
        (WebCore::FontDescription::variantNumericOrdinal const): Deleted.
        (WebCore::FontDescription::variantNumericSlashedZero const): Deleted.
        (WebCore::FontDescription::variantAlternates const): Deleted.
        (WebCore::FontDescription::variantEastAsianVariant const): Deleted.
        (WebCore::FontDescription::variantEastAsianWidth const): Deleted.
        (WebCore::FontDescription::variantEastAsianRuby const): Deleted.
        (WebCore::FontDescription::variantSettings const): Deleted.
        (WebCore::FontDescription::opticalSizing const): Deleted.
        (WebCore::FontDescription::fontStyleAxis const): Deleted.
        (WebCore::FontDescription::shouldAllowUserInstalledFonts const): Deleted.
        (WebCore::FontDescription::setComputedSize): Deleted.
        (WebCore::FontDescription::setItalic): Deleted.
        (WebCore::FontDescription::setStretch): Deleted.
        (WebCore::FontDescription::setIsItalic): Deleted.
        (WebCore::FontDescription::setWeight): Deleted.
        (WebCore::FontDescription::setRenderingMode): Deleted.
        (WebCore::FontDescription::setTextRenderingMode): Deleted.
        (WebCore::FontDescription::setOrientation): Deleted.
        (WebCore::FontDescription::setNonCJKGlyphOrientation): Deleted.
        (WebCore::FontDescription::setWidthVariant): Deleted.
        (WebCore::FontDescription::setFeatureSettings): Deleted.
        (WebCore::FontDescription::setVariationSettings): Deleted.
        (WebCore::FontDescription::setFontSynthesis): Deleted.
        (WebCore::FontDescription::setVariantCommonLigatures): Deleted.
        (WebCore::FontDescription::setVariantDiscretionaryLigatures): Deleted.
        (WebCore::FontDescription::setVariantHistoricalLigatures): Deleted.
        (WebCore::FontDescription::setVariantContextualAlternates): Deleted.
        (WebCore::FontDescription::setVariantPosition): Deleted.
        (WebCore::FontDescription::setVariantCaps): Deleted.
        (WebCore::FontDescription::setVariantNumericFigure): Deleted.
        (WebCore::FontDescription::setVariantNumericSpacing): Deleted.
        (WebCore::FontDescription::setVariantNumericFraction): Deleted.
        (WebCore::FontDescription::setVariantNumericOrdinal): Deleted.
        (WebCore::FontDescription::setVariantNumericSlashedZero): Deleted.
        (WebCore::FontDescription::setVariantAlternates): Deleted.
        (WebCore::FontDescription::setVariantEastAsianVariant): Deleted.
        (WebCore::FontDescription::setVariantEastAsianWidth): Deleted.
        (WebCore::FontDescription::setVariantEastAsianRuby): Deleted.
        (WebCore::FontDescription::setOpticalSizing): Deleted.
        (WebCore::FontDescription::setFontStyleAxis): Deleted.
        (WebCore::FontDescription::setShouldAllowUserInstalledFonts): Deleted.
        (WebCore::FontDescription::operator== const): Deleted.
        * platform/graphics/FontDescription.cpp:
        (WebCore::FontDescription::invalidateCaches):
        (WebCore::FontCascadeDescription::FontCascadeDescription): Deleted.
        (WebCore::FontCascadeDescription::effectiveFamilyCount const): Deleted.
        (WebCore::FontCascadeDescription::effectiveFamilyAt const): Deleted.
        (WebCore::FontCascadeDescription::lighterWeight): Deleted.
        (WebCore::FontCascadeDescription::bolderWeight): Deleted.
        (WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing const): Deleted.
        (WebCore::FontCascadeDescription::familyNamesAreEqual): Deleted.
        (WebCore::FontCascadeDescription::familyNameHash): Deleted.
        (WebCore::FontCascadeDescription::foldedFamilyName): Deleted.
        * platform/graphics/FontDescription.h:
        (WebCore::FontCascadeDescription::operator!= const): Deleted.
        (WebCore::FontCascadeDescription::familyCount const): Deleted.
        (WebCore::FontCascadeDescription::firstFamily const): Deleted.
        (WebCore::FontCascadeDescription::familyAt const): Deleted.
        (WebCore::FontCascadeDescription::families const): Deleted.
        (WebCore::FontCascadeDescription::specifiedSize const): Deleted.
        (WebCore::FontCascadeDescription::isAbsoluteSize const): Deleted.
        (WebCore::FontCascadeDescription::lighterWeight const): Deleted.
        (WebCore::FontCascadeDescription::bolderWeight const): Deleted.
        (WebCore::FontCascadeDescription::useFixedDefaultSize const): Deleted.
        (WebCore::FontCascadeDescription::kerning const): Deleted.
        (WebCore::FontCascadeDescription::keywordSize const): Deleted.
        (WebCore::FontCascadeDescription::keywordSizeAsIdentifier const): Deleted.
        (WebCore::FontCascadeDescription::fontSmoothing const): Deleted.
        (WebCore::FontCascadeDescription::isSpecifiedFont const): Deleted.
        (WebCore::FontCascadeDescription::setOneFamily): Deleted.
        (WebCore::FontCascadeDescription::setFamilies): Deleted.
        (WebCore::FontCascadeDescription::setSpecifiedSize): Deleted.
        (WebCore::FontCascadeDescription::setIsAbsoluteSize): Deleted.
        (WebCore::FontCascadeDescription::setKerning): Deleted.
        (WebCore::FontCascadeDescription::setKeywordSize): Deleted.
        (WebCore::FontCascadeDescription::setKeywordSizeFromIdentifier): Deleted.
        (WebCore::FontCascadeDescription::setFontSmoothing): Deleted.
        (WebCore::FontCascadeDescription::setIsSpecifiedFont): Deleted.
        (WebCore::FontCascadeDescription::equalForTextAutoSizing const): Deleted.
        (WebCore::FontCascadeDescription::initialItalic): Deleted.
        (WebCore::FontCascadeDescription::initialFontStyleAxis): Deleted.
        (WebCore::FontCascadeDescription::initialWeight): Deleted.
        (WebCore::FontCascadeDescription::initialStretch): Deleted.
        (WebCore::FontCascadeDescription::initialSmallCaps): Deleted.
        (WebCore::FontCascadeDescription::initialKerning): Deleted.
        (WebCore::FontCascadeDescription::initialFontSmoothing): Deleted.
        (WebCore::FontCascadeDescription::initialTextRenderingMode): Deleted.
        (WebCore::FontCascadeDescription::initialFontSynthesis): Deleted.
        (WebCore::FontCascadeDescription::initialVariantPosition): Deleted.
        (WebCore::FontCascadeDescription::initialVariantCaps): Deleted.
        (WebCore::FontCascadeDescription::initialVariantAlternates): Deleted.
        (WebCore::FontCascadeDescription::initialOpticalSizing): Deleted.
        (WebCore::FontCascadeDescription::initialLocale): Deleted.
        (WebCore::FontCascadeDescription::operator== const): Deleted.
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        * rendering/style/RenderStyle.h:

2018-10-08  Yacine Bandou  <yacine.bandou_ext@softathome.com>

        [EME][GStreamer] Add support for WebM encrypted caps "application/x-webm-enc"
        https://bugs.webkit.org/show_bug.cgi?id=189239

        Reviewed by Xabier Rodriguez-Calvar.

        Add the support of GStreamer caps "application/x-webm-enc" in GStreamerCommon.

        The DRM system id field in the encrypted event is set to GST_PROTECTION_UNSPECIFIED_SYSTEM_ID
        in case of WebM, for details, see https://bugzilla.gnome.org/attachment.cgi?id=365211.

        Tests: media/encrypted-media/clearKey/clearKey-encrypted-webm-eventmse.html
               media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html

        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::capsMediaType):
        (WebCore::areEncryptedCaps):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
        * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptTransformCaps):

2018-10-07  Dan Bernstein  <mitz@apple.com>

        Fixed building with the latest macOS SDK

        * platform/graphics/cocoa/IOSurface.mm:
        (WebCore::IOSurface::ensurePlatformContext): Suppressed deprecation warnings around use of
          CGIOSurfaceContextSetDisplayMask.

2018-10-06  Justin Michaud  <justin_michaud@apple.com>

        Properly determine if css custom property values are computationally independent
        https://bugs.webkit.org/show_bug.cgi?id=190303

        Reviewed by Antti Koivisto.

        Add getDirectComputationalDependencies method to determine if a value is computationally
        dependent. Use this method in CSS.registerProperty to replace existing substring checks.
        No new tests are needed because the existing tests cover this behaviour.

        * css/CSSCalculationValue.cpp:
        (WebCore::determineCategory):
        * css/CSSCalculationValue.h:
        (WebCore::CSSCalcValue::getDirectComputationalDependencies const):
        (WebCore::CSSCalcValue::getDirectRootComputationalDependencies const):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::customCSSText const):
        (WebCore::CSSCustomPropertyValue::tokens const):
        (WebCore::CSSCustomPropertyValue::setResolvedTypedValue):
        * css/CSSCustomPropertyValue.h:
        * css/CSSPrimitiveValue.cpp:
        (WebCore::CSSPrimitiveValue::getDirectComputationalDependencies const):
        (WebCore::CSSPrimitiveValue::getDirectRootComputationalDependencies const):
        * css/CSSPrimitiveValue.h:
        * css/CSSValue.cpp:
        (WebCore::CSSValue::getDirectComputationalDependencies const):
        (WebCore::CSSValue::getDirectRootComputationalDependencies const):
        * css/CSSValue.h:
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::CSSVariableData):
        (WebCore::CSSVariableData::resolveVariableReference const):
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):

2018-10-05  Chris Dumez  <cdumez@apple.com>

        Regression(r236862): Crash under DOMWindowExtension::willDetachGlobalObjectFromFrame()
        https://bugs.webkit.org/show_bug.cgi?id=190320
        <rdar://problem/45044814>

        Reviewed by Geoffrey Garen.

        r236862 caused DOMWindowProperty::willDetachGlobalObjectFromFrame() to get called several
        times. There was no effect for most DOMWindowProperty objects. However, it would cause
        crashes for DOMWindowExtension objects, which subclass DOMWindowProperty and override
        DOMWindowProperty::willDetachGlobalObjectFromFrame() because they dereference the frame
        without null checking it.

        To address the issue, we now make sure DOMWindowProperty::willDetachGlobalObjectFromFrame()
        is not called several times.

        * dom/Document.cpp:
        (WebCore::Document::detachFromFrame):
        Stop calling DOMWindow::willDetachDocumentFromFrame() here as most call sites already
        take care of calling DOMWindow::willDetachDocumentFromFrame() beforehand (e.g.
        Document::prepareForDestruction()).
        Also, return early if the Document is already detached from its frame.

        (WebCore::Document::frameWasDisconnectedFromOwner):
        Add new utility function called when a Frame is disconnected from its owner which
        calls both Document::detachFromFrame() and DOMWindow::willDetachDocumentFromFrame().

        * dom/Document.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        Return early if the Window is already detached from its frame.

        * page/Frame.cpp:
        (WebCore::Frame::disconnectOwnerElement):

2018-10-05  Jer Noble  <jer.noble@apple.com>

        Further unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):

2018-10-05  Jer Noble  <jer.noble@apple.com>

       Unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):

2018-10-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        No new tests, covered by existing tests.

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        (WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update order of parameters passed
        to base class.

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start): ASSERT if document.deviceIDHashSalt is not the same
        as passed salt.

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::getSettings const): Don't need to hash ID.
        (WebCore::MediaStreamTrack::getCapabilities const): Ditto.
        * Modules/mediastream/MediaStreamTrack.h:
        * Modules/mediastream/MediaStreamTrack.idl:

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::allow): Pass hash salt to createMediaStream.

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource): Update order of parameters passed
        to base class.

        * Modules/webaudio/MediaStreamAudioSource.cpp:
        (WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.
        * platform/mediastream/MediaConstraints.h:

        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
        (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Ditto.

        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::RealtimeMediaSource): Calculate hashed ID.
        (WebCore::RealtimeMediaSource::selectSettings): Use m_hashedID.
        (WebCore::RealtimeMediaSource::hashedId const): New.
        (WebCore::RealtimeMediaSource::deviceIDHashSalt const): New.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::createMediaStream): Take hash salt, pass it when creating
        a source.
        (WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
        (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
        * platform/mediastream/RealtimeMediaSourceCenter.h:

        * platform/mediastream/RealtimeMediaSourceFactory.h:
        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::RealtimeVideoSource): Update parameters.
        * platform/mediastream/RealtimeVideoSource.h:

        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
        (WebCore::GStreamerAudioCaptureSource::create): Ditto.
        (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): Ditto.
        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:

        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoCaptureSource::create): Ditto.
        (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): Ditto.
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:

        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
        (WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource): Ditto.
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource): Ditto.
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:

        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
        (WebCore::MockRealtimeVideoSource::create): Ditto.
        (WebCore::MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource): Ditto.
        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::create): Ditto.
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.
        (WebCore::AVVideoCaptureSource::settings): Use hashedId to set device ID.
        (WebCore::AVVideoCaptureSource::capabilities): Ditto.

        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::create): Update parameters.
        (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
        (WebCore::CoreAudioCaptureSource::capabilities): Use hashedId to set device ID.
        (WebCore::CoreAudioCaptureSource::settings): Ditto.
        * platform/mediastream/mac/CoreAudioCaptureSource.h:

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Update parameters.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

        * platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
        * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac): Ditto.

        * platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSource::create): Ditto.
        (WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.

        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::create): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update logging.
        (WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Ditto.

        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
        (WebCore::WindowDisplayCaptureSourceMac::create): Update parameters.

        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
        (WebCore::MockRealtimeAudioSource::settings): Use hashedId to set device ID.
        (WebCore::MockRealtimeAudioSource::capabilities): Ditto.
        * platform/mock/MockRealtimeAudioSource.h:

        * platform/mock/MockRealtimeMediaSourceCenter.cpp:

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::create): Update parameters.
        (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
        (WebCore::MockRealtimeVideoSource::capabilities): Use hashedId to set device ID.
        (WebCore::MockRealtimeVideoSource::settings): Ditto.
        * platform/mock/MockRealtimeVideoSource.h:

2018-10-03  Jer Noble  <jer.noble@apple.com>

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Test: TestWebKitAPI.VideoQualityDisplayCompositing

        Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
        constructor (rather than individual fields). Add a new setting to control visibility
        of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
        for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.

        * Modules/mediasource/VideoPlaybackQuality.cpp:
        (WebCore::VideoPlaybackQuality::create):
        (WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
        * Modules/mediasource/VideoPlaybackQuality.h:
        (WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
        * Modules/mediasource/VideoPlaybackQuality.idl:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::getVideoPlaybackQuality):
        * html/HTMLMediaElement.h:
        * html/HTMLMediaElement.idl:
        * page/Settings.yaml:
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
        * platform/mock/mediasource/MockMediaSourcePrivate.cpp:
        (WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):

2018-10-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236866.

        Breaks internal builds.

        Reverted changeset:

        "Add support for reporting "display composited video frames"
        through the VideoPlaybackQuality object."
        https://bugs.webkit.org/show_bug.cgi?id=190266
        https://trac.webkit.org/changeset/236866

2018-10-05  Antoine Quint  <graouts@apple.com>

        [Web Animations] REGRESSION (r236809): crash under AnimationTimeline::updateCSSAnimationsForElement()
        https://bugs.webkit.org/show_bug.cgi?id=190307
        <rdar://problem/45009901>

        Reviewed by Dean Jackson.

        We could crash with an invalid access to cssAnimationsByName since cancelOrRemoveDeclarativeAnimation() already
        does the job of clearing the m_elementToCSSAnimationByName entry for this particular element if there are no
        animations targeting it anymore. This started happening in r236809 when we switched from a simple call to to cancel()
        to a call to cancelOrRemoveDeclarativeAnimation(). We can safely remove the removal here since cancelOrRemoveDeclarativeAnimation()
        will already have performed this task safely if needed.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::updateCSSAnimationsForElement):

2018-10-04  Jer Noble  <jer.noble@apple.com>

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Test: TestWebKitAPI.VideoQualityDisplayCompositing

        Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
        constructor (rather than individual fields). Add a new setting to control visibility
        of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
        for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.

        * Modules/mediasource/VideoPlaybackQuality.cpp:
        (WebCore::VideoPlaybackQuality::create):
        (WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
        * Modules/mediasource/VideoPlaybackQuality.h:
        (WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
        * Modules/mediasource/VideoPlaybackQuality.idl:
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::getVideoPlaybackQuality):
        * html/HTMLMediaElement.h:
        * html/HTMLMediaElement.idl:
        * page/Settings.yaml:
        * platform/graphics/MediaPlayer.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
        * platform/mock/mediasource/MockMediaSourcePrivate.cpp:
        (WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):

2018-10-04  Chris Dumez  <cdumez@apple.com>

        A Document / Window should lose its browsing context as soon as its iframe is removed from the document
        https://bugs.webkit.org/show_bug.cgi?id=190282

        Reviewed by Ryosuke Niwa.

        A Document / Window should lose its browsing context (aka Frame) as soon as its iframe is removed from
        the document. In WebKit, a Document / Window's Frame was only getting nulled out when the frame gets
        destroyed, which happens later usually after a GC happens.

        Specification:
        - https://html.spec.whatwg.org/#the-iframe-element
        """
        When an iframe element is removed from a document, the user agent must discard the element's nested browsing
        context, if it is not null, and then set the element's nested browsing context to null.
        """

        This was not consistent with the specification or other browsers (tested Chrome and Firefox) so this
        patch is aligning our behavior.

        In a follow-up, I am planning to look into making the Window not be a FrameDestructionObserver, and instead
        get its frame from the Document. This should make the code simpler.

        No new tests, rebaselined existing tests.

        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::getUserMedia const):
        * Modules/mediastream/MediaDevices.h:
        Update getUserMedia() to reject a the Promise with an InvalidStateError when calling after the
        document has been detached, instead of throwing an InvalidStateError. This behavior is as per
        specification:
        - https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia (Step 4)
        I needed to make this change to keep one of our layout tests passing.

        * dom/Document.cpp:
        (WebCore::Document::attachToCachedFrame):
        (WebCore::Document::detachFromFrame):
        * dom/Document.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::didSecureTransitionTo):
        (WebCore::DOMWindow::willDetachDocumentFromFrame):
        (WebCore::DOMWindow::setStatus):
        (WebCore::DOMWindow::detachFromFrame):
        (WebCore::DOMWindow::attachToFrame):
        * page/DOMWindow.h:
        * page/DOMWindowProperty.cpp:
        (WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
        (WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
        (WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
        * page/Frame.cpp:
        (WebCore::Frame::disconnectOwnerElement):

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::drawText):
        Calling drawText() with a null String hits an assertion in debug. This was triggered by one of
        our layout tests so I made sure we only call drawText when the String is not null.

2018-10-04  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        No new tests because no behavior change.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
        (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
        (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::requestUpdateInlineRect):
        (VideoFullscreenControllerContext::requestVideoContentLayer):
        (VideoFullscreenControllerContext::returnVideoContentLayer):
        (VideoFullscreenControllerContext::didSetupFullscreen):
        (VideoFullscreenControllerContext::didExitFullscreen):

2018-10-04  Justin Michaud  <justin_michaud@apple.com>

        Bindings generator should support static attributes that are interfaces with CallWith
        https://bugs.webkit.org/show_bug.cgi?id=190292

        Reviewed by Chris Dumez.

        Add support for static attributes that support callWith to the bindings generator. This
        is needed for CSS.paintWorklet.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateAttributeGetterBodyDefinition):
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::jsTestObjConstructorTestStaticReadonlyObjGetter):
        (WebCore::jsTestObjConstructorTestStaticReadonlyObj):
        * bindings/scripts/test/TestObj.idl:

2018-10-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236730.

        This caused a consistent crash in test http/tests/media/media-stream/get-display-media-prompt.html.

        Reverted changeset:

        "[MediaStream] RealtimeMediaSource should be able to vend
        hashed IDs"
        https://bugs.webkit.org/show_bug.cgi?id=190142
        https://trac.webkit.org/changeset/236730

2018-10-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Fix some font attribute conversion bugs in preparation for "Font > Styles…" support in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=190289
        <rdar://problem/45020806>

        Reviewed by Ryosuke Niwa.

        Makes some small adjustments to fix two bugs in font attribute conversion logic. See below for more detail.

        Tests:  FontManagerTests.AddFontShadowUsingFontOptions
                FontManagerTests.AddAndRemoveColorsUsingFontOptions

        * editing/FontAttributeChanges.cpp:
        (WebCore::cssValueListForShadow):
        * editing/cocoa/FontAttributesCocoa.mm:

        Currently, we bail from adding a font shadow if the shadow's offset is empty. However, valid shadow offsets may
        have negative dimensions, so a check for `isZero()` should be used instead.

        (WebCore::FontAttributes::createDictionary const):
        * platform/mac/WebCoreNSFontManagerExtras.mm:

        Fall back to a transparent background color; this allows senders to remove the current background color by just
        removing NSBackgroundColorAttributeName from the attribute dictionary, rather than explicitly setting it to the
        transparent color (this scenario is exercised when using "Font > Styles…" to specify a font style without a
        background color).

        (WebCore::computedFontAttributeChanges):

2018-10-03  Ryosuke Niwa  <rniwa@webkit.org>

        MutationRecord doesn't keep JS wrappers of target, addedNodes, and removedNodes alive
        https://bugs.webkit.org/show_bug.cgi?id=190277

        Reviewed by Antti Koivisto.

        The bug was caused by JSMutationRecord not visiting any of the nodes referenced by mutation records.

        Fixed the bug by adding JSMutationRecord::visitAdditionalChildren, which adds the root nodes of
        the root nodes of the target, addedNodes, and removedNodes in each mutation record.

        Test: fast/dom/MutationObserver/mutation-record-keeps-js-wrappers-of-nodes-alive.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSMutationRecordCustom.cpp: Added.
        (WebCore::JSMutationRecord::visitAdditionalChildren): Added.
        * bindings/js/JSPerformanceObserverCustom.cpp: This file got dumped out of a unified build file
        where using namespace JSC was defined. Use the fully qualified names to refer to JSC types.
        (WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):
        * dom/MutationRecord.cpp:
        (WebCore::ChildListRecord::visitNodesConcurrently): Added.
        (WebCore::RecordWithEmptyNodeLists::visitNodesConcurrently): Added.
        (WebCore::MutationRecordWithNullOldValue::visitNodesConcurrently): Added.
        * dom/MutationRecord.h:
        * dom/MutationRecord.idl:

2018-10-04  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Move time out control from WebProcess to UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=189642
        <rdar://problem/44476765>

        Reviewed by Chris Dumez.

        Since now the control unit of WebAuthN has been moved to UI Process, i.e. AuthenticatorManager,
        the time out timer should move to UI Process as well.

        Tests: http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html
               http/wpt/webauthn/public-key-credential-get-failure-local-silent.https.html

        * Modules/webauthn/AuthenticatorCoordinator.cpp:
        (WebCore::AuthenticatorCoordinator::create const):
        (WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
        (WebCore::AuthenticatorCoordinatorInternal::initTimeoutTimer): Deleted.
        (WebCore::AuthenticatorCoordinatorInternal::didTimeoutTimerFire): Deleted.
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        (WebCore::PublicKeyCredentialCreationOptions::encode const):
        (WebCore::PublicKeyCredentialCreationOptions::decode):
        * Modules/webauthn/PublicKeyCredentialRequestOptions.h:
        (WebCore::PublicKeyCredentialRequestOptions::encode const):
        (WebCore::PublicKeyCredentialRequestOptions::decode):

2018-10-04  Chris Dumez  <cdumez@apple.com>

        Regression(r236779): Crash when changing the input element type from inside an 'input' event listener
        https://bugs.webkit.org/show_bug.cgi?id=190252

        Reviewed by Alex Christensen.

        Add a null check for element() after firing the 'input' event and before firing the 'change' event
        in case the input event listener changes the input type.

        Tests: fast/dom/HTMLInputElement/change-type-in-click-event-listener.html
               fast/dom/HTMLInputElement/change-type-in-input-event-listener.html

        * html/BaseCheckableInputType.cpp:
        (WebCore::BaseCheckableInputType::fireInputAndChangeEvents):

2018-10-04  Yuhan Wu  <yuhan_wu@apple.com>

        runtime flag and IDL for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=190018

        Reviewed by Youenn Fablet and Chris Dumez.

        Covered by tests:
        imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-constructor.html
        imported/w3c/web-platform-tests/mediacapture-record/BlobEvent-constructor.html

        Add an architecture of the IDL and the class for MediaRecorder and BlobEvent.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediarecorder/BlobEvent.h:
        (WebCore::BlobEvent::create):
        (WebCore::BlobEvent:::Event):
        * Modules/mediarecorder/BlobEvent.idl:
        * Modules/mediarecorder/MediaRecorder.cpp:
        (WebCore::MediaRecorder::create):
        (WebCore::MediaRecorder::MediaRecorder):
        (WebCore::MediaRecorder::activeDOMObjectName const):
        (WebCore::MediaRecorder::canSuspendForDocumentSuspension const):
        * Modules/mediarecorder/MediaRecorder.h: Added.
        (WebCore::MediaRecorder::state const):
        (WebCore::MediaRecorder::~MediaRecorder):
        * Modules/mediarecorder/MediaRecorder.idl:
        * Modules/mediastream/RTCRtpReceiver.cpp:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/WebCoreBuiltinNames.h:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::mediaRecorderEnabled const):
        (WebCore::RuntimeEnabledFeatures::setMediaRecorderEnabled):

2018-10-04  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r236803.

        Caused crashes on some bots

        Reverted changeset:

        "Regression(r236779): Crash when changing the input element
        type from inside an 'input' event listener"
        https://bugs.webkit.org/show_bug.cgi?id=190252
        https://trac.webkit.org/changeset/236803

2018-10-04  Dan Bernstein  <mitz@apple.com>

        Tried to fix the Mojave build after r236832.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
        (-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):

2018-10-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        ENABLE(ASSERT) used in grid code when !ASSERT_DISABLED is desired
        https://bugs.webkit.org/show_bug.cgi?id=190145

        Reviewed by Javier Fernandez.

        Replace ENABLE(ASSERT), which doesn't exist, with !ASSERT_DISABLED.

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::placeItemsOnGrid const):
        (WebCore::RenderGrid::baselinePosition const):
        * rendering/style/GridArea.h:
        (WebCore::GridSpan::GridSpan):

2018-10-04  Dan Bernstein  <mitz@apple.com>

        WebCore part of [Xcode] Update some build settings as recommended by Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=190250

        Reviewed by Andy Estes.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF,
          CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED, and CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS.

        * WebCore.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck and remove a
          duplicate reference in a Compile Sources build phase.

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: Suppress -Wdeprecated-implementations
          around implementations of deprecated accessibility methods.

        * loader/TextResourceDecoder.cpp:
        (WebCore::TextResourceDecoder::checkForBOM): Addressed CLANG_WARN_COMMA.

        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]):
          Suppress -Wdeprecated-implementations around implementations of this deprecated delegate method.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): Ditto.

2018-10-02  Darin Adler  <darin@apple.com>

        AudioNode.connect should use [ReturnValue]
        https://bugs.webkit.org/show_bug.cgi?id=190231

        Reviewed by Eric Carlson.

        This is a slightly more efficient way to return a value that is always
        identical to one of the arguments, so use it here.

        * Modules/webaudio/AudioBasicInspectorNode.cpp:
        (WebCore::AudioBasicInspectorNode::connect): Return ExceptionOr<void>.
        * Modules/webaudio/AudioBasicInspectorNode.h: Ditto.
        * Modules/webaudio/AudioNode.cpp:
        (WebCore::AudioNode::connect): Ditto.
        * Modules/webaudio/AudioNode.h: Ditto.

        * Modules/webaudio/AudioNode.idl: Use [ReturnValue].

2018-10-03  Justin Michaud  <justin_michaud@apple.com>

        Registered custom properties should allow inheritance to be controlled
        https://bugs.webkit.org/show_bug.cgi?id=190038

        Reviewed by Antti Koivisto.

        Tests: css-custom-properties-api/inherits.html
               css-custom-properties-api/length.html
               css-custom-properties-api/length2.html

        Add support for inherits property on registered css custom properties, as well
        as a starting point for evaluating registered custom properties with types. Registered
        custom properties are evaluated as length values before being substituted. Currently,
        relative unit cycles are not detected.

        A proper solution is still needed to resolve relative unit cycles, and to apply properties like font
        and line-height before they are needed by custom properties. In this patch, the font-size property is
        applied twice, once before and once after resolving custom property values.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        (WebCore::CSSComputedStyleDeclaration::length const):
        (WebCore::CSSComputedStyleDeclaration::item const):

        Allow JS to get custom properties that have been resolved to a length. Also add properties from
        m_rareNonInheritedData.

        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::checkVariablesForCycles const):
        (WebCore::CSSCustomPropertyValue::resolveVariableReferences const):
        * css/CSSCustomPropertyValue.h:
        * css/CSSRegisteredCustomProperty.cpp: Copied from Source/WebCore/css/CSSRegisteredCustomProperty.h.
        (WebCore::CSSRegisteredCustomProperty::CSSRegisteredCustomProperty):
        (WebCore::CSSRegisteredCustomProperty::initialValueCopy const):
        * css/CSSRegisteredCustomProperty.h:
        (WebCore::CSSRegisteredCustomProperty::initialValue const):
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::checkVariablesForCycles const):
        (WebCore::CSSVariableData::checkVariablesForCyclesWithRange const):
        (WebCore::CSSVariableData::resolveVariableFallback const):
        (WebCore::CSSVariableData::resolveVariableReference const):
        (WebCore::CSSVariableData::resolveVariableReferences const):
        (WebCore::CSSVariableData::resolveTokenRange const):
        * css/CSSVariableData.h:
        * css/CSSVariableReferenceValue.cpp:
        (WebCore::CSSVariableReferenceValue::checkVariablesForCycles const):
        * css/CSSVariableReferenceValue.h:
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):

        Use RenderStyle over passing in a customProperties map.

        * css/StyleBuilder.h:
        * css/StyleBuilderConverter.h:
        (WebCore::StyleBuilderConverter::convertLength):
        (WebCore::StyleBuilderConverter::convertLengthOrAuto):
        (WebCore::StyleBuilderConverter::convertLengthSizing):
        (WebCore::StyleBuilderConverter::convertLengthMaxSizing):
        * css/StyleBuilderCustom.h:
        (WebCore::StyleBuilderCustom::applyInitialCustomProperty):
        (WebCore::StyleBuilderCustom::applyInheritCustomProperty):
        (WebCore::StyleBuilderCustom::applyValueCustomProperty):
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::useSVGZoomRules const):
        (WebCore::StyleResolver::useSVGZoomRulesForLength const):
        (WebCore::StyleResolver::applyProperty):
        (WebCore::StyleResolver::resolvedVariableValue const):
        (WebCore::StyleResolver::applyCascadedProperties):
        (WebCore::StyleResolver::useSVGZoomRules): Deleted.
        (WebCore::StyleResolver::useSVGZoomRulesForLength): Deleted.
        (WebCore::StyleResolver::resolvedVariableValue): Deleted.
        * css/StyleResolver.h:
        * css/makeprop.pl:

        Move custom property initial values to StyleBuilerCustom. Hook them up to correctly deal with
        inheritance, unset and revert values.

        * css/parser/CSSParser.cpp:
        (WebCore::CSSParser::parseValueWithVariableReferences):
        * css/parser/CSSParser.h:
        * css/parser/CSSParserContext.cpp:
        (WebCore::CSSParserContext::CSSParserContext):
        * css/parser/CSSParserContext.h:
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::CSSPropertyParser::parseSingleValue):

        Allow parsing custom property values as lengths.

        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::checkVariablesInCustomProperties):
        * rendering/style/RenderStyle.h:
        (WebCore::RenderStyle::inheritedCustomProperties const):
        (WebCore::RenderStyle::nonInheritedCustomProperties const):
        (WebCore::RenderStyle::setInheritedCustomPropertyValue):
        (WebCore::RenderStyle::setNonInheritedCustomPropertyValue):
        (WebCore::RenderStyle::getCustomProperty const):
        (WebCore::RenderStyle::customProperties const): Deleted.
        (WebCore::RenderStyle::setCustomPropertyValue): Deleted.
        * rendering/style/StyleRareNonInheritedData.cpp:
        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
        (WebCore::StyleRareNonInheritedData::operator== const):
        * rendering/style/StyleRareNonInheritedData.h:
        * style/StyleResolveForDocument.cpp:
        (WebCore::Style::resolveForDocument):

        Add support for RenderStyle to deal with both inherited and non-inherited properties, and to find
        cycles between them.

2018-10-03  Ryosuke Niwa  <rniwa@webkit.org>

        Clear m_pendingTargets in MutationObserver::takeRecords
        https://bugs.webkit.org/show_bug.cgi?id=190240

        Reviewed by Geoffrey Garen.

        In r236781, we delayed the clearing of m_pendingTargets until the end of microtask to avoid a race between
        mutation record's JS wrappers getting created and GC marking JS wrappers of elements in mutation records.

        This patch shortens this delay to until mutation record's JS wrappers are created. Specifically, we make
        MutationObserver::takeRecords() return a struct which has both pending targets hash set and the vector of
        mutation records so that the hash set survives through the creation of JS wrappers for mutation records.

        To do this, a new IDL extended attribute "ResultField" is introduced to specify the member variable in
        which the result is stored.

        No new tests. Unfortunately, this race condition appears to be impossible to capture in a regression test.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateOperationBodyDefinition):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/test/JS/JSTestInterface.cpp:
        (WebCore::jsTestInterfacePrototypeFunctionTakeNodesBody):
        (WebCore::jsTestInterfacePrototypeFunctionTakeNodes):
        * bindings/scripts/test/TestImplements.idl: Added a test case.
        * dom/MutationObserver.cpp:
        (WebCore::MutationObserver::takeRecords):
        (WebCore::MutationObserver::deliver):
        * dom/MutationObserver.h:
        * dom/MutationObserver.idl:

2018-10-03  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        Add a runtime flag to control activation of VP8 codec.
        Bind this runtime flag to the video codec factories.
        Test: webrtc/video-mute-vp8.html

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::createLibWebRTCPeerConnectionBackend):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
        (WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        Enable VP8 codec for tests.

2018-09-28  Jiewen Tan  <jiewen_tan@apple.com>

        [WebCrypto] ECDSA could not deal with invalid signature inputs
        https://bugs.webkit.org/show_bug.cgi?id=189879
        <rdar://problem/44701276>

        Reviewed by Brent Fulgham.

        Add some guards over detections of the start positions of r/s.

        Covered by improved existing tests.

        * crypto/mac/CryptoAlgorithmECDSAMac.cpp:
        (WebCore::verifyECDSA):

2018-10-03  Jer Noble  <jer.noble@apple.com>

        Add a quirk to disable Modern EME for sites which are broken with it enabled
        https://bugs.webkit.org/show_bug.cgi?id=190051

        Reviewed by Daniel Bates.

        Add a new class, parallel to Settings, to track quirk behavior. Extend the bindings
        generator to support a DisabledByQuirk attribute, and set this attribute for all
        the Modern EME types. Check whether the quirk is set inside HTMLMediaElement in
        addition to the existing Setting.

        * Modules/encryptedmedia/MediaKeyMessageEvent.idl:
        * Modules/encryptedmedia/MediaKeySession.idl:
        * Modules/encryptedmedia/MediaKeyStatusMap.idl:
        * Modules/encryptedmedia/MediaKeySystemAccess.idl:
        * Modules/encryptedmedia/MediaKeys.idl:
        * Modules/encryptedmedia/NavigatorEME.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/scripts/CodeGenerator.pm:
        (WK_ucfirst):
        * bindings/scripts/CodeGeneratorJS.pm:
        (NeedsRuntimeCheck):
        (GenerateRuntimeEnableConditionalString):
        * bindings/scripts/IDLAttributes.json:
        * bindings/scripts/preprocess-idls.pl:
        (GenerateConstructorAttributes):
        * dom/Document.cpp:
        (WebCore::Document::Document):
        * dom/Document.h:
        (WebCore::Document::quirks const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
        (WebCore::HTMLMediaElement::mediaPlayerInitializationDataEncountered):
        * html/HTMLMediaElement.idl:
        * page/Quirks.cpp: Added.
        (Quirks::Quirks):
        (Quirks::disableEncryptedMediaAPIQuirk const):
        * page/Quirks.h: Added.

2018-10-03  Antoine Quint  <graouts@apple.com>

        [Web Animations] REGRESSION: setting 'animation-name: none' after a 'fill: forwards' animation has completed does not revert to the unanimated style
        https://bugs.webkit.org/show_bug.cgi?id=190257
        <rdar://problem/41341473>

        Reviewed by Dean Jackson.

        Test: animations/animation-fill-forwards-removal.html

        While we removed a declarative animation that was no longer targetting its element, we were not removing it from the declarative animation maps
        on the timeline, which means that the animation would still be picked up when resolving styles. We now notify the timeline that the animation
        was detached from the element. This preserves the DeclarativeAnimation relationship returning the element as its effect's target and the document
        timeline as its timeline, but the document timeline will no longer see this animation as targeting this element.

        * animation/AnimationTimeline.cpp:
        (WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation):
        * animation/DeclarativeAnimation.h:
        (WebCore::DeclarativeAnimation::target const):

2018-10-03  Jer Noble  <jer.noble@apple.com>

        CRASH in CVPixelBufferGetBytePointerCallback()
        https://bugs.webkit.org/show_bug.cgi?id=190092

        Reviewed by Eric Carlson.

        Speculative fix for crash that occurs when callers of CVPixelBufferGetBytePointerCallback() attempt
        to read the last byte of a CVPixelBuffer (as a pre-flight check) and crash due to a memory access
        error. It's speculated that mismatching CVPixelBufferLockBytePointer / CVPixelBufferUnlockBytePointer
        calls could result in an incorrect state inside the CVPixelBuffer. Add log count checks, locking, and
        release logging to try to pinpoint if mismatch lock counts are occurring in this code path.

        * platform/graphics/cv/PixelBufferConformerCV.cpp:
        (WebCore::CVPixelBufferGetBytePointerCallback):
        (WebCore::CVPixelBufferReleaseBytePointerCallback):
        (WebCore::CVPixelBufferReleaseInfoCallback):
        (WebCore::PixelBufferConformerCV::createImageFromPixelBuffer):

2018-10-03  Chris Dumez  <cdumez@apple.com>

        Regression(r236779): Crash when changing the input element type from inside an 'input' event listener
        https://bugs.webkit.org/show_bug.cgi?id=190252

        Reviewed by Alex Christensen.

        Add a null check for element() after firing the 'input' event and before firing the 'change' event
        in case the input event listener changes the input type.

        Tests: fast/dom/HTMLInputElement/change-type-in-click-event-listener.html
               fast/dom/HTMLInputElement/change-type-in-input-event-listener.html

        * html/BaseCheckableInputType.cpp:
        (WebCore::BaseCheckableInputType::fireInputAndChangeEvents):

2018-10-03  Chris Dumez  <cdumez@apple.com>

        Passing noopener=NOOPENER to window.open() should cause the new window to not have an opener
        https://bugs.webkit.org/show_bug.cgi?id=190251

        Reviewed by Alex Christensen.

        Passing noopener=NOOPENER to window.open() should cause the new window to not have an opener,
        similarly to noopener=1:
        - https://html.spec.whatwg.org/#window-open-steps (step 5)

        It does not matter what the value is, if there is a key named "noopener", then the new window
        should not have an opener.

        No new tests, rebaselined existing test.

        * page/WindowFeatures.cpp:
        (WebCore::setWindowFeature):

2018-10-03  Ryosuke Niwa  <rniwa@webkit.org>

        GC can collect JS wrappers of nodes in the mutation records waiting to be delivered
        https://bugs.webkit.org/show_bug.cgi?id=190115

        Reviewed by Geoffrey Garen.

        Fixed the bug by retaining JS wrappers of elements in mutation records using GCReachableRef.

        This patch deploys GCReachableRef in two places: MutationObserver where each mutation record's
        target is kept alive and MutationObserverRegistration where each node which had been removed
        from an observed tree is kept alive for a subtree observation.

        No new test since the test which can reproduce this problem is too slow.

        * dom/GCReachableRef.h:
        (WebCore::GCReachableRef): Made it work with hash table.
        (WebCore::GCReachableRef::operator T& const):
        (WebCore::GCReachableRef::GCReachableRef):
        (WebCore::GCReachableRef::isHashTableDeletedValue const):
        (WebCore::GCReachableRef::isHashTableEmptyValue const):
        (WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue const):
        (WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue):
        (WebCore::GCReachableRef::assignToHashTableEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::emptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::constructEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::isEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::assignToEmpty):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::peek):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::take):
        * dom/MutationObserver.cpp:
        (WebCore::MutationObserver::takeRecords): Don't clear m_pendingTargets because that would allow wrappers
        to be collected before elements in mutation records are accessed. We delay until the end of the current
        microtask at which point deliver() function is called.
        (WebCore::MutationObserver::disconnect):
        (WebCore::MutationObserver::enqueueMutationRecord): Add the target to the list of elements to keep alive.
        This is needed for a newly inserted node, a node with attribute change, etc...
        (WebCore::MutationObserver::deliver): Keep the set of transient registration targets alive until mutation
        records are delivered to each observer. These are nodes which had been removed from a tree and whose
        subtree had still been obsreved up until this point.
        * dom/MutationObserver.h:
        * dom/MutationObserverRegistration.cpp:
        (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):
        (WebCore::MutationObserverRegistration::takeTransientRegistrations): Return the hash set of elemenets
        that need to be kept alive so that MutationObserver::deliver can keep them alive until the deliver
        function had been called.
        (WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):
        * dom/MutationObserverRegistration.h:

2018-10-03  Dean Jackson  <dino@apple.com>

        Make the Pointer Events feature description valid
        https://bugs.webkit.org/show_bug.cgi?id=190254

        Reviewed by Simon Fraser.

        * features.json:

2018-10-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236781.

        The test added with this commit is timing out consistently.

        Reverted changeset:

        "GC can collect JS wrappers of nodes in the mutation records
        waiting to be delivered"
        https://bugs.webkit.org/show_bug.cgi?id=190115
        https://trac.webkit.org/changeset/236781

2018-10-03  Dean Jackson  <dino@apple.com>

        [macOS] Switching to discrete GPU should be done in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189361
        <rdar://problem/43949622>

        Try to fix the IOSMAC build.

        * platform/graphics/GraphicsContext3D.h:

2018-10-03  Chris Dumez  <cdumez@apple.com>

        input.checked is incorrect while we're parsing its children
        https://bugs.webkit.org/show_bug.cgi?id=190227

        Reviewed by Ryosuke Niwa.

        input.checked was incorrect while we're parsing its children because we were delaying updating the
        checked state until HTMLInputElement::finishParsingChildren() is called, to avoid a bad interaction
        with form state restoration.

        In this patch, we update the checked state as soon as the 'checked' attribute is set, when we know
        that no form state to restore.

        fast/forms/radio/state-restore-radio-group.html covers the form restoration case and is still
        passing.

        No new tests, rebaselined existing test.

        * html/FormController.cpp:
        (WebCore::FormController::hasFormStateToRestore const):
        * html/FormController.h:
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::parseAttribute):

2018-10-03  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Incorrect rendering of layers whose backingStore hasn't changed
        https://bugs.webkit.org/show_bug.cgi?id=190249

        Reviewed by Žan Doberšek.

        Do not overwrite m_nicosia.performLayerSync when updating the content buffers or we lose
        the value calculated during the layer flush. Use an OR instead to keep the old value.

        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffers):

2018-10-03  Youenn Fablet  <youenn@apple.com>

        Enable H264 simulcast
        https://bugs.webkit.org/show_bug.cgi?id=190167

        Reviewed by Eric Carlson.

        Activate H264 simulcast trial field.
        Make track.getSettings() expose width and height for incoming tracks.

        Test: webrtc/simulcast-h264.html

        * Configurations/WebCore.xcconfig:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):

2018-10-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wunused-variable in RenderLayer::updateScrollableAreaSet
        https://bugs.webkit.org/show_bug.cgi?id=190200

        Reviewed by Yusuke Suzuki.

        Pass it through UNUSED_VARIABLE().

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const):

2018-10-03  Zan Dobersek  <zdobersek@igalia.com>

        Ref<FetchResponse> use-after-move in DOMCache::put()
        https://bugs.webkit.org/show_bug.cgi?id=190239

        Reviewed by Youenn Fablet.

        Retrieve reference from the Ref<FetchResponse> object before it's
        move-captured in the lambda that's passed to the
        FetchResponse::consumeBodyReceivedByChunk() method that is invoked on
        that very same object. This is a classic use-after-move bug that pops
        up on compilers with different C++ calling convention.

        * Modules/cache/DOMCache.cpp:
        (WebCore::DOMCache::put):

2018-10-03  Ryosuke Niwa  <rniwa@webkit.org>

        Enable selectionAcrossShadowBoundariesEnabled by default in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=190238

        Reviewed by Antti Koivisto.

        Enable the feature by default.

        * page/Settings.yaml:

2018-10-02  Ryosuke Niwa  <rniwa@webkit.org>

        Copying content with shadow DOM doesn't copy any contents
        https://bugs.webkit.org/show_bug.cgi?id=157443

        Reviewed by Wenson Hsieh.

        This patch adds the support for copying and pasting content across shadow boundaries in HTML and plain text,
        which is enabled whenever selection across shadow boundaries is enabled.

        To do this, TextIterator now has a constructor which takes two Positions, and the node traversal code in
        StyledMarkupAccumulator has been abstracted via helper functions as done for TextIterator.

        When serializing a HTMl slot element, serialize it as a span with "display: contents" to make sure when
        the content is pasted into a shadow tree, it wouldn't affect the slot assignment of the shadow tree.

        Tests: editing/pasteboard/copy-paste-across-shadow-boundaries-1.html
               editing/pasteboard/copy-paste-across-shadow-boundaries-2.html
               editing/pasteboard/copy-paste-across-shadow-boundaries-3.html
               editing/pasteboard/copy-paste-across-shadow-boundaries-4.html
               editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1.html
               editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-2.html
               editing/pasteboard/copy-paste-with-shadow-content.html

        * dom/ComposedTreeIterator.h:
        (WebCore::assignedSlotIgnoringUserAgentShadow): Moved from TextIterator.cpp.
        (WebCore::shadowRootIgnoringUserAgentShadow): Ditto.
        (WebCore::firstChildInComposedTreeIgnoringUserAgentShadow): Ditto.
        (WebCore::nextSiblingInComposedTreeIgnoringUserAgentShadow): Ditto.
        * dom/Position.h:
        (WebCore::Position::treeScope const): Added.
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::addDisplayContents): Added.
        * editing/EditingStyle.h:
        * editing/Editor.cpp:
        (WebCore::Editor::selectedText const): Use the new behavior when selectionAcrossShadowBoundariesEnabled is set.
        (WebCore::Editor::selectedTextForDataTransfer const): Ditto.
        * editing/MarkupAccumulator.cpp:
        (WebCore::MarkupAccumulator::appendEndElement): Renamed from appendEndTag. Now takes StringBuilder.
        * editing/MarkupAccumulator.h:
        (WebCore::MarkupAccumulator::appendEndTag):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::TextIterator): Added a new variant which takes two positions.
        (WebCore::TextIterator::init):
        (WebCore::firstChild):
        (WebCore::nextSibling):
        (WebCore::plainText): Ditto.
        * editing/TextIterator.h:
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::selectionInHTMLFormat): Use the new behavior if selectionAcrossShadowBoundariesEnabled is set.
        * editing/gtk/EditorGtk.cpp:
        (WebCore::Editor::writeSelectionToPasteboard): Ditto.
        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::parentNode): Added.
        (WebCore::StyledMarkupAccumulator::firstChild): Added.
        (WebCore::StyledMarkupAccumulator::nextSibling): Added.
        (WebCore::StyledMarkupAccumulator::nextSkippingChildren): Added.
        (WebCore::StyledMarkupAccumulator::hasChildNodes): Added.
        (WebCore::StyledMarkupAccumulator::isDescendantOf): Added.
        (WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator):
        (WebCore::StyledMarkupAccumulator::appendElement): Serialize a slot element as a span with display: contents.
        (WebCore::StyledMarkupAccumulator::appendEndElement): Added. Ditto.
        (WebCore::StyledMarkupAccumulator::serializeNodes):
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization): Use the newly added helper functions to
        traverse the composed tree when m_useComposedTree is set.
        (WebCore::commonShadowIncludingAncestor): Added.
        (WebCore::serializePreservingVisualAppearanceInternal): Added SerializeComposedTree as an argument. Also use
        StyledMarkupAccumulator::parentNode to serialize special common ancestors; e.g. to preserve b, i, etc...
        (WebCore::serializePreservingVisualAppearance): Ditto to the variant which takes VisibleSelection.
        (WebCore::sanitizedMarkupForFragmentInDocument):
        * editing/markup.h:
        * editing/wpe/EditorWPE.cpp:
        (WebCore::Editor::writeSelectionToPasteboard):
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::createFromSelection):
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::SerializerMarkupAccumulator::appendEndElement):
        * testing/Internals.cpp:
        (WebCore::Internals::setSelectionWithoutValidation): Added. A helper function to create a selection across
        shadow boundaries for testing purposes.
        * testing/Internals.h:
        * testing/Internals.idl:

2018-10-02  Chris Dumez  <cdumez@apple.com>

        MessageEvent.ports should return the same object
        https://bugs.webkit.org/show_bug.cgi?id=190151

        Reviewed by Darin Adler.

        MessageEvent.ports should return the same object it was initialized to instead of
        constructing a new JSValue every time.

        No new tests, rebaselined existing test.

        * bindings/js/JSMessageEventCustom.cpp:
        (WebCore::JSMessageEvent::ports const):
        (WebCore::JSMessageEvent::visitAdditionalChildren):
        * dom/MessageEvent.cpp:
        (WebCore::MessageEvent::initMessageEvent):
        * dom/MessageEvent.h:
        * dom/MessageEvent.idl:

2018-10-01  Ryosuke Niwa  <rniwa@webkit.org>

        GC can collect JS wrappers of nodes in the mutation records waiting to be delivered
        https://bugs.webkit.org/show_bug.cgi?id=190115

        Reviewed by Geoffrey Garen.

        Fixed the bug by retaining JS wrappers of elements in mutation records using GCReachableRef.

        This patch deploys GCReachableRef in two places: MutationObserver where each mutation record's
        target is kept alive and MutationObserverRegistration where each node which had been removed
        from an observed tree is kept alive for a subtree observation.

        Test: fast/dom/MutationObserver/mutation-observer-retains-js-wrappers-of-targets-alive.html

        * dom/GCReachableRef.h:
        (WebCore::GCReachableRef): Made it work with hash table.
        (WebCore::GCReachableRef::operator T& const):
        (WebCore::GCReachableRef::GCReachableRef):
        (WebCore::GCReachableRef::isHashTableDeletedValue const):
        (WebCore::GCReachableRef::isHashTableEmptyValue const):
        (WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue const):
        (WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue):
        (WebCore::GCReachableRef::assignToHashTableEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::emptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::constructEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::isEmptyValue):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::assignToEmpty):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::peek):
        (WTF::HashTraits<WebCore::GCReachableRef<P>>::take):
        * dom/MutationObserver.cpp:
        (WebCore::MutationObserver::takeRecords): Don't clear m_pendingTargets because that would allow wrappers
        to be collected before elements in mutation records are accessed. We delay until the end of the current
        microtask at which point deliver() function is called.
        (WebCore::MutationObserver::disconnect):
        (WebCore::MutationObserver::enqueueMutationRecord): Add the target to the list of elements to keep alive.
        This is needed for a newly inserted node, a node with attribute change, etc...
        (WebCore::MutationObserver::deliver): Keep the set of transient registration targets alive until mutation
        records are delivered to each observer. These are nodes which had been removed from a tree and whose
        subtree had still been obsreved up until this point.
        * dom/MutationObserver.h:
        * dom/MutationObserverRegistration.cpp:
        (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):
        (WebCore::MutationObserverRegistration::takeTransientRegistrations): Return the hash set of elemenets
        that need to be kept alive so that MutationObserver::deliver can keep them alive until the deliver
        function had been called.
        (WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):
        * dom/MutationObserverRegistration.h:

2018-10-02  Chris Dumez  <cdumez@apple.com>

        radio / checkbox inputs should fire "click, input, change" events in order when clicked
        https://bugs.webkit.org/show_bug.cgi?id=190223

        Reviewed by Ryosuke Niwa.

        radio / checkbox inputs should fire "click, input, change" events in order when clicked:
        - https://html.spec.whatwg.org/#radio-button-state-(type=radio)
        - https://html.spec.whatwg.org/#checkbox-state-(type=checkbox)
        - https://dom.spec.whatwg.org/#ref-for-eventtarget-activation-behavior③ (step 11)

        Gecko and Blink already behave this way. However, WebKit has the following issues:
        - the input event is not fired
        - the click event is fired after the change event

        No new tests, updated / rebaselined existing tests.

        * html/BaseCheckableInputType.cpp:
        (WebCore::BaseCheckableInputType::fireInputAndChangeEvents):
        * html/BaseCheckableInputType.h:
        * html/CheckboxInputType.cpp:
        (WebCore::CheckboxInputType::willDispatchClick):
        (WebCore::CheckboxInputType::didDispatchClick):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setChecked):
        * html/HTMLInputElement.h:
        * html/RadioInputType.cpp:
        (WebCore::RadioInputType::willDispatchClick):
        (WebCore::RadioInputType::didDispatchClick):

2018-10-02  Chris Dumez  <cdumez@apple.com>

        fieldset.elements should return an HTMLCollection instead of an HTMLFormControlsCollection
        https://bugs.webkit.org/show_bug.cgi?id=190218

        Reviewed by Alex Christensen.

        fieldset.elements should return an HTMLCollection instead of an HTMLFormControlsCollection:
        - https://github.com/whatwg/html/commit/8beedf0c2ffd38853caddec67490288f47afc8eb

        Gecko has always behaved this way. Blink aligned with Gecko and the HTML specification in December 2016:
        - https://bugs.chromium.org/p/chromium/issues/detail?id=665291

        This simplifies our HTMLFieldSetElement code a lot.

        Test: fast/forms/fieldset/fieldset-elements-htmlcollection.html

        * html/CollectionType.h:
        * html/GenericCachedHTMLCollection.cpp:
        (WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches const):
        * html/HTMLCollection.cpp:
        (WebCore::HTMLCollection::rootTypeFromCollectionType):
        (WebCore::invalidationTypeExcludingIdAndNameAttributes):
        * html/HTMLFieldSetElement.cpp:
        (WebCore::HTMLFieldSetElement::elements):
        * html/HTMLFieldSetElement.h:
        * html/HTMLFieldSetElement.idl:
        * html/HTMLFormControlsCollection.cpp:
        (WebCore::HTMLFormControlsCollection::HTMLFormControlsCollection):
        (WebCore:: const):
        (WebCore::HTMLFormControlsCollection::copyFormControlElementsVector const):
        (WebCore::HTMLFormControlsCollection::ownerNode const):
        (WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
        * html/HTMLFormControlsCollection.h:

2018-10-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: prevent layer events from firing until the layer information is re-requested
        https://bugs.webkit.org/show_bug.cgi?id=190159

        Reviewed by Joseph Pecoraro.

        Test: inspector/layers/layerTreeDidChange.html

        * inspector/agents/InspectorLayerTreeAgent.h:
        * inspector/agents/InspectorLayerTreeAgent.cpp:
        (WebCore::InspectorLayerTreeAgent::reset):
        (WebCore::InspectorLayerTreeAgent::layerTreeDidChange):
        (WebCore::InspectorLayerTreeAgent::layersForNode):

2018-10-02  Brian Burg  <bburg@apple.com>

        Web Automation: tab default key handler should always cycle focus when page is controlled by automation
        https://bugs.webkit.org/show_bug.cgi?id=190221
        <rdar://problem/44914534>

        Reviewed by Joseph Pecoraro.

        This change progresses WPT WebDriver test special_keys.py::test_webdriver_special_key_sends_keydown[TAB-expected24].

        * page/FocusController.cpp:
        (WebCore::FocusController::advanceFocusInDocumentOrder):
        Always cycle focus if the page is controlled by automation. If the chrome takes
        focus, then the first responder will be something other than the WebView, which
        causes subsequent WebDriver commands to hang.

2018-10-01  Dean Jackson  <dino@apple.com>

        [macOS] Switching to discrete GPU should be done in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189361
        <rdar://problem/43949622>

        Reviewed by Simon Fraser.

        Based on an earlier patch by Per Arne Vollan.

        Due to the fact we can't talk to the Window Server, the Web Process can
        no longer muxing to the discrete GPU directly. Instead we have to get the
        UI Process to process the change. Do this by adding a new Chrome client
        called GPUClient, that will have implementations provided by both WebKit
        and legacy WebKit.

        Unfortunately this can't be tested by a regular WKTR since:
        - it requires specific hardware
        - swapping to/from the discrete GPU takes about 20 seconds
        - running concurrent tests could confuse the tests into thinking
          the wrong GPU is active

        Instead we'll write a specific test for this functionality and
        run it on a separate bot.

        * WebCore.xcodeproj/project.pbxproj: Add GPUClient files.

        * page/Chrome.cpp: Drive by clean-up.
        (WebCore::Chrome::windowScreenDidChange):

        * platform/graphics/GraphicsContext3D.h: We need to keep track of
        whether we've muxed for this context, in order to not respond to
        the screen change notifications (they are misleading in the case
        of muxing).

        * platform/graphics/GraphicsContext3DManager.cpp: Rather than try
        to mux directly, call into GPUClient.
        (WebCore::GraphicsContext3DManager::displayWasReconfigured):
        (WebCore::GraphicsContext3DManager::updateHighPerformanceState):
        (WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired):
        (WebCore::GraphicsContext3DManager::recycleContextIfNecessary):
        * platform/graphics/GraphicsContext3DManager.h:

        * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: Only reconfigure
        the virtual display if it didn't happen from muxing.
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::updateCGLContext):
        (WebCore::GraphicsContext3D::screenDidChange):

        * platform/graphics/mac/SwitchingGPUClient.cpp: Added.
        (WebCore::SwitchingGPUClient::singleton):
        (WebCore::SwitchingGPUClient::setSingleton):
        * platform/graphics/mac/SwitchingGPUClient.h: Added.

        * testing/Internals.cpp: Testing helper.
        (WebCore::Internals::hasMuxableGPU):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-10-02  Chris Dumez  <cdumez@apple.com>

        Image.__proto__ should be Function.prototype, not HTMLElement.prototype
        https://bugs.webkit.org/show_bug.cgi?id=190216

        Reviewed by Alex Christensen.

        Properties created for named constructors should always use Function.prototype as prototype, as per:
        - https://heycam.github.io/webidl/#named-constructors

        Gecko and Blink agree with the Web IDL specification. However, WebKit was using the parent interface's
        prototype if such a parent existing. So Image.__proto__ would end up being HTMLElement.prototype
        instead of Function.prototype.

        No new tests, rebaselined existing test.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateConstructorHelperMethods):

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Prepare WebCoreNSURLExtras for ARC
        https://bugs.webkit.org/show_bug.cgi?id=190219

        Reviewed by Tim Horton.

        ARC doesn't like the explicit sending of -release.
        Use RetainPtr instead.

        * platform/mac/WebCoreNSURLExtras.mm:
        (WebCore::collectRangesThatNeedMapping):
        (WebCore::collectRangesThatNeedEncoding):
        (WebCore::collectRangesThatNeedDecoding):
        (WebCore::applyHostNameFunctionToMailToURLString):
        (WebCore::applyHostNameFunctionToURLString):
        (WebCore::mapHostNames):
        (WebCore::stringByTrimmingWhitespace):
        (WebCore::URLWithUserTypedString):
        (WebCore::userVisibleString):
        (WebCore::rangeOfURLScheme):
        (WebCore::looksLikeAbsoluteURL):
        (WebCore::retain): Deleted.

2018-10-02  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Fix missing values of  resource timing API.
        https://bugs.webkit.org/show_bug.cgi?id=190193

        Reviewed by Alex Christensen.

        The property nextHopProtocol was not returned correctly. It was
        returned only when remote inspector is opened.

        Tests: http/wpt/resource-timing/rt-nextHopProtocol.html
               http/wpt/resource-timing/rt-nextHopProtocol.worker.html

        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::getNetworkLoadMetrics):
        (WebCore::CurlHandle::addExtraNetworkLoadMetrics):

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Remove unused linked-on-or-before-iOS5 check
        https://bugs.webkit.org/show_bug.cgi?id=190164

        Reviewed by Michael Saboff.

        If an app hasn't been updated since iOS5, it can't run supported iOS.
        This value is also only checked in an uninstantiated template function.

        * platform/URL.cpp:
        (WebCore::enableURLSchemeCanonicalization): Deleted.
        (WebCore::equal): Deleted.
        * platform/URL.h:

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Remove ParsedURLString
        https://bugs.webkit.org/show_bug.cgi?id=190154

        Reviewed by Chris Dumez.

        Before the introduction of URLParser, it would indicate that we should assume the String
        is from a valid URL so we can skip canonicalization and just find the offsets inside the String
        to quickly create a URL.  It was a performance optimization that caused security issues when
        misused.  Since the introduction of URLParser, we have a fast path for all URL parsing, so
        right now it actually doesn't change any behavior.  It's just a relic of the past that complicates
        the URL class, making it harder to express which constructor to use and making it harder to move
        the class.

        * Modules/navigatorcontentutils/NavigatorContentUtils.cpp:
        (WebCore::NavigatorContentUtils::registerProtocolHandler):
        (WebCore::NavigatorContentUtils::isProtocolHandlerRegistered):
        (WebCore::NavigatorContentUtils::unregisterProtocolHandler):
        * dom/Document.cpp:
        (WebCore::Document::updateBaseURL):
        (WebCore::Document::initSecurityContext):
        * dom/ExtensionStyleSheets.cpp:
        (WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
        * dom/ProcessingInstruction.cpp:
        (WebCore::ProcessingInstruction::checkStyleSheet):
        * editing/markup.cpp:
        (WebCore::completeURLs):
        * fileapi/BlobURL.cpp:
        (WebCore::BlobURL::createBlobURL):
        * history/HistoryItem.cpp:
        (WebCore::HistoryItem::url const):
        (WebCore::HistoryItem::originalURL const):
        * html/HTMLFrameElementBase.cpp:
        (WebCore::HTMLFrameElementBase::location const):
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
        * html/PublicURLManager.cpp:
        (WebCore::PublicURLManager::stop):
        * inspector/InspectorStyleSheet.cpp:
        (WebCore::InspectorStyleSheet::resourceStyleSheetText const):
        * inspector/agents/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::getCookies):
        (WebCore::InspectorPageAgent::deleteCookie):
        (WebCore::InspectorPageAgent::getResourceContent):
        (WebCore::InspectorPageAgent::searchInResource):
        * inspector/agents/page/PageDebuggerAgent.cpp:
        (WebCore::PageDebuggerAgent::sourceMapURLForScript):
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::subresources const):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::init):
        (WebCore::FrameLoader::initForSynthesizedDocument):
        * loader/HistoryController.cpp:
        (WebCore::HistoryController::pushState):
        (WebCore::HistoryController::replaceState):
        * loader/appcache/ApplicationCache.cpp:
        (WebCore::ApplicationCache::addResource):
        (WebCore::ApplicationCache::resourceForURL):
        * loader/appcache/ApplicationCacheGroup.cpp:
        (WebCore::ApplicationCacheGroup::startLoadingEntry):
        (WebCore::ApplicationCacheGroup::addEntry):
        * loader/appcache/ApplicationCacheStorage.cpp:
        (WebCore::ApplicationCacheStorage::cacheGroupForURL):
        (WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
        (WebCore::ApplicationCacheStorage::loadCache):
        (WebCore::ApplicationCacheStorage::manifestURLs):
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::create):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::urlForBlankFrame):
        * platform/URL.cpp:
        (WebCore::blankURL):
        * platform/URL.h:
        (): Deleted.
        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
        (WebCore::MediaPlayerPrivateAVFoundation::load):
        * platform/network/BlobRegistryImpl.cpp:
        (WebCore::BlobRegistryImpl::populateBlobsForFileWriting):
        * platform/network/ResourceRequestBase.h:
        (WebCore::ResourceRequestBase::decodeBase):
        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::sanitizeSuggestedFilename):
        * platform/network/cf/DNSResolveQueueCFNet.cpp:
        (WebCore::DNSResolveQueueCFNet::updateIsUsingProxy):
        * platform/network/cf/ResourceRequest.h:
        (WebCore::ResourceRequest::ResourceRequest):
        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::searchCookies):
        (WebCore::CookieJarDB::setCookie):
        (WebCore::CookieJarDB::deleteCookie):
        * platform/network/curl/ResourceRequest.h:
        (WebCore::ResourceRequest::ResourceRequest):
        * platform/network/soup/ResourceRequest.h:
        (WebCore::ResourceRequest::ResourceRequest):
        * xml/XSLTProcessorLibxslt.cpp:
        (WebCore::docLoaderFunc):

2018-10-02  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Cue with line setting is not rendered correctly
        https://bugs.webkit.org/show_bug.cgi?id=190168

        Reviewed by Eric Carlson.

        When the line setting contains an optional alignment value, the cue is not rendered at the correct position,
        see https://w3c.github.io/webvtt/#webvtt-line-cue-setting. This patch does not implement correct handling of
        the line setting alignment values, it only makes sure parsing does not fail when the cue has line alignment
        settings.

        Test: media/track/track-cue-line-position.html

        * html/track/VTTCue.cpp:
        (WebCore::VTTCueBox::applyCSSProperties):
        (WebCore::VTTCue::getPositionCoordinates const):
        (WebCore::VTTCue::setCueSettings):

2018-10-02  Antti Koivisto  <antti@apple.com>

        User installed fonts are not always disabled when they should be
        https://bugs.webkit.org/show_bug.cgi?id=190195

        Reviewed by Geoffrey Garen.

        SVG images and some theme cases fail to respect the setting. Besides the obvious problem this
        is also a performance issue as various font caches include this setting in the key.

        * platform/graphics/FontDescription.cpp:
        (WebCore::m_shouldAllowUserInstalledFonts):

        Initialize to 'No' by default. All paths where user fonts make sense already set the bit from
        settings. This fixes some cases in system themes that construct FontDescriptions from scratch.

        * rendering/RenderElement.cpp:
        (WebCore::RenderElement::styleWillChange):

        Add assertion. This verified the change with the existing tests.

        * svg/graphics/SVGImage.cpp:
        (WebCore::SVGImage::dataChanged):

        Always disallow user fonts in SVG used as images.

2018-10-01  Dean Jackson  <dino@apple.com>

        Remove CSS Animation Triggers
        https://bugs.webkit.org/show_bug.cgi?id=190175
        <rdar://problem/44925626>

        Reviewed by Simon Fraser.

        Remove the never-properly specified CSS Animation Triggers.

        * Configurations/FeatureDefines.xcconfig:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSAnimationTriggerScrollValue.cpp: Removed.
        * css/CSSAnimationTriggerScrollValue.h: Removed.
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
        (WebCore::createAnimationTriggerValue): Deleted.
        (WebCore::animationTriggerValue): Deleted.
        * css/CSSProperties.json:
        * css/CSSToStyleMap.cpp:
        (WebCore::CSSToStyleMap::mapAnimationTrigger): Deleted.
        * css/CSSToStyleMap.h:
        * css/CSSValue.cpp:
        (WebCore::CSSValue::equals const):
        (WebCore::CSSValue::cssText const):
        (WebCore::CSSValue::destroy):
        * css/CSSValue.h:
        (WebCore::CSSValue::isAnimationTriggerScrollValue const): Deleted.
        * css/parser/CSSPropertyParser.cpp:
        (WebCore::consumeAnimationValue):
        (WebCore::CSSPropertyParser::parseSingleValue):
        (WebCore::consumeWebkitAnimationTrigger): Deleted.
        * page/FrameView.cpp:
        (WebCore::FrameView::sendScrollEvent):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setAnimationTriggersEnabled): Deleted.
        (WebCore::RuntimeEnabledFeatures::animationTriggersEnabled const): Deleted.
        * page/animation/AnimationBase.cpp:
        (WebCore::AnimationBase::updateStateMachine):
        (WebCore::AnimationBase::fireAnimationEventsIfNeeded):
        (WebCore::AnimationBase::timeToNextService):
        (WebCore::AnimationBase::getElapsedTime const):
        * page/animation/CSSAnimationController.cpp:
        (WebCore::CSSAnimationControllerPrivate::animationWillBeRemoved):
        (WebCore::CSSAnimationControllerPrivate::addToAnimationsDependentOnScroll): Deleted.
        (WebCore::CSSAnimationControllerPrivate::removeFromAnimationsDependentOnScroll): Deleted.
        (WebCore::CSSAnimationControllerPrivate::scrollWasUpdated): Deleted.
        (WebCore::CSSAnimationController::wantsScrollUpdates const): Deleted.
        (WebCore::CSSAnimationController::scrollWasUpdated): Deleted.
        * page/animation/CSSAnimationController.h:
        * page/animation/CSSAnimationControllerPrivate.h:
        (WebCore::CSSAnimationControllerPrivate::wantsScrollUpdates const): Deleted.
        (WebCore::CSSAnimationControllerPrivate::scrollPosition const): Deleted.
        * page/animation/CompositeAnimation.cpp:
        (WebCore::CompositeAnimation::updateKeyframeAnimations):
        * page/animation/CompositeAnimation.h:
        (WebCore::CompositeAnimation::hasScrollTriggeredAnimation const): Deleted.
        * platform/animation/Animation.cpp:
        (WebCore::Animation::Animation):
        (WebCore::Animation::operator=):
        (WebCore::Animation::animationsMatch const):
        * platform/animation/Animation.h:
        (WebCore::Animation::isTimingFunctionSet const):
        (WebCore::Animation::isEmpty const):
        (WebCore::Animation::clearTimingFunction):
        (WebCore::Animation::clearAll):
        (WebCore::Animation::animationMode const):
        (WebCore::Animation::setAnimationMode):
        (WebCore::Animation::initialTimingFunction):
        (WebCore::Animation::isTriggerSet const): Deleted.
        (WebCore::Animation::clearTrigger): Deleted.
        (WebCore::Animation::trigger const): Deleted.
        (WebCore::Animation::setTrigger): Deleted.
        (WebCore::Animation::initialTrigger): Deleted.
        * platform/animation/AnimationTrigger.h: Removed.
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::animationCanBeAccelerated const):
2018-10-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236624 and r236671.
        https://bugs.webkit.org/show_bug.cgi?id=190207

        The change in r236624 introduced crashes on the bots
        (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236624

        "Unify implementation in VideoFullscreenInterfaceAVKit"
        https://bugs.webkit.org/show_bug.cgi?id=190091
        https://trac.webkit.org/changeset/236671

2018-10-02  Sihui Liu  <sihui_liu@apple.com>

        Add release assertion to ensure m_owningPointerForClose is null in UniqueIDBDatabase::invokeOperationAndTransactionTimer()
        https://bugs.webkit.org/show_bug.cgi?id=190178

        Reviewed by Chris Dumez.

        This would help debug rdar://problem/44902833.

        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
        (WebCore::IDBServer::UniqueIDBDatabase::invokeOperationAndTransactionTimer):

2018-10-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236719.
        https://bugs.webkit.org/show_bug.cgi?id=190197

        this revision caused 39 layout test failures that tested for
        scrolling, a bug was also not present in the commit or change
        log. (Requested by Truitt on #webkit).

        Reverted changeset:

        "Unreviewed, fix unused variable in
        RenderLayer::updateScrollableAreaSet"
        https://trac.webkit.org/changeset/236719

2018-10-02  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Add h264parse to accept MP4 without stss
        https://bugs.webkit.org/show_bug.cgi?id=190143

        Reviewed by Xabier Rodriguez-Calvar.

        The MP4 file used in this URL does not contain a stss (Sync Sample
        Box). In consequence, in acordance with the ISO BMFF spec, all samples
        are assumed to be sync frames... But in this case that is not true,
        it's just that the file is wrong (e.g. created with a buggy muxer).

        http://orange-opensource.github.io/hasplayer.js/1.2.0/player.html?url=http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest

        The way it works in other browsers is because instead of trusting the
        MP4 stss table, they rely on parsing the h264 frames. We can do that
        too.

        This patch also changes RELEASE_ASSERT() when creating the parsers
        to GLib criticals.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::createOptionalParserForFormat):

2018-10-02  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        No new tests, covered by existing tests.

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        (WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update order of parameters passed
        to base class.

        * Modules/mediastream/MediaDevicesRequest.cpp:
        (WebCore::MediaDevicesRequest::start): ASSERT if document.deviceIDHashSalt is not the same
        as passed salt.

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::getSettings const): Don't need to hash ID.
        (WebCore::MediaStreamTrack::getCapabilities const): Ditto.
        * Modules/mediastream/MediaStreamTrack.h:
        * Modules/mediastream/MediaStreamTrack.idl:

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::UserMediaRequest::allow): Pass hash salt to createMediaStream.

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource): Update order of parameters passed
        to base class.

        * Modules/webaudio/MediaStreamAudioSource.cpp:
        (WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.
        * platform/mediastream/MediaConstraints.h:

        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
        (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Ditto.

        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::RealtimeMediaSource): Calculate hashed ID.
        (WebCore::RealtimeMediaSource::selectSettings): Use m_hashedID.
        (WebCore::RealtimeMediaSource::hashedId const): New.
        (WebCore::RealtimeMediaSource::deviceIDHashSalt const): New.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::createMediaStream): Take hash salt, pass it when creating
        a source.
        (WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
        (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
        * platform/mediastream/RealtimeMediaSourceCenter.h:

        * platform/mediastream/RealtimeMediaSourceFactory.h:
        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::RealtimeVideoSource): Update parameters.
        * platform/mediastream/RealtimeVideoSource.h:

        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
        (WebCore::GStreamerAudioCaptureSource::create): Ditto.
        (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): Ditto.
        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:

        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoCaptureSource::create): Ditto.
        (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): Ditto.
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:

        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
        (WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource): Ditto.
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource): Ditto.
        * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:

        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
        (WebCore::MockRealtimeVideoSource::create): Ditto.
        (WebCore::MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource): Ditto.
        * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::create): Ditto.
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.
        (WebCore::AVVideoCaptureSource::settings): Use hashedId to set device ID.
        (WebCore::AVVideoCaptureSource::capabilities): Ditto.

        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::create): Update parameters.
        (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
        (WebCore::CoreAudioCaptureSource::capabilities): Use hashedId to set device ID.
        (WebCore::CoreAudioCaptureSource::settings): Ditto.
        * platform/mediastream/mac/CoreAudioCaptureSource.h:

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Update parameters.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

        * platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
        * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac): Ditto.

        * platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSource::create): Ditto.
        (WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.

        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::create): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update logging.
        (WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): Ditto.
        (WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Ditto.

        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
        (WebCore::WindowDisplayCaptureSourceMac::create): Update parameters.

        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::create): Ditto.
        (WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
        (WebCore::MockRealtimeAudioSource::settings): Use hashedId to set device ID.
        (WebCore::MockRealtimeAudioSource::capabilities): Ditto.
        * platform/mock/MockRealtimeAudioSource.h:

        * platform/mock/MockRealtimeMediaSourceCenter.cpp:

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::create): Update parameters.
        (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
        (WebCore::MockRealtimeVideoSource::capabilities): Use hashedId to set device ID.
        (WebCore::MockRealtimeVideoSource::settings): Ditto.
        * platform/mock/MockRealtimeVideoSource.h:

2018-10-02  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][playbin3] Stream tag lists leaks
        https://bugs.webkit.org/show_bug.cgi?id=190192

        Reviewed by Xabier Rodriguez-Calvar.

        The gst_stream_get_tags() result is transfer-full, so needs to be adopted to prevent a leak.
        Also check the tags list pointer which might be NULL in some cases.

        * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
        (WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
        * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
        (WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer):

2018-10-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix unused variable in RenderLayer::updateScrollableAreaSet

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateClipRects const): This is a prepare-ChangeLog bug. I don't
        have any changes in this function....

2018-10-02  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Make same thread assert non-release
        https://bugs.webkit.org/show_bug.cgi?id=189924

        Reviewed by Xabier Rodriguez-Calvar.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::handleNewAppsinkSample):

2018-10-01  Ryosuke Niwa  <rniwa@webkit.org>

        Add a new variant of serializePreservingVisualAppearance which takes VisibleSelection
        https://bugs.webkit.org/show_bug.cgi?id=190108

        Reviewed by Wenson Hsieh.

        Added a version of serializePreservingVisualAppearance which takes VisibleSelection so that we can avoid creating
        a range simply to get the first node and the end node of the selection later. This simple change also fixes a bug
        demonstrated in editing/pasteboard/paste-table-003.html.

        Test: editing/pasteboard/paste-table-003.html

        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::selectionInHTMLFormat): Adopt the new variant.
        * editing/gtk/EditorGtk.cpp:
        (WebCore::Editor::writeSelectionToPasteboard): Ditto.
        * editing/markup.cpp:
        (WebCore::serializePreservingVisualAppearance): Added.
        * editing/markup.h:
        * editing/wpe/EditorWPE.cpp:
        (WebCore::Editor::writeSelectionToPasteboard): Ditto.
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::createFromSelection): Ditto.
        * platform/win/PasteboardWin.cpp:
        (WebCore::Pasteboard::writeSelection): Ditto.

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        Don't read from WebCore's bundle for IDNScriptWhiteList
        https://bugs.webkit.org/show_bug.cgi?id=190157

        Reviewed by Dan Bernstein.

        No change in behavior.  This increases performance by not reading from the WebCore bundle,
        and it makes it so that URL-related functionality can be moved to a place without
        a bundle for resources.

        * Resources/IDNScriptWhiteList.txt: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mac/WebCoreNSURLExtras.mm:
        (WebCore::whiteListIDNScripts):
        (WebCore::allCharactersInIDNScriptWhiteList):
        (WebCore::readIDNScriptWhiteListFile): Deleted.

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r236551.

        Fails URL validating too aggressively

        Reverted changeset:

        "URLWithUserTypedString should return nil for URLs deemed to
        be invalid by WebCore::URL"
        https://bugs.webkit.org/show_bug.cgi?id=189979
        https://trac.webkit.org/changeset/236551

2018-10-01  Keith Miller  <keith_miller@apple.com>

        Create a RELEASE_AND_RETURN macro for ExceptionScopes
        https://bugs.webkit.org/show_bug.cgi?id=190163

        Reviewed by Mark Lam.

        The new RELEASE_AND_RETURN does all the work for cases
        where you want to return the result of some expression
        without explicitly checking for an exception. This is
        much like the existing RETURN_IF_EXCEPTION macro.

        No new tests since this is a refactor.

        * bridge/runtime_array.cpp:
        (JSC::RuntimeArray::put):

2018-10-01  Daniel Bates  <dabates@apple.com>

        Attempt to fix the watchOS build after <https://trac.webkit.org/changeset/236678>
        (https://bugs.webkit.org/show_bug.cgi?id=189974)

        Explicitly cast index to unsigned to make the operator[] call unambiguous.

        * platform/ios/KeyEventIOS.mm:
        (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):

2018-10-01  Ryosuke Niwa  <rniwa@webkit.org>

        ASAN failure in ~GCReachableRef()
        https://bugs.webkit.org/show_bug.cgi?id=190113

        Reviewed by Darin Adler.

        The bug was caused by ~GCReachableRef accessing Ref after it had been poisoned for ASAN
        in Ref::leakRef via Ref(Ref&& other). Fixed the bug by using RefPtr instead since that's
        the simplest solution here although we could unpoison Ref temporarily as done in ~Ref.

        * dom/GCReachableRef.h:
        (WebCore::GCReachableRef::GCReachableRef):
        (WebCore::GCReachableRef::~GCReachableRef):
        (WebCore::GCReachableRef::operator-> const):
        (WebCore::GCReachableRef::get const):
        (WebCore::GCReachableRef::operator T& const):
        (WebCore::GCReachableRef::operator! const):
        (WebCore::GCReachableRef::isNull const): Deleted.

2018-10-01  Sihui Liu  <sihui_liu@apple.com>

        Remove StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=189975

        Reviewed by Geoffrey Garen.

        Clean up code. No behavior change.

        * English.lproj/Localizable.strings:

2018-10-01  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Set a minimum sample duration
        https://bugs.webkit.org/show_bug.cgi?id=190125

        Reviewed by Xabier Rodriguez-Calvar.

        The last sample of the audio track in the asset used in this test
        player has a tiny duration (100 ns):

        http://orange-opensource.github.io/hasplayer.js/1.2.0/player.html?url=http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest

        So small, we were truncating it to zero. We're not supposed to have
        frames with zero duration. Instead, lets set a minimum frame duration
        for those fringe cases.

        * platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
        (WebCore::MediaSampleGStreamer::MediaSampleGStreamer):

2018-10-01  Daniel Bates  <dabates@apple.com>

        [iOS] Special keys are misidentified in DOM keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=189974

        Reviewed by Wenson Hsieh.

        This patch fixes two issues:
            1. Special keyboard keys would be misidentified in dispatched DOM keyboard events.
            2. DOM keypress events may not be dispatched for some special keys.

        UIKit uses special input strings to identify the Page Up, Page Down, Escape, Up Arrow, Down Arrow,
        Left Arrow, and Right Arrow keys. It also uses ASCII control characters to represent some other
        special keys, including Num Lock / Clear, Home, End, Forward Delete, and F1, ..., F24. We need
        to explicitly handle these special keyboard keys in order to be able to identify the key that
        was pressed as well as to correctly disambiguate a key down to know whether to dispatch a DOM
        keypress event for the key.

        Unlike UIKit, AppKit reserves Unicode Private Use Area (PUA) code points in 0xF700–0xF8FF to
        represent special keyboard keys. This makes it straightforward to disambiguate such keys using
        the input string of the keyboard event alone. To simplify the implementation for iOS
        we normalize the input string be AppKit compatible. See the explaination for WebCore::windowsKeyCodeForCharCode()
        below for more details on why this is done.

        Tests: fast/events/ios/keydown-keyup-arrow-keys-in-non-editable-element.html
               fast/events/ios/keypress-keys-in-non-editable-element.html

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        Do not use unified source build strategy when building WebEvent.mm as it makes
        use of SoftLinking macros that are incompatible with this strategy.

        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForCharCode): Recognize some special AppKit special char codes.
        These special char codes are generated by WebKit. WebKit uses the same special char codes
        as AppKit as a convenience instead of defining our own constants for the same purpose.
        Encoding the special UIKit input strings (e.g. up arrow) as distinct char codes allows us
        to use integer arithmetic and switch blocks to map characters to Windows virtual key
        codes as opposed to special cased branches to perform pointer or string comparisions.
        The latter would be necessary in Modern WebKit in order for key down events to be properly
        disambiguated to dispatch a DOM keypress event because pointers are not perserved, though
        what they point to is, when sending the WebEvent from UIProcess to the WebProcess and
        vice versa.
        (WebCore::isFunctionKey): Convenience function that determines whether the specified char
        code corresponds to a function key on the keyboard. The term "function key" is taken from
        AppKit parlance to describe a special keyboard key. These keys include F1, F2, ..., F24,
        and cursor keys among other special keyboard keys.
        (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent): Write in terms of isFunctionKey().
        * platform/ios/PlatformEventFactoryIOS.h:
        * platform/ios/PlatformEventFactoryIOS.mm:
        (WebCore::keyIdentifierForKeyEvent): Remove code to handle UIKit special input strings as
        we now map such special input strings to char codes and hence can use the default code path.
        (WebCore::keyForKeyEvent): Ditto.
        (WebCore::codeForKeyEvent): Remove code to compute the Window virtual key code corresponding
        to a UIKit special key command now that we map such special input strings to char codes and
        subsequently map the char codes to the Windows virtual key code (see -[WebEvent initWithKeyEventType:...]
        constructors). So, we can now use WebEvent.keyCode directly to compute the DOM UIEvents code
        for the event.
        (WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder): Remove code to fix up
        WebEvent.keyCode to account for UIKit special input strings now that we map such special key
        commands to char codes and subsequently map the char codes to the Windows virtual key code (see -[WebEvent initWithKeyEventType:...]
        constructors). So, we can now take WebEvent.keyCode verbatim to be the Window virtual key code.
        (WebCore::convertSpecialKeyToCharCode): Deleted.
        (WebCore::keyCodeForEvent): Deleted.
        * platform/ios/WebEvent.mm:
        (normalizedStringWithAppKitCompatibilityMapping): Added; converts a UIKit character string
        to the corresponding AppKit-compatible one (if not already compatible). See the explaination
        for WebCore::windowsKeyCodeForCharCode() above for more details on why this is done.

        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
        Normalize the character strings to be AppKit compatible.

2018-10-01  Simon Fraser  <simon.fraser@apple.com>

        Optimize RenderStyle::diff() and clean up the code
        https://bugs.webkit.org/show_bug.cgi?id=190104

        Reviewed by Dan Bernstein.

        RenderStyle::changeRequiresLayout() and related should only check values on 
        m_rareNonInheritedData and m_rareInheritedData after checking for pointer equality.
        To reduce the chances of future changes regressing this, move code comparing values
        on StyleRare[Non]InheritedData into dedication functions.
        
        In addition, the transform comparison double-compared the transformOperations,
        because m_rareNonInheritedData->transform != other.m_rareNonInheritedData->transform
        is a deep comparison, and it was followed by *m_rareNonInheritedData->transform != *other.m_rareNonInheritedData->transform.
        Change the first to be a pointer comparison.

        * rendering/style/RenderStyle.cpp:
        (WebCore::rareNonInheritedDataChangeRequiresLayout):
        (WebCore::rareInheritedDataChangeRequiresLayout):
        (WebCore::RenderStyle::changeRequiresLayout const):
        (WebCore::rareNonInheritedDataChangeRequiresLayerRepaint):
        (WebCore::RenderStyle::changeRequiresLayerRepaint const):
        (WebCore::rareNonInheritedDataChangeRequiresRepaint):
        (WebCore::rareInheritedDataChangeRequiresRepaint):
        (WebCore::RenderStyle::changeRequiresRepaint const):

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        URL should not use TextEncoding internally
        https://bugs.webkit.org/show_bug.cgi?id=190111

        Reviewed by Andy Estes.

        That dependency makes it impossible to move or use elsewhere.
        Using TextEncoding was overkill because we know the credentials are UTF-8 percent-encoded in a parsed URL.
        No change in behavior as verified by new API tests.

        * page/SecurityOrigin.cpp:
        * page/csp/ContentSecurityPolicySourceList.cpp:
        * platform/URL.cpp:
        (WebCore::decodeEscapeSequencesFromParsedURL):
        (WebCore::URL::user const):
        (WebCore::URL::pass const):
        (WebCore::URL::fileSystemPath const):
        (WebCore::decodeURLEscapeSequences): Deleted.
        * platform/URL.h:
        * platform/network/DataURLDecoder.cpp:
        * platform/text/TextEncoding.cpp:
        (WebCore::decodeURLEscapeSequences):
        * platform/text/TextEncoding.h:

2018-10-01  Simon Pieters  <zcorpan@gmail.com>

        <form> in quirks mode should have margin-block-end: 1em
        https://bugs.webkit.org/show_bug.cgi?id=157788

        Reviewed by Simon Fraser.

        Change the default style for forms to take writing-mode into account
        in quirks mode. Matches the behavior of Gecko and Edge and the HTML
        standard.

        Spec: https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3

        Test: imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html

        * css/quirks.css:
        (form):

2018-10-01  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        No new tests because no behavior change.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
        (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
        (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::requestUpdateInlineRect):
        (VideoFullscreenControllerContext::requestVideoContentLayer):
        (VideoFullscreenControllerContext::returnVideoContentLayer):
        (VideoFullscreenControllerContext::didSetupFullscreen):
        (VideoFullscreenControllerContext::didExitFullscreen):

2018-10-01  Antoine Quint  <graouts@apple.com>

        [Web Animations] Ensure renderers with accelerated animations have layers
        https://bugs.webkit.org/show_bug.cgi?id=189990

        Reviewed by Simon Fraser.

        In r236501 we added code that would make a RenderBox and a RenderInline query the document timeline for whether a given element has
        accelerated animations running on it. Since the calls to requiresLayer() are in a hot path, we instead keep a list of elements with
        exclusively accelerated animations running.

        No new tests, this is already covered by webanimations/accelerated-animation-with-delay.html and webanimations/opacity-animation-yields-compositing-span.html
        which respectively check that we can apply an accelerated animation to a non-positioned block and an inline element.

        * animation/AnimationTimeline.h:
        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::detachFromDocument):
        (WebCore::DocumentTimeline::animationWasAddedToElement):
        (WebCore::DocumentTimeline::animationWasRemovedFromElement):
        (WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
        (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Iterate over an element's animations to determine
        whether all of its animations are running accelerated, then update the HashSet containing elements running accelerated animations to remove or
        add this element.
        (WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const): Make a simple contains() call on the HashSet containing elements
        running accelerated animations.
        * animation/DocumentTimeline.h:
        * animation/KeyframeEffectReadOnly.cpp:
        (WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState):
        (WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions):
        * rendering/RenderBoxModelObject.h:

2018-10-01  Alicia Boya García  <aboya@igalia.com>

        [GStreamer] Fix abort in gst_sample_get_info()
        https://bugs.webkit.org/show_bug.cgi?id=190135

        Reviewed by Philippe Normand.

        A flush can occur before any frame has finished decoding -- especially
        in tests, where actions on the player often occur in quick succession.

        Therefore, the code must not assume by the time a flush occurs any
        frame has reached the sink. This patch fixes a case when such wrong
        assumption was causing gst_sample_get_info() to abort (crashing
        WebKit).

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
        (WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink):

2018-10-01  Olivier Blin  <olivier.blin@softathome.com>

        [WPE] fix buffer over-read in RenderThemeWPE::mediaControlsStyleSheet()
        https://bugs.webkit.org/show_bug.cgi?id=190139

        Reviewed by Michael Catanzaro.

        Like done upstream for EFL in r210213
        https://bugs.webkit.org/show_bug.cgi?id=166622

        This has been detected by a charactersAreAllASCII() assert failure.

        This is because ASCIILiteral() is wrongly used in mediaControlsStyleSheet().
        mediaControlsBaseUserAgentStyleSheet is a char array, not a null-terminated string.
        It is thus incorrect to use StringImpl::createFromLiteral() that calls
        strlen() to get the string length.

        The String::ConstructFromLiteral constructor can not be used, since it
        skips the last character.

        * platform/wpe/RenderThemeWPE.cpp:
        (WebCore::RenderThemeWPE::mediaControlsStyleSheet):
        Explicitely pass the size to the String constructor.

2018-10-01  Rob Buis  <rbuis@igalia.com>

        Align XMLHttpRequest's overrideMimeType() with the standard
        https://bugs.webkit.org/show_bug.cgi?id=169276

        Reviewed by Chris Dumez.

        Implement the overrideMimeType() as specified in that standard, i.e.
        add a check that the passed mime type is valid and if not fallback
        to application/octet-stream.

        In order for this patch to have any effect, I went ahead and
        made an improvement to the ContentType parsing, parseContentType now
        will reject mime types that do not match the type / subtype format, I
        believe this is required by both RFC2045 and mimesniff specs.

        This behavior matches Chrome and Firefox.

        Test: web-platform-tests/xhr/overridemimetype-invalid-mime-type.htm

        * platform/network/ParsedContentType.cpp:
        (WebCore::parseContentType):
        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::overrideMimeType):


2018-10-01  Chris Dumez  <cdumez@apple.com>

        Make crossOriginObject.then undefined for promises
        https://bugs.webkit.org/show_bug.cgi?id=190094

        Reviewed by Darin Adler.

        Make crossOriginObject.then undefined for promises. This allows promises to work better with cross-origin WindowProxy
        and Location objects.

        Specification:
        - https://github.com/whatwg/html/pull/3242
        - https://github.com/whatwg/dom/issues/536

        This aligns our behavior with Blink and Gecko.

        No new tests, rebaselined existing test.

        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
        (WebCore::addCrossOriginWindowOwnPropertyNames):
        * bindings/js/JSLocationCustom.cpp:
        (WebCore::getOwnPropertySlotCommon):
        (WebCore::addCrossOriginLocationOwnPropertyNames):

2018-10-01  Xan Lopez  <xan@igalia.com>

        [SOUP] Fix the build for libsoup > 2.61.90
        https://bugs.webkit.org/show_bug.cgi?id=190126

        Reviewed by Michael Catanzaro.

        * platform/network/soup/SocketStreamHandleImplSoup.cpp:

2018-10-01  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Reset running time in PlaybackPipeline::flush()
        https://bugs.webkit.org/show_bug.cgi?id=190076

        Reviewed by Philippe Normand.

        Test: media/media-source/media-source-seek-redundant-append.html

        PlaybackPipeline::flush() is called when already enqueued frames are
        appended again. This may be caused by a quality change or just a
        redundant append. Either way, the pipeline has to be flushed and
        playback begin again, but without changing the player position by
        much.

        There are two kinds of time to consider here: stream time (i.e. the
        time of a frame as written in the file, e.g. a frame may have stream
        time 0:01:00), and running time (i.e. how much time since playback
        started should pass before the frame should be played, e.g. if we
        started playing at 0:00:59 that same frame would have a running time
        of just 1 second).

        Notice how running time depends on where and when playback starts.
        Running time can also be optionally resetted after a flush. (This is
        indeed done currently by most demuxers after a seek.)

        Instead of resetting running time, PlaybackPipeline used to modify the
        first GstSegment emitted after the flush. A GstSegment declares the
        mapping between stream time and running time for the following frames.
        There, PlaybackPipeline used to set `base` (the running time at which
        the segment starts) to the position reported by a position query
        (which is stream time).

        This, of course, only worked when playback (or the last seek) started
        at stream time 0:00:00, since that's the only case where running time
        equals stream time. In other cases delays as long as the difference
        between these timelines would appear. This is demonstrated in the
        attached test, where seeks and appends are made in such an order that
        the difference is more than 5 minutes, making the playback stall for
        >5 minutes before playing 1 second of audio.

        This patch fixes the problem by resetting running time with the flush
        and not modifying GstSegment.base anymore (it will be left as zero,
        which is now correct since the running time has been reset).

        * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
        (WebCore::PlaybackPipeline::flush):
        (WebCore::segmentFixerProbe): Deleted.

2018-09-30  Ryosuke Niwa  <rniwa@webkit.org>

        Use Position instead of Range in createMarkupInternal
        https://bugs.webkit.org/show_bug.cgi?id=190107

        Reviewed by Darin Adler.

        Use two Position's indicating start and end instead of Range in createMarkupInternal and StylizedMarkupAccumulator
        in order to support copy & paste across shadow boundaries in the bug 157443. This patch also removes the use of
        Range in MarkupAccumulator since all uses of range is via StylizedMarkupAccumulator.

        Also renamed createMarkupInternal to serializePreservingVisualAppearanceInternal to match the rename in r236612.

        * dom/Position.cpp:
        (WebCore::Position::firstNode const):  Added.
        * dom/Position.h:
        * editing/MarkupAccumulator.cpp:
        (WebCore::MarkupAccumulator::MarkupAccumulator): No longer takes Range.
        (WebCore::MarkupAccumulator::appendText): Removed the code to truncate string at the boundary points of the range.
        * editing/MarkupAccumulator.h:
        (WebCore::MarkupAccumulator): Made this class non-copyable.
        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator): Now takes and stores two positions.

        (WebCore::StyledMarkupAccumulator::appendText): Use textContentRespectingRange in the case annotation is disabled
        instead of calling to MarkupAccumulator::appendText, which no longer respects boundary offsets.

        (WebCore::StyledMarkupAccumulator::renderedTextRespectingRange): Renamed from renderedText. Updated to respect
        boundary offsets defined by m_start and m_end Positions instead of m_range Range.

        (WebCore::StyledMarkupAccumulator::textContentRespectingRange): Renamed from stringValueForRange. Ditto.

        (WebCore::StyledMarkupAccumulator::serializeNodes): Now computes startNode and pastEnd nodes from start and end
        Positions. Note that the end position is always the next node in the tree order  for a character node
        and computeNodeAfterPosition returns nullptr for a character data.

        (WebCore::highestAncestorToWrapMarkup): Now takes two positions instead of a range.

        (WebCore::serializePreservingVisualAppearanceInternal): Renamed from createMarkupInternal. Removed the obsolete
        comments which were added for DOMRange in WebKitLegacy.

        (WebCore::serializePreservingVisualAppearance):

        (WebCore::sanitizedMarkupForFragmentInDocument): Create positions instead of a range to pass to
        serializePreservingVisualAppearanceInternal.

        (WebCore::serializeFragment):

        * editing/markup.h:
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::SerializerMarkupAccumulator): Removed the unnecessary WebCore namespace qualifier.

2018-09-30  Walker Henderson  <wjahenderson@gmail.com>

        AudioNode.connect should return passed destination node
        https://bugs.webkit.org/show_bug.cgi?id=188834

        Reviewed by Eric Carlson.

        No new tests, rebaselined existing test.

        * Modules/webaudio/AudioBasicInspectorNode.cpp:
        (WebCore::AudioBasicInspectorNode::connect): Deleted.
        * Modules/webaudio/AudioBasicInspectorNode.h:
        * Modules/webaudio/AudioNode.cpp:
        * Modules/webaudio/AudioNode.h:
        * Modules/webaudio/AudioNode.idl:

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up RealtimeMediaSource settings change handling
        https://bugs.webkit.org/show_bug.cgi?id=189998
        <rdar://problem/44797884>

        Reviewed by Youenn Fablet.

        No new tests, updated webrtc/video-disabled-black.html.

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        (WebCore::CanvasCaptureMediaStreamTrack::Source::Source):
        (WebCore::CanvasCaptureMediaStreamTrack::Source::settings):
        (WebCore::CanvasCaptureMediaStreamTrack::Source::settingsDidChange):
        (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
        (WebCore::RealtimeIncomingVideoSource::settings):
        (WebCore::RealtimeIncomingVideoSource::settingsDidChange):
        * platform/mediastream/RealtimeIncomingVideoSource.h:
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::settingsDidChange):
        (WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
        (WebCore::RealtimeMediaSource::setSize):
        (WebCore::RealtimeMediaSource::setFrameRate):
        (WebCore::RealtimeMediaSource::setAspectRatio):
        (WebCore::RealtimeMediaSource::setFacingMode):
        (WebCore::RealtimeMediaSource::setVolume):
        (WebCore::RealtimeMediaSource::setSampleRate):
        (WebCore::RealtimeMediaSource::setSampleSize):
        (WebCore::RealtimeMediaSource::setEchoCancellation):
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
        (WebCore::GStreamerAudioCaptureSource::settingsDidChange):
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::GStreamerVideoCaptureSource::settingsDidChange):
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::settingsDidChange):
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::settingsDidChange):
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):
        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::settingsDidChange):
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::settingsDidChange):

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use display-specific capture factories
        https://bugs.webkit.org/show_bug.cgi?id=190043
        <rdar://problem/44834412>

        Reviewed by Youenn Fablet.

        No new tests, no change in functionality.

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::AudioCaptureFactory::~AudioCaptureFactory): Deleted.
        (WebCore::RealtimeMediaSource::VideoCaptureFactory::~VideoCaptureFactory): Deleted.
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::createMediaStream):
        (WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices):
        * platform/mediastream/RealtimeMediaSourceCenter.h:
        (WebCore::RealtimeMediaSourceCenter::setAudioFactory):
        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
        * platform/mediastream/RealtimeMediaSourceFactory.cpp: Added.
        (WebCore::SingleSourceFactory::setActiveSource):
        (WebCore::SingleSourceFactory::unsetActiveSource):
        * platform/mediastream/RealtimeMediaSourceFactory.h: Added.
        (WebCore::SingleSourceFactory::activeSource):
        (WebCore::VideoCaptureFactory::setVideoCapturePageState):
        (WebCore::DisplayCaptureFactory::setDisplayCapturePageState):
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
        (WebCore::libWebRTCVideoCaptureSourceFactory):
        (WebCore::libWebRTCDisplayCaptureSourceFactory):
        (WebCore::GStreamerVideoCaptureSource::factory):
        (WebCore::GStreamerVideoCaptureSource::displayFactory):
        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::audioCaptureSourceFactory):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::audioFactory):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::videoFactory):
        (WebCore::RealtimeMediaSourceCenterLibWebRTC::displayCaptureFactory):
        * platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::factory):
        * platform/mediastream/mac/CoreAudioCaptureSource.h:
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
        (WebCore::RealtimeMediaSourceCenterMac::videoCaptureSourceFactory):
        (WebCore::RealtimeMediaSourceCenterMac::displayCaptureSourceFactory):
        (WebCore::RealtimeMediaSourceCenterMac::audioCaptureSourceFactory):
        (WebCore::RealtimeMediaSourceCenterMac::audioFactory):
        (WebCore::RealtimeMediaSourceCenterMac::videoFactory):
        (WebCore::RealtimeMediaSourceCenterMac::displayCaptureFactory):
        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
        (WebCore::MockRealtimeAudioSource::startProducingData):
        (): Deleted.
        (WebCore::mockAudioCaptureSourceFactory): Deleted.
        (WebCore::MockRealtimeAudioSource::factory): Deleted.
        * platform/mock/MockRealtimeAudioSource.h:
        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::MockRealtimeVideoSourceFactory::setVideoCapturePageState):
        (WebCore::MockRealtimeMediaSourceCenter::audioFactory):
        (WebCore::MockRealtimeMediaSourceCenter::videoFactory):
        (WebCore::MockRealtimeMediaSourceCenter::displayCaptureFactory):
        * platform/mock/MockRealtimeMediaSourceCenter.h:
        * platform/mock/MockRealtimeVideoSource.cpp:
        (): Deleted.
        (WebCore::MockRealtimeVideoSourceFactory::setVideoCapturePageState): Deleted.
        (WebCore::mockVideoCaptureSourceFactory): Deleted.
        (WebCore::MockRealtimeVideoSource::factory): Deleted.
        * platform/mock/MockRealtimeVideoSource.h:

2018-09-29  Oriol Brufau  <obrufau@igalia.com>

        [css-grid] Properly align items next to collapsed tracks with gutters
        https://bugs.webkit.org/show_bug.cgi?id=190089

        Reviewed by Manuel Rego Casasnovas.

        gridAreaPositionForInFlowChild could return a wrong end position for
        grid items adjacent to a collapsed track, because it didn't take into
        account that gutters collapse in that case. Therefore, "center" or
        "end" alignments displayed the item at the wrong position.

        Test: imported/w3c/web-platform-tests/css/css-grid/alignment/grid-gutters-013.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::gridAreaPositionForInFlowChild const):

2018-09-29  Alicia Boya García  <aboya@igalia.com>

        [GStreamer][MSE] Use GObject for GST_TRACE_OBJECT
        https://bugs.webkit.org/show_bug.cgi?id=190045

        Reviewed by Philippe Normand.

        Passing a non-GObject object to GST_TRACE_OBJECT() can be
        theoretically misunderstood by the GStreamer logging function, so this
        patch avoids that.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
        (WebCore::AppendPipeline::handleEndOfAppend):
        (WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
        (WebCore::AppendPipeline::pushNewBuffer):

2018-09-28  Zamiul Haque  <zhaque@apple.com>

        Angled gradient backgrounds in body render vertically when body height is 0
        https://bugs.webkit.org/show_bug.cgi?id=177232
        <rdar://problem/34548230>.

        Reviewed by Tim Horton.

        Specifically, gradients displayed at an angle (ie. 45 degrees) are rendered
        as if they are vertical when the body tag containing the gradient
        has a height of 0. Other browsers do not render under these circumstances,
        so WebKit was modified to follow in suit. The problem was due to layout sizes for
        fill tiles being calculated with a minimum height of 1px. A simple change of the
        minimum height and width to 0px was enough to bring about the desired behavior.

        Tests: angled-background-repeating-gradient-rendering-vertical.html

        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::calculateFillTileSize const):

2018-09-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        No DOM API to instantiate an attachment for an img element
        https://bugs.webkit.org/show_bug.cgi?id=189934
        <rdar://problem/44743222>

        Reviewed by Ryosuke Niwa.

        Adds support for HTMLAttachmentElement.getAttachmentIdentifier, a function that internal WebKit clients can use
        to ensure that an image element is backed by a unique _WKAttachment. See below for more details.

        Tests:  WKAttachmentTests.AddAttachmentToConnectedImageElement
                WKAttachmentTests.ChangeFileWrapperForPastedImage
                WKAttachmentTests.ConnectImageWithAttachmentToDocument

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

        Add a new hook to register an empty _WKAttachment in the UI process with a given identifier. Used when creating
        a new empty attachment to back an image element.

        * dom/Document.h:
        * editing/Editor.cpp:
        (WebCore::Editor::registerAttachmentIdentifier):
        (WebCore::Editor::notifyClientOfAttachmentUpdates):
        * editing/Editor.h:
        * html/HTMLAttachmentElement.cpp:
        (WebCore::HTMLAttachmentElement::getAttachmentIdentifier):

        Creates an attachment element to back the image element, if an attachment does not already exist, and returns
        the unique identifier. This also causes an empty corresponding _WKAttachment to be created in the client, whose
        file wrapper determines the contents of the image.

        (WebCore::HTMLAttachmentElement::ensureUniqueIdentifier):
        (WebCore::HTMLAttachmentElement::hasEnclosingImage const):
        (WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):

        Add a helper that updates the source of the enclosing image element given a content type and image data, by
        creating a new blob and blob URL.

        * html/HTMLAttachmentElement.h:
        * html/HTMLAttachmentElement.idl:
        * html/HTMLImageElement.idl:

        Rename webkitAttachmentIdentifier to just attachmentIdentifier.

        * page/EditorClient.h:
        (WebCore::EditorClient::registerAttachmentIdentifier):
        (WebCore::EditorClient::didInsertAttachmentWithIdentifier):

2018-09-28  Chris Dumez  <cdumez@apple.com>

        The return value of an OnBeforeUnloadEventHandler should always be coerced into a DOMString
        https://bugs.webkit.org/show_bug.cgi?id=190090

        Reviewed by Ryosuke Niwa.

        The return value of an OnBeforeUnloadEventHandler should always be coerced into a DOMString:
        - https://html.spec.whatwg.org/#onbeforeunloadeventhandler
        - https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (Step 5)

        In particular, this means that returning false in an OnBeforeUnloadEventHandler should NOT
        cancel the event when the event is a CustomEvent (and not a BeforeUnloadEvent). This is
        because the return value cannot be false at:
        - https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (Step 5. Otherwise case).

        No new tests, rebaselined existing test.

        * bindings/js/JSEventListener.cpp:
        (WebCore::JSEventListener::handleEvent):

2018-09-28  Simon Fraser  <simon.fraser@apple.com>

        RenderLayer::removeOnlyThisLayer() should not call updateLayerPositions()
        https://bugs.webkit.org/show_bug.cgi?id=190093

        Reviewed by Dean Jackson and Zalan Bujtas.
        
        It's wrong for RenderLayer::removeOnlyThisLayer() to call updateLayerPositions(),
        because this is called at style update time, and layout will be stale.
        
        It was added (see webkit.org/b/25252) so that opacity changes, which can destroy layers, correctly update
        descendants. However, RenderStyle::changeRequiresLayout() checks for opacity <=> no opacity
        changes and triggers layout accordingly, which will result in a full post-layout
        updateLayerPositions().
        
        This also revealed that changes to the "isolate" property fail to trigger any kind of style recalc or layout;
        we need it to trigger layout (for now) because it affects z-order.

        Covered by existing tests.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::removeOnlyThisLayer):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::changeRequiresLayout const):

2018-09-28  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Polish WebAuthN auto-test environment
        https://bugs.webkit.org/show_bug.cgi?id=189283
        <rdar://problem/44117828>

        Reviewed by Chris Dumez.

        This patch removes the old mocking mechanism.

        Tests: http/wpt/webauthn/public-key-credential-create-with-invalid-parameters.https.html
               http/wpt/webauthn/public-key-credential-get-with-invalid-parameters.https.html
               http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html

        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:
        * testing/Internals.cpp:
        (WebCore::Internals::Internals):
        (WebCore::Internals::mockAuthenticatorCoordinator const): Deleted.
        * testing/Internals.h:
        * testing/Internals.idl:
        * testing/MockAuthenticatorCoordinator.cpp: Removed.
        * testing/MockAuthenticatorCoordinator.h: Removed.
        * testing/MockAuthenticatorCoordinator.idl: Removed.

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Two sources of raw pointers in the Fullscreen code:
        - Model classes (PlaybackSessionModel and VideoFullscreenModel) aren't ref-able, so
          they are passed around as raw references.
        - Observer classes (PlaybackSessionModelClient and VideoFullscreenModelClient, and
          VideoFullscreenChangeObserver) are also passed around as raw pointers, but shouldn't
          be ref-able.

        Make Model classes ref-able by adding ref() and deref() which call virtual refModel and
        derefModel methods, overridden by implementing subclasses. Make every concrete observer
        inherit from CanMakeWeakPtr, and every registration method take WeakPtr wrappers around
        the client interface.

        Since every Interface class now holds a strong reference to its Model classes, and each
        Model class holds a weak reference to all its clients, no explicit invalidate() method
        is necessary.

        Notes:

        - Since the weak pointer methods need to be able to downcast to the abstract base class,
          observers need to inherit publically (rather than privately) from those base classes.
        - Media element Models should compose EventListener rather than inheriting from it, since
          EventListener has its own RefCount.
        - WeakPtrs can't be held in HashSets (because they change value, and therefore hash, when
          their underlying object is destroyed), so clients should be stored in a Vector instead.
        - Interfaces should be given all required Refs at creation time, so that they can store
          those parameters as Refs instead of RefPtrs.

        * platform/cocoa/PlaybackSessionInterface.h:
        (WebCore::PlaybackSessionInterface::~PlaybackSessionInterface): Deleted.
        * platform/cocoa/PlaybackSessionModel.h:
        (WebCore::PlaybackSessionModel::ref):
        (WebCore::PlaybackSessionModel::deref):
        (WebCore::PlaybackSessionModel::~PlaybackSessionModel): Deleted.
        * platform/cocoa/PlaybackSessionModelMediaElement.h:
        * platform/cocoa/PlaybackSessionModelMediaElement.mm:
        (WebCore::PlaybackSessionModelMediaElement::PlaybackSessionModelMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::~PlaybackSessionModelMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::setMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::updateForEventName):
        (WebCore::PlaybackSessionModelMediaElement::addClient):
        (WebCore::PlaybackSessionModelMediaElement::removeClient):
        (WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
        (WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionIndices):
        (WebCore::PlaybackSessionModelMediaElement::handleEvent): Deleted.
        * platform/cocoa/VideoFullscreenChangeObserver.h:
        (WebCore::VideoFullscreenChangeObserver::~VideoFullscreenChangeObserver): Deleted.
        * platform/cocoa/VideoFullscreenModel.h:
        (WebCore::VideoFullscreenModel::ref):
        (WebCore::VideoFullscreenModel::deref):
        (WebCore::VideoFullscreenModel::~VideoFullscreenModel): Deleted.
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
        (VideoFullscreenModelVideoElement::setVideoElement):
        (VideoFullscreenModelVideoElement::addClient):
        (VideoFullscreenModelVideoElement::removeClient):
        (VideoFullscreenModelVideoElement::setHasVideo):
        (VideoFullscreenModelVideoElement::setVideoDimensions):
        (VideoFullscreenModelVideoElement::willEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::didEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::willExitPictureInPicture):
        (VideoFullscreenModelVideoElement::didExitPictureInPicture):
        (VideoFullscreenModelVideoElement::handleEvent): Deleted.
        * platform/ios/PlaybackSessionInterfaceAVKit.h:
        (WebCore::PlaybackSessionInterfaceAVKit::create):
        (WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
        (): Deleted.
        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
        (WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
        (WebCore::PlaybackSessionInterfaceAVKit::invalidate): Deleted.
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer layoutSublayers]):
        (-[WebAVPlayerLayer resolveBounds]):
        (-[WebAVPlayerLayer setVideoGravity:]):
        (VideoFullscreenInterfaceAVKit::create):
        (VideoFullscreenInterfaceAVKit::VideoFullscreenInterfaceAVKit):
        (VideoFullscreenInterfaceAVKit::~VideoFullscreenInterfaceAVKit):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
        (VideoFullscreenInterfaceAVKit::applicationDidBecomeActive):
        (VideoFullscreenInterfaceAVKit::setupFullscreen):
        (VideoFullscreenInterfaceAVKit::presentingViewController):
        (VideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
        (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
        (VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
        (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
        (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
        (VideoFullscreenInterfaceAVKit::doSetup):
        (VideoFullscreenInterfaceAVKit::setMode):
        (VideoFullscreenInterfaceAVKit::clearMode):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel): Deleted.
        (VideoFullscreenInterfaceAVKit::invalidate): Deleted.
        * platform/ios/WebAVPlayerController.h:
        * platform/ios/WebAVPlayerController.mm:
        (-[WebAVPlayerController delegate]):
        (-[WebAVPlayerController playbackSessionInterface]):
        (-[WebAVPlayerController setPlaybackSessionInterface:]):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::didCleanupFullscreen):
        (VideoFullscreenControllerContext::addClient):
        (VideoFullscreenControllerContext::removeClient):
        (VideoFullscreenControllerContext::willEnterPictureInPicture):
        (VideoFullscreenControllerContext::didEnterPictureInPicture):
        (VideoFullscreenControllerContext::failedToEnterPictureInPicture):
        (VideoFullscreenControllerContext::willExitPictureInPicture):
        (VideoFullscreenControllerContext::didExitPictureInPicture):
        (VideoFullscreenControllerContext::setUpFullscreen):
        * platform/mac/PlaybackSessionInterfaceMac.h:
        * platform/mac/PlaybackSessionInterfaceMac.mm:
        (WebCore::PlaybackSessionInterfaceMac::create):
        (WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
        (WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
        (WebCore::PlaybackSessionInterfaceMac::rateChanged):
        (WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::endScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::setPlayBackControlsManager):
        (WebCore::PlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):
        (WebCore::PlaybackSessionInterfaceMac::~PlaybackSessionInterfaceMac): Deleted.
        (WebCore::PlaybackSessionInterfaceMac::invalidate): Deleted.
        * platform/mac/VideoFullscreenInterfaceMac.h:
        (WebCore::VideoFullscreenInterfaceMac::create):
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
        (WebCore::VideoFullscreenInterfaceMac::playbackSessionModel const):
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
        (-[WebVideoFullscreenInterfaceMacObjC boundsDidChangeForVideoViewContainer:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionPlay:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionPause:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionStop:]):
        (WebCore::VideoFullscreenInterfaceMac::VideoFullscreenInterfaceMac):
        (WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
        (WebCore::VideoFullscreenInterfaceMac::setMode):
        (WebCore::VideoFullscreenInterfaceMac::clearMode):
        (WebCore::VideoFullscreenInterfaceMac::invalidate):
        (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitPiP):
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel): Deleted.
        * platform/mac/WebPlaybackControlsManager.mm:
        (-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
        (-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
        (-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):
        (-[WebPlaybackControlsManager togglePlayback]):
        (-[WebPlaybackControlsManager setPlaying:]):
        (-[WebPlaybackControlsManager isPlaying]):
        (-[WebPlaybackControlsManager togglePictureInPicture]):

2018-09-28  Chris Dumez  <cdumez@apple.com>

        Drop support for cross-origin-window-policy header
        https://bugs.webkit.org/show_bug.cgi?id=190081

        Reviewed by Ryosuke Niwa.

        Drop support for cross-origin-window-policy header as this was never enabled and its design has
        some issues we have not resolved. An alternative is being worked on but will be substantially
        different so there is not much value in keeping this code around.

        * bindings/js/JSDOMBindingSecurity.cpp:
        * bindings/js/JSDOMBindingSecurity.h:
        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
        (WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
        (WebCore::addCrossOriginWindowPropertyNames):
        (WebCore::addScopedChildrenIndexes):
        (WebCore::addCrossOriginWindowOwnPropertyNames):
        (WebCore::JSDOMWindow::getOwnPropertyNames):
        * bindings/js/JSDOMWindowCustom.h:
        * bindings/js/JSRemoteDOMWindowCustom.cpp:
        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateAttributeGetterBodyDefinition):
        (GenerateAttributeSetterBodyDefinition):
        (GenerateOperationBodyDefinition):
        * bindings/scripts/IDLAttributes.json:
        * dom/Document.cpp:
        (WebCore::Document::canNavigate):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::didBeginDocument):
        * page/AbstractDOMWindow.cpp:
        (WebCore::AbstractDOMWindow::AbstractDOMWindow):
        * page/AbstractDOMWindow.h:
        * page/DOMWindow.idl:
        * page/Settings.yaml:
        * platform/network/HTTPParsers.cpp:
        * platform/network/HTTPParsers.h:

2018-09-28  Daniel Bates  <dabates@apple.com>

        [iOS] Allow programmatic focus when hardware keyboard is attached
        https://bugs.webkit.org/show_bug.cgi?id=190017
        <rdar://problem/42270463>

        Reviewed by Wenson Hsieh.

        Add support for checking if the embedding client is WebKitTestRunner and export isDumpRenderTree()
        so that we can make use of it from WebKit. We will make use of these functions to keep the current
        behavior of disallowing programmatic focus when running tests in these apps. This is needed to
        keep testing deterministic. Otherwise, test results would be dependent on whether a hardware
        keyboard is attached. When running tests in Simulator.app the hardware keyboard may also not be
        connected (i.e. Hardware > Keyboard > Connect Hardware Keyboard is disabled).

        * platform/RuntimeApplicationChecks.h:
        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        (WebCore::IOSApplication::isWebKitTestRunner): Added.

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r236609): API tests for mso list preservation are failing
        https://bugs.webkit.org/show_bug.cgi?id=190095

        Reviewed by Wenson Hsieh.

        The regression was caused by appendNodeToPreserveMSOList called after an early return for not having renderer.
        Clearly, comment & style elements coming from a MS word document wouldn't have a renderer.

        Fixed the bug by changing the order.

        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix after r236612.

        * platform/win/PasteboardWin.cpp:
        (WebCore::Pasteboard::writeSelection):

2018-09-28  Andy Estes  <aestes@apple.com>

        [Apple Pay] Remove the "in-store" button type
        https://bugs.webkit.org/show_bug.cgi?id=190079

        Reviewed by Tim Horton.

        According to <https://developer.apple.com/design/human-interface-guidelines/apple-pay/buttons-and-marks/buttons/>,
        this button is meant only for certain kinds of native apps. It shouldn't be available on the web.

        Updated http/tests/ssl/applepay/ApplePayButton.html.

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):
        * css/CSSValueKeywords.in:
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * rendering/RenderThemeCocoa.mm:
        (WebCore::toPKPaymentButtonType):
        * rendering/style/RenderStyleConstants.h:

2018-09-28  Chris Dumez  <cdumez@apple.com>

        document.open() should throw errors for cross-origin calls
        https://bugs.webkit.org/show_bug.cgi?id=189371
        <rdar://problem/44282700>

        Reviewed by Youenn Fablet.

        document.open() / document.write() should throw errors for cross-origin calls as per:
        - https://html.spec.whatwg.org/#document-open-steps (Step 4)

        No new tests, rebaselined existing tests.

        * dom/Document.cpp:
        (WebCore::Document::open):
        (WebCore::Document::write):
        (WebCore::Document::writeln):
        * dom/Document.h:

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Rename createMarkup to serializePreservingVisualAppearance
        https://bugs.webkit.org/show_bug.cgi?id=190086

        Reviewed by Wenson Hsieh.

        Renamed the function to clarify what it does. Also removed the unused Range::toHTML.

        * dom/Range.cpp:
        (WebCore::Range::toHTML const): Deleted.
        * dom/Range.h:
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraphs):
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::selectionInHTMLFormat):
        * editing/gtk/EditorGtk.cpp:
        (WebCore::Editor::writeSelectionToPasteboard):
        * editing/markup.cpp:
        (WebCore::serializePreservingVisualAppearance):
        (WebCore::createMarkup): Deleted.
        * editing/markup.h:
        * editing/wpe/EditorWPE.cpp:
        (WebCore::Editor::writeSelectionToPasteboard):
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::create):
        (WebCore::LegacyWebArchive::createFromSelection):
        * platform/win/PasteboardWin.cpp:
        (WebCore::Pasteboard::writeRangeToDataObject):

2018-09-28  Simon Fraser  <simon.fraser@apple.com>

        Remove some unused RenderLayer code
        https://bugs.webkit.org/show_bug.cgi?id=190078

        Reviewed by Zalan Bujtas.

        The 'outOfFlowDescendantContainingBlocks' code was related to the accelerated overflow scrolling code that
        I removed recently.
        
        updateDescendantsLayerListsIfNeeded() is never called.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateDescendantDependentFlags):
        (WebCore::RenderLayer::calculateClipRects const):
        * rendering/RenderLayer.h:

2018-09-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236605.
        https://bugs.webkit.org/show_bug.cgi?id=190087

        caused three API test timeouts (Requested by jernoble on
        #webkit).

        Reverted changeset:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236605

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Simplify StyledMarkupAccumulator::traverseNodesForSerialization
        https://bugs.webkit.org/show_bug.cgi?id=190073

        Reviewed by Antti Koivisto.

        Simplified the range traversal algorithm in traverseNodesForSerialization as it was too complicated
        to support shadow DOM for copy and paste.

        Instead of using NodeTraversal::next to traverse past ancestors and then figuring out which ancestor
        must be closed or to wrap the existing markup with, new code collects the list of ancestors as we
        traverse out of them.

        Also extracted lambdas for generating markup and deciding whether to skip a node as well as keeping
        track of the depth of the current markup. This further reduces the code complexity of the actual
        node traversal algorithm. Keeping track of the depth allows us to now generate ancestor elements'
        closing tags without keeping a stack of ancestor nodes we opened at all times.

        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):

2018-09-27  Ryosuke Niwa  <rniwa@webkit.org>

        Replace every use of Node::offsetInCharacters() by Node::isCharacterDataNode()
        https://bugs.webkit.org/show_bug.cgi?id=190069

        Reviewed by Zalan Bujtas.

        Removed Node::offsetInCharacters() and replaced every use of it by isCharacterDataNode()
        because their implementations are identical.

        Note that offsetInCharacters() sounds like a function which returns some kind of an offset
        but it doesn't. It returns true when called on a CharacterData and false elsewhere.

        * accessibility/AXObjectCache.cpp:
        (WebCore::characterOffsetsInOrder):
        (WebCore::AXObjectCache::startOrEndCharacterOffsetForRange):
        (WebCore::AXObjectCache::characterOffsetFromVisiblePosition):
        * dom/CharacterData.cpp:
        (WebCore::CharacterData::offsetInCharacters const): Deleted.
        * dom/CharacterData.h:
        * dom/Node.cpp:
        (WebCore::Node::offsetInCharacters const): Deleted.
        * dom/Node.h:
        * dom/Position.cpp:
        (WebCore::Position::parentAnchoredEquivalent const):
        * dom/Position.h:
        (WebCore::lastOffsetInNode):
        (WebCore::minOffsetForNode):
        (WebCore::offsetIsBeforeLastNodeOffset):
        * dom/Range.cpp:
        (WebCore::Range::firstNode const):
        (WebCore::Range::pastLastNode const):
        * dom/RangeBoundaryPoint.h:
        (WebCore::RangeBoundaryPoint::setOffset):
        (WebCore::RangeBoundaryPoint::setToEndOfNode):
        * editing/Editing.cpp:
        (WebCore::lastOffsetForEditing):
        * editing/TextIterator.cpp:
        (WebCore::nextInPreOrderCrossingShadowBoundaries):
        (WebCore::TextIterator::node const):
        (WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
        * page/DOMSelection.cpp:
        (WebCore::DOMSelection::extend):

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Two sources of raw pointers in the Fullscreen code:
        - Model classes (PlaybackSessionModel and VideoFullscreenModel) aren't ref-able, so
          they are passed around as raw references.
        - Observer classes (PlaybackSessionModelClient and VideoFullscreenModelClient, and
          VideoFullscreenChangeObserver) are also passed around as raw pointers, but shouldn't
          be ref-able.

        Make Model classes ref-able by adding ref() and deref() which call virtual refModel and
        derefModel methods, overridden by implementing subclasses. Make every concrete observer
        inherit from CanMakeWeakPtr, and every registration method take WeakPtr wrappers around
        the client interface.

        Since every Interface class now holds a strong reference to its Model classes, and each
        Model class holds a weak reference to all its clients, no explicit invalidate() method
        is necessary.

        Notes:

        - Since the weak pointer methods need to be able to downcast to the abstract base class,
          observers need to inherit publically (rather than privately) from those base classes.
        - Media element Models should compose EventListener rather than inheriting from it, since
          EventListener has its own RefCount.
        - WeakPtrs can't be held in HashSets (because they change value, and therefore hash, when
          their underlying object is destroyed), so clients should be stored in a Vector instead.
        - Interfaces should be given all required Refs at creation time, so that they can store
          those parameters as Refs instead of RefPtrs.

        * platform/cocoa/PlaybackSessionInterface.h:
        (WebCore::PlaybackSessionInterface::~PlaybackSessionInterface): Deleted.
        * platform/cocoa/PlaybackSessionModel.h:
        (WebCore::PlaybackSessionModel::ref):
        (WebCore::PlaybackSessionModel::deref):
        (WebCore::PlaybackSessionModel::~PlaybackSessionModel): Deleted.
        * platform/cocoa/PlaybackSessionModelMediaElement.h:
        * platform/cocoa/PlaybackSessionModelMediaElement.mm:
        (WebCore::PlaybackSessionModelMediaElement::PlaybackSessionModelMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::~PlaybackSessionModelMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::setMediaElement):
        (WebCore::PlaybackSessionModelMediaElement::updateForEventName):
        (WebCore::PlaybackSessionModelMediaElement::addClient):
        (WebCore::PlaybackSessionModelMediaElement::removeClient):
        (WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
        (WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionIndices):
        (WebCore::PlaybackSessionModelMediaElement::handleEvent): Deleted.
        * platform/cocoa/VideoFullscreenChangeObserver.h:
        (WebCore::VideoFullscreenChangeObserver::~VideoFullscreenChangeObserver): Deleted.
        * platform/cocoa/VideoFullscreenModel.h:
        (WebCore::VideoFullscreenModel::ref):
        (WebCore::VideoFullscreenModel::deref):
        (WebCore::VideoFullscreenModel::~VideoFullscreenModel): Deleted.
        * platform/cocoa/VideoFullscreenModelVideoElement.h:
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
        (VideoFullscreenModelVideoElement::setVideoElement):
        (VideoFullscreenModelVideoElement::addClient):
        (VideoFullscreenModelVideoElement::removeClient):
        (VideoFullscreenModelVideoElement::setHasVideo):
        (VideoFullscreenModelVideoElement::setVideoDimensions):
        (VideoFullscreenModelVideoElement::willEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::didEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
        (VideoFullscreenModelVideoElement::willExitPictureInPicture):
        (VideoFullscreenModelVideoElement::didExitPictureInPicture):
        (VideoFullscreenModelVideoElement::handleEvent): Deleted.
        * platform/ios/PlaybackSessionInterfaceAVKit.h:
        (WebCore::PlaybackSessionInterfaceAVKit::create):
        (WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
        (): Deleted.
        * platform/ios/PlaybackSessionInterfaceAVKit.mm:
        (WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
        (WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
        (WebCore::PlaybackSessionInterfaceAVKit::invalidate): Deleted.
        * platform/ios/VideoFullscreenInterfaceAVKit.h:
        * platform/ios/VideoFullscreenInterfaceAVKit.mm:
        (-[WebAVPlayerLayer layoutSublayers]):
        (-[WebAVPlayerLayer resolveBounds]):
        (-[WebAVPlayerLayer setVideoGravity:]):
        (VideoFullscreenInterfaceAVKit::create):
        (VideoFullscreenInterfaceAVKit::VideoFullscreenInterfaceAVKit):
        (VideoFullscreenInterfaceAVKit::~VideoFullscreenInterfaceAVKit):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
        (VideoFullscreenInterfaceAVKit::applicationDidBecomeActive):
        (VideoFullscreenInterfaceAVKit::setupFullscreen):
        (VideoFullscreenInterfaceAVKit::presentingViewController):
        (VideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
        (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
        (VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
        (VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
        (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
        (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
        (VideoFullscreenInterfaceAVKit::doSetup):
        (VideoFullscreenInterfaceAVKit::setMode):
        (VideoFullscreenInterfaceAVKit::clearMode):
        (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel): Deleted.
        (VideoFullscreenInterfaceAVKit::invalidate): Deleted.
        * platform/ios/WebAVPlayerController.h:
        * platform/ios/WebAVPlayerController.mm:
        (-[WebAVPlayerController delegate]):
        (-[WebAVPlayerController playbackSessionInterface]):
        (-[WebAVPlayerController setPlaybackSessionInterface:]):
        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
        (VideoFullscreenControllerContext::didCleanupFullscreen):
        (VideoFullscreenControllerContext::addClient):
        (VideoFullscreenControllerContext::removeClient):
        (VideoFullscreenControllerContext::willEnterPictureInPicture):
        (VideoFullscreenControllerContext::didEnterPictureInPicture):
        (VideoFullscreenControllerContext::failedToEnterPictureInPicture):
        (VideoFullscreenControllerContext::willExitPictureInPicture):
        (VideoFullscreenControllerContext::didExitPictureInPicture):
        (VideoFullscreenControllerContext::setUpFullscreen):
        * platform/mac/PlaybackSessionInterfaceMac.h:
        * platform/mac/PlaybackSessionInterfaceMac.mm:
        (WebCore::PlaybackSessionInterfaceMac::create):
        (WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
        (WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
        (WebCore::PlaybackSessionInterfaceMac::rateChanged):
        (WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::endScrubbing):
        (WebCore::PlaybackSessionInterfaceMac::setPlayBackControlsManager):
        (WebCore::PlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):
        (WebCore::PlaybackSessionInterfaceMac::~PlaybackSessionInterfaceMac): Deleted.
        (WebCore::PlaybackSessionInterfaceMac::invalidate): Deleted.
        * platform/mac/VideoFullscreenInterfaceMac.h:
        (WebCore::VideoFullscreenInterfaceMac::create):
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
        (WebCore::VideoFullscreenInterfaceMac::playbackSessionModel const):
        (WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
        * platform/mac/VideoFullscreenInterfaceMac.mm:
        (-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
        (-[WebVideoFullscreenInterfaceMacObjC boundsDidChangeForVideoViewContainer:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionPlay:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionPause:]):
        (-[WebVideoFullscreenInterfaceMacObjC pipActionStop:]):
        (WebCore::VideoFullscreenInterfaceMac::VideoFullscreenInterfaceMac):
        (WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
        (WebCore::VideoFullscreenInterfaceMac::setMode):
        (WebCore::VideoFullscreenInterfaceMac::clearMode):
        (WebCore::VideoFullscreenInterfaceMac::invalidate):
        (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitPiP):
        (WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel): Deleted.
        * platform/mac/WebPlaybackControlsManager.mm:
        (-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
        (-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
        (-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):
        (-[WebPlaybackControlsManager togglePlayback]):
        (-[WebPlaybackControlsManager setPlaying:]):
        (-[WebPlaybackControlsManager isPlaying]):
        (-[WebPlaybackControlsManager togglePictureInPicture]):

2018-09-28  Chris Dumez  <cdumez@apple.com>

        Drop iOS specific quirk in SettingsBase::scriptEnabledChanged()
        https://bugs.webkit.org/show_bug.cgi?id=190077
        <rdar://problem/44812613>

        Reviewed by Zalan Bujtas.

        Drop iOS specific quirk in SettingsBase::scriptEnabledChanged() that would dirty style after the
        "JavaScriptEnabled" setting's state is toggled. I do not see a good reason to do this given that
        scripts would not get executed until a reload.

        If we find out after dropping this that this is actually useful for some reason, then we can
        always bring it back and consider making this non-iOS specific, as well as documenting why this
        it is needed.

        * page/Settings.yaml:
        * page/SettingsBase.cpp:
        (WebCore::SettingsBase::scriptEnabledChanged): Deleted.
        * page/SettingsBase.h:

2018-09-27  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Fix priority issue with multiple cookies with different level of path.
        https://bugs.webkit.org/show_bug.cgi?id=189920

        Reviewed by Fujii Hironori.

        When multiple cookies are stored in the database for same site, the priority of
        multiple cookies which matches path criteria was not defined. The backend
        implementation `sqlite` then returns the first matching result, which is the one
        stored earlier.

        Test: http/tests/cookies/cookie-with-multiple-level-path.html

        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::searchCookies):

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Use enum class in createMarkup arguments
        https://bugs.webkit.org/show_bug.cgi?id=190028

        Reviewed by Wenson Hsieh.

        Replaced enums used by createMarkup with equivalent enum classes: EChildrenOnly with SerializedNodes,
        EAbsoluteURLs with ResolveURLs, and EFragmentSerialization with SerializationSyntax.

        Also replaced the boolean convertBlocksToInlines with an enum class of the same name.

        Finally, renamed the createMarkup variant which doesn't serialize style and used for innerHTML and XMLSerializer
        to serializeFragment.

        * dom/Element.cpp:
        (WebCore::Element::innerHTML const):
        (WebCore::Element::outerHTML const):
        * dom/ShadowRoot.cpp:
        (WebCore::ShadowRoot::innerHTML const):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraphs):
        * editing/HTMLInterchange.h:
        (WebCore::AnnotateForInterchange): Renamed from EAnnotateForInterchange.
        * editing/MarkupAccumulator.cpp:
        (WebCore::MarkupAccumulator::MarkupAccumulator):
        (WebCore::MarkupAccumulator::serializeNodes):
        (WebCore::MarkupAccumulator::serializeNodesWithNamespaces):
        (WebCore::MarkupAccumulator::resolveURLIfNeeded const):
        * editing/MarkupAccumulator.h:
        (WebCore::MarkupAccumulator::inXMLFragmentSerialization const):
        * editing/ReplaceRangeWithTextCommand.cpp:
        (WebCore::ReplaceRangeWithTextCommand::inputEventDataTransfer const):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::willApplyCommand):
        * editing/SpellingCorrectionCommand.cpp:
        (WebCore::SpellingCorrectionCommand::inputEventDataTransfer const):
        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::selectionInHTMLFormat):
        * editing/cocoa/WebContentReaderCocoa.mm:
        (WebCore::WebContentMarkupReader::readRTFD):
        (WebCore::WebContentMarkupReader::readRTF):
        * editing/gtk/EditorGtk.cpp:
        (WebCore::Editor::writeImageToPasteboard):
        (WebCore::Editor::writeSelectionToPasteboard):
        * editing/markup.cpp:
        (WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator):
        (WebCore::StyledMarkupAccumulator::serializeNodes):
        (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
        (WebCore::highestAncestorToWrapMarkup):
        (WebCore::createMarkupInternal):
        (WebCore::createMarkup):
        (WebCore::sanitizedMarkupForFragmentInDocument):
        (WebCore::serializeFragment): Renamed from createMarkup. This is used for innerHTML and XMLSerializer,
        which faithfully serializes the fragment without any computed style as inline styles.
        (WebCore::documentTypeString):
        (WebCore::createFullMarkup): Deleted two varinats used in WebKitLegacy.
        * editing/markup.h:
        (WebCore::ResolveURLs): Renamed from EAbsoluteURLs.
        (WebCore::ConvertBlocksToInlines): Added.
        (WebCore::SerializedNodes): Renamed from EChildrenOnly.
        (WebCore::SerializationSyntax): Renamed from EFragmentSerialization.
        * editing/wpe/EditorWPE.cpp:
        (WebCore::Editor::writeSelectionToPasteboard):
        * inspector/DOMEditor.cpp:
        * inspector/agents/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::getOuterHTML):
        * loader/archive/cf/LegacyWebArchive.cpp:
        (WebCore::LegacyWebArchive::create):
        (WebCore::LegacyWebArchive::createFromSelection):
        * page/PageSerializer.cpp:
        (WebCore::PageSerializer::SerializerMarkupAccumulator::SerializerMarkupAccumulator):
        (WebCore::PageSerializer::serializeFrame):
        * page/win/DragControllerWin.cpp:
        (WebCore::DragController::declareAndWriteDragImage):
        * Source/WebCore/platform/win/PasteboardWin.cpp:
        (WebCore::Pasteboard::writeRangeToDataObject):
        (WebCore::Pasteboard::writeSelection):
        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::send):
        * xml/XMLSerializer.cpp:
        (WebCore::XMLSerializer::serializeToString):
        * xml/XSLTProcessorLibxslt.cpp:
        (WebCore::xsltStylesheetPointer):
        (WebCore::xmlDocPtrFromNode):

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Non-redirected top frame navigation should not get captured in statistics
        https://bugs.webkit.org/show_bug.cgi?id=190055
        <rdar://problem/44843460>

        Reviewed by Chris Dumez.

        Test: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html

        * loader/ResourceLoadStatistics.cpp:
        (WebCore::ResourceLoadStatistics::decode):
            Corrects legacy statistics for frames and triggers a re-classification.

2018-09-27  Jer Noble  <jer.noble@apple.com>

        Unreviewed watchOS build fix; Fix declaration for ports which USE(ENCRYPTED_MEDIA) but don't
        HAVE(AVCONTENTKEYSESSION).

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:

2018-09-27  Justin Michaud  <justin_michaud@apple.com>

        Remove duplicate CSS Properties and Values feature on status page
        https://bugs.webkit.org/show_bug.cgi?id=189909

        Reviewed by Simon Fraser.

        Update CSS properties and values api feature in features.json

        * features.json:

2018-09-27  Jer Noble  <jer.noble@apple.com>

        MediaPlayer should have mediaPlayerWaitingForKeyChanged() / bool waitingForKey() accessor
        https://bugs.webkit.org/show_bug.cgi?id=189951

        Reviewed by Eric Carlson.

        In order to implement the "Resume Playback" section of EME, part 4, we need to be able
        to query whether the MediaPlayer is still waiting for a key after attemptToDecrypt()
        has been called. Currently this involves no behavioral changes, as all modern EME ports
        will still just notify the media element that they no longer need keys after one has
        been added, but future ports may be able to wait for multiple keys before reporting
        that it is no longer waiting for keys.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaPlayerWaitingForKeyChanged):
        (WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
        (WebCore::HTMLMediaElement::mediaPlayerWaitingForKey): Deleted.
        * html/HTMLMediaElement.h:
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::waitingForKeyChanged):
        (WebCore::MediaPlayer::waitingForKey const):
        (WebCore::MediaPlayer::waitingForKey): Deleted.
        * platform/graphics/MediaPlayer.h:
        (WebCore::MediaPlayerClient::mediaPlayerWaitingForKeyChanged):
        (WebCore::MediaPlayerClient::mediaPlayerWaitingForKey): Deleted.
        * platform/graphics/MediaPlayerPrivate.h:
        (WebCore::MediaPlayerPrivateInterface::waitingForKey const):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::attemptToDecryptWithInstance):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKey const):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKeyChanged):
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initializationDataEncountered):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey):
        (WebCore::MediaPlayerPrivateGStreamerBase::setWaitingForKey):
        (WebCore::MediaPlayerPrivateGStreamerBase::waitingForKey const):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptSinkEventHandler):

2018-09-27  Alicia Boya García  <aboya@igalia.com>

        [MSE] Fix unwanted sample erase from the decode queue
        https://bugs.webkit.org/show_bug.cgi?id=180643

        Reviewed by Jer Noble.

        Test: media/media-source/media-source-append-acb-no-frame-lost.html

        This bug reproduced when unordered appends were made. For instance, if
        the application appended [0, 10) and then [20, 30), the frame at 20
        would be wrongly discarded from the decode queue.

        Later the application could append [10, 20) and the gap at [20, 21)
        would persist in the decode queue, even if the frame remained in the
        track buffer table.

        Thanks to Daniel Zhang for reporting the issue.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::provideMediaData):

2018-09-27  Alex Christensen  <achristensen@webkit.org>

        URLParser should use TextEncoding through an abstract class
        https://bugs.webkit.org/show_bug.cgi?id=190027

        Reviewed by Andy Estes.

        URLParser uses TextEncoding for one call to encode, which is only used for encoding the query of URLs in documents with non-UTF encodings.
        There are 3 call sites that specify the TextEncoding to use from the Document, and even those call sites use a UTF encoding most of the time.
        All other URL parsing is done using a well-optimized path which assumes UTF-8 encoding and uses macros from ICU headers, not a TextEncoding.
        Moving the logic in this way breaks URL and URLParser's dependency on TextEncoding, which makes it possible to use in a lower-level project
        without also moving TextEncoding, TextCodec, TextCodecICU, ThreadGlobalData, and the rest of WebCore and JavaScriptCore.

        There is no observable change in behavior.  There is now one virtual function call in a code path in URLParser that is not performance-sensitive,
        and TextEncodings now have a vtable, which uses a few more bytes of memory total for WebKit.

        * css/parser/CSSParserContext.h:
        (WebCore::CSSParserContext::completeURL const):
        * css/parser/CSSParserIdioms.cpp:
        (WebCore::completeURL):
        * dom/Document.cpp:
        (WebCore::Document::completeURL const):
        * html/HTMLBaseElement.cpp:
        (WebCore::HTMLBaseElement::href const):
        Move the call to encodingForFormSubmission from the URL constructor to the 3 call sites that specify the encoding from the Document.
        * loader/FormSubmission.cpp:
        (WebCore::FormSubmission::create):
        * loader/TextResourceDecoder.cpp:
        (WebCore::TextResourceDecoder::encodingForURLParsing):
        * loader/TextResourceDecoder.h:
        * platform/URL.cpp:
        (WebCore::URL::URL):
        * platform/URL.h:
        (WebCore::URLTextEncoding::~URLTextEncoding):
        * platform/URLParser.cpp:
        (WebCore::URLParser::encodeNonUTF8Query):
        (WebCore::URLParser::copyURLPartsUntil):
        (WebCore::URLParser::URLParser):
        (WebCore::URLParser::parse):
        (WebCore::URLParser::encodeQuery): Deleted.
        A pointer replaces the boolean isUTF8Encoding and the TextEncoding& which had a default value of UTF8Encoding.
        Now the pointer being null means that we use UTF8, and the pointer being non-null means we use that encoding.
        * platform/URLParser.h:
        (WebCore::URLParser::URLParser):
        * platform/text/TextEncoding.cpp:
        (WebCore::UTF7Encoding):
        (WebCore::TextEncoding::encodingForFormSubmissionOrURLParsing const):
        (WebCore::ASCIIEncoding):
        (WebCore::Latin1Encoding):
        (WebCore::UTF16BigEndianEncoding):
        (WebCore::UTF16LittleEndianEncoding):
        (WebCore::UTF8Encoding):
        (WebCore::WindowsLatin1Encoding):
        (WebCore::TextEncoding::encodingForFormSubmission const): Deleted.
        Use NeverDestroyed because TextEncoding now has a virtual destructor.
        * platform/text/TextEncoding.h:
        Rename encodingForFormSubmission to encodingForFormSubmissionOrURLParsing to make it more clear that we are intentionally using it for both.

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove temporary compatibility fix for auto-dismiss popups
        https://bugs.webkit.org/show_bug.cgi?id=189980
        <rdar://problem/44780645>

        Reviewed by Alex Christensen.

        Test: http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss.html

        The change in https://bugs.webkit.org/show_bug.cgi?id=183620 was a temporary
        compatibility fix as explained in:
        https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/. We should
        remove it.

        Most of these changes remove the parameter isTriggeredByUserGesture since it's no longer needed.

        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
        (WebCore::ResourceLoadObserver::logWindowCreation): Deleted.
        * loader/ResourceLoadObserver.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
            Now no longer logs anything to ResourceLoadObserver.

2018-09-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236557.

        Really roll out r236557 this time because it breaks internal
        builds.

        Reverted changeset:

        "Add VP8 support to WebRTC"
        https://bugs.webkit.org/show_bug.cgi?id=189976
        https://trac.webkit.org/changeset/236557

2018-09-27  Chris Dumez  <cdumez@apple.com>

        Fragment should be stripped from document URL during document.open() URL propagation
        https://bugs.webkit.org/show_bug.cgi?id=189374
        <rdar://problem/44282736>

        Reviewed by Alex Christensen.

        Strip the Document URL fragment during document.open() URL propagation if the entry document
        is not the current document, as per:
        - https://html.spec.whatwg.org/#document-open-steps (Step 11.2.)

        No new tests, rebaselined existing test.

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

2018-09-27  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        Add a runtime flag to control activation of VP8 codec.
        Bind this runtime flag to the video codec factories.
        Test: webrtc/video-mute-vp8.html

        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::createLibWebRTCPeerConnectionBackend):
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
        (WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState):
        Enable VP8 codec for tests.

2018-09-27  Chris Dumez  <cdumez@apple.com>

        Crash under WebCore::deleteCookiesForHostnames()
        https://bugs.webkit.org/show_bug.cgi?id=190040
        <rdar://problem/38020368>

        Reviewed by Alex Christensen.

        Update NetworkStorageSession::deleteCookiesForHostnames() to properly deal with the fact
        that NSHTTPCookie.domain can return nil.

        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::NetworkStorageSession::deleteCookiesForHostnames):

2018-09-27  Youenn Fablet  <youenn@apple.com>

        Use kCVPixelFormatType_420YpCbCr8Planar for capturing frames
        https://bugs.webkit.org/show_bug.cgi?id=190014

        Reviewed by Eric Carlson.

        On Mac, rely on the monoplanar format which can be displayed without any issue.
        Once rendering is fixed, we should change it back to biplanar as it is closer to what libwebrtc consumes.
        Covered by manual testing.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::avVideoCapturePixelBufferFormat):
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):

2018-09-27  Andy Estes  <aestes@apple.com>

        [Apple Pay] Support granular errors in PaymentDetailsUpdate
        https://bugs.webkit.org/show_bug.cgi?id=189938

        Reviewed by Youenn Fablet.

        Implemented the shippingAddressErrors, payerErrors, and paymentMethodErrors properties on
        PaymentDetailsUpdate, as specified in the Payment Request API W3C Editor's Draft of
        26 September 2018.

        When these errors are specified in a PaymentDetailsUpdate, map them to PaymentErrors. For
        shippingAddressErrors and payerErrors, we use the "shippingContactInvalid" code and a
        contact field that matches the shippingAddressError or payerError property specified.

        For paymentMethodErrors, we interpret this as a sequence of ApplePayErrors, which are
        converted to PaymentErrors as in Apple Pay JS.

        Tests: http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html
               http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html

        * DerivedSources.make: Removed some tabs and added new .idl files.
        * Modules/applepay/ApplePayError.idl: Moved ApplePayErrorCode and ApplePayErrorContactField
        into their own .idl files so they can be used in MockPaymentError.
        * Modules/applepay/ApplePayErrorCode.h: Added.
        * Modules/applepay/ApplePayErrorCode.idl: Added.
        * Modules/applepay/ApplePayErrorContactField.h: Added.
        * Modules/applepay/ApplePayErrorContactField.idl: Added.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::appendShippingContactInvalidError): Appended a "shippingContactInvalid"
        PaymentError to errors if the message is non-null.
        (WebCore::ApplePayPaymentHandler::computeErrors const):
        (WebCore::ApplePayPaymentHandler::detailsUpdated):
        (WebCore::ApplePayPaymentHandler::shippingAddressUpdated): Computed a vector of PaymentErrors
        based on shippingAddressErrors, payerErrors, and paymentMethodErrors.

        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:

        * Modules/paymentrequest/PaymentDetailsUpdate.h:
        * Modules/paymentrequest/PaymentDetailsUpdate.idl: Defined shippingAddressErrors,
        payerErrors, and paymentMethodErrors.

        * Modules/paymentrequest/PaymentHandler.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::paymentMethodChanged):
        (WebCore::PaymentRequest::settleDetailsPromise): Passed shippingAddressErrors, payerErrors,
        and paymentMethodErrors to the payment handler.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:

        * testing/MockPaymentCoordinator.cpp:
        (WebCore::MockPaymentCoordinator::completeShippingContactSelection): Stored errors in m_errors.
        * testing/MockPaymentCoordinator.h:
        * testing/MockPaymentCoordinator.idl: Added an errors attribute.

        * testing/MockPaymentError.h: Added.
        * testing/MockPaymentError.idl: Added.

2018-09-27  Alex Christensen  <achristensen@webkit.org>

        URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
        https://bugs.webkit.org/show_bug.cgi?id=189979

        Reviewed by Youenn Fablet.

        * platform/mac/WebCoreNSURLExtras.mm:
        (WebCore::URLWithUserTypedString):
        (WebCore::dataForURLComponentType):
        (WebCore::URLByRemovingComponentAndSubsequentCharacter):
        (WebCore::URLByCanonicalizingURL):
        (WebCore::originalURLData):
        (WebCore::userVisibleString):

2018-09-27  Chris Dumez  <cdumez@apple.com>

        document.open() should not propagate URLs to non-fully active documents
        https://bugs.webkit.org/show_bug.cgi?id=189375
        <rdar://problem/44282755>

        Reviewed by Youenn Fablet.

        Update our document.open() to not propagate URLs to non-fully active documents, as per:
        - https://html.spec.whatwg.org/#document-open-steps (Step 11)

        A "fully active" document is defined by at:
        - https://html.spec.whatwg.org/#fully-active

        No new tests, rebaselined existing test.

        * dom/Document.cpp:
        (WebCore::Document::open):
        (WebCore::Document::isFullyActive const):
        * dom/Document.h:
        * dom/Document.idl:

2018-09-27  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Use sentinel buffer to detect end of append
        https://bugs.webkit.org/show_bug.cgi?id=189924

        Reviewed by Philippe Normand.

        This patch introduces a new mechanism to detect when an append has
        been consumed completely by the demuxer. It takes advantage of the
        fact that buffer pushing is synchronous: both the appsrc and the
        demuxer live in the same streaming thread. When appsrc pushes a
        buffer, it's actually making a qtdemux function call (it calls its
        "chain" function). The demuxer will return from that call when it has
        finished processing that buffer; only then the control returns to
        appsrc, that can push the next buffer.

        By pushing an additional buffer and capturing it in a probe we can
        detect reliably when the previous buffer has been processed.
        Because the pipeline only has one thread, at this point no more frames
        can arrive to the appsink.

        This replaces the old method of detecting end of append which relied
        on the `need-data` event, which is more difficult to handle correctly
        because it fires whenever the appsrc is empty (or below a given
        level), which also happens when a buffer has not been pushed yet or
        in response to a flush.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::EndOfAppendMeta::init):
        (WebCore::EndOfAppendMeta::transform):
        (WebCore::EndOfAppendMeta::free):
        (WebCore::AppendPipeline::staticInitialization):
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::~AppendPipeline):
        (WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
        (WebCore::AppendPipeline::handleApplicationMessage):
        (WebCore::AppendPipeline::handleEndOfAppend):
        (WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
        (WebCore::AppendPipeline::resetPipeline):
        (WebCore::AppendPipeline::pushNewBuffer):
        (WebCore::AppendPipeline::handleAppsrcNeedDataReceived): Deleted.:
        (WebCore::AppendPipeline::handleAppsrcAtLeastABufferLeft): Deleted.
        (WebCore::AppendPipeline::checkEndOfAppend): Deleted.
        (WebCore::AppendPipeline::setAppsrcDataLeavingProbe): Deleted.
        (WebCore::AppendPipeline::removeAppsrcDataLeavingProbe): Deleted.
        (WebCore::AppendPipeline::reportAppsrcAtLeastABufferLeft): Deleted.
        (WebCore::AppendPipeline::reportAppsrcNeedDataReceived): Deleted.
        (WebCore::appendPipelineAppsrcDataLeaving): Deleted.
        (WebCore::appendPipelineAppsrcNeedData): Deleted.
        * platform/graphics/gstreamer/mse/AppendPipeline.h:

2018-09-27  Chris Dumez  <cdumez@apple.com>

        The WebContent process should not process incoming IPC while waiting for a sync IPC reply
        https://bugs.webkit.org/show_bug.cgi?id=184183
        <rdar://problem/36800576>

        Reviewed by Ryosuke Niwa.

        Drop test infrastructure for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply IPC::SendOption
        given that this SendOption was removed from this patch.

        * page/ChromeClient.h:
        * testing/Internals.cpp:
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-27  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK Ubuntu LTS build fix attempt after r236396.

        * platform/graphics/gstreamer/GStreamerCommon.h:

2018-09-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Reviewed by Dean Jackson.

        * page/RuntimeEnabledFeatures.h:

2018-09-26  YUHAN WU  <yuhan_wu@apple.com>

        Video track clone cannot preserve original property
        https://bugs.webkit.org/show_bug.cgi?id=189872
        <rdar://problem/44706579>

        Reviewed by Youenn Fablet.

        Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
        Updated a testcase expected result:
        LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
        (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
        (WebCore::CanvasCaptureMediaStreamTrack::create):
        (WebCore::CanvasCaptureMediaStreamTrack::clone):
        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
        * Modules/mediastream/MediaStreamTrack.h:

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r236524.

        Broke API tests

        Reverted changeset:

        "URLWithUserTypedString should return nil for URLs deemed to
        be invalid by WebCore::URL"
        https://bugs.webkit.org/show_bug.cgi?id=189979
        https://trac.webkit.org/changeset/236524

2018-09-26  Per Arne Vollan  <pvollan@apple.com>

        WebVTT cue alignment broken
        https://bugs.webkit.org/show_bug.cgi?id=190004

        Reviewed by Eric Carlson.

        If the position of the queue is unspecified, the default value of 50 was used, which is incorrect.
        This patch also updates the API according to https://w3c.github.io/webvtt/#the-vttcue-interface.
        The position attribute should not be a double, but either a double or the "auto" keyword. Parts
        of this patch is inspired by the associated code in the Chromium project.

        Test: media/track/track-cue-left-align.html

        * html/track/TextTrackCueGeneric.cpp:
        (WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
        (WebCore::TextTrackCueGeneric::setPosition):
        * html/track/TextTrackCueGeneric.h:
        * html/track/VTTCue.cpp:
        (WebCore::VTTCueBox::applyCSSProperties):
        (WebCore::VTTCue::initialize):
        (WebCore::VTTCue::position const):
        (WebCore::VTTCue::setPosition):
        (WebCore::VTTCue::textPositionIsAuto const):
        (WebCore::VTTCue::calculateComputedTextPosition const):
        (WebCore::VTTCue::calculateDisplayParameters):
        (WebCore::VTTCue::toJSON const):
        * html/track/VTTCue.h:
        (WebCore::VTTCue::position const): Deleted.
        * html/track/VTTCue.idl:

2018-09-26  James Savage  <james.savage@apple.com>

        Allow override of viewport configuration.
        https://bugs.webkit.org/show_bug.cgi?id=188772.
        <rdar://problem/43538892>.

        Reviewed by Simon Fraser.

        * page/Settings.yaml:
        * page/ViewportConfiguration.cpp:
        (WebCore::ViewportConfiguration::nativeWebpageParameters): Provide a viewport configuration
        similar to width=device-width, with initial scale set to 1.
        * page/ViewportConfiguration.h:

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        URLs with mismatched surrogate pairs in the host should fail to parse
        https://bugs.webkit.org/show_bug.cgi?id=190005

        Reviewed by Chris Dumez.

        Elsewhere in the URLParser, when we encounter mismatched surrogate pairs we use the replacement character,
        but that just fails later on in domainToASCII, so we may as well just fail.
        This behavior matches Chrome, but is unclear in the spec.  There are no valid uses of hosts containing mismatched surrogate pairs.
        Covered by new API tests.

        * platform/URLParser.cpp:
        (WebCore::URLParser::parseHostAndPort):

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        uidna_nameToASCII only needs a buffer capacity of 64
        https://bugs.webkit.org/show_bug.cgi?id=190006

        Reviewed by Chris Dumez.

        This is specified in https://www.unicode.org/reports/tr46/#ToASCII
        This is how Chrome and Firefox also behave with long unicode hosts.

        * platform/URLParser.cpp:
        (WebCore::URLParser::domainToASCII):

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
        https://bugs.webkit.org/show_bug.cgi?id=189979
        <rdar://problem/44119696>

        Reviewed by Chris Dumez.

        Covered by an API test.

        * platform/mac/WebCoreNSURLExtras.mm:
        (WebCore::URLWithData):

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Selection should work across shadow boundary when initiated by a mouse drag
        https://bugs.webkit.org/show_bug.cgi?id=151380
        <rdar://problem/24363872>

        Revert the change that I said I would from r236519.

        * editing/VisibleSelection.cpp:
        (WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):

2018-09-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236511.
        https://bugs.webkit.org/show_bug.cgi?id=190008

        It is breaking some WebRTC tests (Requested by youenn on
        #webkit).

        Reverted changeset:

        "[MediaStream] Clean up RealtimeMediaSource settings change
        handling"
        https://bugs.webkit.org/show_bug.cgi?id=189998
        https://trac.webkit.org/changeset/236511

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Selection should work across shadow boundary when initiated by a mouse drag
        https://bugs.webkit.org/show_bug.cgi?id=151380
        <rdar://problem/24363872>

        Reviewed by Antti Koivisto and Wenson Hsieh.

        This patch adds the basic support for selecting content across shadow DOM boundaries to VisibleSelection,
        which is enough to allow users to select content across shadow DOM boundaries via a mouse drag.

        This is the first step in allowing users to select, copy and paste content across shadow DOM boundaries,
        which is a serious user experience regression right now. The new behavior is disabled by default under
        an interal debug feature flag: selectionAcrossShadowBoundariesEnabled.

        Like Chrome, we are not going to support selecting editable content across shadow DOM boundaries since
        we'd have to generalize every editing commands to make that work, and there aren't any HTML editors that
        use shadow DOM boundaries within an editable region yet. For simplicity, we also don't support extending
        a selection out of a shadow root which resides inside an editing region.

        The keyboard based navigation & manipulation of selection as well as allowing copy & paste of content
        across shadow DOM boundaries will be implemented by separate patches. DOMSelection will not expose this new
        behavior either. This is tracked in the spec as https://github.com/w3c/webcomponents/issues/79

        Tests: editing/selection/selection-across-shadow-boundaries-mixed-editability-1.html
               editing/selection/selection-across-shadow-boundaries-mixed-editability-2.html
               editing/selection/selection-across-shadow-boundaries-mixed-editability-3.html
               editing/selection/selection-across-shadow-boundaries-mixed-editability-4.html
               editing/selection/selection-across-shadow-boundaries-mixed-editability-5.html
               editing/selection/selection-across-shadow-boundaries-readonly-1.html
               editing/selection/selection-across-shadow-boundaries-readonly-2.html
               editing/selection/selection-across-shadow-boundaries-readonly-3.html
               editing/selection/selection-across-shadow-boundaries-user-select-all-1.html

        * editing/VisibleSelection.cpp:
        (WebCore::isInUserAgentShadowRootOrHasEditableShadowAncestor): Added.
        (WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries): When the feature is enabled,
        allow crossing shadow DOM boundaries except when either end is inside an user agent shadow root, or one of
        its shadow includign ancestor is inside an editable region. The latter check is needed to disallow
        an extension of a selection starting in a shadow tree inside a non-editable region inside an editable region
        to outside the editable region. The rest of the editing code is not ready to deal with selection like that.
        * page/Settings.yaml: Added an internal debug feature to enable this new behavior.

2018-09-26  Chris Dumez  <cdumez@apple.com>

        Ignore-opens-during-unload counter of a parent should apply to its children during beforeunload event
        https://bugs.webkit.org/show_bug.cgi?id=189376
        <rdar://problem/44282754>

        Reviewed by Ryosuke Niwa.

        Make sure the Ignore-opens-during-unload counter of a parent stays incremented while we are firing the
        beforeunload event for its descendants, as per:
        - https://html.spec.whatwg.org/multipage/browsing-the-web.html#prompt-to-unload-a-document

        No new tests, rebaselined existing tests.

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::shouldClose):
        (WebCore::FrameLoader::dispatchBeforeUnloadEvent):

2018-09-26  Justin Fan  <justin_fan@apple.com>

        WebGL 2: Adding logging to in-progress features
        https://bugs.webkit.org/show_bug.cgi?id=189978

        Reviewed by Jon Lee.

        Logging will allow us to better identify the most in-demand WebGL 2 features and prioritize our efforts.

        No tests as no change in WebGL functionality.

        * html/canvas/WebGL2RenderingContext.cpp: Added logging statement to every function not yet implemented.
        (WebCore::WebGL2RenderingContext::blitFramebuffer):
        (WebCore::WebGL2RenderingContext::framebufferTextureLayer):
        (WebCore::WebGL2RenderingContext::invalidateFramebuffer):
        (WebCore::WebGL2RenderingContext::invalidateSubFramebuffer):
        (WebCore::WebGL2RenderingContext::readBuffer):
        (WebCore::WebGL2RenderingContext::texStorage3D):
        (WebCore::WebGL2RenderingContext::texImage2D):
        (WebCore::WebGL2RenderingContext::texImage3D):
        (WebCore::WebGL2RenderingContext::texSubImage2D):
        (WebCore::WebGL2RenderingContext::texSubImage3D):
        (WebCore::WebGL2RenderingContext::copyTexSubImage3D):
        (WebCore::WebGL2RenderingContext::compressedTexImage2D):
        (WebCore::WebGL2RenderingContext::compressedTexImage3D):
        (WebCore::WebGL2RenderingContext::compressedTexSubImage3D):
        (WebCore::WebGL2RenderingContext::getFragDataLocation):
        (WebCore::WebGL2RenderingContext::uniform1ui):
        (WebCore::WebGL2RenderingContext::uniform2ui):
        (WebCore::WebGL2RenderingContext::uniform3ui):
        (WebCore::WebGL2RenderingContext::uniform4ui):
        (WebCore::WebGL2RenderingContext::uniform1uiv):
        (WebCore::WebGL2RenderingContext::uniform2uiv):
        (WebCore::WebGL2RenderingContext::uniform3uiv):
        (WebCore::WebGL2RenderingContext::uniform4uiv):
        (WebCore::WebGL2RenderingContext::uniformMatrix2x3fv):
        (WebCore::WebGL2RenderingContext::uniformMatrix3x2fv):
        (WebCore::WebGL2RenderingContext::uniformMatrix2x4fv):
        (WebCore::WebGL2RenderingContext::uniformMatrix4x2fv):
        (WebCore::WebGL2RenderingContext::uniformMatrix3x4fv):
        (WebCore::WebGL2RenderingContext::uniformMatrix4x3fv):
        (WebCore::WebGL2RenderingContext::vertexAttribI4i):
        (WebCore::WebGL2RenderingContext::vertexAttribI4iv):
        (WebCore::WebGL2RenderingContext::vertexAttribI4ui):
        (WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
        (WebCore::WebGL2RenderingContext::vertexAttribIPointer):
        (WebCore::WebGL2RenderingContext::drawRangeElements):
        (WebCore::WebGL2RenderingContext::createQuery):
        (WebCore::WebGL2RenderingContext::deleteQuery):
        (WebCore::WebGL2RenderingContext::isQuery):
        (WebCore::WebGL2RenderingContext::beginQuery):
        (WebCore::WebGL2RenderingContext::endQuery):
        (WebCore::WebGL2RenderingContext::getQuery):
        (WebCore::WebGL2RenderingContext::getQueryParameter):
        (WebCore::WebGL2RenderingContext::createSampler):
        (WebCore::WebGL2RenderingContext::deleteSampler):
        (WebCore::WebGL2RenderingContext::isSampler):
        (WebCore::WebGL2RenderingContext::bindSampler):
        (WebCore::WebGL2RenderingContext::samplerParameteri):
        (WebCore::WebGL2RenderingContext::samplerParameterf):
        (WebCore::WebGL2RenderingContext::getSamplerParameter):
        (WebCore::WebGL2RenderingContext::fenceSync):
        (WebCore::WebGL2RenderingContext::isSync):
        (WebCore::WebGL2RenderingContext::deleteSync):
        (WebCore::WebGL2RenderingContext::clientWaitSync):
        (WebCore::WebGL2RenderingContext::waitSync):
        (WebCore::WebGL2RenderingContext::getSyncParameter):
        (WebCore::WebGL2RenderingContext::createTransformFeedback):
        (WebCore::WebGL2RenderingContext::deleteTransformFeedback):
        (WebCore::WebGL2RenderingContext::isTransformFeedback):
        (WebCore::WebGL2RenderingContext::bindTransformFeedback):
        (WebCore::WebGL2RenderingContext::beginTransformFeedback):
        (WebCore::WebGL2RenderingContext::endTransformFeedback):
        (WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
        (WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
        (WebCore::WebGL2RenderingContext::pauseTransformFeedback):
        (WebCore::WebGL2RenderingContext::resumeTransformFeedback):
        (WebCore::WebGL2RenderingContext::bindBufferBase):
        (WebCore::WebGL2RenderingContext::bindBufferRange):
        (WebCore::WebGL2RenderingContext::getUniformIndices):
        (WebCore::WebGL2RenderingContext::getUniformBlockIndex):
        (WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
        (WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
        (WebCore::WebGL2RenderingContext::uniformBlockBinding):

2018-09-26  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up RealtimeMediaSource settings change handling
        https://bugs.webkit.org/show_bug.cgi?id=189998
        <rdar://problem/44797884>

        Reviewed by Youenn Fablet.

        No new tests, no change in functionality.

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
        (WebCore::RealtimeMediaSource::setSize):
        (WebCore::RealtimeMediaSource::setFrameRate):
        (WebCore::RealtimeMediaSource::setAspectRatio):
        (WebCore::RealtimeMediaSource::setFacingMode):
        (WebCore::RealtimeMediaSource::setVolume):
        (WebCore::RealtimeMediaSource::setSampleRate):
        (WebCore::RealtimeMediaSource::setSampleSize):
        (WebCore::RealtimeMediaSource::setEchoCancellation):
        (WebCore::RealtimeMediaSource::settingsDidChange): Deleted.
        * platform/mediastream/RealtimeMediaSource.h:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::settingsDidChange):
        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::settingsDidChange):
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::settingsDidChange):
        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::settingsDidChange):

2018-09-26  Antoine Quint  <graouts@apple.com>

        [Web Animations] Ensure renderers with accelerated animations have layers
        https://bugs.webkit.org/show_bug.cgi?id=189990
        <rdar://problem/44791222>

        Reviewed by Zalan Bujtas.

        We have done some work already in webkit.org/b/189784 to prevent never-ending calls to DocumentTimeline::updateAnimations(). This was due to
        the change made for webkit.org/b/186930 where we queued calls to updateAnimations() in KeyframeEffectReadOnly::applyPendingAcceleratedActions()
        while we were waiting for a renderer with a layer backing for a given animation target. Instead of doing this, we now ensure renderers always
        have a layer when they have an accelerated animation applied.

        No new tests, this is already covered by webanimations/accelerated-animation-with-delay.html and webanimations/opacity-animation-yields-compositing-span.html
        which respectively check that we can apply an accelerated animation to a non-positioned block and an inline element.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const): This method should have been marked const all along and it is
        now required so it can be called through RenderBox::requiresLayer() and RenderInline::requiresLayer().
        (WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated): Deleted.
        * animation/DocumentTimeline.h:
        * animation/KeyframeEffectReadOnly.cpp:
        (WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Stop enqueuing the accelerated actions in case we're lacking a composited renderer
        since this situation should no longer arise.
        * rendering/RenderBox.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.
        * rendering/RenderBoxModelObject.cpp:
        (WebCore::RenderBoxModelObject::hasRunningAcceleratedAnimations const): Query the document timeline, if it exists, to check that this renderer's element
        has accelerated animations applied.
        * rendering/RenderBoxModelObject.h:
        * rendering/RenderInline.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.

2018-09-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add Mac window capture source
        https://bugs.webkit.org/show_bug.cgi?id=189958
        <rdar://problem/44767616>

        Reviewed by Youenn Fablet.

        * SourcesCocoa.txt: Add WindowDisplayCaptureSourceMac.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:
        (WebCore::DisplayCaptureManagerCocoa::captureDevices): Include window "devices".
        (WebCore::DisplayCaptureManagerCocoa::updateWindowCaptureDevices): New.
        (WebCore::DisplayCaptureManagerCocoa::windowCaptureDeviceWithPersistentID): New.
        (WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): Include window devices.
        * platform/mediastream/mac/DisplayCaptureManagerCocoa.h:

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
        (WebCore::DisplayCaptureSourceCocoa::settings): Use frameSize, report surface type and 
        logical surface.
        (WebCore::DisplayCaptureSourceCocoa::settingsDidChange): Clear m_lastSampleBuffer when size changes.
        (WebCore::DisplayCaptureSourceCocoa::frameSize const): New, return size() or intrinsic size.
        (WebCore::DisplayCaptureSourceCocoa::setIntrinsicSize): New.
        (WebCore::DisplayCaptureSourceCocoa::emitFrame): generateFrame now returns a CVPixelBuffer
        so derived classes don't have to deal with resizing/transforming.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
        (WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Add fixme.
        (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update intrinsic size when
        width/height changes.
        (WebCore::ScreenDisplayCaptureSourceMac::generateFrame): Return a CVPixelBuffer.

        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.h: Added.
        * platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm: Added.
        (WebCore::anyOfCGWindow):
        (WebCore::windowDescription):
        (WebCore::WindowDisplayCaptureSourceMac::create):
        (WebCore::WindowDisplayCaptureSourceMac::WindowDisplayCaptureSourceMac):
        (WebCore::WindowDisplayCaptureSourceMac::windowImage):
        (WebCore::WindowDisplayCaptureSourceMac::generateFrame):
        (WebCore::WindowDisplayCaptureSourceMac::pixelBufferFromCGImage):
        (WebCore::WindowDisplayCaptureSourceMac::windowCaptureDeviceWithPersistentID):
        (WebCore::WindowDisplayCaptureSourceMac::windowCaptureDevices):

2018-09-25  Justin Fan  <justin_fan@apple.com>

        WebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample
        https://bugs.webkit.org/show_bug.cgi?id=189625
        <rdar://problem/42882620>

        Reviewed by Dean Jackson.

        Ref test: webgl/webgl2-primitive-restart.html.

        Implement support for Primitive Restart Fixed Index as expected 
        by the WebGL 2 specifications. 

        * html/canvas/WebGL2RenderingContext.cpp:
        (WebCore::WebGL2RenderingContext::validateIndexArrayConservative):
        * html/canvas/WebGLRenderingContextBase.h:
        (WebCore::WebGLRenderingContextBase::getLastIndex): Template that must be defined in header.
        * html/canvas/WebGLRenderingContextBase.cpp:
        (WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise):
        * platform/graphics/GraphicsContext3D.h:
        * platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::primitiveRestartIndex):

2018-09-25  John Wilander  <wilander@apple.com>

        Change from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
        https://bugs.webkit.org/show_bug.cgi?id=189959
        <rdar://problem/44767642>

        Reviewed by Chris Dumez.

        No new tests because of no code change.

        We no longer make use of CFNetwork's cookie partitioning so we should
        change the compile-time flag to something that makes sense. This should
        also make it easier/cleaner for other ports.

        * dom/Document.cpp:
        (WebCore::Document::hasStorageAccess):
        (WebCore::Document::requestStorageAccess):
        (WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction):
        * dom/Document.h:
        * loader/EmptyFrameLoaderClient.h:
        * loader/FrameLoaderClient.h:
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
        (WebCore::ResourceLoadObserver::logWindowCreation):
        * loader/ResourceLoadObserver.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::cookiesForURL):
        (WebCore::NetworkStorageSession::setCookiesFromDOM const):

2018-09-25  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279
        <rdar://problem/44116792>

        Reviewed by Chris Dumez.

        This patch does the following things in WebCore in order to support AuthenticatorManager:
        1) It separates AuthenticatorTransport from PublicKeyCredentialDescriptor such that the enum
        can be queried from WebKit directly.
        2) It adds AuthenticatorAttachment to PublicKeyCredentialCreationOptions such that relying parties
        could express their interests in cross platform authenticators.
        3) It enhances IPC encoder/decoder of a few such that Vectors and empty objects can be correctly coded.
        4) It moves the LocalAuthenticator implementation to WebKit to better integrate with AuthenticatorManager.
        5) It moves linking to LocalAuthentication.framework to WebKit as well.
        6) It temporarily bans old mock test mechanism in Internals so we could enable the new mock test mechanism in
        WebKitTestRunner which we will have a better coverage of codes in UI Process. Those tests will be either
        removed or ported to the new mechanism in Bug 189283.
        7) It also removes "using namespace WebCore" from the top namespace in some .mm files as they are reordered
        to where they could introduce name confusions.

        Tests: http/wpt/webauthn/public-key-credential-create-failure-local.https.html
               http/wpt/webauthn/public-key-credential-create-success-local.https.html
               http/wpt/webauthn/public-key-credential-get-failure-local.https.html
               http/wpt/webauthn/public-key-credential-get-success-local.https.html
               http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available.html

        * CMakeLists.txt:
        * Configurations/WebCore.xcconfig:
        * DerivedSources.make:
        * Modules/webauthn/AuthenticatorTransport.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * Modules/webauthn/AuthenticatorTransport.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialDescriptor.idl.
        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
        (WebCore::PublicKeyCredentialCreationOptions::encode const):
        (WebCore::PublicKeyCredentialCreationOptions::decode):
        * Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
        * Modules/webauthn/PublicKeyCredentialData.h:
        (WebCore::PublicKeyCredentialData::encode const):
        (WebCore::PublicKeyCredentialData::decode):
        * Modules/webauthn/PublicKeyCredentialDescriptor.h:
        (WebCore::PublicKeyCredentialDescriptor::encode const):
        * Modules/webauthn/PublicKeyCredentialDescriptor.idl:
        * Modules/webauthn/cocoa/LocalAuthenticator.mm: Removed.
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/ExceptionData.h:
        * platform/cocoa/LocalAuthenticationSoftLink.mm: Removed.
        * platform/cocoa/SharedBufferCocoa.mm:
        (-[WebCoreSharedBufferData initWithSharedBufferDataSegment:]):
        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement): Deleted.
        (VideoFullscreenModelVideoElement::~VideoFullscreenModelVideoElement): Deleted.
        (VideoFullscreenModelVideoElement::setVideoElement): Deleted.
        (VideoFullscreenModelVideoElement::handleEvent): Deleted.
        (VideoFullscreenModelVideoElement::updateForEventName): Deleted.
        (VideoFullscreenModelVideoElement::willExitFullscreen): Deleted.
        (VideoFullscreenModelVideoElement::setVideoFullscreenLayer): Deleted.
        (VideoFullscreenModelVideoElement::waitForPreparedForInlineThen): Deleted.
        (VideoFullscreenModelVideoElement::requestFullscreenMode): Deleted.
        (VideoFullscreenModelVideoElement::setVideoLayerFrame): Deleted.
        (VideoFullscreenModelVideoElement::setVideoLayerGravity): Deleted.
        (VideoFullscreenModelVideoElement::observedEventNames): Deleted.
        (VideoFullscreenModelVideoElement::eventNameAll): Deleted.
        (VideoFullscreenModelVideoElement::fullscreenModeChanged): Deleted.
        (VideoFullscreenModelVideoElement::addClient): Deleted.
        (VideoFullscreenModelVideoElement::removeClient): Deleted.
        (VideoFullscreenModelVideoElement::isVisible const): Deleted.
        (VideoFullscreenModelVideoElement::setHasVideo): Deleted.
        (VideoFullscreenModelVideoElement::setVideoDimensions): Deleted.
        (VideoFullscreenModelVideoElement::willEnterPictureInPicture): Deleted.
        (VideoFullscreenModelVideoElement::didEnterPictureInPicture): Deleted.
        (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture): Deleted.
        (VideoFullscreenModelVideoElement::willExitPictureInPicture): Deleted.
        (VideoFullscreenModelVideoElement::didExitPictureInPicture): Deleted.
        * platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:
        (WebCore::hasExplicitBeginTime):
        (WebCore::setHasExplicitBeginTime):
        (WebCore::toCAFillModeType):
        (WebCore::toCAValueFunctionType):
        (WebCore::toCAMediaTimingFunction):
        (WebCore::PlatformCAAnimationCocoa::setFromValue):
        (WebCore::PlatformCAAnimationCocoa::setToValue):
        (WebCore::PlatformCAAnimationCocoa::setValues):
        (fromCAFillModeType): Deleted.
        (fromCAValueFunctionType): Deleted.
        (PlatformCAAnimationCocoa::create): Deleted.
        (PlatformCAAnimationCocoa::PlatformCAAnimationCocoa): Deleted.
        (PlatformCAAnimationCocoa::~PlatformCAAnimationCocoa): Deleted.
        (PlatformCAAnimationCocoa::copy const): Deleted.
        (PlatformCAAnimationCocoa::platformAnimation const): Deleted.
        (PlatformCAAnimationCocoa::keyPath const): Deleted.
        (PlatformCAAnimationCocoa::beginTime const): Deleted.
        (PlatformCAAnimationCocoa::setBeginTime): Deleted.
        (PlatformCAAnimationCocoa::duration const): Deleted.
        (PlatformCAAnimationCocoa::setDuration): Deleted.
        (PlatformCAAnimationCocoa::speed const): Deleted.
        (PlatformCAAnimationCocoa::setSpeed): Deleted.
        (PlatformCAAnimationCocoa::timeOffset const): Deleted.
        (PlatformCAAnimationCocoa::setTimeOffset): Deleted.
        (PlatformCAAnimationCocoa::repeatCount const): Deleted.
        (PlatformCAAnimationCocoa::setRepeatCount): Deleted.
        (PlatformCAAnimationCocoa::autoreverses const): Deleted.
        (PlatformCAAnimationCocoa::setAutoreverses): Deleted.
        (PlatformCAAnimationCocoa::fillMode const): Deleted.
        (PlatformCAAnimationCocoa::setFillMode): Deleted.
        (PlatformCAAnimationCocoa::setTimingFunction): Deleted.
        (PlatformCAAnimationCocoa::copyTimingFunctionFrom): Deleted.
        (PlatformCAAnimationCocoa::isRemovedOnCompletion const): Deleted.
        (PlatformCAAnimationCocoa::setRemovedOnCompletion): Deleted.
        (PlatformCAAnimationCocoa::isAdditive const): Deleted.
        (PlatformCAAnimationCocoa::setAdditive): Deleted.
        (PlatformCAAnimationCocoa::valueFunction const): Deleted.
        (PlatformCAAnimationCocoa::setValueFunction): Deleted.
        (PlatformCAAnimationCocoa::setFromValue): Deleted.
        (PlatformCAAnimationCocoa::copyFromValueFrom): Deleted.
        (PlatformCAAnimationCocoa::setToValue): Deleted.
        (PlatformCAAnimationCocoa::copyToValueFrom): Deleted.
        (PlatformCAAnimationCocoa::setValues): Deleted.
        (PlatformCAAnimationCocoa::copyValuesFrom): Deleted.
        (PlatformCAAnimationCocoa::setKeyTimes): Deleted.
        (PlatformCAAnimationCocoa::copyKeyTimesFrom): Deleted.
        (PlatformCAAnimationCocoa::setTimingFunctions): Deleted.
        (PlatformCAAnimationCocoa::copyTimingFunctionsFrom): Deleted.
        * platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
        (PlatformCAFilters::filterValueForOperation): Deleted.
        (PlatformCAFilters::colorMatrixValueForFilter): Deleted.
        (PlatformCAFilters::setBlendingFiltersOnLayer): Deleted.
        (PlatformCAFilters::numAnimatedFilterProperties): Deleted.
        (PlatformCAFilters::animatedFilterPropertyName): Deleted.
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (-[WebAnimationDelegate animationDidStart:]):
        (-[WebAnimationDelegate animationDidStop:finished:]):
        (-[WebAnimationDelegate setOwner:]):
        (PlatformCALayerCocoa::create): Deleted.
        (PlatformCALayer::platformCALayer): Deleted.
        (mediaTimeToCurrentTime): Deleted.
        (PlatformCALayerCocoa::setOwner): Deleted.
        (toCAFilterType): Deleted.
        (PlatformCALayerCocoa::layerTypeForPlatformLayer): Deleted.
        (PlatformCALayerCocoa::PlatformCALayerCocoa): Deleted.
        (PlatformCALayerCocoa::commonInit): Deleted.
        (PlatformCALayerCocoa::clone const): Deleted.
        (PlatformCALayerCocoa::~PlatformCALayerCocoa): Deleted.
        (PlatformCALayerCocoa::animationStarted): Deleted.
        (PlatformCALayerCocoa::animationEnded): Deleted.
        (PlatformCALayerCocoa::setNeedsDisplay): Deleted.
        (PlatformCALayerCocoa::setNeedsDisplayInRect): Deleted.
        (PlatformCALayerCocoa::copyContentsFromLayer): Deleted.
        (PlatformCALayerCocoa::superlayer const): Deleted.
        (PlatformCALayerCocoa::removeFromSuperlayer): Deleted.
        (PlatformCALayerCocoa::setSublayers): Deleted.
        (PlatformCALayerCocoa::removeAllSublayers): Deleted.
        (PlatformCALayerCocoa::appendSublayer): Deleted.
        (PlatformCALayerCocoa::insertSublayer): Deleted.
        (PlatformCALayerCocoa::replaceSublayer): Deleted.
        (PlatformCALayerCocoa::adoptSublayers): Deleted.
        (PlatformCALayerCocoa::addAnimationForKey): Deleted.
        (PlatformCALayerCocoa::removeAnimationForKey): Deleted.
        (PlatformCALayerCocoa::animationForKey): Deleted.
        (PlatformCALayerCocoa::setMask): Deleted.
        (PlatformCALayerCocoa::isOpaque const): Deleted.
        (PlatformCALayerCocoa::setOpaque): Deleted.
        (PlatformCALayerCocoa::bounds const): Deleted.
        (PlatformCALayerCocoa::setBounds): Deleted.
        (PlatformCALayerCocoa::position const): Deleted.
        (PlatformCALayerCocoa::setPosition): Deleted.
        (PlatformCALayerCocoa::anchorPoint const): Deleted.
        (PlatformCALayerCocoa::setAnchorPoint): Deleted.
        (PlatformCALayerCocoa::transform const): Deleted.
        (PlatformCALayerCocoa::setTransform): Deleted.
        (PlatformCALayerCocoa::sublayerTransform const): Deleted.
        (PlatformCALayerCocoa::setSublayerTransform): Deleted.
        (PlatformCALayerCocoa::isHidden const): Deleted.
        (PlatformCALayerCocoa::setHidden): Deleted.
        (PlatformCALayerCocoa::contentsHidden const): Deleted.
        (PlatformCALayerCocoa::setContentsHidden): Deleted.
        (PlatformCALayerCocoa::userInteractionEnabled const): Deleted.
        (PlatformCALayerCocoa::setUserInteractionEnabled): Deleted.
        (PlatformCALayerCocoa::setBackingStoreAttached): Deleted.
        (PlatformCALayerCocoa::backingStoreAttached const): Deleted.
        (PlatformCALayerCocoa::geometryFlipped const): Deleted.
        (PlatformCALayerCocoa::setGeometryFlipped): Deleted.
        (PlatformCALayerCocoa::isDoubleSided const): Deleted.
        (PlatformCALayerCocoa::setDoubleSided): Deleted.
        (PlatformCALayerCocoa::masksToBounds const): Deleted.
        (PlatformCALayerCocoa::setMasksToBounds): Deleted.
        (PlatformCALayerCocoa::acceleratesDrawing const): Deleted.
        (PlatformCALayerCocoa::setAcceleratesDrawing): Deleted.
        (PlatformCALayerCocoa::wantsDeepColorBackingStore const): Deleted.
        (PlatformCALayerCocoa::setWantsDeepColorBackingStore): Deleted.
        (PlatformCALayerCocoa::supportsSubpixelAntialiasedText const): Deleted.
        (PlatformCALayerCocoa::setSupportsSubpixelAntialiasedText): Deleted.
        (PlatformCALayerCocoa::hasContents const): Deleted.
        (PlatformCALayerCocoa::contents const): Deleted.
        (PlatformCALayerCocoa::setContents): Deleted.
        (PlatformCALayerCocoa::setContentsRect): Deleted.
        (PlatformCALayerCocoa::setMinificationFilter): Deleted.
        (PlatformCALayerCocoa::setMagnificationFilter): Deleted.
        (PlatformCALayerCocoa::backgroundColor const): Deleted.
        (PlatformCALayerCocoa::setBackgroundColor): Deleted.
        (PlatformCALayerCocoa::setBorderWidth): Deleted.
        (PlatformCALayerCocoa::setBorderColor): Deleted.
        (PlatformCALayerCocoa::opacity const): Deleted.
        (PlatformCALayerCocoa::setOpacity): Deleted.
        (PlatformCALayerCocoa::setFilters): Deleted.
        (PlatformCALayerCocoa::copyFiltersFrom): Deleted.
        (PlatformCALayerCocoa::filtersCanBeComposited): Deleted.
        (PlatformCALayerCocoa::setBlendMode): Deleted.
        (PlatformCALayerCocoa::setName): Deleted.
        (PlatformCALayerCocoa::setSpeed): Deleted.
        (PlatformCALayerCocoa::setTimeOffset): Deleted.
        (PlatformCALayerCocoa::contentsScale const): Deleted.
        (PlatformCALayerCocoa::setContentsScale): Deleted.
        (PlatformCALayerCocoa::cornerRadius const): Deleted.
        (PlatformCALayerCocoa::setCornerRadius): Deleted.
        (PlatformCALayerCocoa::setEdgeAntialiasingMask): Deleted.
        (PlatformCALayerCocoa::shapeRoundedRect const): Deleted.
        (PlatformCALayerCocoa::setShapeRoundedRect): Deleted.
        (PlatformCALayerCocoa::shapeWindRule const): Deleted.
        (PlatformCALayerCocoa::setShapeWindRule): Deleted.
        (PlatformCALayerCocoa::shapePath const): Deleted.
        (PlatformCALayerCocoa::setShapePath): Deleted.
        (PlatformCALayerCocoa::requiresCustomAppearanceUpdateOnBoundsChange const): Deleted.
        (PlatformCALayerCocoa::updateCustomAppearance): Deleted.
        (layerContentsFormat): Deleted.
        (PlatformCALayerCocoa::updateContentsFormat): Deleted.
        (PlatformCALayerCocoa::tiledBacking): Deleted.
        (PlatformCALayer::isWebLayer): Deleted.
        (PlatformCALayer::setBoundsOnMainThread): Deleted.
        (PlatformCALayer::setPositionOnMainThread): Deleted.
        (PlatformCALayer::setAnchorPointOnMainThread): Deleted.
        (PlatformCALayer::collectRectsToPaint): Deleted.
        (PlatformCALayer::drawLayerContents): Deleted.
        (PlatformCALayer::frameForLayer): Deleted.
        (PlatformCALayerCocoa::createCompatibleLayer const): Deleted.
        (PlatformCALayerCocoa::enumerateRectsBeingDrawn): Deleted.
        (PlatformCALayerCocoa::backingStoreBytesPerPixel const): Deleted.
        (PlatformCALayerCocoa::avPlayerLayer const): Deleted.
        * platform/graphics/ca/cocoa/WebSystemBackdropLayer.mm:
        (-[WebLightSystemBackdropLayer init]):
        (-[WebDarkSystemBackdropLayer init]):
        * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
        (-[WebTiledBackingLayer createTileController:]):
        (-[WebTiledBackingLayer setNeedsDisplayInRect:]):
        (-[WebTiledBackingLayer setBorderColor:]):
        * testing/Internals.cpp:
        (WebCore::Internals::Internals):

2018-09-25  YUHAN WU  <yuhan_wu@apple.com>

        Implement MediaStreamTrack Content Hints
        https://bugs.webkit.org/show_bug.cgi?id=189262
        <rdar://problem/44101773>

        Reviewed by Youenn Fablet.

        contentHint is a new attribute which is stored in MediaStreamTrackPrivate.
        https://w3c.github.io/mst-content-hint/

        Covered by tests: 
        LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
        LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/idlharness.window.html

        * Modules/mediastream/MediaStreamTrack.cpp:
        (WebCore::MediaStreamTrack::contentHint const):
        (WebCore::MediaStreamTrack::setContentHint):
        * Modules/mediastream/MediaStreamTrack.h:
        * Modules/mediastream/MediaStreamTrack.idl:
        * platform/mediastream/MediaStreamTrackPrivate.cpp:
        (WebCore::MediaStreamTrackPrivate::setContentHint):
        (WebCore::MediaStreamTrackPrivate::clone):
        * platform/mediastream/MediaStreamTrackPrivate.h:
        (WebCore::MediaStreamTrackPrivate::contentHint):

2018-09-25  Alex Christensen  <achristensen@webkit.org>

        Allow for suffixes to com.apple.WebKit.WebContent
        https://bugs.webkit.org/show_bug.cgi?id=189972

        Reviewed by Chris Dumez.

        * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
        (WebCore::isInWebProcess):

2018-09-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Fix the open source iOS 12 build after r236445
        https://bugs.webkit.org/show_bug.cgi?id=189953

        Reviewed by Alex Christensen.

        Remove soft-linking macros from several sources in WebCore, and instead import UIKitSoftLink from PAL. This
        allows different WebCore sources to soft-link UIKit (and its classes and symbols) without reimplementing
        WebCore::UIKitLibrary.

        * editing/cocoa/FontAttributesCocoa.mm:
        * editing/cocoa/FontShadowCocoa.mm:
        (WebCore::FontShadow::createShadow const):
        * platform/graphics/cocoa/ColorCocoa.mm:
        (WebCore::platformColor):
        * platform/ios/PlatformScreenIOS.mm:
        (WebCore::screenIsMonochrome):
        (WebCore::screenHasInvertedColors):
        (WebCore::screenSize):
        (WebCore::availableScreenSize):
        (WebCore::screenScaleFactor):

2018-09-25  Thibault Saunier  <tsaunier@igalia.com>

        [WPE][GTK][WebRTC] Fixup VP8 encoding support
        https://bugs.webkit.org/show_bug.cgi?id=189921

        Previous leak fixing commit introduced a regression in
        the way the encoded buffer were prepared in the default
        GStreamerVideoEncoder::Fragmentize implementation (when
        encoding with VP8 basically).

        + Fix a build warning in the decoder.
        + Fix some wrong object members namings.
        + Properly move the caps reference when setting restriction caps.
        + Do not raise a GStreamer error when GStreamerVideoEncoder::OnEncodedImage
          fails - this might be a network issue and other encoders do not consider that
          fatal.
        + Use GstMappedBuffer where appropriate.

        Reviewed by Philippe Normand.

        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):
        (WebCore::GStreamerVideoEncoder::newSampleCallback):
        (WebCore::GStreamerVideoEncoder::Fragmentize):
        (WebCore::GStreamerVideoEncoder::SetRestrictionCaps):

2018-09-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Update constraints supported by getDisplayMedia
        https://bugs.webkit.org/show_bug.cgi?id=189930

        Reviewed by Youenn Fablet.

        No new tests, updated http/tests/media/media-stream/get-display-media-prompt.html.

        * Modules/mediastream/MediaDevices.cpp:
        (WebCore::MediaDevices::getDisplayMedia const): Ignore audio constraints.

        * Modules/mediastream/UserMediaRequest.cpp:
        (WebCore::hasInvalidGetDisplayMediaConstraint): Check for invalid constraints.
        (WebCore::UserMediaRequest::start): Check for invalid constraints.
        (WebCore::UserMediaRequest::deny): Support new error.
        * Modules/mediastream/UserMediaRequest.h:

        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
        (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):

2018-09-25  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [EME] Fix variable name that should have gone in r236317
        https://bugs.webkit.org/show_bug.cgi?id=189944

        Reviewed by Jer Noble.

        m_cdmInstanceClientWeakPtrFactory becomes
        m_cdmInstanceSessionClientWeakPtrFactory as its type changes to
        CDMInstanceSessionClient.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::MediaKeySession):
        * Modules/encryptedmedia/MediaKeySession.h:

2018-09-25  Simon Fraser  <simon.fraser@apple.com>

        Clean up code around RenderLayer's "has accelerated scrolling" functions
        https://bugs.webkit.org/show_bug.cgi?id=189932

        Reviewed by Zalan Bujtas.
        
        RenderLayer had:
        
        bool hasAcceleratedTouchScrolling()
        bool hasTouchScrollableOverflow()
        bool usesAcceleratedScrolling()
        bool usesCompositedScrolling()
        bool usesAsyncScrolling()
        
        which are hard to keep in your head. Removed usesAcceleratedScrolling() since it just returns hasTouchScrollableOverflow().
        Renamed hasAcceleratedTouchScrolling() to canUseAcceleratedTouchScrolling() to indicate that it just looks at style,
        not whether layout has given the layer scrollable overflow yet. Tidy up some #ifdefs.
        
        usesCompositedScrolling() and usesAsyncScrolling() are ScrollableArea overrides, and
        look at backing layers, so require that compositing has run already. Note this in comments.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
        (WebCore::RenderLayer::hasTouchScrollableOverflow const):
        (WebCore::RenderLayer::handleTouchEvent):
        (WebCore::RenderLayer::usesAsyncScrolling const):
        (WebCore::RenderLayer::showsOverflowControls const):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::RenderLayer::hasAcceleratedTouchScrolling const): Deleted.
        (WebCore::RenderLayer::usesAcceleratedScrolling const): Deleted.
        * rendering/RenderLayer.h:
        * rendering/RenderLayerBacking.cpp:
        (WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
        (WebCore::RenderLayerBacking::updateConfiguration):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):

2018-09-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Rename WTF_COMPILER_GCC_OR_CLANG to WTF_COMPILER_GCC_COMPATIBLE
        https://bugs.webkit.org/show_bug.cgi?id=189733

        Reviewed by Michael Catanzaro.

        No new tests (No behavior change).

        * platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
        * platform/graphics/cpu/arm/filters/FELightingNEON.h:
        * platform/graphics/filters/FELighting.cpp:
        (WebCore::FELighting::platformApply):
        * platform/graphics/filters/FELighting.h:

2018-09-24  John Wilander  <wilander@apple.com>

        Cap lifetime of persistent cookies created client-side through document.cookie
        https://bugs.webkit.org/show_bug.cgi?id=189933
        <rdar://problem/44741888>

        Reviewed by Chris Dumez.

        Test: http/tests/cookies/capped-lifetime-for-cookie-set-in-js.html

        As pointed out in https://github.com/mikewest/http-state-tokens:

        1) Cookies are available to JavaScript by default via document.cookie, which
        enables a smooth upgrade from one-time XSS to theft of persistent credentials
        and also makes cookies available to Spectre-like attacks on memory.

        2) Though the HttpOnly attribute was introduced well over a decade ago, only
        ~8.31% of Set-Cookie operations use it today (stats from Chrome). We need
        developer incentives to put proper protections in place.

        3) The median (uncompressed) Cookie request header is 409 bytes, while the 90th
        percentile is 1,589 bytes, the 95th 2,549 bytes, the 99th 4,601 bytes, and
        ~0.1% of Cookie headers are over 10kB (stats from Chrome). This is bad for load
        performance.

        In addition to this, third-party scripts running in first-party contexts can
        read user data through document.cookie and even store cross-site tracking data
        in them.

        Authentication cookies should be HttpOnly and thus not be affected by
        restrictions to document.cookie. Cookies that persist for a long time should
        be Secure, HttpOnly, and SameSite to provide good security and privacy.

        By capping the lifetime of persistent cookies set through document.cookie we
        embark on a journey towards better cookie management on the web.

        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
        (WebCore::filterCookies):
            Now caps the life time of persistent cookies to one week (seven days).
        * testing/Internals.cpp:
        (WebCore::Internals::getCookies const):
            New test function to get to cookie meta data such as expiry.
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-24  Simon Fraser  <simon.fraser@apple.com>

        Remove filterRes parameter from SVG filters
        https://bugs.webkit.org/show_bug.cgi?id=129565
        <rdar://problem/44714340>

        Reviewed by Dean Jackson.
        
        Remove support for the "filterRes" attribute on SVG filters. It's marked as
        deprecated in https://drafts.fxtf.org/filter-effects/#element-attrdef-filter-filterres
        and no longer supported by Chrome or Firefox.
        
        Removed existing filterRes tests, added new test checking that it has no effect.

        Tests: svg/filters/filterRes-is-noop.svg

        * rendering/svg/RenderSVGResourceFilter.cpp:
        (WebCore::RenderSVGResourceFilter::applyResource):
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::animatableAttributeForName):
        * svg/SVGFilterElement.cpp:
        (WebCore::SVGFilterElement::registerAttributes):
        (WebCore::SVGFilterElement::parseAttribute):
        (WebCore::SVGFilterElement::filterResXIdentifier): Deleted.
        (WebCore::SVGFilterElement::filterResYIdentifier): Deleted.
        (WebCore::SVGFilterElement::setFilterRes): Deleted.
        * svg/SVGFilterElement.h:
        * svg/SVGFilterElement.idl:
        * svg/svgattrs.in:

2018-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        Don't cause a crash even when some IDL attribute is missing CEReactions
        https://bugs.webkit.org/show_bug.cgi?id=189937

        Reviewed by Simon Fraser.

        Replaced release assertions in ElementQueue::add and ElementQueue::invokeAll by debug assertions
        since a missing CEReactions resulting in a crash is a terrible user experience.

        Also made the iteration in invokeAll safe when more elements were added to m_elements.

        No new tests since we would still hit debug assertions, and this behavior should only come up
        when some IDL attribute is erroneously missing CEReactions.

        * dom/CustomElementReactionQueue.cpp:
        (WebCore::CustomElementReactionQueue::ElementQueue::add):
        (WebCore::CustomElementReactionQueue::ElementQueue::invokeAll):

2018-09-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor Editor::fontAttributesForSelectionStart to be platform-agnostic
        https://bugs.webkit.org/show_bug.cgi?id=189918
        Work towards <rdar://problem/44648705>

        Reviewed by Tim Horton.

        Refactors the functionality in Editor::fontAttributesForSelectionStart to not be Cocoa-only. Rename this to
        fontAttributesAtSelectionStart (to be consistent with `EditingStyle::styleAtSelectionStart`) and move it from
        EditorCocoa.mm to Editor.cpp; instead of creating and populating an NSDictionary with font attribute
        information, create and populate a new `FontAttributes` struct that contains the same information. Cocoa clients
        in WebKitLegacy may then create an `NSDictionary` as needed from the `FontAttributes`.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * editing/Editor.cpp:
        (WebCore::Editor::platformFontAttributesAtSelectionStart const):

        Add a hook to allow platforms to supply additional information in FontAttributes. On Cocoa, this adds a UIFont
        or NSFont to FontAttributes; otherwise, this is a no-op.

        (WebCore::Editor::fontAttributesAtSelectionStart const):
        * editing/Editor.h:
        * editing/FontAttributeChanges.cpp:
        (WebCore::cssValueListForShadow):
        * editing/FontAttributeChanges.h:
        (): Deleted.
        (WebCore::FontShadow::encode const): Deleted.
        (WebCore::FontShadow::decode): Deleted.
        * editing/FontAttributes.h: Added.

        Introduce a new struct that contains font attribute information. May be converted into an NSDictionary for use
        by Cocoa clients in WebKitLegacy and WebKit. In a future patch, this will become serializable over IPC for use
        in WebKit2.

        * editing/FontShadow.h: Added.

        Move FontShadow out into a separate header file, included in `FontAttributeChanges.h` and `FontAttributes.h`.

        (WebCore::FontShadow::encode const):
        (WebCore::FontShadow::decode):
        * editing/cocoa/EditorCocoa.mm:

        Add a helper function to convert a WebCore::Color to either `UIColor` on iOS or `NSColor` when AppKit is being
        used.

        (WebCore::Editor::platformFontAttributesAtSelectionStart const):
        (WebCore::Editor::getTextDecorationAttributesRespectingTypingStyle const): Deleted.

        Remove a helper function that was only used to compute text decoration attributes in
        fontAttributesForSelectionStart.

        (WebCore::Editor::fontAttributesForSelectionStart const): Deleted.
        * editing/cocoa/FontAttributesCocoa.mm: Added.
        (WebCore::FontAttributes::createDictionary const):
        * editing/cocoa/FontShadowCocoa.mm: Added.
        (WebCore::FontShadow::createShadow const):
        * editing/cocoa/HTMLConverter.mm:
        (_webKitBundle):
        (HTMLConverter::_colorForElement):
        (_platformColor): Deleted.

        Adopt platformColor().

        * platform/graphics/cocoa/ColorCocoa.h: Added.
        * platform/graphics/cocoa/ColorCocoa.mm: Added.
        (WebCore::platformColor):
        * platform/graphics/metal/GPURenderPassDescriptorMetal.mm:

        Build fix due to changes in unified sources.

        * platform/mac/WebCoreNSFontManagerExtras.mm:
        (WebCore::computedFontAttributeChanges):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

        More build fixes due to changes in unified sources.

2018-09-24  Jer Noble  <jer.noble@apple.com>

        SharedBuffer should have an equality test
        https://bugs.webkit.org/show_bug.cgi?id=189919

        Reviewed by Alex Christensen.

        Test: TestWebKitAPI SharedBuffer.isEqualTo.

        * platform/SharedBuffer.cpp:
        * platform/SharedBuffer.h:
        (WebCore::operator==):
        (WebCore::operator!=):

2018-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        imported/w3c/web-platform-tests/shadow-dom/slotchange.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=167652

        Reviewed by Saam Barati.

        The bug appears to be caused by the JS wrappers of slot elements getting prematurely collected.
        Deployed GCReachableRef introduced in r236376 to fix the bug.

        Test: fast/shadow-dom/signal-slot-list-retains-js-wrappers.html

        * dom/MutationObserver.cpp:
        (WebCore::signalSlotList):
        (WebCore::MutationObserver::enqueueSlotChangeEvent):
        (WebCore::MutationObserver::notifyMutationObservers):

2018-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        Release assert when using paper-textarea due to autocorrect IDL attribute missing CEReactions
        https://bugs.webkit.org/show_bug.cgi?id=174629
        <rdar://problem/33407620>

        Reviewed by Simon Fraser.

        The bug was caused by autocorrect and autocapitalize IDL attributes missing CEReactions.

        Test: fast/custom-elements/autocorrect-autocapitalize-idl-attributes-crash.html

        * html/HTMLElement.idl:

2018-09-24  Chris Dumez  <cdumez@apple.com>

        No-op document.open() calls should not have any side effects
        https://bugs.webkit.org/show_bug.cgi?id=189373
        <rdar://problem/44282702>

        Reviewed by Geoffrey Garen.

        Update document.open() implementation to match the specification [1] more closely.
        In particular, URLs updates should happen much later, at step 11. They were happening
        too early and would cause side effects when returning early.

        [1] https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document-open-steps

        No new tests, rebaselined existing test.

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

2018-09-24  Daniel Bates  <dabates@apple.com>

        Include more headers in IOSurface.mm, PixelBufferResizer.{h, mm}
        https://bugs.webkit.org/show_bug.cgi?id=189928

        Reviewed by Andy Estes.

        Make building IOSurface.mm and PixelBufferResizer.mm deterministic regardless of
        which bundle of unified sources they are built in.

        * platform/graphics/cocoa/IOSurface.mm: Include headers HostWindow.h and PlatformScreen.h
        since we make use of functionality from these headers.
        * platform/graphics/cv/PixelBufferResizer.h: Include header IntSize.h since
        we need the size of an IntSize for m_size.
        * platform/graphics/cv/PixelBufferResizer.mm: Include header Logging.h since
        this file makes use of logging facilities. Also substitute #import for #include
        while I am here since this file is an Objective-C++ file.

2018-09-24  Andy Estes  <aestes@apple.com>

        [Payment Request] Events cleanup
        https://bugs.webkit.org/show_bug.cgi?id=189925

        Reviewed by Simon Fraser.

        1. Constructed MerchantValidationEvents (and ApplePayValidateMerchantEvents) with rvalue
        references to validationURLs.
        2. Instead of MerchantValidationEvent and PaymentRequestUpdateEvent having a
        RefPtr<PaymentRequest>, downcasted their target to a PaymentRequest. Trusted versions of
        these events are always dispatched to a PaymentRequest object.
        3. Defined MerchantValidationEventInit in MerchantValidationEvent.idl instead of having a
        separate .idl and .h for this dictionary.

        No new tests. No change in behavior.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/applepay/ApplePaySession.cpp:
        (WebCore::ApplePaySession::validateMerchant):
        * Modules/applepay/ApplePaySession.h:
        * Modules/applepay/ApplePayValidateMerchantEvent.cpp:
        (WebCore::ApplePayValidateMerchantEvent::ApplePayValidateMerchantEvent):
        * Modules/applepay/ApplePayValidateMerchantEvent.h:
        (WebCore::ApplePayValidateMerchantEvent::create):
        * Modules/applepay/PaymentCoordinator.cpp:
        (WebCore::PaymentCoordinator::validateMerchant):
        * Modules/applepay/PaymentCoordinator.h:
        * Modules/applepay/PaymentSession.h:
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
        (WebCore::ApplePayPaymentHandler::validateMerchant):
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
        * Modules/paymentrequest/MerchantValidationEvent.cpp:
        (WebCore::MerchantValidationEvent::create):
        (WebCore::MerchantValidationEvent::MerchantValidationEvent):
        (WebCore::MerchantValidationEvent::complete):
        * Modules/paymentrequest/MerchantValidationEvent.h:
        * Modules/paymentrequest/MerchantValidationEvent.idl:
        * Modules/paymentrequest/MerchantValidationEventInit.h: Removed.
        * Modules/paymentrequest/MerchantValidationEventInit.idl: Removed.
        * Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
        (WebCore::PaymentMethodChangeEvent::PaymentMethodChangeEvent):
        * Modules/paymentrequest/PaymentMethodChangeEvent.h:
        * Modules/paymentrequest/PaymentRequest.cpp:
        (WebCore::PaymentRequest::shippingAddressChanged):
        (WebCore::PaymentRequest::shippingOptionChanged):
        (WebCore::PaymentRequest::paymentMethodChanged):
        * Modules/paymentrequest/PaymentRequest.h:
        (isType):
        * Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
        (WebCore::PaymentRequestUpdateEvent::PaymentRequestUpdateEvent):
        (WebCore::PaymentRequestUpdateEvent::updateWith):
        * Modules/paymentrequest/PaymentRequestUpdateEvent.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::isPaymentRequest const):
        * dom/EventTarget.h:

2018-09-24  Daniel Bates  <dabates@apple.com>

        Separate Mac and iOS implementation of windowsKeyCodeForCharCode()
        https://bugs.webkit.org/show_bug.cgi?id=189898

        Reviewed by Tim Horton.

        Extract the Mac and iOS implementations into a windowsKeyCodeForCharCode() defined in file
        KeyEventMac.mm and file KeyEventIOS, respectively.

        Mac and iOS have significant differences in how they represent function keys. It is not worthwhile
        to share windowsKeyCodeForCharCode() between them given these differences. On Mac function keys
        are represented by a char code in the range 0xF700-0xF8FF. On iOS these keys may not have a unique
        char code (e.g. F1 = 0x10 = F10) and must be identified either by special string (e.g. UIKeyInputUpArrow)
        or key code.

        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::windowsKeyCodeForCharCode): Deleted.
        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForCharCode): Added. Remove the handling of NS*FunctionKey char codes
        as function keys are not represented using them as of iOS 12.
        * platform/mac/KeyEventMac.mm:
        (WebCore::windowsKeyCodeForCharCode): Added.

2018-09-21  Simon Fraser  <simon.fraser@apple.com>

        Remove the old "AcceleratedCompositingForOverflowScroll" code
        https://bugs.webkit.org/show_bug.cgi?id=189870

        Reviewed by Zalan Bujtas.

        The "AcceleratedCompositingForOverflowScroll" code was added to allow overflow:scroll to use
        composited scrolling if an overflow:scroll could be made a stacking context without affecting
        z-order. We need overflow:scroll to be accelerated always, so a different approach is needed.
        Remove this old code (unused by any platform?) to make working on new code easier.

        * page/Settings.yaml:
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::setHasVisibleContent):
        (WebCore::RenderLayer::updateDescendantDependentFlags):
        (WebCore::RenderLayer::dirty3DTransformedDescendantStatus):
        (WebCore::RenderLayer::stackingContext const):
        (WebCore::compositingContainer):
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::hasAcceleratedTouchScrolling const):
        (WebCore::RenderLayer::usesAcceleratedScrolling const):
        (WebCore::adjustedScrollDelta):
        (WebCore::RenderLayer::updateCompositingLayersAfterScroll):
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
        (WebCore::RenderLayer::enclosingFragmentedFlowAncestor const):
        (WebCore::RenderLayer::calculateClipRects const):
        (WebCore::RenderLayer::acceleratedCompositingForOverflowScrollEnabled const): Deleted.
        (WebCore::RenderLayer::updateDescendantsAreContiguousInStackingOrder): Deleted.
        (WebCore::RenderLayer::updateDescendantsAreContiguousInStackingOrderRecursive): Deleted.
        (WebCore::RenderLayer::positionNewlyCreatedOverflowControls): Deleted.
        (WebCore::RenderLayer::canBeStackingContainer const): Deleted.
        (WebCore::RenderLayer::stackingContainer const): Deleted.
        (WebCore::RenderLayer::needsCompositedScrolling const): Deleted.
        (WebCore::RenderLayer::updateNeedsCompositedScrolling): Deleted.
        * rendering/RenderLayer.h:
        (WebCore::RenderLayer::clearZOrderLists):
        (WebCore::RenderLayer::updateZOrderLists):
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::updateAfterLayout):
        (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
        (WebCore::RenderLayerBacking::updateGeometry):
        (WebCore::RenderLayerBacking::requiresHorizontalScrollbarLayer const):
        (WebCore::RenderLayerBacking::requiresVerticalScrollbarLayer const):
        (WebCore::RenderLayerBacking::requiresScrollCornerLayer const):
        (WebCore::RenderLayerBacking::compositingOpacity const):
        (WebCore::traverseVisibleNonCompositedDescendantLayers):
        (WebCore::RenderLayerBacking::hasUnpositionedOverflowControlsLayers const): Deleted.
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayersAfterFlush):
        (WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
        (WebCore::styleChangeRequiresLayerRebuild):
        (WebCore::RenderLayerCompositor::enclosingNonStackingClippingLayer const):
        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
        (WebCore::RenderLayerCompositor::requiresCompositingLayer const):
        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
        (WebCore::RenderLayerCompositor::reasonsForCompositing const):
        (WebCore::RenderLayerCompositor::requiresCompositingForBackfaceVisibility const):
        (WebCore::RenderLayerCompositor::isViewportConstrainedFixedOrStickyLayer const):
        (WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
        (WebCore::RenderLayerCompositor::requiresCompositingForScrolling const): Deleted.
        * rendering/RenderLayerCompositor.h:

2018-09-24  Youenn Fablet  <youenn@apple.com>

        Enable conversion of libwebrtc internal frames as CVPixelBuffer
        https://bugs.webkit.org/show_bug.cgi?id=189892

        Reviewed by Eric Carlson.

        Make sure to handle the case of libwebrtc frames that are not backed by CVPixelBuffer.
        No observable change of behavior.

        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
        Update according renamed methods.
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
        In case of libwebrtc frame that are not backed by CVPixelBuffer, we create
        a CVPixelBuffer from a pixel buffer pool.
        This CVPixelBuffer is then filled as part of webrtc::pixelBufferFromFrame.
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
        (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV):
        Make sure to use preferred pixel buffer format.

2018-09-24  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add mock window capture source
        https://bugs.webkit.org/show_bug.cgi?id=189843
        <rdar://problem/44687445>

        Reviewed by Youenn Fablet.

        No new tests, the API is disabled and it isn't possible to test yet.

        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::processNewFrame): Remove an extra blank line.

        * platform/mock/MockMediaDevice.h:
        (WebCore::MockDisplayProperties::encode const): Get rid of defaultFrameRate, add type.
        (WebCore::MockDisplayProperties::decode): Ditto.
        (WebCore::MockMediaDevice::type const):

        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::defaultDevices): Add mock window devices.
        (WebCore::MockRealtimeMediaSourceCenter::audioDevices): Cleanup.
        (WebCore::MockRealtimeMediaSourceCenter::videoDevices): Cleanup.
        (WebCore::MockRealtimeMediaSourceCenter::displayDevices): New.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Set default size on displays.
        (WebCore::MockRealtimeVideoSource::supportsSizeAndFrameRate): Call RealtimeVideoSource for 
        mock camera, base class for device.
        (WebCore::MockRealtimeVideoSource::setSizeAndFrameRate): Ditto.
        (WebCore::MockRealtimeVideoSource::generatePresets): ASSERT if called as a camera.
        (WebCore::MockRealtimeVideoSource::capabilities): updateCapabilities is only appropriate for cameras.
        (WebCore::MockRealtimeVideoSource::settings): Camera and Device are different surface types.
        (WebCore::MockRealtimeVideoSource::drawText): Render name, not ID.
        (WebCore::MockRealtimeVideoSource::mockDisplayType const):

        * platform/mock/MockRealtimeVideoSource.h:
        (WebCore::MockRealtimeVideoSource::mockDisplay const):
        (WebCore::MockRealtimeVideoSource::mockScreen const):
        (WebCore::MockRealtimeVideoSource::mockWindow const):

2018-09-24  Daniel Bates  <dabates@apple.com>

        [iOS] Key code is 0 for many hardware keyboard keys
        https://bugs.webkit.org/show_bug.cgi?id=189604

        Reviewed by Wenson Hsieh.

        Based off a patch by Jeremy Jones.

        Add iOS-specific implementation of windowsKeyCodeForKeyCode() to map an iOS virtual key code to
        the corresponding Windows virtual key code. Only hardware keyboard-generated events have a
        virtual key code. For software-generated keyboard events we do what we do now and compute the
        Windows virtual key code from the character string associated with the event.

        When a WebEvent is instantiated with a non-zero iOS virtual key code (keyCode) we now always
        convert it to its corresponding Windows virtual key code without considering the specified
        charactersIgnoringModifiers character string. Currently we prefer computing the key code from
        charactersIgnoringModifiers regardless of whether a non-zero iOS virtual key code was given.
        However this causes special keys, including function keys (e.g. F10) to be misidentified because
        keyboard layouts in iOS (at least iOS 12) map such special keys to ASCII control characters (e.g.
        F10 maps to ASCII control character "data link escape" = 0x10) as opposed to special 16-bit
        integral constants as we do on Mac (e.g. F10 maps to NSF10FunctionKey = 0xF70D on Mac). I will
        look to fix up the computation of a Windows virtual key code from a char code on iOS in a
        subsequent commit(s). For now, computing the Windows virtual key code directly from the iOS
        virtual key code specified to the WebEvent constructor avoids the misidentification using
        an ANSI US keyboard layout.

        * platform/cocoa/KeyEventCocoa.mm:
        (WebCore::windowsKeyCodeForKeyCode): Deleted; moved to KeyEventMac.mm as this mapping is specific to Mac.
        * platform/ios/KeyEventIOS.mm:
        (WebCore::windowsKeyCodeForKeyCode): Added.
        * platform/ios/WebEvent.mm:
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]): Address the NOTE comment and compute the Windows virtual key code from
        the iOS virtual key code when we have one. Also inline the value of an unncessary local variable.
        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]): Ditto.
        * platform/mac/KeyEventMac.mm:
        (WebCore::windowsKeyCodeForKeyCode): Moved from KeyEventCocoa.mm. Updated code to make use of WTF_ARRAY_LENGTH() instead
        of hardcoding the upper bound of the lookup table.

2018-09-24  Simon Fraser  <simon.fraser@apple.com>

        feMorphology filter in CSS doesn't update when element moves
        https://bugs.webkit.org/show_bug.cgi?id=189895

        Reviewed by Dean Jackson.
        
        SourceAlpha needs to be invalidated from clearIntermediateResults(),
        so get it from the SVGFilterBuilder (which always creates one) and store in
        a member variable.

        Test: css3/filters/invalidate-sourceAlpha.html

        * rendering/CSSFilter.cpp:
        (WebCore::CSSFilter::buildReferenceFilter):
        (WebCore::CSSFilter::clearIntermediateResults):
        * rendering/CSSFilter.h:
        * svg/graphics/filters/SVGFilterBuilder.h:

2018-09-24  Simon Fraser  <simon.fraser@apple.com>

        CSS reference filter with feDisplacementMap shows buffer corruption on Retina displays
        https://bugs.webkit.org/show_bug.cgi?id=188486
        <rdar://problem/43189750>

        Reviewed by Dean Jackson.
        
        The paintSize needs to be scaled by filterScale on Retina displays.

        Test: css3/filters/hidpi-feDisplacementMap.html

        * platform/graphics/filters/FEDisplacementMap.cpp:
        (WebCore::FEDisplacementMap::platformApplySoftware):
        * platform/graphics/filters/FEDisplacementMap.h:

2018-09-24  Simon Fraser  <simon.fraser@apple.com>

        ReferenceFilterOperation doesn't need to store the FilterEffect
        https://bugs.webkit.org/show_bug.cgi?id=189904

        Reviewed by Dean Jackson.

        ReferenceFilterOperation doesn't do anything with m_filterEffect so don't store it.

        * platform/graphics/filters/FilterOperation.cpp:
        (WebCore::ReferenceFilterOperation::setFilterEffect): Deleted.
        * platform/graphics/filters/FilterOperation.h:
        (WebCore::ReferenceFilterOperation::filterEffect const): Deleted.
        * rendering/CSSFilter.cpp:
        (WebCore::CSSFilter::build):

2018-09-24  Simon Fraser  <simon.fraser@apple.com>

        Garbled rendering of image when applied feConvolveMatrix to it, on Retina display
        https://bugs.webkit.org/show_bug.cgi?id=189748
        <rdar://problem/44621494>

        Reviewed by Jon Lee.
        
        feConvolveMatrix needs to scale the paintSize by the filter scale (2x on Retina displays),
        otherwise parts of the output buffer are uninitialized and the result is incorrect.

        Test: css3/filters/hidpi-feConvolveMatrix.html

        * platform/graphics/filters/FEConvolveMatrix.cpp:
        (WebCore::FEConvolveMatrix::platformApplySoftware):

2018-09-22  Dean Jackson  <dino@apple.com>

        Ensure PointerEvent is not visible when disabled
        https://bugs.webkit.org/show_bug.cgi?id=189889
        <rdar://problem/44708253>

        Reviewed by Eric Carlson.

        Test: pointerevents/disabled.html

        * bindings/js/WebCoreBuiltinNames.h: Now that it is enabled at runtime, it needs
        a built-in name.
        * dom/PointerEvent.idl: Add EnabledAtRuntime.

2018-09-24  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Pull demuxed samples in batches
        https://bugs.webkit.org/show_bug.cgi?id=189871

        Reviewed by Xabier Rodriguez-Calvar.

        After this patch, only the notifications of "new samples available"
        (appsink-new-sample bus messages) travel from the streaming thread to
        the main thread through the bus and the main thread is the responsible
        of pulling as many samples as it can from appsink. Before, the samples
        were pulled from appsink in the non-main thread and traveled to the
        main thread through the bus one by one.

        This reduces drastically the amount of context switches and waiting
        time in the streaming thread, resulting in a noticeable performance
        improvement.

        This fixes stutter while loading YouTube videos.

        * platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
        (WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::~AppendPipeline):
        (WebCore::AppendPipeline::clearPlayerPrivate):
        (WebCore::AppendPipeline::handleApplicationMessage):
        (WebCore::AppendPipeline::appsinkNewSample):
        (WebCore::AppendPipeline::consumeAppSinkAvailableSamples):
        (WebCore::AppendPipeline::resetPipeline):
        (WebCore::AppendPipeline::handleNewAppsinkSample):
        * platform/graphics/gstreamer/mse/AppendPipeline.h:

2018-09-24  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Change name of WebVTT region attribute 'height' to 'lines'.
        https://bugs.webkit.org/show_bug.cgi?id=189862

        Reviewed by Eric Carlson.

        The WebVTT region attribute 'height' has been renamed to 'lines', see https://w3c.github.io/webvtt/#region-settings.

        No new tests, covered by existing tests.

        * html/track/VTTRegion.cpp:
        (WebCore::VTTRegion::setLines):
        (WebCore::VTTRegion::updateParametersFromRegion):
        (WebCore::VTTRegion::scanSettingName):
        (WebCore::VTTRegion::parseSettingValue):
        (WebCore::VTTRegion::prepareRegionDisplayTree):
        (WebCore::VTTRegion::setHeight): Deleted.
        * html/track/VTTRegion.h:
        * html/track/VTTRegion.idl:

2018-09-24  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Use no-more-pads event for noticing initialization segments
        https://bugs.webkit.org/show_bug.cgi?id=189868

        Reviewed by Xabier Rodriguez-Calvar.

        Fixes the following YTTV 2018 tests:
        62.VideoDimensionVP9
        63.PlaybackStateVP9

        This removes the hack that was making supporting multiple tracks in
        the same file in MSE impossible.

        For WebM, this GStreamer patch is required:
        https://bugzilla.gnome.org/show_bug.cgi?id=797187
        "matroskademux: Emit no-more-pads after parsing Tracks"

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::AppendPipeline):
        (WebCore::AppendPipeline::handleApplicationMessage):
        (WebCore::AppendPipeline::demuxerNoMorePads):
        (WebCore::AppendPipeline::appsinkCapsChanged):
        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
        (WebCore::AppendPipeline::appendPipelineDemuxerNoMorePadsFromAnyThread):
        (WebCore::appendPipelineDemuxerNoMorePads):
        * platform/graphics/gstreamer/mse/AppendPipeline.h:

2018-09-24  Thibault Saunier  <tsaunier@igalia.com>

        [WPE][GTK][WebRTC] Fix leaks in the libwebrtc Decoder and Encoder
        https://bugs.webkit.org/show_bug.cgi?id=189835

        Reviewed by Philippe Normand.

        - Rework memory management to avoid leaking encoded frames (basically use the same
          strategy as other libwebrtc encoder implementation).
        - Plug a GstCaps leak.

        * platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::InitEncode):
        (WebCore::GStreamerVideoEncoder::newSampleCallback):
        (WebCore::GStreamerVideoEncoder::Fragmentize):
        (WebCore::GStreamerVideoEncoder::SetRestrictionCaps):

2018-09-24  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Utilities cleanups
        https://bugs.webkit.org/show_bug.cgi?id=189699
        <rdar://problem/44634143>

        Reviewed by Xabier Rodriguez-Calvar.

        The GstMappedBuffer now has a move constructor so that it can be easily
        reused in the webaudiosrc element. The now-unused corresponding
        buffer-mapping utilities are removed from the code-base.

        The HTTP source element used to handle a GstBuffer in its private
        structure but this is no longer required since data is now pushed
        in chunks, see bug #182829.

        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
        (webKitWebAudioSrcLoop):
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::createGstBuffer): Deleted.
        (WebCore::createGstBufferForData): Deleted.
        (WebCore::getGstBufferDataPointer): Deleted.
        (WebCore::mapGstBuffer): Deleted.
        (WebCore::unmapGstBuffer): Deleted.
        * platform/graphics/gstreamer/GStreamerCommon.h:
        (WebCore::GstMappedBuffer::create): New method returning a
        reference to a newly created GstMappedBuffer instance.
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webKitWebSrcStop): Remove reference to unused GstBuffer.
        (CachedResourceStreamingClient::dataReceived): Ditto.

2018-09-24  Enrique Ocaña González  <eocanha@igalia.com>

        [MSE][GStreamer] Don't update duration when it was not previously NaN
        https://bugs.webkit.org/show_bug.cgi?id=189869

        Reviewed by Xabier Rodriguez-Calvar.

        This is what the spec mandates. The spec doesn't say anything about
        updating duration when it had been previously set, even if the new
        init segment says that the duration is growing.

        This fixes MSE YTTV 2018 69.MediaSourceDurationVP9.

        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):

2018-09-23  Frederic Wang  <fwang@igalia.com>

        Add missing includes in TextCodecReplacement.cpp
        https://bugs.webkit.org/show_bug.cgi?id=189894

        Reviewed by Darin Adler.

        No new tests, behavior unchanged.

        * platform/text/TextCodecReplacement.cpp: Add missing headers.

2018-09-22  Adrian Perez de Castro  <aperez@igalia.com>

        [ARM] Building FELightingNEON.cpp fails due to missing lightVector member
        https://bugs.webkit.org/show_bug.cgi?id=189890

        Reviewed by Darin Adler.

        No new tests needed.

        * platform/graphics/cpu/arm/filters/FELightingNEON.h:
        (WebCore::FELighting::platformApplyNeon): Adapt to new layout of "struct PaintingData" after r225122.

2018-09-22  Zan Dobersek  <zdobersek@igalia.com>

        [Cairo] Null-check cairo_pattern_t gradient objects
        https://bugs.webkit.org/show_bug.cgi?id=189820

        Reviewed by Alex Christensen.

        Cairo-specific implementation of Gradient::createPlatformGradient() can
        now return a nullptr value when a conic gradient is described by the
        Gradient object. Cairo doesn't have a way to create cairo_pattern_t
        objects for such gradients.

        Null-checks are now done on return values of createPlatformGradient(),
        in order to avoid proceeding to paint a null cairo_pattern_t object.

        * platform/graphics/cairo/GradientCairo.cpp:
        (WebCore::Gradient::fill):
        * platform/graphics/cairo/GraphicsContextImplCairo.cpp:
        (WebCore::GraphicsContextImplCairo::fillRect):

2018-09-21  Ryosuke Niwa  <rniwa@webkit.org>

        Cannot start a drag inside a shadow tree when an inclusive-ancestor of its shadow host is a draggable element
        https://bugs.webkit.org/show_bug.cgi?id=136836

        Reviewed by Wenson Hsieh.

        Fixed the bug by simply generalizing the existing code path existed for video / input type=color.

        Tests: fast/shadow-dom/dragging-element-inside-shadow-tree.html
               fast/shadow-dom/dragging-element-with-shadow-tree.html

        * page/DragController.cpp:
        (WebCore::DragController::startDrag):

2018-09-22  Chris Dumez  <cdumez@apple.com>

        FontDataCache should use Ref<Font> instead of a RefPtr<Font>
        https://bugs.webkit.org/show_bug.cgi?id=189861

        Reviewed by Antti Koivisto.

        * platform/graphics/FontCache.cpp:
        (WebCore::FontCache::fontForPlatformData):
        (WebCore::FontCache::purgeInactiveFontData):

2018-09-21  Justin Michaud  <justin_michaud@apple.com>

        Implement initialValue support for CSS Custom Properties and Values API
        https://bugs.webkit.org/show_bug.cgi?id=189819

        Reviewed by Simon Fraser.

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::ComputedStyleExtractor::customPropertyValue):
        * css/CSSCustomPropertyValue.cpp:
        (WebCore::CSSCustomPropertyValue::resolveVariableReferences const):
        * css/CSSCustomPropertyValue.h:
        * css/CSSRegisteredCustomProperty.h:
        * css/CSSVariableData.cpp:
        (WebCore::CSSVariableData::resolveVariableFallback const):
        (WebCore::CSSVariableData::resolveVariableReference const):
        (WebCore::CSSVariableData::resolveVariableReferences const):
        (WebCore::CSSVariableData::resolveTokenRange const):
        * css/CSSVariableData.h:
        * css/DOMCSSRegisterCustomProperty.cpp:
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        * css/DOMCSSRegisterCustomProperty.h:
        * css/DOMCSSRegisterCustomProperty.idl:
        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::resolvedVariableValue):
        (WebCore::StyleResolver::applyCascadedProperties):
        * css/parser/CSSParser.cpp:
        (WebCore::CSSParser::parseValueWithVariableReferences):
        * css/parser/CSSParser.h:
        * dom/Document.h:
        (WebCore::Document::getCSSRegisteredCustomPropertySet const):
        * rendering/style/RenderStyle.cpp:
        (WebCore::RenderStyle::checkVariablesInCustomProperties):
        * rendering/style/RenderStyle.h:

2018-09-21  Dean Jackson  <dino@apple.com>

        Add PointerEvent, plus feature flag, plus Web Platform Tests
        https://bugs.webkit.org/show_bug.cgi?id=189867
        <rdar://problem/44697384>

        Reviewed by Simon Fraser.

        Add the PointerEvent interface.

        Tests: imported/w3c/web-platform-tests/pointerevents/extension/idlharness.window.html
               imported/w3c/web-platform-tests/pointerevents/extension/pointerevent_constructor.html
               imported/w3c/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html
               imported/w3c/web-platform-tests/pointerevents/idlharness.window.html
               imported/w3c/web-platform-tests/pointerevents/pointerevent_constructor.html
               imported/w3c/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html
               imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-illegal.html
               imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html

        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
                Add the new files.

        * dom/Event.h:
        (WebCore::Event::isPointerEvent const): New virtual identification method.

        * dom/EventNames.in: Add PointerEvent so the InterfaceType code is generated.

        * dom/PointerEvent.cpp: The PointerEvent interface, as specified by W3C.
        (WebCore::PointerEvent::PointerEvent):
        (WebCore::PointerEvent::eventInterface const):
        * dom/PointerEvent.h: Added.
        * dom/PointerEvent.idl: Added.

        * page/RuntimeEnabledFeatures.h: Clean up the ordering of the features, so there aren't
        confusing blank lines interspersed with #if USE macros.
        (WebCore::RuntimeEnabledFeatures::setPointerEventsEnabled): Add a new flag for Pointer Events.
        (WebCore::RuntimeEnabledFeatures::pointerEventsEnabled const):

2018-09-21  Ryosuke Niwa  <rniwa@webkit.org>

        Custom elements in a reaction queue can lose its JS wrapper and become HTMLUnknownElement
        https://bugs.webkit.org/show_bug.cgi?id=184307

        Reviewed by Keith Miller.

        The bug was caused by the custom elements reaction queue not reporting its content to GC during marking.

        When there is no JS reference to the JS wrappers of those custom element, and if those custom elements
        are disconnected, GC would happily collect those the wrappers. Unfortunately, the same bug exists for
        any asynchronous events and other WebCore code which keeps elements alive for a later use but doesn't
        report them to GC (e.g. during visitChildren).

        This patch, therefore, introduces a generic mechanism to keep these elements' wrappers alive. Namely,
        we introduce GCReachableRef, a new smart pointer type for Node's subclasses, which keeps element as well
        as its wrappers alive. GCReachableRef works by adding its Node to a global hash counted set when it's
        created and making JSNodeOwner::isReachableFromOpaqueRoots return true when the node is in the set.

        Test: fast/custom-elements/custom-elements-reaction-queue-retains-js-wrapper.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSNodeCustom.cpp:
        (WebCore::isReachableFromDOM):
        * dom/CustomElementReactionQueue.cpp:
        (WebCore::CustomElementReactionQueue::ElementQueue::invokeAll): Don't swap the vector of elements in
        in the queue. Assuming each DOM API has an appropriate CustomElementsReactionStack, we should never
        append a new element to this queue while invoking custom element reactions.
        * dom/CustomElementReactionQueue.h:
        * dom/GCReachableRef.cpp: Added.
        * dom/GCReachableRef.h: Added.
        (WebCore::GCReachableRefMap::contains): Added.
        (WebCore::GCReachableRefMap::add): Added.
        (WebCore::GCReachableRefMap::remove): Added.
        (WebCore::GCReachableRef::GCReachableRef): Added. We need isNull() check since WTFMove may have been
        called on the source GCReachableRef.
        (WebCore::GCReachableRef::~GCReachableRef): Ditto.
        (WebCore::GCReachableRef::operator-> const): Added.
        (WebCore::GCReachableRef::get const): Added.
        (WebCore::GCReachableRef::operator T& const): Added.
        (WebCore::GCReachableRef::operator! const): Added.
        (WebCore::GCReachableRef::isNull const): Added. Returns true if WTFMove had been called on Ref.

2018-09-21  Alex Christensen  <achristensen@webkit.org>

        Use a Variant for FormDataElement
        https://bugs.webkit.org/show_bug.cgi?id=189777

        Reviewed by Chris Dumez.

        * platform/network/FormData.cpp:
        (WebCore::FormData::FormData):
        (WebCore::FormDataElement::lengthInBytes const):
        (WebCore::FormDataElement::isolatedCopy const):
        (WebCore::FormData::appendData):
        (WebCore::FormData::flatten const):
        (WebCore::FormData::resolveBlobReferences):
        (WebCore::FormData::generateFiles):
        (WebCore::FormData::hasGeneratedFiles const):
        (WebCore::FormData::hasOwnedGeneratedFiles const):
        (WebCore::FormData::removeGeneratedFilesIfNeeded):
        (WebCore::FormData::asSharedBuffer const):
        (WebCore::FormData::asBlobURL const):
        (WebCore::FormData::expandDataStore): Deleted.
        * platform/network/FormData.h:
        (WebCore::FormDataElement::FormDataElement):
        (WebCore::FormDataElement::encode const):
        (WebCore::FormDataElement::decode):
        (WebCore::FormDataElement::EncodedFileData::isolatedCopy const):
        (WebCore::FormDataElement::EncodedFileData::operator== const):
        (WebCore::FormDataElement::EncodedFileData::encode const):
        (WebCore::FormDataElement::EncodedFileData::decode):
        (WebCore::FormDataElement::EncodedBlobData::operator== const):
        (WebCore::FormDataElement::EncodedBlobData::encode const):
        (WebCore::FormDataElement::EncodedBlobData::decode):
        (WebCore::FormDataElement::operator== const):
        (WebCore::FormDataElement::operator!= const):
        * platform/network/cf/FormDataStreamCFNet.cpp:
        (WebCore::advanceCurrentStream):
        (WebCore::createHTTPBodyCFReadStream):
        (WebCore::setHTTPBody):
        * platform/network/curl/CurlFormDataStream.cpp:
        (WebCore::CurlFormDataStream::computeContentLength):
        (WebCore::CurlFormDataStream::read):
        (WebCore::CurlFormDataStream::readFromFile):
        (WebCore::CurlFormDataStream::readFromData):
        * platform/network/curl/CurlFormDataStream.h:

2018-09-20  Simon Fraser  <simon.fraser@apple.com>

        Simplify the logic around has*ScrollbarWithAutoBehavior
        https://bugs.webkit.org/show_bug.cgi?id=189813

        Reviewed by Zalan Bujtas.

        The boolean logic in scrollsOverflowX() and hasHorizontalScrollbarWithAutoBehavior() (and the vertical
        equivalents) reduces simply to hasOverflowClip() && (style().overflowX() == Overflow::Scroll || style().overflowX() == Overflow::Auto);
        
        Similarly, RenderBox::intrinsicScrollbarLogicalWidth() just needs the part of the logic
        that asks whether the theme uses overlay scrollbars which are not customized (and thus
        turned into non-overlay scrollbars).

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::intrinsicScrollbarLogicalWidth const):
        (WebCore::RenderBox::canUseOverlayScrollbars const):
        (WebCore::RenderBox::hasVerticalScrollbarWithAutoBehavior const):
        (WebCore::RenderBox::hasHorizontalScrollbarWithAutoBehavior const):
        * rendering/RenderBox.h:
        (WebCore::RenderBox::scrollsOverflowX const):
        (WebCore::RenderBox::scrollsOverflowY const):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::updateScrollbarsAfterLayout):

2018-09-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r236255.

        Many WebAudio crashes

        Reverted changeset:

        "[GStreamer] Utilities cleanups"
        https://bugs.webkit.org/show_bug.cgi?id=189699
        https://trac.webkit.org/changeset/236255

2018-09-21  Jer Noble  <jer.noble@apple.com>

        Move AVVideoPerformanceMetrics into AVFoundationSPI.h
        https://bugs.webkit.org/show_bug.cgi?id=189842

        Reviewed by Jon Lee.

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

2018-09-21  Chris Dumez  <cdumez@apple.com>

        WebSQL: User cannot grant quota increase if the JS provides an expected usage value that is too low
        https://bugs.webkit.org/show_bug.cgi?id=189801
        <rdar://problem/43592498>

        Reviewed by Youenn Fablet.

        User was unable to grant a quota increase for WebSQL if the JS provided an expected usage value that
        is too low. This is because WebKit was passing this provided expectedUsage value to the client for
        the purpose of quota increase, even when this expectedUsage value does not make any sense (i.e. it
        is lower than the current database size). As a result, the client would grant a quota that is equal
        to the previous quota and the JS would not be able to insert any data.

        In order to address the issue, when the current quota is exceeded and Database::didExceedQuota()
        is called, we now make sure that the expectedUsage value is greater than the current quota. If it
        is not, we provide `current quota + 5MB` as expected usage to the client. This way, the client will
        grant a quota that is actually increased (provided that the user accepts).

        Test: storage/websql/transaction-database-expand-quota.html

        * Modules/webdatabase/Database.cpp:
        (WebCore::Database::setEstimatedSize):
        (WebCore::Database::didExceedQuota):
        * Modules/webdatabase/Database.h:

2018-09-21  Youenn Fablet  <youenn@apple.com>

        Use biplanar CVPixelBuffer for black frames sent to libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=189837

        Reviewed by Eric Carlson.

        Covered by webrtc/video-mute.html.

        Add support to call CVPixelBufferGetBytesPerRowOfPlane.
        Make createBlackPixelBuffer use a biplanar CVPixelBuffer as this is better supported in libwebrtc.
        It is also what is being used in iOS for capture.

        * platform/cocoa/CoreVideoSoftLink.cpp:
        * platform/cocoa/CoreVideoSoftLink.h:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::createBlackPixelBuffer):

2018-09-21  Youenn Fablet  <youenn@apple.com>

        Add RTCCodecStats support
        https://bugs.webkit.org/show_bug.cgi?id=189792
        <rdar://problem/32370668>

        Reviewed by Eric Carlson.

        Covered by updated and rebased tests.

        * Modules/mediastream/RTCStatsReport.h:
        Removed fields that are already defined in the base class.
        (WebCore::RTCStatsReport::CodecStats::CodecStats):
        Add support for RTCCodecStats.
        * Modules/mediastream/RTCStatsReport.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
        * Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
        (WebCore::fillRTCRTPStreamStats):
        (WebCore::fillRTCCodecStats):
        (WebCore::LibWebRTCStatsCollector::OnStatsDelivered):
        Add routines to fill RTCCodecStats from libwebrtc stats.

2018-09-20  Simon Fraser  <simon.fraser@apple.com>

        Make "overflow: overlay" a synonym for "overflow: auto"
        https://bugs.webkit.org/show_bug.cgi?id=189811

        Reviewed by Zalan Bujtas.
        
        The "overlay" value for overflow was added for an internal Safari feature, and only has
        an effect (allow the scrollbar to overlap the content) with legacy scrollbars on macOS.
        It's little used on the web.

        To simplify code in rendering, just make "overflow: overlay" behave like "overflow: auto".
        It's still parsed, but turns into an "auto" value internally, and will be returned from getComputedStyle
        as "auto".

        Test: fast/css/getComputedStyle/getComputedStyle-overflow.html

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
        (WebCore::CSSPrimitiveValue::operator Overflow const):
        * css/CSSProperties.json:
        * css/CSSValueKeywords.in:
        * css/StyleResolver.cpp:
        (WebCore::isScrollableOverflow):
        * css/parser/CSSParserFastPaths.cpp:
        (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
        * page/ios/FrameIOS.mm:
        (WebCore::Frame::nodeRespondingToScrollWheelEvents):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::hasVerticalScrollbarWithAutoBehavior const):
        (WebCore::RenderBox::hasHorizontalScrollbarWithAutoBehavior const):
        * rendering/RenderLayer.cpp:
        (WebCore::styleDefinesAutomaticScrollbar):
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::isScrollableOverflow):
        * rendering/style/RenderStyleConstants.h:

2018-09-21  Youenn Fablet  <youenn@apple.com>

        Centralize which CVPixelBuffer format is being used
        https://bugs.webkit.org/show_bug.cgi?id=189772

        Reviewed by Eric Carlson.

        Get the format type from a single point.
        This changes the video capture and mock realtime video sources on Mac to use a biplanar format. 
        No observable change of behavior.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):
        (WebCore::MockRealtimeVideoSourceMac::setSizeAndFrameRateWithPreset):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::createBlackPixelBuffer):
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):
        * platform/mediastream/mac/RealtimeVideoUtilities.h: Added.

2018-09-21  Antoine Quint  <graouts@apple.com>

        REGRESSION (r235962-r235963): Layout Test animations/suspend-resume-animation-events.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=189607
        <rdar://problem/44652315>

        Reviewed by Dean Jackson.

        There is no reason we shouldn't return the document timeline's time when suspended as otherwise animations may
        report an unresolved current time when suspended which would wreak havoc when invalidating what DOM events to
        dispatch for CSS Animations and Transitions. We also shouldn't be invalidation DOM events when suspended.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::currentTime):
        (WebCore::DocumentTimeline::DocumentTimeline::performInvalidationTask):

2018-09-21  Mike Gorse  <mgorse@suse.com>

        Build tools should work when the /usr/bin/python is python3
        https://bugs.webkit.org/show_bug.cgi?id=156674

        Reviewed by Michael Catanzaro.

        No new tests (no behavior change).

        * platform/network/create-http-header-name-table: remove xreadlines.

2018-09-21  Jer Noble  <jer.noble@apple.com>

        [EME] Introduce the concept of CDMInstanceSession.
        https://bugs.webkit.org/show_bug.cgi?id=189725

        Reviewed by Eric Carlson.

        Currently, the same CDMInstance owned by a MediaKeys object is passed to every MediaKeySession created by that
        MediaKeys, and since the CDMInstance has only a single CDMInstanceClient, subsequent MediaKeySessions prevent
        previous ones from getting updates.

        Add a new virtual interface, CDMInstanceSession, to be passed to MediaKeySession upon creation. Refactor
        CDMInstanceClearKey and CDMInstanceFairPlayStreamingAVFObjC to adopt this new interface.

        Drive-by fixes: Made a number of virtual overrides in final classes final themselves.

        * Modules/encryptedmedia/MediaKeySession.cpp:
        (WebCore::MediaKeySession::create):
        (WebCore::MediaKeySession::MediaKeySession):
        (WebCore::MediaKeySession::generateRequest):
        (WebCore::MediaKeySession::load):
        (WebCore::MediaKeySession::update):
        (WebCore::MediaKeySession::remove):
        (WebCore::MediaKeySession::updateKeyStatuses):
        * Modules/encryptedmedia/MediaKeySession.h:
        * Modules/encryptedmedia/MediaKeys.cpp:
        (WebCore::MediaKeys::createSession):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/encryptedmedia/CDMInstance.h:
        (WebCore::CDMInstance::setHDCPStatus):
        (WebCore::CDMInstance::setClient): Deleted.
        (WebCore::CDMInstance::clearClient): Deleted.
        * platform/encryptedmedia/CDMInstanceSession.h: Copied from Source/WebCore/platform/encryptedmedia/CDMInstance.h.
        (WebCore::CDMInstanceSession::setClient):
        (WebCore::CDMInstanceSession::clearClient):
        * platform/encryptedmedia/clearkey/CDMClearKey.cpp:
        (WebCore::parseLicenseFormat):
        (WebCore::CDMInstanceClearKey::keySystem const):
        (WebCore::CDMInstanceClearKey::createSession):
        (WebCore::CDMInstanceSessionClearKey::requestLicense):
        (WebCore::CDMInstanceSessionClearKey::keys const):
        (WebCore::CDMInstanceSessionClearKey::updateLicense):
        (WebCore::CDMInstanceSessionClearKey::loadSession):
        (WebCore::CDMInstanceSessionClearKey::closeSession):
        (WebCore::CDMInstanceSessionClearKey::removeSessionData):
        (WebCore::CDMInstanceSessionClearKey::storeRecordOfKeyUsage):
        (WebCore::CDMInstanceClearKey::requestLicense): Deleted.
        (WebCore::CDMInstanceClearKey::keys const): Deleted.
        (WebCore::CDMInstanceClearKey::updateLicense): Deleted.
        (WebCore::CDMInstanceClearKey::loadSession): Deleted.
        (WebCore::CDMInstanceClearKey::closeSession): Deleted.
        (WebCore::CDMInstanceClearKey::removeSessionData): Deleted.
        (WebCore::CDMInstanceClearKey::storeRecordOfKeyUsage): Deleted.
        * platform/encryptedmedia/clearkey/CDMClearKey.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
        * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::createSession):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::processContentKeyRequestForSession):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::processNextContentKeyRequest):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::keySystem const):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRenewingRequest):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvidePersistableRequest):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didFailToProvideRequest):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestDidSucceed):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::shouldRetryRequestForReason):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionIdentifierChanged):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::CDMInstanceSessionFairPlayStreamingAVFObjC):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyIDs):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::storeRecordOfKeyUsage):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::setClient):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::clearClient):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvidePersistableRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::shouldRetryRequestForReason):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::sessionIdentifierChanged):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
        (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::isLicenseTypeSupported const):
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::isLicenseTypeSupported const): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestLicense): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::loadSession): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::closeSession): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::removeSessionData): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::storeRecordOfKeyUsage): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setClient): Deleted.
        (WebCore::CDMInstanceFairPlayStreamingAVFObjC::clearClient): Deleted.
        * testing/MockCDMFactory.cpp:
        (WebCore::MockCDMInstance::keySystem const):
        (WebCore::MockCDMInstance::createSession):
        (WebCore::MockCDMInstanceSession::MockCDMInstanceSession):
        (WebCore::MockCDMInstanceSession::requestLicense):
        (WebCore::MockCDMInstanceSession::updateLicense):
        (WebCore::MockCDMInstanceSession::loadSession):
        (WebCore::MockCDMInstanceSession::closeSession):
        (WebCore::MockCDMInstanceSession::removeSessionData):
        (WebCore::MockCDMInstanceSession::storeRecordOfKeyUsage):
        (WebCore::MockCDMInstance::requestLicense): Deleted.
        (WebCore::MockCDMInstance::updateLicense): Deleted.
        (WebCore::MockCDMInstance::loadSession): Deleted.
        (WebCore::MockCDMInstance::closeSession): Deleted.
        (WebCore::MockCDMInstance::removeSessionData): Deleted.
        (WebCore::MockCDMInstance::storeRecordOfKeyUsage): Deleted.
        * testing/MockCDMFactory.h:
        (WebCore::MockCDMInstance::factory const):
        (WebCore::MockCDMInstance::distinctiveIdentifiersAllowed const):
        (WebCore::MockCDMInstance::persistentStateAllowed const):

2018-09-21  Alicia Boya García  <aboya@igalia.com>

        [MSE] Fix comparsion with uninitialized greatestDecodeDuration
        https://bugs.webkit.org/show_bug.cgi?id=189805

        Reviewed by Michael Catanzaro.

        This bug was causing greatestDecodeDuration to never be initialized,
        which in turned caused unintended frame erase as distant appends where
        not being recognized as distinct coded frame groups.

        A test reproducing the sequence of appends that caused unintended
        frame deletion has also been added (media-source-append-out-of-order.html).

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2018-09-21  Antoine Quint  <graouts@apple.com>

        [Web Animations] Accelerated animations don't get suspended
        https://bugs.webkit.org/show_bug.cgi?id=189783
        <rdar://problem/44652315>

        Unreviewed, correct a merge error in the previous commit.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::performInvalidationTask):

2018-09-21  Antoine Quint  <graouts@apple.com>

        [Web Animations] Accelerated animations don't get suspended
        https://bugs.webkit.org/show_bug.cgi?id=189783
        <rdar://problem/43033568>

        Reviewed by Dean Jackson.

        Test: webanimations/accelerated-animation-suspension.html

        We used to set the flag that marked the timeline as suspended prior to notifying animations that they need to be suspended.
        However, since the timeline was marked as suspended, querying the running state of the animations would indicate that the
        animations weren't running since a suspended timeline would identify its animations as not running. As such we would fail
        to pause the accelerated animations because they were already not marked as running. We now set the suspended flag on the
        timeline _after_ suspending its animations.

        We also fix a bug in the new internals.acceleratedAnimationsForElement() test function so that we read from the actual
        CA animations and not from a stale list of animations which would not indicate the correct animation speeds.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::suspendAnimations):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::acceleratedAnimationsForTesting):

2018-09-21  Zan Dobersek  <zdobersek@igalia.com>

        TransformationMatrix::toColumnMajorFloatArray() should return a std::array<> object
        https://bugs.webkit.org/show_bug.cgi?id=189823

        Reviewed by Michael Catanzaro.

        Alias the TransformationMatrix::FloatMatrix4 type to
        std::array<float, 16>. Instead of filling out the array object that's
        passed in through a reference parameter, return the std::array<>
        object from the function.

        * Modules/webvr/VRFrameData.cpp:
        (WebCore::matrixToArray):
        * Modules/webvr/VRStageParameters.cpp:
        (WebCore::VRStageParameters::sittingToStandingTransform const):
        * platform/graphics/texmap/TextureMapperShaderProgram.cpp:
        (WebCore::TextureMapperShaderProgram::setMatrix):
        * platform/graphics/transforms/TransformationMatrix.cpp:
        (WebCore::TransformationMatrix::toColumnMajorFloatArray const):
        * platform/graphics/transforms/TransformationMatrix.h:

2018-09-21  Zan Dobersek  <zdobersek@igalia.com>

        FloatQuad point getters should return const references
        https://bugs.webkit.org/show_bug.cgi?id=189821

        Reviewed by Yusuke Suzuki.

        Be pedantic and have the FloatQuad point getters return const references
        to the FloatPoint member variables, instead of technically creating
        copies of them (though much of this copying is eliminated when the
        getters are inlined).

        * platform/graphics/FloatQuad.h:
        (WebCore::FloatQuad::p1 const):
        (WebCore::FloatQuad::p2 const):
        (WebCore::FloatQuad::p3 const):
        (WebCore::FloatQuad::p4 const):

2018-09-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] DocumentTimeline::updateAnimations() is called endlessly
        https://bugs.webkit.org/show_bug.cgi?id=189784
        <rdar://problem/41705679>

        Reviewed by Dean Jackson.

        Test: webanimations/accelerated-animation-interruption-display-none.html

        We have code that keeps queueing pending accelerated actions for an animation that does not have a renderer until it has one
        so that we can deal with situations where animations are ready to commited before its composited renderer is available. This
        code ended up running continuously when an element with an accelerated animation had its renderer removed without the animation
        being removed itself, such as setting "display: none" on an element with an acceelerated CSS Animation targeting it.

        We fix this by queueing up a "Stop" accelerated action when updating the accelerated state if there is no renderer for the current
        animation target. Then, we no longer re-queue pending accelerated actions if the last queued operation is "Stop". This ensures that
        we no longer queue actions endlessly when there is no longer a visible animation.

        To test this, we add a new internals.numberOfAnimationTimelineInvalidations() method that indicates the number of times the current
        document's animation timeline was invalidated.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::updateAnimations):
        (WebCore::DocumentTimeline::numberOfAnimationTimelineInvalidationsForTesting const):
        * animation/DocumentTimeline.h:
        * animation/KeyframeEffectReadOnly.cpp:
        (WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState): If the animation target does not have a renderer and it's still
        marked as running, enqueue a "Stop" accelerated action.
        (WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction): If we enqueue a "Stop" accelerated action, remove any other queued
        action so that we only process the "Stop" action, which would have superseded all previously queued actions anyway.
        (WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Only re-queue pending accelerated actions when a composited renderer
        is not yet available if we don't have a "Stop" action queued.
        * testing/Internals.cpp:
        (WebCore::Internals::numberOfAnimationTimelineInvalidations const):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-21  Yacine Bandou  <yacine.bandou@softathome.com>

        [EME] Fix typo in WebM sanitization variable
        https://bugs.webkit.org/show_bug.cgi?id=189789

        Reviewed by Xabier Rodriguez-Calvar.

        This commit corrects a typo in the name of a local variable, sanitizedBuffer
        instead of sanitazedBuffer.

        * Modules/encryptedmedia/InitDataRegistry.cpp:
        (WebCore::extractKeyIDsWebM):

2018-09-20  Dean Jackson  <dino@apple.com>

        Restrict the total combined size of backdrop filters
        https://bugs.webkit.org/show_bug.cgi?id=189812
        <rdar://problem/44532782>

        Reviewed by Simon Fraser.

        If the total area of all backdrop filters on the page gets
        too large, the universe collapses in on itself and we enter
        the Quantum Realm (i.e. crash horribly).

        Put a hard limit on the total coverage, and ignore any backdrop
        filters after the limit. This might break some content, but
        such content is likely not doing things in the most optimal manner.
        There isn't any reason to have a backdrop larger than the size of
        the screen, because you'd be better off applying a foreground
        filter to the main content and showing something above it.

        Tests: css3/filters/backdrop/resource-use-add-more-layers.html
               css3/filters/backdrop/resource-use-excessive.html
               css3/filters/backdrop/resource-use-ok.html
               css3/filters/backdrop/resource-use-remove-some-layers.html

        * platform/graphics/ca/GraphicsLayerCA.cpp: Pick a fairly small maximum size. We
        can consider increasing this if necessary, and as devices with less RAM are
        upgraded.
        (WebCore::GraphicsLayerCA::recursiveCommitChanges): Gather the accumulated size
        of backdrop filters into the commit state as we are recursing through the tree.
        (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Force any layer
        with backdrop filters, or any that is removing backdrop filters, into an update.
        (WebCore::GraphicsLayerCA::updateBackdropFilters): Update the logic to first
        check if this backdrop layer causes us to exceed the total allowed size, and if
        it does, forbid it from getting the GraphicsLayer that composits the backdrop.

        * platform/graphics/ca/GraphicsLayerCA.h: Remove const from some parameters so
        that we can use the CommitState to hold the accumulated size.

2018-09-20  Benjamin Poulain  <benjamin@webkit.org>

        Adopt safe-area-insets on ImageDocument
        https://bugs.webkit.org/show_bug.cgi?id=189774

        Reviewed by Tim Horton.
        rdar://problem/44624432

        By having the safe-area insets on the image, we ensure that they only
        grow the document if there is not enough space. This also ensures the image
        does not have parts under UI elements.

        * html/ImageDocument.cpp:
        (WebCore::ImageDocument::createDocumentStructure):
        (WebCore::ImageDocument::imageUpdated):

2018-09-20  Zalan Bujtas  <zalan@apple.com>

        Release assert under RenderView::pageOrViewLogicalHeight
        https://bugs.webkit.org/show_bug.cgi?id=189798
        <rdar://problem/43659749>

        Reviewed by Simon Fraser.

        Only the mainframe's render view is sized to the page while printing.
        Use the matching check (see RenderView::layout) when accessing m_pageLogicalSize.

        Test: printing/crash-while-formatting-subframe-for-printing.html

        * rendering/RenderView.cpp:
        (WebCore::RenderView::pageOrViewLogicalHeight const):

2018-09-20  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION(r196265): WKWebView fires mouseover, mouseenter, and mouseleave events even when it's in a background window
        https://bugs.webkit.org/show_bug.cgi?id=187545
        <rdar://problem/42401575>

        Reviewed by Ryosuke Niwa.

        When the window is not active, we should only update the scrollbar for mouse events. GTK
        apps have different expectation on this behavior.

        Test: fast/events/inactive-window-no-mouse-event.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleMouseMoveEvent):
        (WebCore::EventHandler::shouldSendMouseEventsToInactiveWindows const):
        * page/EventHandler.h:

2018-09-20  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r235976.

        Broke ARM

        Reverted changeset:

        "Use a Variant instead of a union in CSSSelector"
        https://bugs.webkit.org/show_bug.cgi?id=188559
        https://trac.webkit.org/changeset/235976

2018-09-20  Oriol Brufau  <obrufau@igalia.com>

        Fix 'border' serialization with both common and uncommon values
        https://bugs.webkit.org/show_bug.cgi?id=189597

        Reviewed by Simon Fraser.

        Remove CommonValueMode enum and make borderPropertyValue always return null
        when there are uncommon values (the previous ReturnNullOnUncommonValues mode).

        Test: fast/css/getPropertyValue-border.html
        Test: fast/dom/css-shorthand-common-value.html

        * css/StyleProperties.cpp:
        (WebCore::StyleProperties::getPropertyValue const):
        (WebCore::StyleProperties::borderPropertyValue const):
        (WebCore::StyleProperties::asText const):
        * css/StyleProperties.h:

2018-09-20  Justin Michaud  <justin_michaud@apple.com>

        Implement CSS Custom Properties and Values Skeleton
        https://bugs.webkit.org/show_bug.cgi?id=189694

        Reviewed by Simon Fraser.

        Add feature flag, CSS.registerProperty binding and registered property set in Document.h
        for the css custom properties and values api.

        Test: css-properties-values-api/registerProperty.html

        * CMakeLists.txt:
        * DerivedSources.make:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSRegisteredCustomProperty.h: Added.
        * css/DOMCSSCustomPropertyDescriptor.h: Added.
        * css/DOMCSSCustomPropertyDescriptor.idl: Added.
        * css/DOMCSSNamespace.h:
        * css/DOMCSSRegisterCustomProperty.cpp: Added.
        (WebCore::DOMCSSRegisterCustomProperty::registerProperty):
        (WebCore::DOMCSSRegisterCustomProperty::from):
        (WebCore::DOMCSSRegisterCustomProperty::supplementName):
        * css/DOMCSSRegisterCustomProperty.h: Added.
        * css/DOMCSSRegisterCustomProperty.idl: Added.
        * css/parser/CSSParserContext.cpp:
        * dom/Document.cpp:
        (WebCore::Document::registerCSSProperty):
        * dom/Document.h:
        * features.json:
        * page/RuntimeEnabledFeatures.h:
        (WebCore::RuntimeEnabledFeatures::setCSSCustomPropertiesAndValuesEnabled):
        (WebCore::RuntimeEnabledFeatures::cssCustomPropertiesAndValuesEnabled const):

2018-09-20  Justin Michaud  <justin_michaud@apple.com>

        JS bindings generator should support EnabledAtRuntime for static methods
        https://bugs.webkit.org/show_bug.cgi?id=189729

        Reviewed by Chris Dumez.

        Add support for EnabledAtRuntime to static methods in the JS bindings
        code generator.

        * bindings/scripts/CodeGeneratorJS.pm:
        (GenerateRuntimeEnableConditionalStringForExposed):
        (GenerateRuntimeEnableConditionalString):
        (GetRuntimeEnabledStaticProperties):
        (GenerateConstructorHelperMethods):
        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
        (WebCore::JSTestGlobalObjectConstructor::initializeProperties):
        (WebCore::JSTestGlobalObject::finishCreation):
        (WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody):
        (WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStatic):
        * bindings/scripts/test/JS/JSTestObj.cpp:
        (WebCore::JSTestObjConstructor::initializeProperties):
        (WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStaticGetter):
        (WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStatic):
        (WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStaticSetter):
        (WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStatic):
        (WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody):
        (WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStatic):
        * bindings/scripts/test/TestGlobalObject.idl:
        * bindings/scripts/test/TestObj.idl:

2018-09-20  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] Update the parser according to the new region syntax.
        https://bugs.webkit.org/show_bug.cgi?id=189767

        Reviewed by Eric Carlson.

        The majority of the code added in this patch is adopted from the Chromium project, which has added
        support for the new region syntax. The complete parser specification can be found at
        https://w3c.github.io/webvtt/#file-parsing. One small difference in behavior is that the new parser
        will not add regions with empty id.

        No new tests, covered by existing tests.

        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTParser::getNewRegions):
        (WebCore::WebVTTParser::parse):
        (WebCore::WebVTTParser::collectRegionSettings):
        (WebCore::WebVTTParser::collectWebVTTBlock):
        (WebCore::WebVTTParser::checkAndRecoverCue):
        (WebCore::WebVTTParser::checkAndCreateRegion):
        (WebCore::WebVTTParser::checkAndStoreRegion):
        (WebCore::WebVTTParser::collectMetadataHeader): Deleted.
        (WebCore::WebVTTParser::createNewRegion): Deleted.
        * html/track/WebVTTParser.h:

2018-09-20  Alicia Boya García  <aboya@igalia.com>

        [GStreamer][MSE] Add a default sample duration
        https://bugs.webkit.org/show_bug.cgi?id=189788

        Some WebM files don't provide sample durations, so we need to provide
        a safe default in order for them to be playable.

        Reviewed by Michael Catanzaro.

        * platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
        (WebCore::MediaSampleGStreamer::MediaSampleGStreamer):

2018-09-20  Alicia Boya García  <aboya@igalia.com>

        [MSE] Use some tolerance when deciding whether a frame should be appended to the decode queue
        https://bugs.webkit.org/show_bug.cgi?id=189782

        Reviewed by Xabier Rodriguez-Calvar.

        Ideally, container formats should use exact timestamps and frames
        should not overlap. Unfortunately, there are lots of files out there
        where this is not always the case.

        This is particularly a problem in WebM, where timestamps are expressed
        in a power of 10 timescale, which forces some rounding.

        This patch makes SourceBuffer allow frames with a small overlaps
        (<=1ms) as those usually found in WebM. 1 ms is chosen because it's
        the default time scale of WebM files.

        * Modules/mediasource/SourceBuffer.cpp:
        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2018-09-20  Yacine Bandou  <yacine.bandou@softathome.com>

        [EME] Add WebM sanitization
        https://bugs.webkit.org/show_bug.cgi?id=189740

        Reviewed by Xabier Rodriguez-Calvar.

        This patch adds support for sanitizing the WebM initialization data,
        ensures there are no bogus values.
        See https://www.w3.org/TR/encrypted-media/#dom-mediakeysession-generaterequest.

        Tests: imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https.html

        * Modules/encryptedmedia/InitDataRegistry.cpp:
        (WebCore::sanitizeWebM): Added implementation, check if the initialization data doesn't empty and its size
        should be less than 64KB, return the buffer copy if it is ok, otherwise a nullptr.
        (WebCore::extractKeyIDsWebM): Added implementation.

2018-09-20  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Utilities cleanups
        https://bugs.webkit.org/show_bug.cgi?id=189699

        Reviewed by Xabier Rodriguez-Calvar.

        The GstMappedBuffer now has a move constructor so that it can be easily
        reused in the webaudiosrc element. The now-unused corresponding
        buffer-mapping utilities are removed from the code-base.

        The HTTP source element used to handle a GstBuffer in its private
        structure but this is no longer required since data is now pushed
        in chunks, see bug #182829.

        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
        (webKitWebAudioSrcLoop):
        * platform/graphics/gstreamer/GStreamerCommon.cpp:
        (WebCore::createGstBuffer): Deleted.
        (WebCore::createGstBufferForData): Deleted.
        (WebCore::getGstBufferDataPointer): Deleted.
        (WebCore::mapGstBuffer): Deleted.
        (WebCore::unmapGstBuffer): Deleted.
        * platform/graphics/gstreamer/GStreamerCommon.h:
        (WebCore::GstMappedBuffer::create): New method returning a
        reference to a newly created GstMappedBuffer instance.
        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
        (webKitWebSrcStop): Remove reference to unused GstBuffer.
        (CachedResourceStreamingClient::dataReceived): Ditto.

2018-09-20  Simon Fraser  <simon.fraser@apple.com>

        Fix crash under FontCache::purgeInactiveFontData() when a memory warning fires
        https://bugs.webkit.org/show_bug.cgi?id=189722
        rdar://problem/44182860

        Reviewed by Myles C. Maxfield.
        
        Hashing of FontPlatformData for cachedFonts() is somewhat broken because CFEqual() on CTFont
        can return false when the fonts are actually the same, and have the same CFHash(). This 
        can result in multiple entries in cachedFonts() with the same Font.
        
        Then in FontCache::purgeInactiveFontData(), the loop that appends fonts to fontsToDelete
        gets the value by reference, and WTFMoves it into fontsToDelete. This nulls out all
        the entries sharing the same value, leaving null entries in the hash table.
        We later crash at font->hasOneRef() when using one of those null entries.
        
        Fix by making a copy of the RefPtr<Font> in the loop, so the WTFMove doesn't nuke
        the hash table entries. The entries will get removed at cachedFonts().remove() lower down.

        * platform/graphics/FontCache.cpp:
        (WebCore::FontCache::purgeInactiveFontData):

2018-09-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] Provide a way to query accelerated animations for internal testing
        https://bugs.webkit.org/show_bug.cgi?id=189762

        Reviewed by Dean Jackson.

        Expose a new internals.acceleratedAnimationsForElement(element) method to allow layout tests to query the current list
        of accelerated animations for a given element. Currently only the animated property and animation speed are exposed, which
        will allow us to identify missing, running and paused accelerated animations.

        * animation/DocumentTimeline.cpp:
        (WebCore::DocumentTimeline::acceleratedAnimationsForElement const):
        * animation/DocumentTimeline.h:
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::acceleratedAnimationsForTesting const):
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * testing/Internals.cpp:
        (WebCore::Internals::acceleratedAnimationsForElement):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        Improve node statistics for rare data
        https://bugs.webkit.org/show_bug.cgi?id=189775

        Reviewed by Simon Fraser.

        Report reasons we created NodeRareData and ElementRareData in node statistics.

        Added NodeRareData::useTypes and ElementRareData::useTypes which returns OptionSet<NodeRareData::UseType>
        indicating which instance member of the rare data is currently in use.

        * dom/Element.cpp:
        * dom/Element.h:
        * dom/ElementRareData.h:
        (WebCore::defaultMinimumSizeForResizing):
        (WebCore::ElementRareData::useTypes const):
        * dom/Node.cpp:
        (WebCore::stringForRareDataUseType):
        (WebCore::Node::dumpStatistics):
        * dom/NodeRareData.cpp:
        * dom/NodeRareData.h:
        (WebCore::NodeRareData::useTypes const):

2018-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r235917): 2% regression in Dromaeo CSS selector on MacBookPro11,4
        https://bugs.webkit.org/show_bug.cgi?id=189738

        Reviewed by Yusuke Suzuki.

        The regression was caused by the regundant walk to the parent element. Removed it to fix the regression.

        * cssjit/SelectorCompiler.cpp:
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthChildParentCheckAndRelationUpdate):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate):

2018-09-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add optional cap on partitioned cache max age
        https://bugs.webkit.org/show_bug.cgi?id=189711
        <rdar://problem/39246837>

        Reviewed by Antti Koivisto and Chris Dumez.

        Test: http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html

        * platform/network/NetworkStorageSession.h:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        (WebCore::NetworkStorageSession::maxAgeCacheCap):
            Checks if a max age cap is set and returns it if the request
            represents a prevalent resource.
        (WebCore::NetworkStorageSession::setCacheMaxAgeCapForPrevalentResources):
        (WebCore::NetworkStorageSession::resetCacheMaxAgeCapForPrevalentResources):
            New functionality to receive a max age cap setting in the session.

2018-09-19  Youenn Fablet  <youenn@apple.com>

        Layout Test webrtc/video-mute.html is flaky.
        https://bugs.webkit.org/show_bug.cgi?id=177501

        Reviewed by Eric Carlson.

        Covered by updated test expectation.

        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::createBlackPixelBuffer): Make sure the whole buffer is properly initialized.

2018-09-19  David Kilzer  <ddkilzer@apple.com>

        WebCoreNSURLSession leaks an NSString (_sessionDescription) in -dealloc
        <https://webkit.org/b/189742>
        <rdar://problem/44589774>

        Reviewed by Joseph Pecoraro.

        * platform/network/cocoa/WebCoreNSURLSession.h:
        (WebCoreNSURLSession._sessionDescription): Change type from
        NSString * to RetainPtr<NSString>.
        * platform/network/cocoa/WebCoreNSURLSession.mm: Remove
        @synthesized statement for sessionDescription so that custom
        methods can be implemented to handle RetainPtr<NSString>.
        (-[WebCoreNSURLSession sessionDescription]): Add.
        (-[WebCoreNSURLSession setSessionDescription:]): Add.

2018-09-19  Youenn Fablet  <youenn@apple.com>

        Implement sender/receiver getStats
        https://bugs.webkit.org/show_bug.cgi?id=189707

        Reviewed by Eric Carlson.

        Add support for sender and receiver getStats.
        Also add support for peer connection selector parameter.

        Add the plumbing of the selector to LibWebRTCMediaEndpoint.
        Then make use of libwebrtc overloaded methods to retrieve the right stats.

        Covered by updated/rebased tests.

        * Modules/mediastream/PeerConnectionBackend.h:
        * Modules/mediastream/RTCPeerConnection.cpp:
        (WebCore::RTCPeerConnection::getStats):
        * Modules/mediastream/RTCPeerConnection.h:
        * Modules/mediastream/RTCPeerConnection.idl:
        * Modules/mediastream/RTCRtpReceiver.cpp:
        (WebCore::RTCRtpReceiver::RTCRtpReceiver):
        (WebCore::RTCRtpReceiver::getStats):
        * Modules/mediastream/RTCRtpReceiver.h:
        (WebCore::RTCRtpReceiver::create):
        (WebCore::RTCRtpReceiver::backend):
        * Modules/mediastream/RTCRtpReceiver.idl:
        * Modules/mediastream/RTCRtpSender.cpp:
        (WebCore::RTCRtpSender::create):
        (WebCore::RTCRtpSender::RTCRtpSender):
        (WebCore::RTCRtpSender::getStats):
        * Modules/mediastream/RTCRtpSender.h:
        * Modules/mediastream/RTCRtpSender.idl:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::getStats):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::getStats):
        (WebCore::backendFromRTPSender):
        (WebCore::createReceiverForSource):
        (WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
        (WebCore::LibWebRTCPeerConnectionBackend::addUnifiedPlanTransceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
        (WebCore::LibWebRTCPeerConnectionBackend::newRemoteTransceiver):
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:

2018-09-19  Jer Noble  <jer.noble@apple.com>

        REGRESSION (r236006): New waitingForKey() requirement breaks Modern EME tests.
        https://bugs.webkit.org/show_bug.cgi?id=189720
        <rdar://problem/44572140>

        Reviewed by Xabier Rodriguez-Calvar.

        Always call waitingForKey() after calling initializationDataEncountered().

        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initializationDataEncountered):

2018-09-19  Philippe Normand <pnormand@igalia.com>

        [GStreamer] Add support for AV1 decoding
        https://bugs.webkit.org/show_bug.cgi?id=189647

        Tweaked by Xabier Rodriguez Calvar <calvaris@igalia.com>.
        Reviewed by Žan Doberšek.

        AV1 can be muxed in MP4 and WebM containers. The test is an adaptation from Chromium's unittest:
        https://chromium.googlesource.com/chromium/src/+/master/content/browser/media/media_canplaytype_browsertest.cc

        Test: media/media-can-play-av1.html

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::supportsType): Add AV1
        support. The av01 codec has to be explicitely checked, along with
        the presence of a compatible AV1 decoder.

2018-09-18  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Limit capturing extra metrics for Web Inspector when not required.
        https://bugs.webkit.org/show_bug.cgi?id=189520

        Reviewed by Alex Christensen.

        Respect the value of NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics() to reduce the process
        time when they are not needed.

        No new tests because there's no behavior change.

        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::getNetworkLoadMetrics):
        (WebCore::CurlHandle::addExtraNetworkLoadMetrics):
        * platform/network/curl/CurlContext.h:
        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::CurlRequest):
        (WebCore::CurlRequest::updateNetworkLoadMetrics):
        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::create):
        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::createCurlRequest):

2018-09-18  Megan Gardner  <megan_gardner@apple.com>

        Support Images Module Level 4's double-position gradient color stop syntax
        https://bugs.webkit.org/show_bug.cgi?id=186154
        <rdar://problem/44158152>

        Reviewed by Simon Fraser.

        The CSS spec for all gradients allows for each color stop to have two angles to be used for hints.
        This makes pie chart and checkerboard conic gradients much simpler to write.
        Any time you want to have a hard line in a gradient, this syntax simplifies the gradient specification.

        Test: fast/gradients/conic-two-hints.html
        Test: fast/gradients/linear-two-hints-angle.html
        Test: fast/gradients/linear-two-hints.html
        Test: fast/gradients/radial-two-hints.html

        * css/parser/CSSPropertyParserHelpers.cpp:
        (WebCore::CSSPropertyParserHelpers::consumeAngularGradientColorStops): Removed.
        (WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):

2018-09-18  Simon Fraser  <simon.fraser@apple.com>

        Remove the unused RenderLayerCompositor::enclosingCompositorFlushingLayers()
        https://bugs.webkit.org/show_bug.cgi?id=189689

        Reviewed by Alex Christensen.

        enclosingCompositorFlushingLayers() was added in r76196 but never used. Also use
        a SetForScope<>.

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
        (WebCore::RenderLayerCompositor::enclosingCompositorFlushingLayers const): Deleted.
        * rendering/RenderLayerCompositor.h:

2018-09-18  Joseph Pecoraro  <pecoraro@apple.com>

        [macOS] Frequent leaks seen under WebCore::gpuIDForDisplayMask
        https://bugs.webkit.org/show_bug.cgi?id=189685
        <rdar://problem/44541974>

        Reviewed by Per Arne Vollan.

        * platform/mac/PlatformScreenMac.mm:
        (WebCore::gpuIDForDisplayMask):

2018-09-18  Youenn Fablet  <youenn@apple.com>

        Implement RTCRtpReceiver getContributingSources/getSynchronizationSources
        https://bugs.webkit.org/show_bug.cgi?id=189671

        Reviewed by Eric Carlson.

        Introduce implementation of these two methods by calling the libwebrtc corresponding method.
        Add corresponding IDL as per spec.
        Covered by rebased WPT tests.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediastream/RTCRtpContributingSource.h: Added.
        * Modules/mediastream/RTCRtpContributingSource.idl: Added.
        * Modules/mediastream/RTCRtpReceiver.h:
        (WebCore::RTCRtpReceiver::getContributingSources const):
        (WebCore::RTCRtpReceiver::getSynchronizationSources const):
        * Modules/mediastream/RTCRtpReceiver.idl:
        * Modules/mediastream/RTCRtpReceiverBackend.h:
        (WebCore::RTCRtpReceiverBackend::getContributingSources const):
        (WebCore::RTCRtpReceiverBackend::getSynchronizationSources const):
        * Modules/mediastream/RTCRtpSynchronizationSource.h: Added.
        * Modules/mediastream/RTCRtpSynchronizationSource.idl: Added.
        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
        (WebCore::fillRTCRtpContributingSource):
        (WebCore::toRTCRtpContributingSource):
        (WebCore::toRTCRtpSynchronizationSource):
        (WebCore::LibWebRTCRtpReceiverBackend::getContributingSources const):
        (WebCore::LibWebRTCRtpReceiverBackend::getSynchronizationSources const):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-09-18  Youenn Fablet  <youenn@apple.com>

        Enable Unified Plan by default
        https://bugs.webkit.org/show_bug.cgi?id=189675

        Reviewed by Eric Carlson.

        RTCRtpTransceiver.currentDirection is now gated by the unified plan runtime flag.
        This will allow easy feature detection of unified plan support.
        Covered by updated test.

        * Modules/mediastream/RTCRtpTransceiver.idl:

2018-09-18  Per Arne Vollan  <pvollan@apple.com>

        [WebVTT] change "middle" to "center" for consistency with CSS
        https://bugs.webkit.org/show_bug.cgi?id=158478

        Reviewed by Eric Carlson.

        No new tests, covered by existing tests.

        * html/track/TextTrackCueGeneric.cpp:
        (WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
        * html/track/VTTCue.cpp:
        (WebCore::centerKeyword):
        (WebCore::VTTCue::initialize):
        (WebCore::VTTCue::align const):
        (WebCore::VTTCue::setAlign):
        (WebCore::VTTCue::calculateDisplayParameters):
        (WebCore::VTTCue::setCueSettings):
        (WebCore::middleKeyword): Deleted.
        * html/track/VTTCue.h:
        * html/track/WebVTTParser.cpp:
        (WebCore::WebVTTTreeBuilder::buildFromString):

2018-09-18  Chris Dumez  <cdumez@apple.com>

        "DidFirstVisuallyNonEmptyLayout" callback does not get called when restoring a page from PageCache
        https://bugs.webkit.org/show_bug.cgi?id=189681
        <rdar://problem/44526171>

        Reviewed by Alex Christensen and Zalan Bujtas.

        The "DidFirstVisuallyNonEmptyLayout" callback was not getting called when restoring a page from PageCache
        because the FrameView is restored from PageCache and we would fail to restore its flags (such as
        m_firstVisuallyNonEmptyLayoutCallbackPending) when entering Page Cache. We now call reset those flags that
        are related to layout miletones when entering PageCache so that layout milestone events properly get sent
        again when restoring from Page Cache.

        * history/CachedFrame.cpp:
        (WebCore::CachedFrame::CachedFrame):

2018-09-18  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Static position should use content-box, not padding-box
        https://bugs.webkit.org/show_bug.cgi?id=189698

        Reviewed by Javier Fernandez.

        This is a recent change by the CSSWG:
        https://github.com/w3c/csswg-drafts/issues/3020

        The spec text (https://drafts.csswg.org/css-grid/#static-position):
          "The static position of an absolutely-positioned child
           of a grid container is determined as if it were the sole grid item
           in a grid area whose edges coincide with the content edges
           of the grid container."

        Test: imported/w3c/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html

        * rendering/RenderGrid.cpp:
        (WebCore::RenderGrid::prepareChildForPositionedLayout):
        Simple change to use border and padding.

2018-09-18  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [EME][GStreamer] The current EME implementation doesn't support the waitingforkey event
        https://bugs.webkit.org/show_bug.cgi?id=185590

        Reviewed by Philippe Normand.

        When decryptors are blocked waiting for the key, instruct the
        player to run the Wait for key algorithm. As per spec, if we run
        out of blocks pending to decrypt because we don't have the key, we
        request running the algorithm again.

        Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
        (WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
        (WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptTransformInPlace):
        (webkitMediaCommonEncryptionDecryptSinkEventHandler):

2018-09-12  Ryosuke Niwa  <rniwa@webkit.org>

        Update composedPath to match the latest spec
        https://bugs.webkit.org/show_bug.cgi?id=180378
        <rdar://problem/42843004>

        Reviewed by Darin Adler.

        This patch makes the check for whether a given node in the event path be included in composedPath
        pre-determined at the time of the event dispatching per https://github.com/whatwg/dom/issues/525.
        This was a fix for the issue that if an event listener in a closed shadow tree removes a node in the
        same tree in the event path, then composedPath called on its shadow host, for example, will include
        the removed node since it's no longer in the closed shadow tree.

        Naively, implementing this behavior would require remembering the original document or shadow root
        of each node in the event path as well as its parent shadow root, or worse which node is disclosed
        to every other node at the time of computing the event path.

        This patch takes a more novel and efficient approach to implement the new behavior by adding a single
        integer indicating the number of closed-mode shadow root ancestors of each node in the event path.
        In computePathUnclosedToTarget, any node whose *depth* is greater than the context object is excluded.

        Consider the following example:
        div ------- ShadowRoot (closed)
          +- span     +- slot
        If an event is dispatched on span, then the event path would be [span, slot, ShadowRoot, div]. Then
        the values of integers assigned to each node would be: [0, 1, 1, 0] respectively. When composedPath
        is called on span or div, slot and ShadowRoot are excluded because they have a greater *depth* value.

        Unfortunately, this simplistic solution doesn't work when there are multiple shadow roots of the same
        depth through which an event is dispatched as in:
        section -- ShadowRoot (closed, SR2)
          |          +- slot (s2)
          +div ------ ShadowRoot (closed, SR1)
            +- span     +- slot (s1)
        If an event is dispatched on span, the event path would be [span, s1, SR1, div, s2, SR2, section].
        The values of integers assigned are: [0, 1, 1, 0, 1, 1, 0] respectively. When composedPath is called
        on SR1, the simplistic approach would include s2 and SR2, which would be wrong.

        To account for this case, in computePathUnclosedToTarget, we traverse the event path upwards (i.e.
        ancestors) and downwards (i.e. descendants) from the context object and decrease the *allowed depth*
        of shadow trees when we traverse out of a shadow tree in either direction. When traversing upwards,
        therefore, moving out of a shadow root to its host would would decrease the allowed depth. When
        traversing dowards, moving from a slot element to its assigned node would decrease the allowed depth.

        Note that the depths can be negative when a composed event is dispatched inside a closed shadow tree,
        and it gets out of its shadow host.

        Unfortunately, the latest DOM specification has a bug and doesn't match the behavior of Chrome. This
        patch proposes a new algorithm which can be adopted in https://github.com/whatwg/dom/issues/684.

        Test: imported/w3c/web-platform-tests/shadow-dom/event-composed-path-after-dom-mutation.html

        * dom/EventContext.cpp:
        (WebCore::EventContext::EventContext):
        (WebCore::MouseOrFocusEventContext::MouseOrFocusEventContext):
        (WebCore::TouchEventContext::TouchEventContext):
        * dom/EventContext.h:
        (WebCore::EventContext::closedShadowDepth const): Added.
        * dom/EventPath.cpp:
        (WebCore::WindowEventContext::WindowEventContext):
        (WebCore::EventPath::buildPath): Compute the closed shadow tree's depths for each node in the path.
        (WebCore::computePathUnclosedToTarget const): Implemented the aforementioned algorithm.
        (WebCore::EventPath::EventPath):

2018-09-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use Semaphore and BinarySemaphore instead of dispatch_semaphore_t
        https://bugs.webkit.org/show_bug.cgi?id=185339

        Reviewed by Mark Lam.

        * fileapi/ThreadableBlobRegistry.cpp:
        (WebCore::ThreadableBlobRegistry::blobSize):
        * platform/cocoa/NetworkExtensionContentFilter.h:
        * platform/cocoa/NetworkExtensionContentFilter.mm:
        (WebCore::NetworkExtensionContentFilter::initialize):
        (WebCore::NetworkExtensionContentFilter::willSendRequest):
        (WebCore::NetworkExtensionContentFilter::responseReceived):
        (WebCore::NetworkExtensionContentFilter::addData):
        (WebCore::NetworkExtensionContentFilter::finishedAddingData):
        (WebCore::NetworkExtensionContentFilter::handleDecision):
        Use per-function BinarySemaphore instead of holding it in NetworkExtensionContentFilter's field.

        * platform/glib/FileMonitorGLib.cpp:
        (WebCore::FileMonitor::FileMonitor):
        (WebCore::FileMonitor::~FileMonitor):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
        Use BinarySemaphore. And remove unused dispatch_semaphore_t.

        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
        (-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
        (WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
        (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
        (WebCore::SourceBufferPrivateAVFObjC::abort):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
        (WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):
        Use Box<Semaphore> and Box<BinarySemaphore>.

        * platform/graphics/cocoa/WebCoreDecompressionSession.h:
        * platform/graphics/cocoa/WebCoreDecompressionSession.mm:
        (WebCore::WebCoreDecompressionSession::WebCoreDecompressionSession):
        Remove unused dispatch_semaphore_t.

        * platform/network/cf/ResourceHandleCFNet.cpp:
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
        (WebCore::getRunLoop):
        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse):
        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace):
        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
        (-[WebCoreResourceHandleAsOperationQueueDelegate initWithHandle:messageQueue:]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate detachHandle]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate dealloc]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]):
        Use BinarySemaphore instead.

2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Many modern media control tests leak documents in testing
        https://bugs.webkit.org/show_bug.cgi?id=189437

        Reviewed by Darin Adler.

        In order to accurately detect leaks in media controls tests which use lots of
        SVGImages, we have to:
        - Fire a zero-delay timer after the postTask, in order for ImagesLoader's m_derefElementTimer
          to clear references to elements.
        - Have releaseCriticalMemory() call CachedResourceLoader's garbageCollectDocumentResources()
          to drop the last handle to the CachedResource for an SVGImage.
        - Call WKBundleReleaseMemory() after the GC and timer, since we need garbageCollectDocumentResources()
          to run again after that timer has fired.
        
        This should fix most of the spurious leak reports involving SVGImage documents.

        * page/MemoryRelease.cpp:
        (WebCore::releaseCriticalMemory):

2018-09-17  Jer Noble  <jer.noble@apple.com>

        Add support for HEVC codec types in Media Capabilities
        https://bugs.webkit.org/show_bug.cgi?id=189565

        Reviewed by Eric Carlson.

        Test: media/hevc-codec-parameters.html

        Add some utility methods for parsing HEVC codec strings, and using those parsed
        values to query the platform for detailed support for HEVC decoding.

        Drive-by fix: Modify MediaEngineConfigurationFactory to allow for null function
        pointers in the encode/decode factory pair.

        * Sources.txt:
        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/cocoa/VideoToolboxSoftLink.cpp:
        * platform/cocoa/VideoToolboxSoftLink.h:
        * platform/graphics/HEVCUtilities.cpp: Added.
        (WebCore::parseHEVCCodecParameters):
        * platform/graphics/HEVCUtilities.h: Added.
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.cpp: Added.
        (WebCore::validateHEVCParameters):
        * platform/graphics/cocoa/HEVCUtilitiesCocoa.h: Added.
        * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp: Added.
        (WebCore::videoCodecTypeFromRFC4281Type):
        (WebCore::createMediaPlayerDecodingConfigurationCocoa):
        * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h: Added.
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::factories):
        (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
        (WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
        * testing/Internals.cpp:
        (WebCore::Internals::parseHEVCCodecParameters):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: generate CSSKeywordCompletions from backend values
        https://bugs.webkit.org/show_bug.cgi?id=189041

        Reviewed by Joseph Pecoraro.

        Modified existing test inspector/css/getSupportedCSSProperties.html.

        * inspector/agents/InspectorCSSAgent.cpp:
        (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
        Send alias and longhand information for all properties, and any known keyword values for
        those applicable. This makes use of `CSSParserFastPaths::isValidKeywordPropertyAndValue` to
        determine if a given keyword is a valid value for each property. This only generates a list
        for properties who have no non-keyword values.

        * css/makeprop.pl:
        * css/makevalues.pl:
        Create additional helper functions/constants for retrieving strings of each CSS keyword.

        * css/CSSProperty.h:
        (WebCore::CSSProperty::aliasesForProperty):

        * css/CSSPrimitiveValue.cpp:
        (WebCore::valueName):

        * css/CSSValuePool.cpp:
        (WebCore::CSSValuePool::CSSValuePool):
        (WebCore::CSSValuePool::createIdentifierValue):

2018-09-17  Youenn Fablet  <youenn@apple.com>

        track.onmute isn't called for a remote MediaStreamTrack when its counter part track is removed from the peer connection
        https://bugs.webkit.org/show_bug.cgi?id=176281
        <rdar://problem/44525674>

        Reviewed by Eric Carlson.

        Listen to libwebrtc remove track callbacks.
        Implement handling as per https://w3c.github.io/webrtc-pc/#process-remote-track-removal.
        This triggers a mute event on the track.

        Test: webrtc/remove-track.html

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::removeRemoteTrack):
        (WebCore::LibWebRTCMediaEndpoint::OnRemoveTrack):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
        (WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
        Drive by fix: Plan B code path does not mandate having an rtc backend for each sender.

2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Add more Fullscreen logging
        https://bugs.webkit.org/show_bug.cgi?id=189656

        Reviewed by Jer Noble.

        Add some fullscreen logging so I can tell whether WebFullScreenManager ever releases
        the fullscreen element.

        * platform/cocoa/VideoFullscreenModelVideoElement.mm:
        (VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
        (VideoFullscreenModelVideoElement::~VideoFullscreenModelVideoElement):
        (VideoFullscreenModelVideoElement::setVideoElement):

2018-09-14  Simon Fraser  <simon.fraser@apple.com>

        Add support for dumping the GraphicsLayer tree via notifyutil
        https://bugs.webkit.org/show_bug.cgi?id=189639

        Reviewed by Zalan Bujtas.

        Make "notifyutil -p com.apple.WebKit.showGraphicsLayerTree" work. It dumps the GraphicsLayer tree
        for each top-level document (GraphicsLayers are connected across frame boundaries, so this prints
        the entire tree for each main frame).
        
        It uses WTFLogAlways rather than fprintf() so output shows on all platforms (other tree dumps should
        be converted in the same way).

        * page/mac/PageMac.mm:
        (WebCore::Page::platformInitialize):
        * platform/graphics/GraphicsLayer.cpp:
        (showGraphicsLayerTree):
        * rendering/RenderLayerCompositor.cpp:
        (showGraphicsLayerTreeForCompositor):
        * rendering/RenderLayerCompositor.h:
        * rendering/RenderObject.cpp:
        (WebCore::printGraphicsLayerTreeForLiveDocuments):
        * rendering/RenderObject.h:

2018-09-17  Christopher Reid  <chris.reid@sony.com>

        [Curl] Add schema version and enable auto vacuum for cookie database.
        https://bugs.webkit.org/show_bug.cgi?id=189669

        Reviewed by Alex Christensen.

        Turning on auto incremental vacuuming and adding versioning to the database. Right now we
        reset tables if there's an unknown schema or if the none is set. There is placeholder logic
        in place to upgrade databases as the schema changes in the future.

        Tested by checking the database manually after launching MiniBrowser.

        * platform/network/curl/CookieJarDB.cpp:
        (WebCore::CookieJarDB::openDatabase):
        (WebCore::CookieJarDB::verifySchemaVersion):
        (WebCore::CookieJarDB::deleteAllTables):
        (WebCore::CookieJarDB::createPrepareStatement):
        (WebCore::CookieJarDB::getPrepareStatement):
        (WebCore::CookieJarDB::executeSimpleSql):
        * platform/network/curl/CookieJarDB.h:
        * platform/network/curl/NetworkStorageSessionCurl.cpp:
        (WebCore::defaultSession):
        * platform/sql/SQLiteDatabase.cpp:
        (WebCore::SQLiteDatabase::turnOnIncrementalAutoVacuum): fixed a bug.

2018-09-14  Ryosuke Niwa  <rniwa@webkit.org>

        Re-order Node flags based on semantics
        https://bugs.webkit.org/show_bug.cgi?id=189643

        Reviewed by Simon Fraser.

        Re-ordered Node flags based on their category and subclasses of Node which use them.

        * dom/Node.h:

2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Add more ResourceLoading logging, particularly in MemoryCache code
        https://bugs.webkit.org/show_bug.cgi?id=189651

        Reviewed by Tim Horton.

        Adding more logging to the ResourceLoading log channel, which I found useful
        when trying to understand cached SVGImage lifetimes (bug 189437).

        * loader/cache/CachedResource.cpp:
        (WebCore::CachedResource::deleteIfPossible):
        * loader/cache/CachedResourceLoader.cpp:
        (WebCore::CachedResourceLoader::requestResource):
        (WebCore::CachedResourceLoader::garbageCollectDocumentResources):
        * loader/cache/MemoryCache.cpp:
        (WebCore::MemoryCache::add):
        (WebCore::MemoryCache::pruneLiveResourcesToSize):
        (WebCore::MemoryCache::pruneDeadResources):
        (WebCore::MemoryCache::pruneDeadResourcesToSize):
        (WebCore::MemoryCache::remove):
        (WebCore::MemoryCache::dumpLRULists const):

2018-09-17  Jer Noble  <jer.noble@apple.com>

        Enable USE_MEDIAREMOTE on iOS
        https://bugs.webkit.org/show_bug.cgi?id=189096

        Reviewed by Eric Carlson.

        Migrate to using MediaRemote.framework on iOS from MediaPlayer.framework. This unifies the
        Now Playing implementation on iOS and Mac.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/audio/cocoa/MediaSessionManagerCocoa.cpp: Removed.
        * platform/audio/cocoa/MediaSessionManagerCocoa.h:
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm: Renamed from Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm.
        (PlatformMediaSessionManager::sharedManager):
        (PlatformMediaSessionManager::sharedManagerIfExists):
        (MediaSessionManagerCocoa::updateSessionState):
        (MediaSessionManagerCocoa::beginInterruption):
        (MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo):
        (MediaSessionManagerCocoa::sessionWillBeginPlayback):
        (MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing):
        (MediaSessionManagerCocoa::removeSession):
        (MediaSessionManagerCocoa::sessionWillEndPlayback):
        (MediaSessionManagerCocoa::clientCharacteristicsChanged):
        (MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
        (MediaSessionManagerCocoa::nowPlayingEligibleSession):
        (MediaSessionManagerCocoa::updateNowPlayingInfo):
        * platform/audio/ios/MediaSessionManagerIOS.h:
        (): Deleted.
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::nowPlayingEligibleSession): Deleted.
        (WebCore::MediaSessionManageriOS::updateNowPlayingInfo): Deleted.
        (WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): Deleted.
        (WebCore::MediaSessionManageriOS::removeSession): Deleted.
        (WebCore::MediaSessionManageriOS::sessionWillEndPlayback): Deleted.
        (WebCore::MediaSessionManageriOS::clientCharacteristicsChanged): Deleted.
        * platform/audio/mac/MediaSessionManagerMac.h: Removed.

2018-09-17  Frederic Wang  <fwang@igalia.com>

        Build error in ImageBufferCG when compiled with IOSurfacePool
        https://bugs.webkit.org/show_bug.cgi?id=189579

        Reviewed by Tim Horton.

        IOSurface.h might be included with different value of IOSURFACE_CANVAS_BACKING_STORE, causing
        compilation errors when files in the same unified source do not agree on the definition.
        This patch moves the definition of IOSURFACE_CANVAS_BACKING_STORE from ImageBufferDataCG.h
        to Platform.h so that IOSURFACE_CANVAS_BACKING_STORE is set to the same value in all files.
        Finally some minors changes to explicitly declare/define ImageBuffer are performed in order
        to prevent future issues with Unified build rotating.

        No new tests, behavior unchanged.

        * html/HTMLCanvasElement.cpp: Explicitly include ImageBuffer.h since it's used in this file.
        * platform/graphics/cg/ImageBufferDataCG.h: Move definition into Platform.h.
        * platform/graphics/cocoa/IOSurface.h: Forward-declare ImageBuffer since it's used in this
        header.

2018-09-17  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Respond with requested authentication scheme for authentication challenge.
        https://bugs.webkit.org/show_bug.cgi?id=189318

        Reviewed by Alex Christensen.

        Curl port depends on libcurl's authentication handling by enabling CURLAUTH_ANY. With this
        mode, the round-trip communication between the client and the server is handled by libcurl
        internally. That's okay for many cases. But when initial request has a credentials
        (i.e. XMLHttpRequest), there's no valid chance to store credential to the storage because
        the returned response is not 401.

        Passes following tests:
        - http/tests/websocket/tests/hybi/httponly-cookie.pl
        - http/tests/websocket/tests/hybi/secure-cookie-insecure-connection.pl
        - http/tests/websocket/tests/hybi/secure-cookie-secure-connection.pl
        - http/tests/xmlhttprequest/basic-auth-default.html
        - http/tests/xmlhttprequest/cross-origin-authorization.html
        - http/tests/xmlhttprequest/logout.html
        - http/tests/xmlhttprequest/null-auth.php
        - http/tests/xmlhttprequest/re-login-async.html
        - http/tests/xmlhttprequest/re-login.html
        - http/tests/xmlhttprequest/redirect-credentials-responseURL.html
        - http/tests/xmlhttprequest/remember-bad-password.html

        * platform/network/ResourceHandle.h:
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::setHttpAuthUserPass):
        (WebCore::CurlHandle::enableHttpAuthentication): Deleted.
        * platform/network/curl/CurlContext.h:
        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::setAuthenticationScheme):
        (WebCore::CurlRequest::setupTransfer):
        * platform/network/curl/CurlRequest.h:
        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
        (WebCore::ResourceHandle::receivedCredential):
        (WebCore::ResourceHandle::getCredential):
        (WebCore::ResourceHandle::restartRequestWithCredential):
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        (WebCore::ResourceHandle::continueAfterWillSendRequest):

2018-09-17  Youenn Fablet  <youenn@apple.com>

        Enable VCP for iOS and reenable it for MacOS
        https://bugs.webkit.org/show_bug.cgi?id=189635
        <rdar://problem/43621029>

        Reviewed by Eric Carlson.

        Covered by exsiting and modified tests.
        Instead of using libwebrtc YUV frames for black frames, use CVPixelBuffer to make it efficient.
        Add internal API to know whether VCP is enabled so as to make capture-webrtc test pass on all platforms.

        * platform/mediastream/RealtimeOutgoingVideoSource.cpp:
        (WebCore::RealtimeOutgoingVideoSource::sendBlackFramesIfNeeded):
        * platform/mediastream/RealtimeOutgoingVideoSource.h:
        * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        (WebCore::createBlackPixelBuffer):
        (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        (WebCore::RealtimeOutgoingVideoSourceCocoa::createBlackFrame):
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
        * testing/Internals.cpp:
        (WebCore::Internals::supportsVCPEncoder):
        * testing/Internals.h:
        * testing/Internals.idl:

2018-09-17  Chris Dumez  <cdumez@apple.com>

        PSON: window.open() with 'noopener' should only process-swap cross-site, not cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=189602
        <rdar://problem/44430549>

        Reviewed by Geoff Garen.

        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::setTriggeringAction):
        * loader/DocumentLoader.h:
        * loader/FrameLoadRequest.h:
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        (WebCore::FrameLoader::loadWithNavigationAction):
        (WebCore::FrameLoader::loadWithDocumentLoader):
        (WebCore::FrameLoader::loadPostRequest):
        (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
        (WebCore::FrameLoader::loadDifferentDocumentItem):
        Move NavigationAction's opener setting to loadWithNavigationAction() as this is a better bottleneck.
        Otherwise, we'd have to set it at several call sites. Also move the NavigationAction around instead
        of copying it.

        * loader/FrameLoader.h:
        (WebCore::FrameLoader::loadWithNavigationAction):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::setShouldOpenExternalURLsPolicy):
        * loader/PolicyChecker.cpp:
        (WebCore::PolicyChecker::checkNavigationPolicy):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):

2018-09-17  Darin Adler  <darin@apple.com>

        Use OpaqueJSString rather than JSRetainPtr inside WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189652

        Reviewed by Saam Barati.

        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.
        (WebCore::jsValueWithAVMetadataItemInContext): Use adoptCF.

        * platform/mac/SerializedPlatformRepresentationMac.mm:
        (WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.

2018-09-08  Darin Adler  <darin@apple.com>

        Streamline JSRetainPtr, fix leaks of JSString and JSGlobalContext
        https://bugs.webkit.org/show_bug.cgi?id=189455

        Reviewed by Keith Miller.

        * Modules/plugins/QuickTimePluginReplacement.mm:
        (WebCore::jsValueWithDictionaryInContext): Adding a missing
        JSStringRelease to fix a leak.

2018-09-15  Rob Buis  <rbuis@igalia.com>

        XMLHttpRequest::createResponseBlob() should create a Blob with type for empty response
        https://bugs.webkit.org/show_bug.cgi?id=189627

        Reviewed by Alexey Proskuryakov.

        Right now we return an empty Blob without type when the response is empty, but
        it should always include the type [1].

        Test: web-platform-tests/xhr/overridemimetype-blob.html

        [1] https://xhr.spec.whatwg.org/#blob-response

        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::createResponseBlob):

2018-09-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Bug fix on some inaccurate values in NetworkLoadMetrics.
        https://bugs.webkit.org/show_bug.cgi?id=189530

        Reviewed by Alex Christensen.

        Curl port uses the start time libcurl provided. But there's a lug between main thread and Curl thread.
        Record the start time of request instead of libcurl's start timing and use it to measure the metrics.
        Also respondEnd was not correctly recorded and fixed.

        No new tests because it cannot be measured from DRT.

        * platform/network/ResourceHandleInternal.h:
        * platform/network/curl/CurlContext.cpp:
        (WebCore::CurlHandle::getNetworkLoadMetrics):
        * platform/network/curl/CurlContext.h:
        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::start):
        (WebCore::CurlRequest::setupTransfer):
        (WebCore::CurlRequest::didCompleteTransfer):
        (WebCore::CurlRequest::updateNetworkLoadMetrics):
        * platform/network/curl/CurlRequest.h:
        (WebCore::CurlRequest::setStartTime):
        * platform/network/curl/ResourceHandleCurl.cpp:
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::restartRequestWithCredential):
        (WebCore::ResourceHandle::platformLoadResourceSynchronously):
        (WebCore::ResourceHandle::willSendRequest):
        (WebCore::ResourceHandle::continueAfterWillSendRequest):

2018-09-14  Justin Fan  <justin_fan@apple.com>

        WebGL 2 conformance: rgb-format-support.html
        https://bugs.webkit.org/show_bug.cgi?id=189610
        <rdar://problem/44403343>

        Reviewed by Dean Jackson.

        Implementing getInternalformatParameter (emulating on macOS) and updating 
        renderbufferStorage{Multisample} for WebGL 2 conformance. 

        Test: webgl/2.0.0/conformance2/rendering/rgb-format-support.html enabled.

        * html/canvas/WebGL2RenderingContext.cpp:
        (WebCore::isRenderableInternalformat):
        (WebCore::WebGL2RenderingContext::getInternalformatParameter):
        (WebCore::WebGL2RenderingContext::renderbufferStorageMultisample):
        (WebCore::WebGL2RenderingContext::renderbufferStorage):
        (WebCore::WebGL2RenderingContext::baseInternalFormatFromInternalFormat):
        (WebCore::WebGL2RenderingContext::isIntegerFormat):
        * platform/graphics/GraphicsContext3D.h:
        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
        (WebCore::GraphicsContext3D::getInternalformativ):
        (WebCore::GraphicsContext3D::renderbufferStorageMultisample):

2018-09-14  Justin Michaud  <justin_michaud@apple.com>

        Add support for spreadMethod=reflect and repeat on SVG gradients (for CoreGraphics platforms)
        https://bugs.webkit.org/show_bug.cgi?id=5968

        Add support for spreadMethod=repeat and reflect. Also, the opacity of a gradient is now
        the result of multiplying stop-opacity with the opacity of the color.

        Reviewed by Simon Fraser.

        Tests: svg/gradients/spreadMethod-expected.svg
               svg/gradients/spreadMethod.svg
               svg/gradients/spreadMethodAlpha-expected.svg
               svg/gradients/spreadMethodAlpha.svg
               svg/gradients/spreadMethodClose0-expected-mismatch.svg
               svg/gradients/spreadMethodClose0.svg
               svg/gradients/spreadMethodClose1-expected-mismatch.svg
               svg/gradients/spreadMethodClose1.svg
               svg/gradients/spreadMethodClose2-expected.svg
               svg/gradients/spreadMethodClose2.svg
               svg/gradients/spreadMethodDiagonal-expected.svg
               svg/gradients/spreadMethodDiagonal.svg
               svg/gradients/spreadMethodDiagonal2-expected.svg
               svg/gradients/spreadMethodDiagonal2.svg
               svg/gradients/spreadMethodDuplicateStop-expected.svg
               svg/gradients/spreadMethodDuplicateStop.svg
               svg/gradients/spreadMethodReversed-expected.svg
               svg/gradients/spreadMethodReversed.svg
               svg/gradients/stopAlpha-expected.svg
               svg/gradients/stopAlpha.svg

        * platform/graphics/cg/GradientCG.cpp:
        (WebCore::Gradient::paint):
        * svg/SVGStopElement.cpp:
        (WebCore::SVGStopElement::stopColorIncludingOpacity const):

2018-09-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the iOSMac build after r236015.

        * platform/graphics/cv/PixelBufferResizer.mm:
        (WebCore::PixelBufferResizer::PixelBufferResizer):

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.
        
        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        All the other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        No behavior change.

        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::layerWithDocumentOverlays):
        (WebCore::PageOverlayController::layerWithViewOverlays):
        (WebCore::PageOverlayController::installPageOverlay):
        (WebCore::PageOverlayController::uninstallPageOverlay):
        (WebCore::PageOverlayController::setPageOverlayNeedsDisplay):
        (WebCore::PageOverlayController::didChangeViewSize):
        (WebCore::PageOverlayController::didChangeDocumentSize):
        (WebCore::PageOverlayController::didChangeSettings):
        (WebCore::PageOverlayController::paintContents):
        (WebCore::PageOverlayController::didChangeOverlayFrame):
        (WebCore::PageOverlayController::didChangeOverlayBackgroundColor):
        * page/PageOverlayController.h:
        * page/mac/ServicesOverlayController.h:
        (WebCore::ServicesOverlayController::Highlight::layer const):
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::Highlight):
        (WebCore::ServicesOverlayController::Highlight::invalidate):
        (WebCore::ServicesOverlayController::Highlight::fadeIn):
        (WebCore::ServicesOverlayController::Highlight::fadeOut):
        (WebCore::ServicesOverlayController::Highlight::didFinishFadeOutAnimation):
        (WebCore::ServicesOverlayController::determineActiveHighlight):
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::GraphicsLayer):
        (WebCore::GraphicsLayer::willBeDestroyed):
        (WebCore::GraphicsLayer::setChildren):
        (WebCore::GraphicsLayer::addChild):
        (WebCore::GraphicsLayer::addChildAtIndex):
        (WebCore::GraphicsLayer::addChildBelow):
        (WebCore::GraphicsLayer::addChildAbove):
        (WebCore::GraphicsLayer::replaceChild):
        (WebCore::GraphicsLayer::removeAllChildren):
        (WebCore::GraphicsLayer::removeFromParent):
        (WebCore::GraphicsLayer::setMaskLayer):
        (WebCore::GraphicsLayer::noteDeviceOrPageScaleFactorChangedIncludingDescendants):
        (WebCore::GraphicsLayer::distributeOpacity):
        (WebCore::GraphicsLayer::traverse):
        (WebCore::dumpChildren):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::children const):
        (WebCore::GraphicsLayer::children):
        (WebCore::GraphicsLayer::maskLayer const):
        (WebCore::GraphicsLayer::replicaLayer const):
        (WebCore::GraphicsLayer::beingDestroyed const):
        (WebCore::GraphicsLayer:: const): Deleted.
        * platform/graphics/GraphicsLayerFactory.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerCA::setChildren):
        (WebCore::GraphicsLayerCA::addChild):
        (WebCore::GraphicsLayerCA::addChildAtIndex):
        (WebCore::GraphicsLayerCA::addChildBelow):
        (WebCore::GraphicsLayerCA::addChildAbove):
        (WebCore::GraphicsLayerCA::replaceChild):
        (WebCore::GraphicsLayerCA::setMaskLayer):
        (WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const):
        (WebCore::GraphicsLayerCA::recursiveCommitChanges):
        (WebCore::GraphicsLayerCA::updateSublayerList):
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerTextureMapper::setChildren):
        (WebCore::GraphicsLayerTextureMapper::addChild):
        (WebCore::GraphicsLayerTextureMapper::addChildAtIndex):
        (WebCore::GraphicsLayerTextureMapper::addChildAbove):
        (WebCore::GraphicsLayerTextureMapper::addChildBelow):
        (WebCore::GraphicsLayerTextureMapper::replaceChild):
        (WebCore::GraphicsLayerTextureMapper::setMaskLayer):
        (WebCore::GraphicsLayerTextureMapper::updateBackingStoreIncludingSubLayers):
        * platform/graphics/texmap/GraphicsLayerTextureMapper.h:
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::CoordinatedGraphicsLayer::setShouldUpdateVisibleRect):
        (WebCore::CoordinatedGraphicsLayer::addChild):
        (WebCore::CoordinatedGraphicsLayer::addChildAtIndex):
        (WebCore::CoordinatedGraphicsLayer::addChildAbove):
        (WebCore::CoordinatedGraphicsLayer::addChildBelow):
        (WebCore::CoordinatedGraphicsLayer::replaceChild):
        (WebCore::CoordinatedGraphicsLayer::setMaskLayer):
        (WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffersIncludingSubLayers):
        (WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
        * platform/graphics/win/GraphicsLayerDirect2D.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerDirect2D::GraphicsLayerDirect2D): Deleted.
        (WebCore::GraphicsLayerDirect2D::initialize): Deleted.
        (WebCore::GraphicsLayerDirect2D::~GraphicsLayerDirect2D): Deleted.
        (WebCore::GraphicsLayerDirect2D::setNeedsDisplay): Deleted.
        (WebCore::GraphicsLayerDirect2D::setNeedsDisplayInRect): Deleted.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::createGraphicsLayer):
        (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateInternalHierarchy):
        (WebCore::RenderLayerBacking::updateMaskingLayer):
        (WebCore::RenderLayerBacking::updateChildClippingStrategy):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
        (WebCore::RenderLayerCompositor::setCompositingParent):
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForHeader):
        (WebCore::RenderLayerCompositor::updateLayerForFooter):
        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
        (WebCore::RenderLayerCompositor::ensureRootLayer):
        (WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
        * rendering/RenderLayerCompositor.h:

2018-09-14  Eric Carlson  <eric.carlson@apple.com>

        Support arbitrary video resolution in getUserMedia API
        https://bugs.webkit.org/show_bug.cgi?id=178109
        <rdar://problem/35083128>

        Reviewed by Youenn Fablet.

        Support arbitrary video resolutions by configuring the camera to capture at the closest
        larger size it supports and scaling/cropping frames as necessary.

        No new tests, existing tests updated.

        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
        * Modules/webaudio/MediaStreamAudioSource.cpp:
        (WebCore::MediaStreamAudioSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::MediaStreamAudioSource::settings): Ditto.
        (WebCore::MediaStreamAudioSource::capabilities const): Deleted.
        (WebCore::MediaStreamAudioSource::settings const): Deleted.
        * Modules/webaudio/MediaStreamAudioSource.h:

        * SourcesCocoa.txt: Add PixelBufferResizer.

        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/cocoa/CoreVideoSoftLink.h:
        * platform/cocoa/VideoToolboxSoftLink.cpp:
        * platform/cocoa/VideoToolboxSoftLink.h:

        * platform/graphics/cv/PixelBufferResizer.h: Added.
        (WebCore::PixelBufferResizer::canResizeTo):
        * platform/graphics/cv/PixelBufferResizer.mm: Added.
        (WebCore::PixelBufferResizer::PixelBufferResizer):
        (WebCore::PixelBufferResizer::resize):

        * platform/mediastream/RealtimeIncomingAudioSource.cpp:
        (WebCore::RealtimeIncomingAudioSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::RealtimeIncomingAudioSource::settings): Ditto.
        (WebCore::RealtimeIncomingAudioSource::capabilities const): Deleted.
        (WebCore::RealtimeIncomingAudioSource::settings const): Deleted.
        * platform/mediastream/RealtimeIncomingAudioSource.h:

        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
        (WebCore::RealtimeIncomingVideoSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::RealtimeIncomingVideoSource::settings): Ditto.
        (WebCore::RealtimeIncomingVideoSource::capabilities const): Deleted.
        (WebCore::RealtimeIncomingVideoSource::settings const): Deleted.
        * platform/mediastream/RealtimeIncomingVideoSource.h:

        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::supportsConstraint):
        (WebCore::RealtimeMediaSource::supportsConstraint const): Deleted.
        * platform/mediastream/RealtimeMediaSource.h:

        * platform/mediastream/RealtimeVideoSource.cpp:
        (WebCore::RealtimeVideoSource::presets):
        (WebCore::RealtimeVideoSource::setSupportedPresets):
        (WebCore::standardVideoSizes):
        (WebCore::RealtimeVideoSource::updateCapabilities): Make non-const, it wasn't helpful.
        (WebCore::presetSupportsFrameRate):
        (WebCore::RealtimeVideoSource::supportsCaptureSize):
        (WebCore::RealtimeVideoSource::shouldUsePreset):
        (WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
        (WebCore::RealtimeVideoSource::setSizeAndFrameRate):
        (WebCore::RealtimeVideoSource::addSupportedCapabilities const): Deleted.
        * platform/mediastream/RealtimeVideoSource.h:
        (WebCore::VideoPresetData::encode const):
        (WebCore::VideoPresetData::decode):
        (WebCore::VideoPreset::create):
        (WebCore::VideoPreset::VideoPreset):
        (WebCore::RealtimeVideoSource::prefersPreset):
        (WebCore::RealtimeVideoSource::canResizeVideoFrames const):
        (WebCore::RealtimeVideoSource::setDefaultSize):
        (WebCore::RealtimeVideoSource::observedFrameRate const):
        (WebCore::VideoPreset::encode const): Deleted.
        (WebCore::VideoPreset::decode): Deleted.

        * platform/mediastream/mac/AVVideoCaptureSource.h:
        (WebCore::AVVideoCaptureSource::videoPresets): Deleted.
        * platform/mediastream/mac/AVVideoCaptureSource.mm:
        (WebCore::AVVideoPreset::create):
        (WebCore::AVVideoPreset::AVVideoPreset):
        (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
        (WebCore::AVVideoCaptureSource::settings):
        (WebCore::AVVideoCaptureSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::AVVideoCaptureSource::setFrameRate):
        (WebCore::AVVideoCaptureSource::prefersPreset):
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
        (WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
        (WebCore::AVVideoCaptureSource::setupCaptureSession):
        (WebCore::AVVideoCaptureSource::processNewFrame):
        (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
        (WebCore::AVVideoCaptureSource::isFrameRateSupported):
        (WebCore::AVVideoCaptureSource::generatePresets):
        (WebCore::updateSizeMinMax): Deleted.
        (WebCore::updateAspectRatioMinMax): Deleted.
        (WebCore::AVVideoCaptureSource::settings const): Deleted.
        (WebCore::AVVideoCaptureSource::capabilities const): Deleted.
        (WebCore::AVVideoCaptureSource::sizeForPreset): Deleted.
        (WebCore::AVVideoCaptureSource::setPreset): Deleted.
        (WebCore::AVVideoCaptureSource::setSizeAndFrameRate): Deleted.
        (WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions): Deleted.
        (WebCore::AVVideoCaptureSource::supportsSizeAndFrameRate): Deleted.

        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
        (WebCore::CoreAudioCaptureSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::CoreAudioCaptureSource::settings): Ditto.
        (WebCore::CoreAudioCaptureSource::capabilities const): Deleted.
        (WebCore::CoreAudioCaptureSource::settings const): Deleted.
        * platform/mediastream/mac/CoreAudioCaptureSource.h:

        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
        (WebCore::DisplayCaptureSourceCocoa::capabilities): Make non-const, it wasn't helpful.
        (WebCore::DisplayCaptureSourceCocoa::settings): Ditto.
        (WebCore::DisplayCaptureSourceCocoa::capabilities const): Deleted.
        (WebCore::DisplayCaptureSourceCocoa::settings const): Deleted.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

        * platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer):
        (WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):
        (WebCore::MockRealtimeVideoSourceMac::setSizeAndFrameRateWithPreset):
        * platform/mock/MockMediaDevice.h:
        (WebCore::MockCameraProperties::decode):

        * platform/mock/MockRealtimeAudioSource.cpp:
        (WebCore::MockRealtimeAudioSource::settings): Make non-const, it wasn't helpful.
        (WebCore::MockRealtimeAudioSource::capabilities): Ditto.
        (WebCore::MockRealtimeAudioSource::settings const): Deleted.
        (WebCore::MockRealtimeAudioSource::capabilities const): Deleted.
        * platform/mock/MockRealtimeAudioSource.h:

        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
        (WebCore::defaultDevices): Change video device presets to trigger resize code more often.

        * platform/mock/MockRealtimeVideoSource.cpp:
        (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
        (WebCore::MockRealtimeVideoSource::generatePresets):
        (WebCore::MockRealtimeVideoSource::capabilities): Make non-const, it wasn't helpful.
        (WebCore::MockRealtimeVideoSource::settings): Ditto.
        (WebCore::MockRealtimeVideoSource::capabilities const): Deleted.
        (WebCore::MockRealtimeVideoSource::settings const): Deleted.
        * platform/mock/MockRealtimeVideoSource.h:

2018-09-14  Frederic Wang  <fwang@igalia.com>

        Bug 189541 - Build error in FontDescriptionKey::computeHash when compiling FontTaggedSettings and FontCascadeFonts together
        https://bugs.webkit.org/show_bug.cgi?id=189541

        Reviewed by Alex Christensen.

        FontDescriptionKey::computeHash() from In FontCache.h requires implicit instantiation of the
        FontTaggedSettings::hash() template function. This instantiation may happen before
        FontTaggedSettings::hash() is actually fully specialized in FontTaggedSettings.cpp. To avoid
        compiler errors when FontCache.h and FontTaggedSettings.cpp are in the same translation unit,
        we declare full specialization of the hash() functions in FontTaggedSettings.h.

        No new tests, behavior unchanged.

        * platform/graphics/FontCache.h: Explicitly include FontTaggedSettings to avoid possible future breakage.
        * platform/graphics/FontTaggedSettings.h: Declare full specialization of FontTaggedSettings::hash().

2018-09-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235990.

        Introduced TestWebKitAPI.NowPlayingTest timeouts on iOS

        Reverted changeset:

        "Enable USE_MEDIAREMOTE on iOS"
        https://bugs.webkit.org/show_bug.cgi?id=189096
        https://trac.webkit.org/changeset/235990

2018-09-14  Jer Noble  <jer.noble@apple.com>

        Turn SourceBufferChangeTypeEnabled on by default
        https://bugs.webkit.org/show_bug.cgi?id=189527

        Reviewed by Eric Carlson.

        * page/Settings.yaml:

2018-09-14  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Record actions performed on ImageBitmapRenderingContext
        https://bugs.webkit.org/show_bug.cgi?id=181341

        Reviewed by Joseph Pecoraro.

        Test: inspector/canvas/recording-bitmaprenderer.html

        * html/canvas/ImageBitmapRenderingContext.idl:

        * inspector/InspectorCanvas.cpp:
        (WebCore::shouldSnapshotBitmapRendererAction):
        (WebCore::InspectorCanvas::recordAction):

        * inspector/agents/InspectorCanvasAgent.cpp:
        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):

        * page/PageConsoleClient.cpp:
        (canvasRenderingContext):

2018-09-14  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r235954): Fix build failure on watchOS
        <https://webkit.org/b/189605>

        Reviewed by Geoffrey Garen.

        Remove `using WebCore::IndexedDB::KeyType;` from
        Source/WebCore/Modules/indexeddb/IDBKey.h and fix all the
        resulting build failures.

        * Modules/indexeddb/IDBKey.cpp:
        (WebCore::IDBKey::IDBKey):
        (WebCore::IDBKey::isValid const):
        (WebCore::IDBKey::compare const):
        * Modules/indexeddb/IDBKey.h:
        (WebCore::IDBKey::createNumber):
        (WebCore::IDBKey::createDate):
        (WebCore::IDBKey::type const):
        (WebCore::IDBKey::array const):
        (WebCore::IDBKey::string const):
        (WebCore::IDBKey::date const):
        (WebCore::IDBKey::number const):
        (WebCore::IDBKey::binary const):
        (WebCore::IDBKey::compareTypes):
        (WebCore::IDBKey::IDBKey):
        * Modules/indexeddb/IDBKeyData.cpp:
        (WebCore::IDBKeyData::IDBKeyData):
        (WebCore::IDBKeyData::maybeCreateIDBKey const):
        (WebCore::IDBKeyData::isolatedCopy):
        (WebCore::IDBKeyData::encode const):
        (WebCore::IDBKeyData::decode):
        (WebCore::IDBKeyData::compare const):
        (WebCore::IDBKeyData::loggingString const):
        (WebCore::IDBKeyData::setArrayValue):
        (WebCore::IDBKeyData::setBinaryValue):
        (WebCore::IDBKeyData::setStringValue):
        (WebCore::IDBKeyData::setDateValue):
        (WebCore::IDBKeyData::setNumberValue):
        (WebCore::IDBKeyData::isValid const):
        (WebCore::IDBKeyData::operator== const):
        * Modules/indexeddb/IDBKeyData.h:
        (WebCore::IDBKeyData::IDBKeyData):
        (WebCore::IDBKeyData::minimum):
        (WebCore::IDBKeyData::maximum):
        (WebCore::IDBKeyData::type const):
        (WebCore::IDBKeyData::hash const):
        (WebCore::IDBKeyData::string const):
        (WebCore::IDBKeyData::date const):
        (WebCore::IDBKeyData::number const):
        (WebCore::IDBKeyData::binary const):
        (WebCore::IDBKeyData::array const):
        (WebCore::IDBKeyData::encode const):
        (WebCore::IDBKeyData::decode):
        * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
        (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
        * bindings/js/IDBBindingUtilities.cpp:
        (WebCore::toJS):

2018-09-14  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [EME] Add support the waitingforkey event
        https://bugs.webkit.org/show_bug.cgi?id=189616

        Reviewed by Philippe Normand.

        Crossplatform support to fire the waitingforkey event from the
        player to the element. The element implements the W3C specified
        algorithm.

        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::mediaPlayerWaitingForKey):
        (WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
        * html/HTMLMediaElement.h:
        * platform/graphics/MediaPlayer.cpp:
        (WebCore::MediaPlayer::waitingForKey):
        * platform/graphics/MediaPlayer.h:
        (WebCore::MediaPlayerClient::mediaPlayerWaitingForKey):

2018-09-14  Mike Gorse  <mgorse@suse.com>

        builtins directory causes name conflict on Python 3
        https://bugs.webkit.org/show_bug.cgi?id=189552

        Reviewed by Michael Catanzaro.

        No new tests (No behavior change).

        * CMakeLists.txt: builtins -> wkbuiltins.
        * DerivedSources.make: builtins -> wkbuiltins.

2018-09-13  Ryosuke Niwa  <rniwa@webkit.org>

        Capturing event listeners are called during bubbling phase for shadow hosts
        https://bugs.webkit.org/show_bug.cgi?id=174288
        <rdar://problem/33530455>

        Reviewed by Darin Adler.

        Implemented the new behavior proposed in https://github.com/whatwg/dom/pull/686 [1] to fix the problem
        that capturing event listeners on a shadow host is invoked during bubbling phase when an event is
        dispatched within its shadow tree.

        To see why this is a problem, suppose we fire a composed event at span#target in the following DOM tree:
          section#hostParent
            + div#host -- ShadowRoot
                            - p#parent
                                - span#target
        Then capturing and bubbling event listeners on #target, #parent, #host, and #hostParent are invoked in
        the following order in WebKit & Chrome right now:

        1. #hostParent, capturing, eventPhase: CAPTURING_PHASE
        2. #parent, capturing, eventPhase: CAPTURING_PHASE
        3. #target, capturing, eventPhase: AT_TARGET
        4. #target, non-capturing, eventPhase: AT_TARGET
        5. #parent, non-capturing, eventPhase: BUBBLING_PHASE
        6. #host, capturing, eventPhase: AT_TARGET
        7. #host, non-capturing, eventPhase: AT_TARGET
        8. #hostParent, non-capturing, eventPhase: BUBBLING_PHASE

        This is counter-intuitive because capturing event listeners on #host isn't invoked until bubblign phase
        started. A more natural ordering would be:

        1. #hostParent, capturing, eventPhase: CAPTURING_PHASE
        2. #host, capturing, eventPhase: AT_TARGET
        3. #parent, capturing, eventPhase: CAPTURING_PHASE
        4. #target, capturing, eventPhase: AT_TARGET
        5. #target, non-capturing, eventPhase: AT_TARGET
        6. #parent, non-capturing, eventPhase: BUBBLING_PHASE
        7. #host, non-capturing, eventPhase: AT_TARGET
        8. #hostParent, non-capturing, eventPhase: BUBBLING_PHASE

        This also happens to be the order by which Gecko's current shadow DOM implementation invoke event listners.
        This patch implements this new behavior using the spec-change proposed in [1]. Note that this patch also
        impacts the invocation order of event listeners when there is no shadow tree. Namely, before this patch,
        event listeners on the event's target is invoked in the registration order. After this patch, all capturing
        event listeners are invoked before bubbling event listeners are invoked.

        To implement this behavior, this patch introduces EventTarget::EventInvokePhase indicating whether we're
        in the capturing phase or bubbling phase to EventTarget::fireEventListeners. We can't use Event's eventPhase
        enum because that's set to Event::Phase::AT_TARGET when we're at a shadow host.

        Test: fast/shadow-dom/capturing-and-bubbling-event-listeners-across-shadow-trees.html

        * Modules/modern-media-controls/media/media-controller-support.js:
        (MediaControllerSupport.prototype.enable): Use capturing event listeners so that we can update the states of
        media controls before author scripts recieve the event.
        (MediaControllerSupport.prototype.disable): Ditto.
        * dom/EventContext.cpp:
        (WebCore::EventContext::handleLocalEvents const):
        (WebCore::MouseOrFocusEventContext::handleLocalEvents const):
        (WebCore::TouchEventContext::handleLocalEvents const):
        * dom/EventContext.h:
        * dom/EventDispatcher.cpp:
        (WebCore::dispatchEventInDOM): Invoke capturing event listners even when target and current target are same.
        This happens when the current target is a shadow host and event's target is in its shadow tree. Also merged
        the special code path for the event's target with the code in the bubbling phase.
        * dom/EventPath.cpp:
        (WebCore::WindowEventContext::handleLocalEvents const):
        * dom/EventTarget.cpp:
        (WebCore::EventTarget::dispatchEvent): Invoke capturing and bubbling event listeners in the order.
        (WebCore::EventTarget::fireEventListeners):
        (WebCore::EventTarget::innerInvokeEventListeners): Renamed from fireEventListeners to match the spec. Use
        EventInvokePhase to filter out event listeners so that we can invoke capturing event listners before bubbling
        event listeners even when eventPhase is Event::Phase::AT_TARGET.
        * dom/EventTarget.h:
        * dom/Node.cpp:
        (WebCore::Node::handleLocalEvents):
        * dom/Node.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::handleLocalEvents):
        * html/HTMLFormElement.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::dispatchEvent):

2018-09-13  Megan Gardner  <megan_gardner@apple.com>

        Fix color stop blending in conic gradients for stops past 1
        https://bugs.webkit.org/show_bug.cgi?id=189532
        <rdar://problem/44158221>

        Reviewed by Simon Fraser.

        Calculation was wrong, fixed it, and wrote a test that failed
        without the change, and passes with it.

        Test: fast/gradients/conic-repeating-last-stop.html

        * css/CSSGradientValue.cpp:
        (WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): setting window.opener to null allows process swapping in cases that are not web-compatible
        https://bugs.webkit.org/show_bug.cgi?id=189590
        <rdar://problem/44422725>

        Reviewed by Geoffrey Garen.

        Set a flag on the navigation action to indicate if the page was opened via window.open() without 'noopener'.

        Test: http/tests/navigation/window-open-cross-origin-then-navigated-back-same-origin.html

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::loadURL):
        * loader/NavigationAction.h:
        (WebCore::NavigationAction::openedViaWindowOpenWithOpener const):
        (WebCore::NavigationAction::setOpenedViaWindowOpenWithOpener):
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::createWindow):
        * page/Page.h:
        (WebCore::Page::openedViaWindowOpenWithOpener const):
        (WebCore::Page::setOpenedViaWindowOpenWithOpener):

2018-09-13  Jer Noble  <jer.noble@apple.com>

        Enable USE_MEDIAREMOTE on iOS
        https://bugs.webkit.org/show_bug.cgi?id=189096

        Reviewed by Eric Carlson.

        Migrate to using MediaRemote.framework on iOS from MediaPlayer.framework. This unifies the
        Now Playing implementation on iOS and Mac.

        * SourcesCocoa.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/audio/cocoa/MediaSessionManagerCocoa.cpp: Removed.
        * platform/audio/cocoa/MediaSessionManagerCocoa.h:
        * platform/audio/cocoa/MediaSessionManagerCocoa.mm: Renamed from Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm.
        (PlatformMediaSessionManager::sharedManager):
        (PlatformMediaSessionManager::sharedManagerIfExists):
        (MediaSessionManagerCocoa::updateSessionState):
        (MediaSessionManagerCocoa::beginInterruption):
        (MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo):
        (MediaSessionManagerCocoa::sessionWillBeginPlayback):
        (MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing):
        (MediaSessionManagerCocoa::removeSession):
        (MediaSessionManagerCocoa::sessionWillEndPlayback):
        (MediaSessionManagerCocoa::clientCharacteristicsChanged):
        (MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
        (MediaSessionManagerCocoa::nowPlayingEligibleSession):
        (MediaSessionManagerCocoa::updateNowPlayingInfo):
        * platform/audio/ios/MediaSessionManagerIOS.h:
        (): Deleted.
        * platform/audio/ios/MediaSessionManagerIOS.mm:
        (WebCore::MediaSessionManageriOS::nowPlayingEligibleSession): Deleted.
        (WebCore::MediaSessionManageriOS::updateNowPlayingInfo): Deleted.
        (WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): Deleted.
        (WebCore::MediaSessionManageriOS::removeSession): Deleted.
        (WebCore::MediaSessionManageriOS::sessionWillEndPlayback): Deleted.
        (WebCore::MediaSessionManageriOS::clientCharacteristicsChanged): Deleted.
        * platform/audio/mac/MediaSessionManagerMac.h: Removed.

2018-09-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove the workaround for friend class LazyNeverDestroyed<X> statements for MSVC
        https://bugs.webkit.org/show_bug.cgi?id=189576

        Reviewed by Alex Christensen.

        Old MSVC can't compile "friend class LazyNeverDestroyed<X>"
        statements, but "friend LazyNeverDestroyed<X>".

        No new tests (No behavior change).

        * css/CSSInheritedValue.h: Removed the code for COMPILER(MSVC).
        Removed 'class' keyword in "friend class LazyNeverDestroyed<X>"
        statement.
        * css/CSSInitialValue.h: Ditto.
        * css/CSSPrimitiveValue.h: Ditto.
        * css/CSSRevertValue.h: Ditto.
        * css/CSSUnsetValue.h: Ditto.

2018-09-13  Ms2ger  <Ms2ger@igalia.com>

        [GLib] Fix format string in KeyedEncoderGlib::beginObject().
        https://bugs.webkit.org/show_bug.cgi?id=189585

        Reviewed by Michael Catanzaro.

        This appears to fix the following assertion locally:

        GLib-CRITICAL **: g_variant_builder_add_value: assertion '!GVSB(builder)->expected_type || g_variant_is_of_type (value, GVSB(builder)->expected_type)' failed

        Covered by existing tests.

        * platform/glib/KeyedEncoderGlib.cpp:
        (WebCore::KeyedEncoderGlib::beginObject):

2018-09-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235953.

        Caused layout test crashes under GuardMalloc.

        Reverted changeset:

        "Make GraphicsLayers ref-counted, so their tree can persist
        when disconnected from RenderLayerBackings"
        https://bugs.webkit.org/show_bug.cgi?id=189521
        https://trac.webkit.org/changeset/235953

2018-09-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove a MSVC workaround in XPath::Step::NodeTest
        https://bugs.webkit.org/show_bug.cgi?id=189578

        Reviewed by Alex Christensen.

        XPath::Step::NodeTest has a special code for MSVC bug workaround.
        It has been introduced in 5 years ago in Bug 121082 Comment 19.

        I think it is safe just to remove the workaround.

        No new tests (No behavior change).

        * xml/XPathStep.h: Removed the MSVC workaround.

2018-09-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove a MSVC workaround in InspectorStyle::styleWithProperties
        https://bugs.webkit.org/show_bug.cgi?id=189577

        Reviewed by Alex Christensen.

        No new tests (No behavior change).

        * inspector/InspectorStyleSheet.cpp:
        (WebCore::InspectorStyle::styleWithProperties const): Use 'auto' for the type of 'status'.

2018-09-13  Alex Christensen  <achristensen@webkit.org>

        Use a Variant instead of a union in CSSSelector
        https://bugs.webkit.org/show_bug.cgi?id=188559

        Reviewed by Antti Koivisto.

        No change in behavior. This just makes some of the existing problems more obvious and easy to fix.

        I moved m_caseInsensitiveAttributeValueMatching to RareData because it's only used with RareData.
        I only have m_isForPage when assertions are enabled because it's only used for an assertion.
        The rest is pretty straightforward translating union syntax to Variant syntax.
        I use RefPtr for now where I could use Ref because it's never null to make copying easier, but that's temporary.

        * css/CSSSelector.cpp:
        (WebCore::CSSSelector::CSSSelector):
        (WebCore::CSSSelector::createRareData):
        (WebCore::CSSSelector::setAttribute):
        (WebCore::CSSSelector::setArgument):
        (WebCore::CSSSelector::setLangArgumentList):
        (WebCore::CSSSelector::setSelectorList):
        (WebCore::CSSSelector::setNth):
        (WebCore::CSSSelector::matchNth const):
        (WebCore::CSSSelector::nthA const):
        (WebCore::CSSSelector::nthB const):
        (WebCore::CSSSelector::RareData::RareData):
        * css/CSSSelector.h:
        (WebCore::CSSSelector::argument const):
        (WebCore::CSSSelector::langArgumentList const):
        (WebCore::CSSSelector::selectorList const):
        (WebCore::CSSSelector::attribute const):
        (WebCore::CSSSelector::attributeCanonicalLocalName const):
        (WebCore::CSSSelector::setValue):
        (WebCore::CSSSelector::CSSSelector):
        (WebCore::CSSSelector::~CSSSelector):
        (WebCore::CSSSelector::tagQName const):
        (WebCore::CSSSelector::tagLowercaseLocalName const):
        (WebCore::CSSSelector::value const):
        (WebCore::CSSSelector::serializingValue const):
        (WebCore::CSSSelector::attributeValueMatchingIsCaseInsensitive const):
        (WebCore::CSSSelector::RareData::create): Deleted.
        * css/parser/CSSParserImpl.cpp:
        (WebCore::CSSParserImpl::parsePageSelector):
        * css/parser/CSSParserSelector.h:

2018-09-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] error: type 'float' cannot be narrowed to 'LONG' (aka 'long') in initializer list in WheelEventWin.cpp
        https://bugs.webkit.org/show_bug.cgi?id=189575

        Reviewed by Alex Christensen.

        No new tests (No behavior change).

        * platform/win/WheelEventWin.cpp:
        (WebCore::PlatformWheelEvent::PlatformWheelEvent): Use flooredIntPoint to convert FloatPoint to POINT.

2018-09-13  Youenn Fablet  <youenn@apple.com>

        Introduce RTCRtpSendParameters
        https://bugs.webkit.org/show_bug.cgi?id=189563

        Reviewed by Eric Carlson.

        Introduce RTCRtpSendParameters to match the WebRTC specification.
        Split RTCRtpPrameters fields accordingly and update call sites.

        Covered by updated test.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediastream/PeerConnectionBackend.h:
        * Modules/mediastream/RTCRtpCodingParameters.h: Added
        * Modules/mediastream/RTCRtpCodingParameters.idl: Added
        * Modules/mediastream/RTCRtpDecodingParameters.h: Added
        * Modules/mediastream/RTCRtpDecodingParameters.idl: Added
        * Modules/mediastream/RTCRtpEncodingParameters.h:
        * Modules/mediastream/RTCRtpEncodingParameters.idl:
        * Modules/mediastream/RTCRtpParameters.h:
        * Modules/mediastream/RTCRtpParameters.idl:
        * Modules/mediastream/RTCRtpReceiver.cpp:
        * Modules/mediastream/RTCRtpSendParameters.h: Added.
        (WebCore::RTCRtpSendParameters::RTCRtpSendParameters):
        * Modules/mediastream/RTCRtpSendParameters.idl: Added.
        * Modules/mediastream/RTCRtpSender.cpp:
        (WebCore::RTCRtpSender::getParameters):
        (WebCore::RTCRtpSender::setParameters):
        * Modules/mediastream/RTCRtpSender.h:
        * Modules/mediastream/RTCRtpSender.idl:
        * Modules/mediastream/RTCRtpSenderBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
        (WebCore::LibWebRTCRtpSenderBackend::getParameters const):
        (WebCore::LibWebRTCRtpSenderBackend::setParameters):
        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::toRTCRtpParameters):
        (WebCore::toRTCRtpSendParameters):
        (WebCore::fromRTCRtpSendParameters):
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-09-13  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME] decrypt-key-needed message renamed to drm-cdm-instance-needed
        https://bugs.webkit.org/show_bug.cgi?id=189547

        Reviewed by Philippe Normand.

        decrypt-key-needed message renamed to drm-cdm-instance-needed.

        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Apart from
        renaming the message, removed the class prefix for
        dispatchCDMInstance.
        * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
        (webkitMediaCommonEncryptionDecryptTransformInPlace):

2018-09-11  Ryosuke Niwa  <rniwa@webkit.org>

        imported/w3c/web-platform-tests/shadow-dom/form-control-form-attribute.html hits assertion
        https://bugs.webkit.org/show_bug.cgi?id=189493

        Reviewed by Alex Christensen.

        The debug assertion was caused by RefPtr in FormAssociatedElement::formOwnerRemovedFromTree introduced
        by r224390 and r223644 ref'ing ShadowRoot while calling removeDetachedChildren inside ~ShadowRoot.
        When a form (or any other) element has more than one ref inside removeDetachedChildren,
        addChildNodesToDeletionQueue calls notifyChildNodeRemoved in the tree oreder.

        However, when a form associated element of this form element appears later in the tree order,
        FormAssociatedElement::formOwnerRemovedFromTree can traverse up ancestors including the ShadowRoot.

        Fixed the bug by using raw pointers instead. Luckily, there is no DOM mutations or other non-trivial
        operations happening in this function so this should be safe.

        Test: imported/w3c/web-platform-tests/shadow-dom/form-control-form-attribute.html

        * html/FormAssociatedElement.cpp:
        (WebCore::FormAssociatedElement::formOwnerRemovedFromTree): Fixed the bug.

2018-09-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Complete support for Paste as Quotation
        https://bugs.webkit.org/show_bug.cgi?id=189504

        Reviewed by Wenson Hsieh.

        Tests: editing/pasteboard/4930986-1-paste-as-quotation.html
               editing/pasteboard/4930986-2-paste-as-quotation.html
               editing/pasteboard/4930986-3-paste-as-quotation.html

        * editing/Editor.cpp:
          Added ClipboardEventKind::PasteAsQuotation.
        (WebCore::eventNameForClipboardEvent): Map PasteAsQuotation to the "paste" DOM event name.
        (WebCore::createDataTransferForClipboardEvent): Place the unquoted content in the event.
          This means that currently event handlers can’t emulate pasting as quotation, because they
          neither have the quoted content nor knowledge that quoting has been requested. We could
          change this in the future if needed.
        (WebCore::Editor::paste): Updated for change in pasteWithPasteboard’s argument type.
        (WebCore::Editor::pasteAsQuotation): Added. Similar to paste, but passes
          PasteOption::AsQuotation to pasteWithPasteboard.
        (WebCore::Editor::quoteFragmentForPasting): Added. Quoting for pasting consists of enclosing
          the fragment in a blockquote element with the "type" attribute set to "cite" and the
          "class" attribute set to a well-known value, which is used to trigger special behavior in
          ReplaceSelectionCommand. The behavior includes removing the "class" attribute in the end,
          so eventually, we could stop using this form of in-band signaling.
        * editing/Editor.h: Declared PasteOption enum class to encompass the existing allowPlainText
          and MailBlockquoteHandling arguments to pasteWithPasteboard as well as the new AsQuotation
          behavior.

        * editing/EditorCommand.cpp:
        (WebCore::executePasteAsQuotation): Added. Similar to executing Paste.
        (WebCore::createCommandMap): Added an entry for PasteAsQuotation, based on the Paste entry.

        * editing/cocoa/EditorCocoa.mm:
        (WebCore::Editor::webContentFromPasteboard): Moved from EditorIOS.mm and EditorMac.mm to
          here.

        * editing/gtk/EditorGtk.cpp:
        (WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
          quote the fragment if needed.

        * editing/ios/EditorIOS.mm:
        (WebCore::Editor::pasteWithPasteboard): Ditto.
        (WebCore::Editor::webContentFromPasteboard): Moved to EditorCocoa.mm.

        * editing/mac/EditorMac.mm:
        (WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
          quote the fragment if needed.
        (WebCore::Editor::readSelectionFromPasteboard): Updated for new OptionSet argument to
          pasteWithPasteboard.
        (WebCore::Editor::webContentFromPasteboard): Moved to EditorCocoa.mm.

        * editing/win/EditorWin.cpp:
        (WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
          quote the fragment if needed.

        * editing/wpe/EditorWPE.cpp:
        (WebCore::Editor::pasteWithPasteboard): Ditto.

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.
        
        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        All the other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        No behavior change.

        * page/PageOverlayController.cpp:
        (WebCore::PageOverlayController::layerWithDocumentOverlays):
        (WebCore::PageOverlayController::layerWithViewOverlays):
        (WebCore::PageOverlayController::installPageOverlay):
        (WebCore::PageOverlayController::uninstallPageOverlay):
        (WebCore::PageOverlayController::setPageOverlayNeedsDisplay):
        (WebCore::PageOverlayController::didChangeViewSize):
        (WebCore::PageOverlayController::didChangeDocumentSize):
        (WebCore::PageOverlayController::didChangeSettings):
        (WebCore::PageOverlayController::paintContents):
        (WebCore::PageOverlayController::didChangeOverlayFrame):
        (WebCore::PageOverlayController::didChangeOverlayBackgroundColor):
        * page/PageOverlayController.h:
        * page/mac/ServicesOverlayController.h:
        (WebCore::ServicesOverlayController::Highlight::layer const):
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::Highlight):
        (WebCore::ServicesOverlayController::Highlight::invalidate):
        (WebCore::ServicesOverlayController::Highlight::fadeIn):
        (WebCore::ServicesOverlayController::Highlight::fadeOut):
        (WebCore::ServicesOverlayController::Highlight::didFinishFadeOutAnimation):
        (WebCore::ServicesOverlayController::determineActiveHighlight):
        * platform/graphics/GraphicsLayer.cpp:
        (WebCore::GraphicsLayer::GraphicsLayer):
        (WebCore::GraphicsLayer::willBeDestroyed):
        (WebCore::GraphicsLayer::setChildren):
        (WebCore::GraphicsLayer::addChild):
        (WebCore::GraphicsLayer::addChildAtIndex):
        (WebCore::GraphicsLayer::addChildBelow):
        (WebCore::GraphicsLayer::addChildAbove):
        (WebCore::GraphicsLayer::replaceChild):
        (WebCore::GraphicsLayer::removeAllChildren):
        (WebCore::GraphicsLayer::removeFromParent):
        (WebCore::GraphicsLayer::setMaskLayer):
        (WebCore::GraphicsLayer::noteDeviceOrPageScaleFactorChangedIncludingDescendants):
        (WebCore::GraphicsLayer::distributeOpacity):
        (WebCore::GraphicsLayer::traverse):
        (WebCore::dumpChildren):
        * platform/graphics/GraphicsLayer.h:
        (WebCore::GraphicsLayer::children const):
        (WebCore::GraphicsLayer::children):
        (WebCore::GraphicsLayer::maskLayer const):
        (WebCore::GraphicsLayer::replicaLayer const):
        (WebCore::GraphicsLayer::beingDestroyed const):
        (WebCore::GraphicsLayer:: const): Deleted.
        * platform/graphics/GraphicsLayerFactory.h:
        * platform/graphics/ca/GraphicsLayerCA.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerCA::setChildren):
        (WebCore::GraphicsLayerCA::addChild):
        (WebCore::GraphicsLayerCA::addChildAtIndex):
        (WebCore::GraphicsLayerCA::addChildBelow):
        (WebCore::GraphicsLayerCA::addChildAbove):
        (WebCore::GraphicsLayerCA::replaceChild):
        (WebCore::GraphicsLayerCA::setMaskLayer):
        (WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const):
        (WebCore::GraphicsLayerCA::recursiveCommitChanges):
        (WebCore::GraphicsLayerCA::updateSublayerList):
        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
        * platform/graphics/ca/GraphicsLayerCA.h:
        * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerTextureMapper::setChildren):
        (WebCore::GraphicsLayerTextureMapper::addChild):
        (WebCore::GraphicsLayerTextureMapper::addChildAtIndex):
        (WebCore::GraphicsLayerTextureMapper::addChildAbove):
        (WebCore::GraphicsLayerTextureMapper::addChildBelow):
        (WebCore::GraphicsLayerTextureMapper::replaceChild):
        (WebCore::GraphicsLayerTextureMapper::setMaskLayer):
        (WebCore::GraphicsLayerTextureMapper::updateBackingStoreIncludingSubLayers):
        * platform/graphics/texmap/GraphicsLayerTextureMapper.h:
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::CoordinatedGraphicsLayer::setShouldUpdateVisibleRect):
        (WebCore::CoordinatedGraphicsLayer::addChild):
        (WebCore::CoordinatedGraphicsLayer::addChildAtIndex):
        (WebCore::CoordinatedGraphicsLayer::addChildAbove):
        (WebCore::CoordinatedGraphicsLayer::addChildBelow):
        (WebCore::CoordinatedGraphicsLayer::replaceChild):
        (WebCore::CoordinatedGraphicsLayer::setMaskLayer):
        (WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
        (WebCore::CoordinatedGraphicsLayer::updateContentBuffersIncludingSubLayers):
        (WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
        * platform/graphics/win/GraphicsLayerDirect2D.cpp:
        (WebCore::GraphicsLayer::create):
        (WebCore::GraphicsLayerDirect2D::GraphicsLayerDirect2D): Deleted.
        (WebCore::GraphicsLayerDirect2D::initialize): Deleted.
        (WebCore::GraphicsLayerDirect2D::~GraphicsLayerDirect2D): Deleted.
        (WebCore::GraphicsLayerDirect2D::setNeedsDisplay): Deleted.
        (WebCore::GraphicsLayerDirect2D::setNeedsDisplayInRect): Deleted.
        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::createGraphicsLayer):
        (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
        (WebCore::RenderLayerBacking::updateConfiguration):
        (WebCore::RenderLayerBacking::updateInternalHierarchy):
        (WebCore::RenderLayerBacking::updateMaskingLayer):
        (WebCore::RenderLayerBacking::updateChildClippingStrategy):
        (WebCore::RenderLayerBacking::updateScrollingLayers):
        * rendering/RenderLayerBacking.h:
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::updateCompositingLayers):
        (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
        (WebCore::RenderLayerCompositor::setCompositingParent):
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
        (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
        (WebCore::RenderLayerCompositor::updateLayerForHeader):
        (WebCore::RenderLayerCompositor::updateLayerForFooter):
        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
        (WebCore::RenderLayerCompositor::ensureRootLayer):
        (WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
        * rendering/RenderLayerCompositor.h:

2018-09-12  Alex Christensen  <achristensen@webkit.org>

        Expose fewer of URL's internal members
        https://bugs.webkit.org/show_bug.cgi?id=189528

        Reviewed by Chris Dumez.

        * loader/appcache/ApplicationCacheStorage.cpp:
        (WebCore::urlHostHash):
        * platform/URL.cpp:
        (WebCore::URL::hostStart const):
        (WebCore::protocolHostAndPortAreEqual):
        (WebCore::hostsAreEqual):
        * platform/URL.h:
        (WebCore::URL::hostStart const): Deleted.
        (WebCore::URL::hostEnd const): Deleted.

2018-09-12  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Implement correct total received bytes.
        https://bugs.webkit.org/show_bug.cgi?id=189555

        Reviewed by Alex Christensen.

        Curl port only reported total network received bytes before decoding.

        No new test. InspectorTest is only available for WebKitTestRunner.

        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::didReceiveData):
        (WebCore::CurlRequest::updateNetworkLoadMetrics):
        * platform/network/curl/CurlRequest.h:

2018-09-12  Youenn Fablet  <youenn@apple.com>

        Split RTCRtpParameters idl and header file
        https://bugs.webkit.org/show_bug.cgi?id=189524

        Reviewed by Eric Carlson.

        This will be easier to manage and will allow to more easily introduce sender/receiver parameters.
        No change of behavior.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Modules/mediastream/RTCDegradationPreference.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCDegradationPreference.idl: Added.
        * Modules/mediastream/RTCDtxStatus.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCDtxStatus.idl: Added.
        * Modules/mediastream/RTCPriorityType.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCPriorityType.idl: Added.
        * Modules/mediastream/RTCRtpCodecParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCRtpCodecParameters.idl: Added.
        * Modules/mediastream/RTCRtpEncodingParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCRtpEncodingParameters.idl: Added.
        * Modules/mediastream/RTCRtpFecParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCRtpFecParameters.idl: Added.
        * Modules/mediastream/RTCRtpHeaderExtensionParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCRtpHeaderExtensionParameters.idl: Added.
        * Modules/mediastream/RTCRtpParameters.h:
        * Modules/mediastream/RTCRtpParameters.idl:
        * Modules/mediastream/RTCRtpRtxParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
        * Modules/mediastream/RTCRtpRtxParameters.idl: Added.
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::toRTCEncodingParameters):
        (WebCore::fromRTCEncodingParameters):
        (WebCore::toRTCHeaderExtensionParameters):
        (WebCore::fromRTCHeaderExtensionParameters):
        (WebCore::toRTCCodecParameters):
        (WebCore::toRTCRtpParameters):
        (WebCore::fromRTCRtpParameters):
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:

2018-09-12  Ali Juma  <ajuma@chromium.org>

        [IntersectionObserver] Implement rootMargin expansion
        https://bugs.webkit.org/show_bug.cgi?id=189525

        Reviewed by Simon Fraser.

        Expand the root intersection rectangle by the observer's rootMargin when computing
        intersections.

        Test: imported/w3c/web-platform-tests/intersection-observer/root-margin.html

        * dom/Document.cpp:
        (WebCore::expandRootBoundsWithRootMargin):
        (WebCore::computeIntersectionRects):
        * page/IntersectionObserver.h:
        (WebCore::IntersectionObserver::rootMarginBox const):
        * platform/graphics/FloatRect.h:
        (WebCore::FloatRect::expand):

2018-09-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] error: non-constant-expression cannot be narrowed from type 'int' to 'SHORT'
        https://bugs.webkit.org/show_bug.cgi?id=189542

        Reviewed by Alex Christensen.

        No new tests (No behavior change).

        * platform/graphics/win/IntPointWin.cpp:
        (WebCore::IntPoint::operator POINTS const): Narrowed m_x and m_y by using static_cast.

2018-09-12  Guillaume Emont  <guijemont@igalia.com>

        Add IGNORE_WARNING_.* macros
        https://bugs.webkit.org/show_bug.cgi?id=188996

        Reviewed by Michael Catanzaro.

        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        * accessibility/mac/AXObjectCacheMac.mm:
        (WebCore::AXObjectCache::postPlatformNotification):
        * accessibility/mac/AccessibilityObjectMac.mm:
        (WebCore::AccessibilityObject::overrideAttachmentParent):
        (WebCore::AccessibilityObject::accessibilityIgnoreAttachment const):
        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper renderWidgetChildren]):
        (-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
        (-[WebAccessibilityObjectWrapper role]):
        (-[WebAccessibilityObjectWrapper roleDescription]):
        * bridge/objc/WebScriptObject.mm:
        * bridge/objc/objc_class.mm:
        (JSC::Bindings::ObjcClass::fieldNamed const):
        * crypto/CommonCryptoUtilities.cpp:
        (WebCore::getCommonCryptoDigestAlgorithm):
        * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
        (WebCore::encryptAES_GCM):
        (WebCore::decyptAES_GCM):
        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
        (WebCore::wrapSerializedCryptoKey):
        (WebCore::unwrapSerializedCryptoKey):
        * css/makeSelectorPseudoClassAndCompatibilityElementMap.py:
        * css/makeSelectorPseudoElementsMap.py:
        * editing/TextIterator.cpp:
        * editing/mac/EditorMac.mm:
        (WebCore::Editor::pasteWithPasteboard):
        (WebCore::Editor::takeFindStringFromSelection):
        (WebCore::Editor::replaceNodeFromPasteboard):
        * page/mac/EventHandlerMac.mm:
        (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):
        * page/mac/ServicesOverlayController.mm:
        (WebCore::ServicesOverlayController::Highlight::paintContents):
        * platform/LocalizedStrings.cpp:
        (WebCore::formatLocalizedString):
        * platform/ScreenProperties.h:
        (WebCore::ScreenData::decode):
        * platform/gamepad/mac/HIDGamepadProvider.cpp:
        (WebCore::HIDGamepadProvider::stopMonitoringInput):
        * platform/graphics/PlatformDisplay.cpp:
        (WebCore::PlatformDisplay::sharedDisplay):
        * platform/graphics/SurrogatePairAwareTextIterator.cpp:
        * platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
        (WebCore::MediaSelectionGroupAVFObjC::updateOptions):
        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
        (WebCore::CDMSessionAVStreamSession::update):
        * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack const):
        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
        (WebCore::IGNORE_CLANG_WARNING_END):
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
        (-[WebAVSampleBufferErrorListener beginObservingRenderer:]):
        (-[WebAVSampleBufferErrorListener stopObservingRenderer:]):
        (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
        (WebCore::IGNORE_CLANG_WARNING_END):
        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
        (PlatformCALayer::drawLayerContents):
        * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
        (WebCore::FontCascade::fontForCombiningCharacterSequence const):
        * platform/graphics/cg/ImageDecoderCG.cpp:
        (WebCore::ImageDecoderCG::createFrameImageAtIndex):
        * platform/graphics/cocoa/GraphicsContextCocoa.mm:
        (WebCore::GraphicsContext::drawLineForDocumentMarker):
        * platform/graphics/cocoa/WebGLLayer.h:
        (IGNORE_CLANG_WARNING):
        * platform/graphics/mac/ComplexTextControllerCoreText.mm:
        (WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
        * platform/graphics/mac/IconMac.mm:
        (WebCore::Icon::Icon):
        * platform/graphics/mac/PDFDocumentImageMac.mm:
        (WebCore::PDFDocumentImage::drawPDFPage):
        * platform/graphics/mac/WebKitNSImageExtras.mm:
        (-[NSImage _web_lockFocusWithDeviceScaleFactor:]):
        * platform/ios/DragImageIOS.mm:
        * platform/mac/DragImageMac.mm:
        (WebCore::scaleDragImage):
        (WebCore::createDragImageForLink):
        * platform/mac/LegacyNSPasteboardTypes.h:
        * platform/mac/LocalCurrentGraphicsContext.mm:
        (WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):
        * platform/mac/PasteboardMac.mm:
        (WebCore::Pasteboard::createForCopyAndPaste):
        (WebCore::Pasteboard::createForDragAndDrop):
        (WebCore::setDragImageImpl):
        * platform/mac/PlatformEventFactoryMac.mm:
        (WebCore::globalPoint):
        * platform/mac/SSLKeyGeneratorMac.mm:
        * platform/mac/ScrollViewMac.mm:
        (WebCore::ScrollView::platformContentsToScreen const):
        (WebCore::ScrollView::platformScreenToContents const):
        * platform/mac/ThemeMac.mm:
        (WebCore::drawCellFocusRingWithFrameAtTime):
        * platform/mac/WebPlaybackControlsManager.mm:
        * platform/mac/WidgetMac.mm:
        (WebCore::Widget::paint):
        * platform/mediastream/RealtimeIncomingAudioSource.h:
        * platform/mediastream/RealtimeIncomingVideoSource.h:
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        * platform/mediastream/RealtimeOutgoingVideoSource.h:
        * platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
        * platform/network/cf/ResourceHandleCFNet.cpp:
        (WebCore::ResourceHandle::createCFURLConnection):
        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
        (WebCore::SocketStreamHandleImpl::reportErrorToClient):
        * platform/network/create-http-header-name-table:
        * platform/text/TextEncoding.cpp:
        * testing/MockLibWebRTCPeerConnection.h:
        * xml/XPathGrammar.cpp:

2018-09-12  Pablo Saavedra  <psaavedra@igalia.com>

        Linking against libWPEWebKit-0.1.so is not posible when WPE is build with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
        https://bugs.webkit.org/show_bug.cgi?id=189540

        Reviewed by Philippe Normand.

        Related issues:

        This issue is related with changes in https://bugs.webkit.org/show_bug.cgi?id=183080
        This issue is introduced in https://bugs.webkit.org/show_bug.cgi?id=186547

        No new tests, no changes in the functionality.

        * platform/GStreamer.cmake:
        * platform/SourcesGLib.txt:
        * platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp:
        (WebCore::LibWebRTCProvider::webRTCAvailable):

2018-09-11  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed WPE build fix.

        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
        Add extra header inclusions to get this code building after the unified
        sources system shifted it into a different translation unit.

2018-09-11  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] WebInspector doesn't display request headers added during processing.
        https://bugs.webkit.org/show_bug.cgi?id=189531

        Reviewed by Alex Christensen.

        While processing the request, Curl port network layer adds some headers to the request
        such as cookies. Those headers should be displayed in the WebInspector.

        Tested on MiniBrowser.

        * platform/network/curl/CurlRequest.cpp:
        (WebCore::CurlRequest::didReceiveHeader):
        (WebCore::CurlRequest::didCompleteTransfer):
        (WebCore::CurlRequest::updateNetworkLoadMetrics):
        * platform/network/curl/CurlRequest.h:

2018-09-11  James Savage  <james.savage@apple.com>

        Follow up to:
        Expose -apple-system-container-border color to internal web views.
        https://bugs.webkit.org/show_bug.cgi?id=189178.

        Reviewed by Timothy Hatcher.

        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::systemColor const): Add a separate #if block for
        Mojave. When I used CSSValueAppleSystemFindHighlightBackground as a template
        for this change, I had to write out the condition in the first change, but
        mistakenly thought I could reuse the block here. Turns out the versions were
        different, and I could not.

2018-09-11  Youenn Fablet  <youenn@apple.com>

        Remove MediaDevices NoInterfaceObject
        https://bugs.webkit.org/show_bug.cgi?id=189512

        Reviewed by Alex Christensen.

        Covered by rebased WPT tests.

        * Modules/mediastream/MediaDevices.idl:

2018-09-11  Jer Noble  <jer.noble@apple.com>

        [MediaCapabilities] Implement MediaEngineConfigurationFactory registration
        https://bugs.webkit.org/show_bug.cgi?id=189438

        Reviewed by Eric Carlson.

        Implement a mechanism to register platform-specific MediaEngineConfigurationFactory methods, and a mechanism to iterate
        over those registered factories when createDecodingConfiguration() and createEncodingConfiguration() are called.

        The Factory has been radically simplified; the concept of MediaEngineDecodingConfiguration
        and MediaEngineEncodingConfiguration and its subclasess have been removed. Since the primary
        objects representing video and audio configurations are IDLDictionaries, the native objects
        are just structs full of POD types (and Strings). Since these have no dependencies on
        higher-level HTML concepts, they can be moved into platform/ and accessed from there. This
        patch also converts MediaCapabilitiesInfo to an Interface, so its implementation also can
        become a struct and live in platform/. The MediaEngineDecodingConfigurationMock and
        MediaEngineEncodingConfigurationMock have been consolidated in a single class which simply
        parses MediaDecodingConfiguration and MediaEncodingConifguration objects (now that they live
        in Platform) and return a MediaCapabilitiesInfo object (now that it does too).

        * Modules/mediacapabilities/MediaCapabilities.cpp:
        (WebCore::isValidVideoConfiguration):
        (WebCore::MediaCapabilities::decodingInfo):
        (WebCore::MediaCapabilities::encodingInfo):
        * Modules/mediacapabilities/MediaCapabilitiesInfo.h: Removed.
        * Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
        * Modules/mediacapabilities/VideoConfiguration.idl:
        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/MediaCapabilitiesInfo.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
        * platform/mediacapabilities/AudioConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h.
        * platform/mediacapabilities/MediaConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h.
        * platform/mediacapabilities/MediaDecodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h.
        * platform/mediacapabilities/MediaDecodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
        * platform/mediacapabilities/MediaEncodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h.
        * platform/mediacapabilities/MediaEncodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h.
        * platform/mediacapabilities/MediaEngineConfiguration.cpp: Removed.
        * platform/mediacapabilities/MediaEngineConfiguration.h: Removed.
        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
        (WebCore::factories):
        (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
        (WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
        * platform/mediacapabilities/MediaEngineConfigurationFactory.h:
        * platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Removed.
        * platform/mediacapabilities/VideoConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h.
        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
        * platform/mock/MediaEngineConfigurationFactoryMock.cpp: Added.
        (WebCore::canDecodeMedia):
        (WebCore::canSmoothlyDecodeMedia):
        (WebCore::canPowerEfficientlyDecodeMedia):
        (WebCore::canEncodeMedia):
        (WebCore::canSmoothlyEncodeMedia):
        (WebCore::canPowerEfficientlyEncodeMedia):
        (WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
        (WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
        * platform/mock/MediaEngineConfigurationFactoryMock.h: Renamed from Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h.
        * platform/mock/MediaEngineDecodingConfigurationMock.cpp: Removed.
        * platform/mock/MediaEngineDecodingConfigurationMock.h: Removed.
        * platform/mock/MediaEngineEncodingConfigurationMock.cpp: Removed.
        * platform/mock/MediaEngineEncodingConfigurationMock.h: Removed.

2018-09-08  Ryosuke Niwa  <rniwa@webkit.org>

        :first-child, :last-child, :nth-child, and :nth-of-type don't work on shadow root's children
        https://bugs.webkit.org/show_bug.cgi?id=166748
        <rdar://problem/29649177>

        Reviewed by Yusuke Suzuki.

        Added the support for matching positional pseudo classes. For now, we invalidate whenever a child node
        of a non-UA ShadowRoot is mutated instead of a fine-grained style invalidation as done for regular elements.

        Tests: fast/shadow-dom/nth-node-on-shadow-child-invalidation.html
               fast/shadow-dom/nth-node-on-shadow-child-no-jit.html
               fast/shadow-dom/nth-node-on-shadow-child.html

        * css/SelectorChecker.cpp:
        (WebCore::SelectorChecker::checkOne const):
        * cssjit/SelectorCompiler.cpp:
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateWalkToParentElementOrShadowRoot):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthChildParentCheckAndRelationUpdate):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild):
        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChildOf):
        * dom/ShadowRoot.cpp:
        (WebCore::ShadowRoot::childrenChanged): Invalidate the subtree whenever a child node is mutated.
        * dom/ShadowRoot.h:
        * domjit/DOMJITHelpers.h:
        (WebCore::DOMJIT::branchTestIsShadowRootFlagOnNode): Added.
        (WebCore::DOMJIT::branchTestIsElementOrShadowRootFlagOnNode): Added.

2018-09-11  Per Arne Vollan  <pvollan@apple.com>

        Addressing post-review feedback on r235619.
        https://bugs.webkit.org/show_bug.cgi?id=187925

        Unreviewed.

        * testing/Internals.cpp:
        (WebCore::Internals::primaryScreenDisplayID):
        * testing/Internals.h:

2018-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] [WK2] Support changing foreground colors via color panel
        https://bugs.webkit.org/show_bug.cgi?id=189382
        <rdar://problem/44227311>

        Reviewed by Ryosuke Niwa.

        Small adjustments to support changing foreground text color using NSColorPanel in WebKit2. See comments below.
        Tested by FontManagerTests.ChangeFontColorWithColorPanel.

        * editing/EditingStyle.cpp:
        (WebCore::StyleChange::extractTextStyles):

        Support setting foreground text color with alpha by using a styled span element rather than a font element with
        attributes. To do this, only populate `StyleChange::m_applyFontColor` if the color is opaque. This is because
        the font element does not support `rgba()` syntax, so any font colors here with alpha that are serialized to
        `rgba()` result in a garbage value for the computed color style.

        * editing/FontAttributeChanges.cpp:
        (WebCore::FontAttributeChanges::editAction const):

        Add a helper to return the relevant EditAction describing this set of FontAttributeChanges.

        * editing/FontAttributeChanges.h:
        (WebCore::FontChanges::isEmpty const):

2018-09-11  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Shrink size of ResourseResponseBase
        https://bugs.webkit.org/show_bug.cgi?id=189501

        Reviewed by Simon Fraser.

        We reduce the size of ResourceResponseBase by the following two optimizations.

        1. Use bitfields for bool flags and reorder them.

        2. Use Markable<> in CacheControlDirectives, which is held by ResourceResponseBase.

        This patch reduces the size of ResourceResponseBase from 416 to 392 bytes.

        No behavior change.

        * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
        (WebCore::WebCoreAVFResourceLoader::responseReceived):
        (WebCore::WebCoreAVFResourceLoader::fulfillRequestWithResource):
        * platform/network/CacheValidation.h:
        (WebCore::CacheControlDirectives::CacheControlDirectives):
        * platform/network/ResourceResponseBase.cpp:
        (WebCore::ResourceResponseBase::ResourceResponseBase):
        (WebCore::ResourceResponseBase::contentRange const):
        * platform/network/ResourceResponseBase.h:
        (WebCore::ResourceResponseBase::decode):

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix some -Wreturn-type warnings

        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::sourceFromNewReceiver):
        * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
        (WebCore::toRTCRtpTransceiverDirection):
        (WebCore::fromRTCRtpTransceiverDirection):

2018-09-11  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a speculative build fix for r235888.

        * Modules/mediastream/MediaDevices.h:
        Add class Document forward declaration.

2018-09-11  Woodrow Wang  <woodrow_wang@apple.com>

        Add Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=187773
        <rdar://problem/44155162>

        Reviewed by Brent Fulgham.

        Added data collection for web API statistics, specifically regarding the canvas, font loads, 
        screen functions, and navigator functions. The data collection code is placed under a runtime 
        enabled feature flag. The statistics are stored in a ResourceLoadStatistics object and written 
        to a plist on disk. Added a new file CanvasActivityRecord.h and CanvasActivityRecord.cpp which
        includes a struct to keep track of HTML5 canvas element read and writes. 

        Tests: http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html
               http/tests/webAPIStatistics/font-load-data-collection.html
               http/tests/webAPIStatistics/navigator-functions-accessed-data-collection.html
               http/tests/webAPIStatistics/screen-functions-accessed-data-collection.html

        * Sources.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSFontFaceSource.cpp:
        (WebCore::CSSFontFaceSource::load):
        * css/CSSFontSelector.cpp:
        (WebCore::CSSFontSelector::fontRangesForFamily):
        (WebCore::CSSFontSelector::fallbackFontAt):

        The following are the functions where we'd like to record a canvas read.

        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::toDataURL):
        (WebCore::HTMLCanvasElement::toBlob):
        (WebCore::HTMLCanvasElement::getImageData):
        (WebCore::HTMLCanvasElement::toMediaSample):
        (WebCore::HTMLCanvasElement::captureStream):

        The following are the functions where we'd like to record a canvas write.

        * html/canvas/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::measureText):
        (WebCore::CanvasRenderingContext2D::drawTextInternal):

        The following files and functions handle the CanvasActivityRecord struct and
        its respective functions.

        * loader/CanvasActivityRecord.cpp: Added.
        (WebCore::CanvasActivityRecord::recordWrittenOrMeasuredText):
        (WebCore::CanvasActivityRecord::mergeWith):
        * loader/CanvasActivityRecord.h: Added.
        (WebCore::CanvasActivityRecord::encode const):
        (WebCore::CanvasActivityRecord::decode):

        * loader/DocumentThreadableLoader.cpp:
        * loader/FrameLoader.cpp:
        * loader/ResourceLoadObserver.cpp:
        (WebCore::ResourceLoadObserver::logFontLoad):
        (WebCore::ResourceLoadObserver::logCanvasRead):
        (WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
        (WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
        (WebCore::ResourceLoadObserver::logScreenAPIAccessed):

        Before, entries in the ResourceLoadStatistics involving HashSets used "origin" as the key. 
        Now the encodeHashSet function has been generalized to take any key to encode the entries 
        in the HashSet. Also added functionality to encode an OptionSet by converting it to its 
        raw bitmask state. 

        * loader/ResourceLoadObserver.h:
        * loader/ResourceLoadStatistics.cpp:
        (WebCore::encodeHashSet):
        (WebCore::encodeOriginHashSet):
        (WebCore::encodeOptionSet):
        (WebCore::encodeFontHashSet):
        (WebCore::encodeCanvasActivityRecord):
        (WebCore::ResourceLoadStatistics::encode const):
        (WebCore::decodeHashSet):
        (WebCore::decodeOriginHashSet):
        (WebCore::decodeOptionSet):
        (WebCore::decodeFontHashSet):
        (WebCore::decodeCanvasActivityRecord):
        (WebCore::ResourceLoadStatistics::decode):
        (WebCore::navigatorAPIEnumToString):
        (WebCore::screenAPIEnumToString):
        (WebCore::appendNavigatorAPIOptionSet):
        (WebCore::appendScreenAPIOptionSet):
        (WebCore::ResourceLoadStatistics::toString const):
        (WebCore::ResourceLoadStatistics::merge):
        * loader/ResourceLoadStatistics.h:
        * loader/ResourceTiming.cpp:

        The following are the navigator functions recorded for the web API statistics.

        * page/Navigator.cpp:
        (WebCore::Navigator::appVersion const):
        (WebCore::Navigator::userAgent const):
        (WebCore::Navigator::plugins):
        (WebCore::Navigator::mimeTypes):
        (WebCore::Navigator::cookieEnabled const):
        (WebCore::Navigator::javaEnabled const):

        The following are the screen functions recorded for the web API statistics.

        * page/Screen.cpp:
        (WebCore::Screen::height const):
        (WebCore::Screen::width const):
        (WebCore::Screen::colorDepth const):
        (WebCore::Screen::pixelDepth const):
        (WebCore::Screen::availLeft const):
        (WebCore::Screen::availTop const):
        (WebCore::Screen::availHeight const):
        (WebCore::Screen::availWidth const):

2018-09-11  Pablo Saavedra  <psaavedra@igalia.com>

        playbackControlsManagerUpdateTimerFired and
        m_playbackControlsManagerUpdateTimer must be
        guarded with ENABLE(VIDEO), otherwise the following
        error occurs with the VIDEO feature turned off:

          error: 'MediaElementSession' has not been declared

        Add missing #if ENABLE(VIDEO) Page.cpp and Page.h
        https://bugs.webkit.org/show_bug.cgi?id=189500

        Reviewed by Anders Carlsson.

        * page/Page.cpp:
        (WebCore::Page::Page):
        (WebCore::Page::schedulePlaybackControlsManagerUpdate):
        * page/Page.h:

2018-09-11  Frederic Wang  <fwang@igalia.com>

        Refactor filter list checking code
        https://bugs.webkit.org/show_bug.cgi?id=185087

        Reviewed by Antonio Gomes.

        No new tests, behavior unchanged.

        * page/animation/KeyframeAnimation.h: Add missing forward-declaration FilterOperations.

== Rolled over to ChangeLog-2018-09-11 ==