ThreadTimers should not store a raw pointer in its heap
[WebKit-https.git] / Source / WebCore / ChangeLog
index 0fb7d97..becfba6 100644 (file)
+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