Enable fieldsets to be flexboxes, grids and multicolumn.
[WebKit-https.git] / Source / WebCore / ChangeLog
index 396529d..1300973 100644 (file)
+2017-03-06  Dave Hyatt  <hyatt@apple.com>
+
+        Enable fieldsets to be flexboxes, grids and multicolumn.
+        https://bugs.webkit.org/show_bug.cgi?id=169082
+
+        Reviewed by Simon Fraser .
+
+        Added new tests in fast/forms/fieldset.
+
+        This patch eliminates RenderFieldset and moves the functionality into RenderBlock so that
+        derived classes can also be fieldsets.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        Remove RenderFieldset from the project.
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::titleUIElement):
+        Call in to RenderBlock now instead of RenderFieldset.
+
+        * html/HTMLFieldSetElement.cpp:
+        (WebCore::HTMLFieldSetElement::createElementRenderer):
+        * html/HTMLFieldSetElement.h:
+        The fieldset DOM element now uses RenderElement::createFor to make renderers so that multiple display types
+        can be supported. A special flag has been added that indicates only to make flexbox and block-related
+        renderers (not table display types).
+
+        * rendering/OrderIterator.cpp:
+        (WebCore::OrderIterator::shouldSkipChild):
+        (WebCore::OrderIteratorPopulator::collectChild):
+        * rendering/OrderIterator.h:
+        Streamline child collection for flexboxes and grids to indicate whether the child should be skipped as a return
+        value from collectChild. Add a shouldSkipChild method that skips both out of flow positioned objects and
+        excluded children like the legends of fieldsets.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlockRareData::RenderBlockRareData):
+        When the legend is taller than the fieldset's borderBefore(), intrinsic border is added to the CSS border width.
+        This intrinsic border being factored in ensures that the padding and content boxes of fieldsets are correct
+        across any layout system, since the legend is now just treated as part of the border.
+
+        (WebCore::RenderBlock::computePreferredLogicalWidths):
+        (WebCore::RenderBlock::computeBlockPreferredLogicalWidths):
+        Call the new computePreferredWidthsForExcludedChildren to ensure that excluded children contribute to
+        preferred width in their own way and not as part of a specific layout system.
+
+        (WebCore::RenderBlock::renderName):
+        Hacked to still return RenderFieldSet for RenderBlockFlow-backed fieldsets for layout test compatibility.
+
+        (WebCore::RenderBlock::layoutExcludedChildren):
+        Renamed from layoutSpecialExcludedChild to more accurately reflect the fact that multiple excluded children
+        can be included here (e.g., both a multicolumn flow thread and a legend). The RenderBlock base class handles
+        the layout of legends by both placing them and setting the correct intrinsic border before amount on the
+        block.
+
+        (WebCore::RenderBlock::findFieldsetLegend):
+        Moved from RenderFieldset.
+
+        (WebCore::RenderBlock::adjustBorderBoxRectForPainting):
+        (WebCore::RenderBlock::paintRectToClipOutFromBorder):
+        These methods are used when painting to shrink the border box as needed to account for the legend and to
+        provide the portion of the border that needs to be clipped out. These methods have been enhanced to
+        properly support all writing modes.
+
+        (WebCore::RenderBlock::intrinsicBorderForFieldset):
+        (WebCore::RenderBlock::setIntrinsicBorderForFieldset):
+        (WebCore::RenderBlock::borderTop):
+        (WebCore::RenderBlock::borderLeft):
+        (WebCore::RenderBlock::borderBottom):
+        (WebCore::RenderBlock::borderRight):
+        (WebCore::RenderBlock::borderBefore):
+        These methods are overridden for border to ensure that the intrinsic border added by a tall legend is
+        properly factored in.
+
+        (WebCore::RenderBlock::computePreferredWidthsForExcludedChildren):
+        * rendering/RenderBlock.h:
+        This method computes the preferred widths for legend children in order to ensure that the legend properly
+        grows the width of the fieldset when it is the widest item.
+
+        (WebCore::RenderBlock::adjustBorderBoxLogicalHeightForBoxSizing):
+        (WebCore::RenderBlock::adjustContentBoxLogicalHeightForBoxSizing):
+        Preserve the behavior of fieldsets in that the available content size includes the space lost accounting
+        for the legend. I don't think this makes much sense, but it matches the behavior of other browsers
+        (and our old behavior).
+
+        (WebCore::RenderBlock::paintExcludedChildrenInBorder):
+        Method for painting the excluded children that might be present in our border. We only do this if the
+        paint phase is a box decoration painting phase and if the legend isn't self-painting.
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::willCreateColumns):
+        Allow fieldsets to create columns now.
+
+        (WebCore::RenderBlockFlow::layoutBlockChildren):
+        (WebCore::RenderBlockFlow::layoutExcludedChildren):
+        Renamed this method and change it to call the base class to ensure that legends in multicolumn fieldsets
+        get handled properly.
+
+        (WebCore::RenderBlockFlow::addChild):
+        Patched to make sure legends don't get put into the multicolumn flow thread, as they need to
+        remain outside of it.
+
+        (WebCore::RenderBlockFlow::layoutSpecialExcludedChild): Deleted.
+        Renamed to layoutExcludedChildren.
+
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::paintBoxDecorations):
+        (WebCore::RenderBox::paintMask):
+        Patched to call the new adjustBorderBoxRectForPainting and paintRectToClipOutFromBorder methods in
+        order to properly shrink the border box rect for painting and to clip out the portion of the border
+        covered by the legend.
+
+        (WebCore::RenderBox::avoidsFloats):
+        Add fieldsets as avoiding floats. RenderFieldset used to subclass this method to return true, but with
+        its removal, we need to put this in the base class along with legends.
+
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::isGridItem):
+        (WebCore::RenderBox::isFlexItem):
+        Patched to exclude legends so that they don't try to size like they are really in the grid or flexbox.
+
+        (WebCore::RenderBox::adjustBorderBoxRectForPainting):
+        This method is overridden by RenderBLock to handle adjusting fieldset border rects for painting.
+
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::paintBorder):
+        * rendering/RenderBoxModelObject.h:
+        (WebCore::RenderBoxModelObject::paintRectToClipOutFromBorder):
+        Patched to properly paint fieldsets using the new helpers.
+
+        * rendering/RenderDeprecatedFlexibleBox.cpp:
+        (WebCore::FlexBoxIterator::next):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutBlock):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
+        Make sure deprecated flexible boxes lay out their legends properly by calling layoutExcludedChildren.
+
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::createFor):
+        * rendering/RenderElement.h:
+        Patched to take a flag that limits what renderers can be created so that fieldsets don't make table
+        display types.
+
+        * rendering/RenderFieldset.cpp: Removed.
+        * rendering/RenderFieldset.h: Removed.
+        Remove RenderFieldset files from the tree.
+
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths):
+        (WebCore::RenderFlexibleBox::firstLineBaseline):
+        (WebCore::RenderFlexibleBox::layoutBlock):
+        (WebCore::RenderFlexibleBox::layoutFlexItems):
+        (WebCore::RenderFlexibleBox::prepareOrderIteratorAndMargins):
+        Make sure flexible boxes lay out their legends properly by calling layoutExcludedChildren.
+        Patch methods to use the OrderIterator's new shouldSkipChild method to ensure legends aren't
+        part of the flexible box layout.
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::layoutBlock):
+        (WebCore::RenderGrid::computeIntrinsicLogicalWidths):
+        (WebCore::RenderGrid::placeItemsOnGrid):
+        (WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
+        (WebCore::RenderGrid::layoutGridItems):
+        Make sure grids lay out their legends properly by calling layoutExcludedChildren.
+        Patch methods to use the OrderIterator's new shouldSkipChild method to ensure legends aren't
+        part of the grid's layout.
+
+        * rendering/RenderMultiColumnFlowThread.cpp:
+        (WebCore::RenderMultiColumnFlowThread::populate):
+        Pull legends back up into the block and don't let them be part of the flow thread.
+
+        * rendering/RenderMultiColumnSet.cpp:
+        (WebCore::RenderMultiColumnSet::requiresBalancing):
+        Fix an assert to allow legends to exist as siblings of multicolumn sets.
+
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::isFieldset):
+        Changed to examine the HTML element rather than RenderFieldset.
+
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::isExcludedFromNormalLayout):
+        (WebCore::RenderObject::setIsExcludedFromNormalLayout):
+        (WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
+        RenderObjects now have a new bit that is set for excluded objects like legends, flow threads,
+        placeholders, and ruby text. This bit lets code easily detect that an object is excluded from
+        the layout system and can be skipped.
+
+        (WebCore::RenderObject::isExcludedAndPlacedInBorder):
+        Helper method for asking if an object is painting inside the border. Used to know we
+        need to factor it into preferred width calculations outside of any one layout system
+        and also to know that we need to paint it when we paint the fieldset's border instead of
+        later (after we might have scrolled or clipped the child painting area).
+
+        * rendering/RenderRubyRun.cpp:
+        (WebCore::RenderRubyRun::layoutExcludedChildren):
+        (WebCore::RenderRubyRun::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderRubyRun.h:
+        Rename layoutSpecialExcludedChild to layoutExcludedChildren.
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::adjustBorderBoxRectForPainting):
+        (WebCore::RenderTable::paintBoxDecorations):
+        (WebCore::RenderTable::paintMask):
+        (WebCore::RenderTable::subtractCaptionRect): Deleted.
+        * rendering/RenderTable.h:
+        Patched tables to share the same border box rect adjustment used by fieldsets when subtracting
+        out captions. This is prep work to allow tables to be fieldsets, but for now I didn't go all the
+        way.
+
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::paintBoxDecorations):
+        (WebCore::RenderTableCell::paintMask):
+        Make sure table cells adjust their border box rects for painting. Again this is prep work for
+        cells potentially being fieldsets, but not supported yet.
+
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::layoutExcludedChildren):
+        (WebCore::RenderTextControl::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderTextControl.h:
+        * rendering/RenderTextControlMultiLine.cpp:
+        (WebCore::RenderTextControlMultiLine::layoutExcludedChildren):
+        (WebCore::RenderTextControlMultiLine::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderTextControlMultiLine.h:
+        Renamed the methods for doing the excluded child layout.
+
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::RenderTreeAsText::writeRenderObject):
+        Make sure to dump the original fieldset border and not the border with the extra legend stuff in it.
+
+2017-03-06  Antoine Quint  <graouts@apple.com>
+
+        [Modern Media Controls] Tracks panel should clip and scroll content when numerous tracks are available
+        https://bugs.webkit.org/show_bug.cgi?id=169201
+        <rdar://problem/30867979>
+
+        Reviewed by Eric Carlson.
+
+        We now position and size the tracks panel dynamically and ensure a max-height is applied
+        to the panel so that it allows a margin of 10px above it within the media controls. We also
+        apply that same max-height to a new intermediary scrollable container for the track lists,
+        so that it scrolls independently of the container and the background tint.
+
+        Test: media/modern-media-controls/tracks-panel/tracks-panel-position-and-size.html
+
+        * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
+        (MacOSFullscreenMediaControls.prototype.showTracksPanel): Deleted.
+        * Modules/modern-media-controls/controls/macos-inline-media-controls.css:
+        (.media-controls.mac.inline .volume.slider):
+        (.media-controls.mac.inline .tracks-panel): Deleted.
+        * Modules/modern-media-controls/controls/macos-inline-media-controls.js:
+        (MacOSInlineMediaControls.prototype.showTracksPanel): Deleted.
+        * Modules/modern-media-controls/controls/macos-media-controls.js:
+        (MacOSMediaControls.prototype.showTracksPanel):
+        * Modules/modern-media-controls/controls/tracks-panel.css:
+        (.tracks-panel > .background-tint > div,):
+        (.tracks-panel > .scrollable-container):
+        (.tracks-panel section):
+        (.tracks-panel section:first-of-type):
+        (.tracks-panel section > h3):
+        (.tracks-panel section > ul):
+        (.tracks-panel section > ul > li):
+        (.tracks-panel section > ul > li:focus):
+        (.tracks-panel section > ul > li.selected:before):
+        (.tracks-panel section > ul > li.animated):
+        (.tracks-panel > .background-tint > div): Deleted.
+        (.tracks-panel > section): Deleted.
+        (.tracks-panel > section:first-of-type): Deleted.
+        (.tracks-panel > section > h3): Deleted.
+        (.tracks-panel > section > ul): Deleted.
+        (.tracks-panel > section > ul > li): Deleted.
+        (.tracks-panel > section > ul > li:focus): Deleted.
+        (.tracks-panel > section > ul > li.selected:before): Deleted.
+        (.tracks-panel > section > ul > li.animated): Deleted.
+        * Modules/modern-media-controls/controls/tracks-panel.js:
+        (TracksPanel.prototype.presentInParent):
+        (TracksPanel.prototype.get maxHeight):
+        (TracksPanel.prototype.set maxHeight):
+        (TracksPanel.prototype.commitProperty):
+        (TracksPanel.prototype._childrenFromDataSource):
+
+2017-03-06  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        [css-grid] Stretch should grow and shrink items to fit its grid area
+        https://bugs.webkit.org/show_bug.cgi?id=163200
+
+        Reviewed by Darin Adler.
+
+        After some discussions the CSS WG agreed that stretch should not only
+        grow items, but also shrink them to fit its grid area.
+        That way the "min-width|height: auto" is somehow ignored for grid items.
+        More info at: https://github.com/w3c/csswg-drafts/issues/283
+
+        The good part is that this allows us to remove some ugly code we've
+        in RenderBox that was only used by Grid Layout.
+
+        For images, we'll be stretching on both axis right now, so the aspect
+        ratio won't be preserved. The default behavior might change in those
+        cases, but that should be implemented in a different patch.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::computeLogicalWidthInRegion):
+        (WebCore::RenderBox::computeLogicalHeight):
+
+2017-03-06  Miguel Gomez  <magomez@igalia.com>
+
+        [GTK] WebProcess from WebKitGtk+ 2.15.x SIGSEVs in GIFLZWContext::doLZW(unsigned char const*, unsigned long) at Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:303
+        https://bugs.webkit.org/show_bug.cgi?id=167304
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a lock to ensure that the GIFImageReader that we are using for decoding is not deleted while
+        the decoding thread is using it.
+
+        No new tests.
+
+        * platform/image-decoders/gif/GIFImageDecoder.cpp:
+        (WebCore::GIFImageDecoder::clearFrameBufferCache):
+
+2017-03-06  Antti Koivisto  <antti@apple.com>
+
+        Allow render tree building before loading stylesheet elements
+        https://bugs.webkit.org/show_bug.cgi?id=169079
+        <rdar://problem/30865709>
+
+        Reviewed by Andreas Kling.
+
+        Currently we don't resolve style or construct renderers if there are any pending
+        stylesheet loads. This patch enables style and renderer constuction up to the
+        first encountered loading style element.
+
+        This is a step toward allowing incremental rendering for in-body stylesheets.
+
+        * dom/Document.cpp:
+        (WebCore::Document::needsStyleRecalc):
+
+            Ensure scrolling to anchor eventually happens.
+
+        * dom/Document.h:
+        (WebCore::Document::isIgnoringPendingStylesheets):
+        * dom/InlineStyleSheetOwner.cpp:
+        (WebCore::InlineStyleSheetOwner::createSheet):
+        (WebCore::InlineStyleSheetOwner::sheetLoaded):
+        (WebCore::InlineStyleSheetOwner::startLoadingDynamicSheet):
+        * dom/ProcessingInstruction.cpp:
+        (WebCore::ProcessingInstruction::checkStyleSheet):
+        (WebCore::ProcessingInstruction::sheetLoaded):
+        (WebCore::ProcessingInstruction::removedFrom):
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::addPendingSheet):
+        (WebCore::HTMLLinkElement::removePendingSheet):
+        * style/StyleScope.cpp:
+        (WebCore::Style::Scope::addPendingSheet):
+        (WebCore::Style::Scope::removePendingSheet):
+
+            Track pending sheet nodes in a map so we can test if a given node has a pending sheet.
+            This is also more robust in general.
+
+        (WebCore::Style::Scope::hasProcessingInstructionWithPendingSheet):
+        (WebCore::Style::Scope::updateActiveStyleSheets):
+        * style/StyleScope.h:
+        (WebCore::Style::Scope::hasPendingSheet):
+        (WebCore::Style::Scope::hasPendingSheets):
+        (WebCore::Style::Scope::addPendingSheet): Deleted.
+        * style/StyleTreeResolver.cpp:
+        (WebCore::Style::TreeResolver::styleForElement):
+
+            Instead of global test for placeholder construction check the status of the pending sheet flag.
+
+        (WebCore::Style::hasLoadingStylesheet):
+        (WebCore::Style::TreeResolver::resolveComposedTree):
+
+            Set a flag when encountering a pending top level sheet during DOM traversal.
+
+        (WebCore::Style::TreeResolver::resolve):
+        * style/StyleTreeResolver.h:
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::dataChanged):
+
+            Ensure SVG images have layout before getting the size.
+
+2017-03-06  Vanessa Chipirrás Navalón  <vchipirras@igalia.com>
+
+        [GStreamer] Adopt nullptr
+        https://bugs.webkit.org/show_bug.cgi?id=123438
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        To adapt the code to the C++11 standard, all NULL or 0 pointers have been changed to nullptr.
+
+        * platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
+        (WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
+        * platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
+        (WebCore::AudioFileReader::handleNewDeinterleavePad):
+        (WebCore::AudioFileReader::plugDeinterleave):
+        (WebCore::AudioFileReader::decodeAudioForBusCreation):
+        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
+        (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
+        (WebCore::AudioSourceProviderGStreamer::configureAudioBin):
+        (WebCore::AudioSourceProviderGStreamer::setClient):
+        (WebCore::AudioSourceProviderGStreamer::handleNewDeinterleavePad):
+        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+        (webkit_web_audio_src_init):
+        (webKitWebAudioSrcLoop):
+        (webKitWebAudioSrcChangeState):
+        * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
+        (WebCore::AudioTrackPrivateGStreamer::setEnabled):
+        * platform/graphics/gstreamer/GStreamerUtilities.cpp:
+        (WebCore::initializeGStreamer):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::setAudioStreamProperties):
+        (WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine):
+        (WebCore::initializeGStreamerAndRegisterWebKitElements):
+        (WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
+        (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
+        (WebCore::MediaPlayerPrivateGStreamer::newTextSample):
+        (WebCore::MediaPlayerPrivateGStreamer::handleMessage):
+        (WebCore::MediaPlayerPrivateGStreamer::processTableOfContents):
+        Removed the unused second argument on processTableOfContentsEntry function.
+        (WebCore::MediaPlayerPrivateGStreamer::processTableOfContentsEntry):
+        Removed the unused second argument on this function.
+        (WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
+        (WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
+        (WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
+        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
+        Removed the unused second argument on processTableOfContentsEntry function.
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
+        (WebCore::MediaPlayerPrivateGStreamerBase::setMuted):
+        (WebCore::MediaPlayerPrivateGStreamerBase::muted):
+        (WebCore::MediaPlayerPrivateGStreamerBase::notifyPlayerOfMute):
+        (WebCore::MediaPlayerPrivateGStreamerBase::setStreamVolumeElement):
+        (WebCore::MediaPlayerPrivateGStreamerBase::decodedFrameCount):
+        (WebCore::MediaPlayerPrivateGStreamerBase::droppedFrameCount):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerOwr::registerMediaEngine):
+        * platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
+        (webkit_text_combiner_init):
+        (webkitTextCombinerPadEvent):
+        (webkitTextCombinerRequestNewPad):
+        (webkitTextCombinerNew):
+        * platform/graphics/gstreamer/TextSinkGStreamer.cpp:
+        (webkitTextSinkNew):
+        * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
+        (WebCore::TrackPrivateBaseGStreamer::tagsChanged):
+        (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfActiveChanged):
+        * platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
+        (webkit_video_sink_init):
+        (webkitVideoSinkProposeAllocation):
+        (webkitVideoSinkNew):
+        * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
+        (WebCore::VideoTrackPrivateGStreamer::setSelected):
+        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+        (webkit_web_src_init):
+        (webKitWebSrcDispose):
+        (webKitWebSrcSetProperty):
+        (webKitWebSrcStop):
+        (webKitWebSrcChangeState):
+        (webKitWebSrcQueryWithParent):
+        (webKitWebSrcGetProtocols):
+        (StreamingClient::handleResponseReceived):
+        (StreamingClient::handleDataReceived):
+        (ResourceHandleStreamingClient::didFail):
+        (ResourceHandleStreamingClient::wasBlocked):
+        (ResourceHandleStreamingClient::cannotShowURL):
+        * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
+        (webKitMediaSrcGetProtocols):
+
+2017-03-06  Andreas Kling  <akling@apple.com>
+
+        [iOS] Report domains crashing under memory pressure via enhanced privacy logging.
+        <https://webkit.org/b/169133>
+        <rdar://problem/29964017>
+
+        Reviewed by Antti Koivisto.
+
+        * page/DiagnosticLoggingKeys.h:
+
+2017-03-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Avoid backing store for layers with empty text nodes in a few more cases
+        https://bugs.webkit.org/show_bug.cgi?id=169185
+
+        Reviewed by Dan Bernstein.
+
+        In hasPaintingNonLayerDescendants() we can check whether the RenderText's linesBoundingBox()
+        is empty to avoid backing store in a few more cases. Also use containsOnlyWhitespace() rather
+        than isAllCollapsibleWhitespace(), because there's no need for backing store for non-selectable
+        whitespace text.
+
+        Covered by existing tests.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::calculateClipRects):
+
+2017-03-05  Chris Dumez  <cdumez@apple.com>
+
+        Drop unnecessary backslash in ResourceResponse::sanitizeSuggestedFilename()
+        https://bugs.webkit.org/show_bug.cgi?id=169066
+
+        Reviewed by Sam Weinig.
+
+        Drop unnecessary backslash in ResourceResponse::sanitizeSuggestedFilename().
+
+        * platform/network/ResourceResponseBase.cpp:
+        (WebCore::ResourceResponseBase::sanitizeSuggestedFilename):
+
+2017-03-05  Chris Dumez  <cdumez@apple.com>
+
+        Using <form> in <template> causes following <form> to get swallowed
+        https://bugs.webkit.org/show_bug.cgi?id=163552
+
+        Reviewed by Sam Weinig.
+
+        As per the HTML specification [1], when finding a "form" tag in the "in body"
+        insertion mode, we should insert an HTML element for the token, and, if there
+        is no template element on the stack of open elements, set the form element
+        pointer to point to the element created.
+
+        We were missing the "if there is no template element on the stack of open
+        elements" check and setting the form element pointer unconditionally.
+        This patch fixes the issue.
+
+        [1] https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody:form-element-pointer-2
+
+        Test: fast/parser/form-after-template.html
+
+        * html/parser/HTMLConstructionSite.cpp:
+        (WebCore::HTMLConstructionSite::insertHTMLFormElement):
+
+2017-03-04  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Update CSSFontSelector's matching algorithm to understand ranges
+        https://bugs.webkit.org/show_bug.cgi?id=168892
+
+        Reviewed by Jon Lee.
+
+        This patch migrates the font selection algorithm out of FontCacheCoreText and into its own file which can be shared
+        among all ports. It then migrates our web font selection algorithm to use it.
+
+        This patch doesn't actually change the parsing rules; it just changes the internal machinery for how fonts get
+        selected. Therefore, this patch simply makes zero-length ranges from the discrete values the parser emits, and passes
+        those zero-length ranges to the range-based font selection routine. This means that this patch doesn't actually
+        change the results of the font selection algorithm.
+
+        One of the inputs to the new font selection algorithm is font-stretch, which previously was not parsed inside
+        @font-face blocks or the CSS Font Loading API. This patch therefore adds parsing support and modifies the existing
+        tests for these pieces to expect parsing to work. Because the font selection algorithm itself is shared between
+        installed fonts and webfonts, this patch doesn't add any additional tests for it (because it is already covered under
+        existing tests).
+
+        No new tests because there is no behavior change.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj: Add new file for the font selection algorithm.
+        * css/CSSFontFace.cpp:
+        (WebCore::CSSFontFace::calculateStretch): Used on @font-face blocks and the CSS Font Loading API.
+        (WebCore::CSSFontFace::setStretch): Fill out the previously stubbed function.
+        * css/CSSFontFace.h: Add the range member variable to CSSFontFaces.
+        * css/CSSFontFaceSet.cpp:
+        (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered): Now that we care about font-stretch, we need to
+        look it up for local fonts too. This current approach of an extra FontSelectionValue hanging around with a
+        FontTraitsMask is very ugly and will be removed soon (https://bugs.webkit.org/show_bug.cgi?id=168889 and
+        https://bugs.webkit.org/show_bug.cgi?id=168890).
+        (WebCore::computeFontStretch): Used on @font-face blocks and the CSS Font Loading API.
+        (WebCore::CSSFontFaceSet::matchingFaces): Educate about font-stretch.
+        (WebCore::CSSFontFaceSet::fontFace): Migrate to the new font-selection algorithm.
+        (WebCore::fontFaceComparator): Deleted.
+        * css/CSSFontFaceSet.h:
+        * css/CSSFontSelector.cpp:
+        (WebCore::CSSFontSelector::addFontFaceRule): Educate about font-stretch.
+        (WebCore::CSSFontSelector::fontRangesForFamily): Ditto.
+        * css/FontFace.cpp:
+        (WebCore::FontFace::setStretch): Ditto.
+        (WebCore::FontFace::stretch): Ditto.
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::CSSPropertyParser::parseFontFaceDescriptor): Ditto.
+        * platform/graphics/FontCache.h: Ditto.
+        * platform/graphics/FontDescription.h:
+        * platform/graphics/FontSelectionAlgorithm.cpp: Added.
+        (WebCore::FontSelectionAlgorithm::filterCapability):
+        (WebCore::FontSelectionAlgorithm::indexOfBestCapabilities):
+        (WebCore::fontSelectionRequestForTraitsMask):
+        (WebCore::initialFontSelectionCapabilitiesForTraitsMask):
+        (WebCore::fontSelectionCapabilitiesForTraitsMask):
+        * platform/graphics/FontSelectionAlgorithm.h: Added. Taken from FontCacheCoreText.cpp.
+        (WebCore::FontSelectionValue::FontSelectionValue):
+        (WebCore::FontSelectionValue::operator float):
+        (WebCore::FontSelectionValue::rawValue):
+        (WebCore::FontSelectionValue::maximumValue):
+        (WebCore::FontSelectionValue::minimumValue):
+        (WebCore::FontSelectionValue::operator+):
+        (WebCore::FontSelectionValue::operator-):
+        (WebCore::FontSelectionValue::operator*):
+        (WebCore::FontSelectionValue::operator/):
+        (WebCore::FontSelectionValue::operator==):
+        (WebCore::FontSelectionValue::operator!=):
+        (WebCore::FontSelectionValue::operator<):
+        (WebCore::FontSelectionValue::operator<=):
+        (WebCore::FontSelectionValue::operator>):
+        (WebCore::FontSelectionValue::operator>=):
+        (WebCore::FontSelectionRange::isValid):
+        (WebCore::FontSelectionRange::expand):
+        (WebCore::FontSelectionRange::includes):
+        (WebCore::FontSelectionRequest::operator==):
+        (WebCore::FontSelectionRequest::operator!=):
+        (WebCore::FontSelectionRequestKey::FontSelectionRequestKey):
+        (WebCore::FontSelectionRequestKey::isHashTableDeletedValue):
+        (WebCore::FontSelectionRequestKey::operator==):
+        (WebCore::FontSelectionRequestKeyHash::hash):
+        (WebCore::FontSelectionRequestKeyHash::equal):
+        (WebCore::FontSelectionCapabilities::expand):
+        (WebCore::FontSelectionAlgorithm::FontSelectionAlgorithm):
+        (WebCore::FontSelectionAlgorithm::iterateActiveCapabilitiesWithReturn):
+        (WebCore::FontSelectionAlgorithm::iterateActiveCapabilities):
+        * platform/graphics/cocoa/FontCacheCoreText.cpp: Moved to FontSelectionAlgorithm.
+        (WebCore::stretchFromCoreTextTraits):
+        (WebCore::FontDatabase::capabilitiesForFontDescriptor):
+        (WebCore::findClosestFont):
+        (WebCore::calculateFontSelectionRequest):
+        (WebCore::platformFontLookupWithFamily):
+        (WebCore::FontCache::getTraitsInFamily): Deleted.
+        (WebCore::iterateActiveFontsWithReturn): Deleted.
+        (WebCore::iterateActiveFonts): Deleted.
+        (WebCore::findClosestStretch): Deleted.
+        (WebCore::filterStretch): Deleted.
+        (WebCore::findClosestStyle): Deleted.
+        (WebCore::filterStyle): Deleted.
+        (WebCore::findClosestWeight): Deleted.
+        (WebCore::filterWeight): Deleted.
+        (WebCore::computeTargetWeight): Deleted.
+        * platform/text/TextFlags.h: Moved to FontSelectionAlgorithm.
+        (WebCore::FontSelectionValue::FontSelectionValue): Deleted.
+        (WebCore::FontSelectionValue::operator float): Deleted.
+        (WebCore::FontSelectionValue::operator+): Deleted.
+        (WebCore::FontSelectionValue::operator-): Deleted.
+        (WebCore::FontSelectionValue::operator*): Deleted.
+        (WebCore::FontSelectionValue::operator/): Deleted.
+        (WebCore::FontSelectionValue::operator==): Deleted.
+        (WebCore::FontSelectionValue::operator!=): Deleted.
+        (WebCore::FontSelectionValue::operator<): Deleted.
+        (WebCore::FontSelectionValue::operator<=): Deleted.
+        (WebCore::FontSelectionValue::operator>): Deleted.
+        (WebCore::FontSelectionValue::operator>=): Deleted.
+        (WebCore::FontSelectionValue::rawValue): Deleted.
+        (WebCore::FontSelectionValue::maximumValue): Deleted.
+        (WebCore::FontSelectionValue::minimumValue): Deleted.
+        (WebCore::FontSelectionRange::isValid): Deleted.
+        (WebCore::FontSelectionRange::expand): Deleted.
+        (WebCore::FontSelectionRange::includes): Deleted.
+        (WebCore::FontSelectionCapabilities::expand): Deleted.
+
+2017-03-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Make some RenderLayer tree traversal in RenderLayerBacking more generic
+        https://bugs.webkit.org/show_bug.cgi?id=169177
+
+        Reviewed by Zalan Bujtas.
+
+        The real goal of this patch is reduce the number of callers of
+        RenderLayerBacking::isPaintDestinationForDescendantLayers() to one. To achieve that,
+        have the setContentsVisible() logic (which is really just about the CSS 'visibility' property)
+        do its own tree traversal which just consults layer.hasVisibleContent(). So
+        make descendantLayerPaintsIntoAncestor() a generic traversal function which walks
+        descendant layers which may paint into the target layer. The "Visible" in the name
+        reflects the fact that it can bypass a subtree for a layer with !hasVisibleDescendant().
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateAfterDescendants):
+        (WebCore::traverseVisibleNonCompositedDescendantLayers):
+        (WebCore::RenderLayerBacking::isPaintDestinationForDescendantLayers):
+        (WebCore::RenderLayerBacking::hasVisibleNonCompositedDescendants):
+        (WebCore::descendantLayerPaintsIntoAncestor): Deleted.
+        * rendering/RenderLayerBacking.h:
+
+2017-03-04  Simon Fraser  <simon.fraser@apple.com>
+
+        Clarify some terminology in RenderLayerBacking
+        https://bugs.webkit.org/show_bug.cgi?id=169174
+
+        Reviewed by Zalan Bujtas.
+
+        Rename some functions related to directly-composited background images and
+        box decorations for clarify.
+
+        Only behavior change is for canDirectlyCompositeBackgroundBackgroundImage() to check
+        GraphicsLayer::supportsContentsTiling(), which means that RenderLayerBacking::contentChanged()
+        will no longer trigger a updateGeometry() when it gets BackgroundImageChanged on non-
+        CoordinateGraphics platforms.
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateConfiguration):
+        (WebCore::RenderLayerBacking::updateAfterDescendants):
+        (WebCore::RenderLayerBacking::updateDirectlyCompositedBoxDecorations):
+        (WebCore::canDirectlyCompositeBackgroundBackgroundImage):
+        (WebCore::hasPaintedBoxDecorationsOrBackgroundImage):
+        (WebCore::supportsDirectlyCompositedBoxDecorations):
+        (WebCore::RenderLayerBacking::paintsBoxDecorations):
+        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
+        (WebCore::RenderLayerBacking::contentChanged):
+        (WebCore::RenderLayerBacking::updateDirectlyCompositedContents): Deleted.
+        (WebCore::canCreateTiledImage): Deleted.
+        (WebCore::hasVisibleBoxDecorationsOrBackgroundImage): Deleted.
+        (WebCore::supportsDirectBoxDecorationsComposition): Deleted.
+        * rendering/RenderLayerBacking.h:
+
+2017-03-04  Alex Christensen  <achristensen@webkit.org>
+
+        Cleanup after r213418
+        https://bugs.webkit.org/show_bug.cgi?id=169165
+
+        Reviewed by Youenn Fablet.
+
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
+        (WebCore::RealtimeIncomingAudioSource::OnData):
+        Restore the assertion I removed.
+
+2017-03-04  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r213379.
+        https://bugs.webkit.org/show_bug.cgi?id=169169
+
+        broke GTK+ and Windows builds (Requested by mcatanzaro on
+        #webkit).
+
+        Reverted changeset:
+
+        "Enable fieldsets to be flexboxes, grids and multicolumn."
+        https://bugs.webkit.org/show_bug.cgi?id=169082
+        http://trac.webkit.org/changeset/213379
+
+2017-03-03  Youenn Fablet  <youenn@apple.com>
+
+        [WebRTC] Update libwebrtc source code
+        https://bugs.webkit.org/show_bug.cgi?id=168599
+
+        Reviewed by Alex Christensen.
+
+        * Modules/mediastream/RTCStatsReport.h:
+        * Modules/mediastream/RTCStatsReport.idl:
+        Update to match the latest spec, which matches the new structures in libwebrtc.
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::fillRTCRTPStreamStats):
+        (WebCore::fillOutboundRTPStreamStats):
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+        * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
+        (WebCore::RealtimeIncomingAudioSource::OnData):
+        Comment out an assertion that was failing.  We should revisit this.
+        * testing/MockLibWebRTCPeerConnection.h:
+
+2017-03-03  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r213400.
+        https://bugs.webkit.org/show_bug.cgi?id=169163
+
+        Caused frequent assertion failures (Requested by ap on
+        #webkit).
+
+        Reverted changeset:
+
+        "[Modern Media Controls] Improve media documents across macOS,
+        iPhone and iPad"
+        https://bugs.webkit.org/show_bug.cgi?id=169145
+        http://trac.webkit.org/changeset/213400
+
+2017-03-03  Andy Estes  <aestes@apple.com>
+
+        Add support for canvas.toBlob
+        https://bugs.webkit.org/show_bug.cgi?id=148878
+
+        Reviewed by Tim Horton.
+
+        Address additional review feedback received after r213412 landed.
+
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::toBlob): Passed null to the blob callback if blob conversion
+        fails for any reason.
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::cgImage): Removed an unnecessary local variable.
+
+2017-03-03  Andy Estes  <aestes@apple.com>
+
+        Add support for canvas.toBlob
+        https://bugs.webkit.org/show_bug.cgi?id=148878
+        <rdar://problem/22590406>
+
+        Reviewed by Tim Horton.
+
+        These tests now pass:
+        imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html
+        imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * fileapi/BlobCallback.cpp: Added.
+        (WebCore::BlobCallback::scheduleCallback):
+        * fileapi/BlobCallback.h: Added.
+        (WebCore::BlobCallback::~BlobCallback):
+        * fileapi/BlobCallback.idl: Added.
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::toBlob):
+        * html/HTMLCanvasElement.h:
+        * html/HTMLCanvasElement.idl:
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::writeFunction):
+        (WebCore::encodeImage):
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::data):
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        (WebCore::ImageBuffer::toCGImage):
+        (WebCore::cgImage):
+        (WebCore::dataURL):
+        * platform/graphics/gtk/ImageBufferGtk.cpp:
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        * platform/graphics/win/ImageBufferDirect2D.cpp:
+        (WebCore::ImageBuffer::toData):
+
+2017-03-03  Dean Jackson  <dino@apple.com>
+
+        Add WebGPU compile flag and experimental feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169161
+        <rdar://problem/30846689>
+
+        Reviewed by Tim Horton.
+
+        Add ENABLE_WEBGPU, an experimental feature flag, a RuntimeEnabledFeature,
+        and an InternalSetting.
+
+        * Configurations/FeatureDefines.xcconfig:
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::setWebGPUEnabled):
+        (WebCore::RuntimeEnabledFeatures::webGPUEnabled):
+        * testing/InternalSettings.cpp:
+        (WebCore::InternalSettings::Backup::Backup):
+        (WebCore::InternalSettings::Backup::restoreTo):
+        (WebCore::InternalSettings::setWebGPUEnabled):
+        * testing/InternalSettings.h:
+        * testing/InternalSettings.idl:
+
+2017-03-03  Simon Fraser  <simon.fraser@apple.com>
+
+        Clean up some RenderLayerBacking code
+        https://bugs.webkit.org/show_bug.cgi?id=169160
+
+        Reviewed by Dean Jackson.
+
+        Modern loops in descendantLayerPaintsIntoAncestor().
+
+        Rename RenderLayerBacking::paintsChildren() to RenderLayerBacking::paintsChildRenderers() to clarify that
+        it refers to renderers, not RenderLayers.
+
+        Rename RenderLayerBacking::paintsNonDirectCompositedBoxDecoration() to RenderLayerBacking::paintsBoxDecorations().
+        "Paints" already implies non-composited.
+
+        No behavior change.
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateDrawsContent):
+        (WebCore::RenderLayerBacking::paintsBoxDecorations):
+        (WebCore::RenderLayerBacking::paintsChildRenderers):
+        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
+        (WebCore::descendantLayerPaintsIntoAncestor):
+        (WebCore::RenderLayerBacking::paintsNonDirectCompositedBoxDecoration): Deleted.
+        (WebCore::RenderLayerBacking::paintsChildren): Deleted.
+        * rendering/RenderLayerBacking.h:
+
+2017-03-03  Simon Fraser  <simon.fraser@apple.com>
+
+        Clean up RenderImage and a RenderImageResource function
+        https://bugs.webkit.org/show_bug.cgi?id=169153
+
+        Reviewed by Zalan Bujtas.
+        
+        Change all calls to imageResource().cachedImage() in RenderImage to use the inline
+        cachedImage() function.
+
+        In RenderImage::paintReplaced(), early return after the broken image block (and no need
+        to test imageResource().hasImage() again in the second condition). Convert height/width to size,
+        which also forces us to be explicit about using flooredIntSize() when fetching the image
+        (perhaps this should be a roundedIntSize, but I didn't want to change behavior).
+
+        Change RenderImageResource::image() to take an IntSize, rather than int height and width.
+
+        No behavior change.
+
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::styleDidChange):
+        (WebCore::RenderImage::imageChanged):
+        (WebCore::RenderImage::notifyFinished):
+        (WebCore::RenderImage::paintReplaced):
+        (WebCore::RenderImage::paintIntoRect):
+        (WebCore::RenderImage::foregroundIsKnownToBeOpaqueInRect):
+        (WebCore::RenderImage::embeddedContentBox):
+        * rendering/RenderImageResource.cpp:
+        (WebCore::RenderImageResource::image):
+        * rendering/RenderImageResource.h:
+        (WebCore::RenderImageResource::image):
+        * rendering/RenderImageResourceStyleImage.cpp:
+        (WebCore::RenderImageResourceStyleImage::image):
+        * rendering/RenderImageResourceStyleImage.h:
+
+2017-03-03  Antoine Quint  <graouts@apple.com>
+
+        [Modern Media Controls] Improve media documents across macOS, iPhone and iPad
+        https://bugs.webkit.org/show_bug.cgi?id=169145
+        <rdar://problem/17048858>
+
+        Reviewed by Dean Jackson.
+
+        There were a variety of issues with media documents, some longstanding, and some specifically
+        about modern media controls.
+
+        One issue was that fullscreen and picture-in-picture buttons would show for audio media documents,
+        due to using a <video> element to load the audio file. We now have additional logic in MediaController
+        to identify if the loaded media is really an audio file, and using this information to hide the
+        fullscreen and picture-in-picture buttons.
+
+        Another issue was that we would inject style in MediaDocument.cpp that was specific to modern media
+        controls when we could have the modern-media-controls module injected CSS handle this styling. We now
+        use the injected style in the shadow root to size media documents based on the device characteristics
+        and ensuring that page styles are overridden.
+
+        We also simplify how MediaDocument.cpp sets the source of the media element to simply use the "src"
+        attribute and not a <source> element.
+
+        Finally, we introduce a MediaDocumentController class that is instantiated when we're dealing with
+        a media document to hide the controls while we determine the type of media we're loading (audio vs.
+        video) in order to apply the appropriate styling without flashes.
+
+        As a result of the new styles applied by the modern-media-controls module, media documents have a
+        similar behavior on macOS and iPad, where we only enforce a min-width for video allowing them
+        to play at their natural size otherwise, and enforcing a fixed width for audio. On iPhone however,
+        we want to always play the media at full width, with some padding in the case of audio.
+
+        Tests: media/modern-media-controls/fullscreen-support/fullscreen-support-disabled-video-with-audio-tracks-only.html
+               media/modern-media-controls/media-documents/ipad/media-document-audio-ios-sizing.html
+               media/modern-media-controls/media-documents/ipad/media-document-video-ios-sizing.html
+               media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html
+               media/modern-media-controls/media-documents/media-document-audio-mac-sizing.html
+               media/modern-media-controls/media-documents/media-document-video-ios-sizing.html
+               media/modern-media-controls/media-documents/media-document-video-mac-sizing.html
+               media/modern-media-controls/pip-support/pip-support-disabled-video-with-audio-tracks-only.html
+
+        * Modules/modern-media-controls/controls/ios-inline-media-controls.css:
+        (:host(audio) .media-controls.ios.inline > .controls-bar:before,):
+        (:host(audio) .media-controls.ios.inline > .controls-bar:before): Deleted.
+        * Modules/modern-media-controls/controls/macos-media-controls.css:
+        (:host(audio) .media-controls.mac.inline > .controls-bar,):
+        (:host(audio) .media-controls.mac.inline > .controls-bar > .background-tint,):
+        (:host(audio) .media-controls.mac.inline > .controls-bar): Deleted.
+        (:host(audio) .media-controls.mac.inline > .controls-bar > .background-tint): Deleted.
+        * Modules/modern-media-controls/controls/media-document.css: Added.
+        (:host(.media-document)):
+        (:host(.media-document.ready)):
+        (:host(.media-document.audio.mac)):
+        (:host(.media-document.audio.ipad)):
+        (:host(.media-document.audio.iphone)):
+        (:host(.media-document.video.mac)):
+        (:host(.media-document.video.ipad)):
+        (:host(.media-document.video.iphone)):
+        * Modules/modern-media-controls/js-files:
+        * Modules/modern-media-controls/media/fullscreen-support.js:
+        (FullscreenSupport.prototype.syncControl):
+        (FullscreenSupport):
+        * Modules/modern-media-controls/media/media-controller.js:
+        (MediaController):
+        (MediaController.prototype.get isAudio):
+        * Modules/modern-media-controls/media/media-document-controller.js: Added.
+        (MediaDocumentController):
+        (MediaDocumentController.prototype.handleEvent):
+        (MediaDocumentController.prototype._mediaDocumentHasMetadata):
+        (MediaDocumentController.prototype._mediaDocumentHasSize):
+        * Modules/modern-media-controls/media/pip-support.js:
+        (PiPSupport.prototype.syncControl):
+        (PiPSupport):
+        * html/MediaDocument.cpp:
+        (WebCore::MediaDocumentParser::createDocumentStructure):
+
+2017-03-03  Chris Dumez  <cdumez@apple.com>
+
+        [iOS] Throttle SVG SMIL animations to 30fps in low power mode
+        https://bugs.webkit.org/show_bug.cgi?id=169137
+        <rdar://problem/30833754>
+
+        Reviewed by Simon Fraser.
+
+        Throttle SVG SMIL animations to 30fps in low power mode on iOS to save
+        battery.
+
+        Test: svg/animations/animations-lowPowerMode-throttling.html
+
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::SVGSVGElement):
+        * svg/SVGSVGElement.idl:
+        * svg/animation/SMILTime.h:
+        (WebCore::SMILTime::SMILTime):
+        * svg/animation/SMILTimeContainer.cpp:
+        (WebCore::SMILTimeContainer::SMILTimeContainer):
+        (WebCore::SMILTimeContainer::animationFrameDelay):
+        (WebCore::SMILTimeContainer::updateDocumentOrderIndexes):
+        (WebCore::SMILTimeContainer::updateAnimations):
+        * svg/animation/SMILTimeContainer.h:
+        * svg/animation/SVGSMILElement.cpp:
+        (WebCore::SVGSMILElement::calculateNextProgressTime):
+        * testing/Internals.cpp:
+        (WebCore::Internals::svgAnimationsInterval):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2017-03-03  Joseph Pecoraro  <pecoraro@apple.com>
+
+        [Mac] WebCore.framework is missing a symlink from Frameworks to Versions/Current/Frameworks when the latter exists
+        https://bugs.webkit.org/show_bug.cgi?id=169067
+
+        Reviewed by Dan Bernstein.
+
+        * WebCore.xcodeproj/project.pbxproj:
+
+2017-03-03  Sam Weinig  <sam@webkit.org>
+
+        REGRESSION (r209760): Apple Pay doesn't work on casper.com, shopspring.com, maybe other sites
+        <rdar://problem/30313445>
+        https://bugs.webkit.org/show_bug.cgi?id=169149
+
+        Reviewed by Simon Fraser.
+
+        Relax restriction that the ApplePayShippingMethod sequence must not be empty. This
+        was incorrect.
+
+        * Modules/applepay/ApplePaySession.cpp:
+        (WebCore::convertAndValidate):
+
+2017-03-03  Alex Christensen  <achristensen@webkit.org>
+
+        [URLParser] Fix file: as a relative file URL
+        https://bugs.webkit.org/show_bug.cgi?id=169122
+
+        Reviewed by Tim Horton.
+
+        This is clearly defined in https://url.spec.whatwg.org/#file-state with the EOF code point.
+        I got it wrong and didn't test it.  It's been added to the web platform tests since we last updated.
+
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::parse):
+
+2017-03-03  Dave Hyatt  <hyatt@apple.com>
+
+        Enable fieldsets to be flexboxes, grids and multicolumn.
+        https://bugs.webkit.org/show_bug.cgi?id=169082
+
+        Reviewed by Simon Fraser.
+
+        Added new tests in fast/forms/fieldset.
+
+        This patch eliminates RenderFieldset and moves the functionality into RenderBlock so that
+        derived classes can also be fieldsets.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        Remove RenderFieldset from the project.
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::titleUIElement):
+        Call in to RenderBlock now instead of RenderFieldset.
+
+        * html/HTMLFieldSetElement.cpp:
+        (WebCore::HTMLFieldSetElement::createElementRenderer):
+        * html/HTMLFieldSetElement.h:
+        The fieldset DOM element now uses RenderElement::createFor to make renderers so that multiple display types
+        can be supported. A special flag has been added that indicates only to make flexbox and block-related
+        renderers (not table display types).
+
+        * rendering/OrderIterator.cpp:
+        (WebCore::OrderIterator::shouldSkipChild):
+        (WebCore::OrderIteratorPopulator::collectChild):
+        * rendering/OrderIterator.h:
+        Streamline child collection for flexboxes and grids to indicate whether the child should be skipped as a return
+        value from collectChild. Add a shouldSkipChild method that skips both out of flow positioned objects and
+        excluded children like the legends of fieldsets.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlockRareData::RenderBlockRareData):
+        When the legend is taller than the fieldset's borderBefore(), intrinsic border is added to the CSS border width.
+        This intrinsic border being factored in ensures that the padding and content boxes of fieldsets are correct
+        across any layout system, since the legend is now just treated as part of the border.
+
+        (WebCore::RenderBlock::computeBlockPreferredLogicalWidths):
+        Call the new computePreferredWidthsForExcludedChildren to ensure that excluded children contribute to
+        preferred width in their own way and not as part of a specific layout system.
+
+        (WebCore::RenderBlock::renderName):
+        Hacked to still return RenderFieldSet for RenderBlockFlow-backed fieldsets for layout test compatibility.
+
+        (WebCore::RenderBlock::layoutExcludedChildren):
+        Renamed from layoutSpecialExcludedChild to more accurately reflect the fact that multiple excluded children
+        can be included here (e.g., both a multicolumn flow thread and a legend). The RenderBlock base class handles
+        the layout of legends by both placing them and setting the correct intrinsic border before amount on the
+        block.
+
+        (WebCore::RenderBlock::findFieldsetLegend):
+        Moved from RenderFieldset.
+
+        (WebCore::RenderBlock::adjustBorderBoxRectForPainting):
+        (WebCore::RenderBlock::paintRectToClipOutFromBorder):
+        These methods are used when painting to shrink the border box as needed to account for the legend and to
+        provide the portion of the border that needs to be clipped out. These methods have been enhanced to
+        properly support all writing modes.
+
+        (WebCore::RenderBlock::intrinsicBorderForFieldset):
+        (WebCore::RenderBlock::setIntrinsicBorderForFieldset):
+        (WebCore::RenderBlock::borderTop):
+        (WebCore::RenderBlock::borderLeft):
+        (WebCore::RenderBlock::borderBottom):
+        (WebCore::RenderBlock::borderRight):
+        (WebCore::RenderBlock::borderBefore):
+        These methods are overridden for border to ensure that the intrinsic border added by a tall legend is
+        properly factored in.
+
+        (WebCore::RenderBlock::computePreferredWidthsForExcludedChildren):
+        * rendering/RenderBlock.h:
+        This method computes the preferred widths for legend children in order to ensure that the legend properly
+        grows the width of the fieldset when it is the widest item.
+
+        (WebCore::RenderBlock::adjustBorderBoxLogicalHeightForBoxSizing):
+        (WebCore::RenderBlock::adjustContentBoxLogicalHeightForBoxSizing):
+        Preserve the behavior of fieldsets in that the available content size includes the space lost accounting
+        for the legend. I don't think this makes much sense, but it matches the behavior of other browsers
+        (and our old behavior).
+
+        (WebCore::RenderBlock::paintExcludedChildrenInBorder):
+        Method for painting the excluded children that might be present in our border. We only do this if the
+        paint phase is a box decoration painting phase and if the legend isn't self-painting.
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::willCreateColumns):
+        Allow fieldsets to create columns now.
+
+        (WebCore::RenderBlockFlow::layoutBlockChildren):
+        (WebCore::RenderBlockFlow::layoutExcludedChildren):
+        Renamed this method and change it to call the base class to ensure that legends in multicolumn fieldsets
+        get handled properly.
+
+        (WebCore::RenderBlockFlow::addChild):
+        Patched to make sure legends don't get put into the multicolumn flow thread, as they need to
+        remain outside of it.
+
+        (WebCore::RenderBlockFlow::layoutSpecialExcludedChild): Deleted.
+        Renamed to layoutExcludedChildren.
+
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::paintBoxDecorations):
+        (WebCore::RenderBox::paintMask):
+        Patched to call the new adjustBorderBoxRectForPainting and paintRectToClipOutFromBorder methods in
+        order to properly shrink the border box rect for painting and to clip out the portion of the border
+        covered by the legend.
+
+        (WebCore::RenderBox::avoidsFloats):
+        Add fieldsets as avoiding floats. RenderFieldset used to subclass this method to return true, but with
+        its removal, we need to put this in the base class along with legends.
+
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::isGridItem):
+        (WebCore::RenderBox::isFlexItem):
+        Patched to exclude legends so that they don't try to size like they are really in the grid or flexbox.
+
+        (WebCore::RenderBox::adjustBorderBoxRectForPainting):
+        This method is overridden by RenderBLock to handle adjusting fieldset border rects for painting.
+
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::paintBorder):
+        * rendering/RenderBoxModelObject.h:
+        (WebCore::RenderBoxModelObject::paintRectToClipOutFromBorder):
+        Patched to properly paint fieldsets using the new helpers.
+
+        * rendering/RenderDeprecatedFlexibleBox.cpp:
+        (WebCore::FlexBoxIterator::next):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutBlock):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
+        Make sure deprecated flexible boxes lay out their legends properly by calling layoutExcludedChildren.
+
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::createFor):
+        * rendering/RenderElement.h:
+        Patched to take a flag that limits what renderers can be created so that fieldsets don't make table
+        display types.
+
+        * rendering/RenderFieldset.cpp: Removed.
+        * rendering/RenderFieldset.h: Removed.
+        Remove RenderFieldset files from the tree.
+
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths):
+        (WebCore::RenderFlexibleBox::firstLineBaseline):
+        (WebCore::RenderFlexibleBox::layoutBlock):
+        (WebCore::RenderFlexibleBox::layoutFlexItems):
+        (WebCore::RenderFlexibleBox::prepareOrderIteratorAndMargins):
+        Make sure flexible boxes lay out their legends properly by calling layoutExcludedChildren.
+        Patch methods to use the OrderIterator's new shouldSkipChild method to ensure legends aren't
+        part of the flexible box layout.
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::layoutBlock):
+        (WebCore::RenderGrid::computeIntrinsicLogicalWidths):
+        (WebCore::RenderGrid::placeItemsOnGrid):
+        (WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
+        (WebCore::RenderGrid::layoutGridItems):
+        Make sure grids lay out their legends properly by calling layoutExcludedChildren.
+        Patch methods to use the OrderIterator's new shouldSkipChild method to ensure legends aren't
+        part of the grid's layout.
+
+        * rendering/RenderMultiColumnFlowThread.cpp:
+        (WebCore::RenderMultiColumnFlowThread::populate):
+        Pull legends back up into the block and don't let them be part of the flow thread.
+
+        * rendering/RenderMultiColumnSet.cpp:
+        (WebCore::RenderMultiColumnSet::requiresBalancing):
+        Fix an assert to allow legends to exist as siblings of multicolumn sets.
+
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::isFieldset):
+        Changed to examine the HTML element rather than RenderFieldset.
+
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::isExcludedFromNormalLayout):
+        (WebCore::RenderObject::setIsExcludedFromNormalLayout):
+        (WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
+        RenderObjects now have a new bit that is set for excluded objects like legends, flow threads,
+        placeholders, and ruby text. This bit lets code easily detect that an object is excluded from
+        the layout system and can be skipped.
+
+        (WebCore::RenderObject::isExcludedAndPlacedInBorder):
+        Helper method for asking if an object is painting inside the border. Used to know we
+        need to factor it into preferred width calculations outside of any one layout system
+        and also to know that we need to paint it when we paint the fieldset's border instead of
+        later (after we might have scrolled or clipped the child painting area).
+
+        * rendering/RenderRubyRun.cpp:
+        (WebCore::RenderRubyRun::layoutExcludedChildren):
+        (WebCore::RenderRubyRun::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderRubyRun.h:
+        Rename layoutSpecialExcludedChild to layoutExcludedChildren.
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::adjustBorderBoxRectForPainting):
+        (WebCore::RenderTable::paintBoxDecorations):
+        (WebCore::RenderTable::paintMask):
+        (WebCore::RenderTable::subtractCaptionRect): Deleted.
+        * rendering/RenderTable.h:
+        Patched tables to share the same border box rect adjustment used by fieldsets when subtracting
+        out captions. This is prep work to allow tables to be fieldsets, but for now I didn't go all the
+        way.
+
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::paintBoxDecorations):
+        (WebCore::RenderTableCell::paintMask):
+        Make sure table cells adjust their border box rects for painting. Again this is prep work for
+        cells potentially being fieldsets, but not supported yet.
+
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::layoutExcludedChildren):
+        (WebCore::RenderTextControl::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderTextControl.h:
+        * rendering/RenderTextControlMultiLine.cpp:
+        (WebCore::RenderTextControlMultiLine::layoutExcludedChildren):
+        (WebCore::RenderTextControlMultiLine::layoutSpecialExcludedChild): Deleted.
+        * rendering/RenderTextControlMultiLine.h:
+        Renamed the methods for doing the excluded child layout.
+
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::RenderTreeAsText::writeRenderObject):
+        Make sure to dump the original fieldset border and not the border with the extra legend stuff in it.
+
+2017-03-03  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r213344.
+
+        This changed caused LayoutTest crashes under GuardMalloc.
+
+        Reverted changeset:
+
+        "Add support for canvas.toBlob"
+        https://bugs.webkit.org/show_bug.cgi?id=148878
+        http://trac.webkit.org/changeset/213344
+
+2017-03-03  Konstantin Tokarev  <annulen@yandex.ru>
+
+        Unreviewed typo fix
+
+        * features.json:
+
+2017-03-03  Eric Carlson  <eric.carlson@apple.com>
+
+        [MediaStream] Remove #if USE(VIDEOTOOLBOX) from AVVideoCaptureSource
+        https://bugs.webkit.org/show_bug.cgi?id=169131
+
+        Reviewed by Youenn Fablet.
+
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::currentFrameCGImage):
+
+2017-03-03  Chris Dumez  <cdumez@apple.com>
+
+        Add assertion in Frame::setView() to make sure associated document has no living render tree
+        https://bugs.webkit.org/show_bug.cgi?id=169134
+
+        Reviewed by Brent Fulgham.
+
+        Add assertion in Frame::setView() to make sure associated document has no living render tree.
+        This is not supposed to happen and r213311 fixed one case where this could happen. We need
+        to find out if it can still happen.
+
+        * page/Frame.cpp:
+        (WebCore::Frame::setView):
+
+2017-03-02  Sam Weinig  <sam@webkit.org>
+
+        Rename htmlediting.h/cpp to Editing.h/cpp
+        https://bugs.webkit.org/show_bug.cgi?id=169103
+
+        Reviewed by Alex Christensen.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * accessibility/AXObjectCache.cpp:
+        * accessibility/AccessibilityNodeObject.cpp:
+        * accessibility/AccessibilityObject.cpp:
+        * accessibility/AccessibilityRenderObject.cpp:
+        * accessibility/atk/WebKitAccessibleHyperlink.cpp:
+        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        * dom/Document.cpp:
+        * dom/Element.cpp:
+        * dom/Node.h:
+        * dom/Position.cpp:
+        * dom/PositionIterator.cpp:
+        * dom/Range.cpp:
+        * editing/AlternativeTextController.cpp:
+        * editing/AppendNodeCommand.cpp:
+        * editing/ApplyBlockElementCommand.cpp:
+        * editing/ApplyStyleCommand.cpp:
+        * editing/BreakBlockquoteCommand.cpp:
+        * editing/CompositeEditCommand.cpp:
+        * editing/CreateLinkCommand.cpp:
+        (WebCore::CreateLinkCommand::CreateLinkCommand):
+        * editing/DeleteFromTextNodeCommand.cpp:
+        * editing/DeleteSelectionCommand.cpp:
+        * editing/EditCommand.cpp:
+        * editing/Editing.cpp: Copied from Source/WebCore/editing/htmlediting.cpp.
+        * editing/Editing.h: Copied from Source/WebCore/editing/htmlediting.h.
+        * editing/EditingAllInOne.cpp:
+        * editing/EditingStyle.cpp:
+        * editing/Editor.cpp:
+        * editing/EditorCommand.cpp:
+        * editing/FormatBlockCommand.cpp:
+        * editing/FrameSelection.cpp:
+        * editing/HTMLInterchange.cpp:
+        * editing/IndentOutdentCommand.cpp:
+        * editing/InsertLineBreakCommand.cpp:
+        * editing/InsertListCommand.cpp:
+        * editing/InsertNodeBeforeCommand.cpp:
+        * editing/InsertParagraphSeparatorCommand.cpp:
+        * editing/InsertTextCommand.cpp:
+        * editing/ModifySelectionListLevel.cpp:
+        * editing/RemoveNodeCommand.cpp:
+        * editing/ReplaceNodeWithSpanCommand.cpp:
+        * editing/ReplaceSelectionCommand.cpp:
+        * editing/SpellChecker.cpp:
+        * editing/TextIterator.cpp:
+        * editing/TypingCommand.cpp:
+        * editing/VisiblePosition.cpp:
+        * editing/VisibleSelection.cpp:
+        * editing/VisibleUnits.cpp:
+        * editing/cocoa/DataDetection.mm:
+        * editing/cocoa/EditorCocoa.mm:
+        * editing/htmlediting.cpp: Removed.
+        * editing/htmlediting.h: Removed.
+        * editing/ios/EditorIOS.mm:
+        * editing/mac/DictionaryLookup.mm:
+        * editing/mac/EditorMac.mm:
+        * editing/markup.cpp:
+        * html/HTMLTextFormControlElement.cpp:
+        * inspector/InspectorDOMAgent.cpp:
+        * page/DOMSelection.cpp:
+        * page/DragController.cpp:
+        * page/EventHandler.cpp:
+        * page/FocusController.cpp:
+        * page/Frame.cpp:
+        * platform/ios/PasteboardIOS.mm:
+        * platform/mac/PasteboardMac.mm:
+        * rendering/RenderBox.cpp:
+        * rendering/RenderObject.cpp:
+
+2017-03-02  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: Should be able to push nodes in an iframe subtree to the frontend
+        https://bugs.webkit.org/show_bug.cgi?id=169086
+
+        Reviewed by Joseph Pecoraro.
+
+        Test: inspector/dom/push-node-by-path-to-frontend.html
+
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::nodeForPath):
+        During top-down document traversal, descend into content document nodes
+        when visiting an HTMLFrameOwnerElement.
+
+2017-03-02  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r213274.
+
+        This change caused flakiness with LayoutTest memory/memory-
+        pressure-simulation.html
+
+        Reverted changeset:
+
+        "Don't keep dead resources in MemoryCache while under memory
+        pressure."
+        https://bugs.webkit.org/show_bug.cgi?id=169070
+        http://trac.webkit.org/changeset/213274
+
+2017-03-02  Jiewen Tan  <jiewen_tan@apple.com>
+
+        WebCrypto API support for AES-GCM
+        https://bugs.webkit.org/show_bug.cgi?id=157175
+        <rdar://problem/27311691>
+
+        Reviewed by Brent Fulgham.
+
+        This patch adds support for AES-GCM. Operations of AES-GCM include: encrypt, decrypt, generateKey,
+        importKey, exportKey, wrapKey, and unwrapKey. https://www.w3.org/TR/WebCryptoAPI/#aes-gcm
+
+        Tests: crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
+               crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
+               crypto/subtle/aes-gcm-generate-export-raw-key.html
+               crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
+               crypto/subtle/aes-gcm-generate-key.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-128.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-192.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-256.html
+               crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
+               crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
+               crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
+               crypto/subtle/aes-gcm-import-key-decrypt.html
+               crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
+               crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
+               crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
+               crypto/subtle/aes-gcm-import-key-encrypt.html
+               crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
+               crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
+               crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
+               crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
+               crypto/subtle/aes-gcm-import-raw-key.html
+               crypto/workers/subtle/aes-gcm-import-key-decrypt.html
+               crypto/workers/subtle/aes-gcm-import-key-encrypt.html
+               crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
+               crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * PlatformGTK.cmake:
+        * PlatformMac.cmake:
+        Add CryptoAlgorithmAES_CFBMac.cpp as well.
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::normalizeCryptoAlgorithmParameters):
+        Add support for AES-GCM.
+        * crypto/CommonCryptoUtilities.h:
+        Include SPI header for AES-GCM support. We have a mismatch SPI between different OS version.
+        Therefore, a guardian is placed.
+        * crypto/CryptoAlgorithmParameters.h:
+        * crypto/algorithms/CryptoAlgorithmAES_GCM.cpp: Added.
+        (WebCore::usagesAreInvalidForCryptoAlgorithmAES_GCM):
+        (WebCore::tagLengthIsValid):
+        (WebCore::CryptoAlgorithmAES_GCM::create):
+        (WebCore::CryptoAlgorithmAES_GCM::identifier):
+        (WebCore::CryptoAlgorithmAES_GCM::encrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::decrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::generateKey):
+        (WebCore::CryptoAlgorithmAES_GCM::importKey):
+        (WebCore::CryptoAlgorithmAES_GCM::exportKey):
+        * crypto/algorithms/CryptoAlgorithmAES_GCM.h: Added.
+        * crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp: Added.
+        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+        * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp: Added.
+        (WebCore::encryptAES_GCM):
+        (WebCore::decyptAES_GCM):
+        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+        * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
+        (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
+        * crypto/parameters/AesGcmParams.idl: Added.
+        * crypto/parameters/CryptoAlgorithmAesGcmParams.h: Added.
+
+2017-03-02  Andy Estes  <aestes@apple.com>
+
+        Add support for canvas.toBlob
+        https://bugs.webkit.org/show_bug.cgi?id=148878
+        <rdar://problem/22590406>
+
+        Reviewed by Tim Horton.
+
+        These tests now pass:
+        imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html
+        imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * fileapi/BlobCallback.cpp: Added.
+        (WebCore::BlobCallback::scheduleCallback):
+        * fileapi/BlobCallback.h: Added.
+        (WebCore::BlobCallback::~BlobCallback):
+        * fileapi/BlobCallback.idl: Added.
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::toBlob):
+        * html/HTMLCanvasElement.h:
+        * html/HTMLCanvasElement.idl:
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::writeFunction):
+        (WebCore::encodeImage):
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::data):
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        (WebCore::ImageBuffer::toCGImage):
+        (WebCore::cgImage):
+        (WebCore::dataURL):
+        * platform/graphics/gtk/ImageBufferGtk.cpp:
+        (WebCore::ImageBuffer::toDataURL):
+        (WebCore::ImageBuffer::toData):
+        * platform/graphics/win/ImageBufferDirect2D.cpp:
+        (WebCore::ImageBuffer::toData):
+
+2017-03-02  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Migrate font-stretch to use fixed-point values
+        https://bugs.webkit.org/show_bug.cgi?id=169107
+
+        Reviewed by Dean Jackson.
+
+        There are a few benefits of using fixed-point values:
+        - Not all of the entropy of a float is necessary for font selection. In particular, values are
+        expected to stay between around -1000 to 1000, and only need to have a few fractional bits.
+        Therefore, the values can be represented by 16-bit fixed point numbers, which includes one sign
+        bit and two fractional bits. This is smaller than the 32-bit floating point numbers we were
+        using, which means FontDescription can be slimmed down. This becomes even more important when
+        the rest of the variation font properties are implemented, since those will use these fixed-
+        point values too.
+        - Fixed point values have a larger distance between adjacent representable values, which means
+        there are more collisions, which means our cache hit rates are higher.
+
+        No new tests because there is no behavior change.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::fontStretchFromStyle):
+        * css/StyleBuilderConverter.h:
+        (WebCore::StyleBuilderConverter::convertFontStretch):
+        * platform/graphics/FontCache.h:
+        (WebCore::FontDescriptionKey::FontDescriptionKey):
+        * platform/graphics/FontDescription.h:
+        (WebCore::FontDescription::stretch):
+        (WebCore::FontDescription::setStretch):
+        (WebCore::FontCascadeDescription::initialStretch):
+        * platform/graphics/cocoa/FontCacheCoreText.cpp:
+        (WebCore::defaultFontSelectionValues):
+        (WebCore::preparePlatformFont):
+        (WebCore::FontDatabase::InstalledFont::InstalledFont):
+        (WebCore::FontDatabase::InstalledFontFamily::expand):
+        (WebCore::FontDatabase::capabilitiesForFontDescriptor):
+        (WebCore::FontDatabase::stretchThreshold):
+        (WebCore::FontDatabase::italicThreshold):
+        (WebCore::FontDatabase::weightThreshold):
+        (WebCore::findClosestStretch):
+        (WebCore::filterStretch):
+        (WebCore::findClosestStyle):
+        (WebCore::filterStyle):
+        (WebCore::findClosestWeight):
+        (WebCore::filterWeight):
+        (WebCore::computeTargetWeight):
+        (WebCore::findClosestFont):
+        (WebCore::platformFontLookupWithFamily):
+        (WebCore::fontWithFamily):
+        (WebCore::defaultVariationValues): Deleted.
+        (WebCore::FontDatabase::Range::Range): Deleted.
+        (WebCore::FontDatabase::Range::isValid): Deleted.
+        (WebCore::FontDatabase::Range::expand): Deleted.
+        (WebCore::FontDatabase::Range::includes): Deleted.
+        (): Deleted.
+        * platform/text/TextFlags.h:
+        (WebCore::FontSelectionValue::FontSelectionValue):
+        (WebCore::FontSelectionValue::operator float):
+        (WebCore::FontSelectionValue::operator+):
+        (WebCore::FontSelectionValue::operator-):
+        (WebCore::FontSelectionValue::operator*):
+        (WebCore::FontSelectionValue::operator/):
+        (WebCore::FontSelectionValue::operator==):
+        (WebCore::FontSelectionValue::operator!=):
+        (WebCore::FontSelectionValue::operator<):
+        (WebCore::FontSelectionValue::operator<=):
+        (WebCore::FontSelectionValue::operator>):
+        (WebCore::FontSelectionValue::operator>=):
+        (WebCore::FontSelectionValue::rawValue):
+        (WebCore::FontSelectionRange::isValid):
+        (WebCore::FontSelectionRange::expand):
+        (WebCore::FontSelectionRange::includes):
+        (WebCore::FontSelectionCapabilities::expand):
+
+2017-03-02  Alex Christensen  <achristensen@webkit.org>
+
+        Modernize ContentExtensionParser
+        https://bugs.webkit.org/show_bug.cgi?id=169106
+
+        Reviewed by Andy Estes.
+
+        We were returning std::error_code and passing the return value as a parameter reference.
+        because we wrote this code before we had WTF::Expected.
+
+        No change in behavior, verified by many API tests.
+
+        * contentextensions/ContentExtensionCompiler.cpp:
+        (WebCore::ContentExtensions::compileRuleList):
+        * contentextensions/ContentExtensionParser.cpp:
+        (WebCore::ContentExtensions::getDomainList):
+        (WebCore::ContentExtensions::loadTrigger):
+        (WebCore::ContentExtensions::loadAction):
+        (WebCore::ContentExtensions::loadRule):
+        (WebCore::ContentExtensions::loadEncodedRules):
+        (WebCore::ContentExtensions::parseRuleList):
+        * contentextensions/ContentExtensionParser.h:
+        * contentextensions/ContentExtensionRule.cpp:
+        (WebCore::ContentExtensions::ContentExtensionRule::ContentExtensionRule):
+        * contentextensions/ContentExtensionRule.h:
+
+2017-03-02  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r213301.
+
+        This change broke internal builds.
+
+        Reverted changeset:
+
+        "WebCrypto API support for AES-GCM"
+        https://bugs.webkit.org/show_bug.cgi?id=157175
+        http://trac.webkit.org/changeset/213301
+
+2017-03-02  Aakash Jain  <aakash_jain@apple.com>
+
+        Move stringMatchesWildcardString from WebKit2 to WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=169065
+
+        Reviewed by Alexey Proskuryakov.
+
+        * WebCore.xcodeproj/project.pbxproj: Added StringUtilities.h and StringUtilities.mm
+        * PlatformMac.cmake: Added StringUtilities.mm
+        * platform/mac/StringUtilities.h: Added.
+        * platform/mac/StringUtilities.mm: Added.
+        (WebCore::wildcardRegexPatternString): Added.
+        (WebCore::stringMatchesWildcardString): Added.
+
+2017-02-28  Matt Rajca  <mrajca@apple.com>
+
+        Media: send "did interfere with playback" events when the user pauses an autoplaying element
+        https://bugs.webkit.org/show_bug.cgi?id=169006
+
+        Reviewed by Alex Christensen.
+
+        Added API tests.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::pauseInternal):
+
+2017-03-02  Chris Dumez  <cdumez@apple.com>
+
+        We should prevent load of subframes inserted during FrameTree deconstruction
+        https://bugs.webkit.org/show_bug.cgi?id=169095
+
+        Reviewed by Brent Fulgham.
+
+        When deconstructing the FrameTree, we fire the unload event in each subframe.
+        Such unload event handler may insert a new frame, we would previously load
+        such new frame which was unsafe as we would end up with an attached subframe
+        on a detached tree. To address the issue, we prevent new subframes from loading
+        while deconstructing the FrameTree and firing the unload events. This new
+        behavior is consistent with Chrome and should therefore be safe from a
+        compatibility standpoint.
+
+        Test: fast/frames/insert-frame-unload-handler.html
+
+        * dom/ContainerNodeAlgorithms.cpp:
+        (WebCore::disconnectSubframes):
+        Update SubframeLoadingDisabler call site now that the constructor takes in
+        a pointer instead of a reference.
+
+        * html/HTMLFrameOwnerElement.h:
+        (WebCore::SubframeLoadingDisabler::SubframeLoadingDisabler):
+        (WebCore::SubframeLoadingDisabler::~SubframeLoadingDisabler):
+        Update SubframeLoadingDisabler constructor to take in a pointer instead
+        of a reference, for convenience.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::detachChildren):
+        Prevent loads in subframes while detaching the subframes. It would be unsafe
+        as we copy the list of frames before iterating to fire the unload events.
+        Therefore, newly inserted frames would not get unloaded.
+
+2017-03-02  Dave Hyatt  <hyatt@apple.com>
+
+        flex-basis should be 0% (not 0px) when omitted
+        https://bugs.webkit.org/show_bug.cgi?id=169100
+        rdar://problem/30429154
+
+        Reviewed by Dean Jackson.
+
+        Covered by existing tests.
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::CSSPropertyParser::consumeFlex):
+
+2017-02-22  Jiewen Tan  <jiewen_tan@apple.com>
+
+        WebCrypto API support for AES-GCM
+        https://bugs.webkit.org/show_bug.cgi?id=157175
+        <rdar://problem/27311691>
+
+        Reviewed by Brent Fulgham.
+
+        This patch adds support for AES-GCM. Operations of AES-GCM include: encrypt, decrypt, generateKey,
+        importKey, exportKey, wrapKey, and unwrapKey. https://www.w3.org/TR/WebCryptoAPI/#aes-gcm
+
+        Tests: crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
+               crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
+               crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
+               crypto/subtle/aes-gcm-generate-export-raw-key.html
+               crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
+               crypto/subtle/aes-gcm-generate-key.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-128.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-192.html
+               crypto/subtle/aes-gcm-import-jwk-key-length-256.html
+               crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
+               crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
+               crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
+               crypto/subtle/aes-gcm-import-key-decrypt.html
+               crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
+               crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
+               crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
+               crypto/subtle/aes-gcm-import-key-encrypt.html
+               crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
+               crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
+               crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
+               crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
+               crypto/subtle/aes-gcm-import-raw-key.html
+               crypto/workers/subtle/aes-gcm-import-key-decrypt.html
+               crypto/workers/subtle/aes-gcm-import-key-encrypt.html
+               crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
+               crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * PlatformGTK.cmake:
+        * PlatformMac.cmake:
+        Add CryptoAlgorithmAES_CFBMac.cpp as well.
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::normalizeCryptoAlgorithmParameters):
+        Add support for AES-GCM.
+        * crypto/CommonCryptoUtilities.h:
+        Include SPI header for AES-GCM support.
+        * crypto/CryptoAlgorithmParameters.h:
+        * crypto/algorithms/CryptoAlgorithmAES_GCM.cpp: Added.
+        (WebCore::usagesAreInvalidForCryptoAlgorithmAES_GCM):
+        (WebCore::tagLengthIsValid):
+        (WebCore::CryptoAlgorithmAES_GCM::create):
+        (WebCore::CryptoAlgorithmAES_GCM::identifier):
+        (WebCore::CryptoAlgorithmAES_GCM::encrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::decrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::generateKey):
+        (WebCore::CryptoAlgorithmAES_GCM::importKey):
+        (WebCore::CryptoAlgorithmAES_GCM::exportKey):
+        * crypto/algorithms/CryptoAlgorithmAES_GCM.h: Added.
+        * crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp: Added.
+        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+        * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp: Added.
+        (WebCore::encryptAES_GCM):
+        (WebCore::decyptAES_GCM):
+        (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+        (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+        * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
+        (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
+        * crypto/parameters/AesGcmParams.idl: Added.
+        * crypto/parameters/CryptoAlgorithmAesGcmParams.h: Added.
+
+2017-03-02  Alex Christensen  <achristensen@webkit.org>
+
+        Continue enabling WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=169056
+
+        Reviewed by Jon Lee.
+
+        * Configurations/FeatureDefines.xcconfig:
+
+2017-03-02  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r213281.
+
+        This change caused API test WebKit2.UserMediaBasic to time
+        out.
+
+        Reverted changeset:
+
+        "[MediaStream] UIClient may not be notified of capture state
+        change when leaving a page"
+        https://bugs.webkit.org/show_bug.cgi?id=169014
+        http://trac.webkit.org/changeset/213281
+
 2017-03-02  Jon Lee  <jonlee@apple.com>
 
         Improve consistency of captions rendering on Mac