| 2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add an experimental feature flag for viewport "min-device-width" |
| https://bugs.webkit.org/show_bug.cgi?id=185050 |
| <rdar://problem/39624038> |
| |
| Reviewed by Tim Horton. |
| |
| Add MinDeviceWidthEnabled as a new runtime-enabled feature. |
| |
| * dom/ViewportArguments.cpp: |
| (WebCore::setViewportFeature): |
| |
| Gate the parsing of "min-device-width" on the runtime-enabled feature being flipped on. |
| |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setMinDeviceWidthEnabled): |
| (WebCore::RuntimeEnabledFeatures::minDeviceWidthEnabled const): |
| |
| 2018-04-27 Simon Fraser <simon.fraser@apple.com> |
| |
| Make color-filter transform gradient colors |
| https://bugs.webkit.org/show_bug.cgi?id=185080 |
| |
| Reviewed by Zalan Bujtas. |
| |
| In CSSGradientValue::computeStops(), transform the color of each gradient color |
| stop through the color filter. Having a color filter makes the gradient uncacheable. |
| |
| Color filters can add alpha, so we also have to fix up CSSGradientValue::knownToBeOpaque() |
| to take a RenderStyle and convert the colors before testing opaqueness. Clean up some related |
| functions to take const RenderStyle&. |
| |
| Test: css3/color-filters/color-filter-gradients.html |
| |
| * css/CSSCrossfadeValue.cpp: |
| (WebCore::subimageKnownToBeOpaque): |
| * css/CSSFilterImageValue.cpp: |
| (WebCore::CSSFilterImageValue::knownToBeOpaque const): |
| * css/CSSFilterImageValue.h: |
| * css/CSSGradientValue.cpp: |
| (WebCore::CSSGradientValue::image): |
| (WebCore::CSSGradientValue::computeStops): |
| (WebCore::CSSGradientValue::knownToBeOpaque const): |
| (WebCore::CSSLinearGradientValue::createGradient): |
| (WebCore::CSSRadialGradientValue::createGradient): |
| * css/CSSGradientValue.h: |
| * css/CSSImageGeneratorValue.cpp: |
| (WebCore::CSSImageGeneratorValue::knownToBeOpaque const): |
| * css/CSSImageValue.cpp: |
| (WebCore::CSSImageValue::knownToBeOpaque const): |
| * css/CSSImageValue.h: |
| |
| 2018-04-26 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix color-filter to apply to text decorations |
| https://bugs.webkit.org/show_bug.cgi?id=185068 |
| <rdar://problem/39782136> |
| |
| Reviewed by Alan Bujtas. |
| |
| Transform the colors of text shadows, and the shadows of text-decorations through |
| the color-filter. |
| |
| Rather than clone the ShadowData stored on TextPainter and TextDecorationPainter |
| (which would have awkward ownership implications) we pass the color filters through |
| and just map the color through it before painting. |
| |
| Re-order the members of TextPainter a little to optimize padding. |
| |
| Also fix a bug where FilterOperations::transformColor() could transform an invalid |
| color to a valid one; we never want this. |
| |
| Tests: css3/color-filters/color-filter-text-decoration-shadow.html |
| css3/color-filters/color-filter-text-shadow.html |
| |
| * platform/graphics/filters/FilterOperations.cpp: |
| (WebCore::FilterOperations::transformColor const): |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::paintMarkedTextForeground): |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): |
| * rendering/TextDecorationPainter.cpp: |
| (WebCore::TextDecorationPainter::paintTextDecoration): |
| * rendering/TextDecorationPainter.h: |
| (WebCore::TextDecorationPainter::setTextShadow): |
| (WebCore::TextDecorationPainter::setShadowColorFilter): |
| (WebCore::TextDecorationPainter::addTextShadow): Deleted. |
| * rendering/TextPainter.cpp: |
| (WebCore::ShadowApplier::ShadowApplier): |
| (WebCore::TextPainter::paintTextWithShadows): |
| (WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded): Simplify the logic that only paints the shadow |
| on the first iteration. |
| (WebCore::TextPainter::paintRange): |
| * rendering/TextPainter.h: |
| (WebCore::TextPainter::setShadowColorFilter): |
| * rendering/svg/SVGInlineTextBox.cpp: |
| (WebCore::SVGInlineTextBox::paintTextWithShadows): |
| |
| 2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Rename minimumLayoutSize to viewLayoutSize |
| https://bugs.webkit.org/show_bug.cgi?id=185050 |
| <rdar://problem/39624038> |
| |
| Reviewed by Tim Horton. |
| |
| See WebKit/ChangeLog for more information. No change in behavior. |
| |
| * page/ViewportConfiguration.cpp: |
| (WebCore::ViewportConfiguration::ViewportConfiguration): |
| (WebCore::ViewportConfiguration::setViewLayoutSize): |
| |
| Remove a FIXME comment that is addressed by this refactoring. |
| |
| (WebCore::ViewportConfiguration::shouldOverrideDeviceWidthWithMinDeviceWidth const): |
| (WebCore::ViewportConfiguration::initialScaleFromSize const): |
| (WebCore::ViewportConfiguration::minimumScale const): |
| (WebCore::ViewportConfiguration::updateMinimumLayoutSize): |
| (WebCore::ViewportConfiguration::setMinimumLayoutSize): Deleted. |
| * page/ViewportConfiguration.h: |
| (WebCore::ViewportConfiguration::viewLayoutSize const): |
| (WebCore::ViewportConfiguration::viewSize const): Deleted. |
| |
| 2018-04-27 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Formatting contexts should create floating states. |
| https://bugs.webkit.org/show_bug.cgi?id=185032 |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch implements the logic for sharing floating states across multiple formatting contexts. |
| At this point this is mostly about inline formatting contexts. They either create a new floating state |
| or inherit it from the parent formatting context. |
| |
| * layout/FloatingState.cpp: |
| (WebCore::Layout::FloatingState::FloatingState): |
| * layout/FloatingState.h: |
| (WebCore::Layout::FloatingState::create): |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::FormattingContext): |
| * layout/FormattingContext.h: |
| (WebCore::Layout::FormattingContext::layoutContext const): |
| * layout/FormattingState.cpp: |
| (WebCore::Layout::FormattingState::FormattingState): |
| * layout/FormattingState.h: |
| (WebCore::Layout::FormattingState::floatingState const): |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::updateLayout): |
| (WebCore::Layout::LayoutContext::formattingStateForBox const): |
| (WebCore::Layout::LayoutContext::establishedFormattingState): |
| (WebCore::Layout::LayoutContext::formattingContext): |
| (WebCore::Layout::LayoutContext::formattingState): Deleted. |
| * layout/LayoutContext.h: |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::BlockFormattingContext): |
| (WebCore::Layout::BlockFormattingContext::createFormattingState const): |
| (WebCore::Layout::BlockFormattingContext::createOrFindFloatingState const): |
| (WebCore::Layout::BlockFormattingContext::formattingState const): Deleted. |
| * layout/blockformatting/BlockFormattingContext.h: |
| * layout/blockformatting/BlockFormattingState.cpp: |
| (WebCore::Layout::BlockFormattingState::BlockFormattingState): |
| * layout/blockformatting/BlockFormattingState.h: |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::InlineFormattingContext): |
| (WebCore::Layout::InlineFormattingContext::createFormattingState const): |
| (WebCore::Layout::InlineFormattingContext::createOrFindFloatingState const): |
| (WebCore::Layout::InlineFormattingContext::formattingState const): Deleted. |
| * layout/inlineformatting/InlineFormattingContext.h: |
| * layout/inlineformatting/InlineFormattingState.cpp: |
| (WebCore::Layout::InlineFormattingState::InlineFormattingState): |
| * layout/inlineformatting/InlineFormattingState.h: |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::formattingContextRoot const): |
| * layout/layouttree/LayoutBox.h: |
| |
| 2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Add a mechanism to override default viewport behaviors in extra zoom mode |
| https://bugs.webkit.org/show_bug.cgi?id=185050 |
| <rdar://problem/39624038> |
| |
| Reviewed by Tim Horton. |
| |
| Currently, in extra zoom mode, there's no way for web pages to opt out of the default viewport behaviors |
| (namely, laying out at a larger width and shrinking to fit) when the web view is very tall and narrow. This |
| patch adds a new experimental viewport attribute, "min-device-width", that can be used to prevent WebKit from |
| automatically clamping the web view width to a greater value for the device width in this scenario. |
| |
| Note that after this patch, logic that plumbs a minimumLayoutSize from WKWebView to the viewport configuration |
| will need to be renamed to reflect that this size is no longer the minimum layout size, but rather, the view |
| size that is used for viewport device dimensions by default. This refactoring will be done in a followup part. |
| |
| See per-method comments below for more detail. |
| |
| Test: fast/viewport/extrazoom/viewport-change-min-device-width.html |
| |
| * dom/ViewportArguments.cpp: |
| (WebCore::setViewportFeature): |
| (WebCore::operator<<): |
| * dom/ViewportArguments.h: |
| |
| Removes `m_forceHorizontalShrinkToFit` (more detail below). |
| |
| * page/ViewportConfiguration.cpp: |
| (WebCore::computedMinDeviceWidth): |
| (WebCore::ViewportConfiguration::ViewportConfiguration): |
| (WebCore::ViewportConfiguration::setMinimumLayoutSize): |
| |
| Instead of directly setting the minimum layout size, setMinimumLayoutSize now first sets the view size (i.e. the |
| size we use for `device-width` in the viewport meta tag), and then updates the minimum layout size. |
| |
| (WebCore::ViewportConfiguration::shouldOverrideDeviceWidthWithMinDeviceWidth const): |
| |
| Replaces `m_forceHorizontalShrinkToFit`. Whether or not we shrink to fit is now determined by whether the |
| min-device-width attribute is actively clamping the width of the view. |
| |
| (WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const): |
| (WebCore::ViewportConfiguration::shouldIgnoreScalingConstraintsRegardlessOfContentSize const): |
| (WebCore::ViewportConfiguration::updateMinimumLayoutSize): |
| |
| Computes and sets the minimum layout size using the view size, taking the minimum device width into account if |
| needed. |
| |
| (WebCore::ViewportConfiguration::description const): |
| (WebCore::ViewportConfiguration::setForceHorizontalShrinkToFit): Deleted. |
| * page/ViewportConfiguration.h: |
| |
| 2018-04-27 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Formatting contexts should take const Box& |
| https://bugs.webkit.org/show_bug.cgi?id=185031 |
| |
| Reviewed by Sam Weinig. |
| |
| The formatting root boxes are supposed to be all const. The only reason why |
| they are not is because WeakPtr<> does not support const objects yet. |
| Use const_cast instead (remove it when WeakPtr<> gains const support). |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::FormattingContext): |
| * layout/FormattingContext.h: |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::LayoutContext): |
| (WebCore::Layout::LayoutContext::formattingContext): |
| * layout/LayoutContext.h: |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::BlockFormattingContext): |
| * layout/blockformatting/BlockFormattingContext.h: |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::InlineFormattingContext): |
| * layout/inlineformatting/InlineFormattingContext.h: |
| |
| 2018-04-27 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Add layout tree iterators. |
| https://bugs.webkit.org/show_bug.cgi?id=185058 |
| |
| Reviewed by Antti Koivisto. |
| |
| They work exactly like the renderer tree iterators. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * layout/layouttree/LayoutAncestorIterator.h: Added. |
| (WebCore::Layout::LayoutAncestorIterator<T>::LayoutAncestorIterator): |
| (WebCore::Layout::LayoutAncestorIterator<T>::operator): |
| (WebCore::Layout::LayoutAncestorIteratorAdapter<T>::LayoutAncestorIteratorAdapter): |
| (WebCore::Layout::LayoutAncestorIteratorAdapter<T>::begin const): |
| (WebCore::Layout::LayoutAncestorIteratorAdapter<T>::end const): |
| (WebCore::Layout::LayoutAncestorIteratorAdapter<T>::first const): |
| (WebCore::Layout::ancestorsOfType): |
| (WebCore::Layout::lineageOfType): |
| * layout/layouttree/LayoutBox.cpp: |
| * layout/layouttree/LayoutChildIterator.h: Added. |
| (WebCore::Layout::LayoutChildtIterator<T>::LayoutChildtIterator): |
| (WebCore::Layout::LayoutChildtIterator<T>::operator): |
| (WebCore::Layout::LayoutChildtIteratorAdapter<T>::LayoutChildtIteratorAdapter): |
| (WebCore::Layout::LayoutChildtIteratorAdapter<T>::begin const): |
| (WebCore::Layout::LayoutChildtIteratorAdapter<T>::end const): |
| (WebCore::Layout::LayoutChildtIteratorAdapter<T>::first const): |
| (WebCore::Layout::LayoutChildtIteratorAdapter<T>::last const): |
| (WebCore::Layout::childrenOfType): |
| * layout/layouttree/LayoutIterator.h: Added. |
| (WebCore::Layout::isLayoutBoxOfType): |
| (WebCore::Layout::Traversal::firstChild): |
| (WebCore::Layout::Traversal::lastChild): |
| (WebCore::Layout::Traversal::nextSibling): |
| (WebCore::Layout::Traversal::previousSibling): |
| (WebCore::Layout::Traversal::findAncestorOfType): |
| (WebCore::Layout::Traversal::nextAncestorSibling): |
| (WebCore::Layout::Traversal::nextWithin): |
| (WebCore::Layout::Traversal::firstWithin): |
| (WebCore::Layout::Traversal::next): |
| (WebCore::Layout::LayoutIterator<T>::LayoutIterator): |
| (WebCore::Layout::LayoutIterator<T>::traverseNextSibling): |
| (WebCore::Layout::LayoutIterator<T>::traverseNext): |
| (WebCore::Layout::LayoutIterator<T>::traversePreviousSibling): |
| (WebCore::Layout::LayoutIterator<T>::traverseAncestor): |
| (WebCore::Layout::LayoutIterator<T>::operator const): |
| (WebCore::Layout:: const): |
| (WebCore::Layout::= const): |
| |
| 2018-04-27 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r231089. |
| https://bugs.webkit.org/show_bug.cgi?id=185071 |
| |
| Broke and made crash some WPE EME tests (Requested by calvaris |
| on #webkit). |
| |
| Reverted changeset: |
| |
| "[EME][GStreamer] Move the decryptor from AppendPipeline to |
| PlaybackPipeline." |
| https://bugs.webkit.org/show_bug.cgi?id=181855 |
| https://trac.webkit.org/changeset/231089 |
| |
| 2018-04-27 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [EME][GStreamer] Move the decryptor from AppendPipeline to PlaybackPipeline. |
| https://bugs.webkit.org/show_bug.cgi?id=181855 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The goal of this move is to handle the limitation of SVP (Secure Video Path) memory size. |
| |
| When the decryptor is in the AppendPipeline and we use SVP, we buffer in MediaSource queue |
| the decrypted GstBuffers that are in SVP memory. |
| This behavior cause an out-of-memory error, because we are limited in SVP memory size. |
| |
| By moving the decryptor in PlaybackPipeline, we avoid to buffer the decrypted GstBuffers |
| which use the SVP memory and we buffer the encrypted GstBuffers that are in system memory. |
| |
| This new architecture also allows to start the buffering before obtaining the DRM license |
| and it makes easier to manage dynamic change of the license or Key. |
| |
| The decryptor is auto plugged by GStreamer playbin in PlaybackPipeline. |
| |
| SVP: Secure Video Path also named trusted or protected video path, it is a memory which is |
| protected by a hardware access control engine, it is not accessible to other unauthorised |
| software or hardware components. |
| |
| Tests: |
| media/encrypted-media/clearKey/clearKey-cenc-audio-playback-mse.html |
| media/encrypted-media/clearKey/clearKey-cenc-video-playback-mse.html |
| |
| * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: |
| (webkitMediaCommonEncryptionDecryptSinkEventHandler): |
| * platform/graphics/gstreamer/mse/AppendPipeline.cpp: |
| (WebCore::dumpAppendState): |
| (WebCore::AppendPipeline::AppendPipeline): |
| (WebCore::AppendPipeline::handleNeedContextSyncMessage): |
| (WebCore::AppendPipeline::handleAppsrcNeedDataReceived): |
| (WebCore::AppendPipeline::setAppendState): |
| (WebCore::AppendPipeline::parseDemuxerSrcPadCaps): |
| (WebCore::AppendPipeline::appsinkNewSample): |
| (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread): |
| (WebCore::AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread): |
| (WebCore::appendPipelineElementMessageCallback): Deleted. |
| (WebCore::AppendPipeline::handleElementMessage): Deleted. |
| (WebCore::AppendPipeline::dispatchPendingDecryptionStructure): Deleted. |
| (WebCore::AppendPipeline::dispatchDecryptionStructure): Deleted. |
| * platform/graphics/gstreamer/mse/AppendPipeline.h: |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithInstance): |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| |
| 2018-04-27 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [EME][GStreamer] Add a new message "decrypt-key-needed" send from the decryptor to the application. |
| https://bugs.webkit.org/show_bug.cgi?id=181858 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Add a new message "decrypt-key-needed" that the decryptor can send when it doesn't have an available key. |
| This message should be handled by the application in order to dispatch or send the key to the decryptor. |
| This patch is a preparation for the patch 181855. |
| With the patch 181855, the decryptor will be in the PlaybackPipeline instead of AppendPipeline, thus we can |
| get the DRM license or key before to instantiate or load the decryptor plugin in PlaybackPipeline. |
| When the decryptor plugin is instantiated or loaded, it should able to ask the application to resend |
| the DRM license or key by using this new message "decrypt-key-needed". |
| |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::dispatchCDMInstance): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: |
| (webkitMediaCommonEncryptionDecryptTransformInPlace): |
| |
| 2018-04-26 Justin Fan <justin_fan@apple.com> |
| |
| tex[Sub]Image2D slow when passing in a <canvas>, faster with ImageData. |
| https://bugs.webkit.org/show_bug.cgi?id=184843 |
| <rdar://problem/34898868> |
| |
| Reviewed by Simon Fraser. |
| |
| On certain test pages passing 2d canvas objects to gl.texSubImage2D, we spend significant time doing an alpha unpremultiplication in FormatConverter::convert on a single thread. |
| For now, I am introducing use of the Accelerate framework to do canvas alpha unpremultiplication, specifically for RGBA8 > RGBA8. |
| This improves this rendering path by a factor of ~4. The rest of FormatConverter could use similar improvements; filed https://bugs.webkit.org/show_bug.cgi?id=185064 for these. |
| |
| * platform/graphics/FormatConverter.cpp: |
| (WebCore::FormatConverter::convert): |
| |
| 2018-04-26 Simon Fraser <simon.fraser@apple.com> |
| |
| Implement rendering support for the color-filter CSS property |
| https://bugs.webkit.org/show_bug.cgi?id=185047 |
| rdar://problem/39664967 |
| |
| Reviewed by Tim Horton. |
| |
| The color-filter property transforms CSS colors just before painting. To support this, |
| add to RenderStyle colorByApplyingColorFilter() and visitedDependentColorWithColorFilter(). |
| At most calls sites that transform colors for rendering, replace calls to |
| visitedDependentColor() with visitedDependentColorWithColorFilter(). The few locations |
| that don't use visitedDependentColor() (e.g. for shadows) call colorByApplyingColorFilter(). |
| |
| Color transformation is implemented via a new virtual function on FilterOperation; |
| BasicColorMatrixFilterOperation overrides this to use a new ColorMatrix class to |
| do color math, and BasicComponentTransferFilterOperation to do the equivalent of component |
| transfer operations. The math in both cases matches that for SVG filters, with the exception |
| that color components are stored as floats through multiple filters and then mapped to |
| normal 0-255 color components at the end. |
| |
| Tests: css3/color-filters/color-filter-backgrounds-borders.html |
| css3/color-filters/color-filter-box-shadow.html |
| css3/color-filters/color-filter-brightness.html |
| css3/color-filters/color-filter-color-property-list-item.html |
| css3/color-filters/color-filter-color-property.html |
| css3/color-filters/color-filter-color-text-decorations.html |
| css3/color-filters/color-filter-column-rule.html |
| css3/color-filters/color-filter-contrast.html |
| css3/color-filters/color-filter-current-color.html |
| css3/color-filters/color-filter-filter-list.html |
| css3/color-filters/color-filter-grayscale.html |
| css3/color-filters/color-filter-hue-rotate.html |
| css3/color-filters/color-filter-inherits.html |
| css3/color-filters/color-filter-invert.html |
| css3/color-filters/color-filter-opacity.html |
| css3/color-filters/color-filter-outline.html |
| css3/color-filters/color-filter-saturate.html |
| css3/color-filters/color-filter-sepia.html |
| css3/color-filters/color-filter-text-emphasis.html |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::adjustInnerTextStyle const): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::documentBackgroundColor const): |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::ColorMatrix::ColorMatrix): |
| (WebCore::ColorMatrix::makeIdentity): |
| (WebCore::ColorMatrix::grayscaleMatrix): |
| (WebCore::ColorMatrix::saturationMatrix): |
| (WebCore::ColorMatrix::hueRotateMatrix): |
| (WebCore::ColorMatrix::sepiaMatrix): |
| (WebCore::ColorMatrix::transformColorComponents const): |
| * platform/graphics/ColorUtilities.h: |
| * platform/graphics/filters/FilterOperation.cpp: |
| (WebCore::BasicColorMatrixFilterOperation::transformColor const): |
| (WebCore::BasicComponentTransferFilterOperation::transformColor const): |
| * platform/graphics/filters/FilterOperation.h: |
| (WebCore::FilterOperation::transformColor const): |
| * platform/graphics/filters/FilterOperations.cpp: |
| (WebCore::FilterOperations::transformColor const): |
| * platform/graphics/filters/FilterOperations.h: |
| * rendering/BorderEdge.cpp: |
| (WebCore::BorderEdge::getBorderEdgeInfo): |
| * rendering/EllipsisBox.cpp: |
| (WebCore::EllipsisBox::paint): |
| (WebCore::EllipsisBox::paintSelection): |
| * rendering/InlineFlowBox.cpp: |
| (WebCore::InlineFlowBox::paintBoxDecorations): |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::paintMarkedTextForeground): |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): |
| (WebCore::InlineTextBox::paintCompositionUnderline const): |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::paintRootBoxFillLayers): |
| (WebCore::RenderBox::paintBackground): |
| (WebCore::RenderBox::getBackgroundPaintedExtent const): |
| (WebCore::RenderBox::backgroundIsKnownToBeOpaqueInRect const): |
| (WebCore::RenderBox::backgroundHasOpaqueTopLayer const): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::applyBoxShadowForBackground): |
| (WebCore::RenderBoxModelObject::paintFillLayerExtended): |
| (WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const): |
| (WebCore::RenderBoxModelObject::paintBoxShadow): |
| * rendering/RenderDetailsMarker.cpp: |
| (WebCore::RenderDetailsMarker::paint): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::selectionColor const): |
| (WebCore::RenderElement::selectionBackgroundColor const): |
| (WebCore::RenderElement::paintFocusRing): |
| (WebCore::RenderElement::paintOutline): |
| * rendering/RenderFileUploadControl.cpp: |
| (WebCore::RenderFileUploadControl::paintObject): |
| * rendering/RenderFrameSet.cpp: |
| (WebCore::RenderFrameSet::paintColumnBorder): |
| (WebCore::RenderFrameSet::paintRowBorder): |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintReplaced): |
| (WebCore::RenderImage::paintAreaElementFocusRing): |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::paintOutline): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::canDirectlyCompositeBackgroundBackgroundImage): |
| (WebCore::RenderLayerBacking::rendererBackgroundColor const): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::rootOrBodyStyleChanged): |
| * rendering/RenderListBox.cpp: |
| (WebCore::RenderListBox::paintItemForeground): |
| (WebCore::RenderListBox::paintItemBackground): |
| * rendering/RenderListMarker.cpp: |
| (WebCore::RenderListMarker::paint): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::itemStyle const): |
| (RenderMenuList::getItemBackgroundColor const): |
| (RenderMenuList::menuStyle const): |
| * rendering/RenderMultiColumnSet.cpp: |
| (WebCore::RenderMultiColumnSet::paintColumnRules): |
| * rendering/RenderSearchField.cpp: |
| (WebCore::RenderSearchField::menuStyle const): |
| * rendering/RenderTable.h: |
| (WebCore::RenderTable::bgColor const): |
| * rendering/RenderTableCell.cpp: |
| (WebCore::RenderTableCell::computeCollapsedStartBorder const): |
| (WebCore::RenderTableCell::computeCollapsedEndBorder const): |
| (WebCore::RenderTableCell::computeCollapsedBeforeBorder const): |
| (WebCore::RenderTableCell::computeCollapsedAfterBorder const): |
| (WebCore::RenderTableCell::paintBackgroundsBehindCell): |
| * rendering/RenderTableSection.cpp: |
| (WebCore::RenderTableSection::paintRowGroupBorder): |
| * rendering/RenderTheme.cpp: |
| (WebCore::RenderTheme::paintSliderTicks): |
| * rendering/TextDecorationPainter.cpp: |
| (WebCore::decorationColor): |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::computeTextPaintStyle): |
| * rendering/mathml/MathOperator.cpp: |
| (WebCore::MathOperator::paint): |
| * rendering/mathml/RenderMathMLFraction.cpp: |
| (WebCore::RenderMathMLFraction::paint): |
| * rendering/mathml/RenderMathMLMenclose.cpp: |
| (WebCore::RenderMathMLMenclose::paint): |
| * rendering/mathml/RenderMathMLRoot.cpp: |
| (WebCore::RenderMathMLRoot::paint): |
| * rendering/mathml/RenderMathMLToken.cpp: |
| (WebCore::RenderMathMLToken::paint): |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::visitedDependentColorWithColorFilter const): |
| (WebCore::RenderStyle::colorByApplyingColorFilter const): |
| * rendering/style/RenderStyle.h: |
| |
| 2018-04-26 Mark Lam <mark.lam@apple.com> |
| |
| Gardening: Speculative build fix for Windows. |
| https://bugs.webkit.org/show_bug.cgi?id=184976 |
| <rdar://problem/39723901> |
| |
| Not reviewed. |
| |
| * cssjit/CSSPtrTag.h: |
| |
| 2018-04-26 Brent Fulgham <bfulgham@apple.com> |
| |
| Show punycode if URL contains Latin small letter o with dot below character |
| https://bugs.webkit.org/show_bug.cgi?id=185051 |
| <rdar://problem/39459297> |
| |
| Reviewed by David Kilzer. |
| |
| Revise our "lookalike character" logic to include the small Latin o |
| with dot below character. |
| |
| Test: fast/url/host.html |
| |
| * platform/mac/WebCoreNSURLExtras.mm: |
| (WebCore::isLookalikeCharacter): |
| |
| 2018-04-26 Daniel Bates <dabates@apple.com> |
| |
| Fix the build following r231068 |
| (https://bugs.webkit.org/show_bug.cgi?id=185002) |
| |
| Substitute mainResourceRequest.resourceRequest().url() for mainResourceRequest.url() as the |
| latter does not exist. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::loadMainResource): |
| |
| 2018-04-26 Daniel Bates <dabates@apple.com> |
| |
| DocumentLoader::loadMainResource() should WTFMove() the passed ResourceRequest |
| https://bugs.webkit.org/show_bug.cgi?id=185002 |
| |
| Reviewed by Youenn Fablet and Alex Christensen. |
| |
| In r224852 we extracted logic from DocumentLoader::startLoadingMainResource() into a new |
| function DocumentLoader::loadMainResource() that could be shared by both DocumentLoader::startLoadingMainResource() |
| and the service worker code. As part of this extraction, DocumentLoader::loadMainResource() |
| takes a ResourceRequest by rvalue reference, but it never actually takes ownership of this |
| ResourceRequest and subsequently makes a copy of it when instantiating a CachedResourceRequest. |
| Instead we should WTFMove() the passed request into the CachedResourceRequest. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::loadMainResource): |
| |
| 2018-04-26 Sihui Liu <sihui_liu@apple.com> |
| |
| -[WKHTTPCookieStore deleteCookie:completionHandler:] doesn't delete cookies |
| https://bugs.webkit.org/show_bug.cgi?id=184938 |
| <rdar://problem/34737395> |
| |
| Reviewed by Geoffrey Garen. |
| |
| When a Cookie object was converted to NSHTTPCookie object, the HTTPOnly property information |
| was lost so the delete function cannot find the proper cookie to delete. |
| This patch implements a workaround that compares Cookie object instead of NSHTTPCookie |
| object. We might want to add the ability to set HTTPOnly header during conversion if there |
| is an easy way to do it later. |
| |
| New API test: WebKit.WKHTTPCookieStoreHttpOnly |
| |
| * platform/network/cocoa/CookieCocoa.mm: |
| (WebCore::Cookie::operator== const): |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::deleteCookie): |
| |
| 2018-04-26 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r231052. |
| https://bugs.webkit.org/show_bug.cgi?id=185044 |
| |
| Broke test http/tests/security/credentials-main-resource.html |
| (Requested by dydz on #webkit). |
| |
| Reverted changeset: |
| |
| "DocumentLoader::loadMainResource() should WTFMove() the |
| passed ResourceRequest" |
| https://bugs.webkit.org/show_bug.cgi?id=185002 |
| https://trac.webkit.org/changeset/231052 |
| |
| 2018-04-26 Jer Noble <jer.noble@apple.com> |
| |
| WK_COCOA_TOUCH all the things. |
| https://bugs.webkit.org/show_bug.cgi?id=185006 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-04-26 David Kilzer <ddkilzer@apple.com> |
| |
| Make WAKScrollView delegate a weak property |
| <https://webkit.org/b/184799> |
| <rdar://problem/39469669> |
| |
| Reviewed by Simon Fraser. |
| |
| * platform/ios/wak/WAKScrollView.h: |
| - Remove `delegate` instance variable declaration. |
| - Declare `delegate` property as weak. |
| (-[WAKScrollView setDelegate:]): Delete declaration. |
| (-[WAKScrollView delegate]): Ditto. |
| * platform/ios/wak/WAKScrollView.mm: |
| - Synthesize getter/setter methods for `delegate` property. |
| (-[WAKScrollView setDelegate:]): Delete implementation. |
| (-[WAKScrollView delegate]): Ditto. |
| |
| 2018-04-26 Youenn Fablet <youenn@apple.com> |
| |
| CORS preflight checker should add a console message when preflight load is blocked |
| https://bugs.webkit.org/show_bug.cgi?id=185021 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior, adding a JS console message when preflight load is blocked. |
| This mirrors what is being done in preflighting done from NetworkProcess. |
| Covered by existing tests. |
| |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::notifyFinished): |
| (WebCore::CrossOriginPreflightChecker::doPreflight): |
| |
| 2018-04-26 Daniel Bates <dabates@apple.com> |
| |
| DocumentLoader::loadMainResource() should WTFMove() the passed ResourceRequest |
| https://bugs.webkit.org/show_bug.cgi?id=185002 |
| |
| Reviewed by Youenn Fablet and Alex Christensen. |
| |
| In r224852 we extracted logic from DocumentLoader::startLoadingMainResource() into a new |
| function DocumentLoader::loadMainResource() that could be shared by both DocumentLoader::startLoadingMainResource() |
| and the service worker code. As part of this extraction, DocumentLoader::loadMainResource() |
| takes a ResourceRequest by rvalue reference, but it never actually takes ownership of this |
| ResourceRequest and subsequently makes a copy of it when instantiating a CachedResourceRequest. |
| Instead we should WTFMove() the passed request into the CachedResourceRequest. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::loadMainResource): |
| |
| 2018-04-26 Per Arne Vollan <pvollan@apple.com> |
| |
| Disable content filtering in minimal simulator mode |
| https://bugs.webkit.org/show_bug.cgi?id=185027 |
| <rdar://problem/39736091> |
| |
| Reviewed by Jer Noble. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-04-25 Brent Fulgham <bfulgham@apple.com> |
| |
| Add port 548 (afpovertcp) to port blacklist |
| https://bugs.webkit.org/show_bug.cgi?id=185000 |
| <rdar://problem/39540481> |
| |
| Reviewed by David Kilzer. |
| |
| Tested by security/block-test.html. |
| |
| * platform/URL.cpp: |
| (WebCore::portAllowed):Also block port 548. |
| |
| 2018-04-26 Andy VanWagoner <thetalecrafter@gmail.com> |
| |
| [INTL] Implement Intl.PluralRules |
| https://bugs.webkit.org/show_bug.cgi?id=184312 |
| |
| Reviewed by JF Bastien. |
| |
| Added Intl.PluralRules feature flag. |
| |
| Test: js/intl-pluralrules.html |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-04-15 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Adopt CCRSAGetCRTComponents and stop using CCBigNum |
| https://bugs.webkit.org/show_bug.cgi?id=184637 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * crypto/CommonCryptoUtilities.cpp: Compile out WebCore::CCBigNum class if |
| HAVE(CCRSAGetCRTComponents) is true. |
| |
| * crypto/CommonCryptoUtilities.h: Define HAVE(CCRSAGetCRTComponents) on new |
| enough versions of iOS and macOS that have it and add declarations of the |
| function for the non-Apple-internal-SDK case. Also don't define the |
| WebCore::CCBigNum class if HAVE(CCRSAGetCRTComponents) is true. |
| |
| * crypto/mac/CryptoKeyRSAMac.cpp: |
| (WebCore::getPrivateKeyComponents): Use CCRSAGetCRTComponents if present. |
| |
| 2018-04-26 Per Arne Vollan <pvollan@apple.com> |
| |
| Add lazy initialization of caption display mode for videos. |
| https://bugs.webkit.org/show_bug.cgi?id=184993 |
| |
| The call to MACaptionAppearanceGetDisplayType in CaptionUserPreferencesMediaAF::captionDisplayMode() |
| is showing up in samples when called from HTMLMediaElement::finishInitialization(). |
| |
| Reviewed by Eric Carlson. |
| |
| No new tests, covered by existing tests. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::finishInitialization): |
| (WebCore::HTMLMediaElement::setSelectedTextTrack): |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): |
| (WebCore::HTMLMediaElement::captionPreferencesChanged): |
| (WebCore::HTMLMediaElement::captionDisplayMode): |
| * html/HTMLMediaElement.h: |
| |
| 2018-04-26 Zan Dobersek <zdobersek@igalia.com> |
| |
| [GTK][WPE] Initial ASYNC_SCROLLING support |
| https://bugs.webkit.org/show_bug.cgi?id=184961 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Add CoordinatedGraphics-specific code that will be required for async |
| scrolling support. The ScrollingCoordinatorCoordinatedGraphics and |
| ScrollingTreeCoordinatedGraphics classes are mostly complete already, |
| but the new ScrollingTreeNode-inheriting classes will need further |
| work that will have to be done in parallel with other improvements |
| planned for the CoordinatedGraphics subsystem. |
| |
| While the build-time flag is enabled, the feature is still not enabled |
| at runtime due to being marked as unsupported by the DrawingArea |
| implementation in the WebKit layer. It would also not work yet if it |
| were enabled due to the before-mentioned pending changes. |
| |
| Various build fixes that address non-Cocoa usage of ASYNC_SCROLLING |
| code are included. |
| |
| * Sources.txt: Add AsyncScrollingCoordinator.cpp to build. |
| * SourcesCocoa.txt: |
| * SourcesGTK.txt: Add new files to build. |
| * SourcesWPE.txt: Ditto. |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| Guard setStateScrollingNodeSnapOffsetsAsFloat() with CSS_SCROLL_SNAP. |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| * page/scrolling/ThreadedScrollingTree.h: |
| currentSnapPointIndicesDidChange() method is only invoked in |
| Cocoa-specific code, and its implementation calls Cocoa-specific method |
| on the AsyncScrollingCoordinator class. |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp: |
| (WebCore::ScrollingCoordinator::create): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::ScrollingCoordinatorCoordinatedGraphics): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::~ScrollingCoordinatorCoordinatedGraphics): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::pageDestroyed): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::commitTreeStateIfNeeded): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::handleWheelEvent): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::scheduleTreeStateCommit): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::commitTreeState): |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h: Added. |
| * page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp: Added. |
| (WebCore::ScrollingTreeCoordinatedGraphics::create): |
| (WebCore::ScrollingTreeCoordinatedGraphics::ScrollingTreeCoordinatedGraphics): |
| (WebCore::ScrollingTreeCoordinatedGraphics::createScrollingTreeNode): |
| * page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.h: Added. |
| * page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.cpp: Added. |
| (WebCore::ScrollingTreeFixedNode::create): |
| (WebCore::ScrollingTreeFixedNode::ScrollingTreeFixedNode): |
| (WebCore::ScrollingTreeFixedNode::~ScrollingTreeFixedNode): |
| (WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren): |
| (WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange): |
| * page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.h: Added. |
| * page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.cpp: Added. |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::create): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::ScrollingTreeFrameScrollingNodeCoordinatedGraphics): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::handleWheelEvent): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::scrollPosition const): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::setScrollPosition): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::setScrollPositionWithoutContentEdgeConstraints): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::setScrollLayerPosition): |
| (WebCore::ScrollingTreeFrameScrollingNodeCoordinatedGraphics::updateLayersAfterViewportChange): |
| * page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.h: Added. |
| * page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.cpp: Added. |
| (WebCore::ScrollingTreeStickyNode::create): |
| (WebCore::ScrollingTreeStickyNode::ScrollingTreeStickyNode): |
| (WebCore::ScrollingTreeStickyNode::~ScrollingTreeStickyNode): |
| (WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren): |
| (WebCore::ScrollingTreeStickyNode::updateLayersAfterAncestorChange): |
| * page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.h: Added. |
| * platform/PlatformWheelEvent.h: Enable PlatformWheelEventPhase code |
| for WPE. Guard latching-specific methods under ASYNC_SCROLLING. |
| * platform/TextureMapper.cmake: Two build targets have been moved to |
| SourcesGTK.txt and SourcesWPE.txt. |
| |
| 2018-04-25 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE] Build and link against latest WPEBackend and WPEBackend-fdo |
| https://bugs.webkit.org/show_bug.cgi?id=184643 |
| |
| Reviewed by Žan Doberšek. |
| |
| Adapt to single-header WPE includes. |
| |
| * platform/graphics/egl/GLContextEGLWPE.cpp: |
| * platform/graphics/wpe/PlatformDisplayWPE.cpp: |
| * platform/wpe/PlatformPasteboardWPE.cpp: |
| |
| 2018-04-25 Youenn Fablet <youenn@apple.com> |
| |
| Use NetworkLoadChecker for all subresource loads except fetch/XHR |
| https://bugs.webkit.org/show_bug.cgi?id=184870 |
| <rdar://problem/39370034> |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Update CachedResourceLoader error messages to match NetworkProcess error messages. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::printAccessDeniedMessage const): |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Add support for is<> and downcast<> |
| https://bugs.webkit.org/show_bug.cgi?id=185016 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/layouttree/LayoutBlockContainer.cpp: |
| (WebCore::Layout::BlockContainer::BlockContainer): |
| * layout/layouttree/LayoutBlockContainer.h: |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::Box): |
| * layout/layouttree/LayoutBox.h: |
| (WebCore::Layout::Box::isContainer const): |
| (WebCore::Layout::Box::isBlockContainer const): |
| (WebCore::Layout::Box::isInlineBox const): |
| (WebCore::Layout::Box::isInlineContainer const): |
| * layout/layouttree/LayoutContainer.cpp: |
| (WebCore::Layout::Container::Container): |
| * layout/layouttree/LayoutContainer.h: |
| * layout/layouttree/LayoutInlineBox.cpp: |
| (WebCore::Layout::InlineBox::InlineBox): |
| * layout/layouttree/LayoutInlineBox.h: |
| * layout/layouttree/LayoutInlineContainer.cpp: |
| (WebCore::Layout::InlineContainer::InlineContainer): |
| * layout/layouttree/LayoutInlineContainer.h: |
| |
| 2018-04-25 Chris Dumez <cdumez@apple.com> |
| |
| window.postMessage() / focus() / blur() throw a TypeError when called on a RemoteDOMWindow |
| https://bugs.webkit.org/show_bug.cgi?id=184981 |
| |
| Reviewed by Sam Weinig. |
| |
| window.postMessage() / focus() / blur() was throwing a TypeError when called on a RemoteDOMWindow, |
| complaining that |this| is not a Window. This was caused by a copy & paste mistake in |
| JSDOMWindowCustom where we were calling the JSDOMWindow methods instead of the JSRemoteDOMWindow |
| ones. |
| |
| No new tests, updated existing tests. |
| |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): |
| * page/RemoteDOMWindow.cpp: |
| (WebCore::RemoteDOMWindow::postMessage): |
| * page/RemoteDOMWindow.h: |
| * page/RemoteDOMWindow.idl: |
| |
| 2018-04-25 Simon Fraser <simon.fraser@apple.com> |
| |
| brightness() filter should default to 1, and not allow negative values |
| https://bugs.webkit.org/show_bug.cgi?id=184937 |
| |
| Reviewed by Dean Jackson. |
| |
| Remove the special-casing for brightness() in consumeFilterFunction(), so it now |
| follows the same logic as the other color-related filters in not allowing negative |
| values. |
| |
| Removed the special-casing for brightness() in createFilterOperations() so its default |
| value is now 1. |
| |
| Modified existing tests. |
| |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::createFilterOperations): |
| * css/parser/CSSPropertyParserHelpers.cpp: |
| (WebCore::CSSPropertyParserHelpers::allowsValuesGreaterThanOne): |
| (WebCore::CSSPropertyParserHelpers::consumeFilterFunction): |
| |
| 2018-04-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Missing closing parenthesis when determining INSTALL_PATH build setting in WebCore.xcconfig |
| https://bugs.webkit.org/show_bug.cgi?id=184999 |
| |
| Reviewed by Tim Horton. |
| |
| Tweaks a line in WebCore.xcconfig that computes INSTALL_PATH, so that it doesn't use WK_NOT or WK_EMPTY. |
| |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Implement LayoutContexet::layout() and its dependencies. |
| https://bugs.webkit.org/show_bug.cgi?id=184951 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::FormattingContext): |
| (WebCore::Layout::FormattingContext::~FormattingContext): |
| (WebCore::Layout::FormattingContext::computeStaticPosition): |
| (WebCore::Layout::FormattingContext::computeInFlowPositionedPosition): |
| (WebCore::Layout::FormattingContext::computeOutOfFlowPosition): |
| (WebCore::Layout::FormattingContext::computeWidth): |
| (WebCore::Layout::FormattingContext::computeHeight): |
| (WebCore::Layout::FormattingContext::marginTop): |
| (WebCore::Layout::FormattingContext::marginLeft): |
| (WebCore::Layout::FormattingContext::marginBottom): |
| (WebCore::Layout::FormattingContext::marginRight): |
| * layout/FormattingContext.h: |
| * layout/FormattingState.cpp: |
| (WebCore::Layout::FormattingState::FormattingState): |
| * layout/FormattingState.h: |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::LayoutContext): |
| (WebCore::Layout::LayoutContext::updateLayout): |
| (WebCore::Layout::LayoutContext::formattingState): |
| (WebCore::Layout::LayoutContext::formattingContext): |
| * layout/LayoutContext.h: |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::BlockFormattingContext): |
| (WebCore::Layout::BlockFormattingContext::layout): |
| (WebCore::Layout::BlockFormattingContext::formattingState const): |
| (WebCore::Layout::BlockFormattingContext::computeStaticPosition): |
| (WebCore::Layout::BlockFormattingContext::computeWidth): |
| (WebCore::Layout::BlockFormattingContext::computeHeight): |
| (WebCore::Layout::BlockFormattingContext::marginTop): |
| (WebCore::Layout::BlockFormattingContext::marginBottom): |
| * layout/blockformatting/BlockFormattingContext.h: |
| * layout/blockformatting/BlockFormattingState.cpp: |
| (WebCore::Layout::BlockFormattingState::BlockFormattingState): |
| * layout/blockformatting/BlockFormattingState.h: |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::InlineFormattingContext): |
| (WebCore::Layout::InlineFormattingContext::layout): |
| (WebCore::Layout::InlineFormattingContext::formattingState const): |
| * layout/inlineformatting/InlineFormattingContext.h: |
| * layout/inlineformatting/InlineFormattingState.cpp: |
| (WebCore::Layout::InlineFormattingState::InlineFormattingState): |
| * layout/inlineformatting/InlineFormattingState.h: |
| |
| 2018-04-25 Mark Lam <mark.lam@apple.com> |
| |
| Push the definition of PtrTag down to the WTF layer. |
| https://bugs.webkit.org/show_bug.cgi?id=184976 |
| <rdar://problem/39723901> |
| |
| Reviewed by Saam Barati. |
| |
| No new tests needed. This is covered by existing tests. |
| |
| * cssjit/CSSPtrTag.h: |
| * cssjit/SelectorCompiler.h: |
| (WebCore::SelectorCompiler::ruleCollectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::querySelectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::ruleCollectorSelectorCheckerFunctionWithCheckingContext): |
| (WebCore::SelectorCompiler::querySelectorSelectorCheckerFunctionWithCheckingContext): |
| |
| 2018-04-25 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] remove media element parameter from MediaElementSession methods |
| https://bugs.webkit.org/show_bug.cgi?id=184992 |
| <rdar://problem/39731624> |
| |
| Reviewed by Jon Lee. |
| |
| No new tests, no behavior change. |
| |
| * Modules/mediacontrols/MediaControlsHost.cpp: |
| (WebCore::MediaControlsHost::allowsInlineMediaPlayback const): |
| (WebCore::MediaControlsHost::userGestureRequired const): |
| * accessibility/AccessibilityMediaObject.cpp: |
| (WebCore::AccessibilityMediaObject::isPlayingInline const): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::~HTMLMediaElement): |
| (WebCore::HTMLMediaElement::parseAttribute): |
| (WebCore::HTMLMediaElement::prepareForLoad): |
| (WebCore::HTMLMediaElement::selectMediaResource): |
| (WebCore::HTMLMediaElement::loadResource): |
| (WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const): |
| (WebCore::HTMLMediaElement::setReadyState): |
| (WebCore::HTMLMediaElement::play): |
| (WebCore::HTMLMediaElement::pause): |
| (WebCore::HTMLMediaElement::pauseInternal): |
| (WebCore::HTMLMediaElement::setVolume): |
| (WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): |
| (WebCore::HTMLMediaElement::sourceWasAdded): |
| (WebCore::HTMLMediaElement::mediaEngineWasUpdated): |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): |
| (WebCore::HTMLMediaElement::updatePlayState): |
| (WebCore::HTMLMediaElement::clearMediaPlayer): |
| (WebCore::HTMLMediaElement::resume): |
| (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): |
| (WebCore::HTMLMediaElement::addEventListener): |
| (WebCore::HTMLMediaElement::removeEventListener): |
| (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent): |
| (WebCore::HTMLMediaElement::exitFullscreen): |
| (WebCore::HTMLMediaElement::configureMediaControls): |
| (WebCore::HTMLMediaElement::createMediaPlayer): |
| (WebCore::HTMLMediaElement::mediaPlayerIsFullscreenPermitted const): |
| (WebCore::HTMLMediaElement::updateMediaState): |
| (WebCore::HTMLMediaElement::mediaState const): |
| (WebCore::HTMLMediaElement::allowsMediaDocumentInlinePlaybackChanged): |
| (WebCore::HTMLMediaElement::updateShouldPlay): |
| * html/HTMLVideoElement.cpp: |
| (WebCore::HTMLVideoElement::parseAttribute): |
| (WebCore::HTMLVideoElement::supportsFullscreen const): |
| (WebCore::HTMLVideoElement::webkitEnterFullscreen): |
| (WebCore::HTMLVideoElement::webkitWirelessVideoPlaybackDisabled const): |
| (WebCore::HTMLVideoElement::webkitSupportsPresentationMode const): |
| (WebCore::HTMLVideoElement::setFullscreenMode): |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::playbackPermitted const): |
| (WebCore::MediaElementSession::dataLoadingPermitted const): |
| (WebCore::MediaElementSession::fullscreenPermitted const): |
| (WebCore::MediaElementSession::pageAllowsDataLoading const): |
| (WebCore::MediaElementSession::pageAllowsPlaybackAfterResuming const): |
| (WebCore::MediaElementSession::canShowControlsManager const): |
| (WebCore::MediaElementSession::showPlaybackTargetPicker): |
| (WebCore::MediaElementSession::hasWirelessPlaybackTargets const): |
| (WebCore::MediaElementSession::wirelessVideoPlaybackDisabled const): |
| (WebCore::MediaElementSession::setWirelessVideoPlaybackDisabled): |
| (WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners): |
| (WebCore::MediaElementSession::mediaStateDidChange): |
| (WebCore::MediaElementSession::effectivePreloadForElement const): |
| (WebCore::MediaElementSession::requiresFullscreenForVideoPlayback const): |
| (WebCore::MediaElementSession::allowsAutomaticMediaDataLoading const): |
| (WebCore::MediaElementSession::mediaEngineUpdated): |
| (WebCore::MediaElementSession::allowsPictureInPicture const): |
| * html/MediaElementSession.h: |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::wirelessVideoPlaybackDisabled const): |
| |
| 2018-04-25 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Remove access to keychain from the WebContent process |
| https://bugs.webkit.org/show_bug.cgi?id=184428 |
| <rdar://problem/13150903> |
| |
| Reviewed by Brent Fulgham. |
| |
| Part 2. |
| |
| This patch move the operation of HTMLKeygenElement from WebContent Process to UI Process. |
| Function signedPublicKeyAndChallengeString is therefore marked as WEBCORE_EXPORT. Also, a |
| localized string is marked WEBCORE_EXPORT as well to support the API test. |
| |
| Covered by existing tests and api tests. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * dom/Document.cpp: |
| (WebCore::Document::signedPublicKeyAndChallengeString): |
| * dom/Document.h: |
| * html/HTMLKeygenElement.cpp: |
| (WebCore::HTMLKeygenElement::appendFormData): |
| * page/ChromeClient.h: |
| * platform/LocalizedStrings.h: |
| * platform/SSLKeyGenerator.h: |
| |
| 2018-04-25 Ryosuke Niwa <rniwa@webkit.org> |
| |
| PSON: Don't create a new process when navigating to a blob URL, data URL, and about:blank |
| https://bugs.webkit.org/show_bug.cgi?id=184962 |
| |
| Reviewed by Youenn Fablet. |
| |
| Added NavigationAction::treatAsSameOriginNavigation, which signifies WebKit code to avoid creating |
| a new WebContent process when navigating to a blob URL, data URL, and about:blank. |
| |
| Tests: ProcessSwap.SameOriginBlobNavigation |
| ProcessSwap.CrossOriginBlobNavigation |
| ProcessSwap.NavigateToAboutBlank |
| ProcessSwap.NavigateToDataURL |
| |
| * loader/NavigationAction.cpp: |
| (WebCore::treatAsSameOriginNavigation): |
| * loader/NavigationAction.h: |
| (WebCore::NavigationAction::treatAsSameOriginNavigation const): |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Implement Layout::BlockContainer functions. |
| https://bugs.webkit.org/show_bug.cgi?id=184994 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/layouttree/LayoutBlockContainer.cpp: |
| (WebCore::Layout::BlockContainer::BlockContainer): |
| (WebCore::Layout::BlockContainer::establishesInlineFormattingContext const): |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Implement Layout::Container functions. |
| https://bugs.webkit.org/show_bug.cgi?id=184988 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/layouttree/LayoutContainer.cpp: |
| (WebCore::Layout::Container::Container): |
| (WebCore::Layout::Container::firstInFlowChild const): |
| (WebCore::Layout::Container::firstInFlowOrFloatingChild const): |
| (WebCore::Layout::Container::lastInFlowChild const): |
| (WebCore::Layout::Container::lastInFlowOrFloatingChild const): |
| (WebCore::Layout::Container::setFirstChild): |
| (WebCore::Layout::Container::setLastChild): |
| (WebCore::Layout::Container::setOutOfFlowDescendants): |
| * layout/layouttree/LayoutContainer.h: |
| (WebCore::Layout::Container::firstChild const): |
| (WebCore::Layout::Container::lastChild const): |
| (WebCore::Layout::Container::hasChild const): |
| (WebCore::Layout::Container::hasInFlowChild const): |
| (WebCore::Layout::Container::hasInFlowOrFloatingChild const): |
| (WebCore::Layout::Container::outOfFlowDescendants): |
| |
| 2018-04-25 Brent Fulgham <bfulgham@apple.com> |
| |
| Don't Block First Party Cookies on Redirects |
| https://bugs.webkit.org/show_bug.cgi?id=184948 |
| <rdar://problem/39534099> |
| |
| Reviewed by Youenn Fablet. |
| |
| The Navigation scheduler looses the 'requester' value when performing a ScheduledRedirect. |
| |
| Test: http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html |
| |
| * loader/NavigationScheduler.cpp: |
| |
| 2018-04-25 Youenn Fablet <youenn@apple.com> |
| |
| CachedRawResource is not handling incremental data computation correctly |
| https://bugs.webkit.org/show_bug.cgi?id=184936 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| |
| The previous logic was handling the case of only one additional segment being added to the SharedBuffer. |
| In service worker case, a SharedBuffer may contain more than one segment. |
| This is fixed by iterating until all new data is sent to clients. |
| |
| * loader/cache/CachedRawResource.cpp: |
| (WebCore::CachedRawResource::updateBuffer): |
| |
| 2018-04-25 Andy Estes <aestes@apple.com> |
| |
| [Mac] Number of drop items is always 0 when performing a DHTML drag |
| https://bugs.webkit.org/show_bug.cgi?id=184943 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| New API test: DragAndDropPasteboardTests.NumberOfValidItemsForDrop |
| |
| DragController tracks the number of items to be accepted by a file input element, taking |
| into account whether the control is disabled or accepts multiple files. When this number |
| changes, WebKit informs the NSDraggingInfo-conforming object passed to -draggingUpdated by |
| calling -setNumberOfValidItemsForDrop:. This number is presented to the user in a badge |
| rendered next to the dragging item thumbnails. |
| |
| When performing a DHTML drag, we don't know how many items the page will accept, so prior |
| to this patch we would render a "0" in the badge. This is misleading, because the page is |
| more likely to accept all the items (or at least one of them) rather than none of them. |
| |
| Let's do the straightforward thing and set numberOfValidItemsForDrop to equal the number of |
| files in the drag operation when performing a DHTML file drag. |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::tryDocumentDrag): |
| |
| 2018-04-25 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] Set route sharing policy when setting audio session category |
| https://bugs.webkit.org/show_bug.cgi?id=184979 |
| <rdar://problem/39709577> |
| |
| Reviewed by Jer Noble. |
| |
| * platform/audio/ios/AudioSessionIOS.mm: |
| (WebCore::AudioSession::setCategory): |
| |
| 2018-04-25 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Fix wrong schema checking on r230973 |
| https://bugs.webkit.org/show_bug.cgi?id=184977 |
| |
| Did write a wrong condition when making a string. |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because test interface is not ready. |
| |
| * platform/network/curl/CurlProxySettings.cpp: |
| (WebCore::createProxyUrl): |
| |
| 2018-04-25 Youenn Fablet <youenn@apple.com> |
| |
| Make DocumentThreadableLoader error logging more consistent |
| https://bugs.webkit.org/show_bug.cgi?id=184853 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by rebased tests. |
| Make EventSource, XHR and Fetch log error messages consistently. |
| This patch also prepares consistent error logging between WK1 and WK2 as WK2 NetworkProcess |
| will issue more and more errors in places different from WK1. |
| This is the reason for SubresourceLoader changes in this patch and DTL/didFail/preflightFailure changes. |
| |
| Update ImageLoader error message to be more general than CORS. |
| |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::doPreflight): Add some more logging for consistency between WK1 and WK2. |
| (WebCore::CrossOriginPreflightChecker::validatePreflightResponse): Ditto. |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::didFail): |
| (WebCore::DocumentThreadableLoader::preflightFailure): |
| (WebCore::DocumentThreadableLoader::logErrorAndFail): |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::notifyFinished): |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didFail): |
| * loader/ThreadableLoader.cpp: |
| (WebCore::ThreadableLoader::logError): |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::load): |
| * loader/cache/CachedResourceRequestInitiators.cpp: |
| (WebCore::CachedResourceRequestInitiators::CachedResourceRequestInitiators): |
| * loader/cache/CachedResourceRequestInitiators.h: |
| * page/EventSource.cpp: |
| (WebCore::EventSource::connect): |
| (WebCore::EventSource::didFail): |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::didFail): |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Implement Layout::Box functions. |
| https://bugs.webkit.org/show_bug.cgi?id=184974 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/layouttree/LayoutBlockContainer.h: |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::Box): |
| (WebCore::Layout::Box::~Box): |
| (WebCore::Layout::Box::establishesFormattingContext const): |
| (WebCore::Layout::Box::establishesBlockFormattingContext const): |
| (WebCore::Layout::Box::isRelativelyPositioned const): |
| (WebCore::Layout::Box::isStickyPositioned const): |
| (WebCore::Layout::Box::isAbsolutelyPositioned const): |
| (WebCore::Layout::Box::isFixedPositioned const): |
| (WebCore::Layout::Box::isFloatingPositioned const): |
| (WebCore::Layout::Box::containingBlock const): |
| (WebCore::Layout::Box::isDescendantOf const): |
| (WebCore::Layout::Box::isAnonymous const): |
| (WebCore::Layout::Box::isInlineBlockBox const): |
| (WebCore::Layout::Box::isBlockLevelBox const): |
| (WebCore::Layout::Box::isInlineLevelBox const): |
| (WebCore::Layout::Box::isBlockContainerBox const): |
| (WebCore::Layout::Box::isInitialContainingBlock const): |
| (WebCore::Layout::Box::nextInFlowSibling const): |
| (WebCore::Layout::Box::nextInFlowOrFloatingSibling const): |
| (WebCore::Layout::Box::previousInFlowSibling const): |
| (WebCore::Layout::Box::previousInFlowOrFloatingSibling const): |
| (WebCore::Layout::Box::setParent): |
| (WebCore::Layout::Box::setNextSibling): |
| (WebCore::Layout::Box::setPreviousSibling): |
| (WebCore::Layout::Box::isOverflowVisible const): |
| * layout/layouttree/LayoutBox.h: |
| (WebCore::Layout::Box::establishesInlineFormattingContext const): |
| (WebCore::Layout::Box::isInFlow const): |
| (WebCore::Layout::Box::isPositioned const): |
| (WebCore::Layout::Box::isInFlowPositioned const): |
| (WebCore::Layout::Box::isOutOfFlowPositioned const): |
| (WebCore::Layout::Box::isFloatingOrOutOfFlowPositioned const): |
| (WebCore::Layout::Box::parent const): |
| (WebCore::Layout::Box::nextSibling const): |
| (WebCore::Layout::Box::previousSibling const): |
| (WebCore::Layout::Box::weakPtrFactory const): |
| * layout/layouttree/LayoutContainer.h: |
| * layout/layouttree/LayoutInlineBox.h: |
| * layout/layouttree/LayoutInlineContainer.h: |
| |
| 2018-04-25 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Crash under WebCore::SimpleLineLayout::generateLineBoxTree |
| https://bugs.webkit.org/show_bug.cgi?id=184953 |
| |
| This is possibly a MSVC compiler bug, since a simple rearrangement of the code fixes the crash. |
| The crash is only happening in release builds, which also is an indication of this being a |
| compiler issue. |
| |
| Reviewed by Zalan Bujtas. |
| |
| No new tests, covered by existing tests. |
| |
| * rendering/SimpleLineLayoutFunctions.cpp: |
| (WebCore::SimpleLineLayout::generateLineBoxTree): |
| |
| 2018-04-25 Dean Jackson <dino@apple.com> |
| |
| Make a better flag for system preview, and disable it where necessary |
| https://bugs.webkit.org/show_bug.cgi?id=184968 |
| <rdar://problem/39686506> |
| |
| Reviewed by Eric Carlson. |
| |
| Use USE(SYSTEM_PREVIEW). |
| |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::isSystemPreviewLink const): |
| * html/HTMLAnchorElement.h: |
| * html/HTMLImageElement.cpp: |
| * html/HTMLImageElement.h: |
| * html/HTMLPictureElement.cpp: |
| * html/HTMLPictureElement.h: |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintIntoRect): |
| * rendering/RenderTheme.cpp: |
| * rendering/RenderTheme.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::systemPreviewRelType): |
| (WebCore::Internals::isSystemPreviewLink const): |
| (WebCore::Internals::isSystemPreviewImage const): |
| |
| 2018-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| Fix project file after r230931. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-04-25 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK] fast/repaint/fixed-scale.html failing since r230479 "[TexMap] TextureMapperLayer unnecessarily duplicates state in GraphicsLayerTransform" |
| https://bugs.webkit.org/show_bug.cgi?id=184780 |
| |
| Reviewed by Žan Doberšek. |
| |
| Initialize the anchorPoint to (0.5, 0.5, 0) in TextureMapperLayer::State. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-04-25 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Implement MouseEvent.buttons |
| https://bugs.webkit.org/show_bug.cgi?id=184913 |
| |
| Reviewed by Žan Doberšek. |
| |
| Add helper function to get the state modifier of a GDK button. |
| |
| * platform/gtk/GtkUtilities.cpp: |
| (WebCore::stateModifierForGdkButton): |
| * platform/gtk/GtkUtilities.h: |
| |
| 2018-04-24 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assert in ScriptController::canExecuteScripts via CachedSVGFont::ensureCustomFontData during |
| Document::updateStyleIfNeeded |
| https://bugs.webkit.org/show_bug.cgi?id=184950 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Convert an existing ScriptDisallowedScope::EventAllowedScope which only disables the debug assertions |
| by ScriptDisallowedScope::DisableAssertionsInScope which also disables the release assertion. |
| |
| Because SVG font is loaded in a document isolated from the rest of the page (m_externalSVGDocument), |
| there is no security implication to execute scripts in this isolated document. |
| |
| Unfortunately, no new tests. I could never make CachedSVGFont::ensureCustomFontData to get called inside |
| style resolution with m_externalSVGDocument set to nullptr after many attempts. Even EventAllowedScope |
| I added 13 months ago in r211965, which this patch replaces by DisableAssertionsInScope, is not utilized |
| by the existing layout tests since removing the assertion doesn't cause any layout test to hit an assertion. |
| |
| * dom/ScriptDisallowedScope.h: Updated the comment. |
| * loader/cache/CachedSVGFont.cpp: |
| (WebCore::CachedSVGFont::ensureCustomFontData): Replaced the asssertion. |
| |
| 2018-04-24 Simon Fraser <simon.fraser@apple.com> |
| |
| visitedDependentColor() should take a CSSPropertyID |
| https://bugs.webkit.org/show_bug.cgi?id=184949 |
| |
| Reviewed by Sam Weinig. |
| |
| Change RenderStyle::colorIncludingFallback(), RenderStyle::visitedDependentColor() |
| and RenderElement::selectionColor() to take CSSPropertyID rather than int. |
| |
| No behavior change. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::selectionColor const): |
| * rendering/RenderElement.h: |
| * rendering/RenderTableCell.cpp: |
| (WebCore::RenderTableCell::computeCollapsedStartBorder const): |
| (WebCore::RenderTableCell::computeCollapsedEndBorder const): |
| (WebCore::RenderTableCell::computeCollapsedBeforeBorder const): |
| (WebCore::RenderTableCell::computeCollapsedAfterBorder const): |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::colorIncludingFallback const): |
| (WebCore::RenderStyle::visitedDependentColor const): |
| * rendering/style/RenderStyle.h: |
| |
| 2018-04-24 Simon Fraser <simon.fraser@apple.com> |
| |
| Add a new "color-filter" CSS property as an experimental feature |
| https://bugs.webkit.org/show_bug.cgi?id=184940 |
| rdar://problem/39664904 |
| |
| Reviewed by Jon Lee. |
| |
| Add a new CSS property called "color-filter" as an experimental feature (off by default). |
| |
| This property specifies a list of filter functions (as specified in https://drafts.fxtf.org/filter-effects/#supported-filter-functions) |
| to CSS colors, allowing authors to modify the provided page colors, for example to improve accessibility. |
| Filters that move pixels (i.e. blur() and drop-shadow()) are invalid in this property. |
| |
| Colors will be mapped through the filter functions just before paint time, and gradient stop colors will also be mapped. |
| |
| This patch adds support for parsing color-filter. |
| |
| Test: css3/color-filters/color-filter-parsing.html |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSProperties.json: |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| (WebCore::operator==): |
| * css/parser/CSSParserMode.h: |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| * css/parser/CSSPropertyParserHelpers.cpp: |
| (WebCore::CSSPropertyParserHelpers::isColorFilterFunction): |
| (WebCore::CSSPropertyParserHelpers::consumeFilterFunction): |
| (WebCore::CSSPropertyParserHelpers::consumeFilter): |
| * css/parser/CSSPropertyParserHelpers.h: |
| * page/Settings.yaml: |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::changeRequiresRepaint const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::mutableColorFilter): |
| (WebCore::RenderStyle::colorFilter const): |
| (WebCore::RenderStyle::hasColorFilter const): |
| (WebCore::RenderStyle::setColorFilter): |
| (WebCore::RenderStyle::initialColorFilter): |
| * rendering/style/StyleRareInheritedData.cpp: |
| (WebCore::StyleRareInheritedData::StyleRareInheritedData): |
| (WebCore::StyleRareInheritedData::operator== const): |
| (WebCore::StyleRareInheritedData::hasColorFilters const): |
| * rendering/style/StyleRareInheritedData.h: |
| |
| 2018-04-24 Simon Fraser <simon.fraser@apple.com> |
| |
| shape-outside and filter styles occur twice in the result of getComputedStyle |
| https://bugs.webkit.org/show_bug.cgi?id=184931 |
| |
| Reviewed by Antti Koivisto. |
| |
| CSSPropertyShapeOutside and CSSPropertyFilter were duplicated in the list of computedProperties[] |
| used by getComputedStyle. Remove the duplication. |
| |
| Tested by existing tests. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| |
| 2018-04-24 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Extract proxy settings into a separate class to hold advanced information. |
| https://bugs.webkit.org/show_bug.cgi?id=184714 |
| |
| It was simplely structure to hold proxy setting. To support advanced feature of proxy |
| such as authentication, more inteligent object is required to store intermediate state |
| or errors. That's why we've introduced new class for that purpose. |
| |
| Reviewed by Youenn Fablet. |
| |
| No new tests because there's no new behavior. |
| |
| * platform/Curl.cmake: |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::CurlHandle::enableProxyIfExists): |
| (WebCore::CurlContext::ProxyInfo::url const): Deleted. |
| (WebCore::CurlContext::setProxyInfo): Deleted. |
| * platform/network/curl/CurlContext.h: |
| (WebCore::CurlContext::proxySettings const): |
| (WebCore::CurlContext::setProxySettings): |
| (WebCore::CurlContext::setProxyUserPass): |
| (WebCore::CurlContext::proxyInfo const): Deleted. |
| (WebCore::CurlContext::setProxyInfo): Deleted. |
| * platform/network/curl/CurlProxySettings.cpp: Added. |
| (WebCore::CurlProxySettings::CurlProxySettings): |
| (WebCore::CurlProxySettings::rebuildUrl): |
| (WebCore::CurlProxySettings::setUserPass): |
| (WebCore::protocolIsInSocksFamily): |
| (WebCore::getProxyPort): |
| (WebCore::createProxyUrl): |
| * platform/network/curl/CurlProxySettings.h: Added. |
| (WebCore::CurlProxySettings::CurlProxySettings): |
| (WebCore::CurlProxySettings::isEmpty const): |
| (WebCore::CurlProxySettings::mode const): |
| (WebCore::CurlProxySettings::url const): |
| (WebCore::CurlProxySettings::ignoreHosts const): |
| (WebCore::CurlProxySettings::user const): |
| (WebCore::CurlProxySettings::password const): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::didReceiveHeader): |
| * platform/network/curl/CurlResponse.h: |
| (WebCore::CurlResponse::isolatedCopy const): |
| * platform/network/curl/ResourceResponseCurl.cpp: |
| (WebCore::ResourceResponse::ResourceResponse): |
| |
| 2018-04-24 Youenn Fablet <youenn@apple.com> |
| |
| Throw in case of PeerConnection created for detached documents |
| https://bugs.webkit.org/show_bug.cgi?id=184921 |
| <rdar://problem/39629216> |
| |
| Reviewed by Eric Carlson. |
| |
| Add a check to ensure that page is not null when creating a peer connection backend. |
| In that case, the peer connection constructor will later on throw. |
| The same for setConfiguration is done. |
| Behavior is consistent with Chrome. |
| |
| Test: webrtc/pc-detached-document.html |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: |
| (WebCore::createLibWebRTCPeerConnectionBackend): |
| (WebCore::LibWebRTCPeerConnectionBackend::LibWebRTCPeerConnectionBackend): |
| (WebCore::LibWebRTCPeerConnectionBackend::setConfiguration): |
| (WebCore::libWebRTCProvider): Deleted. |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h: |
| |
| 2018-04-24 John Wilander <wilander@apple.com> |
| |
| From-Origin: Support for 'same' and 'same-site' response header, nested frame origin check |
| https://bugs.webkit.org/show_bug.cgi?id=184560 |
| <rdar://problem/38901344> |
| |
| Reviewed by Youenn Fablet and Daniel Bates. |
| |
| Tests: http/tests/from-origin/document-from-origin-same-accepted.html |
| http/tests/from-origin/document-from-origin-same-blocked.html |
| http/tests/from-origin/document-from-origin-same-site-accepted.html |
| http/tests/from-origin/document-from-origin-same-site-blocked.html |
| http/tests/from-origin/document-nested-from-origin-same-accepted.html |
| http/tests/from-origin/document-nested-from-origin-same-blocked.html |
| http/tests/from-origin/fetch-data-iframe-from-origin-same-blocked.html |
| http/tests/from-origin/fetch-from-origin-same-accepted.html |
| http/tests/from-origin/fetch-from-origin-same-blocked.html |
| http/tests/from-origin/fetch-from-origin-same-site-accepted.html |
| http/tests/from-origin/fetch-from-origin-same-site-blocked.html |
| http/tests/from-origin/fetch-iframe-from-origin-same-accepted.html |
| http/tests/from-origin/fetch-iframe-from-origin-same-blocked.html |
| http/tests/from-origin/image-about-blank-from-origin-same-blocked.html |
| http/tests/from-origin/image-from-origin-same-accepted.html |
| http/tests/from-origin/image-from-origin-same-blocked.html |
| http/tests/from-origin/image-from-origin-same-site-accepted.html |
| http/tests/from-origin/image-from-origin-same-site-blocked.html |
| http/tests/from-origin/redirect-document-from-origin-same-blocked.html |
| http/tests/from-origin/redirect-fetch-from-origin-same-blocked.html |
| http/tests/from-origin/redirect-image-from-origin-same-blocked.html |
| http/tests/from-origin/redirect-script-from-origin-same-blocked.html |
| http/tests/from-origin/redirect-xhr-from-origin-same-blocked.html |
| http/tests/from-origin/sandboxed-sub-frame-from-origin-same-blocked.html |
| http/tests/from-origin/sandboxed-sub-frame-nested-cross-origin-from-origin-same-blocked.html |
| http/tests/from-origin/sandboxed-sub-frame-nested-same-origin-from-origin-same-blocked.html |
| http/tests/from-origin/script-from-origin-same-accepted.html |
| http/tests/from-origin/script-from-origin-same-blocked.html |
| http/tests/from-origin/script-from-origin-same-site-accepted.html |
| http/tests/from-origin/script-from-origin-same-site-blocked.html |
| http/tests/from-origin/top-frame-document-from-origin-same-accepted.php |
| http/tests/from-origin/xhr-from-origin-same-accepted.html |
| http/tests/from-origin/xhr-from-origin-same-blocked.html |
| http/tests/from-origin/xhr-from-origin-same-site-accepted.html |
| http/tests/from-origin/xhr-from-origin-same-site-blocked.html |
| |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didFail): |
| Outputs the error's localized description in a console message except when the destination |
| is FetchOptions::Destination::Serviceworker or FetchOptions::Destination::EmptyString. |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setFromOriginResponseHeaderEnabled): |
| (WebCore::RuntimeEnabledFeatures::fromOriginResponseHeaderEnabled const): |
| Added From-Origin support as an experimental feature. |
| * platform/network/HTTPHeaderNames.in: |
| Added From-Origin. |
| * platform/network/HTTPParsers.cpp: |
| (WebCore::parseFromOriginHeader): |
| Parses the From-Origin header, currently supporting 'Same' and 'Same-Site.' |
| * platform/network/HTTPParsers.h: |
| |
| 2018-04-24 Antti Koivisto <antti@apple.com> |
| |
| Rename LayoutCtx.h/cpp to LayoutContext.h/cpp |
| https://bugs.webkit.org/show_bug.cgi?id=184922 |
| |
| Reviewed by Zalan Bujtas. |
| |
| To achieve this the existing LayoutContext class is renamed to FrameViewLayoutContext. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * layout/LayoutContext.cpp: Copied from Source/WebCore/layout/LayoutCtx.cpp. |
| * layout/LayoutContext.h: Copied from Source/WebCore/layout/LayoutCtx.h. |
| * layout/LayoutCtx.cpp: Removed. |
| * layout/LayoutCtx.h: Removed. |
| * page/FrameView.cpp: |
| (WebCore::FrameView::shouldDeferScrollUpdateAfterContentSizeChange): |
| (WebCore::FrameView::updateLayoutViewport): |
| (WebCore::FrameView::updateLayerPositionsAfterScrolling): |
| (WebCore::FrameView::updateCompositingLayersAfterScrolling): |
| (WebCore::FrameView::availableContentSizeChanged): |
| * page/FrameView.h: |
| * page/FrameViewLayoutContext.cpp: Copied from Source/WebCore/page/LayoutContext.cpp. |
| (WebCore::LayoutScope::LayoutScope): |
| (WebCore::FrameViewLayoutContext::FrameViewLayoutContext): |
| (WebCore::FrameViewLayoutContext::~FrameViewLayoutContext): |
| (WebCore::FrameViewLayoutContext::layout): |
| (WebCore::FrameViewLayoutContext::runOrScheduleAsynchronousTasks): |
| (WebCore::FrameViewLayoutContext::runAsynchronousTasks): |
| (WebCore::FrameViewLayoutContext::flushAsynchronousTasks): |
| (WebCore::FrameViewLayoutContext::reset): |
| (WebCore::FrameViewLayoutContext::needsLayout const): |
| (WebCore::FrameViewLayoutContext::setNeedsLayout): |
| (WebCore::FrameViewLayoutContext::enableSetNeedsLayout): |
| (WebCore::FrameViewLayoutContext::disableSetNeedsLayout): |
| (WebCore::FrameViewLayoutContext::scheduleLayout): |
| (WebCore::FrameViewLayoutContext::unscheduleLayout): |
| (WebCore::FrameViewLayoutContext::scheduleSubtreeLayout): |
| (WebCore::FrameViewLayoutContext::layoutTimerFired): |
| (WebCore::FrameViewLayoutContext::convertSubtreeLayoutToFullLayout): |
| (WebCore::FrameViewLayoutContext::setSubtreeLayoutRoot): |
| (WebCore::FrameViewLayoutContext::canPerformLayout const): |
| (WebCore::FrameViewLayoutContext::applyTextSizingIfNeeded): |
| (WebCore::FrameViewLayoutContext::updateStyleForLayout): |
| (WebCore::FrameViewLayoutContext::handleLayoutWithFrameFlatteningIfNeeded): |
| (WebCore::FrameViewLayoutContext::startLayoutAtMainFrameViewIfNeeded): |
| (WebCore::FrameViewLayoutContext::layoutDelta const): |
| (WebCore::FrameViewLayoutContext::addLayoutDelta): |
| (WebCore::FrameViewLayoutContext::layoutDeltaMatches): |
| (WebCore::FrameViewLayoutContext::layoutState const): |
| (WebCore::FrameViewLayoutContext::pushLayoutState): |
| (WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded): |
| (WebCore::FrameViewLayoutContext::popLayoutState): |
| (WebCore::FrameViewLayoutContext::checkLayoutState): |
| (WebCore::FrameViewLayoutContext::frame const): |
| (WebCore::FrameViewLayoutContext::view const): |
| (WebCore::FrameViewLayoutContext::renderView const): |
| (WebCore::FrameViewLayoutContext::document const): |
| (WebCore::LayoutContext::LayoutContext): Deleted. |
| (WebCore::LayoutContext::~LayoutContext): Deleted. |
| (WebCore::LayoutContext::layout): Deleted. |
| (WebCore::LayoutContext::runOrScheduleAsynchronousTasks): Deleted. |
| (WebCore::LayoutContext::runAsynchronousTasks): Deleted. |
| (WebCore::LayoutContext::flushAsynchronousTasks): Deleted. |
| (WebCore::LayoutContext::reset): Deleted. |
| (WebCore::LayoutContext::needsLayout const): Deleted. |
| (WebCore::LayoutContext::setNeedsLayout): Deleted. |
| (WebCore::LayoutContext::enableSetNeedsLayout): Deleted. |
| (WebCore::LayoutContext::disableSetNeedsLayout): Deleted. |
| (WebCore::LayoutContext::scheduleLayout): Deleted. |
| (WebCore::LayoutContext::unscheduleLayout): Deleted. |
| (WebCore::LayoutContext::scheduleSubtreeLayout): Deleted. |
| (WebCore::LayoutContext::layoutTimerFired): Deleted. |
| (WebCore::LayoutContext::convertSubtreeLayoutToFullLayout): Deleted. |
| (WebCore::LayoutContext::setSubtreeLayoutRoot): Deleted. |
| (WebCore::LayoutContext::canPerformLayout const): Deleted. |
| (WebCore::LayoutContext::applyTextSizingIfNeeded): Deleted. |
| (WebCore::LayoutContext::updateStyleForLayout): Deleted. |
| (WebCore::LayoutContext::handleLayoutWithFrameFlatteningIfNeeded): Deleted. |
| (WebCore::LayoutContext::startLayoutAtMainFrameViewIfNeeded): Deleted. |
| (WebCore::LayoutContext::layoutDelta const): Deleted. |
| (WebCore::LayoutContext::addLayoutDelta): Deleted. |
| (WebCore::LayoutContext::layoutDeltaMatches): Deleted. |
| (WebCore::LayoutContext::layoutState const): Deleted. |
| (WebCore::LayoutContext::pushLayoutState): Deleted. |
| (WebCore::LayoutContext::pushLayoutStateForPaginationIfNeeded): Deleted. |
| (WebCore::LayoutContext::popLayoutState): Deleted. |
| (WebCore::LayoutContext::checkLayoutState): Deleted. |
| (WebCore::LayoutContext::frame const): Deleted. |
| (WebCore::LayoutContext::view const): Deleted. |
| (WebCore::LayoutContext::renderView const): Deleted. |
| (WebCore::LayoutContext::document const): Deleted. |
| * page/FrameViewLayoutContext.h: Copied from Source/WebCore/page/LayoutContext.h. |
| (WebCore::LayoutContext::startDisallowingLayout): Deleted. |
| (WebCore::LayoutContext::endDisallowingLayout): Deleted. |
| (WebCore::LayoutContext::layoutPhase const): Deleted. |
| (WebCore::LayoutContext::isLayoutNested const): Deleted. |
| (WebCore::LayoutContext::isLayoutPending const): Deleted. |
| (WebCore::LayoutContext::isInLayout const): Deleted. |
| (WebCore::LayoutContext::isInRenderTreeLayout const): Deleted. |
| (WebCore::LayoutContext::inPaintableState const): Deleted. |
| (WebCore::LayoutContext::layoutCount const): Deleted. |
| (WebCore::LayoutContext::subtreeLayoutRoot const): Deleted. |
| (WebCore::LayoutContext::clearSubtreeLayoutRoot): Deleted. |
| (WebCore::LayoutContext::resetFirstLayoutFlag): Deleted. |
| (WebCore::LayoutContext::didFirstLayout const): Deleted. |
| (WebCore::LayoutContext::setNeedsFullRepaint): Deleted. |
| (WebCore::LayoutContext::needsFullRepaint const): Deleted. |
| (WebCore::LayoutContext::isPaintOffsetCacheEnabled const): Deleted. |
| (WebCore::LayoutContext::layoutDisallowed const): Deleted. |
| (WebCore::LayoutContext::isLayoutSchedulingEnabled const): Deleted. |
| (WebCore::LayoutContext::inAsynchronousTasks const): Deleted. |
| (WebCore::LayoutContext::disablePaintOffsetCache): Deleted. |
| (WebCore::LayoutContext::enablePaintOffsetCache): Deleted. |
| * page/LayoutContext.cpp: Removed. |
| * page/LayoutContext.h: Removed. |
| * rendering/LayoutState.cpp: |
| (WebCore::LayoutState::LayoutState): |
| (WebCore::LayoutState::computePaginationInformation): |
| (WebCore::LayoutState::establishLineGrid): |
| (WebCore::LayoutStateDisabler::LayoutStateDisabler): |
| * rendering/LayoutState.h: |
| |
| 2018-04-24 Mark Lam <mark.lam@apple.com> |
| |
| Need to acquire the VM lock before calling toNumber on a JSValue. |
| https://bugs.webkit.org/show_bug.cgi?id=184924 |
| <rdar://problem/39690679> |
| |
| Reviewed by Saam Barati. |
| |
| * bridge/objc/objc_utility.mm: |
| (JSC::Bindings::convertValueToObjcValue): |
| |
| 2018-04-24 Tadeu Zagallo <tzagallo@apple.com> |
| |
| REGRESSION(r221839): Fix requests with FormData containing empty files |
| https://bugs.webkit.org/show_bug.cgi?id=184490 |
| <rdar://problem/39385169> |
| |
| Reviewed by Geoffrey Garen. |
| |
| We should not append the blob to the FormData when it is a file but has no path. It broke |
| the submission since the request was failing to read the file in FormDataStreamCFNet.h:156 |
| |
| Test: http/tests/local/formdata/send-form-data-with-empty-file.html |
| |
| * platform/network/FormData.cpp: |
| (WebCore::FormData::appendMultiPartFileValue): |
| |
| 2018-04-24 Zalan Bujtas <zalan@apple.com> |
| |
| Fix project file after r230931. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-04-24 Jer Noble <jer.noble@apple.com> |
| |
| Don't add system framework paths to FRAMEWORK_SEARCH_PATHS |
| https://bugs.webkit.org/show_bug.cgi?id=184786 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/WebCore.xcconfig: |
| * DerivedSources.make: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-04-24 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Remove dead fixed layer code |
| https://bugs.webkit.org/show_bug.cgi?id=184912 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Remove CoordinatedGraphicsLayer::setFixedToViewport() and the |
| corresponding attribute on the CoordinatedGraphicsLayerState struct. |
| The method is not called anywhere since r230952. |
| |
| CoordinatedGraphicsState struct also loses the scrollPosition attribute |
| that also isn't used anymore. |
| |
| Changes to GraphicsLayerTextureMapper class mirror those made to |
| CoordinatedGraphicsLayer, removing support for the fixed-to-viewport |
| attribute. This too was not called from anywhere. |
| |
| All that enables us removing fixed-to-viewport handling in the |
| TextureMapperLayer class. Along with related changes in the |
| CoordinatedGraphicsScene class, we're able to remove a bunch of methods |
| and member variables that are not used or needed anymore. |
| |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::GraphicsLayerTextureMapper): |
| (WebCore::GraphicsLayerTextureMapper::commitLayerChanges): |
| (WebCore::GraphicsLayerTextureMapper::setFixedToViewport): Deleted. |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::computeTransformsRecursive): |
| (WebCore::TextureMapperLayer::setFixedToViewport): Deleted. |
| (WebCore::TextureMapperLayer::isAncestorFixedToViewport const): Deleted. |
| (WebCore::TextureMapperLayer::setScrollPositionDeltaIfNeeded): Deleted. |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): |
| (WebCore::CoordinatedGraphicsLayer::syncLayerState): |
| (WebCore::CoordinatedGraphicsLayer::setFixedToViewport): Deleted. |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h: |
| (WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState): |
| |
| 2018-04-24 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Remove unused fixed layout functionality |
| https://bugs.webkit.org/show_bug.cgi?id=184908 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Ports using the CoordinatedGraphics subsystem don't expose fixed layout |
| support. As such, we're able to remove a lot of unused code and |
| unnecessary USE(COORDINATED_GRAPHICS) special cases in generic sections |
| in both WebCore and WebKit. |
| |
| With fixed layout not available for use to users of the GTK+ and WPE |
| ports, we can remove the ScrollingCoordinatorCoordinatedGraphics |
| implementation, making room for an implementation that inherits from |
| AsyncScrollingCoordinator in the future. For that purpose the |
| ScrollingCoordinator::create() function is moved into the |
| ScrollingCoordinatorCoordinatedGraphics.cpp file already. |
| |
| This also enables removing delegatedScrollRequested() method from |
| HostWindow and the inheriting ChromeClient interface. |
| |
| * loader/EmptyClients.h: |
| * page/Chrome.cpp: |
| (WebCore::Chrome::delegatedScrollRequested): Deleted. |
| * page/Chrome.h: |
| * page/ChromeClient.h: |
| * page/scrolling/ScrollingCoordinator.cpp: |
| (WebCore::ScrollingCoordinator::create): |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp: |
| (WebCore::ScrollingCoordinator::create): |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::ScrollingCoordinatorCoordinatedGraphics): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::attachToStateTree): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::detachFromStateTree): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::clearStateTree): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::updateNodeLayer): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::updateNodeViewportConstraints): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::requestScrollPositionUpdate): Deleted. |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h: Removed. |
| * platform/HostWindow.h: |
| |
| 2018-04-24 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the Apple Internal build following r230922 |
| (https://bugs.webkit.org/show_bug.cgi?id=184737) |
| |
| Cast the return value of std::map::size() to a size_t before logging it with format specifier |
| "%zu". std::map::size() returns a size_type. According to <http://en.cppreference.com/w/cpp/container/map> |
| size_type is "usually a size_t", but it may not be. An Apple Internal debug builder reports |
| that size_type = unsigned int != unsigned long = size_t. |
| |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::SourceBuffer::provideMediaData): |
| |
| 2018-04-24 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Avoid painting backing stores for zero-opacity layers |
| https://bugs.webkit.org/show_bug.cgi?id=184143 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Skip generating backing stores for layers that have zero opacity and do |
| not animate the opacity value. In the current CoordinatedGraphics system |
| this can end up saving loads of memory on Web content that deploys a |
| large number of such elements. |
| |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::shouldHaveBackingStore const): |
| |
| 2018-04-24 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the Apple Internal build following r230944 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| * platform/network/mac/CookieJarMac.mm: |
| |
| 2018-04-24 Daniel Bates <dabates@apple.com> |
| |
| Another attempt to fix the Mac and iOS build following r230944 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::policyProperties): |
| |
| 2018-04-24 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the Mac and iOS build following r230944 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::policyProperties): |
| |
| 2018-04-23 Daniel Bates <dabates@apple.com> |
| |
| Implement Same-Site cookies |
| https://bugs.webkit.org/show_bug.cgi?id=159464 |
| <rdar://problem/27196358> |
| |
| Reviewed by Brent Fulgham. |
| |
| Implements support for Same-Site cookies as per <https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00>. |
| The implementation is materially consistent with the spec. though implements the computation |
| for a document's "site for cookies" indirectly as part of loading its frame. This is done to |
| avoid traversing the frame tree on each subresource request initiated by the document or one |
| of its workers. We take advantage of the fact that Web Workers and Service Workers use their |
| host document's loader to load resources on their behalf to use the correct "site for cookies" |
| for requests (e.g. fetch()) initiating by them without the need to duplicate and store the |
| host document's "site for cookies" in the worker's script execution context. |
| |
| The implementation differs from the spec. in the handling of about: URLs and the empty URL |
| and makes the implementation in WebKit match the behavior of Chrome and Firefox as well as |
| consistent with origin inheritance as described in <https://html.spec.whatwg.org/multipage/browsers.html#origin> |
| (16 April 2018). Specifically, requests to about:blank, about:srcdoc and the empty URL ("") |
| are treated as same-site because these URLs inherit their origin from their owner. |
| |
| Tests: http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-cookies-set-in-about-blank-iframe.html |
| http/tests/cookies/same-site/fetch-in-about-blank-page.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-iframe.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-service-worker.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-worker.html |
| http/tests/cookies/same-site/fetch-in-same-origin-page.html |
| http/tests/cookies/same-site/fetch-in-same-origin-service-worker.html |
| http/tests/cookies/same-site/fetch-in-same-origin-srcdoc-iframe.html |
| http/tests/cookies/same-site/fetch-in-same-origin-worker.html |
| http/tests/cookies/same-site/popup-cross-site-post.html |
| http/tests/cookies/same-site/popup-cross-site.html |
| http/tests/cookies/same-site/popup-same-site-post.html |
| http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html |
| http/tests/cookies/same-site/popup-same-site-via-same-site-redirect.html |
| http/tests/cookies/same-site/popup-same-site.html |
| |
| * Sources.txt: Add source file SameSiteInfo.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Add source files SameSiteInfo.{cpp, h}. |
| * dom/Document.cpp: |
| (WebCore::Document::initSecurityContext): Modified to call SecurityPolicy::shouldInheritSecurityOriginFromOwner(). |
| (WebCore::Document::shouldInheritContentSecurityPolicyFromOwner const): Ditto. |
| (WebCore::shouldInheritSecurityOriginFromOwner): Deleted; moved to SecurityPolicy. |
| * dom/Document.h: |
| (WebCore::Document::firstPartyForSameSiteCookies const): Added. |
| (WebCore::Document::setFirstPartyForSameSiteCookies): Added. |
| * loader/CookieJar.cpp: |
| (WebCore::sameSiteInfo): Returns the same-site info for the request used to load the specified document. |
| (WebCore::cookies): Pass the same-site info down to the platform. |
| (WebCore::cookieRequestHeaderFieldProxy): Ditto. |
| (WebCore::setCookies): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::willSendRequest): Add same-site info to the request. |
| (WebCore::DocumentLoader::startLoadingMainResource): Update a FIXME comment to explain that |
| we can simplify ResourceRequestBase if we can remove the call to addExtraFieldsToMainResourceRequest() |
| here. Specifically, we would not need to differentiate between a request with an unspecified |
| same-site state (default state of a new request) from a request whose same-site state has |
| been explicitly set if we can assume that the same-site state of a request is set exactly |
| once. In absence of this guarantee we need an "unspecified" state to avoid overriding existing |
| same-site information computed with a null initiating document (the case of a new address bar |
| initiated load) from a load initiated by the document associated with this loader. |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::setFirstPartyForCookies): Modified to also update the first party for |
| same-site cookies ("site for cookies"). |
| (WebCore::FrameLoader::load): Add same-site info to the request. |
| (WebCore::FrameLoader::reload): Ditto. |
| (WebCore::FrameLoader::setOriginalURLForDownloadRequest): Ditto. |
| (WebCore::FrameLoader::addExtraFieldsToRequest): If the request does not already have |
| same-site info then compute it and add it to the request. Mark main frame main resource |
| requests as a "top-site". |
| (WebCore::FrameLoader::addSameSiteInfoToRequestIfNeeded): Implements the "'Same-site' and 'cross-site' |
| Requests" algorithm from <https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00#section-2.1>. |
| (WebCore::createWindow): Add same-site info to the request. |
| * loader/FrameLoader.h: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::init): Ditto. |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::createWindow): Ditto. |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner): Moved from Document.cpp. |
| * page/SecurityPolicy.h: |
| * platform/CookiesStrategy.h: |
| * platform/network/CacheValidation.cpp: |
| (WebCore::headerValueForVary): Pass the same-site info down to the platform. |
| * platform/network/CookieRequestHeaderFieldProxy.h: |
| (WebCore::CookieRequestHeaderFieldProxy::encode const): Encode same-site bits. |
| (WebCore::CookieRequestHeaderFieldProxy::decode): Decode same-site bits. |
| * platform/network/PlatformCookieJar.h: |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setAsIsolatedCopy): Added. |
| (WebCore::ResourceRequestBase::isSameSite const): Added. |
| (WebCore::ResourceRequestBase::setIsSameSite): Added. |
| (WebCore::ResourceRequestBase::isTopSite const): Added. |
| (WebCore::ResourceRequestBase::setIsTopSite): Added. |
| (WebCore::equalIgnoringHeaderFields): |
| * platform/network/ResourceRequestBase.h: |
| (WebCore::ResourceRequestBase::isSameSiteUnspecified const): Added. See comment for DocumentLoader::startLoadingMainResource() |
| for more details. |
| (WebCore::registrableDomainsAreEqual): Added. |
| (WebCore::ResourceRequestBase::encodeBase const): Encode same-site bits. |
| (WebCore::ResourceRequestBase::decodeBase): Decode same-site bits. |
| * platform/network/SameSiteInfo.cpp: Added. |
| (WebCore::SameSiteInfo::create): |
| * platform/network/SameSiteInfo.h: Added. |
| (WebCore::SameSiteInfo::encode const): |
| (WebCore::SameSiteInfo::decode): |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::setCookiesFromDOM): Pass Same-Site info down. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * platform/network/cf/ResourceRequestCFNet.cpp: |
| (WebCore::siteForCookies): Added. |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Update platform request with same-site info. |
| (WebCore::ResourceRequest::doUpdateResourceRequest): Ditto. |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::ResourceRequest::doUpdateResourceRequest): Ditto. |
| (WebCore::siteForCookies): Added. |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Update platform request with same-site info. |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::cookiesForDOM): Pass Same-Site info down. |
| (WebCore::setCookiesFromDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * platform/network/curl/CookieJarCurl.h: |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| (WebCore::CookieJarCurlDatabase::setCookiesFromDOM const): Ditto. |
| (WebCore::CookieJarCurlDatabase::cookiesForDOM const): Ditto. |
| (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const): Ditto. |
| (WebCore::CookieJarCurlDatabase::getRawCookies const): Ditto. |
| * platform/network/curl/CookieJarCurlDatabase.h: |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandle::createCurlRequest): Ditto. |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::cookiesForURL): Added; shared function to return the cookies based on the specified criterion. |
| (WebCore::setHTTPCookiesForURL): Moved from the bottom of the file to top to be closer to the other |
| CFNetwork helper functions. Modified to support fetching same-site cookies. |
| (WebCore::httpCookiesForURL): Moved to be under setHTTPCookiesForURL(). Modified to call cookiesForURL(). |
| Note the SPI used in cookiesForURL() apply the same criterion for whether to fetch secure cookies as we |
| were computing here. That is, the CFNetwork SPI only returns secure cookies if the specified URL's scheme |
| case-insensitively matches "https". |
| (WebCore::cookiesInPartitionForURL): Wrote in terms of cookiesForURL(). |
| (WebCore::cookiesForSession): Pass the Same-Site info. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::setCookiesFromDOM): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| (WebCore::deleteCookie): Pass std::nullopt for the Same-Site info so that we do not consider the SameSite |
| attribute when fetching cookies to delete. |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::setCookiesFromDOM): Pass the Same-Site info. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::createPageForServiceWorker): Set the first party for same site cookies ("site for cookies") to |
| the script URL. |
| * xml/XSLTProcessor.cpp: |
| (WebCore::XSLTProcessor::createDocumentFromSource): Copy the first party for same-site cookies to the |
| new document. |
| |
| 2018-04-23 Youenn Fablet <youenn@apple.com> |
| |
| Make WebLoaderStrategy send to NetworkResourceLoader necessary parameters to handle full loads in NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=184763 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior yet since we do not use these parameters in NetworkProcess yet. |
| |
| Add PreflightPolicy and CSP response headers as ResourceLoaderOptions. |
| This allows passing them from DocumentThreadableLoader to WebLoaderStrategy. |
| |
| Allow getting the original headers from a SubresourceLoader. |
| This allows passing them from DocumentThreadableLoader down to WebLoaderStrategy. |
| |
| * Modules/fetch/FetchLoader.cpp: |
| (WebCore::FetchLoader::startLoadingBlobURL): |
| (WebCore::FetchLoader::start): |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): |
| (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest): |
| (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): |
| * loader/ResourceLoaderOptions.h: |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::originalHeaders const): |
| * loader/SubresourceLoader.h: |
| * loader/ThreadableLoader.cpp: |
| (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): |
| (WebCore::ThreadableLoaderOptions::isolatedCopy const): |
| * loader/ThreadableLoader.h: |
| * page/EventSource.cpp: |
| (WebCore::EventSource::connect): |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::createRequest): |
| |
| 2018-04-23 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Remove WlUniquePtr<wl_display> footgun |
| https://bugs.webkit.org/show_bug.cgi?id=184405 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| WlUniquePtr<wl_display> is a pretty big footgun because there are two different destruction |
| functions -- wl_display_disconnect() and wl_display_destroy() -- and which one you need to |
| use depends on how the wl_display() was created, and WebKit uses both in different places. |
| So WlUniquePtr<wl_display> is pretty unsafe. See bug #176490 for an example of fun caused |
| by using it incorrectly. |
| |
| Let's use std::unique_ptr with custom deleter functors instead. |
| |
| * platform/graphics/wayland/WlUniquePtr.h: |
| |
| 2018-04-23 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r220112): reCAPTCHA images render off screen on Twitch.tv app Log In or Sign Up |
| https://bugs.webkit.org/show_bug.cgi?id=182859 |
| <rdar://problem/37595065> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Roll out this change from the trunk as the issue it fixed no longer occurs. |
| |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::orientationEvaluate): |
| (WebCore::aspectRatioEvaluate): |
| (WebCore::heightEvaluate): |
| (WebCore::widthEvaluate): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::layoutSizeForMediaQuery const): Deleted. |
| * page/FrameView.h: |
| * page/LayoutContext.cpp: |
| (WebCore::LayoutContext::handleLayoutWithFrameFlatteningIfNeeded): |
| |
| 2018-04-23 Daniel Bates <dabates@apple.com> |
| |
| Another attempt to fix the Windows build following r230921 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| Pass dictionary key name using a string instead of a constant and pass CFURL* to |
| siteForCookies(). |
| |
| * platform/network/cf/ResourceRequestCFNet.cpp: |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): |
| (WebCore::ResourceRequest::doUpdateResourceRequest): |
| |
| 2018-04-23 Zalan Bujtas <zalan@apple.com> |
| |
| [LayoutFormattingContext] Initial commit. |
| https://bugs.webkit.org/show_bug.cgi?id=184896 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is the initial commit of the new layout component -class definitions only (and mostly public functions). |
| See the header files (and Tools/LayoutReloaded project) for more information. |
| |
| // Top level layout. |
| rootContainer = TreeBuilder::createLayoutTree(document); |
| rootDisplayBox = new Display::Box(); |
| rootDisplayBox->setSize(viewportSize); |
| layoutContext = new LayoutContext(rootContainer, rootDisplayBox); |
| layoutContext->layout(rootContainer); |
| |
| Driven by build time flag (currently off). Not testable yet. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * layout/BlockFormatting/BlockFormattingContext.cpp: Added. |
| * layout/BlockFormatting/BlockFormattingContext.h: Added. |
| * layout/BlockFormatting/BlockFormattingState.cpp: Added. |
| * layout/BlockFormatting/BlockFormattingState.h: Added. |
| * layout/BlockFormatting/BlockMarginCollapse.cpp: Added. |
| * layout/BlockFormatting/BlockMarginCollapse.h: Added. |
| * layout/DisplayTree/DisplayBox.cpp: Added. |
| * layout/DisplayTree/DisplayBox.h: Added. |
| * layout/FloatingContext.cpp: Added. |
| * layout/FloatingContext.h: Added. |
| * layout/FloatingState.cpp: Added. |
| * layout/FloatingState.h: Added. |
| * layout/FormattingContext.cpp: Added. |
| * layout/FormattingContext.h: Added. |
| * layout/FormattingState.cpp: Added. |
| * layout/FormattingState.h: Added. |
| * layout/InlineFormatting/InlineFormattingContext.cpp: Added. |
| * layout/InlineFormatting/InlineFormattingContext.h: Added. |
| * layout/InlineFormatting/InlineFormattingState.cpp: Added. |
| * layout/InlineFormatting/InlineFormattingState.h: Added. |
| * layout/LayoutCtx.cpp: Added. |
| * layout/LayoutCtx.h: Added. |
| * layout/LayoutTree/LayoutBlockContainer.cpp: Added. |
| * layout/LayoutTree/LayoutBlockContainer.h: Added. |
| * layout/LayoutTree/LayoutBox.cpp: Added. |
| * layout/LayoutTree/LayoutBox.h: Added. |
| * layout/LayoutTree/LayoutContainer.cpp: Added. |
| * layout/LayoutTree/LayoutContainer.h: Added. |
| * layout/LayoutTree/LayoutCtx.h: Added. |
| * layout/LayoutTree/LayoutInlineBox.cpp: Added. |
| * layout/LayoutTree/LayoutInlineBox.h: Added. |
| * layout/LayoutTree/LayoutInlineContainer.cpp: Added. |
| * layout/LayoutTree/LayoutInlineContainer.h: Added. |
| |
| 2018-04-23 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the Mac and iOS build after r230921 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| Pass strings for the dictionary key names instead of using an extern constant as the |
| latter may not be available on all systems. |
| |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::setHTTPCookiesForURL): |
| |
| 2018-04-23 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the build after r230921 |
| (https://bugs.webkit.org/show_bug.cgi?id=159464) |
| |
| Pass Same-Site info through. |
| |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const): |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| |
| 2018-04-23 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, speculative macOS build fix attempt. |
| |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::SourceBuffer::provideMediaData): |
| |
| 2018-04-23 Daniel Bates <dabates@apple.com> |
| |
| Implement Same-Site cookies |
| https://bugs.webkit.org/show_bug.cgi?id=159464 |
| <rdar://problem/27196358> |
| |
| Reviewed by Brent Fulgham. |
| |
| Implements support for Same-Site cookies as per <https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00>. |
| The implementation is materially consistent with the spec. though implements the computation |
| for a document's "site for cookies" indirectly as part of loading its frame. This is done to |
| avoid traversing the frame tree on each subresource request initiated by the document or one |
| of its workers. We take advantage of the fact that Web Workers and Service Workers use their |
| host document's loader to load resources on their behalf to use the correct "site for cookies" |
| for requests (e.g. fetch()) initiating by them without the need to duplicate and store the |
| host document's "site for cookies" in the worker's script execution context. |
| |
| The implementation differs from the spec. in the handling of about: URLs and the empty URL |
| and makes the implementation in WebKit match the behavior of Chrome and Firefox as well as |
| consistent with origin inheritance as described in <https://html.spec.whatwg.org/multipage/browsers.html#origin> |
| (16 April 2018). Specifically, requests to about:blank, about:srcdoc and the empty URL ("") |
| are treated as same-site because these URLs inherit their origin from their owner. |
| |
| Tests: http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-cookies-set-in-about-blank-iframe.html |
| http/tests/cookies/same-site/fetch-in-about-blank-page.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-iframe.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-page.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-service-worker.html |
| http/tests/cookies/same-site/fetch-in-cross-origin-worker.html |
| http/tests/cookies/same-site/fetch-in-same-origin-page.html |
| http/tests/cookies/same-site/fetch-in-same-origin-service-worker.html |
| http/tests/cookies/same-site/fetch-in-same-origin-srcdoc-iframe.html |
| http/tests/cookies/same-site/fetch-in-same-origin-worker.html |
| http/tests/cookies/same-site/popup-cross-site-post.html |
| http/tests/cookies/same-site/popup-cross-site.html |
| http/tests/cookies/same-site/popup-same-site-post.html |
| http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html |
| http/tests/cookies/same-site/popup-same-site-via-same-site-redirect.html |
| http/tests/cookies/same-site/popup-same-site.html |
| |
| * Sources.txt: Add source file SameSiteInfo.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Add source files SameSiteInfo.{cpp, h}. |
| * dom/Document.cpp: |
| (WebCore::Document::initSecurityContext): Modified to call SecurityPolicy::shouldInheritSecurityOriginFromOwner(). |
| (WebCore::Document::shouldInheritContentSecurityPolicyFromOwner const): Ditto. |
| (WebCore::shouldInheritSecurityOriginFromOwner): Deleted; moved to SecurityPolicy. |
| * dom/Document.h: |
| (WebCore::Document::firstPartyForSameSiteCookies const): Added. |
| (WebCore::Document::setFirstPartyForSameSiteCookies): Added. |
| * loader/CookieJar.cpp: |
| (WebCore::sameSiteInfo): Returns the same-site info for the request used to load the specified document. |
| (WebCore::cookies): Pass the same-site info down to the platform. |
| (WebCore::cookieRequestHeaderFieldProxy): Ditto. |
| (WebCore::setCookies): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::willSendRequest): Add same-site info to the request. |
| (WebCore::DocumentLoader::startLoadingMainResource): Update a FIXME comment to explain that |
| we can simplify ResourceRequestBase if we can remove the call to addExtraFieldsToMainResourceRequest() |
| here. Specifically, we would not need to differentiate between a request with an unspecified |
| same-site state (default state of a new request) from a request whose same-site state has |
| been explicitly set if we can assume that the same-site state of a request is set exactly |
| once. In absence of this guarantee we need an "unspecified" state to avoid overriding existing |
| same-site information computed with a null initiating document (the case of a new address bar |
| initiated load) from a load initiated by the document associated with this loader. |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::setFirstPartyForCookies): Modified to also update the first party for |
| same-site cookies ("site for cookies"). |
| (WebCore::FrameLoader::load): Add same-site info to the request. |
| (WebCore::FrameLoader::reload): Ditto. |
| (WebCore::FrameLoader::setOriginalURLForDownloadRequest): Ditto. |
| (WebCore::FrameLoader::addExtraFieldsToRequest): If the request does not already have |
| same-site info then compute it and add it to the request. Mark main frame main resource |
| requests as a "top-site". |
| (WebCore::FrameLoader::addSameSiteInfoToRequestIfNeeded): Implements the "'Same-site' and 'cross-site' |
| Requests" algorithm from <https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00#section-2.1>. |
| (WebCore::createWindow): Add same-site info to the request. |
| * loader/FrameLoader.h: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::init): Ditto. |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::createWindow): Ditto. |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner): Moved from Document.cpp. |
| * page/SecurityPolicy.h: |
| * platform/CookiesStrategy.h: |
| * platform/network/CacheValidation.cpp: |
| (WebCore::headerValueForVary): Pass the same-site info down to the platform. |
| * platform/network/CookieRequestHeaderFieldProxy.h: |
| (WebCore::CookieRequestHeaderFieldProxy::encode const): Encode same-site bits. |
| (WebCore::CookieRequestHeaderFieldProxy::decode): Decode same-site bits. |
| * platform/network/PlatformCookieJar.h: |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setAsIsolatedCopy): Added. |
| (WebCore::ResourceRequestBase::isSameSite const): Added. |
| (WebCore::ResourceRequestBase::setIsSameSite): Added. |
| (WebCore::ResourceRequestBase::isTopSite const): Added. |
| (WebCore::ResourceRequestBase::setIsTopSite): Added. |
| (WebCore::equalIgnoringHeaderFields): |
| * platform/network/ResourceRequestBase.h: |
| (WebCore::ResourceRequestBase::isSameSiteUnspecified const): Added. See comment for DocumentLoader::startLoadingMainResource() |
| for more details. |
| (WebCore::registrableDomainsAreEqual): Added. |
| (WebCore::ResourceRequestBase::encodeBase const): Encode same-site bits. |
| (WebCore::ResourceRequestBase::decodeBase): Decode same-site bits. |
| * platform/network/SameSiteInfo.cpp: Added. |
| (WebCore::SameSiteInfo::create): |
| * platform/network/SameSiteInfo.h: Added. |
| (WebCore::SameSiteInfo::encode const): |
| (WebCore::SameSiteInfo::decode): |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::setCookiesFromDOM): Pass Same-Site info down. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * platform/network/cf/ResourceRequestCFNet.cpp: |
| (WebCore::siteForCookies): Added. |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Update platform request with same-site info. |
| (WebCore::ResourceRequest::doUpdateResourceRequest): Ditto. |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::ResourceRequest::doUpdateResourceRequest): Ditto. |
| (WebCore::siteForCookies): Added. |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Update platform request with same-site info. |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::cookiesForDOM): Pass Same-Site info down. |
| (WebCore::setCookiesFromDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * platform/network/curl/CookieJarCurl.h: |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| (WebCore::CookieJarCurlDatabase::setCookiesFromDOM const): Ditto. |
| (WebCore::CookieJarCurlDatabase::cookiesForDOM const): Ditto. |
| (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const): Ditto. |
| (WebCore::CookieJarCurlDatabase::getRawCookies const): Ditto. |
| * platform/network/curl/CookieJarCurlDatabase.h: |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandle::createCurlRequest): Ditto. |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::cookiesForURL): Added; shared function to return the cookies based on the specified criterion. |
| (WebCore::setHTTPCookiesForURL): Moved from the bottom of the file to top to be closer to the other |
| CFNetwork helper functions. Modified to support fetching same-site cookies. |
| (WebCore::httpCookiesForURL): Moved to be under setHTTPCookiesForURL(). Modified to call cookiesForURL(). |
| Note the SPI used in cookiesForURL() apply the same criterion for whether to fetch secure cookies as we |
| were computing here. That is, the CFNetwork SPI only returns secure cookies if the specified URL's scheme |
| case-insensitively matches "https". |
| (WebCore::cookiesInPartitionForURL): Wrote in terms of cookiesForURL(). |
| (WebCore::cookiesForSession): Pass the Same-Site info. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::setCookiesFromDOM): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| (WebCore::deleteCookie): Pass std::nullopt for the Same-Site info so that we do not consider the SameSite |
| attribute when fetching cookies to delete. |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::setCookiesFromDOM): Pass the Same-Site info. |
| (WebCore::cookiesForDOM): Ditto. |
| (WebCore::cookieRequestHeaderFieldValue): Ditto. |
| (WebCore::getRawCookies): Ditto. |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::createPageForServiceWorker): Set the first party for same site cookies ("site for cookies") to |
| the script URL. |
| * xml/XSLTProcessor.cpp: |
| (WebCore::XSLTProcessor::createDocumentFromSource): Copy the first party for same-site cookies to the |
| new document. |
| |
| 2018-04-23 Chris Dumez <cdumez@apple.com> |
| |
| HTML String load cannot be prevented by responding 'Cancel' asynchronously in decidePolicyForNavigationAction |
| https://bugs.webkit.org/show_bug.cgi?id=184848 |
| <rdar://problem/39145306> |
| |
| Reviewed by Brady Eidson. |
| |
| When calling loadHTMLString on a WebView, we end up doing a load for 'about:blank' |
| with substitute data. In such case, we want to do a regular asynchronous policy |
| delegate check, there is no reason we need it to be synchronous. Update our check |
| to make sure we only do a synchronous policy check for initial 'about:blank' loads |
| that do not have substitute data. |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| |
| 2018-04-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] 100vw is roughly half of the viewport width in extra zoom mode |
| https://bugs.webkit.org/show_bug.cgi?id=184871 |
| <rdar://problem/39477595> |
| |
| Reviewed by Andy Estes. |
| |
| Currently, when computing CSS viewport units, we use ViewportConfiguration::initialScaleIgnoringContentSize(). |
| This method computes an initial scale from the layout width and height without relying on any information |
| derived from the current content size. This is done to ensure that the content size and viewport dimensions for |
| CSS viewport units should not be simultaneously dependent on each other. |
| |
| Since shrink-to-fit heuristics depend on content size, we currently assume that shrink-to-fit is disabled when |
| computing initialScaleIgnoringContentSize, by always passing in `false` for `shouldIgnoreScalingConstraints`. |
| However, in extra zoom mode, the opposite is true: since we force both `m_canIgnoreScalingConstraints` and |
| `m_forceHorizontalShrinkToFit` to be `true` in this mode, we will always try to shrink-to-fit regardless of |
| content size. |
| |
| Because of this shrink-to-fit disparity between `initialScale` and `initialScaleIgnoringContentSize`, viewport |
| units in extra zoom mode are currently computed assuming an initial scale set by the page, whereas the real |
| viewport is scaled to fit, which causes any lengths computed in terms of vw and vh to be incorrect. To fix this, |
| we introduce a version of shouldIgnoreScalingConstraints() that returns `true` iff scaling constraints are |
| always ignored, regardless of content size. We then use this in initialScaleIgnoringContentSize, instead of |
| always passing in `false` for `shouldIgnoreScalingConstraints`. |
| |
| Test: fast/css/extrazoom/viewport-units-shrink-to-fit.html |
| |
| * page/ViewportConfiguration.cpp: |
| (WebCore::ViewportConfiguration::shouldIgnoreScalingConstraintsRegardlessOfContentSize const): |
| (WebCore::ViewportConfiguration::initialScaleIgnoringContentSize const): |
| * page/ViewportConfiguration.h: |
| |
| 2018-04-23 Zalan Bujtas <zalan@apple.com> |
| |
| [Simple line layout] Generate inline boxtree using simple line layout runs. |
| https://bugs.webkit.org/show_bug.cgi?id=184833 |
| |
| Reviewed by Antti Koivisto. |
| |
| RenderBlockFlow::ensureLineBoxes triggers line layout on the block content to replace |
| the simple line layout runs with an inline boxtree. The runs generated by the fast path |
| should always match the inline tree boxes. |
| In this patch instead of triggering layout, we just convert the simple line runs to |
| inline boxes. |
| Currently, it works with only one, non-paginated text renderer, but we should be |
| able to extend it to all the simple line layout content. |
| |
| Covered by existing tests. |
| |
| * rendering/InlineBox.h: |
| (WebCore::InlineBox::setHasHyphen): |
| (WebCore::InlineBox::setCanHaveLeadingExpansion): |
| (WebCore::InlineBox::setCanHaveTrailingExpansion): |
| (WebCore::InlineBox::setForceTrailingExpansion): |
| (WebCore::InlineBox::setForceLeadingExpansion): |
| (WebCore::InlineBox::hasHyphen const): |
| (WebCore::InlineBox::canHaveLeadingExpansion const): |
| (WebCore::InlineBox::canHaveTrailingExpansion const): |
| (WebCore::InlineBox::forceTrailingExpansion const): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::ensureLineBoxes): |
| * rendering/RenderBlockFlow.h: |
| * rendering/SimpleLineLayoutFlowContents.h: |
| (WebCore::SimpleLineLayout::FlowContents::segmentForRun const): |
| * rendering/SimpleLineLayoutFunctions.cpp: |
| (WebCore::SimpleLineLayout::canUseForLineBoxTree): |
| (WebCore::SimpleLineLayout::initializeInlineBox): |
| (WebCore::SimpleLineLayout::generateLineBoxTree): |
| * rendering/SimpleLineLayoutFunctions.h: |
| * rendering/SimpleLineLayoutResolver.cpp: |
| (WebCore::SimpleLineLayout::RunResolver::rangeForLine const): |
| * rendering/SimpleLineLayoutResolver.h: |
| |
| 2018-04-23 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Remove unused trajectory cruft in CoordinatedLayerTreeHost, CoordinatedGraphicsLayer |
| https://bugs.webkit.org/show_bug.cgi?id=184881 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Remove the redundant findFirstDescendantWithContentsRecursively() and |
| setVisibleContentRectTrajectoryVector() methods on the |
| CoordinatedGraphicsLayer class. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::findFirstDescendantWithContentsRecursively): Deleted. |
| (WebCore::CoordinatedGraphicsLayer::setVisibleContentRectTrajectoryVector): Deleted. |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| |
| 2018-04-23 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] TiledBackingStore unnecessarily tracks alpha support value |
| https://bugs.webkit.org/show_bug.cgi?id=184880 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Drop the m_supportsAlpha member from the TiledBackingStore class. The |
| member value was unused. TiledBackingStore::setSupportsAlpha() method |
| is removed. |
| |
| TiledBackingStore::setSupportsAlpha() invalidated the backing store, |
| so CoordinatedGraphicsLayer::setContentsOpaque() now enforces the same |
| behavior by manually updating the m_needsDisplay struct. This means |
| that during the following layer flush the backing store is repainted |
| in its entirety. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::setContentsOpaque): |
| (WebCore::CoordinatedGraphicsLayer::createBackingStore): |
| * platform/graphics/texmap/coordinated/TiledBackingStore.cpp: |
| (WebCore::TiledBackingStore::TiledBackingStore): |
| (WebCore::TiledBackingStore::setSupportsAlpha): Deleted. |
| * platform/graphics/texmap/coordinated/TiledBackingStore.h: |
| |
| 2018-04-23 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Start implementing Audio/VideoTrackPrivateGSTreamer::kind method |
| https://bugs.webkit.org/show_bug.cgi?id=184650 |
| |
| Reviewed by Philippe Normand. |
| |
| In the playbin3 case we can assume that if the GstStream is selected by default, |
| it is the Main track of that kind. |
| |
| No new tests are added as: |
| * It relies on playbin3 case which support might be compiled out |
| * we already have a few test that are currently disabled in the mediastream |
| testsuite. This patch is part of the work to enable them. |
| |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp: |
| (WebCore::AudioTrackPrivateGStreamer::kind const): |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp: |
| (WebCore::VideoTrackPrivateGStreamer::kind const): |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h: |
| |
| 2018-04-23 Alicia Boya García <aboya@igalia.com> |
| |
| [MSE] Add allSamplesInTrackEnqueued event |
| https://bugs.webkit.org/show_bug.cgi?id=184737 |
| |
| MediaSource has a .endOfStream() method to signal when there are no more frames |
| after the ones currently buffered. |
| |
| This bit of data is important for some multimedia frameworks. For instance, in |
| GStreamer a stream of frames being decoded should be terminated by a |
| 'end-of-stream' (EOS) event that has a similar meaning. Some GStreamer elements |
| will expect this event in order to work properly under some circumstances. |
| |
| Unfortunately currently WebKit provides no mechanism for this: an event of |
| sorts should be emitted after no more frames are going to be enqueued to signal |
| the end of the stream. The closest mechanism WebKit has for this is |
| `markEndOfStream()`, but it's not exactly the same: markEndOfStream() informs |
| that -- as far as network buffering is concerned -- we are done; but at that |
| point there may still be (and often are) many frames waiting in the |
| decodeQueue, so it would be wrong to signal the decoder that there are no more |
| frames. |
| |
| This patch introduces a new optional method in SourceBufferPrivate, |
| `allSamplesInTrackEnqueued(const AtomicString& trackID)` that is called |
| whenever the MediaSource is in "ended" state (the user has called |
| `MediaSource.endOfStream()`) and the decodeQueue is empty. Media framework |
| implementations can use this method to send a EOS event to a decoder that needs |
| it. |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * Modules/mediasource/MediaSource.cpp: |
| (WebCore::MediaSource::streamEndedWithError): |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::SourceBuffer::provideMediaData): |
| (WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued): |
| (WebCore::SourceBuffer::trySignalAllSamplesEnqueued): |
| * Modules/mediasource/SourceBuffer.h: |
| * platform/graphics/SourceBufferPrivate.h: |
| (WebCore::SourceBufferPrivate::allSamplesInTrackEnqueued): |
| * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp: |
| (WebCore::MediaSourceClientGStreamerMSE::allSamplesInTrackEnqueued): |
| * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h: |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| (WebCore::PlaybackPipeline::allSamplesInTrackEnqueued): |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.h: |
| * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp: |
| (WebCore::SourceBufferPrivateGStreamer::allSamplesInTrackEnqueued): |
| * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h: |
| |
| 2018-04-23 Ms2ger <Ms2ger@igalia.com> |
| |
| Avoid uninitialized memory read. |
| https://bugs.webkit.org/show_bug.cgi?id=184505 |
| <rdar://problem/39348325> |
| |
| Reviewed by Dean Jackson. |
| |
| Test: imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-bounds.html |
| |
| * html/ImageBitmap.cpp: |
| (WebCore::croppedSourceRectangleWithFormatting): |
| |
| 2018-04-23 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Drop RefCounted inheritance off of TextureMapperBackingStore |
| https://bugs.webkit.org/show_bug.cgi?id=184810 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Turn TextureMapperBackingStore into a simple interface that doesn't |
| inherit from RefCounted<>. Instead, push that inheritance off to the |
| classes that implement the TextureMapperBackingStore interface. This |
| narrows down the purpose of TextureMapperBackingStore towards a simple |
| interface that TextureMapper algorithms can work with. |
| |
| TextureMapperLayer has its m_backingStore member variable turn into |
| a simple pointer instead of a RefPtr<>. Setter method and call sites of |
| that method are updated to reflect that. |
| |
| TextureMapperTiledBackingStore now inherits from RefCounted<> directly, |
| instead of through TextureMapperBackingStore. |
| |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::commitLayerChanges): |
| (WebCore::GraphicsLayerTextureMapper::updateBackingStoreIfNeeded): |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.h: |
| * platform/graphics/texmap/TextureMapperBackingStore.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::setBackingStore): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/TextureMapperTiledBackingStore.h: |
| |
| 2018-04-22 Zan Dobersek <zdobersek@igalia.com> |
| |
| [AsyncScrolling] Add generic ScrollingThread implementation |
| https://bugs.webkit.org/show_bug.cgi?id=184809 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Add a generic ScrollingThread implementation that internally uses |
| RunLoop facilities to run the scrolling thread and dispatch |
| callbacks on that thread. |
| |
| ScrollingThread::initializeRunLoop() retrieves address of the |
| thread-specific RunLoop and signals the Condition object. |
| ScrollingThread::wakeUpRunLoop() uses RunLoop::dispatch() to schedule |
| callback dispatches on the scrolling thread. |
| |
| ScrollingThread::createThreadIfNeeded() mimics Cocoa implementation and |
| waits for the RunLoop address to be retrieved before continuing. |
| |
| * SourcesGTK.txt: Add to build. |
| * SourcesWPE.txt: Ditto. |
| * page/scrolling/ScrollingThread.cpp: |
| (WebCore::ScrollingThread::createThreadIfNeeded): |
| * page/scrolling/ScrollingThread.h: |
| * page/scrolling/generic/ScrollingThreadGeneric.cpp: Added. |
| (WebCore::ScrollingThread::initializeRunLoop): |
| (WebCore::ScrollingThread::wakeUpRunLoop): |
| |
| 2018-04-22 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordinatedGraphics] Unused contentsSize, coveredRect attributes in CoordinatedGraphicsState |
| https://bugs.webkit.org/show_bug.cgi?id=184811 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Remove the unused contentsSize and coveredRect attributes on the |
| CoordinatedGraphicsState struct. CoordinatedGraphicsLayer::coverRect() |
| method is now unused and can also be removed. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h: |
| |
| 2018-04-21 Daniel Bates <dabates@apple.com> |
| |
| Cleanup CookieRequestHeaderFieldProxy |
| https://bugs.webkit.org/show_bug.cgi?id=184868 |
| |
| Remove extraneous whitespace that I inadvertently added. |
| |
| * platform/network/CookieRequestHeaderFieldProxy.h: |
| (WebCore::CookieRequestHeaderFieldProxy::decode): |
| |
| 2018-04-21 Daniel Bates <dabates@apple.com> |
| |
| Cleanup CookieRequestHeaderFieldProxy |
| https://bugs.webkit.org/show_bug.cgi?id=184868 |
| |
| Reviewed by Youenn Fablet. |
| |
| Simplify the struct CookieRequestHeaderFieldProxy and make it consistent with other structs. |
| Among other changes, remove constructors for CookieRequestHeaderFieldProxy as they are |
| unnecessary as all supported compilers support non-static data member initializers (NSDMI) |
| for aggregates, remove prefix "m_" from the name of fields as this is struct exists for |
| convenience and offers no encapsulation and simplify decoding logic of this struct. |
| |
| No functionality changed. So, no new tests. |
| |
| * loader/CookieJar.cpp: |
| (WebCore::cookieRequestHeaderFieldProxy): |
| * platform/network/CookieRequestHeaderFieldProxy.h: |
| (WebCore::CookieRequestHeaderFieldProxy::encode const): |
| (WebCore::CookieRequestHeaderFieldProxy::decode): |
| (WebCore::CookieRequestHeaderFieldProxy::CookieRequestHeaderFieldProxy): Deleted. |
| * platform/network/SocketStreamHandleImpl.cpp: |
| (WebCore::cookieDataForHandshake): |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const): |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| |
| 2018-04-21 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Show a loading indicator after pressing the play button in compact mode |
| https://bugs.webkit.org/show_bug.cgi?id=184863 |
| <rdar://problem/38939468> |
| |
| Reviewed by Dean Jackson. |
| |
| We now display a loading indicator after pressing the play button when in compact mode. We also update the |
| behavior to use assets provided through WebKitAdditions (see webkit.org/b/184862) for the play button and |
| the invalid icon. Additionally, we always show a 20% opaque black overlay in the background while any piece |
| of user interface is up. |
| |
| * Modules/modern-media-controls/controls/compact-activity-indicator.css: Added. |
| (button.compact-activity-indicator > picture): The loading indicator asset is a sprite made of 23 frames, so |
| we specify the mask size (since all buttons are rendered via a mask) to be 23 * 100% the rendered size. The |
| display of the loading indicator is performed with a first intro animation which runs once through the first |
| 8 frames and then a continuously looping animation going through the remaining frames. We use a frames() |
| timing function to achieve the frame-by-frame effect while using only from/to keyframe animations. When we |
| fade out, we use a simply opacity fade, which is combined with the spinning animation. We use CSS variables |
| to encode both animations so they can be used combined or one at a time without redefining the whole animation |
| property. |
| (button.compact-activity-indicator.spins > picture): Use the "spins" animation variable when spinning. |
| (button.compact-activity-indicator.spins.fades-out > picture): Combine the "spins" and "fades-out" animation |
| variables when fading out. |
| (@keyframes compact-activity-indicator-intro): Animation going through the first 8 frames of the loading indicator. |
| (@keyframes compact-activity-indicator-loop): Animation going through the remaining frames of the loading indicator. |
| (@keyframes compact-activity-indicator-fades-out): Animation fading opacity from 1 to 0. |
| * Modules/modern-media-controls/controls/compact-activity-indicator.js: Added. |
| (CompactActivityIndicator): |
| (CompactActivityIndicator.prototype.show): Add the "spins" CSS class to show the control spinning with the intro animation. |
| (CompactActivityIndicator.prototype.hide): Add the "fades-out" CSS class to hide the control, removing both this class and |
| the "spins" class when the fade-out animation completes. |
| * Modules/modern-media-controls/controls/compact-media-controls.css: Added. |
| (.media-controls.compact:before): Add a 20% black overlay over the video frame to provide contrast for controls. |
| (.media-controls.compact button): Ensure buttons are sized to use the entire video frame so that their hit region |
| comprises the whole video frame. |
| (.media-controls.compact button > picture): Override default blending styles for a simple solid white mask. |
| (.media-controls.compact button:active > picture): Turn off the scale down effect when pressing a button. |
| * Modules/modern-media-controls/controls/compact-media-controls.js: Expose a "state" property for the compact media controls, |
| which can be exlusively one of three: "paused", "pending" and "invalid". |
| (CompactMediaControls.): |
| (CompactMediaControls.prototype.get state): |
| (CompactMediaControls.prototype.set state): |
| (CompactMediaControls.prototype.layout): In the "paused" state, show the play button. In the "pending" state show |
| the loading indicator. In the "invalid" state show the invalid button. |
| (CompactMediaControls.prototype.get placard): Deleted. |
| (CompactMediaControls.prototype.set placard): Deleted. |
| * Modules/modern-media-controls/js-files: |
| * Modules/modern-media-controls/media/compact-media-controls-support.js: Added. |
| (CompactMediaControlsSupport.prototype.get mediaEvents): |
| (CompactMediaControlsSupport.prototype.handleEvent): Make the controls enter the "paused" state when receiving a "pause" |
| event. Make the controls enter the "invalid" state when receiving an "error" event. |
| (CompactMediaControlsSupport.prototype.enable): |
| (CompactMediaControlsSupport.prototype.disable): |
| (CompactMediaControlsSupport.prototype.buttonWasPressed): Play the media when pressing the play button and make the controls |
| enter the "pending" state. When pressing the loading indicator, pause the media and make the controls enter the "paused" state. |
| (CompactMediaControlsSupport.prototype._buttons): |
| (CompactMediaControlsSupport): |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype._supportingObjectClasses): Only use CompactMediaControlsSupport as a media controller supporting object |
| in the compact mode. |
| * Modules/modern-media-controls/media/placard-support.js: |
| (PlacardSupport.prototype.get mediaEvents): This media controller support object no longer needs to deal with compact mode. |
| * Modules/modern-media-controls/media/playback-support.js: |
| (PlaybackSupport.prototype.syncControl): This media controller support object no longer needs to deal with compact mode. |
| (PlaybackSupport): |
| |
| 2018-04-21 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Obtain compact mode icons through WebKitAdditions |
| https://bugs.webkit.org/show_bug.cgi?id=184862 |
| <rdar://problem/39621645> |
| |
| Reviewed by Jon Lee. |
| |
| * Modules/modern-media-controls/controls/button.js: |
| (Button.prototype._updateImageMetrics): Handle PDF assets where the image source's intrinsic size needs |
| to be adjusted for the device pixel density. |
| (Button): |
| * Modules/modern-media-controls/controls/icon-service.js: Expect three additional icons provided through |
| WebKitAdditions, including two in the PDF format, so we add support for this format. |
| * WebCore.xcodeproj/project.pbxproj: Copy additional assets from the WebKitAdditions build directory should |
| any be present. |
| |
| 2018-04-21 Dean Jackson <dino@apple.com> |
| |
| Expose whether you've build with the Apple Internal SDK |
| https://bugs.webkit.org/show_bug.cgi?id=184864 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Internals API to let a test know if it is running with the |
| Apple internal SDK. |
| |
| * testing/Internals.cpp: |
| (WebCore::usingAppleInternalSDK const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-20 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM does not work with DOM Level 1 events |
| https://bugs.webkit.org/show_bug.cgi?id=184847 |
| |
| Reviewed by Chris Fleizach. |
| |
| Added the accessibility events to the HTML attribute names. |
| |
| Test cases are added to the existing layout tests. |
| |
| * html/HTMLAttributeNames.in: |
| * html/HTMLElement.cpp: |
| (WebCore::HTMLElement::createEventHandlerNameMap): |
| |
| 2018-04-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r228088): [SOUP] Check TLS errors for WebSockets on GTlsConnection::accept-certificate |
| https://bugs.webkit.org/show_bug.cgi?id=184804 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/network/soup/SocketStreamHandleImpl.h: Add a public url getter. |
| * platform/network/soup/SocketStreamHandleImplSoup.cpp: |
| (WebCore::acceptCertificateCallback): Call SoupNetworkSession::checkTLSErrors() to decide whether to accept the |
| certificate or not. |
| (WebCore::connectProgressCallback): Receive the SocketStreamHandle and pass it to acceptCertificateCallback callback. |
| (WebCore::socketClientEventCallback): Ditto. |
| (WebCore::SocketStreamHandleImpl::create): Always connect to network events. |
| (WebCore::wssConnectionAcceptCertificateCallback): Deleted. |
| (WebCore::wssSocketClientEventCallback): Deleted. |
| |
| 2018-04-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Do TLS error checking on GTlsConnection::accept-certificate |
| https://bugs.webkit.org/show_bug.cgi?id=184480 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/network/soup/ResourceError.h: Change tlsError to recieve a failing URL instead of a SoupRequest, |
| since the request was only used to get the failing URL. |
| * platform/network/soup/ResourceErrorSoup.cpp: |
| (WebCore::ResourceError::tlsError): Use the given failing URL. |
| * platform/network/soup/SoupNetworkSession.cpp: |
| (WebCore::SoupNetworkSession::SoupNetworkSession): Use ssl-strict when creating the SoupSession to handle the |
| certificates ourselves by connecting to GTlsConnection::accept-certificate. |
| (WebCore::SoupNetworkSession::checkTLSErrors): Updated to receive a URL, certificate and errors instead of |
| receiving a SoupRequest and SoupMessage and extract the url, certirficate and errors from them. Also return the |
| optional error directly instead of using a completion handler since the function is always synchronous. |
| * platform/network/soup/SoupNetworkSession.h: |
| |
| 2018-04-20 Tim Horton <timothy_horton@apple.com> |
| |
| Adjust geolocation feature flag |
| https://bugs.webkit.org/show_bug.cgi?id=184856 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix Windows build after r230875. |
| |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r229828): web view doesn’t update or respond to resizing until client calls policy decision handler |
| https://bugs.webkit.org/show_bug.cgi?id=184210 |
| <rdar://problem/39072354> |
| |
| Reviewed by Wenson Hsieh. |
| |
| r229828 tried to have some API tests happy on iOS by freezing the layer tree |
| during the navigation policy decision. However, this is observable by the client |
| application and a regression from when the policy delegate was synchronous. |
| |
| To address the issue, this patch reverts r229828 and instead updates the iOS |
| API tests to wait for the next presentation update after navigating |
| before interacting with the view. |
| |
| * loader/FrameLoaderClient.h: |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| |
| 2018-04-20 Brent Fulgham <bfulgham@apple.com> |
| |
| Limit cookie header access to Network process |
| https://bugs.webkit.org/show_bug.cgi?id=184764 |
| <rdar://problem/36785285> |
| |
| Reviewed by Youenn Fablet. |
| |
| Revise the handling of cookie request headers so that we don't interact with them in the |
| WebContent process. They are only needed for interaction with the server and the network |
| process, so we should limit their scope to just the Network process. |
| |
| Instead, we should handle a token that represents the cookie headers in the WebContent |
| process, which can be converted to the relevant cookie data in the network process when |
| needed. |
| |
| * Modules/websockets/WebSocketChannel.cpp: |
| (WebCore::WebSocketChannel::didOpenSocketStream): |
| * Modules/websockets/WebSocketHandshake.cpp: |
| (WebCore::WebSocketHandshake::clientHandshakeMessage const): |
| (WebCore::WebSocketHandshake::clientHandshakeRequest const): |
| (WebCore::WebSocketHandshake::clientHandshakeCookieRequestHeaderFieldProxy const): |
| (WebCore::WebSocketHandshake::clientHandshakeMessage): Deleted. |
| (WebCore::WebSocketHandshake::clientHandshakeRequest): Deleted. |
| * Modules/websockets/WebSocketHandshake.h: |
| * WebCore.xcodeproj/project.pbxproj: |
| * loader/CookieJar.cpp: |
| (WebCore::cookieRequestHeaderFieldProxy): |
| * loader/CookieJar.h: |
| * platform/network/CookieRequestHeaderFieldProxy.h: Added. |
| (WebCore::CookieRequestHeaderFieldProxy::CookieRequestHeaderFieldProxy): |
| (WebCore::CookieRequestHeaderFieldProxy::isolatedCopy const): |
| (WebCore::CookieRequestHeaderFieldProxy::encode const): |
| (WebCore::CookieRequestHeaderFieldProxy::decode): |
| * platform/network/PlatformCookieJar.h: |
| * platform/network/SocketStreamHandle.cpp: |
| (WebCore::SocketStreamHandle::sendHandshake): |
| * platform/network/SocketStreamHandle.h: |
| * platform/network/SocketStreamHandleImpl.cpp: |
| (WebCore::SocketStreamHandleImpl::platformSendHandshake): |
| * platform/network/cf/SocketStreamHandleImpl.h: |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/curl/CookieJarCurl.h: |
| * platform/network/curl/SocketStreamHandleImpl.h: |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/soup/SocketStreamHandleImpl.h: |
| |
| 2018-04-20 Daniel Bates <dabates@apple.com> |
| |
| Hide Strong Password label when text field is too narrow |
| https://bugs.webkit.org/show_bug.cgi?id=184785 |
| <rdar://problem/38183939> |
| |
| Reviewed by Zalan Bujtas. |
| |
| We accomplish this illusion by allowing the text field's decorations to wrap, specifying flex |
| shrink factors, a flex basis and hiding overflow. Hiding overflow is accomplished by a |
| combination of setting "overflow: hidden", "text-overflow: clip", and patching RenderTextControlSingleLine::layout() |
| to ensure that the height of the container element is equal to the intrinsic height of the |
| inner elements. Because the container is a flex box and we want to vertically center its |
| contents we also need to fix up the y-position of the container element as it may have flexed |
| as a result of forcing its height to match the intrinsic height of the inner elements. |
| |
| * css/html.css: |
| (input::-webkit-strong-password-auto-fill-button): Specify a flex-shrink factor and prevent |
| wrapping of the "Strong Password" text when flexed. |
| * html/shadow/TextControlInnerElements.cpp: |
| (WebCore::TextControlInnerContainer::TextControlInnerContainer): Register for a custom style |
| resolution callback so that we can style the container if it is a Strong Password or Strong |
| Confirmation Password text field. Ideally we could accomplish this effect with a user agent- |
| specific pseudo class together with a selector definition in the user agent style sheet, |
| html.css. Unfortunately the style resolver does not seem to apply pseudo classes to |
| shadow DOM pseudo elements (why?). Therefore we use a custom style resolution callback to |
| achieve the same effect. |
| (WebCore::isStrongPasswordTextField): Returns whether the specified DOM element is a Strong |
| Password text field. |
| (WebCore::TextControlInnerContainer::resolveCustomStyle): Conditionally apply CSS properties |
| "flex-wrap: wrap" and overflow: hidden" if the shadow host of this container is a Strong |
| Password text field. |
| (WebCore::TextControlInnerElement::resolveCustomStyle): Conditionally style the inner text |
| if the shadow host of this container is a Strong Password text field. We need to apply these |
| styles here as opposed to in html.css for the same reason we need to apply the styles to |
| the container in a custom style resolution callback. See the comments for TextControlInnerContainer() |
| above for more details |
| * html/shadow/TextControlInnerElements.h: |
| * rendering/RenderTextControlSingleLine.cpp: |
| (WebCore::resetOverriddenHeight): Added. Incorporates the logic from setNeedsLayoutOnAncestors(). |
| (WebCore::RenderTextControlSingleLine::layout): Override the height of the container element to |
| match the height of the inner elements when this text field is a Strong Password field. We cache |
| the container's logical top before adjusting its height so that we can restore it after performing |
| a second layout of this renderer. This is needed because we vertically center the elements in this |
| renderer and adjusting the height of the container may cause it to flex and re-position along its |
| cross axis when the container's height is taller than the inner element's height (e.g. the "Strong |
| Password" label wraps to the next line). This re-positioning causes a noticeable jitter when |
| transitioning from a field that has a visible "Strong Password" label to one that does not. Caching |
| and restoring the logical top of the container element avoids this jitter. |
| (WebCore::setNeedsLayoutOnAncestors): Deleted. Moved its implementation into resetOverriddenHeight(). |
| |
| 2018-04-20 Dean Jackson <dino@apple.com> |
| |
| Render a badge on system preview images |
| https://bugs.webkit.org/show_bug.cgi?id=184854 |
| <rdar://problem/39615154> |
| |
| Reviewed by Tim Horton. |
| |
| At paint time, if a RenderImage is an image element |
| which is identified as a system preview, then draw |
| a little badge in the top right corner. |
| |
| It is expected that platforms will override the |
| default rendering with something that identifies |
| how a system preview will operate. e.g. QuickLook |
| on Apple systems. |
| |
| Test: system-preview/badge.html |
| |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintIntoRect): If we are |
| a system preview, call RenderTheme to draw a badge. |
| * rendering/RenderTheme.cpp: |
| (WebCore::RenderTheme::paintSystemPreviewBadge): A default |
| implementation that draws a red circle. |
| * rendering/RenderTheme.h: |
| |
| 2018-04-20 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: remove some dead code in IdentifiersFactory |
| https://bugs.webkit.org/show_bug.cgi?id=184839 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * inspector/InspectorController.cpp: |
| (WebCore::InspectorController::setProcessId): Deleted. |
| * inspector/InspectorController.h: |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Use WindowProxy in DOMWindow.idl |
| https://bugs.webkit.org/show_bug.cgi?id=184820 |
| |
| Reviewed by Sam Weinig. |
| |
| Use WindowProxy in DOMWindow.idl to match the specification more closely. |
| |
| * bindings/js/JSWindowProxy.h: |
| * bindings/js/WindowProxy.cpp: |
| (WebCore::WindowProxy::window const): |
| * bindings/js/WindowProxy.h: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (NativeToJSValueDOMConvertNeedsState): |
| * dom/Document.cpp: |
| * dom/Document.h: |
| * dom/Document.idl: |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::focus): |
| (WebCore::DOMWindow::self const): |
| (WebCore::DOMWindow::opener const): |
| (WebCore::DOMWindow::parent const): |
| (WebCore::DOMWindow::top const): |
| (WebCore::DOMWindow::open): |
| * page/DOMWindow.h: |
| * page/DOMWindow.idl: |
| * testing/Internals.cpp: |
| (WebCore::Internals::openDummyInspectorFrontend): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Update cross-origin SecurityError messages to not include the target origin |
| https://bugs.webkit.org/show_bug.cgi?id=184803 |
| <rdar://problem/39547724> |
| |
| Reviewed by Sam Weinig. |
| |
| No new tests, rebaselined existing tests. |
| |
| * bindings/js/JSDOMBindingSecurity.cpp: |
| (WebCore::canAccessDocument): |
| (WebCore::BindingSecurity::shouldAllowAccessToFrame): |
| (WebCore::BindingSecurity::shouldAllowAccessToDOMWindow): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::crossDomainAccessErrorMessage): |
| (WebCore::DOMWindow::isInsecureScriptAccess): |
| * page/DOMWindow.h: |
| * page/Location.cpp: |
| (WebCore::Location::reload): |
| |
| 2018-04-20 Chris Nardi <cnardi@chromium.org> |
| |
| Update HSL/HSLA parsing to match CSS Color 4 |
| https://bugs.webkit.org/show_bug.cgi?id=180528 |
| <rdar://problem/35926675> |
| |
| CSS Color 4 specifies a comma optional syntax for HSL/HSLA, as well as allowing angle values for the |
| hue and percent alpha values. Update our parsing to match this. |
| |
| Reviewed by Simon Fraser. |
| |
| This change also updates the import of WPT css-color to test the changes. |
| |
| Tests: LayoutTests/imported/w3c/web-platform-tests/css/css-color/hsl{a}-{001-008}.html |
| |
| * css/parser/CSSPropertyParserHelpers.cpp: |
| (WebCore::CSSPropertyParserHelpers::parseHSLParameters): |
| (WebCore::CSSPropertyParserHelpers::parseColorFunction): |
| (WebCore::CSSPropertyParserHelpers::consumeColor): |
| * platform/graphics/Color.cpp: |
| (WebCore::calcHue): |
| (WebCore::makeRGBAFromHSLA): |
| |
| 2018-04-20 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Injected bundle form client should be notified when editing text fields |
| https://bugs.webkit.org/show_bug.cgi?id=184822 |
| <rdar://problem/38807319> |
| |
| Reviewed by Tim Horton. |
| |
| Export the constructor and destructor of UserTypingGestureIndicator for use in WebKit (see WebPage.cpp). |
| |
| Test: fast/forms/extrazoom/edit-text-field-calls-injected-bundle.html |
| |
| * dom/UserTypingGestureIndicator.h: |
| |
| 2018-04-18 Jer Noble <jer.noble@apple.com> |
| |
| Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds |
| https://bugs.webkit.org/show_bug.cgi?id=184762 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/WebCore.xcconfig: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-04-20 Daniel Bates <dabates@apple.com> |
| |
| Remove code for compilers that did not support NSDMI for aggregates |
| https://bugs.webkit.org/show_bug.cgi?id=184599 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Remove workaround for earlier Visual Studio versions that did not support non-static data |
| member initializers (NSDMI) for aggregates. We have since updated all the build.webkit.org |
| and EWS bots to a newer version that supports this feature. |
| |
| * Modules/cache/CacheQueryOptions.h: |
| (WebCore::CacheQueryOptions::CacheQueryOptions): Deleted. |
| * dom/Node.h: |
| (WebCore::Node::InsertionType::InsertionType): Deleted. |
| (WebCore::Node::RemovalType::RemovalType): Deleted. |
| * html/canvas/CanvasStyle.h: |
| (WebCore::CanvasStyle::CMYKAColor::CMYKAColor): Deleted. |
| * page/EventHandler.h: |
| (WebCore::EventHandler::DragTargetResponse::DragTargetResponse): Deleted. |
| * page/animation/CSSAnimationController.h: |
| (WebCore::AnimationUpdate::AnimationUpdate): Deleted. |
| * platform/graphics/FontSelectionAlgorithm.h: |
| (WebCore::FontSelectionRequest::tied const): |
| (WebCore::FontSelectionRequest::FontSelectionRequest): Deleted. |
| (WebCore::FontSelectionCapabilities::FontSelectionCapabilities): Deleted. |
| * platform/mediastream/IceCandidate.h: |
| (WebCore::IceCandidate::IceCandidate): Deleted. |
| * platform/text/StringWithDirection.h: |
| (WebCore::StringWithDirection::StringWithDirection): Deleted. |
| * rendering/MarkedText.h: |
| (WebCore::MarkedText::MarkedText): Deleted. |
| * style/StyleUpdate.h: |
| (WebCore::Style::ElementUpdate::ElementUpdate): Deleted. |
| (WebCore::Style::ElementUpdates::ElementUpdates): Deleted. |
| (WebCore::Style::TextUpdate::TextUpdate): Deleted. |
| |
| 2018-04-20 Youenn Fablet <youenn@apple.com> |
| |
| WebPage sometimes incorrectly rules out PDF as a mime type that can be showed |
| https://bugs.webkit.org/show_bug.cgi?id=184369 |
| |
| Reviewed by Chris Dumez. |
| |
| WebPage does need to check for plugins at reception of the response. |
| In that case, the page URL is the URL from which we are navigating out. |
| Add plugin API to check for plugin availability with an extra URL parameter to cover that case. |
| |
| Covered by API test. |
| |
| * plugins/PluginData.cpp: |
| (WebCore::PluginData::supportsWebVisibleMimeTypeForURL const): |
| (WebCore::PluginData::supportsWebVisibleMimeType const): |
| * plugins/PluginData.h: |
| |
| 2018-04-20 Daniel Bates <dabates@apple.com> |
| |
| Remove Strong Password decoration when text field type changes |
| https://bugs.webkit.org/show_bug.cgi?id=184795 |
| <rdar://problem/38325108> |
| |
| Reviewed by Antti Koivisto. |
| |
| Remove the Strong Password decoration when the text field's type changes to avoid interfering |
| with web sites that allow a person to show/hide their password. |
| |
| Test: fast/forms/auto-fill-button/hide-strong-password-when-field-type-changes.html |
| |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::updateType): |
| |
| 2018-04-20 Javier Fernandez <jfernandez@igalia.com> |
| |
| Update Alignment shorthands to the spec now that they are not ambiguous |
| https://bugs.webkit.org/show_bug.cgi?id=184812 |
| |
| Reviewed by Antti Koivisto. |
| |
| Now that the issue [1] about the syntax ambiguity has been resolved we |
| don't need to use the custom syntax anymore. The Alignment shorthands |
| use now the simple syntax, defined based on the longhands' syntax. |
| |
| Since we allow all the values valid for each longhand, we'll update |
| in this CL the corresponding web platform tests. Additionally, this CL |
| updates also the shorthand serialization tests [2], which didn't |
| consider the new value 'legacy' for justify-items (and place-items) due |
| to the bug [3] Firefox still has pending to be fixed. |
| |
| [1] https://github.com/w3c/csswg-drafts/issues/1001 |
| [2] css/css-align/default-alignment/shorthand-serialization-001.html |
| [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1363875 |
| |
| Tests: imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html |
| imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html |
| imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html |
| imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html |
| |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::consumePlaceContentShorthand): Using the justify-content and align-content parsing logic to parse the shorthand. |
| (WebCore::CSSPropertyParser::consumePlaceItemsShorthand): Using the justify-items and align-items parsing logic to parse the shorthand. |
| (WebCore::CSSPropertyParser::consumePlaceSelfShorthand): Using the justify-self and align-self parsing logic to parse the shorthand. |
| |
| 2018-04-20 Daniel Bates <dabates@apple.com> |
| |
| Unreviewed, rolling out r230117. |
| |
| Broke find-in-page for PDFs |
| |
| Reverted changeset: |
| |
| "ASSERTION FAILED: ASSERT(!containsImage || |
| MIMETypeRegistry::isSupportedImageResourceMIMEType([resource |
| MIMEType])) in -[NSPasteboard(WebExtras) |
| _web_writePromisedRTFDFromArchive:containsImage:]" |
| https://bugs.webkit.org/show_bug.cgi?id=184161 |
| https://trac.webkit.org/changeset/230117 |
| |
| 2018-04-20 Eric Carlson <eric.carlson@apple.com> |
| |
| Pausing should clear m_waitingToEnterFullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=184831 |
| <rdar://problem/39602852> |
| |
| Reviewed by Jer Noble. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::pause): Clear m_waitingToEnterFullscreen |
| |
| 2018-04-20 Eric Carlson <eric.carlson@apple.com> |
| |
| [Extra zoom mode] Disable CA transactions while setting up for fullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=184817 |
| <rdar://problem/39596075> |
| |
| Reviewed by Jer Noble. |
| |
| This was tested manually as it is not possible to write an automated test for this. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::doSetup): Move the call to disable CA transactions outside |
| of the EXTRA_ZOOM_MODE check, the [CATransaction commit] was already unguarded. |
| |
| 2018-04-20 Youenn Fablet <youenn@apple.com> |
| |
| Make PluginData cache its web visible plugins |
| https://bugs.webkit.org/show_bug.cgi?id=184421 |
| |
| Reviewed by Chris Dumez. |
| |
| Buffer visible plugins until the page URL changes. |
| For that purpose, we now cache the visible plugins and the URL it was computed from in PluginData. |
| |
| Update plugin info provider API to pass the URL used to check for plugin visibility. |
| |
| No observable change of behavior. |
| |
| * loader/EmptyClients.cpp: |
| * plugins/PluginData.cpp: |
| (WebCore::PluginData::webVisiblePlugins const): |
| (WebCore::PluginData::publiclyVisiblePlugins const): |
| (WebCore::PluginData::supportsMimeType const): |
| * plugins/PluginData.h: |
| * plugins/PluginInfoProvider.h: |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed build fix after r230840. |
| |
| * bindings/js/JSWindowProxy.cpp: |
| (WebCore::JSWindowProxy::attachDebugger): |
| |
| 2018-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix the Windows build after r230831. |
| |
| * bindings/js/JSWindowProxy.cpp: |
| (WebCore::JSWindowProxy::create): |
| (WebCore::JSWindowProxy::attachDebugger): |
| |
| 2018-04-20 Chris Nardi <cnardi@chromium.org> |
| |
| Omit default value when serializing font-feature-settings |
| https://bugs.webkit.org/show_bug.cgi?id=182382 |
| |
| Reviewed by Myles C. Maxfield. |
| |
| According to the shortest-serialization principle [1], values should be omitted if their omission |
| wouldn't change the value of reparsing. As "1"/"on" is the default value for font-feature-settings, |
| omit this when serializing, matching the behavior of Firefox and Chrome. |
| |
| [1]: https://github.com/w3c/csswg-drafts/issues/1564 |
| |
| Updated css3/font-feature-settings-parsing.html, fast/css/inherited-properties-rare-text.html, |
| and fast/text/font-face-javascript.html. |
| |
| * css/CSSFontFeatureValue.cpp: |
| (WebCore::CSSFontFeatureValue::customCSSText const): |
| |
| 2018-04-19 Alexey Proskuryakov <ap@apple.com> |
| |
| More WK_ALTERNATE_FRAMEWORKS_DIR adoption in WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=184805 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/WebCoreTestShim.xcconfig: |
| * Configurations/WebCoreTestSupport.xcconfig: |
| |
| 2018-04-19 Brady Eidson <beidson@apple.com> |
| |
| Make back forward cache work with process swapping. |
| <rdar://problem/38676604> and https://bugs.webkit.org/show_bug.cgi?id=184793 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by API tests. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadWithNavigationAction): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| (WebCore::FrameLoader::reloadWithOverrideEncoding): |
| (WebCore::FrameLoader::reload): |
| (WebCore::FrameLoader::commitProvisionalLoad): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/FrameLoader.h: |
| |
| 2018-04-19 Chris Dumez <cdumez@apple.com> |
| |
| Rename JSDOMWindowProxy to JSWindowProxy |
| https://bugs.webkit.org/show_bug.cgi?id=184797 |
| |
| Reviewed by Sam Weinig. |
| |
| Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/IDLTypes.h: |
| * bindings/js/JSBindingsAllInOne.cpp: |
| * bindings/js/JSDOMConvertWindowProxy.h: |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::JSDOMWindowBase::JSDOMWindowBase): |
| (WebCore::JSDOMWindowBase::finishCreation): |
| (WebCore::JSDOMWindowBase::proxy const): |
| (WebCore::toJSDOMWindow): |
| * bindings/js/JSDOMWindowBase.h: |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::JSDOMWindow::toWrapped): |
| * bindings/js/JSEventTargetCustom.cpp: |
| (WebCore::JSEventTarget::toWrapped): |
| * bindings/js/JSRemoteDOMWindowBase.cpp: |
| (WebCore::JSRemoteDOMWindowBase::JSRemoteDOMWindowBase): |
| (WebCore::toJSRemoteDOMWindow): |
| * bindings/js/JSRemoteDOMWindowBase.h: |
| * bindings/js/JSWindowProxy.cpp: Renamed from Source/WebCore/bindings/js/JSDOMWindowProxy.cpp. |
| (WebCore::JSWindowProxy::JSWindowProxy): |
| (WebCore::JSWindowProxy::finishCreation): |
| (WebCore::JSWindowProxy::create): |
| (WebCore::JSWindowProxy::destroy): |
| (WebCore::JSWindowProxy::setWindow): |
| (WebCore::JSWindowProxy::attachDebugger): |
| (WebCore::JSWindowProxy::wrapped const): |
| (WebCore::JSWindowProxy::toWrapped): |
| (WebCore::toJS): |
| (WebCore::toJSWindowProxy): |
| * bindings/js/JSWindowProxy.h: Renamed from Source/WebCore/bindings/js/JSDOMWindowProxy.h. |
| (WebCore::toJS): |
| (WebCore::toJSWindowProxy): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::initScriptForWindowProxy): |
| * bindings/js/ScriptController.h: |
| * bindings/js/WindowProxy.cpp: |
| (WebCore::WindowProxy::createJSWindowProxy): |
| (WebCore::WindowProxy::jsWindowProxiesAsVector const): |
| (WebCore::WindowProxy::createJSWindowProxyWithInitializedScript): |
| * bindings/js/WindowProxy.h: |
| (WebCore::WindowProxy::jsWindowProxy): |
| (WebCore::WindowProxy::existingJSWindowProxy const): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (AddToIncludesForIDLType): |
| (GenerateHeader): |
| (GenerateOverloadDispatcher): |
| (GenerateImplementation): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodOverloadDispatcher): |
| * page/Frame.cpp: |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::didCreateWindowProxy const): |
| * page/csp/ContentSecurityPolicy.h: |
| |
| 2018-04-19 Dirk Schulze <krit@webbkit.org> |
| |
| Introduce SVGGeometryElement interface |
| https://bugs.webkit.org/show_bug.cgi?id=184768 |
| |
| Reviewed by Antti Koivisto. |
| |
| Start implementing SVGGeometryElement interface from SVG2. |
| https://svgwg.org/svg2-draft/types.html#InterfaceSVGGeometryElement |
| |
| Start with SVGPathElement only for now. Also, just inferface gets implemented |
| by this patch. No new functionality like isPointInFill yet. |
| Fix getPointAtLength and make it more restrictive. This follows the spec and |
| all other implementations. |
| |
| Added additional test scenarios to existing tests. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GetGnuVTableOffsetForType): |
| * svg/SVGAllInOne.cpp: |
| * svg/SVGGeometryElement.cpp: Added. |
| (WebCore::SVGGeometryElement::SVGGeometryElement): |
| (WebCore::SVGGeometryElement::isSupportedAttribute): |
| (WebCore::SVGGeometryElement::parseAttribute): |
| (WebCore::SVGGeometryElement::svgAttributeChanged): |
| (WebCore::SVGGeometryElement::createElementRenderer): |
| * svg/SVGGeometryElement.h: Added. |
| * svg/SVGGeometryElement.idl: Added. |
| * svg/SVGGradientElement.cpp: |
| * svg/SVGPathElement.cpp: |
| (WebCore::SVGPathElement::SVGPathElement): |
| (WebCore::SVGPathElement::parseAttribute): |
| (WebCore::SVGPathElement::svgAttributeChanged): |
| (WebCore::SVGPathElement::insertedIntoAncestor): |
| (WebCore::SVGPathElement::removedFromAncestor): |
| * svg/SVGPathElement.h: |
| * svg/SVGPathElement.idl: |
| |
| 2018-04-19 Tadeu Zagallo <tzagallo@apple.com> |
| |
| REGRESSION(r227340): ArrayBuffers were not being serialized when sent via MessagePorts |
| https://bugs.webkit.org/show_bug.cgi?id=184254 |
| <rdar://problem/39140200> |
| |
| Reviewed by Daniel Bates. |
| |
| Add a new encoding method to SerializedScriptValue that includes ArrayBuffers. |
| |
| Test: workers/message-port.html |
| |
| * bindings/js/SerializedScriptValue.h: |
| (WebCore::SerializedScriptValue::encode const): |
| (WebCore::SerializedScriptValue::decode): |
| * dom/messageports/MessageWithMessagePorts.h: |
| (WebCore::MessageWithMessagePorts::encode const): |
| (WebCore::MessageWithMessagePorts::decode): |
| |
| 2018-04-19 David Kilzer <ddkilzer@apple.com> |
| |
| Enable Objective-C weak references |
| <https://webkit.org/b/184789> |
| <rdar://problem/39571716> |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: |
| (CLANG_ENABLE_OBJC_WEAK): Enable. |
| |
| 2018-04-19 Antti Koivisto <antti@apple.com> |
| |
| Don't use RenderTreeBuilder::current() in RenderTreeUpdater |
| https://bugs.webkit.org/show_bug.cgi?id=184794 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Pass the builder as a parameter where needed. |
| |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::updateElementRenderer): |
| (WebCore::RenderTreeUpdater::updateTextRenderer): |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| (WebCore::RenderTreeUpdater::tearDownRenderer): |
| (WebCore::RenderTreeUpdater::tearDownTextRenderer): |
| (WebCore::RenderTreeUpdater::tearDownLeftoverPaginationRenderersIfNeeded): |
| (WebCore::RenderTreeUpdater::tearDownLeftoverShadowHostChildren): |
| * rendering/updating/RenderTreeUpdater.h: |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: |
| (WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): |
| (WebCore::RenderTreeUpdater::GeneratedContent::removeBeforePseudoElement): |
| (WebCore::RenderTreeUpdater::GeneratedContent::removeAfterPseudoElement): |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.h: |
| |
| 2018-04-19 Eric Carlson <eric.carlson@apple.com> |
| |
| Runtime logging during GC can cause crash |
| https://bugs.webkit.org/show_bug.cgi?id=184792 |
| <rdar://problem/39567927> |
| |
| Reviewed by Jer Noble. |
| |
| Test: media/destructor-logging-crash.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::~Document): Clear the logger observer immediately so anything logged |
| as a side effect of the destructor won't cause a problem. |
| (WebCore::Document::didLogMessage): Create the ConsoleMessage in a task. |
| * dom/Document.h: |
| |
| 2018-04-19 Youenn Fablet <youenn@apple.com> |
| |
| Web Inspector backend should get headers & cookies from network process separately from resource requests |
| https://bugs.webkit.org/show_bug.cgi?id=184396 |
| <rdar://problem/38877384> |
| |
| Reviewed by Brian Burg. |
| |
| Add two new loader strategies to get response and network metrics directly from |
| NetworkProcess based on resource loader identifier. |
| Use these methods in InspectorNetworkAgent when response/metrics might be filtered. |
| |
| Covered by existing tests, in particular http/tests/inspector/network/fetch-network-data.html which would fail |
| without this since we are now setting the sourceOrigin for NetworkResourceLoader, which is used to sanitize response headers. |
| |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::didReceiveResponse): |
| (WebCore::InspectorNetworkAgent::didFinishLoading): |
| * loader/LoaderStrategy.cpp: |
| (WebCore::LoaderStrategy::responseFromResourceLoaIdentifier): |
| (WebCore::LoaderStrategy::networkMetricsFromResourceLoaIdentifier): |
| * loader/LoaderStrategy.h: |
| |
| 2018-04-19 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Add a mechanism to extend the height of the layout viewport in extra zoom mode |
| https://bugs.webkit.org/show_bug.cgi?id=184782 |
| <rdar://problem/38346712> |
| |
| Reviewed by Tim Horton. |
| |
| Add a new helper on FrameView to compute an expanded layout viewport size, as well as a new setting for the |
| height expansion factor when computing visual viewport dimensions. See WebKit/ChangeLog for more detail. |
| |
| Test: fast/visual-viewport/extrazoom/layout-viewport-after-scrolling-and-resizing.html |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::expandedLayoutViewportSize): |
| * page/FrameView.h: |
| * page/Settings.yaml: |
| |
| 2018-04-19 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r229133): decidePolicyForNavigationAction not called for loading an HTML string |
| https://bugs.webkit.org/show_bug.cgi?id=184209 |
| <rdar://problem/39145306> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| In r229133, we stopped doing navigation policy checks for about:blank because about:blank |
| loads need to happen synchronously for Web-compatibility. However, this regressed loading |
| an HTML string in a WebView because in such cases, the URL is also about:blank with |
| substitute data. |
| |
| In this patch, we take a more conservative approach and restore policy checking for |
| 'about:blank' but using synchronous IPC. |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| |
| 2018-04-19 Chris Nardi <cnardi@chromium.org> |
| |
| Support calc() in webkit-gradient and cross-fade |
| https://bugs.webkit.org/show_bug.cgi?id=182225 |
| |
| Reviewed by Simon Fraser. |
| |
| calc() was previously unsupported in webkit-gradient and webkit-cross-fade, but both should take calc() values. |
| Update the code to support calc() values. |
| |
| Tests: LayoutTests/css3/calc/cross-fade-calc.html |
| LayoutTests/css3/calc/webkit-gradient-calc.html |
| |
| * css/parser/CSSPropertyParserHelpers.cpp: |
| (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientColorStop): |
| (WebCore::CSSPropertyParserHelpers::consumeCrossFade): |
| |
| 2018-04-17 Filip Pizlo <fpizlo@apple.com> |
| |
| The InternalFunction hierarchy should be in IsoSubspaces |
| https://bugs.webkit.org/show_bug.cgi?id=184721 |
| |
| Reviewed by Saam Barati. |
| |
| No new tests because no new behavior. |
| |
| * bindings/js/WebCoreJSClientData.cpp: |
| (WebCore::JSVMClientData::JSVMClientData): |
| * bindings/js/WebCoreJSClientData.h: |
| (WebCore::JSVMClientData::runtimeMethodSpace): |
| * bridge/runtime_method.cpp: |
| (JSC::RuntimeMethod::subspaceForImpl): |
| * bridge/runtime_method.h: |
| |
| 2018-04-19 Brady Eidson <beidson@apple.com> |
| |
| Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them). |
| <rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| No new tests (Refactor, no behavior change). |
| |
| In WebCore, we: |
| - Add a process-unique "BackForwardItemIdentifier" |
| - Make all HistoryItems have such an identifier as a member |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * history/BackForwardItemIdentifier.h: Added. |
| (WebCore::BackForwardItemIdentifier::logString const): |
| (WebCore::operator==): |
| (WebCore::BackForwardItemIdentifier::encode const): |
| (WebCore::BackForwardItemIdentifier::decode): |
| (WebCore::BackForwardItemIdentifier::hash const): |
| (WTF::BackForwardItemIdentifierHash::hash): |
| (WTF::BackForwardItemIdentifierHash::equal): |
| (WTF::HashTraits<WebCore::BackForwardItemIdentifier>::emptyValue): |
| (WTF::HashTraits<WebCore::BackForwardItemIdentifier>::constructDeletedValue): |
| (WTF::HashTraits<WebCore::BackForwardItemIdentifier>::isDeletedValue): |
| |
| * history/HistoryItem.cpp: |
| (WebCore::HistoryItem::generateSequenceNumber): |
| (WebCore::HistoryItem::HistoryItem): |
| (WebCore::generateSequenceNumber): Deleted. |
| |
| * history/HistoryItem.h: |
| (WebCore::HistoryItem::create): |
| (WebCore::HistoryItem::identifier const): |
| |
| 2018-04-19 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: respect the accessibility setting for dispatching the accessible events |
| https://bugs.webkit.org/show_bug.cgi?id=184619 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Added accessibilityEventsEnabled as a setting on the page. |
| |
| Test: accessibility/ios-simulator/accessibility-events-setting.html |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const): |
| * page/Settings.yaml: |
| * testing/InternalSettings.cpp: |
| (WebCore::InternalSettings::Backup::Backup): |
| (WebCore::InternalSettings::Backup::restoreTo): |
| (WebCore::InternalSettings::setAccessibilityEventsEnabled): |
| * testing/InternalSettings.h: |
| * testing/InternalSettings.idl: |
| |
| 2018-04-18 Jer Noble <jer.noble@apple.com> |
| |
| Fix build when WK_ALTERNATE_FRAMEWORKS_DIR is set to non-empty value |
| https://bugs.webkit.org/show_bug.cgi?id=184693 |
| <rdar://problem/39491884> |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-04-19 Eric Stobbart <ericstobbart@gmail.com> |
| |
| Change MediaSource WebCore to return NewObject for SourceBuffers |
| https://bugs.webkit.org/show_bug.cgi?id=184642 |
| |
| Reviewed by Chris Dumez. |
| |
| Minor change inline with IDL documentation |
| |
| * Modules/mediasource/MediaSource.cpp: |
| (WebCore::MediaSource::addSourceBuffer): |
| (): Deleted. |
| * Modules/mediasource/MediaSource.h: |
| * Modules/mediasource/MediaSource.idl: |
| |
| 2018-04-19 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Unreviewed, build fix for Ubuntu LTS GCC |
| https://bugs.webkit.org/show_bug.cgi?id=184756 |
| |
| The variable name "windowProxy" (with auto&) conflicts with the function name "windowProxy". |
| |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::updateDocument): |
| (WebCore::ScriptController::collectIsolatedContexts): |
| |
| 2018-04-19 Manuel Rego Casasnovas <rego@igalia.com> |
| |
| Caret rendered at incorrect location inside empty table cell |
| https://bugs.webkit.org/show_bug.cgi?id=85385 |
| |
| Reviewed by Zalan Bujtas. |
| |
| This is based on a previous patch by Shezan Baig <shezbaig.wk@gmail.com>. |
| |
| This fixes the position of the caret in empty cells, |
| that was painted lower than expected |
| (and then modified when you start to edit the cell). |
| |
| Ensures that editable table cells have at least one line when |
| they are laid out. This ensures that the cell's intrinsic before/after |
| padding is calculated correctly, which results in the caret location |
| being calculated correctly. |
| |
| Test: editing/caret/caret-in-empty-cell.html |
| |
| * rendering/RenderTableCell.cpp: |
| (WebCore::RenderTableCell::hasLineIfEmpty): Override method to consider |
| that it has an an empty line if the table cell is editable. |
| * rendering/RenderTableCell.h: |
| |
| 2018-04-18 Daniel Bates <dabates@apple.com> |
| |
| Cleanup TextControlInnerElements |
| https://bugs.webkit.org/show_bug.cgi?id=184475 |
| |
| Reviewed by Antti Koivisto. |
| |
| Clean up TextControlInnerElement::resolveCustomStyle(), move the implementation of |
| TextControlPlaceholderElement::create() from the header to the cpp file, replace |
| fancy comments to demarcate classes with MARK: so that they show up in Xcode's |
| function menu. |
| |
| * html/shadow/TextControlInnerElements.cpp: |
| (WebCore::TextControlInnerElement::resolveCustomStyle): |
| (WebCore::TextControlPlaceholderElement::TextControlPlaceholderElement): |
| (WebCore::TextControlPlaceholderElement::create): |
| * html/shadow/TextControlInnerElements.h: |
| |
| 2018-04-18 Chris Dumez <cdumez@apple.com> |
| |
| Rename WindowProxyController to WindowProxy |
| https://bugs.webkit.org/show_bug.cgi?id=184756 |
| |
| Reviewed by Sam Weinig. |
| |
| Rename WindowProxyController to WindowProxy for clarity. When the IDL uses WindowProxy, the implementation |
| needed use WindowProxyController type, which was a bit confusing. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/DOMWrapperWorld.cpp: |
| (WebCore::DOMWrapperWorld::~DOMWrapperWorld): |
| (WebCore::DOMWrapperWorld::clearWrappers): |
| * bindings/js/DOMWrapperWorld.h: |
| (WebCore::DOMWrapperWorld::didCreateWindowProxy): |
| (WebCore::DOMWrapperWorld::didDestroyWindowProxy): |
| * bindings/js/JSBindingsAllInOne.cpp: |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::toJS): |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::toJS): |
| (WebCore::toJSDOMWindowProxy): |
| * bindings/js/JSDOMWindowProxy.h: |
| (WebCore::toJS): |
| (WebCore::toJSDOMWindowProxy): |
| * bindings/js/ScriptCachedFrameData.cpp: |
| (WebCore::ScriptCachedFrameData::ScriptCachedFrameData): |
| (WebCore::ScriptCachedFrameData::restore): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::evaluateInWorld): |
| (WebCore::ScriptController::loadModuleScriptInWorld): |
| (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): |
| (WebCore::ScriptController::evaluateModule): |
| (WebCore::ScriptController::setupModuleScriptHandlers): |
| (WebCore::ScriptController::windowProxy): |
| (WebCore::ScriptController::enableEval): |
| (WebCore::ScriptController::enableWebAssembly): |
| (WebCore::ScriptController::disableEval): |
| (WebCore::ScriptController::disableWebAssembly): |
| (WebCore::ScriptController::updateDocument): |
| (WebCore::ScriptController::collectIsolatedContexts): |
| (WebCore::ScriptController::windowScriptNPObject): |
| (WebCore::ScriptController::executeIfJavaScriptURL): |
| * bindings/js/ScriptController.h: |
| (WebCore::ScriptController::globalObject): |
| * bindings/js/ScriptControllerMac.mm: |
| (WebCore::ScriptController::windowScriptObject): |
| * bindings/js/ScriptState.cpp: |
| (WebCore::mainWorldExecState): |
| * bindings/js/WindowProxy.cpp: Renamed from Source/WebCore/bindings/js/WindowProxyController.cpp. |
| (WebCore::WindowProxy::WindowProxy): |
| (WebCore::WindowProxy::~WindowProxy): |
| (WebCore::WindowProxy::destroyJSWindowProxy): |
| (WebCore::WindowProxy::createJSWindowProxy): |
| (WebCore::WindowProxy::jsWindowProxiesAsVector const): |
| (WebCore::WindowProxy::createJSWindowProxyWithInitializedScript): |
| (WebCore::WindowProxy::clearJSWindowProxiesNotMatchingDOMWindow): |
| (WebCore::WindowProxy::setDOMWindow): |
| (WebCore::WindowProxy::attachDebugger): |
| * bindings/js/WindowProxy.h: Renamed from Source/WebCore/bindings/js/WindowProxyController.h. |
| (WebCore::WindowProxy::jsWindowProxies const): |
| (WebCore::WindowProxy::releaseJSWindowProxies): |
| (WebCore::WindowProxy::setJSWindowProxies): |
| (WebCore::WindowProxy::jsWindowProxy): |
| (WebCore::WindowProxy::existingJSWindowProxy const): |
| (WebCore::WindowProxy::globalObject): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::clear): |
| (WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld): |
| * page/AbstractFrame.cpp: |
| (WebCore::AbstractFrame::AbstractFrame): |
| * page/AbstractFrame.h: |
| (WebCore::AbstractFrame::windowProxy): |
| (WebCore::AbstractFrame::windowProxy const): |
| * page/Page.cpp: |
| (WebCore::Page::setDebugger): |
| * page/RemoteDOMWindow.cpp: |
| (WebCore::RemoteDOMWindow::self const): |
| (WebCore::RemoteDOMWindow::top const): |
| (WebCore::RemoteDOMWindow::opener const): |
| (WebCore::RemoteDOMWindow::parent const): |
| * page/RemoteDOMWindow.h: |
| |
| 2018-04-18 Chris Dumez <cdumez@apple.com> |
| |
| Set RemoteDOMWindow's initial opener |
| https://bugs.webkit.org/show_bug.cgi?id=184716 |
| |
| Reviewed by Sam Weinig. |
| |
| Add support for WindowProxy type in the IDL. The implementation should |
| return a WindowProxyController and toJS() will take care of converting |
| this into a JSValue via JSDOMWindowProxy. |
| |
| No new tests, rebaselined existing test. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/IDLTypes.h: |
| * bindings/js/JSDOMConvertWindowProxy.h: Added. |
| (WebCore::JSConverter<IDLWindowProxy>::convert): |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::toJS): |
| * bindings/js/JSDOMWindowBase.h: |
| (WebCore::toJS): |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::toJS): |
| (WebCore::toJSDOMWindowProxy): |
| * bindings/js/JSDOMWindowProxy.h: |
| (WebCore::toJS): |
| (WebCore::toJSDOMWindowProxy): |
| * bindings/js/JSRemoteDOMWindowBase.cpp: |
| * bindings/js/JSRemoteDOMWindowBase.h: |
| * bindings/scripts/CodeGenerator.pm: |
| (IsBuiltinType): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (AddToIncludesForIDLType): |
| (GetBaseIDLType): |
| * page/RemoteDOMWindow.cpp: |
| (WebCore::RemoteDOMWindow::self const): |
| (WebCore::RemoteDOMWindow::top const): |
| (WebCore::RemoteDOMWindow::opener const): |
| (WebCore::RemoteDOMWindow::parent const): |
| * page/RemoteDOMWindow.h: |
| * page/RemoteDOMWindow.idl: |
| * page/RemoteFrame.h: |
| |
| 2018-04-18 Dean Jackson <dino@apple.com> |
| |
| Detect system preview links |
| https://bugs.webkit.org/show_bug.cgi?id=184753 |
| <rdar://problem/39500514> |
| |
| Reviewed by Antoine Quint. |
| |
| Detect a special type of link anchor, which we're calling System Previews. |
| Ultimately this will allow WebKit to present such links in a special |
| way. |
| |
| A System Preview link is an <a> element, with a rel attribute that |
| includes "system-preview". It has a single element child, which is |
| either an <img> or a <picture>. |
| |
| Test: system-preview/detection.html |
| |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::relList): Add braces. |
| (WebCore::HTMLAnchorElement::isSystemPreviewLink const): New |
| function. |
| * html/HTMLAnchorElement.h: |
| |
| * html/HTMLImageElement.cpp: |
| (WebCore::HTMLImageElement::isSystemPreviewImage const): Ask the |
| parent if it is a system preview link. |
| * html/HTMLImageElement.h: |
| * html/HTMLPictureElement.cpp: |
| (WebCore::HTMLPictureElement::isSystemPreviewImage const): Ditto. |
| * html/HTMLPictureElement.h: |
| |
| * testing/Internals.cpp: Testing helpers. |
| (WebCore::Internals::systemPreviewRelType): |
| (WebCore::Internals::isSystemPreviewLink const): |
| (WebCore::Internals::isSystemPreviewImage const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-18 Antti Koivisto <antti@apple.com> |
| |
| :active pseudo class doesn't deactivate when using pressure sensitive trackpad |
| https://bugs.webkit.org/show_bug.cgi?id=181680 |
| |
| Reviewed by Beth Dakin. |
| |
| Trackpad sends a mouse force event with force of zero after mouse up event. This causes the element under cursor |
| activate again. |
| |
| Even a fake event test doesn't appear to be currently possible as TestRunner crashes if you try to send mouseForceChanged. |
| All the tests using it are skipped. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::handleMouseForceEvent): |
| |
| Don't add HitTestRequest::Active if the force of the force event is zero. |
| |
| 2018-04-18 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure correct screen sizes |
| https://bugs.webkit.org/show_bug.cgi?id=184757 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Make sure that the screen sizes are actually correct. |
| |
| Not currently testable, will add tests when it is. |
| |
| * platform/ios/PlatformScreenIOS.mm: |
| |
| 2018-04-18 Nan Wang <n_wang@apple.com> |
| |
| AX: [macOS] WebKit hangs when triggering an alert from an AOM increment event |
| https://bugs.webkit.org/show_bug.cgi?id=184742 |
| |
| Reviewed by Chris Fleizach. |
| |
| Made increment and decrement actions on the macOS to be async. So that VoiceOver |
| won't hang indefinitely if performing the actions causes an alert or other modal |
| behaviors. |
| |
| Test: accessibility/mac/async-increment-decrement-action.html |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityPerformIncrementAction]): |
| (-[WebAccessibilityObjectWrapper _accessibilityPerformIncrementAction]): |
| (-[WebAccessibilityObjectWrapper accessibilityPerformDecrementAction]): |
| (-[WebAccessibilityObjectWrapper _accessibilityPerformDecrementAction]): |
| (-[WebAccessibilityObjectWrapper accessibilityPerformAction:]): |
| |
| 2018-04-18 Youenn Fablet <youenn@apple.com> |
| |
| MediaResourceLoader should set its fetch destination |
| https://bugs.webkit.org/show_bug.cgi?id=184746 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by updated test. |
| |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResourceLoader::requestResource): |
| |
| 2018-04-18 Jer Noble <jer.noble@apple.com> |
| |
| Fix runtime errors in simulator while playing media |
| https://bugs.webkit.org/show_bug.cgi?id=184751 |
| |
| Reviewed by Eric Carlson. |
| |
| AVURLAssetHTTPCookiesKey may not be present, and AVPlayer may not respond to certain methods. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep): |
| |
| 2018-04-18 Jer Noble <jer.noble@apple.com> |
| |
| Ignore ASSERT when setting AVAudioSessionCategory returns an error on simulator. |
| https://bugs.webkit.org/show_bug.cgi?id=184698 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/audio/ios/AudioSessionIOS.mm: |
| * platform/audio/mac/AudioSessionMac.cpp: |
| |
| 2018-04-18 Sihui Liu <sihui_liu@apple.com> |
| |
| REGRESSION: Using the reload button while offline pushes identical pages onto the back/forward list |
| https://bugs.webkit.org/show_bug.cgi?id=184570 |
| <rdar://problem/34807323> |
| |
| Reviewed by Chris Dumez. |
| |
| Set FrameLoadType properly when error occurs in reload. |
| |
| tests: Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::load): |
| |
| 2018-04-18 Chris Dumez <cdumez@apple.com> |
| |
| Add support for converting a local window to a remote window |
| https://bugs.webkit.org/show_bug.cgi?id=184515 |
| <rdar://problem/39011318> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add initial support for process-swapping when navigating cross-origin as a result |
| of a window.open(). The window object returned by window.open() is initially same |
| origin and is for about:blank. The navigation cross-origin then happens and the |
| JS wrappers for the window then point to a cross-origin window which is remote (i.e. |
| hosted in another WebProcess). |
| |
| The RemoteDOMWindow exposed to JS looks like a regular cross-origin Window with a few |
| exceptions due to our incomplete implementation (e.g. w.location returns null) and |
| most of its API is currently not functional. The RemoteDOMWindow API will be implemented |
| in a follow-up by relying on IPC. |
| |
| Test: http/tests/navigation/process-swap-window-open.html |
| |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::JSDOMGlobalObject::scriptExecutionContext const): |
| * bindings/js/JSDOMPromiseDeferred.h: |
| * bindings/js/JSDOMWindowProperties.cpp: |
| (WebCore::JSDOMWindowProperties::getOwnPropertySlot): |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::JSDOMWindowProxy::finishCreation): |
| (WebCore::JSDOMWindowProxy::create): |
| * bindings/js/JSDOMWindowProxy.h: |
| * bindings/js/JSDOMWrapper.cpp: |
| (WebCore::JSDOMObject::JSDOMObject): |
| * bindings/js/JSDOMWrapper.h: |
| * bindings/js/WindowProxyController.cpp: |
| (WebCore::WindowProxyController::createWindowProxy): |
| (WebCore::WindowProxyController::setDOMWindowForWindowProxy): |
| * bridge/objc/WebScriptObject.mm: |
| (-[WebScriptObject _isSafeScript]): |
| Teach more of our bindings code about RemoteDOMWindows. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::createDOMWindow): |
| * loader/FrameLoaderClient.h: |
| Add FrameLoaderClient function to notify the client when a DOMWindow is constructed in |
| the frame. This is needed for WebKit2 to link the old window to its new representation |
| in the new WebProcess. |
| |
| 2018-04-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CMake] Add and enable the ENABLE_CSS_ANIMATIONS_LEVEL_2 feature define |
| https://bugs.webkit.org/show_bug.cgi?id=184681 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * Sources.txt: Include CSSAnimationTriggerScrollValue.cpp in the build. |
| * WebCore.xcodeproj/project.pbxproj: Remove CSSAnimationTriggerScrollValue.cpp |
| build target now that it's built via Sources.txt. |
| |
| 2018-04-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] CoordinatedImageBacking can simplify image drawing |
| https://bugs.webkit.org/show_bug.cgi?id=183986 |
| |
| Reviewed by Michael Catanzaro. |
| |
| In CoordinatedImageBacking::update(), when drawing the image into a |
| freshly-created image backing, we can avoid save-and-restoring the |
| painting context. We also don't have to clip it, since the clipping area |
| is the same as the image (and buffer) bounds. Since the buffer is |
| initialized to transparent color, we can use the CompositeCopy operator |
| to just copy image data into the destination since there's nothing to |
| paint the source over. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: |
| (WebCore::CoordinatedImageBacking::update): |
| |
| 2018-04-17 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] Webkit should spoof as Safari on a Mac for Outlook.com |
| https://bugs.webkit.org/show_bug.cgi?id=184573 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| Add quirk for outlook.live.com. |
| |
| * platform/UserAgentQuirks.cpp: |
| (WebCore::urlRequiresMacintoshPlatform): |
| |
| 2018-04-17 Mark Lam <mark.lam@apple.com> |
| |
| Templatize CodePtr/Refs/FunctionPtrs with PtrTags. |
| https://bugs.webkit.org/show_bug.cgi?id=184702 |
| <rdar://problem/35391681> |
| |
| Reviewed by Filip Pizlo and Saam Barati. |
| |
| No new tests. This is covered by existing tests. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * css/ElementRuleCollector.cpp: |
| (WebCore::ElementRuleCollector::ruleMatches): |
| * cssjit/CSSPtrTag.h: Added. |
| * cssjit/CompiledSelector.h: |
| * cssjit/FunctionCall.h: |
| (WebCore::FunctionCall::FunctionCall): |
| (WebCore::FunctionCall::setFunctionAddress): |
| (WebCore::FunctionCall::prepareAndCall): |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::compileSelector): |
| (WebCore::SelectorCompiler::SelectorFragment::appendUnoptimizedPseudoClassWithContext): |
| (WebCore::SelectorCompiler::addPseudoClassType): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::compile): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementFunctionCallTest): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateContextFunctionCallTest): |
| * cssjit/SelectorCompiler.h: |
| (WebCore::SelectorCompiler::ruleCollectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::querySelectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::ruleCollectorSelectorCheckerFunctionWithCheckingContext): |
| (WebCore::SelectorCompiler::querySelectorSelectorCheckerFunctionWithCheckingContext): |
| * dom/SelectorQuery.cpp: |
| (WebCore::SelectorDataList::executeCompiledSingleMultiSelectorData const): |
| (WebCore::SelectorDataList::execute const): |
| * dom/SelectorQuery.h: |
| |
| 2018-04-17 Tadeu Zagallo <tzagallo@apple.com> |
| |
| Retain MessagePortChannel for transfer when disentangling ports |
| https://bugs.webkit.org/show_bug.cgi?id=184502 |
| <rdar://problem/39372771> |
| |
| Reviewed by Geoffrey Garen. |
| |
| MessagePortChannels should be retained while ports are being transferred, but that was only |
| happening when sending a port through another port, but not when sending it through a worker. |
| |
| Test: workers/worker-to-worker.html |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::entanglePortWithProcess): |
| (WebCore::MessagePortChannel::disentanglePort): |
| (WebCore::MessagePortChannel::postMessageToRemote): |
| (WebCore::MessagePortChannel::takeAllMessagesForPort): |
| |
| 2018-04-17 Tadeu Zagallo <tzagallo@apple.com> |
| |
| References from CSSStyleDeclaration to CSSValues should be weak |
| https://bugs.webkit.org/show_bug.cgi?id=180280 |
| <rdar://problem/35804869> |
| |
| Reviewed by Geoffrey Garen. |
| |
| No new tests - used the existing test to verify the leak |
| |
| * css/DeprecatedCSSOMValue.h: |
| (WebCore::DeprecatedCSSOMValue::weakPtrFactory): |
| * css/PropertySetCSSStyleDeclaration.cpp: |
| (WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM): |
| * css/PropertySetCSSStyleDeclaration.h: |
| |
| 2018-04-17 Jonathan Bedard <jbedard@apple.com> |
| |
| Unreviewed rollout of r230632. Regression in memory usage. |
| |
| That bug tracked in https://bugs.webkit.org/show_bug.cgi?id=184569. |
| |
| Tests: animations/animation-internals-api-multiple-keyframes.html |
| animations/animation-internals-api.html |
| transitions/transition-drt-api-delay.html |
| transitions/transition-drt-api.html |
| |
| * page/RuntimeEnabledFeatures.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::pseudoElement): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-17 Tadeu Zagallo <tzagallo@apple.com> |
| |
| Do not unregister MessagePorts on deallocation if it has been disentangled |
| https://bugs.webkit.org/show_bug.cgi?id=184285 |
| <rdar://problem/39256714> |
| |
| Reviewed by Darin Adler. |
| |
| Test: workers/message-port-gc.html |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::deref const): |
| |
| 2018-04-17 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Fix timing of reporting error to the client |
| https://bugs.webkit.org/show_bug.cgi?id=184707 |
| |
| Before checking the result code, check the status of callback invocation and |
| do the right thing. |
| |
| Reviewed by Youenn Fablet. |
| |
| No new tests because there's no new behavior. |
| |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::didCompleteTransfer): |
| * platform/network/curl/CurlRequest.h: |
| (WebCore::CurlRequest::needToInvokeDidReceiveResponse const): |
| |
| 2018-04-17 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Export authentication information to be used by the client. |
| https://bugs.webkit.org/show_bug.cgi?id=184709 |
| |
| Just added getters for username and password member variables. |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because there's no new behavior. |
| |
| * platform/network/curl/CurlRequest.h: |
| (WebCore::CurlRequest::user const): |
| (WebCore::CurlRequest::password const): |
| |
| 2018-04-17 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab |
| https://bugs.webkit.org/show_bug.cgi?id=184678 |
| <rdar://problem/39422122> |
| |
| Reviewed by Alex Christensen. |
| |
| Frament navigations need to happen synchronously for Web-compatibility. Because of this, |
| r225657 added code to make sure that if the client does not make the navigation policy |
| decision synchronously for frament navigations, then we'll stop waiting for the client |
| and proceed with the navigation. However, r229831 make the navigation policy decision |
| IPC decision, meaning that even if the client responds synchronously, it would be |
| asynchronously from WebCore's point of view. As a result, we would always ignore the |
| client's policy decision when doing a fragment navigation. |
| |
| This is an issue on iclould.com because the web-app links are fragment URLs. When you |
| CMD+click one of these link, we do the navigation policy check. As a result of this |
| check, Safari responds IGNORE to the policy decision and instead decides to load the |
| link in a new tab (because CMD key is pressed). Due to the bug mentioned above, we |
| would not obey the IGNORE policy decision from Safari and load the link in the current |
| tab, even though Safari would already be loading it in a new tab. |
| |
| To address the issue, I reintroduced a synchronous code path for navigation policy |
| decision making, backed by synchronous IPC. This synchronous code path is now used for |
| fragment navigations to restore pre-r229831 behavior. If the client does not answer |
| synchronously, we'll proceed with the navigation anyway, as was happening pre-r229831. |
| |
| Test: http/tests/navigation/fragment-navigation-policy-ignore.html |
| |
| * loader/EmptyClients.cpp: |
| (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction): |
| * loader/EmptyFrameLoaderClient.h: |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| * loader/FrameLoaderClient.h: |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| * loader/PolicyChecker.h: |
| |
| 2018-04-17 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r230713. |
| |
| This caused internal build failures. |
| |
| Reverted changeset: |
| |
| "Implement checked cast for DDResultRef once |
| DDResultGetTypeID() is available" |
| https://bugs.webkit.org/show_bug.cgi?id=184554 |
| https://trac.webkit.org/changeset/230713 |
| |
| 2018-04-17 Chris Dumez <cdumez@apple.com> |
| |
| Add bindings code for RemoteDOMWindow |
| https://bugs.webkit.org/show_bug.cgi?id=184653 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add bindings code for RemoteDOMWindow. A RemoteDOMWindow behaves exactly like a cross-origin |
| DOMWindow, which is backed by a RemoteDOMWindow object instead of a DOMWindow one. Since |
| a RemoteDOMWindow is always cross origin, we do not need cross-origin checks and the bindings |
| code is identical to the DOMWindow code paths from cross-origin handling. |
| |
| No new tests, this code will be used and tested via Bug 184515. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSBindingsAllInOne.cpp: |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): |
| (WebCore::JSDOMWindow::getOwnPropertySlot): |
| (WebCore::JSDOMWindow::getOwnPropertySlotByIndex): |
| (WebCore::addCrossOriginWindowOwnPropertyNames): |
| * bindings/js/JSDOMWindowCustom.h: |
| |
| * bindings/js/JSRemoteDOMWindowBase.cpp: Added. |
| (WebCore::JSRemoteDOMWindowBase::JSRemoteDOMWindowBase): |
| (WebCore::JSRemoteDOMWindowBase::destroy): |
| (WebCore::JSRemoteDOMWindowBase::javaScriptRuntimeFlags): |
| (WebCore::toJS): |
| (WebCore::toJSRemoteDOMWindow): |
| * bindings/js/JSRemoteDOMWindowBase.h: Added. |
| JSRemoteDOMWindow unfortunately currently needs to be a global object because of: |
| 1. a JSProxy's target needs to be a JSGlobalObject currently |
| 2. The 'structure()->setGlobalObject(vm, &window);' call in |
| JSDOMWindowProxy::setWindow(VM&, JSDOMGlobalObject&) which requires a JSGlobalObject. |
| Ideally, this wouldn't be the case in the future but this would require some code refactoring. |
| Our DOM global objects normally subclass JSDOMGlobalObject so I decided to subclass JSDOMGlobalObject, |
| which brings some things our bindings code expect. However, subclassing JSDOMGlobalObject directly is |
| problematic because it does not hold the m_wrapped implementation pointer. To address this issue, all |
| our our DOM global objects have a JS*Base base class which subclasses JSDOMGlobalObject and stores the |
| m_wrapped implementation pointer. I followed the same pattern here. |
| |
| (WebCore::toJS): |
| * bindings/js/JSRemoteDOMWindowCustom.cpp: Added. |
| (WebCore::JSRemoteDOMWindow::getOwnPropertySlot): |
| (WebCore::JSRemoteDOMWindow::getOwnPropertySlotByIndex): |
| (WebCore::JSRemoteDOMWindow::put): |
| (WebCore::JSRemoteDOMWindow::putByIndex): |
| (WebCore::JSRemoteDOMWindow::deleteProperty): |
| (WebCore::JSRemoteDOMWindow::deletePropertyByIndex): |
| (WebCore::JSRemoteDOMWindow::getOwnPropertyNames): |
| (WebCore::JSRemoteDOMWindow::defineOwnProperty): |
| (WebCore::JSRemoteDOMWindow::getPrototype): |
| (WebCore::JSRemoteDOMWindow::preventExtensions): |
| (WebCore::JSRemoteDOMWindow::toStringName): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (IsDOMGlobalObject): |
| (GenerateHeader): |
| (GenerateOverloadDispatcher): |
| (GenerateImplementation): |
| * page/RemoteDOMWindow.idl: Added. |
| |
| 2018-04-17 David Kilzer <ddkilzer@apple.com> |
| |
| Implement checked cast for DDResultRef once DDResultGetTypeID() is available |
| <https://webkit.org/b/184554> |
| <rdar://problem/36241894> |
| |
| Reviewed by Brent Fulgham. |
| |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::detectItemAtPositionWithRange): Implement checked cast |
| for DDResultRef. |
| |
| 2018-04-17 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Animated GIF imagery with finite looping are falling one loop short |
| https://bugs.webkit.org/show_bug.cgi?id=183153 |
| |
| Reviewed by Simon Fraser. |
| |
| The Netscape Looping Application Extension is a block which may be added |
| to a GIF file to tell the viewer to loop through the entire GIF frames. |
| This is communicated through two bytes designated for the "loopCount" in |
| this block. |
| |
| The entire block may not be found in the GIF, in which case the GIF is |
| supposed to animate its entire frames only once. |
| |
| If the block exists and loopCount = 0, this means the image has to loop |
| through its frames indefinitely. |
| |
| If the block exist and loopCount > 0, this should mean the image has to |
| loop through its frames loopCount + 1 times. The extra loop seems to be |
| the consensus among most of the GIF generators and viewers. For example, |
| if the image designer wants the image to loop through its frames n times: |
| -- The GIF generator (e.g. Adobe Photoshop and https://ezgif.com/maker) |
| will write n - 1 for loopCount. However http://gifmaker.me and |
| http://gifmaker.org write n for loopCount. |
| -- The browser (e.g. Chrome 65.0.3325 181 and FireFox Quantum 59.0.2) will |
| translate loopCount = n - 1 to: animate GIF once + loop n - 1, which |
| means loop the GIF n times. |
| |
| Because the specs are not really clear about this, we are going to consider |
| the agreed-upon behavior among most of the web browsers the specs here. |
| |
| * platform/graphics/cg/ImageDecoderCG.cpp: |
| (WebCore::ImageDecoderCG::repetitionCount const): |
| * platform/image-decoders/gif/GIFImageDecoder.cpp: |
| (WebCore::GIFImageDecoder::repetitionCount const): |
| |
| 2018-04-17 Saam Barati <sbarati@apple.com> |
| |
| Add system trace points for process launch and for initializeWebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=184669 |
| |
| Reviewed by Simon Fraser. |
| |
| No testing needed because there is no new functionality here. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::provisionalLoadStarted): |
| (WebCore::FrameLoader::checkLoadCompleteForThisFrame): |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::willSendRequestInternal): |
| (WebCore::SubresourceLoader::didFinishLoading): |
| (WebCore::SubresourceLoader::didFail): |
| (WebCore::SubresourceLoader::didCancel): |
| |
| 2018-04-17 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] AirPlay device name is sometimes wrong |
| https://bugs.webkit.org/show_bug.cgi?id=184543 |
| <rdar://problem/39105498> |
| |
| Reviewed by Jer Noble. |
| |
| No new tests, this can only be tested with a specific hardware setup. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::exernalDeviceDisplayNameForPlayer): Get the device name from the AVOutputContext |
| when possible. |
| |
| 2018-04-17 Carlos Alberto Lopez Perez <clopez@igalia.com> |
| |
| [GTK] Build fix after r230529 (WaylandCompositorDisplay leaks its wl_display) |
| https://bugs.webkit.org/show_bug.cgi?id=184406 |
| |
| Rubber-stamped by Michael Catanzaro. |
| |
| Fix build with clang 3.8 |
| |
| No new tests, it is a build fix. |
| |
| * platform/graphics/wayland/PlatformDisplayWayland.cpp: |
| (WebCore::PlatformDisplayWayland::create): |
| |
| 2018-04-16 Antoine Quint <graouts@apple.com> |
| |
| Layout Test animations/needs-layout.html is a flaky Image Failure. |
| https://bugs.webkit.org/show_bug.cgi?id=172397 |
| |
| Reviewed by Dean Jackson. |
| |
| Animations that animate a transform and uses a relative value for either the x or y components |
| require a layout before starting, which CSSAnimationController would perform in the call to |
| CSSAnimationControllerPrivate::animationTimerFired() made immediately after a CSS animation was |
| created. |
| |
| We now perform a similar task where upon setting new blending keyframes we compute a flag indicating |
| if the keyframe effect is animating a transform with relative x or y components. Then, when we perform |
| the first invalidation task, which runs in the next run loop after a change to the timing model has |
| been made, such as a call to play() on a CSSAnimation made in the TreeResolver::createAnimatedElementUpdate() |
| where the CSSAnimation was created, we call forceLayout() on this element's FrameView. We also ensure |
| we commit animations on the compositor immediately after that too, instead of waiting until the next |
| DisplayRefreshMonitor callback. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::performInvalidationTask): |
| (WebCore::DocumentTimeline::updateAnimations): |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::forceLayoutIfNeeded): |
| (WebCore::KeyframeEffectReadOnly::setBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computedNeedsForcedLayout): |
| (WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): |
| * animation/KeyframeEffectReadOnly.h: |
| |
| 2018-04-16 Pablo Saavedra <psaavedra@igalia.com> |
| |
| Inconsistent EGL defines in ImageBufferCairo |
| https://bugs.webkit.org/show_bug.cgi?id=184661 |
| |
| Reviewed by Žan Doberšek. |
| |
| On revision r219391 libepoxy is added. The headers in |
| ImageBufferCairo.cpp become inconsistent when 2D canvas is enabled |
| (-DENABLE_ACCELERATED_2D_CANVAS=ON) due to a redefinition error during |
| the Webkit build: |
| |
| ... |
| /usr/include/GLES2/gl2.h:503:82: error: 'voi |
| epoxy_glAttachShader(GLuint, GLuint)' redeclared as different kind |
| of symbol |
| GL_APICALL void GL_APIENTRY glAttachShader (GLuint |
| program, GLuint shader); |
| |
| No new tests. |
| |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| |
| 2018-04-16 Filip Pizlo <fpizlo@apple.com> |
| |
| MutationObserver should be in an IsoHeap |
| https://bugs.webkit.org/show_bug.cgi?id=184671 |
| <rdar://problem/36081981> |
| |
| Reviewed by Sam Weinig. |
| |
| No new tests because no new behavior. |
| |
| * dom/MutationObserver.cpp: |
| * dom/MutationObserver.h: |
| |
| 2018-04-16 Youenn Fablet <youenn@apple.com> |
| |
| Use NetworkLoadChecker to handle synchronous HTTP loads |
| https://bugs.webkit.org/show_bug.cgi?id=184240 |
| |
| Reviewed by Chris Dumez. |
| |
| Update LoaderStrategy::loadResourceSynchronously to pass FetchOptions directly. |
| Update various call sites accordingly. This allows NetworkProcess to do all necessary checks. |
| Add an option to disable security checks if NetworkProcess does it for WebProcess. |
| This option will be also used for regular asynchronous loads in future patches. |
| |
| Update DocumentThreadableLoader to bypass preflighting and response validation checks in case they are done in NetworkProcess. |
| |
| Covered by existing and rebased tests. |
| |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::doPreflight): |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): |
| (WebCore::DocumentThreadableLoader::loadRequest): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadResourceSynchronously): |
| * loader/FrameLoader.h: |
| * loader/LoaderStrategy.h: |
| * xml/XSLTProcessorLibxslt.cpp: |
| (WebCore::docLoaderFunc): |
| * xml/parser/XMLDocumentParserLibxml2.cpp: |
| (WebCore::openFunc): |
| |
| 2018-04-16 Christopher Reid <chris.reid@sony.com> |
| |
| [WinCairo] Media elements should be enabled by default |
| https://bugs.webkit.org/show_bug.cgi?id=184597 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Enabling media elements by default with media foundation. |
| |
| * page/SettingsDefaultValues.h: |
| |
| 2018-04-16 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Add the Accept-Language field to curl request headers |
| https://bugs.webkit.org/show_bug.cgi?id=184605 |
| |
| Reviewed by Alex Christensen. |
| |
| Add Accept-Language field to curl request headers |
| |
| * platform/network/curl/CurlRequest.cpp: |
| * platform/network/curl/CurlRequest.h: |
| |
| 2018-04-16 Chris Dumez <cdumez@apple.com> |
| |
| Move more WindowProxy-related logic from ScriptController to WindowProxyController |
| https://bugs.webkit.org/show_bug.cgi?id=184640 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Move more WindowProxy-related logic from ScriptController to WindowProxyController, |
| for clarity. |
| |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::JSDOMWindowProxy::attachDebugger): |
| * bindings/js/JSDOMWindowProxy.h: |
| * bindings/js/ScriptCachedFrameData.cpp: |
| (WebCore::ScriptCachedFrameData::ScriptCachedFrameData): |
| (WebCore::ScriptCachedFrameData::restore): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::~ScriptController): |
| (WebCore::ScriptController::initScriptForWindowProxy): |
| * bindings/js/ScriptController.h: |
| (WebCore::ScriptController::existingCacheableBindingRootObject const): |
| * bindings/js/WindowProxyController.cpp: |
| (WebCore::collectGarbageAfterWindowProxyDestruction): |
| (WebCore::WindowProxyController::~WindowProxyController): |
| (WebCore::WindowProxyController::clearWindowProxiesNotMatchingDOMWindow): |
| (WebCore::WindowProxyController::setDOMWindowForWindowProxy): |
| (WebCore::WindowProxyController::attachDebugger): |
| * bindings/js/WindowProxyController.h: |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::clear): |
| * page/Page.cpp: |
| (WebCore::Page::setDebugger): |
| |
| 2018-04-16 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Set *TrackPrivateGStreamer::active based on GstStream default select in constructor |
| https://bugs.webkit.org/show_bug.cgi?id=184652 |
| |
| Reviewed by Philippe Normand. |
| |
| In the constructor we should mark selected streams based on the default values from GstStream, |
| if the user changes them, they will be updated as required later on. |
| |
| No new tests are added as we already have a few ones that are currently disabled in |
| the mediastream testsuite. This patch is part of the work to enable them. |
| |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp: |
| (WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer): |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp: |
| (WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer): |
| |
| 2018-04-16 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Set TrackPrivateBaseGStreamer metadata information even if no client is avalaible |
| https://bugs.webkit.org/show_bug.cgi?id=184651 |
| |
| Reviewed by Philippe Normand. |
| |
| We can't notify the client if none is connected, but still we need to fill our metadatas from |
| the provided GstTagList, especially in the case of playbin3 where the client is not set yet |
| at construct time but the metadata might already be preset (and won't be updated later on). |
| |
| No new tests are added as we already have a few ones that are currently disabled in |
| the mediastream testsuite. This patch is part of the work to enable them. |
| |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged): |
| |
| 2018-04-16 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure we never return -0 through the API |
| https://bugs.webkit.org/show_bug.cgi?id=184644 |
| |
| Reviewed by Dean Jackson. |
| |
| We could sometimes return -0 instead of 0, which is surprising and leads to an error in WPT tests. |
| This would happen when playbackRate < 0. |
| |
| * animation/WebAnimationUtilities.h: |
| (WebCore::secondsToWebAnimationsAPITime): |
| |
| 2018-04-15 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Animations do not naturally get a finish event |
| https://bugs.webkit.org/show_bug.cgi?id=184639 |
| <rdar://problem/39397649> |
| |
| Reviewed by Jon Lee. |
| |
| We must call updateFinishedState() when an animation gets sampled as it means its timeline's time has progressed |
| and it may have crossed to a finished state. Calling updateFinishedState() when sampling means that we'll correctly |
| set the animation's hold time to its end value, which means that currentTime() will now always be clamped to return |
| the end time once its has reached it, so we must not schedule animations to resolve immediately anymore since otherwise |
| they will keep being scheduled in a loop. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::timeToNextRequiredTick const): |
| (WebCore::WebAnimation::resolve): |
| |
| 2018-04-15 Chris Dumez <cdumez@apple.com> |
| |
| Change Event's returnValue so it doesn't expose a new primitive |
| https://bugs.webkit.org/show_bug.cgi?id=184415 |
| |
| Reviewed by Darin Adler. |
| |
| Update Event.returnValue setter to match the latest DOM specification after: |
| - https://github.com/whatwg/dom/pull/626 |
| |
| In particular, the returnValue setter is now a no-op if the new flag value |
| is true. If the input flag value is false, it only sets the 'canceled' flag |
| if the event is cancelable and the event’s in passive listener flag is unset. |
| |
| Test: imported/w3c/web-platform-tests/dom/events/Event-returnValue.html |
| |
| * dom/Event.cpp: |
| (WebCore::Event::setLegacyReturnValue): |
| (WebCore::Event::setCanceledFlagIfPossible): |
| (WebCore::Event::preventDefault): |
| * dom/Event.h: |
| |
| 2018-04-14 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Expose a method to retrieve the GstStream from a TrackPrivateBaseGStreamer |
| https://bugs.webkit.org/show_bug.cgi?id=184620 |
| |
| Reviewed by Philippe Normand. |
| |
| This is a minor change, a dedicated test doesn't really make sense here. |
| |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: |
| (WebCore::TrackPrivateBaseGStreamer::stream): |
| |
| 2018-04-13 Ryosuke Niwa <rniwa@webkit.org> |
| |
| WebKit crashes when libwebrtc.dylib is missing |
| https://bugs.webkit.org/show_bug.cgi?id=184607 |
| |
| Rubber-stamped by Jer Noble. |
| |
| Don't call LibWebRTC related code when libwebrtc is not available. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::prepareForDestruction): |
| (WebCore::Document::suspend): |
| |
| 2018-04-13 Chris Dumez <cdumez@apple.com> |
| |
| Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame |
| https://bugs.webkit.org/show_bug.cgi?id=184591 |
| |
| Reviewed by Sam Weinig. |
| |
| Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame. |
| RemoteFrames do not need a ScriptController but do need to maintain WindowProxies. |
| This is work towards fixing Bug 184515. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/DOMWrapperWorld.cpp: |
| (WebCore::DOMWrapperWorld::~DOMWrapperWorld): |
| (WebCore::DOMWrapperWorld::clearWrappers): |
| * bindings/js/DOMWrapperWorld.h: |
| (WebCore::DOMWrapperWorld::didCreateWindowProxy): |
| (WebCore::DOMWrapperWorld::didDestroyWindowProxy): |
| * bindings/js/JSBindingsAllInOne.cpp: |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::toJSDOMWindow): |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::toJS): |
| (WebCore::toJSDOMWindowProxy): |
| * bindings/js/ScriptCachedFrameData.cpp: |
| (WebCore::ScriptCachedFrameData::ScriptCachedFrameData): |
| (WebCore::ScriptCachedFrameData::restore): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::~ScriptController): |
| (WebCore::ScriptController::evaluateInWorld): |
| (WebCore::ScriptController::loadModuleScriptInWorld): |
| (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): |
| (WebCore::ScriptController::evaluateModule): |
| (WebCore::ScriptController::clearWindowProxiesNotMatchingDOMWindow): |
| (WebCore::ScriptController::setDOMWindowForWindowProxy): |
| (WebCore::ScriptController::initScriptForWindowProxy): |
| (WebCore::ScriptController::setupModuleScriptHandlers): |
| (WebCore::ScriptController::windowProxyController): |
| (WebCore::ScriptController::enableEval): |
| (WebCore::ScriptController::enableWebAssembly): |
| (WebCore::ScriptController::disableEval): |
| (WebCore::ScriptController::disableWebAssembly): |
| (WebCore::ScriptController::attachDebugger): |
| (WebCore::ScriptController::updateDocument): |
| (WebCore::ScriptController::collectIsolatedContexts): |
| (WebCore::ScriptController::windowScriptNPObject): |
| (WebCore::ScriptController::executeIfJavaScriptURL): |
| * bindings/js/ScriptController.h: |
| (WebCore::ScriptController::globalObject): |
| * bindings/js/ScriptControllerMac.mm: |
| (WebCore::ScriptController::windowScriptObject): |
| * bindings/js/ScriptState.cpp: |
| (WebCore::mainWorldExecState): |
| * bindings/js/WindowProxyController.cpp: Added. |
| (WebCore::WindowProxyController::WindowProxyController): |
| (WebCore::WindowProxyController::destroyWindowProxy): |
| (WebCore::WindowProxyController::createWindowProxy): |
| (WebCore::WindowProxyController::windowProxies): |
| (WebCore::WindowProxyController::createWindowProxyWithInitializedScript): |
| * bindings/js/WindowProxyController.h: Added. |
| (WebCore::WindowProxyController::releaseWindowProxies): |
| (WebCore::WindowProxyController::setWindowProxies): |
| (WebCore::WindowProxyController::windowProxy): |
| (WebCore::WindowProxyController::existingWindowProxy const): |
| (WebCore::WindowProxyController::globalObject): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld): |
| * page/AbstractFrame.cpp: |
| (WebCore::AbstractFrame::AbstractFrame): |
| * page/AbstractFrame.h: |
| (WebCore::AbstractFrame::windowProxyController): |
| (WebCore::AbstractFrame::windowProxyController const): |
| |
| 2018-04-13 Brady Eidson <beidson@apple.com> |
| |
| Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one. |
| https://bugs.webkit.org/show_bug.cgi?id=184559 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by new API test. |
| |
| WebCore changes rework the meaning of a "ForSuspension" policy to simply navigate the page to about:blank. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::redirectReceived): |
| (WebCore::DocumentLoader::willSendRequest): |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * loader/DocumentLoader.h: |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::init): |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| |
| 2018-04-13 Chris Dumez <cdumez@apple.com> |
| |
| input.webkitEntries does not work as expected when folder contains accented chars |
| https://bugs.webkit.org/show_bug.cgi?id=184517 |
| <rdar://problem/39265537> |
| |
| Reviewed by Alex Christensen. |
| |
| Use String::fromUTF8() to construct a WTF String from the char* returned by |
| dirname() in FileSystem::directoryName(). Previously, we were just calling |
| the String constructor, which would treat the input as latin 1 instead of |
| UTF-8. |
| |
| Change is covered by an API test rather than a layout test due to file versioning |
| limitations. |
| |
| * platform/posix/FileSystemPOSIX.cpp: |
| (WebCore::FileSystem::directoryName): |
| |
| 2018-04-13 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [WebCore] Use @getByIdDirectPrivate / @putByIdDirectPrivate in WebCore JS |
| https://bugs.webkit.org/show_bug.cgi?id=184401 |
| |
| Rubber stamped by Saam Barati. |
| |
| Apply bug 183970 changes to WebCore JS too. This offers solid type checking |
| with @getByIdDirectPrivate(). |
| |
| * Modules/mediastream/RTCPeerConnection.js: |
| (initializeRTCPeerConnection): |
| (getLocalStreams): |
| (getStreamById): |
| (addStream): |
| * Modules/mediastream/RTCPeerConnectionInternals.js: |
| (isRTCPeerConnection): |
| * Modules/streams/ReadableByteStreamController.js: |
| (enqueue): |
| (error): |
| (close): |
| (getter.byobRequest): |
| * Modules/streams/ReadableByteStreamInternals.js: |
| (privateInitializeReadableStreamBYOBReader): |
| (privateInitializeReadableByteStreamController): |
| (privateInitializeReadableStreamBYOBRequest): |
| (isReadableByteStreamController): |
| (isReadableStreamBYOBRequest): |
| (isReadableStreamBYOBReader): |
| (readableByteStreamControllerCancel): |
| (readableByteStreamControllerError): |
| (readableByteStreamControllerClose): |
| (readableByteStreamControllerClearPendingPullIntos): |
| (readableByteStreamControllerGetDesiredSize): |
| (readableStreamHasBYOBReader): |
| (readableStreamHasDefaultReader): |
| (readableByteStreamControllerHandleQueueDrain): |
| (readableByteStreamControllerPull): |
| (readableByteStreamControllerShouldCallPull): |
| (readableByteStreamControllerCallPullIfNeeded): |
| (readableByteStreamControllerEnqueue): |
| (readableByteStreamControllerEnqueueChunk): |
| (readableByteStreamControllerRespondWithNewView): |
| (readableByteStreamControllerRespond): |
| (readableByteStreamControllerRespondInternal): |
| (readableByteStreamControllerRespondInReadableState): |
| (readableByteStreamControllerRespondInClosedState): |
| (readableByteStreamControllerProcessPullDescriptors): |
| (readableByteStreamControllerFillDescriptorFromQueue): |
| (readableByteStreamControllerShiftPendingDescriptor): |
| (readableByteStreamControllerInvalidateBYOBRequest): |
| (readableByteStreamControllerCommitDescriptor): |
| (readableStreamFulfillReadIntoRequest): |
| (readableByteStreamControllerPullInto): |
| (readableStreamAddReadIntoRequest): |
| * Modules/streams/ReadableStream.js: |
| (initializeReadableStream): |
| (pipeThrough): |
| * Modules/streams/ReadableStreamBYOBReader.js: |
| (cancel): |
| (read): |
| (releaseLock): |
| (getter.closed): |
| * Modules/streams/ReadableStreamBYOBRequest.js: |
| (respond): |
| (respondWithNewView): |
| (getter.view): |
| * Modules/streams/ReadableStreamDefaultController.js: |
| (error): |
| * Modules/streams/ReadableStreamDefaultReader.js: |
| (cancel): |
| (read): |
| (releaseLock): |
| (getter.closed): |
| * Modules/streams/ReadableStreamInternals.js: |
| (privateInitializeReadableStreamDefaultReader): |
| (readableStreamReaderGenericInitialize): |
| (readableStreamDefaultControllerError): |
| (readableStreamPipeTo): |
| (readableStreamTee): |
| (isReadableStream): |
| (isReadableStreamDefaultReader): |
| (isReadableStreamDefaultController): |
| (readableStreamError): |
| (readableStreamDefaultControllerCallPullIfNeeded): |
| (readableStreamDefaultControllerGetDesiredSize): |
| (readableStreamReaderGenericCancel): |
| (readableStreamCancel): |
| (readableStreamDefaultControllerCancel): |
| (readableStreamDefaultControllerPull): |
| (readableStreamDefaultControllerClose): |
| (readableStreamClose): |
| (readableStreamFulfillReadRequest): |
| (readableStreamDefaultReaderRead): |
| (readableStreamAddReadRequest): |
| (isReadableStreamDisturbed): |
| (readableStreamReaderGenericRelease): |
| (readableStreamDefaultControllerCanCloseOrEnqueue): |
| (privateInitializeReadableStreamDefaultController): Deleted. |
| * Modules/streams/StreamInternals.js: |
| (validateAndNormalizeQueuingStrategy): |
| * Modules/streams/WritableStream.js: |
| (initializeWritableStream): |
| (abort): |
| (close): |
| (write): |
| (getter.closed): |
| (getter.ready): |
| (getter.state): |
| * Modules/streams/WritableStreamInternals.js: |
| (isWritableStream): |
| (syncWritableStreamStateWithQueue): |
| (errorWritableStream): |
| (callOrScheduleWritableStreamAdvanceQueue): |
| * bindings/js/JSDOMBindingInternals.js: |
| (mapLikeForEach): |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Turn CSS Animations and CSS Transitions as Web Animations on by default |
| https://bugs.webkit.org/show_bug.cgi?id=184569 |
| <rdar://problem/38671301> |
| |
| Reviewed by Jon Lee. |
| |
| We now set the CSS Animations and CSS Transitions as Web Animations flag on by default. To ensure that some remaining |
| tests pass with this flag on, we expose a way to get to a PseudoElement via a new internals.pseudoElement() method. This |
| allows tests that used internals.pauseAnimationAtTimeOnPseudoElement() and internals.pauseTransitionAtTimeOnPseudoElement() |
| to now work with the Web Animations API. |
| |
| * page/RuntimeEnabledFeatures.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::pseudoElement): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-13 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR][OpenVR] Implement requestPresent()/exitPresent() and getLayers() |
| https://bugs.webkit.org/show_bug.cgi?id=184530 |
| |
| Reviewed by Žan Doberšek. |
| |
| WebVR apps should invoke requestPresent() to start presenting contents of a VRLayerInit |
| (right now a HTML canvas with a WebGL context) on the VRDisplay. This request might fail for |
| a variety of reasons and can be eventually cancelled with exitPresent(). Once we are |
| presenting we could access the presenting layers (right now just one) with getLayers(). |
| |
| Note that we are not presenting anything to the HMD yet, that will be done later in a follow |
| up patch. |
| |
| I took the chance to correct a mistak in the VRDisplayCapabilities object which has a method |
| that should be called maxLayers instead of maxLayer. |
| |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::requestPresent): |
| (WebCore::VRDisplay::stopPresenting): |
| (WebCore::VRDisplay::exitPresent): |
| (WebCore::VRDisplay::getLayers const): |
| (WebCore::VRDisplay::isPresenting const): Deleted. Implemented in the header file. |
| * Modules/webvr/VRDisplay.h: |
| (WebCore::VRDisplay::isPresenting const): |
| * Modules/webvr/VRDisplayCapabilities.h: |
| (WebCore::VRDisplayCapabilities::maxLayers const): Renamed from maxLayer(). |
| (WebCore::VRDisplayCapabilities::maxLayer const): Deleted. |
| * Modules/webvr/VRDisplayCapabilities.idl: |
| |
| 2018-04-13 Miguel Gomez <magomez@igalia.com> |
| |
| REGRESSION(r230627): [GTK][WPE] Possible deadlock when destroying the player in non AC mode |
| https://bugs.webkit.org/show_bug.cgi?id=184583 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| In non AC mode, ensure that a deadlock can't happen when destroying MediaPlayerPrivateGStreamerBase. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): |
| (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| |
| 2018-04-13 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK] [gstreamer] video won't unpause when built with -DUSE_GSTREAMER_GL=OFF |
| https://bugs.webkit.org/show_bug.cgi?id=183362 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Remove the drawCancelled flag and use a new one to indicate that the player is being destroyed. |
| That new flag is only enabled on destruction and it's not modified by cancelRepaint(), which |
| can be used to handle the pause event without avoiding future renderings. Also cancelRepaint() |
| has only effect when not in AC mode. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): |
| (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| |
| 2018-04-13 Xabier Rodriguez Calvar <calvaris@igalia.com> |
| |
| [GStreamer] Convert GStreamerUtilities in GStreamerCommon and include the GStreamer smart pointer traits |
| https://bugs.webkit.org/show_bug.cgi?id=184533 |
| |
| Reviewed by Philippe Normand. |
| |
| Renamed GStreamerUtilities* files into GStreamerCommon* and |
| modified files including them accordingly. Include |
| GRefPtrGStreamer.h and GUniquePtrGStreamer.h in GStreamerCommon.h |
| to avoid problems destroying objects when those files are |
| forgotten to be included. |
| |
| * Modules/webaudio/AudioContext.cpp: |
| * platform/GStreamer.cmake: |
| * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp: |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/GStreamerCommon.cpp: Renamed from Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp. |
| * platform/graphics/gstreamer/GStreamerCommon.h: Renamed from Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h. |
| * platform/graphics/gstreamer/ImageGStreamer.h: |
| * platform/graphics/gstreamer/ImageGStreamerCairo.cpp: |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| * platform/graphics/gstreamer/MediaSampleGStreamer.cpp: |
| * platform/graphics/gstreamer/MediaSampleGStreamer.h: |
| * platform/graphics/gstreamer/TextCombinerGStreamer.cpp: |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: |
| * platform/graphics/gstreamer/VideoSinkGStreamer.cpp: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| * platform/graphics/gstreamer/eme/GStreamerEMEUtilities.cpp: |
| * platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h: |
| * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp: |
| * platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp: |
| * platform/graphics/gstreamer/mse/AppendPipeline.cpp: |
| * platform/graphics/gstreamer/mse/AppendPipeline.h: |
| * platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp: |
| * platform/graphics/gstreamer/mse/GStreamerMediaDescription.h: |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h: |
| * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h: |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp: |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h: |
| |
| 2018-04-12 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Fix clang build error in CurlContext.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=184561 |
| |
| Reviewed by Darin Adler. |
| |
| MSVC allows explicit template specialization in classes but gcc/clang do not. |
| |
| * platform/network/curl/CurlContext.cpp: |
| |
| 2018-04-12 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Cookie Database on memory path should be :memory: |
| https://bugs.webkit.org/show_bug.cgi?id=184572 |
| |
| Reviewed by Alex Christensen. |
| |
| CookieJarDB::isOnMemory is comparing the database path with :onmemory: but it should be using :memory: |
| For reference, see: https://www.sqlite.org/inmemorydb.html |
| |
| * platform/network/curl/CookieJarDB.h: |
| |
| 2018-04-12 Daniel Bates <dabates@apple.com> |
| |
| Attmept to fix the Windows build following <https://trac.webkit.org/changeset/230602/> |
| (https://bugs.webkit.org/show_bug.cgi?id=184386) |
| |
| Visual Studio cannot prove that all cases in the switch are covered :( |
| So, add an ASSERT_NOT_REACHED() and a return a value outside of the switch block. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::destinationForType): |
| |
| 2018-04-12 Chris Dumez <cdumez@apple.com> |
| |
| Introduce remote variants of Frame / DOMWindow classes |
| https://bugs.webkit.org/show_bug.cgi?id=184467 |
| <rdar://problem/39011267> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Introduce remote variants of Frame / DOMWindow classes, for when these frames / windows |
| are hosted on another WebProcess. Those will be used in a follow-up patch. |
| |
| The hierarchy is as follows (class naming will be improved in a follow-up patch to minimise |
| patch size): |
| - AbstractFrame: A frame that can be either local or remote (hosted on another WebProcess) |
| - Frame: A local frame |
| - RemoteFrame: A frame hosted on another WebProcess. A RemoteFrame's window is also remote. |
| - AbstractDOMWindow: A window that be either local or remote (hosted on another WebProcess) |
| - DOMWindow: A local DOMWindow |
| - RemoteDOMWindow: A window hosted on another WebProcess. A RemoteDOMWindow's frame is also |
| remote. A RemoteDOMWindow is always cross-origin. |
| |
| This patch introduces global identifiers (unique across all WebProcesses) for both Frames and |
| Windows. This is useful as we need to know which Frame / DOMWindow a particular RemoteFrame / |
| RemoteDOMWindow is pointing to. |
| |
| Follow-up patch will add support for converting a local DOMWindow / Frame into a remote ones, |
| when a newly opened window (via window.open) is navigated cross-origin (Bug 184515). |
| |
| Other things we'll need to implement in follow-ups: |
| - RemoteDOMWindow will need to know about its opener in order to support the window.opener |
| API. Internally, the opener will be stored as a RemoteFrame so that window.opener always |
| returns the current window in the opener frame (which changes upon navigation). |
| - Nullify a RemoteDOMWindow's frame whenever the window it is pointing to becomes frameless. |
| A frameless window behaves very differently (e.g. very little API is exposed to the Web). |
| This happens when either the newly opened window is either closed or navigated. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * loader/ContentFilter.cpp: |
| (WebCore::ContentFilter::didDecide): |
| * page/AbstractDOMWindow.cpp: Added. |
| (WebCore::AbstractDOMWindow::AbstractDOMWindow): |
| (WebCore::AbstractDOMWindow::~AbstractDOMWindow): |
| * page/AbstractDOMWindow.h: Added. |
| (WebCore::AbstractDOMWindow::identifier const): |
| * page/AbstractFrame.cpp: Added. |
| (WebCore::AbstractFrame::AbstractFrame): |
| (WebCore::AbstractFrame::~AbstractFrame): |
| * page/AbstractFrame.h: Added. |
| (WebCore::AbstractFrame::window const): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::DOMWindow): |
| * page/DOMWindow.h: |
| (isType): |
| * page/Frame.cpp: |
| (WebCore::Frame::window const): |
| (WebCore::Frame::virtualWindow const): |
| * page/Frame.h: |
| (isType): |
| * page/GlobalFrameIdentifier.h: Added. |
| (WebCore::GlobalFrameIdentifier::encode const): |
| (WebCore::GlobalFrameIdentifier::decode): |
| * page/GlobalWindowIdentifier.h: Added. |
| (WebCore::operator==): |
| (WebCore::GlobalWindowIdentifier::hash const): |
| (WebCore::GlobalWindowIdentifier::encode const): |
| (WebCore::GlobalWindowIdentifier::decode): |
| (WTF::GlobalWindowIdentifierHash::hash): |
| (WTF::GlobalWindowIdentifierHash::equal): |
| (WTF::HashTraits<WebCore::GlobalWindowIdentifier>::emptyValue): |
| (WTF::HashTraits<WebCore::GlobalWindowIdentifier>::constructDeletedValue): |
| (WTF::HashTraits<WebCore::GlobalWindowIdentifier>::isDeletedValue): |
| |
| * page/RemoteDOMWindow.cpp: Added. |
| (WebCore::RemoteDOMWindow::RemoteDOMWindow): |
| (WebCore::RemoteDOMWindow::~RemoteDOMWindow): |
| (WebCore::RemoteDOMWindow::self const): |
| (WebCore::RemoteDOMWindow::location const): |
| (WebCore::RemoteDOMWindow::close): |
| (WebCore::RemoteDOMWindow::closed const): |
| (WebCore::RemoteDOMWindow::focus): |
| (WebCore::RemoteDOMWindow::blur): |
| (WebCore::RemoteDOMWindow::length const): |
| (WebCore::RemoteDOMWindow::top const): |
| (WebCore::RemoteDOMWindow::opener const): |
| (WebCore::RemoteDOMWindow::parent const): |
| (WebCore::RemoteDOMWindow::postMessage): |
| The DOM API exposed on RemoteDOMWindow is only the subset of the DOMWindow API that is exposed cross origin, |
| since remote DOMWindow are always from a different origin. The short-term plan is to implement these in a |
| follow-up by relying on IPC (synchronous when necessary) to fetch the information from the real window in |
| the WebProcess where it lives. Longer term, we should probably keep RemoteDOMWindow members in sync with the |
| DOMWindow they're pointing to, so we do not have to rely on synchronous IPC. |
| |
| * page/RemoteDOMWindow.h: Added. |
| (isType): |
| * page/RemoteFrame.cpp: Added. |
| (WebCore::RemoteFrame::RemoteFrame): |
| (WebCore::RemoteFrame::~RemoteFrame): |
| (WebCore::RemoteFrame::virtualWindow const): |
| * page/RemoteFrame.h: Added. |
| (isType): |
| |
| 2018-04-12 Daniel Bates <dabates@apple.com> |
| |
| Content-Type not enforced for <script> allows for XSS |
| https://bugs.webkit.org/show_bug.cgi?id=184386 |
| <rdar://problem/39112268> |
| |
| Reviewed by Brady Eidson. |
| |
| As per the Fetch standard, <https://fetch.spec.whatwg.org/#should-response-to-request-be-blocked-due-to-mime-type?> (16 March 2018), |
| we should block JavaScript scripts that are served with MIME type text/csv, or a MIME type |
| that begins with "audio/", "image/" or "video/". |
| |
| As a side benefit of this change we now set the destination property [1] on preload requests. |
| |
| [1] <https://fetch.spec.whatwg.org/#concept-request-destination> |
| |
| Tests: http/tests/security/script-with-banned-mimetype.html |
| http/tests/workers/worker-importScripts-banned-mimetype.html |
| |
| * Sources.txt: Add file FetchIdioms.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Add files FetchIdioms.{cpp, h}. |
| * dom/LoadableClassicScript.cpp: |
| (WebCore::LoadableClassicScript::notifyFinished): Check the MIME type of the response and |
| block the script if applicable. |
| * dom/LoadableScript.h: Add error type MIMEType. |
| * loader/FetchIdioms.cpp: Added. |
| (WebCore::shouldBlockResponseDueToMIMEType): Implements the "Should response to request be blocked |
| due to its MIME type?" algorithm from the Fetch standard. |
| * loader/FetchIdioms.h: Added. |
| * loader/FetchOptions.h: |
| (WebCore::isScriptLikeDestination): Implements the definition of "script like" as per <https://fetch.spec.whatwg.org/#request-destination-script-like>. |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::requestImage): Removed logic to set the destination property as |
| CachedResourceLoader::requestResource() is now responsible for doing this. |
| (WebCore::CachedResourceLoader::requestFont): Ditto. |
| (WebCore::CachedResourceLoader::requestTextTrack): Ditto. |
| (WebCore::CachedResourceLoader::requestCSSStyleSheet): Ditto. |
| (WebCore::CachedResourceLoader::requestScript): Ditto. |
| (WebCore::CachedResourceLoader::requestXSLStyleSheet): Ditto. |
| (WebCore::CachedResourceLoader::requestMedia): Update comment to express that we should assert |
| that the destination property is either video or audio. |
| (WebCore::CachedResourceLoader::requestIcon): Remove logic to set the destination property as |
| CachedResourceLoader::requestResource() is now responsible for doing this. |
| (WebCore::CachedResourceLoader::requestRawResource): Removed assertion as this function is used to |
| load many kinds of requests that have different destination properties. The caller is responsible |
| for setting the appropriate destintion property. |
| (WebCore::CachedResourceLoader::requestMainResource): Remove logic to set the destination property |
| as CachedResourceLoader::requestResource() is now responsible for doing this. |
| (WebCore::destinationForType): Helper function that maps CachedResource::Type to FetchOptions::Destination. |
| (WebCore::CachedResourceLoader::requestResource): Set the destination property on the request if not |
| already set. |
| * loader/cache/CachedResourceLoader.h: Segregate requestRawResource() from the other request functions |
| and add a comment to explain what it is used for. |
| * workers/Worker.cpp: |
| (WebCore::Worker::create): |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadSynchronously): Set the destination property to FetchOptions::Destination::Script |
| and store it in an instance variable as we will need to reference it once we receive the HTTP response. |
| Note that this function is only used to support the Web API importScripts(). |
| (WebCore::WorkerScriptLoader::loadAsynchronously): Store the passed destination property in an |
| instance as we will need to reference it once we receive the HTTP response. |
| (WebCore::WorkerScriptLoader::didReceiveResponse): Check the MIME type of the response and |
| block the script if applicable. |
| * workers/WorkerScriptLoader.h: |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::fetchScriptWithContext): Set the destination property to FetchOptions::Destination::Serviceworker. |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Fix a host of small CSS Animations and CSS Transitions issues |
| https://bugs.webkit.org/show_bug.cgi?id=184555 |
| |
| Reviewed by Dean Jackson. |
| |
| A series of small and intertwined issues were preventing a number of CSS Animations and CSS Trantions |
| tests to fail when expressed as Web Animations. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Pass the old and new RenderStyles to CSSAnimation::create() |
| since we're refactoring DeclarativeAnimation to create blending keyframes in initialize(), no longer requiring each subclass |
| to create them. |
| (WebCore::AnimationTimeline::cssAnimationForElementAndProperty): Return the animation, if any, for a property animated by |
| a CSS animation, so that we can determine if a property is already being animated when running a CSS Transition. |
| (WebCore::AnimationTimeline::updateCSSTransitionsForElement): Since a property can be specified twice in a "transition" property, |
| once via "all" and once explicitly, ensure we look at all currently running transitions for the currently-processed property to |
| see if we need to cancel this transition. Previously, we used to only see if it had been transitioned in the old style. We also |
| start transitions even if the duration is 0 provided the delay is a positive, non-zero value. Then, if there is a CSS Animation |
| for this property already running, use that animation's original unanimated style as the from value. |
| * animation/AnimationTimeline.h: |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::create): The animation name is now set in the CSSAnimation constructor. |
| (WebCore::CSSAnimation::CSSAnimation): Set the animation name and keep a copy of the unanimated style such that we can |
| get it when a CSS Transition is created and takes precedence over this CSS Animation. |
| (WebCore::CSSAnimation::initialize): Deleted. |
| * animation/CSSAnimation.h: |
| * animation/CSSTransition.cpp: |
| (WebCore::CSSTransition::create): |
| (WebCore::CSSTransition::initialize): |
| * animation/CSSTransition.h: |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::initialize): Call the new computeDeclarativeAnimationBlendingKeyframes() on the KeyframeEffect |
| directly in this method so that subclasses don't need to create it manually, but most important so that keyframes are created |
| before timing properties are set based on the backing animation. |
| * animation/DeclarativeAnimation.h: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::getKeyframes): Ensure we have a CSSValue before trying to serialize it. |
| (WebCore::KeyframeEffectReadOnly::computeDeclarativeAnimationBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): Use the animation's unanimated style to compute keyframes, |
| instead of a default RenderStyle which would not use the right values for implicit keyframes. |
| (WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): Look at the property used to create |
| the transition rather than that specified on the backing Animation object since it can be CSSPropertyInvalid in the case of |
| "transition: all". |
| (WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): If we're dealing with a CSS animation, we consider the first and |
| last keyframes to always have the property listed since the underlying style was provided and should be captured. |
| * animation/KeyframeEffectReadOnly.h: |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): Apply CSS Animations after CSS Trasitions since they take precedence. |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Only cancel declarative animations upon element removal |
| https://bugs.webkit.org/show_bug.cgi?id=184553 |
| |
| Reviewed by Dean Jackson. |
| |
| Ensure we only call cancel() on CSSAnimation and CSSTransition objects as we might otherwise reject |
| the ready promise and produce spurious logging from WPT tests. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement): |
| (WebCore::AnimationTimeline::cancelAnimationsForElement): Deleted. |
| * animation/AnimationTimeline.h: |
| * dom/Element.cpp: |
| (WebCore::Element::removedFromAncestor): |
| * dom/PseudoElement.cpp: |
| (WebCore::PseudoElement::clearHostElement): |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| |
| 2018-04-12 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r230554. |
| |
| The non-ASCII character in the filename causes issues with SVN |
| |
| Reverted changeset: |
| |
| "input.webkitEntries does not work as expected when folder |
| contains accented chars" |
| https://bugs.webkit.org/show_bug.cgi?id=184517 |
| https://trac.webkit.org/changeset/230554 |
| |
| 2018-04-12 Alicia Boya García <aboya@igalia.com> |
| |
| [MSE] Add isValid() assertions on PlatformTimeRanges::add() range ends |
| https://bugs.webkit.org/show_bug.cgi?id=180253 |
| |
| Right now it's checked that start <= end but it's not checked that |
| neither of them is undefined. |
| |
| When this happens, the bug can be hard to track down. |
| |
| The assertion is not enabled for Mac because there is currently a test |
| that is hitting it. |
| |
| Reviewed by Jer Noble. |
| |
| * platform/graphics/PlatformTimeRanges.cpp: |
| (WebCore::PlatformTimeRanges::add): |
| |
| 2018-04-12 Chris Dumez <cdumez@apple.com> |
| |
| Process::setIdentifier() / Process::identifier() do not need a lock |
| https://bugs.webkit.org/show_bug.cgi?id=184544 |
| |
| Reviewed by Brady Eidson. |
| |
| Process::setIdentifier() / Process::identifier() do not need a lock. |
| Process::setIdentifier() gets called in ChildProcess::initialize(), |
| before we start any background threads. It is then safe to query |
| this process identifier later on from background threads without |
| locks. |
| |
| * platform/Process.cpp: |
| (WebCore::Process::setIdentifier): |
| (WebCore::Process::identifier): |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| Unreviewed, fix the Windows build. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::computeExtentOfAnimation const): |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Suspend animations when required |
| https://bugs.webkit.org/show_bug.cgi?id=184541 |
| |
| Reviewed by Jon Lee. |
| |
| Animations managed by CSSAnimationController get suspended under a number of scenarios, we now add the possibility |
| to suspend animations on a DocumentTimeline as well such that Web Animations and CSS Animations and CSS Transitions |
| implemented as Web Animations get suspended under the same conditions as well. We also update the implementation for |
| Internals::numberOfActiveAnimations() such that tests checking that animations get suspended pass. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::suspendAnimations): When asked to be suspended, the DocumentTimeline cancels pending |
| invalidation tasks and updates all of the animations it manages, including those running on the compositor. |
| (WebCore::DocumentTimeline::resumeAnimations): When asked to be resumed, the DocumentTimeline resumes animations |
| it manages and rewinds its invalidation timer. |
| (WebCore::DocumentTimeline::animationsAreSuspended): |
| (WebCore::DocumentTimeline::numberOfActiveAnimationsForTesting const): Called by Internals::numberOfActiveAnimations(), |
| this returns the number of animations managed by this timeline that are not suspended. |
| (WebCore::DocumentTimeline::currentTime): |
| (WebCore::DocumentTimeline::timingModelDidChange): Ensure the invalidation timer is not rewound if the timeline |
| is suspended. |
| * animation/DocumentTimeline.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setTimeline): When moving to a new timeline, ensure we match the new timeline's animation state. |
| (WebCore::WebAnimation::setSuspended): Toggle the accelerated running state of any backing hardware animations when |
| the suspension state of an animation changes. |
| * animation/WebAnimation.h: |
| (WebCore::WebAnimation::isSuspended const): |
| * dom/Document.cpp: |
| (WebCore::Document::didBecomeCurrentDocumentInFrame): |
| (WebCore::Document::resume): |
| * dom/Document.h: |
| * history/CachedFrame.cpp: |
| (WebCore::CachedFrameBase::restore): |
| * page/Frame.cpp: |
| (WebCore::Frame::clearTimers): |
| * page/Page.cpp: |
| (WebCore::Page::setIsVisibleInternal): |
| (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged): |
| * testing/Internals.cpp: |
| (WebCore::Internals::numberOfActiveAnimations const): |
| (WebCore::Internals::animationsAreSuspended const): |
| (WebCore::Internals::suspendAnimations const): |
| (WebCore::Internals::resumeAnimations const): |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Throttle animations when lowPowerMode is on |
| https://bugs.webkit.org/show_bug.cgi?id=184540 |
| |
| Reviewed by Jon Lee. |
| |
| Ensure animations are sampled at a lower frequency when lowPowerMode is on. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::updateThrottlingState): |
| (WebCore::DocumentTimeline::animationInterval const): |
| (WebCore::DocumentTimeline::updateAnimationSchedule): |
| (WebCore::DocumentTimeline::scheduleAnimationResolution): |
| * animation/DocumentTimeline.h: |
| * page/Page.cpp: |
| (WebCore::Page::handleLowModePowerChange): |
| * testing/Internals.cpp: |
| (WebCore::Internals::animationsInterval const): |
| |
| 2018-04-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure elements overlapping with elements animating also get composited |
| https://bugs.webkit.org/show_bug.cgi?id=184539 |
| |
| Reviewed by Jon Lee. |
| |
| A number of compositing tests failed because we didn't call into the Web Animations engine while various calls |
| on RenderLayer and RenderLayerBacking were made. We bring the functionality over from CSSAnimationController to |
| DocumentTimeline and KeyframeAnimation to KeyframeEffectReadOnly. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::animationsForElement const): Update this method's signature to be const since it |
| should be callable by other const method. |
| (WebCore::AnimationTimeline::animationsForElement): Deleted. |
| * animation/AnimationTimeline.h: |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::computeExtentOfAnimation const): Adapt this method from CSSAnimationController. |
| (WebCore::DocumentTimeline::isRunningAnimationOnRenderer const): Adapt this method from CSSAnimationController. |
| (WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const): Adapt this method from CSSAnimationController. |
| * animation/DocumentTimeline.h: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::computeExtentOfTransformAnimation const): Bring this method over from KeyframeAnimation. |
| (WebCore::containsRotation): Bring this method over from KeyframeAnimation. |
| (WebCore::KeyframeEffectReadOnly::computeTransformedExtentViaTransformList const): Bring this method over from KeyframeAnimation. |
| (WebCore::KeyframeEffectReadOnly::computeTransformedExtentViaMatrix const): Bring this method over from KeyframeAnimation. |
| * animation/KeyframeEffectReadOnly.h: |
| (WebCore::KeyframeEffectReadOnly::animatedProperties const): DocumentTimeline::computeExtentOfAnimation() needs to get a list |
| of all animated properties to see if a transform is animated, so we now expose such a list. |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::currentTransform const): Update this method to call into DocumentTimeline if the CSS Animations |
| and CSS Transitions as Web Animations flag is on. |
| (WebCore::RenderLayer::calculateClipRects const): Update this method to call into DocumentTimeline if the CSS Animations |
| and CSS Transitions as Web Animations flag is on. |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateGeometry): Update this method to call into DocumentTimeline if the CSS Animations |
| and CSS Transitions as Web Animations flag is on. |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): Update this method to call into DocumentTimeline |
| if the CSS Animations and CSS Transitions as Web Animations flag is on. |
| * rendering/RenderObject.h: |
| (WebCore::RenderObject::documentTimeline const): |
| |
| 2018-04-11 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Enable seeking for hardware animations |
| https://bugs.webkit.org/show_bug.cgi?id=184518 |
| |
| Reviewed by Dean Jackson. |
| |
| Hardware animations had lagged behind software animations in support and this patch bring their respective level |
| of support closer to one another. Importantly, we add the ability to seek an animation added to a GraphicsLayerCA |
| since many tests pause and seek animations to test their state. Animations may also have their playback state changed |
| along with their current time in the same run loop, so we now maintain a list of pending processing actions for |
| hardware animations. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::updateAnimationSchedule): If we have animations queued up for updates to their accelerated |
| state we can schedule animation resolution immediately since we've already established we'll have work to do. |
| (WebCore::DocumentTimeline::updateAnimations): Factor the updates of pending accelerated animations out in a dedicated |
| method. |
| (WebCore::DocumentTimeline::applyPendingAcceleratedAnimations): Go through all pending accelerated animations and update |
| their state. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::setBlendingKeyframes): Update the m_shouldRunAccelerated flag when setting blending keyframes. |
| (WebCore::KeyframeEffectReadOnly::apply): Ensure we finish accelerated animations if the progress is 1 or null (no longer active). |
| start accelerated animations if the animation is starting and always resolve styles in software as well to ensure that |
| hit testing will work as expected. |
| (WebCore::KeyframeEffectReadOnly::computeShouldRunAccelerated): |
| (WebCore::KeyframeEffectReadOnly::animationPlayStateDidChange): Called by WebAnimation when play() or pause() is called |
| with the appropriate flag. |
| (WebCore::KeyframeEffectReadOnly::animationDidSeek): Called by WebAnimation when the currentTime property is set. |
| (WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction): Add the provided action to the list of pending accelerated |
| actions and notify the animation that the accelerated state needs changing. |
| (WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Called by DocumentTimeline, through WebAnimation, to apply |
| all pending accelerated actions. |
| (WebCore::KeyframeEffectReadOnly::backingAnimationForCompositedRenderer const): If we're dealing with a declarative animation, |
| we already have a backing Animation object, so use it directly. Otherwise, create one and ensure it reflects all timing properties |
| for the animation. |
| (WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): Deleted. |
| (WebCore::KeyframeEffectReadOnly::startOrStopAccelerated): Deleted. |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setCurrentTime): Call animationDidSeek() on the effect to ensure its accelerated animation gets seeked. |
| (WebCore::WebAnimation::play): Call animationPlayStateDidChange() on the effect to ensure its accelerated animation is started or resumed. |
| (WebCore::WebAnimation::pause): Call animationPlayStateDidChange() on the effect to ensure its accelerated animation gets paused. |
| (WebCore::WebAnimation::acceleratedStateDidChange): |
| (WebCore::WebAnimation::applyPendingAcceleratedActions): |
| (WebCore::WebAnimation::acceleratedRunningStateDidChange): Deleted. |
| (WebCore::WebAnimation::startOrStopAccelerated): Deleted. |
| * platform/graphics/GraphicsLayer.h: |
| (WebCore::GraphicsLayer::seekAnimation): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::addProcessingActionForAnimation): Add an AnimationProcessingAction to the list of such actions for a |
| given animation name. In case we already have a Remove action, we ignore the action since the hardware animation will have been |
| removed by the time we try to apply this processing action. |
| (WebCore::GraphicsLayerCA::pauseAnimation): Add a Pause processing action. |
| (WebCore::GraphicsLayerCA::seekAnimation): Add a Seek processing action. |
| (WebCore::GraphicsLayerCA::removeAnimation): Add a Remove processing action. |
| (WebCore::GraphicsLayerCA::updateAnimations): First ensure that all animations pending commit are committed and then update |
| all animations based on the actions added through addProcessingActionForAnimation(). |
| (WebCore::GraphicsLayerCA::seekCAAnimationOnLayer): Generate a new animation based on the new seek time provided. |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| (WebCore::GraphicsLayerCA::AnimationProcessingAction::AnimationProcessingAction): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::animationSeeked): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::animationSeeked): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): Fix an issue where we would run the CSSAnimationController |
| logic even when the legacy animation engine was disabled. |
| |
| 2018-04-12 Xabier Rodriguez Calvar <calvaris@igalia.com> |
| |
| Unreviewed, fix GStreamer builds |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): We were |
| passing a String to a GST_WARNING call. |
| |
| 2018-04-11 Chris Dumez <cdumez@apple.com> |
| |
| input.webkitEntries does not work as expected when folder contains accented chars |
| https://bugs.webkit.org/show_bug.cgi?id=184517 |
| <rdar://problem/39265537> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Use String::fromUTF8() to construct a WTF String from the char* returned by |
| dirname() in FileSystem::directoryName(). Previously, we were just calling |
| the String constructor, which would treat the input as latin 1 instead of |
| UTF-8. |
| |
| Test: fast/forms/file/entries-api/webkitEntries-nonascii-folder-name.html |
| |
| * platform/posix/FileSystemPOSIX.cpp: |
| (WebCore::FileSystem::directoryName): |
| |
| 2018-04-11 Youenn Fablet <youenn@apple.com> |
| |
| Preventively expect UTF8 strings from libwebrtc SDP and error messages |
| https://bugs.webkit.org/show_bug.cgi?id=184509 |
| |
| Reviewed by Eric Carlson. |
| |
| Make WebCore code expect any libwebrtc string to contain UTF-8. |
| Currently SDPs do not contain any UTF-8 specific character |
| but https://tools.ietf.org/html/rfc4566 allows it. |
| |
| Add Internals API to set track id so that we can inject UTF-8 inside some WebRTC tests. |
| Test: webrtc/utf8-sdp.html |
| |
| * Modules/mediastream/MediaStreamTrack.h: |
| (WebCore::MediaStreamTrack::setIdForTesting): |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::fromStdString): |
| (WebCore::fromSessionDescription): |
| (WebCore::LibWebRTCMediaEndpoint::doSetLocalDescription): |
| (WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription): |
| (WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream): |
| (WebCore::LibWebRTCMediaEndpoint::addRemoteTrack): |
| (WebCore::LibWebRTCMediaEndpoint::addDataChannel): |
| (WebCore::LibWebRTCMediaEndpoint::OnIceCandidate): |
| (WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionSucceeded): |
| (WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed): |
| (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed): |
| (WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed): |
| (WebCore::trackId): Deleted. |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: |
| (WebCore::fromStdString): |
| (WebCore::LibWebRTCPeerConnectionBackend::doAddIceCandidate): |
| (WebCore::createReceiverForSource): |
| * platform/mediastream/MediaStreamTrackPrivate.h: |
| (WebCore::MediaStreamTrackPrivate::setIdForTesting): |
| * testing/Internals.cpp: |
| (WebCore::Internals::setMediaStreamTrackIdentifier): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-04-11 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Cache glyphs (using display lists) when painting at high frequency |
| https://bugs.webkit.org/show_bug.cgi?id=178750 |
| <rdar://problem/35201729> |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch adds support for caching of glyph drawing commands when painting |
| at high frequency. Caching the glyph drawing will be done using DisplayLists. |
| |
| GlyphDisplayListCache is basically a hash map which maps InlineTextBox |
| or SimpleLineLayout::Run to DisplayList. Before adding a new entry to it |
| we have to check whether the conditions for caching the glyph DisplayList |
| are met or not. If no entry is found for a given run, a new DisplayList |
| is created and a new entry is add to the cache. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * page/MemoryRelease.cpp: |
| (WebCore::releaseNoncriticalMemory): Make GlyphDisplayListCache respond |
| to memory pressure. |
| |
| * platform/graphics/FontCascade.cpp: |
| (WebCore::FontCascade::displayListForTextRun const): |
| * platform/graphics/FontCascade.h: |
| (WebCore::FontCascade::displayListForTextRun): |
| Record the drawing of a glyph run into a DisplayList. |
| |
| * rendering/GlyphDisplayListCache.h: Added. |
| (WebCore::GlyphDisplayListCache::singleton): |
| (WebCore::GlyphDisplayListCache::get): |
| (WebCore::GlyphDisplayListCache::remove): |
| (WebCore::GlyphDisplayListCache::clear): |
| (WebCore::GlyphDisplayListCache::size const): |
| (WebCore::GlyphDisplayListCache::sizeInBytes const): |
| A simple cache for the TextRun DisplayList. Adding a new entry in the |
| cache happens under restricted conditions. So this cache is not expected |
| to grow much. |
| |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::~InlineTextBox): |
| (WebCore::InlineTextBox::paint): |
| (WebCore::InlineTextBox::paintMarkedTexts): |
| (WebCore::InlineTextBox::paintMarkedTextBackground): |
| (WebCore::InlineTextBox::paintMarkedTextForeground): |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): |
| (WebCore::InlineTextBox::paintCompositionBackground): |
| (WebCore::InlineTextBox::paintCompositionUnderlines const): |
| (WebCore::InlineTextBox::paintCompositionUnderline const): |
| * rendering/InlineTextBox.h: |
| (WebCore::InlineTextBox::paintMarkedTexts): |
| InlineTextBox::paintMarkedTextForeground() now requires PaintInfo to know |
| whether the entry in the GlyphDisplayListCache should be removed or not. |
| Change all the GraphicsContext arguments to be PaintInfo. |
| |
| * rendering/SimpleLineLayout.cpp: |
| (WebCore::SimpleLineLayout::Layout::~Layout): |
| * rendering/SimpleLineLayout.h: |
| * rendering/SimpleLineLayoutFunctions.cpp: |
| (WebCore::SimpleLineLayout::paintFlow): |
| (WebCore::SimpleLineLayout::simpleLineLayoutWillBeDeleted): |
| * rendering/SimpleLineLayoutFunctions.h: |
| * rendering/SimpleLineLayoutResolver.h: |
| (WebCore::SimpleLineLayout::RunResolver::Run::simpleRun const): |
| Implement the glyph caching for SimpleLineLayout::Run. |
| |
| * rendering/TextPainter.cpp: |
| (WebCore::TextPainter::paintTextOrEmphasisMarks): If the DisplayList is |
| available, replay it back into the GraphicsContext. Make sure to reset to |
| the DisplayList pointer to nullptr after painting. |
| |
| (WebCore::TextPainter::clearGlyphDisplayLists): |
| (WebCore::TextPainter::shouldUseGlyphDisplayList): Check whether we should |
| use DisplayList to the draw glyph run. |
| |
| * rendering/TextPainter.h: |
| (WebCore::TextPainter::setGlyphDisplayListIfNeeded): Check whether we should |
| should use DisplayList to the draw glyph run and if we should, ensure first |
| the DisplayList is cached and set it in the TextPainter so it uses it when |
| the run is painted. |
| |
| (WebCore::TextPainter::removeGlyphDisplayList): Remove the cached DisplayList |
| entry for a glyph layout run. |
| |
| 2018-04-11 Brent Fulgham <bfulgham@apple.com> |
| |
| GraphicsLayerCA::createPlatformCALayer always disables extended color in its backing store |
| https://bugs.webkit.org/show_bug.cgi?id=184367 |
| <rdar://problem/39249074> |
| |
| Reviewed by Simon Fraser. |
| |
| 'createPlatformCALayer' always passes a nil widget, which early returns from 'screenSupportsExtendedColor' |
| with false. Instead, we should just pass the widget (nil or not) to the screen properties methods, |
| which will use the primary screen if no screen is specified. I.e., we shouldn't do an early return |
| here if the passed widget is nil. |
| |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::screenSupportsExtendedColor): |
| |
| 2018-04-11 Youenn Fablet <youenn@apple.com> |
| |
| Pass FetchOptions and SecurityOrigin as load parameters from WebProcess to NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=184374 |
| |
| Reviewed by Chris Dumez. |
| |
| Add support for SecurityOrigin encode/decode routines. |
| |
| * page/SecurityOrigin.h: |
| |
| 2018-04-11 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Use of playbin3 when USE_PLAYBIN3 environment variable is set |
| https://bugs.webkit.org/show_bug.cgi?id=184498 |
| |
| Reviewed by Philippe Normand. |
| |
| [GStreamer] Use of playbin3 when USE_PLAYBIN3 environment variable is set |
| |
| This is the same behaviour as with playbin itself. |
| |
| Make sure to keep using "playbin" for MediaSource. |
| |
| No test added as this is basically a small rework of the way we expose a feature. |
| |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/GRefPtrGStreamer.cpp: |
| * platform/graphics/gstreamer/GRefPtrGStreamer.h: |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::load): |
| (WebCore::MediaPlayerPrivateGStreamer::enableTrack): |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| (WebCore::TrackPrivateBaseGStreamer::disconnect): |
| (WebCore::TrackPrivateBaseGStreamer::tagsChanged): |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h: |
| |
| 2018-04-10 Alex Christensen <achristensen@webkit.org> |
| |
| IDN spoofing with Hebrew combining characters |
| https://bugs.webkit.org/show_bug.cgi?id=184472 |
| <rdar://problem/39148687> |
| |
| Reviewed by Brent Fulgham. |
| |
| Covered by new API tests. |
| |
| * platform/mac/WebCoreNSURLExtras.mm: |
| (WebCore::isLookalikeCharacter): |
| Punycode-encode hosts with Hebrew combining marks that look like dots |
| and Vav with a combining dot above like we do with dotless i and j. |
| |
| 2018-04-11 Brent Fulgham <bfulgham@apple.com> |
| |
| Show punycode if URL contains Latin dum character |
| https://bugs.webkit.org/show_bug.cgi?id=184477 |
| <rdar://problem/39121999> |
| |
| Reviewed by David Kilzer. |
| |
| Revise our "lookalike character" logic to include the small |
| Latin dum character. |
| |
| Test: fast/url/host.html |
| |
| * platform/mac/WebCoreNSURLExtras.mm: |
| (WebCore::isLookalikeCharacter): |
| |
| 2018-04-11 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] WaylandCompositorDisplay leaks its wl_display |
| https://bugs.webkit.org/show_bug.cgi?id=184406 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Well, this was harder than expected. We really just want to fix a small leak in the WebKit |
| layer, but that requires a change in how WaylandCompositorDisplay calls the |
| PlatformDisplayWayland constructor, to pass NativeDisplayOwned::Yes. That means |
| WaylandCompositorDisplay can no longer use PlatformDisplayWayland's protected default |
| constructor. Problem is that the normal PlatformDisplayWayland constructor calls |
| PlatformDisplayWayland::initialize, which calls PlatformDisplayWayland::registryGlobal, |
| which is a virtual function. The WaylandCompositorDisplay portion of the object is not |
| constructed yet at this point, so WaylandCompositorDisplay::registryGlobal will never be |
| called if we do that. I had to revert the previous version of this fix due to this problem. |
| It had broken accelerated compositing. |
| |
| I'm reminded of Effective C++ item #9: Never call virtual functions during construction or |
| destruction ("because such calls will never go to a more derived class than that of the |
| currently executing constructor or destructor"). This code is fragile and likely to break |
| again in the future, so let's refactor it a bit. Instead of calling initialize in the |
| constructor, we'll call it from create functions. We'll have to add a couple create |
| functions, and make the constructor protected to ensure it's not possible to create a |
| PlatformDisplayWayland without initializing it. For good parallelism, do the same for the |
| other PlatformDisplay classes. |
| |
| This commit additionally removes PlatformDisplayWayland's protected default constructor, |
| since it's not needed anymore. |
| |
| The NativeDisplayOwned arguments to the PlatformDisplay constructors are now mandatory, |
| instead of using NativeDisplayOwned::No as the default value, since that was dangerously |
| close to being the cause of this leak, and the constructors are now accessed from private |
| create functions anyway. Some more caution when using default parameter values is warranted |
| in the future. |
| |
| Lastly, since we have to change PlatformDisplay::createPlatformDisplay to use the new create |
| functions, take the opportunity to move things around a bit for clarity. There should be no |
| change in behavior. I was just disappointed that the PlatformDisplayWPE creation was at the |
| bottom of the function, after a comment indicating that normal display creation has failed, |
| which is not the case for WPE. |
| |
| This all might have been a bit overkill, since the leak could probably have been fixed by |
| passing nullptr to the PlatformDisplayWayland constructor for the wl_display and not |
| removing WaylandCompositorDisplay's call to PlatformDisplayWayland::initialize. But the |
| correctness of that code would then rely on implementation details of initialize, so this |
| refactor seems better. |
| |
| No new tests since there *should* be no behavior change. Then again, I'm touching |
| PlatformDisplay, and history shows we don't have the greatest track record of touching this |
| code without introducing problems. |
| |
| * platform/graphics/PlatformDisplay.cpp: |
| (WebCore::PlatformDisplay::createPlatformDisplay): |
| * platform/graphics/PlatformDisplay.h: |
| * platform/graphics/wayland/PlatformDisplayWayland.cpp: |
| (WebCore::PlatformDisplayWayland::create): |
| (WebCore::PlatformDisplayWayland::create): |
| (WebCore::PlatformDisplayWayland::createHeadless): |
| (WebCore::PlatformDisplayWayland::PlatformDisplayWayland): |
| (WebCore::PlatformDisplayWayland::initialize): |
| * platform/graphics/wayland/PlatformDisplayWayland.h: |
| * platform/graphics/win/PlatformDisplayWin.h: |
| * platform/graphics/wpe/PlatformDisplayWPE.cpp: |
| (WebCore::create): |
| * platform/graphics/wpe/PlatformDisplayWPE.h: |
| * platform/graphics/x11/PlatformDisplayX11.cpp: |
| (WebCore::PlatformDisplayX11::create): |
| (WebCore::PlatformDisplayX11::create): |
| (WebCore::PlatformDisplayX11::createHeadless): |
| * platform/graphics/x11/PlatformDisplayX11.h: |
| |
| 2018-04-11 Jianjun Zhu <jianjun.zhu@intel.com> |
| |
| Fix a WebRTC data channel issue for non-ASCII characters. |
| |
| At the sender side, buffer size are calulcated after UTF8 encoding. At the |
| receiver side, strings are constructed with UTF8 data. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=184481 |
| |
| Reviewed by Youenn Fablet. |
| |
| Updated test: |
| LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-expected.txt |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: |
| (WebCore::LibWebRTCDataChannelHandler::sendStringData): |
| (WebCore::LibWebRTCDataChannelHandler::OnMessage): |
| |
| 2018-04-11 Antti Koivisto <antti@apple.com> |
| |
| ImageFrame type used by non-Cocoa image decoder should not be the same as that used by ImageSource |
| https://bugs.webkit.org/show_bug.cgi?id=184418 |
| |
| Reviewed by Said Abou-Hallawa. |
| |
| ScalableImageDecoder uses ImageFrame class which is meant to be an implementation detail of ImageSource. |
| There are bunch of fields and methods in the type that are only used by one or the other client. For hackability |
| there should be an unrelated frame type for ScalableImageDecoder. |
| |
| This patch adds ScalableImageDecoderFrame type used in ScalableImageDecoder only. It then cleans up |
| unneeded things from both ImageFrame and ScalableImageDecoderFrame. |
| |
| * platform/ImageDecoders.cmake: |
| * platform/graphics/ImageFrame.cpp: |
| (WebCore::ImageFrame::operator=): |
| (WebCore::ImageFrame::clearImage): |
| (WebCore::ImageFrame::size const): |
| (WebCore::ImageFrame::initialize): Deleted. |
| * platform/graphics/ImageFrame.h: |
| (WebCore::ImageFrame::setDisposalMethod): Deleted. |
| (WebCore::ImageFrame::disposalMethod const): Deleted. |
| (WebCore::ImageFrame::backingStore const): Deleted. |
| (WebCore::ImageFrame::hasBackingStore const): Deleted. |
| * platform/image-decoders/ScalableImageDecoder.cpp: |
| (WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const): |
| (WebCore::ScalableImageDecoder::frameDurationAtIndex const): |
| (WebCore::ScalableImageDecoder::createFrameImageAtIndex): |
| * platform/image-decoders/ScalableImageDecoder.h: |
| * platform/image-decoders/ScalableImageDecoderFrame.cpp: Copied from Source/WebCore/platform/graphics/ImageFrame.cpp. |
| (WebCore::ScalableImageDecoderFrame::ScalableImageDecoderFrame): |
| (WebCore::ScalableImageDecoderFrame::~ScalableImageDecoderFrame): |
| (WebCore::ScalableImageDecoderFrame::operator=): |
| (WebCore::ScalableImageDecoderFrame::setDecodingStatus): |
| (WebCore::ScalableImageDecoderFrame::decodingStatus const): |
| (WebCore::ScalableImageDecoderFrame::clearImage): |
| (WebCore::ScalableImageDecoderFrame::clear): |
| (WebCore::ScalableImageDecoderFrame::initialize): |
| (WebCore::ScalableImageDecoderFrame::size const): |
| (WebCore::ImageFrame::ImageFrame): Deleted. |
| (WebCore::ImageFrame::~ImageFrame): Deleted. |
| (WebCore::ImageFrame::defaultFrame): Deleted. |
| (WebCore::ImageFrame::operator=): Deleted. |
| (WebCore::ImageFrame::setDecodingStatus): Deleted. |
| (WebCore::ImageFrame::decodingStatus const): Deleted. |
| (WebCore::ImageFrame::clearImage): Deleted. |
| (WebCore::ImageFrame::clear): Deleted. |
| (WebCore::ImageFrame::initialize): Deleted. |
| (WebCore::ImageFrame::size const): Deleted. |
| (WebCore::ImageFrame::hasNativeImage const): Deleted. |
| (WebCore::ImageFrame::hasFullSizeNativeImage const): Deleted. |
| (WebCore::ImageFrame::hasDecodedNativeImageCompatibleWithOptions const): Deleted. |
| (WebCore::ImageFrame::singlePixelSolidColor const): Deleted. |
| * platform/image-decoders/ScalableImageDecoderFrame.h: Copied from Source/WebCore/platform/graphics/ImageFrame.h. |
| (WebCore::ScalableImageDecoderFrame::ScalableImageDecoderFrame): |
| (WebCore::ScalableImageDecoderFrame::disposalMethod const): |
| (WebCore::ScalableImageDecoderFrame::hasAlpha const): |
| (WebCore::ScalableImageDecoderFrame::hasBackingStore const): |
| (WebCore::ImageFrame::ImageFrame): Deleted. |
| (WebCore::ImageFrame::isInvalid const): Deleted. |
| (WebCore::ImageFrame::isPartial const): Deleted. |
| (WebCore::ImageFrame::isComplete const): Deleted. |
| (WebCore::ImageFrame::sizeRespectingOrientation const): Deleted. |
| (WebCore::ImageFrame::frameBytes const): Deleted. |
| (WebCore::ImageFrame::subsamplingLevel const): Deleted. |
| (WebCore::ImageFrame::setDisposalMethod): Deleted. |
| (WebCore::ImageFrame::disposalMethod const): Deleted. |
| (WebCore::ImageFrame::nativeImage const): Deleted. |
| (WebCore::ImageFrame::setOrientation): Deleted. |
| (WebCore::ImageFrame::orientation const): Deleted. |
| (WebCore::ImageFrame::setDuration): Deleted. |
| (WebCore::ImageFrame::duration const): Deleted. |
| (WebCore::ImageFrame::setHasAlpha): Deleted. |
| (WebCore::ImageFrame::hasAlpha const): Deleted. |
| (WebCore::ImageFrame::hasNativeImage): Deleted. |
| (WebCore::ImageFrame::hasFullSizeNativeImage): Deleted. |
| (WebCore::ImageFrame::hasMetadata const): Deleted. |
| (WebCore::ImageFrame::backingStore const): Deleted. |
| (WebCore::ImageFrame::hasBackingStore const): Deleted. |
| * platform/image-decoders/bmp/BMPImageDecoder.cpp: |
| (WebCore::BMPImageDecoder::frameBufferAtIndex): |
| * platform/image-decoders/bmp/BMPImageDecoder.h: |
| * platform/image-decoders/bmp/BMPImageReader.h: |
| (WebCore::BMPImageReader::setBuffer): |
| * platform/image-decoders/gif/GIFImageDecoder.cpp: |
| (WebCore::GIFImageDecoder::findFirstRequiredFrameToDecode): |
| (WebCore::GIFImageDecoder::frameBufferAtIndex): |
| (WebCore::GIFImageDecoder::clearFrameBufferCache): |
| (WebCore::GIFImageDecoder::haveDecodedRow): |
| (WebCore::GIFImageDecoder::frameComplete): |
| (WebCore::GIFImageDecoder::initFrameBuffer): |
| * platform/image-decoders/gif/GIFImageDecoder.h: |
| * platform/image-decoders/gif/GIFImageReader.cpp: |
| (GIFImageReader::parse): |
| * platform/image-decoders/gif/GIFImageReader.h: |
| (GIFFrameContext::GIFFrameContext): |
| * platform/image-decoders/ico/ICOImageDecoder.cpp: |
| (WebCore::ICOImageDecoder::frameBufferAtIndex): |
| * platform/image-decoders/ico/ICOImageDecoder.h: |
| * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: |
| (WebCore::JPEGImageDecoder::frameBufferAtIndex): |
| (WebCore::setPixel): |
| (WebCore::JPEGImageDecoder::outputScanlines): |
| (WebCore::JPEGImageDecoder::jpegComplete): |
| * platform/image-decoders/jpeg/JPEGImageDecoder.h: |
| * platform/image-decoders/png/PNGImageDecoder.cpp: |
| (WebCore::PNGImageDecoder::frameBufferAtIndex): |
| (WebCore::PNGImageDecoder::rowAvailable): |
| (WebCore::PNGImageDecoder::readChunks): |
| (WebCore::PNGImageDecoder::clearFrameBufferCache): |
| (WebCore::PNGImageDecoder::initFrameBuffer): |
| (WebCore::PNGImageDecoder::frameComplete): |
| * platform/image-decoders/png/PNGImageDecoder.h: |
| * platform/image-decoders/webp/WEBPImageDecoder.cpp: |
| (WebCore::WEBPImageDecoder::frameBufferAtIndex): |
| (WebCore::WEBPImageDecoder::findFirstRequiredFrameToDecode): |
| (WebCore::WEBPImageDecoder::decodeFrame): |
| (WebCore::WEBPImageDecoder::initFrameBuffer): |
| (WebCore::WEBPImageDecoder::applyPostProcessing): |
| (WebCore::WEBPImageDecoder::clearFrameBufferCache): |
| * platform/image-decoders/webp/WEBPImageDecoder.h: |
| |
| 2018-04-11 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Turn Web Animations on by default |
| https://bugs.webkit.org/show_bug.cgi?id=184491 |
| |
| Reviewed by Simon Fraser. |
| |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-04-11 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Fix warning in HashTools.h for newer versions of clang |
| https://bugs.webkit.org/show_bug.cgi?id=184489 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Removed "register" storage class specififer as it has been deprecated in C++11. |
| |
| * platform/HashTools.h: |
| |
| 2018-04-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| FrameSelection::appearanceUpdateTimerFired should be robust against layout passes underneath it |
| https://bugs.webkit.org/show_bug.cgi?id=183395 |
| <rdar://problem/38055732> |
| |
| Reviewed by Zalan Bujtas. |
| |
| In the case where a FrameSelection updates its appearance when m_appearanceUpdateTimer is fired, the |
| FrameSelection's Frame is unprotected, and can be removed by arbitrary script. This patch applies a simple |
| mitigation by wrapping the Frame in a Ref when firing the appearance update timer. |
| |
| Test: editing/selection/iframe-update-selection-appearance.html |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::appearanceUpdateTimerFired): |
| |
| 2018-04-10 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed follow-up to r230468. |
| |
| Switch some RELEASE_ASSERTs in hot codepaths to normal DEBUG asserts. |
| |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::lastEventIsMouseUp): |
| (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): |
| * platform/mac/EventLoopMac.mm: |
| (WebCore::EventLoop::cycle): |
| |
| 2018-04-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the iOS build |
| |
| I accidentally exported an inline function in r230506. |
| |
| * page/ViewportConfiguration.h: |
| (WebCore::ViewportConfiguration::viewSize const): |
| |
| 2018-04-10 Nan Wang <n_wang@apple.com> |
| |
| AX: Expose strong password fields on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=184465 |
| <rdar://problem/39325104> |
| |
| Reviewed by Chris Fleizach. |
| |
| Exposed the strong password field on iOS. And made sure |
| we are returning its actual value in accessibilityValue. |
| |
| Test: accessibility/ios-simulator/strong-password-field.html |
| |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper _accessibilityIsStrongPasswordField]): |
| (-[WebAccessibilityObjectWrapper accessibilityValue]): |
| |
| 2018-04-10 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win] Add UserAgentWin.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=184438 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No new tests (No behavior change). |
| |
| * PlatformWin.cmake: |
| * platform/win/UserAgentWin.cpp: Added. |
| (WebCore::standardUserAgent): |
| (WebCore::standardUserAgentForURL): |
| |
| 2018-04-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Add a mechanism to zoom to fixed scales when double tapping in extra zoom mode |
| https://bugs.webkit.org/show_bug.cgi?id=184435 |
| <rdar://problem/38726260> |
| |
| Reviewed by Dean Jackson. |
| |
| Expose the size of the platform view. By default, in extra zoom mode, this *not* the same as the minimum layout |
| size, since we lay out at a large width and then shrink down to real device dimensions when computing the |
| initial scale (see r229063). |
| |
| ViewGestureGeometryCollector uses this in the process of computing a target zoom scale when double tapping. |
| |
| * page/ViewportConfiguration.h: |
| (WebCore::ViewportConfiguration::viewSize const): |
| |
| 2018-04-10 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win][WebKit] LibWebRTCProvider::webRTCAvailable is an undefined symbol |
| https://bugs.webkit.org/show_bug.cgi?id=184437 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No new tests (No behavior change). |
| |
| * PlatformWin.cmake: Added LibWebRTCProviderWin.cpp. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderWin.cpp: Added. |
| (WebCore::LibWebRTCProvider::webRTCAvailable): |
| |
| 2018-04-10 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed build fix. |
| |
| Those enum value names were too generic and would cause conflicts. |
| |
| * Modules/webvr/VRDisplayCapabilities.h: |
| (WebCore::VRDisplayCapabilities::hasPosition const): |
| (WebCore::VRDisplayCapabilities::hasOrientation const): |
| (WebCore::VRDisplayCapabilities::hasExternalDisplay const): |
| (WebCore::VRDisplayCapabilities::canPresent const): |
| * platform/vr/VRPlatformDisplay.h: |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| |
| 2018-04-10 Chris Dumez <cdumez@apple.com> |
| |
| Avoid constructing a service worker RegistrationStore for private sessions |
| https://bugs.webkit.org/show_bug.cgi?id=184463 |
| <rdar://problem/36613948> |
| |
| Reviewed by Youenn Fablet. |
| |
| Avoid constructing a service worker RegistrationStore for private sessions since there |
| is no need for persistence and the registrationDatabaseDirectory is the empty string in |
| such cases. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::removeRegistration): |
| (WebCore::SWServer::clearAll): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::SWServer): |
| (WebCore::SWServer::didFinishActivation): |
| * workers/service/server/SWServer.h: |
| |
| 2018-04-10 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed build fix. |
| |
| * page/LayoutContext.cpp: |
| (WebCore::LayoutContext::~LayoutContext): |
| * page/LayoutContext.h: |
| |
| 2018-04-10 Jeremy Jones <jeremyj@apple.com> |
| |
| MediaSessionManageriOS should defer creation of MPVolumeView until it needs to monitor AirPlay routes |
| https://bugs.webkit.org/show_bug.cgi?id=184373 |
| <rdar://problem/35177606> |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| |
| This delays the creation of MPVolumeView until airplay routes are monitored. |
| MPVolumeView is now also released when monitoring ends. |
| This makes sure the MP* objects are only accessed from a UI safe thread. WebCore's "MainThread" may be different that the UI thread. |
| Since this state change is necessarily asynchronous, starting and stopping must prevent races to keep state coherent. |
| |
| * platform/audio/ios/MediaSessionManagerIOS.mm: |
| (-[WebMediaSessionHelper initWithCallback:]): |
| (-[WebMediaSessionHelper dealloc]): |
| (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]): |
| (-[WebMediaSessionHelper stopMonitoringAirPlayRoutes]): |
| (-[WebMediaSessionHelper allocateVolumeView]): Deleted. |
| (-[WebMediaSessionHelper setVolumeView:]): Deleted. |
| |
| 2018-04-10 Sihui Liu <sihui_liu@apple.com> |
| |
| Loading of multipart response was cancelled because of content policy set in WebFrameLoaderClient::dispatchDecidePolicyForResponse |
| https://bugs.webkit.org/show_bug.cgi?id=184268 |
| <rdar://problem/39144446> |
| |
| Reviewed by Chris Dumez. |
| |
| The assertion is no longer true after the change, because multiple resources could have same |
| url. Used if condition here to make sure we only delete specified resource. |
| |
| No new tests. Updated an existing test to test the stop loading case by not using injected |
| bundle policy: http/tests/multipart/multipart-html.php. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::removeCachedResource): |
| |
| 2018-04-10 Zalan Bujtas <zalan@apple.com> |
| |
| Do not layout images when we only need the overflow information. |
| https://bugs.webkit.org/show_bug.cgi?id=175331 |
| |
| Reviewed by Simon Fraser. |
| |
| This improves MotionMark's Simple Leaves by ~10%. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::layout): |
| |
| 2018-04-10 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] TextureMapperLayer unnecessarily duplicates state in GraphicsLayerTransform |
| https://bugs.webkit.org/show_bug.cgi?id=183868 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Drop the GraphicsLayerTransform member variable from TextureMapperLayer |
| and instead compute all the required transform information in the |
| computeTransformsRecursive() method. These computations are not too |
| expensive, and in turn we can drop an object from this class' state that |
| was only duplicating a bunch of state variables. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::computeTransformsRecursive): |
| (WebCore::TextureMapperLayer::paintSelf): |
| (WebCore::TextureMapperLayer::paintSelfAndChildren): |
| (WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica): |
| (WebCore::TextureMapperLayer::replicaTransform): |
| (WebCore::TextureMapperLayer::computeOverlapRegions): |
| (WebCore::TextureMapperLayer::setPosition): |
| (WebCore::TextureMapperLayer::setSize): |
| (WebCore::TextureMapperLayer::setAnchorPoint): |
| (WebCore::TextureMapperLayer::setPreserves3D): |
| (WebCore::TextureMapperLayer::setTransform): |
| (WebCore::TextureMapperLayer::setChildrenTransform): |
| (WebCore::TextureMapperLayer::syncAnimations): |
| (WebCore::TextureMapperLayer::setScrollPositionDeltaIfNeeded): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-04-09 Brent Fulgham <bfulgham@apple.com> |
| |
| Add ProcessPrivilege assertions to places that access NSApp |
| https://bugs.webkit.org/show_bug.cgi?id=184322 |
| <rdar://problem/39194560> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Add ProcessPrivilege assertions to places where we interact with NSApp so |
| that we can prevent accidentally using them in the WebContent process. |
| |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::lastEventIsMouseUp): |
| (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): |
| * platform/mac/EventLoopMac.mm: |
| (WebCore::EventLoop::cycle): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::setDragImage): |
| |
| 2018-04-09 John Wilander <wilander@apple.com> |
| |
| Refactor Ignore HSTS code |
| https://bugs.webkit.org/show_bug.cgi?id=184433 |
| <rdar://problem/39298238> |
| |
| Reviewed by Darin Adler. |
| |
| This patch refactors our ignore HSTS code. The convenience functions are moved |
| out of CFNetwork SPI in PAL, and into where they are used. It also switches |
| from performSelector: calls to straight function calls, after checking that |
| there is a responder. |
| |
| * platform/network/mac/WebCoreURLResponse.mm: |
| (WebCore::schemeWasUpgradedDueToDynamicHSTS): |
| Add convenience function here since it was moved out of |
| CFNetworkSPI.h. |
| |
| 2018-04-09 Brady Eidson <beidson@apple.com> |
| |
| Expand WebCore policy concept of "shouldContinue" to allow for more than true/false |
| https://bugs.webkit.org/show_bug.cgi?id=184424 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (No behavior change, refactor only) |
| |
| Specifically this expands the "shouldContinue" bool to be an enum class with: |
| -Yes |
| -No |
| -ForSuspension |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::willSendRequest): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| (WebCore::FrameLoader::loadPostRequest): |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): |
| * loader/FrameLoader.h: |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| (WebCore::PolicyChecker::checkNewWindowPolicy): |
| * loader/PolicyChecker.h: |
| |
| 2018-04-09 Sihui Liu <sihui_liu@apple.com> |
| |
| REGRESSION(r229929): localStorage is broken for WebInspector |
| https://bugs.webkit.org/show_bug.cgi?id=184382 |
| <rdar://problem/39257355> |
| |
| Reviewed by Chris Dumez. |
| |
| Removed an if condition that caused false positive cases of database error. As per |
| https://www.sqlite.org/c3ref/errcode.html, return value of sqlite3_errcode() is undefined |
| on successful API call, so we should not use the code to check if there is an error. We |
| should only use it when there is an error. |
| After moving this condition, LocalStorage might return empty string instead of NULL on |
| sqlite3_column_blob() error. |
| |
| Modified a test to cover this case: |
| TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm. |
| |
| * platform/sql/SQLiteStatement.cpp: |
| (WebCore::SQLiteStatement::getColumnBlobAsString): |
| |
| 2018-04-09 Brent Fulgham <bfulgham@apple.com> |
| |
| WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll is directly accessing NSScreen |
| https://bugs.webkit.org/show_bug.cgi?id=184344 |
| <rdar://problem/39224969> |
| |
| Reviewed by Per Arne Vollan. |
| |
| The implementation of targetPositionInWindowForSelectionAutoscroll uses the display ID to get the |
| screen boundaries of the current display. This causes a bunch of interaction with NSScreen that |
| we do not want to allow in the WebContent process. |
| |
| Instead, we should just use the cached screen information the WebContent process already possesses. |
| |
| This patch makes the following changes: |
| 1. We now retrieve the screen rect of the page's display from the cache, rather than interacting with |
| the WindowServer directly. |
| 2. Add a new 'toUserSpaceForPrimaryScreen' so we don't have to deal with a nil NSWindow when computing |
| the user space version of the coordinates. A nil Window just means we want to get coordinates in |
| terms of the primary display. |
| 3. Keep track of the primary display so we can refer to it later. |
| 4. Modify the IPC messages to include the primary display's ID so we can easily access it later. |
| 5. Modify the PlatformScreen methods to actually use the primary display when appropriate, rather |
| than whichever screen happened to hash to the lowest value. |
| |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll const): Use new methods that |
| don't require WindowServer access. |
| * platform/PlatformScreen.h: |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::displayID): Assert if we hit this code in the WebContent process. |
| (WebCore::firstScreen): Ditto. |
| (WebCore::window): Ditto. |
| (WebCore::screen): Ditto. |
| (WebCore::primaryScreenID): Added. |
| (WebCore::getScreenProperties): Modify to return a pair consisting of the primary display ID and |
| the HashSet of screen settings. |
| (WebCore::setScreenProperties): Update to also track the primary display ID. |
| (WebCore::screenProperties): Update to use the primary display ID. |
| (WebCore::screenHasInvertedColors): Ditto. |
| (WebCore::toUserSpaceForPrimaryScreen): Added. |
| |
| 2018-04-09 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Make InlineTextBox::createTextRun() take a const lvalue reference String |
| https://bugs.webkit.org/show_bug.cgi?id=184182 |
| |
| Reviewed by Zalan Bujtas. |
| |
| InlineTextBox::createTextRun() takes a non-const lvalue reference String. |
| It is tempting to change the signature of this method to take a const lvalue |
| reference. But this was done intentionally. TextRun is effectively a StringView: |
| it does not own the passed string. Having the argument a non-const lvalue |
| reference makes the compiler prevent calls like createTextRun("abc"). |
| |
| To have a better way to express the lifetime of TextRun, this patch does |
| the following: |
| |
| -- It makes TextRun::m_text of type String instead of StringView. |
| -- It adds a new constructor which takes const String&. This constructor |
| will addRef the underlying StringImpl when assigning it to m_text. |
| -- It keeps the constructor which takes a StringView. The caller of this |
| constructor still has to make sure the underlying String outlives the |
| TextRun. To avoid copying the underlying buffer of the StringView, we |
| will not use StringView::toString(). Instead we will use |
| StringView::toStringWithoutCopying() which makes the returned String |
| accesses the same buffer the StringView uses. In this case, the returned |
| String is effectively a StringView. |
| |
| * page/DebugPageOverlays.cpp: |
| (WebCore::drawRightAlignedText): |
| * platform/graphics/TextRun.cpp: |
| * platform/graphics/TextRun.h: |
| (WebCore::TextRun::TextRun): |
| (WebCore::TextRun::subRun const): |
| (WebCore::TextRun::length const): |
| (WebCore::TextRun::setText): |
| (WebCore::TextRun::string const): Deleted. |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::localSelectionRect const): |
| (WebCore::InlineTextBox::paint): |
| (WebCore::InlineTextBox::paintPlatformDocumentMarker): |
| (WebCore::InlineTextBox::paintMarkedTextBackground): |
| (WebCore::InlineTextBox::paintMarkedTextForeground): |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): |
| (WebCore::InlineTextBox::offsetForPosition const): |
| (WebCore::InlineTextBox::positionForOffset const): |
| (WebCore::InlineTextBox::createTextRun const): |
| There is no need for this function to take a String argument anymore. The |
| reason for passing the String was to guarantee its lifetime by keeping |
| a copy of it in the caller side. Now there is no need for that. The TextRun |
| itself will keep this copy. |
| |
| * rendering/InlineTextBox.h: |
| * rendering/RenderText.cpp: |
| (WebCore::RenderText::computeCanUseSimplifiedTextMeasuring const): |
| RenderText::text() returns StringImpl. The compiler wants us to be more |
| explicit about which constructor of TextRun to call. |
| |
| * rendering/SimpleLineLayout.cpp: |
| (WebCore::SimpleLineLayout::canUseForFontAndText): |
| * rendering/SimpleLineLayoutTextFragmentIterator.cpp: |
| (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style): |
| RenderStyle::hyphenString() returns an AtomicString. |
| |
| 2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, rolling out r230390. |
| |
| Broke accelerated compositing |
| |
| Reverted changeset: |
| |
| "[GTK] WaylandCompositorDisplay leaks its wl_display" |
| https://bugs.webkit.org/show_bug.cgi?id=184406 |
| https://trac.webkit.org/changeset/230390 |
| |
| 2018-04-03 Sergio Villar Senin <svillar@igalia.com> |
| |
| [OpenVR][WebVR] Retrieve FrameData in WebVR's rAF |
| https://bugs.webkit.org/show_bug.cgi?id=184265 |
| |
| Reviewed by Žan Doberšek. |
| |
| VRFrameData contains all the required information to properly render a VR scene like view |
| and projection matrices, pose data (position & orientation) and linear & angular velocity |
| among others. The getFrameData() call must be issued inside a WebVR's own |
| requestAnimationFrame. |
| |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::getFrameData const): |
| (WebCore::VRDisplay::getPose const): |
| (WebCore::VRDisplay::requestAnimationFrame): |
| (WebCore::VRDisplay::cancelAnimationFrame): |
| * Modules/webvr/VRDisplay.h: |
| * Modules/webvr/VREyeParameters.h: |
| (WebCore::VREyeParameters::rawOffset const): Required to compute view matrices. |
| * Modules/webvr/VRFrameData.cpp: |
| (WebCore::matrixToArray): |
| (WebCore::VRFrameData::leftProjectionMatrix const): |
| (WebCore::VRFrameData::leftViewMatrix const): |
| (WebCore::VRFrameData::rightProjectionMatrix const): |
| (WebCore::VRFrameData::rightViewMatrix const): |
| (WebCore::projectionMatrixFromFieldOfView): |
| (WebCore::rotationMatrixFromQuaternion): |
| (WebCore::applyHeadToEyeTransform): |
| (WebCore::VRFrameData::update): |
| (WebCore::VRFrameData::timestamp const): Deleted. |
| * Modules/webvr/VRFrameData.h: |
| (WebCore::VRFrameData::timestamp const): |
| * Modules/webvr/VRPose.cpp: |
| (WebCore::optionalFloat3ToJSCArray): |
| (WebCore::VRPose::position const): |
| (WebCore::VRPose::linearVelocity const): |
| (WebCore::VRPose::linearAcceleration const): |
| (WebCore::VRPose::orientation const): |
| (WebCore::VRPose::angularVelocity const): |
| (WebCore::VRPose::angularAcceleration const): |
| * Modules/webvr/VRPose.h: |
| (WebCore::VRPose::create): |
| (WebCore::VRPose::update): |
| (WebCore::VRPose::VRPose): |
| * platform/vr/VRPlatformDisplay.h: |
| (WebCore::VRPlatformTrackingInfo::Quaternion::Quaternion): |
| (WebCore::VRPlatformTrackingInfo::Quaternion::conjugate): |
| (WebCore::VRPlatformTrackingInfo::Quaternion::operator*): |
| (WebCore::VRPlatformTrackingInfo::Float3::Float3): Just a group of 3 floats used to store |
| both velocity and acceleration in a format which is very convenient to later generate JSC |
| arrays. |
| (WebCore::VRPlatformTrackingInfo::clear): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| (WebCore::rotationMatrixToQuaternion): |
| (WebCore::VRPlatformDisplayOpenVR::getTrackingInfo): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.h: |
| |
| 2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] WaylandCompositorDisplay leaks its wl_display |
| https://bugs.webkit.org/show_bug.cgi?id=184406 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Remove the protected default constructor, for good measure. |
| |
| * platform/graphics/wayland/PlatformDisplayWayland.h: |
| |
| 2018-04-08 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [CMake] WebKit should link to WebCore as a PRIVATE library if WebCore is a static library |
| https://bugs.webkit.org/show_bug.cgi?id=184127 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| No new tests (No behaviour changes). |
| |
| * CMakeLists.txt: Added a interface library WebCoreHeaderInterface. |
| |
| 2018-04-08 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Use alignas instead of compiler-specific attributes |
| https://bugs.webkit.org/show_bug.cgi?id=183508 |
| |
| Reviewed by Mark Lam. |
| |
| Use alignas instead of aligned. |
| |
| * platform/graphics/cpu/arm/filters/FELightingNEON.cpp: |
| * platform/graphics/cpu/arm/filters/FELightingNEON.h: |
| (WebCore::FELighting::platformApplyNeon): |
| |
| 2018-04-08 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Remove applicationDirectoryPath() and sharedResourcePath() |
| https://bugs.webkit.org/show_bug.cgi?id=184381 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| These are unused. |
| |
| * platform/FileSystem.h: |
| * platform/glib/FileSystemGlib.cpp: |
| (WebCore::FileSystem::applicationDirectoryPath): Deleted. |
| (WebCore::FileSystem::sharedResourcesPath): Deleted. |
| |
| 2018-04-07 Daniel Bates <dabates@apple.com> |
| |
| Have WorkerScriptLoader::loadAsynchronously() take a FetchOptions |
| https://bugs.webkit.org/show_bug.cgi?id=184385 |
| |
| Reviewed by Youenn Fablet. |
| |
| Currently we pass various FetchOptions to WorkerScriptLoader::loadAsynchronously() |
| so that it can build up a ThreadableLoaderOptions structure to pass to the loader. |
| Each time we want to set another FetchOptions option we need to add a new parameter. |
| Instead we should have WorkerScriptLoader::loadAsynchronously() take a FetchOptions. |
| This will make it straightforward for a caller to set new loader options as needed. |
| In particular, this will make it straightforward to support setting the request's |
| destination flag (i.e. FetchOptions::destination) to support blocking scripts with |
| a non-JavaScript MIME type in a subsequent commit. |
| |
| No functionality changed. So, no new tests. |
| |
| * loader/ResourceLoaderOptions.h: |
| (WebCore::ResourceLoaderOptions::ResourceLoaderOptions): Modified to take a FetchOptions |
| by value so as to support both move and copy semantics. |
| * loader/ThreadableLoader.cpp: |
| (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): Added helper constructor |
| that takes a FetchOptions. |
| * loader/ThreadableLoader.h: |
| * workers/Worker.cpp: |
| (WebCore::Worker::create): Instantiate and pass a FetchOptions to the loader for the mode, |
| cache policy, and redirect policy. |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadAsynchronously): Modified to take a FetchOptions and |
| instantiate a ThreadableLoaderOptions from it. |
| * workers/WorkerScriptLoader.h: |
| * workers/WorkerScriptLoaderClient.h: |
| (WebCore::WorkerScriptLoaderClient::isServiceWorkerClient const): Deleted. This function |
| is no longer needed because the Service Worker client now passes the service worker mode |
| directly to the loader. |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::fetchScriptWithContext): Instantiate and pass a FetchOptions |
| to the loader. |
| * workers/service/ServiceWorkerJob.h: |
| |
| 2018-04-07 Timothy Hatcher <timothy@apple.com> |
| |
| Use the system's link color when system appearance is desired for a WebView. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=184353 |
| rdar://problem/9420053 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Have Document consult RenderTheme via StyleColor for the various link colors. |
| This allows the system to have different colors than the standard hardcoded ones. |
| This adds StyleColor::Options, to avoid multiple booleans being passed around, |
| since the "for visited link" state is now needed in RenderTheme. |
| |
| * WebCore.xcodeproj/project.pbxproj: Made StyleColor.h private, since RenderTheme.h includes it. |
| * css/StyleColor.cpp: |
| (WebCore::StyleColor::colorFromKeyword): Use options instead of a bool. |
| (WebCore::StyleColor::isSystemColor): Consider CSSValueWebkitLink the start of system colors. |
| * css/StyleColor.h: |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::colorFromPrimitiveValue const): Use StyleColor::Options. |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParser::parseSystemColor): Use StyleColor::Options. |
| * dom/Document.cpp: |
| (WebCore::Document::resetLinkColor): Ask StyleColor for the link color instead of hardcoding it. |
| (WebCore::Document::resetVisitedLinkColor): Ditto. |
| (WebCore::Document::resetActiveLinkColor): Ditto. |
| (WebCore::Document::styleColorOptions const): Added. Helper to get the options used. |
| * dom/Document.h: |
| * html/canvas/CanvasRenderingContext2D.cpp: |
| (WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal): Use StyleColor::Options. |
| * rendering/RenderTheme.cpp: |
| (WebCore::RenderTheme::systemColor const): Add default values here, moved from Document. |
| (WebCore::RenderTheme::focusRingColor): Use StyleColor::Options. |
| * rendering/RenderTheme.h: |
| (WebCore::RenderTheme::platformFocusRingColor const): Use StyleColor::Options. |
| * rendering/RenderThemeGtk.cpp: |
| (WebCore::RenderThemeGtk::systemColor const): Use StyleColor::Options. |
| * rendering/RenderThemeGtk.h: |
| * rendering/RenderThemeIOS.h: |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::systemColor const): Use StyleColor::Options. |
| * rendering/RenderThemeMac.h: |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::platformFocusRingColor const): Use StyleColor::Options. |
| (WebCore::RenderThemeMac::platformColorsDidChange): Clear m_systemVisitedLinkColor. |
| (WebCore::RenderThemeMac::systemColor const): Use StyleColor::Options. |
| (WebCore::RenderThemeMac::adjustMenuListStyle const): Ditto. |
| * rendering/RenderThemeWin.cpp: |
| (WebCore::RenderThemeWin::systemColor const): Use StyleColor::Options. |
| * rendering/RenderThemeWin.h: |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::computeTextPaintStyle): Use StyleColor::Options. |
| |
| 2018-04-06 Youenn Fablet <youenn@apple.com> |
| |
| Response headers should be filtered when sent from NetworkProcess to WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=184310 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Did some refactoring to allow ResourceResponse to use header value parsing routines. |
| We add sanitization levels for regular responses in case responses might be exposed to scripts or not. |
| If not exposed to scripts, additional filtering is done. |
| |
| Add internal API to get unfiltered response headers from a fetch response. |
| Test: http/wpt/service-workers/header-filtering.https.html |
| |
| * Modules/fetch/FetchResponse.h: |
| * loader/CrossOriginPreflightResultCache.cpp: |
| (WebCore::CrossOriginPreflightResultCacheItem::parse): |
| * platform/network/HTTPParsers.h: |
| (WebCore::addToAccessControlAllowList): |
| (WebCore::parseAccessControlAllowList): |
| * platform/network/ResourceResponseBase.cpp: |
| (WebCore::isSafeToKeepRedirectionResponseHeader): |
| (WebCore::isCrossOriginSafeToKeepResponseHeader): |
| (WebCore::ResourceResponseBase::sanitizeHTTPHeaderFields): |
| * platform/network/ResourceResponseBase.h: |
| * testing/ServiceWorkerInternals.cpp: |
| (WebCore::ServiceWorkerInternals::fetchResponseHeaderList): |
| * testing/ServiceWorkerInternals.h: |
| * testing/ServiceWorkerInternals.idl: |
| |
| 2018-04-06 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, fix unused parameter warning when credential storage is disabled |
| |
| * platform/network/soup/NetworkStorageSessionSoup.cpp: |
| (WebCore::NetworkStorageSession::getCredentialFromPersistentStorage): |
| |
| 2018-04-06 Eric Carlson <eric.carlson@apple.com> |
| |
| [Extra zoom mode] Block playback until fullscreen begins |
| https://bugs.webkit.org/show_bug.cgi?id=184371 |
| <rdar://problem/39250891> |
| |
| Reviewed by Youenn Fablet. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::updatePlayState): Return early when waiting to enter fullscreen. |
| (WebCore::HTMLMediaElement::enterFullscreen): Set m_waitingToEnterFullscreen. |
| (WebCore::HTMLMediaElement::exitFullscreen): Clear m_waitingToEnterFullscreen. |
| (WebCore::HTMLMediaElement::didBecomeFullscreenElement): Ditto. |
| * html/HTMLMediaElement.h: |
| |
| 2018-04-06 Brent Fulgham <bfulgham@apple.com> |
| |
| WebCore::screenSupportsExtendedColor improperly calls NSScreen functions in the WebContent process |
| https://bugs.webkit.org/show_bug.cgi?id=184364 |
| <rdar://problem/39246314> |
| |
| Reviewed by Per Arne Vollan. |
| |
| The WebContent process is interacting directly with NSScreen to determine if the current screen |
| has extended color support. This should be brokered from the UIProcess. |
| |
| Tested by fast/media/mq-color-gamut.html. |
| |
| * platform/ScreenProperties.h: |
| (WebCore::ScreenProperties::encode const): Add screenSupportsExtendedColor. |
| (WebCore::ScreenProperties::decode): Ditto. |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::getScreenProperties): Retrieve extended color support. |
| (WebCore::screenSupportsExtendedColor): Retrieve cached version when in the WebContent |
| process. Assert that NSScreen is not accessed in the WebContent process. |
| |
| 2018-04-06 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win][WebCore] Expose a constant for scrollbar pixels per line (cScrollbarPixelsPerLine) |
| https://bugs.webkit.org/show_bug.cgi?id=184296 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (No behavior changes). |
| |
| * platform/PlatformWheelEvent.h: Placed cScrollbarPixelsPerLine definition. |
| * platform/win/WheelEventWin.cpp: |
| (WebCore::PlatformWheelEvent::PlatformWheelEvent): Removed cScrollbarPixelsPerLine definition. |
| |
| 2018-04-06 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed test fix after r230323 |
| |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::screenSupportsExtendedColor): Remove assertion hit during test runs. |
| |
| 2018-04-06 Brent Fulgham <bfulgham@apple.com> |
| |
| WebCore::screenColorSpace is retrieving CGColorSpace from NSScreen directly |
| https://bugs.webkit.org/show_bug.cgi?id=184343 |
| <rdar://problem/39224881> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Revise ScreenProperties to serialize the screen's color space, and later |
| retrieve that in the WebContent process. This allows us to close off |
| the CGSWindowServer connection. |
| |
| * platform/ScreenProperties.h: |
| (WebCore::ScreenProperties::encode const): Add CGColorSpaceRef support. |
| (WebCore::ScreenProperties::decode): Ditto. |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::displayID): Add assertion to prevent use in WebContent process. |
| (WebCore::firstScreen): Ditto. |
| (WebCore::getScreenProperties): Add support for CGColorSpaceRef. |
| (WebCore::screenColorSpace): Retrieve cached version when in WebContent process. |
| Assert that NSScreen is not accessed in WebContent process. |
| |
| 2018-04-06 Ms2ger <Ms2ger@igalia.com> |
| |
| Implement createImageBitmap(Blob) |
| https://bugs.webkit.org/show_bug.cgi?id=183247 |
| |
| Reviewed by Dean Jackson. |
| |
| Tests: |
| - imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html |
| - imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html |
| |
| * fileapi/FileReaderLoader.h: |
| (WebCore::FileReaderLoader::url): expose the Blob's URL. |
| * html/ImageBitmap.cpp: implement createImageBitmap(Blob). |
| * html/ImageBitmap.h: allow the BlobImageObserver class access to the creation function. |
| * loader/cache/CachedImage.cpp: reuse extracted code. |
| (WebCore::CachedImage::isPDFResource const): |
| (WebCore::CachedImage::isPostScriptResource const): |
| (WebCore::CachedImage::createImage): |
| * platform/graphics/Image.cpp: extract some code from CachedImage to reuse. |
| (WebCore::Image::create): |
| (WebCore::Image::isPDFResource): |
| (WebCore::Image::isPostScriptResource): |
| * platform/graphics/Image.h: add declarations. |
| |
| 2018-04-06 Zalan Bujtas <zalan@apple.com> |
| |
| Flex child does not get repainted when it is inserted back to the render tree. |
| https://bugs.webkit.org/show_bug.cgi?id=184361 |
| <rdar://problem/34528716> |
| |
| Reviewed by Antti Koivisto. |
| |
| As with any regular block children, we should issue full repaint for flexbox items on their |
| first layout (see RenderBlockFlow::layoutBlockChild()). |
| |
| Test: fast/flexbox/missing-repaint-when-flext-item-never-had-layout.html |
| |
| * rendering/RenderFlexibleBox.cpp: |
| (WebCore::RenderFlexibleBox::layoutAndPlaceChildren): |
| |
| 2018-04-06 Ms2ger <Ms2ger@igalia.com> |
| |
| Support transferring ImageBitmap objects |
| https://bugs.webkit.org/show_bug.cgi?id=183131 |
| |
| Reviewed by Dean Jackson. |
| |
| Test: imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::serialize): thread through ImageBitmaps. |
| (WebCore::CloneSerializer::CloneSerializer): thread through ImageBitmaps. |
| (WebCore::CloneSerializer::fillTransferMap): don't require a mutable reference. |
| (WebCore::CloneSerializer::dumpImageBitmap): add. |
| (WebCore::CloneSerializer::dumpIfTerminal): check for ImageBitmap. |
| (WebCore::CloneDeserializer::deserialize): thread through ImageBitmaps. |
| (WebCore::CloneDeserializer::CloneDeserializer): thread through ImageBitmaps. |
| (WebCore::CloneDeserializer::readImageBitmap): add. |
| (WebCore::CloneDeserializer::readTerminal): check for ImageBitmap. |
| (WebCore::SerializedScriptValue::SerializedScriptValue): thread through ImageBitmaps. |
| (WebCore::SerializedScriptValue::create): thread through ImageBitmaps. |
| (WebCore::containsDuplicates): add. |
| (WebCore::SerializedScriptValue::deserialize): handle ImageBitmap arguments. |
| * bindings/js/SerializedScriptValue.h: update signatures, add member. |
| * html/ImageBitmap.cpp: |
| (WebCore::ImageBitmap::create): add. |
| (WebCore::ImageBitmap::detachBitmaps): add. |
| * html/ImageBitmap.h: add signatures. |
| |
| 2018-04-06 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| When recording the drawing, the DisplayList should be initialized with the GraphicsContextState of the underlying GraphicsContext |
| https://bugs.webkit.org/show_bug.cgi?id=184336 |
| |
| Reviewed by Antti Koivisto. |
| |
| The state of the drawing context has to be transfered to the recording |
| DisplayList before recording. Many recording GraphicsContext functions |
| will behave wrongly if it gets the default state. |
| |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::DisplayListDrawingContext::DisplayListDrawingContext): |
| (WebCore::CanvasRenderingContext2DBase::drawingContext const): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::recursiveCommitChanges): |
| * platform/graphics/displaylists/DisplayListRecorder.cpp: |
| (WebCore::DisplayList::Recorder::Recorder): |
| * platform/graphics/displaylists/DisplayListRecorder.h: |
| (WebCore::DisplayList::Recorder::ContextState::ContextState): |
| (WebCore::DisplayList::Recorder::ContextState::cloneForSave const): |
| * platform/graphics/displaylists/DisplayListReplayer.cpp: |
| (WebCore::DisplayList::Replayer::replay): |
| * platform/graphics/displaylists/DisplayListReplayer.h: |
| (WebCore::DisplayList::Replayer::replay): If we do not have a clipping |
| rectangle and we want to record all the drawing, we need a default value |
| for the clipping rectangle and we want no clipping to happen. |
| |
| 2018-04-06 Daniel Bates <dabates@apple.com> |
| |
| Emit a more informative message when a script is blocked due to "X-Content-Type: nosniff" |
| https://bugs.webkit.org/show_bug.cgi?id=184359 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Emphasize in the message that the script was blocked from executing. |
| |
| Test: http/tests/security/contentTypeOptions/nosniff-importScript-blocked.html |
| |
| * dom/LoadableClassicScript.cpp: |
| (WebCore::LoadableClassicScript::notifyFinished): |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::didReceiveResponse): |
| |
| 2018-04-06 Daniel Bates <dabates@apple.com> |
| |
| importScripts() should throw exception with a reason when it fails to load a script from the network |
| https://bugs.webkit.org/show_bug.cgi?id=184345 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Currently importScripts() throws a NetworkError exception without a reason when |
| it fails to load a script from the network. It is ambiguous whether the load failed |
| due to an access control failure or some other error. Instead we should include |
| the reason the load failed in the thrown exception. |
| |
| * workers/WorkerGlobalScope.cpp: |
| (WebCore::WorkerGlobalScope::importScripts): |
| |
| 2018-04-06 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix the build after <https://trac.webkit.org/changeset/230338> |
| (https://bugs.webkit.org/show_bug.cgi?id=184360) |
| |
| Make lambdas mutable so that we can WTFMove() their captured arguments. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed): |
| (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed): |
| (WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed): |
| |
| 2018-04-06 Daniel Bates <dabates@apple.com> |
| |
| Have class Exception take String by value instead of a String&& |
| https://bugs.webkit.org/show_bug.cgi?id=184360 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| For convenience support instantiating an Exception with either an lvalue String or |
| rvalue String. |
| |
| Although it can be argued that having Exception take a String by value instead of String&& |
| can lead to missed opportunities to WTFMove() a String object into Exception such mistakes |
| are just that, missed opportunities. That is, correctness is not affected and we may perform |
| an unnecessary ref/deref of the underlying StringImpl when instantiating an Exception. If |
| such missed opportunities show up in profiles and such mistakes happen often then we can |
| re-evaluate the decision to have Exception take a String by value. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::put): Simplify code now that Exception takes a String by value. |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::BodyLoader::didFail): Ditto. |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed): Move String into Exception to avoid an |
| unnecessary ref/de-ref. |
| (WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed): Ditto. |
| (WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed): Ditto. |
| * dom/Exception.h: |
| (WebCore::Exception::Exception): Take String by value. Also use uniform initializer syntax. |
| |
| 2018-04-06 Antti Koivisto <antti@apple.com> |
| |
| Tighten ImageSource to have BitmapImage pointer instead of Image |
| https://bugs.webkit.org/show_bug.cgi?id=184356 |
| |
| Reviewed by Said Abou-Hallawa. |
| |
| ImageSource is an implementation detail of BitmapImage, not a generic type. |
| |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::decode): |
| * platform/graphics/BitmapImage.h: |
| * platform/graphics/Image.h: |
| (WebCore::Image::decode): Deleted. |
| (WebCore::Image::imageFrameAvailableAtIndex): Deleted. |
| |
| Also make some BitmapImage specific functions non-virtual and remove them from Image. |
| |
| * platform/graphics/ImageSource.cpp: |
| (WebCore::ImageSource::ImageSource): |
| * platform/graphics/ImageSource.h: |
| (WebCore::ImageSource::create): |
| |
| Make constructors private. |
| |
| * platform/graphics/cg/GraphicsContext3DCG.cpp: |
| (WebCore::GraphicsContext3D::ImageExtractor::extractImage): |
| |
| 2018-04-06 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed test fix after r230323 |
| |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::screen): Remove assertion we still hit due to event handling code. |
| |
| 2018-04-05 Youenn Fablet <youenn@apple.com> |
| |
| REGRESSION (r230223): LayoutTest http/tests/contentextensions/css-display-none-overflows-rule-data-1.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=184306 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add an option to not compile CSS rules since they are not useful in NetworkProcess. |
| Covered by tests no longer crashing in Debug WK2 bots. |
| |
| * contentextensions/ContentExtension.cpp: |
| (WebCore::ContentExtensions::ContentExtension::create): |
| (WebCore::ContentExtensions::ContentExtension::ContentExtension): |
| * contentextensions/ContentExtension.h: |
| * contentextensions/ContentExtensionsBackend.cpp: |
| (WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension): |
| * contentextensions/ContentExtensionsBackend.h: |
| |
| 2018-04-05 Brent Fulgham <bfulgham@apple.com> |
| |
| WebContent process is calling CGDisplayUsesInvertedPolarity |
| https://bugs.webkit.org/show_bug.cgi?id=184337 |
| <rdar://problem/39215702> |
| |
| Reviewed by Zalan Bujtas. |
| |
| The PlatformScreenMac code is still calling display-related routines directly, specifically |
| CGDisplayUsesInvertedPolarity and CGDisplayUsesForceToGray. These should be brokered from |
| the UIProcess. |
| |
| There's also no reason to avoid the brokering behavior on current WebKit builds. Remove |
| the compile guards so all macOS builds use this behavior. |
| |
| Finally, add some ProcessPrivilege assertions to guard against accidentally calling these |
| routines in the future. |
| |
| Tested by existing regression tests. |
| |
| * platform/PlatformScreen.h: |
| * platform/ScreenProperties.h: |
| (WebCore::ScreenProperties::encode const): Add new values. |
| (WebCore::ScreenProperties::decode): |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::displayID): Add assertion that this is not calling display-related routines in |
| the WebContent process. |
| (WebCore::firstScreen): Ditto. |
| (WebCore::screenProperties): Moved higher in the file so it can be reused. Add calls to |
| CGDisplayUsesInvertedPolarity and CGDisplayUsesForceToGray. |
| (WebCore::getScreenProperties): Moved higher in the file so it can be reused. Stop |
| double-hashing displayID. |
| (WebCore::screenIsMonochrome): Use cached values in WebContent process. Assert if this |
| code attempts a display-related routine in the WebContent process. |
| (WebCore::screenHasInvertedColors): Ditto. |
| (WebCore::screenDepth): Add assertion that this is not calling display-related routines in |
| the WebContent process. |
| (WebCore::screenDepthPerComponent): Ditto. |
| (WebCore::screenRect): Ditto. |
| (WebCore::screenAvailableRect): Ditto. |
| (WebCore::screen): Ditto. |
| (WebCore::screenColorSpace): Ditto. |
| (WebCore::screenSupportsExtendedColor): Ditto. |
| |
| 2018-04-05 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Apply cookie blocking to setCookiesFromDOM() |
| https://bugs.webkit.org/show_bug.cgi?id=184346 |
| <rdar://problem/39226036> |
| |
| Reviewed by Brent Fulgham. |
| |
| Since these cookies can't be seen and are not sent in requests, I |
| can't write an automated test for them. This really should have been |
| done as part of: https://bugs.webkit.org/show_bug.cgi?id=180682. |
| That said, I have tested this manually. |
| |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::setCookiesFromDOM): |
| |
| 2018-04-05 Zalan Bujtas <zalan@apple.com> |
| |
| Folding anonymous blocks should not result in deleting content. |
| https://bugs.webkit.org/show_bug.cgi?id=184339 |
| <rdar://problem/37327428> |
| |
| Reviewed by Antti Koivisto. |
| |
| While folding multiple anonymous blocks (moving the children from next sibling over to previous sibling) |
| we should ensure that the block we are about to destroy does not gain new descendants. |
| In case of 4 sibling anonymous blocks (A B C D), while destroying B |
| 1. we move C's children to A and destroy C. |
| 2. While destroying C, we notice B and C as sibling anonymous blocks and we move |
| D's children over to B (even though B is going to be destroyed as we climb back on the stack). |
| |
| In this patch, B is detached from the tree before we start moving renderers around so that a subsequent folding won't |
| find B anymore as a candidate. |
| |
| Test: fast/block/crash-while-folding-anonymous-blocks.html |
| |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::detach): |
| |
| 2018-04-05 Andy Estes <aestes@apple.com> |
| |
| Mark Payment Request as "Supported" in features.json |
| https://bugs.webkit.org/show_bug.cgi?id=184338 |
| |
| Reviewed by Anders Carlsson. |
| |
| * features.json: |
| |
| 2018-04-05 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, rolling out r230042. |
| |
| It is no longer needed now that it is safe to construct a |
| SecurityOrigin from an on-main thread |
| |
| Reverted changeset: |
| |
| "WebSocket::didReceiveMessage() may construct a SecurityOrigin |
| object on a non-main thread" |
| https://bugs.webkit.org/show_bug.cgi?id=184068 |
| https://trac.webkit.org/changeset/230042 |
| |
| 2018-04-05 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [WTF] Remove StaticLock |
| https://bugs.webkit.org/show_bug.cgi?id=184332 |
| |
| Reviewed by Mark Lam. |
| |
| No behavior change. |
| |
| * Modules/webdatabase/Database.cpp: |
| (WebCore::Database::Database): |
| (WebCore::Database::performOpenAndVerify): |
| (WebCore::Database::closeDatabase): |
| (WebCore::Database::getCachedVersion const): |
| (WebCore::Database::setCachedVersion): |
| * Modules/webdatabase/DatabaseTracker.cpp: |
| (WebCore::DatabaseTracker::openDatabaseMutex): |
| * Modules/webdatabase/DatabaseTracker.h: |
| * Modules/websockets/WebSocket.cpp: |
| (WebCore::WebSocket::allActiveWebSocketsMutex): |
| * Modules/websockets/WebSocket.h: |
| * bridge/objc/WebScriptObject.mm: |
| * crypto/CryptoAlgorithmRegistry.cpp: |
| (WebCore::CryptoAlgorithmRegistry::identifier): |
| (WebCore::CryptoAlgorithmRegistry::name): |
| (WebCore::CryptoAlgorithmRegistry::create): |
| (WebCore::CryptoAlgorithmRegistry::registerAlgorithm): |
| * dom/Node.cpp: |
| * platform/URL.cpp: |
| * platform/graphics/FontCache.cpp: |
| * platform/graphics/MediaPlayer.cpp: |
| * platform/ios/QuickLook.mm: |
| * platform/ios/WebSQLiteDatabaseTrackerClient.mm: |
| * platform/ios/wak/WebCoreThread.mm: |
| * platform/ios/wak/WebCoreThreadRun.cpp: |
| * platform/network/cf/LoaderRunLoopCF.cpp: |
| (WebCore::loaderRunLoop): |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::CurlShareHandle::mutexFor): |
| * platform/network/curl/CurlContext.h: |
| * platform/sql/SQLiteDatabaseTracker.cpp: |
| (WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount): |
| (WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount): |
| * platform/text/TextEncodingRegistry.cpp: |
| (WebCore::buildBaseTextCodecMaps): |
| (WebCore::newTextCodec): |
| (WebCore::atomicCanonicalTextEncodingName): |
| * workers/WorkerThread.cpp: |
| (WebCore::WorkerThread::workerThreadCount): |
| (WebCore::WorkerThread::WorkerThread): |
| (WebCore::WorkerThread::~WorkerThread): |
| (WebCore::WorkerThread::releaseFastMallocFreeMemoryInAllThreads): |
| |
| 2018-04-04 Youenn Fablet <youenn@apple.com> |
| |
| WebRTC data channel only applications require capture permissions for direct connections |
| https://bugs.webkit.org/show_bug.cgi?id=174500 |
| <rdar://problem/34134281> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: webrtc/datachannel/mdns-ice-candidates.html |
| |
| Add support at PeerConnectionBackend to obfuscate any gathered host candidate |
| by replacing the IP address with an opaque name that can be resolved by MDNS. |
| An opaque name is generated for each IP address and is scoped by the document owning the peer connection object. |
| |
| Add support to resolve any such MDNS ICE candidate. |
| A limit of 250 ms is fixed for the resolution to happen. |
| After 250 ms, the candidate is discarded. |
| |
| Add an experimental flag around this feature, off by default. |
| |
| * Modules/mediastream/PeerConnectionBackend.cpp: |
| (WebCore::extractIPAddres): |
| (WebCore::PeerConnectionBackend::addIceCandidate): |
| (WebCore::PeerConnectionBackend::addIceCandidateSucceeded): |
| (WebCore::PeerConnectionBackend::addIceCandidateFailed): |
| (WebCore::PeerConnectionBackend::newICECandidate): |
| (WebCore::PeerConnectionBackend::doneGatheringCandidates): |
| (WebCore::PeerConnectionBackend::registerMDNSName): |
| (WebCore::PeerConnectionBackend::finishedRegisteringMDNSName): |
| * Modules/mediastream/PeerConnectionBackend.h: |
| * Modules/mediastream/RTCIceCandidate.h: |
| (WebCore::RTCIceCandidate::setCandidate): |
| * Modules/mediastream/RTCPeerConnection.h: |
| * dom/Document.cpp: |
| (WebCore::Document::prepareForDestruction): |
| (WebCore::Document::suspend): |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::mdnsICECandidatesEnabled const): |
| (WebCore::RuntimeEnabledFeatures::setMDNSICECandidatesEnabled): |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.h: |
| |
| 2018-04-04 Brian Burg <bburg@apple.com> |
| |
| [Cocoa] WebDriver: test imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_non_session_cookie fails |
| https://bugs.webkit.org/show_bug.cgi?id=184314 |
| <rdar://problem/39186578> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Covered by several tests in add_cookie.py per the bug title. |
| |
| * platform/network/cocoa/CookieCocoa.mm: |
| (WebCore::Cookie::operator NSHTTPCookie * const): |
| By converting an integral UNIX timestamp to |maxAge| fractional seconds into the future, we introduce unwanted |
| precision that is truncated when switching back to a UNIX timestamp later. Always round up maxAge so that |
| the truncated value and actual value are the same. |
| |
| 2018-04-04 Alex Christensen <achristensen@webkit.org> |
| |
| Move PingHandle to WebKitLegacy |
| https://bugs.webkit.org/show_bug.cgi?id=184145 |
| |
| Reviewed by Youenn Fablet. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/network/PingHandle.h: Removed. |
| |
| 2018-04-04 Per Arne Vollan <pvollan@apple.com> |
| |
| The layout test fast/canvas/canvas-blending-global-alpha.html is failing when the WebContent process does not have WindowServer access. |
| https://bugs.webkit.org/show_bug.cgi?id=183752 |
| <rdar://problem/38635731> |
| |
| The test is failing because the system is only providing software rendering when there is no access |
| to the WindowServer, and software rendering is producing slightly different results than hardware |
| rendering. To enable accelerated rendering, the GPU to be used for IOSurface rendering needs to be |
| selected by handing over the OpenGL display mask to the IOSurface CGContext. |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests, covered by existing tests. |
| |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| (WebCore::GraphicsContext3D::getOpenGLDisplayMask): |
| * platform/graphics/cocoa/IOSurface.mm: |
| (WebCore::IOSurface::ensurePlatformContext): |
| |
| 2018-04-04 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Track the paint frequency through a new class named PaintFrequencyTracker |
| https://bugs.webkit.org/show_bug.cgi?id=184311 |
| |
| Reviewed by Antti Koivisto. |
| |
| PaintFrequencyTracker is a class which detects when a layer is painted |
| frequently. SinglePaintFrequencyTracking is used in conjunction with |
| PaintFrequencyTracker to recored a single paint timing. |
| |
| * rendering/PaintFrequencyTracker.h: Added. |
| (WebCore::PaintFrequencyTracker::begin): |
| (WebCore::PaintFrequencyTracker::end): |
| (WebCore::PaintFrequencyTracker::paintingFrequently const): |
| Simplify the logic for tracking the paint frequency and move it from |
| RenderLayer.cpp. |
| |
| (WebCore::SinglePaintFrequencyTracking::SinglePaintFrequencyTracking): |
| (WebCore::SinglePaintFrequencyTracking::~SinglePaintFrequencyTracking): |
| A convenient way to bracket the begin() and the end() methods of |
| PaintFrequencyTracker. |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::paintLayerContents): |
| (WebCore::RenderLayer::calculateClipRects const): |
| (WebCore::PaintFrequencyInfo::PaintFrequencyInfo): Deleted. |
| (WebCore::PaintFrequencyInfo::setPaintedCacheableResource): Deleted. |
| (WebCore::PaintFrequencyInfo::paintingFrequently const): Deleted. |
| (WebCore::PaintFrequencyInfo::updatePaintFrequency): Deleted. |
| (WebCore::PaintFrequencyInfo::paintingCacheableResource): Deleted. |
| * rendering/RenderLayer.h: |
| Rename PaintFrequencyInfo to PaintFrequencyTracker and move it a separate |
| header file. |
| |
| 2018-04-04 Jer Noble <jer.noble@apple.com> |
| |
| RELEASE_ASSERT in CaptionUserPreferencesMediaAF::CaptionUserPreferencesMediaAF() when MediaToolbox.framework missing |
| https://bugs.webkit.org/show_bug.cgi?id=184247 |
| <rdar://problem/39007591> |
| |
| Rubber-stamped by Eric Carlson. |
| |
| Use SOFT_LINK_FRAMEWORK_OPTIONAL for frameworks which are not guaranteed to be present. |
| |
| * page/CaptionUserPreferencesMediaAF.cpp: |
| (WebCore::CaptionUserPreferencesMediaAF::CaptionUserPreferencesMediaAF): |
| |
| 2018-04-04 Brent Fulgham <bfulgham@apple.com> |
| |
| Failures from mach port reference handling should be fatal |
| https://bugs.webkit.org/show_bug.cgi?id=184202 |
| <rdar://problem/37771114> |
| |
| Reviewed by Anders Carlsson. |
| |
| We may corrupt the Mach port space by improperly matching the equivalent of reference counting |
| retains (mach_port_mod_refs) with releases (mach_port_deallocate). |
| |
| Our current implementation of MachSendRights::create does not grab a reference if the passed |
| port is MACH_PORT_DEAD, but we unconditionally call mach_port_deallocate on the port, which |
| could lead to a reference count mismatch. |
| |
| Likewise, our MachSendRight destructor does not release the port if it has changed to MACH_PORT_DEAD |
| (e.g., if a child process dies), again leading to a mismatch in retain/releases. |
| |
| Finally, failures in mach_port_deallocate should be fatal because they indicate that the |
| application was attempting to remove an unowned right. This is a fatal condition for Mach, and |
| should lead to an abort. |
| |
| This patch does the following: |
| |
| 1. It creates a helper function that does the right thing for safely deallocating a mach port. |
| 2. It uses it in multiple places. |
| 3. It revises 'MachSendRight::create" so that it properly handles the condition of a dead port. |
| 4. It revises the MachSendRight destructor to properly handle the condition of a dead port. |
| |
| No new tests, no change in behavior expected. |
| |
| * SourcesCocoa.txt: Update for move of MachSendRight files. |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| * page/cocoa/ResourceUsageThreadCocoa.mm: |
| (WebCore::getMachThreads): Added. |
| (WebCore::cpuUsage): Use the new cleanup helper function. |
| * platform/cocoa/MachSendRight.cpp: Removed. |
| * platform/cocoa/MachSendRight.h: Removed. |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm: |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer): |
| * platform/graphics/cocoa/IOSurface.h: |
| * platform/graphics/cocoa/IOSurface.mm: |
| |
| 2018-04-04 Youenn Fablet <youenn@apple.com> |
| |
| Remove unused HTTP header names |
| https://bugs.webkit.org/show_bug.cgi?id=184272 |
| |
| Reviewed by Alex Christensen. |
| |
| No change of behavior. |
| Removed some names that are not used in the code base. |
| This allows to strengthen filtering of responses sent to WebProcess. |
| Added two headers used by web inspector. |
| Updated existing code to use indexed HTTP header names. |
| |
| * html/parser/XSSAuditor.cpp: |
| (WebCore::XSSAuditor::init): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::sourceMapURLForResource): |
| * platform/network/HTTPHeaderNames.in: |
| |
| 2018-04-04 Beth Dakin <bdakin@apple.com> |
| |
| Fix the !HAVE(AVFOUNDATION_VIDEO_OUTPUT) build |
| https://bugs.webkit.org/show_bug.cgi?id=184309 |
| -and corresponding- |
| rdar://problem/39179126 |
| |
| Reviewed by Jer Noble. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoFullscreenInlineImage): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer): |
| |
| 2018-04-04 Youenn Fablet <youenn@apple.com> |
| |
| MockRealtimeVideoSourceMac should produce kCVPixelFormatType_420YpCbCr8Planar buffers |
| https://bugs.webkit.org/show_bug.cgi?id=184304 |
| |
| Reviewed by Eric Carlson. |
| |
| Allows covering RealtimeOutgoingVideoSourceMac code path handling native buffers produced by capture video sources. |
| ARGB buffer coverage is done through canvas capture streams. |
| |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: |
| (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer): |
| |
| 2018-04-04 Youenn Fablet <youenn@apple.com> |
| |
| Introduce a ThreadSafeRefCounted parameter to ensure being destroyed on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=183988 |
| |
| Reviewed by Darin Adler. |
| |
| No change of behavior, TrackPrivate remains destroyed on the main thread. |
| |
| * platform/graphics/TrackPrivateBase.h: |
| * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: |
| (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): |
| (WebCore::AudioTrackPrivateMediaStreamCocoa::render): |
| |
| 2018-04-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix the build with libsoup < 2.49.91 after r230251. |
| |
| Stop using ResourceHandle in SoupNetworkSession. |
| |
| * platform/network/soup/SoupNetworkSession.cpp: |
| (WebCore::SoupNetworkSession::SoupNetworkSession): |
| (WebCore::authenticateCallback): Deleted. |
| (WebCore::requestStartedCallback): Deleted. |
| |
| 2018-04-03 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused libsoup ResourceHandle implementation |
| https://bugs.webkit.org/show_bug.cgi?id=184048 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This code is unused since r228901 so let's remove it! |
| |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleInternal.h: |
| (WebCore::ResourceHandleInternal::ResourceHandleInternal): |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| (WebCore::ResourceHandle::~ResourceHandle): |
| (WebCore::ResourceHandleInternal::soupSession): |
| (WebCore::ResourceHandle::cancelledOrClientless): |
| (WebCore::ResourceHandle::ensureReadBuffer): |
| (WebCore::ResourceHandle::currentStreamPosition const): |
| (WebCore::ResourceHandle::platformContinueSynchronousDidReceiveResponse): |
| (WebCore::ResourceHandle::didStartRequest): |
| (WebCore::ResourceHandle::start): |
| (WebCore::ResourceHandle::releaseForDownload): |
| (WebCore::ResourceHandle::sendPendingRequest): |
| (WebCore::ResourceHandle::cancel): |
| (WebCore::ResourceHandle::shouldUseCredentialStorage): |
| (WebCore::ResourceHandle::continueDidReceiveAuthenticationChallenge): |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): |
| (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential): |
| (WebCore::ResourceHandle::receivedCredential): |
| (WebCore::ResourceHandle::receivedCancellation): |
| (WebCore::ResourceHandle::receivedChallengeRejection): |
| (WebCore::ResourceHandle::platformSetDefersLoading): |
| (WebCore::sessionFromContext): Deleted. |
| (WebCore::ResourceHandle::create): Deleted. |
| (WebCore::ResourceHandle::ResourceHandle): Deleted. |
| (WebCore::isAuthenticationFailureStatusCode): Deleted. |
| (WebCore::tlsErrorsChangedCallback): Deleted. |
| (WebCore::gotHeadersCallback): Deleted. |
| (WebCore::applyAuthenticationToRequest): Deleted. |
| (WebCore::restartedCallback): Deleted. |
| (WebCore::shouldRedirect): Deleted. |
| (WebCore::shouldRedirectAsGET): Deleted. |
| (WebCore::continueAfterWillSendRequest): Deleted. |
| (WebCore::doRedirect): Deleted. |
| (WebCore::redirectSkipCallback): Deleted. |
| (WebCore::wroteBodyDataCallback): Deleted. |
| (WebCore::cleanupSoupRequestOperation): Deleted. |
| (WebCore::nextMultipartResponsePartCallback): Deleted. |
| (WebCore::sendRequestCallback): Deleted. |
| (WebCore::continueAfterDidReceiveResponse): Deleted. |
| (WebCore::startingCallback): Deleted. |
| (WebCore::networkEventCallback): Deleted. |
| (WebCore::createSoupMessageForHandleAndRequest): Deleted. |
| (WebCore::createSoupRequestAndMessageForHandle): Deleted. |
| (WebCore::ResourceHandle::timeoutFired): Deleted. |
| (WebCore::waitingToSendRequest): Deleted. |
| (WebCore::readCallback): Deleted. |
| |
| 2018-04-03 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Add missing WEBCORE_EXPORTs (for Windows shared library build) |
| https://bugs.webkit.org/show_bug.cgi?id=184279 |
| |
| Reviewed by Alex Christensen. |
| |
| * dom/Element.h: |
| * dom/Node.h: |
| * editing/FrameSelection.h: |
| * html/DOMURL.h: |
| * html/HTMLFormElement.h: |
| * html/canvas/CanvasRenderingContext.h: |
| * platform/graphics/GraphicsContext.h: |
| * platform/graphics/PlatformDisplay.h: |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/GraphicsContextImplCairo.h: |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/network/HTTPHeaderMap.h: |
| * platform/network/ResourceRequestBase.h: |
| * platform/network/ResourceResponseBase.h: |
| * platform/network/curl/AuthenticationChallenge.h: |
| * platform/network/curl/CurlFormDataStream.h: |
| * platform/network/curl/CurlRequest.h: |
| * platform/network/curl/CurlSSLHandle.h: |
| * platform/network/curl/ResourceError.h: |
| * platform/network/curl/ResourceResponse.h: |
| |
| 2018-04-03 Youenn Fablet <youenn@apple.com> |
| |
| RealtimeOutgoingVideoSourceMac should pass a ObjCFrameBuffer buffer |
| https://bugs.webkit.org/show_bug.cgi?id=184281 |
| rdar://problem/39153262 |
| |
| Reviewed by Jer Noble. |
| |
| Covered by manual testing by going to WebRTC web sites. |
| |
| * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: |
| (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated): |
| |
| 2018-04-03 Filip Pizlo <fpizlo@apple.com> |
| |
| GC shouldn't do object distancing |
| https://bugs.webkit.org/show_bug.cgi?id=184195 |
| |
| Reviewed by Saam Barati. |
| |
| No new tests because no change in behavior. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::JSDOMGlobalObject::JSDOMGlobalObject): |
| * bindings/js/JSDOMGlobalObject.h: |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::JSDOMWindowBase::JSDOMWindowBase): |
| * dom/Document.cpp: |
| (WebCore::Document::threadLocalCache): Deleted. |
| * dom/Document.h: |
| * page/OriginThreadLocalCache.cpp: Removed. |
| * page/OriginThreadLocalCache.h: Removed. |
| |
| 2018-04-03 Brent Fulgham <bfulgham@apple.com> |
| |
| Guard against keychain/certificate access outside the network process |
| https://bugs.webkit.org/show_bug.cgi?id=184214 |
| <rdar://problem/38734795> |
| |
| Reviewed by Youenn Fablet. |
| |
| Use the ProcessPrivilege assertions to guard against accessing the Keychain from |
| a non-Networking process. |
| |
| * Modules/webauthn/cocoa/LocalAuthenticator.mm: |
| (WebCore::LocalAuthenticator::makeCredential): Assert if we access the keychain from |
| a proces other than the Network or UI process. |
| (WebCore::LocalAuthenticator::getAssertion): Ditto. |
| (WebCore::LocalAuthenticator::issueClientCertificate const): Ditto. |
| * crypto/mac/SerializedCryptoKeyWrapMac.mm: |
| (WebCore::createAndStoreMasterKey): Ditto. |
| (WebCore::findMasterKey): Ditto. |
| (WebCore::deleteDefaultWebCryptoMasterKey): Ditto. |
| * platform/mac/SSLKeyGeneratorMac.mm: |
| (WebCore::signedPublicKeyAndChallengeString): Ditto. |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::createPrivateStorageSession): Ditto. |
| * platform/network/mac/ResourceHandleMac.mm: |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Ditto. |
| |
| 2018-04-03 Youenn Fablet <youenn@apple.com> |
| |
| NetworkResourceLoader does not need to expose all redirect response headers |
| https://bugs.webkit.org/show_bug.cgi?id=184114 |
| <rdar://problem/39010557> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| No JS observable change of behavior. |
| Behavior change is observable for injected bundles since they will no longer get access to the full response. |
| List of response headers correspond to the one currently being used/exposed for redirections. |
| |
| Test: http/wpt/loading/redirect-headers.html |
| |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setRestrictedHTTPResponseAccess): |
| (WebCore::RuntimeEnabledFeatures::restrictedHTTPResponseAccess const): |
| * platform/network/ResourceResponseBase.cpp: |
| (WebCore::isSafeToKeepRedirectionHeader): |
| (WebCore::ResourceResponseBase::sanitizeRedirectionHTTPHeaderFields): |
| * platform/network/ResourceResponseBase.h: |
| |
| 2018-04-03 Andy Estes <aestes@apple.com> |
| |
| [Mac] Prioritize file promises over filenames during drag and drop |
| https://bugs.webkit.org/show_bug.cgi?id=184237 |
| <rdar://problem/38278076> |
| |
| Reviewed by Wenson Hsieh. |
| |
| When performing a drag operation where the pasteboard contains both a file path and a file |
| promise, we have historically preferred to accept the file path. Some versions of Photos.app |
| will provide both a low-resolution thumbnail as a file path and its high-resolution |
| counterpart as a file promise when dragging a photo, and our current logic leads us to |
| choose the low-quality thumbnail. |
| |
| This patch changes our logic to prefer file promises over file paths. This matches the |
| behavior of Finder and ensures we accept high-resolution assets from Photos.app. |
| |
| Covered by existing file promise drag tests. beginDragWithFilePromises() was updated to |
| write a bogus file path to the pasteboard along with the legitimate file promise. |
| |
| * platform/mac/DragDataMac.mm: |
| (WebCore::DragData::asFilenames const): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::readFilePaths): |
| * platform/mac/PlatformPasteboardMac.mm: |
| (WebCore::PlatformPasteboard::numberOfFiles const): |
| |
| 2018-04-03 Mark Lam <mark.lam@apple.com> |
| |
| Fix mis-application of WTF_PREPARE_VTBL_POINTER_FOR_INSPECTION macro. |
| https://bugs.webkit.org/show_bug.cgi?id=184276 |
| <rdar://problem/39109543> |
| |
| Rubber-stamped by Michael Saboff. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| * bindings/scripts/test/JS/JSInterfaceName.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| (WebCore::toJSNewlyCreated): |
| |
| 2018-04-03 Yousuke Kimoto <yousuke.kimoto@sony.com> |
| |
| [CMake] gperf path should be given when WebCore/css/makevalues.pl is executed |
| https://bugs.webkit.org/show_bug.cgi?id=184224 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| When a building evironment doens't include a path to gperf, |
| WebCore/css/makevalue.pl failes due to failing to execute gperf, |
| so the full path to gperf should be given like WebCore/css/makeprop.pl. |
| |
| No new tests, no Web-facing behavior change. |
| |
| * CMakeLists.txt: gperf path is given to css/makevalues.pl. |
| * css/makevalues.pl: Add an argument to handle a given gperf path. |
| |
| 2018-04-03 Chris Dumez <cdumez@apple.com> |
| |
| Drop MainFrame class |
| https://bugs.webkit.org/show_bug.cgi?id=184191 |
| |
| Reviewed by Darin Adler. |
| |
| Drop MainFrame class and move contents into Page / Frame since there is a 1:1 |
| relationship between the Page and the MainFrame. |
| |
| This is ground work for introducing LocalFrame / RemoteFrame concepts. |
| |
| * Modules/applepay/ApplePaySession.cpp: |
| (WebCore::ApplePaySession::create): |
| (WebCore::ApplePaySession::supportsVersion): |
| (WebCore::ApplePaySession::canMakePayments): |
| (WebCore::ApplePaySession::canMakePaymentsWithActiveCard): |
| (WebCore::ApplePaySession::openPaymentSetup): |
| (WebCore::ApplePaySession::paymentCoordinator const): |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: |
| (WebCore::paymentCoordinator): |
| * Modules/mediastream/MediaDevicesEnumerationRequest.cpp: |
| * Modules/mediastream/UserMediaRequest.cpp: |
| * Modules/plugins/QuickTimePluginReplacement.mm: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::mainFrame const): |
| (WebCore::AccessibilityObject::visiblePositionForBounds const): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| * bindings/js/ScriptController.cpp: |
| * bindings/js/ScriptState.cpp: |
| * contentextensions/ContentExtensionsBackend.cpp: |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::displayModeEvaluate): |
| * dom/DOMImplementation.cpp: |
| * dom/Document.cpp: |
| * dom/DocumentMarkerController.cpp: |
| * dom/Element.cpp: |
| (WebCore::Element::removedFromAncestor): |
| * dom/EventDispatcher.cpp: |
| * dom/ScriptedAnimationController.cpp: |
| * editing/Editor.cpp: |
| (WebCore::Editor::scanSelectionForTelephoneNumbers): |
| * editing/EditorCommand.cpp: |
| * editing/SelectionRectGatherer.cpp: |
| (WebCore::SelectionRectGatherer::Notifier::~Notifier): |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| * editing/markup.cpp: |
| * history/CachedFrame.cpp: |
| * history/CachedPage.cpp: |
| * history/PageCache.cpp: |
| (WebCore::destroyRenderTree): |
| * html/HTMLMediaElement.cpp: |
| * html/HTMLPlugInImageElement.cpp: |
| * html/ImageDocument.cpp: |
| * html/MediaElementSession.cpp: |
| (WebCore::isMainContentForPurposesOfAutoplay): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| * inspector/InspectorClient.cpp: |
| * inspector/InspectorController.cpp: |
| * inspector/InspectorFrontendClientLocal.cpp: |
| * inspector/InspectorFrontendHost.cpp: |
| * inspector/InspectorInstrumentation.cpp: |
| * inspector/InspectorOverlay.cpp: |
| * inspector/PageScriptDebugServer.cpp: |
| * inspector/agents/InspectorApplicationCacheAgent.cpp: |
| * inspector/agents/InspectorCanvasAgent.cpp: |
| * inspector/agents/InspectorDOMAgent.cpp: |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::mainFrame): |
| * inspector/agents/InspectorPageAgent.h: |
| * inspector/agents/page/PageDebuggerAgent.cpp: |
| * inspector/agents/page/PageRuntimeAgent.cpp: |
| * loader/DocumentLoader.cpp: |
| * loader/DocumentWriter.cpp: |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| (WebCore::FrameLoader::setState): |
| * loader/HistoryController.cpp: |
| * loader/NavigationDisabler.h: |
| * loader/ProgressTracker.cpp: |
| * loader/ResourceLoadObserver.cpp: |
| * loader/ResourceLoader.cpp: |
| * loader/SubframeLoader.cpp: |
| * loader/SubresourceLoader.cpp: |
| * loader/appcache/ApplicationCacheHost.cpp: |
| * loader/archive/mhtml/MHTMLArchive.cpp: |
| * loader/cache/CachedResource.cpp: |
| * loader/cache/CachedResourceLoader.cpp: |
| * page/AutoscrollController.cpp: |
| * page/Chrome.cpp: |
| * page/ContextMenuController.cpp: |
| * page/DOMWindow.cpp: |
| * page/DebugPageOverlays.cpp: |
| (WebCore::MouseWheelRegionOverlay::updateRegion): |
| (WebCore::NonFastScrollableRegionOverlay::updateRegion): |
| (WebCore::RegionOverlay::create): |
| (WebCore::RegionOverlay::RegionOverlay): |
| (WebCore::RegionOverlay::~RegionOverlay): |
| (WebCore::DebugPageOverlays::ensureRegionOverlayForPage): |
| (WebCore::DebugPageOverlays::showRegionOverlay): |
| (WebCore::DebugPageOverlays::hideRegionOverlay): |
| (WebCore::DebugPageOverlays::regionChanged): |
| (WebCore::DebugPageOverlays::regionOverlayForPage const): |
| (WebCore::DebugPageOverlays::updateOverlayRegionVisibility): |
| (WebCore::DebugPageOverlays::settingsChanged): |
| * page/DebugPageOverlays.h: |
| (WebCore::DebugPageOverlays::hasOverlaysForPage const): |
| (WebCore::DebugPageOverlays::hasOverlays): |
| (WebCore::DebugPageOverlays::didLayout): |
| (WebCore::DebugPageOverlays::didChangeEventHandlers): |
| * page/DragController.cpp: |
| (WebCore::DragController::performDragOperation): |
| (WebCore::DragController::tryDHTMLDrag): |
| (WebCore::DragController::beginDrag): |
| (WebCore::DragController::doSystemDrag): |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::handleMousePressEvent): |
| (WebCore::EventHandler::mouseMoved): |
| (WebCore::EventHandler::handleMouseReleaseEvent): |
| (WebCore::EventHandler::handleWheelEvent): |
| (WebCore::EventHandler::clearLatchedState): |
| (WebCore::EventHandler::defaultWheelEventHandler): |
| * page/FocusController.cpp: |
| * page/Frame.cpp: |
| (WebCore::Frame::Frame): |
| (WebCore::Frame::dropChildren): |
| (WebCore::Frame::selfOnlyRef): |
| (WebCore::Frame::selfOnlyDeref): |
| * page/Frame.h: |
| (WebCore::Frame::mainFrame const): |
| * page/FrameTree.cpp: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::setFrameRect): |
| (WebCore::FrameView::setContentsSize): |
| (WebCore::FrameView::didChangeScrollOffset): |
| (WebCore::FrameView::setViewExposedRect): |
| * page/History.cpp: |
| * page/MainFrame.cpp: Removed. |
| * page/MainFrame.h: Removed. |
| * page/MemoryRelease.cpp: |
| * page/Page.cpp: |
| (WebCore::Page::Page): |
| (WebCore::m_applicationManifest): |
| (WebCore::Page::setDeviceScaleFactor): |
| (WebCore::Page::latchingState): |
| (WebCore::Page::pushNewLatchingState): |
| (WebCore::Page::resetLatchingState): |
| (WebCore::Page::popLatchingState): |
| (WebCore::Page::removeLatchingStateForTarget): |
| (WebCore::Page::setPaymentCoordinator): |
| * page/Page.h: |
| (WebCore::Page::mainFrame): |
| (WebCore::Page::mainFrame const): |
| (WebCore::Page::wheelEventDeltaFilter): |
| (WebCore::Page::pageOverlayController): |
| (WebCore::Page::servicesOverlayController): |
| (WebCore::Page::paymentCoordinator const): |
| (WebCore::Page::applicationManifest const): |
| (WebCore::Page::performanceLogging const): |
| * page/PageConsoleClient.cpp: |
| * page/PageDebuggable.cpp: |
| * page/PageGroup.cpp: |
| * page/PageGroupLoadDeferrer.cpp: |
| * page/PageOverlay.cpp: |
| (WebCore::PageOverlay::controller const): |
| * page/PageOverlayController.cpp: |
| (WebCore::PageOverlayController::PageOverlayController): |
| (WebCore::PageOverlayController::createRootLayersIfNeeded): |
| (WebCore::PageOverlayController::layerWithDocumentOverlays): |
| (WebCore::PageOverlayController::layerWithViewOverlays): |
| (WebCore::PageOverlayController::installPageOverlay): |
| (WebCore::PageOverlayController::updateForceSynchronousScrollLayerPositionUpdates): |
| (WebCore::PageOverlayController::didChangeViewExposedRect): |
| (WebCore::PageOverlayController::updateSettingsForLayer): |
| (WebCore::PageOverlayController::deviceScaleFactor const): |
| (WebCore::PageOverlayController::notifyFlushRequired): |
| (WebCore::PageOverlayController::tiledBackingUsageChanged): |
| * page/PageOverlayController.h: |
| * page/PageSerializer.cpp: |
| * page/PerformanceLogging.cpp: |
| (WebCore::PerformanceLogging::PerformanceLogging): |
| (WebCore::PerformanceLogging::didReachPointOfInterest): |
| * page/PerformanceLogging.h: |
| * page/PerformanceMonitor.cpp: |
| * page/ResourceUsageOverlay.cpp: |
| (WebCore::ResourceUsageOverlay::~ResourceUsageOverlay): |
| (WebCore::ResourceUsageOverlay::initialize): |
| * page/SettingsBase.cpp: |
| * page/SpatialNavigation.cpp: |
| * page/UserContentProvider.cpp: |
| * page/ios/FrameIOS.mm: |
| * page/mac/DragControllerMac.mm: |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::latchingIsLockedToPlatformFrame): |
| (WebCore::latchingIsLockedToAncestorOfThisFrame): |
| (WebCore::EventHandler::clearOrScheduleClearingLatchedStateIfNeeded): |
| (WebCore::EventHandler::platformPrepareForWheelEvents): |
| (WebCore::EventHandler::platformRecordWheelEvent): |
| (WebCore::EventHandler::platformCompleteWheelEvent): |
| (WebCore::EventHandler::platformCompletePlatformWidgetWheelEvent): |
| * page/mac/PageMac.mm: |
| * page/mac/ServicesOverlayController.h: |
| (WebCore::ServicesOverlayController::page const): |
| * page/mac/ServicesOverlayController.mm: |
| (WebCore::ServicesOverlayController::Highlight::Highlight): |
| (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired): |
| (WebCore::ServicesOverlayController::Highlight::deviceScaleFactor const): |
| (WebCore::ServicesOverlayController::ServicesOverlayController): |
| (WebCore::ServicesOverlayController::invalidateHighlightsOfType): |
| (WebCore::ServicesOverlayController::buildPotentialHighlightsIfNeeded): |
| (WebCore::ServicesOverlayController::remainingTimeUntilHighlightShouldBeShown const): |
| (WebCore::ServicesOverlayController::buildPhoneNumberHighlights): |
| (WebCore::ServicesOverlayController::buildSelectionHighlight): |
| (WebCore::ServicesOverlayController::hasRelevantSelectionServices): |
| (WebCore::ServicesOverlayController::createOverlayIfNeeded): |
| (WebCore::ServicesOverlayController::telephoneNumberRangesForFocusedFrame): |
| (WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight): |
| (WebCore::ServicesOverlayController::mouseEvent): |
| (WebCore::ServicesOverlayController::handleClick): |
| (WebCore::ServicesOverlayController::mainFrame const): |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| * page/scrolling/ScrollingCoordinator.cpp: |
| * page/scrolling/ios/ScrollingCoordinatorIOS.mm: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| * platform/graphics/ca/win/CACFLayerTreeHost.cpp: |
| * plugins/DOMMimeType.cpp: |
| * plugins/PluginInfoProvider.cpp: |
| (WebCore::PluginInfoProvider::refresh): |
| * rendering/RenderBox.cpp: |
| * rendering/RenderLayer.cpp: |
| * rendering/RenderLayerBacking.cpp: |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::hasAnyAdditionalCompositedLayers const): |
| (WebCore::RenderLayerCompositor::updateCompositingLayers): |
| (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers): |
| (WebCore::RenderLayerCompositor::attachRootLayer): |
| (WebCore::RenderLayerCompositor::detachRootLayer): |
| (WebCore::RenderLayerCompositor::rootLayerAttachmentChanged): |
| * rendering/RenderObject.cpp: |
| * replay/UserInputBridge.cpp: |
| * storage/StorageEventDispatcher.cpp: |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::suspendMemoryCacheClientCalls): |
| * svg/SVGSVGElement.cpp: |
| * svg/graphics/SVGImage.cpp: |
| * testing/InternalSettings.cpp: |
| * testing/Internals.cpp: |
| (WebCore::Internals::Internals): |
| (WebCore::Internals::installMockPageOverlay): |
| (WebCore::Internals::pageOverlayLayerTreeAsText const): |
| * testing/MockPageOverlay.cpp: |
| * testing/MockPageOverlay.h: |
| * testing/MockPageOverlayClient.cpp: |
| (WebCore::MockPageOverlayClient::installOverlay): |
| (WebCore::MockPageOverlayClient::layerTreeAsText): |
| * testing/MockPageOverlayClient.h: |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::MockPaymentCoordinator): |
| (WebCore::MockPaymentCoordinator::showPaymentUI): |
| (WebCore::MockPaymentCoordinator::completeMerchantValidation): |
| (WebCore::MockPaymentCoordinator::changeShippingOption): |
| (WebCore::MockPaymentCoordinator::changePaymentMethod): |
| (WebCore::MockPaymentCoordinator::acceptPayment): |
| (WebCore::MockPaymentCoordinator::cancelPayment): |
| * testing/MockPaymentCoordinator.h: |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| |
| 2018-04-03 Sihui Liu <sihui_liu@apple.com> |
| |
| The referer header is not set after redirect |
| https://bugs.webkit.org/show_bug.cgi?id=182644 |
| <rdar://problem/37479048> |
| |
| Reviewed by Youenn Fablet. |
| |
| Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. |
| |
| Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * dom/Document.cpp: |
| (WebCore::Document::processReferrerPolicy): |
| * loader/CrossOriginAccessControl.cpp: |
| (WebCore::updateRequestReferrer): |
| * loader/CrossOriginAccessControl.h: |
| * loader/ResourceLoader.h: |
| (WebCore::ResourceLoader::setReferrerPolicy): |
| (WebCore::ResourceLoader::referrerPolicy const): |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): |
| (WebCore::SubresourceLoader::updateReferrerPolicy): |
| * loader/SubresourceLoader.h: |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): |
| (WebCore::CachedResourceRequest::updateForAccessControl): |
| (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): |
| * platform/ReferrerPolicy.cpp: Added. |
| (WebCore::parseReferrerPolicy): |
| * platform/ReferrerPolicy.h: |
| * platform/network/HTTPHeaderNames.in: |
| |
| 2018-04-03 Chris Dumez <cdumez@apple.com> |
| |
| Make SecurityOrigin safe to create and use from any thread |
| https://bugs.webkit.org/show_bug.cgi?id=184216 |
| |
| Reviewed by Youenn Fablet. |
| |
| We found that we have a decent amount of code constructing and using SecurityOrigin |
| objects from non-main threads. Unfortunately, this was not safe, mostly due to |
| SecurityOrigin's reliance on the SchemeRegistry. |
| |
| This patch makes it safe to construct a SecurityOrigin on any thread A and use |
| it later on the same thread A. However, developers still need to call isolatedCopy() |
| if they want to pass such object to another thread B. |
| |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::canDisplay const): |
| * page/SecurityOrigin.h: |
| * page/SecurityPolicy.cpp: |
| (WebCore::originAccessMapLock): |
| (WebCore::originAccessMap): |
| (WebCore::SecurityPolicy::isAccessWhiteListed): |
| (WebCore::SecurityPolicy::addOriginAccessWhitelistEntry): |
| (WebCore::SecurityPolicy::removeOriginAccessWhitelistEntry): |
| (WebCore::SecurityPolicy::resetOriginAccessWhitelists): |
| * platform/SchemeRegistry.cpp: |
| (WebCore::schemeRegistryLock): |
| (WebCore::allBuiltinSchemes): |
| (WebCore::builtinLocalURLSchemes): |
| (WebCore::localURLSchemes): |
| (WebCore::displayIsolatedURLSchemes): |
| (WebCore::builtinSecureSchemes): |
| (WebCore::secureSchemes): |
| (WebCore::builtinSchemesWithUniqueOrigins): |
| (WebCore::schemesWithUniqueOrigins): |
| (WebCore::builtinEmptyDocumentSchemes): |
| (WebCore::emptyDocumentSchemes): |
| (WebCore::schemesForbiddenFromDomainRelaxation): |
| (WebCore::builtinCanDisplayOnlyIfCanRequestSchemes): |
| (WebCore::canDisplayOnlyIfCanRequestSchemes): |
| (WebCore::notAllowingJavascriptURLsSchemes): |
| (WebCore::SchemeRegistry::registerURLSchemeAsLocal): |
| (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal): |
| (WebCore::schemesAllowingLocalStorageAccessInPrivateBrowsing): |
| (WebCore::schemesAllowingDatabaseAccessInPrivateBrowsing): |
| (WebCore::builtinCORSEnabledSchemes): |
| (WebCore::CORSEnabledSchemes): |
| (WebCore::ContentSecurityPolicyBypassingSchemes): |
| (WebCore::cachePartitioningSchemes): |
| (WebCore::serviceWorkerSchemes): |
| (WebCore::alwaysRevalidatedSchemes): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): |
| (WebCore::SchemeRegistry::registerURLSchemeAsNoAccess): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsNoAccess): |
| (WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated): |
| (WebCore::SchemeRegistry::registerURLSchemeAsSecure): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsSecure): |
| (WebCore::SchemeRegistry::canDisplayOnlyIfCanRequest): |
| (WebCore::SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest): |
| (WebCore::SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy): |
| (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy): |
| (WebCore::SchemeRegistry::schemeShouldBypassContentSecurityPolicy): |
| (WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned): |
| (WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme): |
| (WebCore::SchemeRegistry::registerURLSchemeServiceWorkersCanHandle): |
| (WebCore::SchemeRegistry::canServiceWorkersHandleURLScheme): |
| (WebCore::SchemeRegistry::isServiceWorkerContainerCustomScheme): |
| * platform/SchemeRegistry.h: |
| |
| 2018-04-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Stop using ResourceHandle to load GResources |
| https://bugs.webkit.org/show_bug.cgi?id=184259 |
| |
| Reviewed by Sergio Villar Senin. |
| |
| GResources are loaded in the WebProcess using ResourceHandle because soup handles them transparently. But now |
| that we no longer use ResourceHandle, we can add a simple loader for GResources, similar to the one used for |
| data URLS, since loading a GResource is a matter of calling g_resources_lookup_data() in the end. |
| |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::start): Check if resource to load is a GResource and call loadGResource(). |
| * loader/ResourceLoader.h: |
| * loader/soup/ResourceLoaderSoup.cpp: Added. |
| (WebCore::ResourceLoader::loadGResource): Load the GResource in a GTask thread. |
| * platform/SharedBuffer.cpp: |
| (WebCore::SharedBuffer::DataSegment::data const): |
| (WebCore::SharedBuffer::DataSegment::size const): |
| * platform/SharedBuffer.h: |
| * platform/glib/SharedBufferGlib.cpp: |
| (WebCore::SharedBuffer::SharedBuffer): |
| (WebCore::SharedBuffer::create): |
| |
| 2018-04-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [Enchant] Clean up TextCheckerEnchant |
| https://bugs.webkit.org/show_bug.cgi?id=184233 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Several cleanups and improvements: |
| |
| * platform/text/enchant/TextCheckerEnchant.cpp: |
| (WebCore::TextCheckerEnchant::singleton): Make TextCheckerEnchant a singleton since it's always used as a |
| singleton. |
| (WebCore::TextCheckerEnchant::EnchantDictDeleter::operator() const): |
| (WebCore::TextCheckerEnchant::TextCheckerEnchant): |
| (WebCore::TextCheckerEnchant::ignoreWord): Convert to utf8 once instead of on every loop iteration. |
| (WebCore::TextCheckerEnchant::learnWord): Ditton. |
| (WebCore::TextCheckerEnchant::checkSpellingOfWord): m_enchantDictionaries is now a Vector of std::unique_ptr. |
| (WebCore::TextCheckerEnchant::getGuessesForWord): Convert to utf8 once instead of on every loop iteration. |
| (WebCore::TextCheckerEnchant::updateSpellCheckingLanguages): Get only the first language instead of building a |
| vector to get its first item. Use WTFMove to replace m_enchantDictionaries with the new Vector. |
| (WebCore::TextCheckerEnchant::loadedSpellCheckingLanguages const): Use a lambda to get the list of languages |
| already converted to String and iterate only once. |
| (WebCore::TextCheckerEnchant::availableSpellCheckingLanguages const): Ditto. |
| (WebCore::enchantDictDescribeCallback): Deleted. |
| (WebCore::TextCheckerEnchant::~TextCheckerEnchant): Deleted. |
| (WebCore::TextCheckerEnchant::freeEnchantBrokerDictionaries): Deleted. |
| * platform/text/enchant/TextCheckerEnchant.h: |
| |
| 2018-04-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Segfaults in enchant_broker_free_dict() |
| https://bugs.webkit.org/show_bug.cgi?id=183738 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Check enchant_broker_request_dict() didn't return nullptr before adding it to the m_enchantDictionaries vector. |
| |
| * platform/text/enchant/TextCheckerEnchant.cpp: |
| (WebCore::TextCheckerEnchant::updateSpellCheckingLanguages): |
| |
| 2018-04-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] NetworkProcess from WebKitGtk+ 2.19.9x SIGSEVs in NetworkStorageSession (secret search callback) |
| https://bugs.webkit.org/show_bug.cgi?id=183346 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This might happen if a request is cancelled right after the password request starts and before it finishes. We |
| should cancel the password search when the network request is cancelled, not only when the NetworkStorageSession |
| is destroyed. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/soup/NetworkStorageSessionSoup.cpp: |
| (WebCore::NetworkStorageSession::~NetworkStorageSession): |
| (WebCore::SecretServiceSearchData::SecretServiceSearchData): Helper struct to keep the request cancellable and |
| completion handler. |
| (WebCore::NetworkStorageSession::getCredentialFromPersistentStorage): Create a SecretServiceSearchData for the |
| request. |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Pass the request cancellable to |
| NetworkStorageSession::getCredentialFromPersistentStorage(). |
| |
| 2018-04-02 Eric Carlson <eric.carlson@apple.com> |
| |
| [Extra zoom mode] Replace video with a placeholder image during fullscreen transition |
| https://bugs.webkit.org/show_bug.cgi?id=184188 |
| <rdar://problem/38940307> |
| |
| Reviewed by Youenn Fablet. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::willExitFullscreen): |
| * html/HTMLMediaElement.h: |
| * platform/cocoa/VideoFullscreenChangeObserver.h: |
| * platform/cocoa/VideoFullscreenModelVideoElement.h: |
| * platform/cocoa/VideoFullscreenModelVideoElement.mm: |
| (VideoFullscreenModelVideoElement::willExitFullscreen): |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::updateVideoFullscreenInlineImage): |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::updateVideoFullscreenInlineImage): |
| * platform/graphics/VideoFullscreenLayerManager.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoFullscreenInlineImage): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer): |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h: |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm: |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer): |
| (WebCore::VideoFullscreenLayerManagerObjC::updateVideoFullscreenInlineImage): |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer): |
| * platform/ios/VideoFullscreenInterfaceAVKit.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::exitFullscreen): |
| (VideoFullscreenInterfaceAVKit::preparedToExitFullscreen): |
| (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): |
| * platform/ios/WebVideoFullscreenControllerAVKit.mm: |
| (VideoFullscreenControllerContext::willExitFullscreen): |
| |
| 2018-04-02 Eric Carlson <eric.carlson@apple.com> |
| |
| Define AVKit softlink macro |
| https://bugs.webkit.org/show_bug.cgi?id=184241 |
| |
| Reviewed by Jer Noble. |
| |
| No new tests, no functional change. |
| |
| * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm: |
| * platform/ios/PlaybackSessionInterfaceAVKit.mm: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| * platform/ios/WebAVPlayerController.mm: |
| * platform/mac/PlaybackSessionInterfaceMac.mm: |
| * platform/mac/VideoFullscreenInterfaceMac.mm: |
| |
| 2018-04-02 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Update date picker UI to latest specifications |
| https://bugs.webkit.org/show_bug.cgi?id=184234 |
| <rdar://problem/38804760> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Tweak localizable strings. Day, month and year labels should be fully capitalized, and there needs to be a |
| string for the "Set" button title. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::datePickerSetButtonTitle): |
| (WebCore::datePickerDayLabelTitle): |
| (WebCore::datePickerMonthLabelTitle): |
| (WebCore::datePickerYearLabelTitle): |
| * platform/LocalizedStrings.h: |
| |
| 2018-04-02 Ryosuke Niwa <rniwa@webkit.org> |
| |
| REGRESSION(r228260):WebHTMLView beeps at every keydown for Chinese/Japanese/Korean Input Method |
| https://bugs.webkit.org/show_bug.cgi?id=184231 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| The bug was caused by EventHandler::internalKeyEvent calling setDefaultHandled and expecting it to stay true |
| after dispatching the event even though m_defaultHandled is always cleared after r228260. This results in |
| EventHandler::internalKeyEvent returning false, and resulting in a beep. |
| |
| Unfortunately, no new tests since there is no facility to detect this case in layout tests, and we can't |
| easily emulate or trigger a real input method in API tests. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::internalKeyEvent): |
| |
| 2018-04-02 Jer Noble <jer.noble@apple.com> |
| |
| AudioBufferSourceNode start method causes OfflineAudioContext to start running |
| https://bugs.webkit.org/show_bug.cgi?id=181939 |
| <rdar://problem/36755393> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: webaudio/offlineaudiocontext-restriction.html |
| |
| Don't respect playback restrictions for offline AudioContexts. |
| |
| * Modules/webaudio/AudioContext.cpp: |
| (WebCore::AudioContext::constructCommon): |
| * Modules/webaudio/AudioContext.h: |
| (WebCore::AudioContext::isOfflineContext const): |
| (WebCore::AudioContext::userGestureRequiredForAudioStart const): |
| (WebCore::AudioContext::pageConsentRequiredForAudioStart const): |
| (WebCore::AudioContext::isOfflineContext): Deleted. |
| |
| 2018-04-02 Alejandro G. Castro <alex@igalia.com> |
| |
| [GTK] Make libwebrtc backend buildable for GTK port |
| https://bugs.webkit.org/show_bug.cgi?id=178860 |
| |
| Reviewed by Youenn Fablet. |
| |
| This is the first step to add webrtc support to the GTK port using |
| the libwebrtc backend. |
| |
| No new tests, no new feature added, it should be tested by current |
| tests. |
| |
| * CMakeLists.txt: Add the new files to the compilation and set the |
| new includes in the libwebrtc library. |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| Reorder the includes alphabetically and add some that are missing. |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: |
| Ditto. |
| * Sources.txt: Add new file to the compilation. |
| * platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp: |
| Added. Initial implementation for GTK and WPE. |
| * platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.h: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.h: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp: |
| Added. Ditto. |
| * platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h: |
| Added. Ditto. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp: Added includes |
| for the compilation. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderGlib.h: Added, inherit from |
| the LibWebRTCProvider to adapt for glib. |
| |
| 2018-04-01 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Use WTF::Lock instead of GMutex |
| https://bugs.webkit.org/show_bug.cgi?id=184227 |
| |
| Reviewed by Saam Barati. |
| |
| Prefer WTF::Lock over GMutex since these locks are just protecting WebKit C++ fields. |
| |
| No behavior change. |
| |
| * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp: |
| (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer): |
| (WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): |
| (WebCore::AudioSourceProviderGStreamer::provideInput): |
| (WebCore::AudioSourceProviderGStreamer::handleAudioBuffer): |
| (WebCore::AudioSourceProviderGStreamer::clearAdapters): |
| * platform/audio/gstreamer/AudioSourceProviderGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase): |
| (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): |
| (WebCore::MediaPlayerPrivateGStreamerBase::naturalSize const): |
| (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): |
| (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer): |
| (WebCore::MediaPlayerPrivateGStreamerBase::paint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture): |
| (WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp: |
| |
| 2018-03-31 Brent Fulgham <bfulgham@apple.com> |
| |
| Show punycode if URL contains hyphen character |
| https://bugs.webkit.org/show_bug.cgi?id=184221 |
| <rdar://problem/38044633> |
| |
| Reviewed by Darin Adler. |
| |
| Revise our "lookalike character" logic to include the hyphen, |
| non-breaking hyphen, and minus sign. |
| |
| Test: fast/url/host.html |
| |
| * platform/mac/WebCoreNSURLExtras.mm: |
| (WebCore::isLookalikeCharacter): |
| |
| 2018-03-31 Filip Pizlo <fpizlo@apple.com> |
| |
| JSObject shouldn't do index masking |
| https://bugs.webkit.org/show_bug.cgi?id=184194 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| No new tests because no new behavior. |
| |
| * bindings/js/JSDOMConvertSequences.h: |
| (WebCore::Detail::NumericSequenceConverter::convertArray): |
| (WebCore::Detail::SequenceConverter::convertArray): |
| |
| 2018-03-30 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r229828): Facebook login popup is blank |
| https://bugs.webkit.org/show_bug.cgi?id=184206 |
| <rdar://problem/39057006> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Since r229828, we freeze the layer tree during the navigation policy check. |
| We freeze in WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction() |
| and unfreeze in WebFrameLoaderClient::didDecidePolicyForNavigationAction(). |
| |
| WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction() gets called |
| from PolicyChecker::checkNavigationPolicy() which has 3 call sites in |
| FrameLoader and one in DocumentLoader for redirects. The call sites in |
| FrameLoader were taking care of calling didDecidePolicyForNavigationAction() |
| on the FrameLoaderClient in their completion handler, but the DocumentLoader |
| call site was failing to do so. As a result, the layer tree would stay frozen. |
| |
| To make this a lot less error prone, I moved the call to |
| WebFrameLoaderClient::didDecidePolicyForNavigationAction() to |
| PolicyChecker::checkNavigationPolicy(), inside the completion handler passed |
| to WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(). This way, |
| even if new code starts calling PolicyChecker::checkNavigationPolicy(), we |
| do not need to worry about letting the client know when the policy decision |
| is made. |
| |
| No new tests, covered by existing redirection tests with the |
| new assertion I added. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| |
| 2018-03-30 Devin Rousso <webkit@devinrousso.com> |
| |
| Web Inspector: tint all pixels drawn by shader program when hovering ShaderProgramTreeElement |
| https://bugs.webkit.org/show_bug.cgi?id=175223 |
| |
| Reviewed by Matt Baker. |
| |
| Test: inspector/canvas/setShaderProgramHighlighted.html |
| |
| * html/canvas/InspectorShaderProgram.h: |
| (WebCore::InspectorShaderProgram::highlighted): |
| (WebCore::InspectorShaderProgram::setHighlighted): |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::InspectorScopedShaderProgramHighlight::InspectorScopedShaderProgramHighlight): |
| (WebCore::InspectorScopedShaderProgramHighlight::~InspectorScopedShaderProgramHighlight): |
| (WebCore::InspectorScopedShaderProgramHighlight::showHighlight): |
| (WebCore::InspectorScopedShaderProgramHighlight::hideHighlight): |
| (WebCore::InspectorScopedShaderProgramHighlight::saveBlendValue): |
| (WebCore::InspectorScopedShaderProgramHighlight::hasBufferBinding): |
| (WebCore::InspectorScopedShaderProgramHighlight::hasFramebufferParameterAttachment): |
| (WebCore::WebGLRenderingContextBase::drawArrays): |
| (WebCore::WebGLRenderingContextBase::drawElements): |
| If the current shader program has been marked as highlighted, apply a blend right before |
| `drawArrays` and `drawElements` is called, tinting the resulting pixels so that they are |
| visually distinguished from pixels drawn by other shader programs. |
| |
| * inspector/InspectorCanvasAgent.h: |
| * inspector/InspectorCanvasAgent.cpp: |
| (WebCore::InspectorCanvasAgent::setShaderProgramHighlighted): |
| (WebCore::InspectorCanvasAgent::isShaderProgramHighlighted): |
| |
| * inspector/InspectorInstrumentation.h: |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::isShaderProgramHighlighted): |
| (WebCore::InspectorInstrumentation::isShaderProgramHighlightedImpl): |
| |
| 2018-03-30 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Adopt list view controller UI for numeric input types |
| https://bugs.webkit.org/show_bug.cgi?id=184184 |
| <rdar://problem/37238916> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Add a localized string for the OK button shown on number pads in extra zoomed form controls. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::numberPadOKButtonTitle): |
| * platform/LocalizedStrings.h: |
| |
| 2018-03-30 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Copying a list from Microsoft Word to TinyMCE fails when mso-list is the first property |
| https://bugs.webkit.org/show_bug.cgi?id=182938 |
| <rdar://problem/37683007> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Made the logic to detect Microsoft Word's mso-list CSS property more generic by detecting |
| inline styles which start with "mso-list:" and one which line-break right before it: "\nmso-list:" |
| |
| Tests: PasteHTML.PreservesMSOList |
| |
| * editing/markup.cpp: |
| (WebCore::StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement): |
| |
| 2018-03-30 Youenn Fablet <youenn@apple.com> |
| |
| NetworkLoadChecker should upgrade redirects if needed |
| https://bugs.webkit.org/show_bug.cgi?id=184098 |
| |
| Reviewed by Chris Dumez. |
| |
| Test: imported/w3c/web-platform-tests/beacon/upgrade-beacon.https.html |
| |
| * page/csp/ContentSecurityPolicy.h: |
| |
| 2018-03-30 Daniel Bates <dabates@apple.com> |
| |
| ASSERTION FAILED: ASSERT(!containsImage || MIMETypeRegistry::isSupportedImageResourceMIMEType([resource MIMEType])) in -[NSPasteboard(WebExtras) _web_writePromisedRTFDFromArchive:containsImage:] |
| https://bugs.webkit.org/show_bug.cgi?id=184161 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Fixes an assertion failure when quiting an app that uses a Legacy WebKit web view |
| after dragging-and-dropping a PDF embedded using an HTML image element into the |
| same web view. |
| |
| When performing a drag-and-drop of a PDF document image (WebCore::PDFDocumentImage) we create a WebArchive |
| from the main frame's WebHTMLView and promise AppKit that will provide a Rich Text Format (RTF) document |
| from this archive if needed. For some reason, on app termination AppKit requests that the WebHTMLView |
| fullfill its RTF document promise for the WebArchive created at the start of the drag operation. WebKit |
| expects that the created WebArchive is either for an inline image (e.g. <img>) or an image document that |
| has a supported image resource MIME type (by querying MIMETypeRegistry::isSupportedImageResourceMIMEType()) |
| and checks for these cases in this order. PDF/PostScript are not listed in the set of supported image |
| resource MIME types. So, the first check fails and WebKit assumes that the WebArchive was created from |
| an image document of a supported image resource MIME type. However, the WebArchive was created from a |
| WebHTMLView and has MIME type text/html. Therefore the assertion fails. We need to add PDF and PostScript |
| to the set of supported image resource MIME types so that WebKit does not fall back to the WebHTMLView |
| code path. Historically, PDF and PostScript were in the set supported image resource MIME types. Over time |
| the set of MIME types for image resouces (images loaded as a document) became identical to the set of MIME |
| types for images loaded inline (e.g. <img>) and this set omitted the MIME types for PDF and PostScript. |
| |
| Additionally it is sufficient to implement MIMETypeRegistry::isSupportedImageResourceMIMEType() in terms |
| of MIMETypeRegistry::isSupportedImageMIMEType() and MIMETypeRegistry::isPDFOrPostScriptMIMEType() instead |
| of allocating a dedicated HashSet for the supported image resource MIME types (as we currently do). |
| |
| * dom/DOMImplementation.cpp: |
| (WebCore::DOMImplementation::createDocument): Assert that PDF is a supported image MIME type before |
| instantiating an ImageDocument. |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::initializeSupportedImageMIMETypes): Remove unnecessary allocation of a HashSet for the support |
| image resource MIME types. |
| (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType): Write in terms of MIMETypeRegistry::isSupportedImageMIMEType() |
| and MIMETypeRegistry::isPDFOrPostScriptMIMEType(). |
| (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes): Deleted. |
| * platform/MIMETypeRegistry.h: |
| |
| 2018-03-29 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] CSSTransition objects should have fill: backwards to allow seeking prior to start time |
| https://bugs.webkit.org/show_bug.cgi?id=184129 |
| |
| Reviewed by Dean Jackson. |
| |
| In order to allow a CSS Transition to be seeked prior to its start time, it needs to have its fill mode set |
| to backwards. Adding code to set the fill mode in CSSTransition::initialize() yields early timing model |
| invalidation and we could get in a situation where stylesWouldYieldNewCSSTransitionsBlendingKeyframes() |
| was called before we had a chance to create blending keyframes for a CSS transitions, since the call |
| to create blending keyframes is made after the call to initialize(), so we now cater for this case. |
| |
| * animation/CSSTransition.cpp: |
| (WebCore::CSSTransition::initialize): |
| * animation/CSSTransition.h: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): |
| |
| 2018-03-30 Daniel Bates <dabates@apple.com> |
| |
| Remove unused MIMETypeRegistry::getSupportedImageMIMETypesForEncoding() |
| https://bugs.webkit.org/show_bug.cgi?id=184154 |
| |
| Reviewed by Per Arne Vollan. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::getSupportedImageMIMETypesForEncoding): Deleted. |
| * platform/MIMETypeRegistry.h: |
| |
| 2018-03-30 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r230102. |
| |
| Caused assertion failures on JSC bots. |
| |
| Reverted changeset: |
| |
| "A stack overflow in the parsing of a builtin (called by |
| createExecutable) cause a crash instead of a catchable js |
| exception" |
| https://bugs.webkit.org/show_bug.cgi?id=184074 |
| https://trac.webkit.org/changeset/230102 |
| |
| 2018-03-30 Robin Morisset <rmorisset@apple.com> |
| |
| A stack overflow in the parsing of a builtin (called by createExecutable) cause a crash instead of a catchable js exception |
| https://bugs.webkit.org/show_bug.cgi?id=184074 |
| <rdar://problem/37165897> |
| |
| Reviewed by Keith Miller. |
| |
| I had to slightly change the type of some bindings between JSC and WebCore. No functional change intended on the WebCore side. |
| |
| * bindings/js/JSReadableStreamPrivateConstructors.cpp: |
| (WebCore::JSBuiltinReadableStreamDefaultReaderPrivateConstructor::initializeExecutable): |
| (WebCore::JSBuiltinReadableStreamDefaultControllerPrivateConstructor::initializeExecutable): |
| (WebCore::JSBuiltinReadableByteStreamControllerPrivateConstructor::initializeExecutable): |
| (WebCore::JSBuiltinReadableStreamBYOBReaderPrivateConstructor::initializeExecutable): |
| (WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateConstructorHelperMethods): |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| (WebCore::JSTestClassWithJSBuiltinConstructorConstructor::initializeExecutable): |
| * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: |
| (WebCore::JSTestJSBuiltinConstructorConstructor::initializeExecutable): |
| |
| 2018-03-29 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Correctly obtain the timing function for a given keyframe |
| https://bugs.webkit.org/show_bug.cgi?id=184146 |
| |
| Reviewed by Dean Jackson. |
| |
| The way we would get the timing function for a given KeyframeValue stored in a KeyframeList was really suboptimal. |
| When keyframes were created, we would set the animated element's style on each keyframe, and set keyframe-specific |
| properties and values on top. When figuring out the timing function for a KeyframeValue, we would look at its render |
| style, go through its list of animations, which could include animations that are irrelevant to this specific keyframe |
| list since all animations from the animated element are referenced, and we would have to look up the correct animation |
| by name and get the timing function, even though the timing function stored on the animation was now specific to this |
| particular keyframe. |
| |
| We now simply set a m_timingFunction member on a KeyframeValue, which is null if no explicit animation-timing-function |
| was provided for this keyframe in CSS, and otherwise set to a valid TimingFunction. |
| |
| This fixes our behavior for a 4 existing animation tests when opted into the CSS Animations and CSS Transitions as |
| Web Animations feature. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::timingFunctionForKeyframeAtIndex): |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::keyframeStylesForAnimation): |
| * page/animation/KeyframeAnimation.cpp: |
| (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty const): |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::createFromCSSText): |
| (WebCore::TimingFunction::createFromCSSValue): |
| * platform/animation/TimingFunction.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::startAnimation): |
| * rendering/style/KeyframeList.cpp: |
| (WebCore::KeyframeValue::timingFunction const): Deleted. |
| * rendering/style/KeyframeList.h: |
| (WebCore::KeyframeValue::timingFunction const): |
| (WebCore::KeyframeValue::setTimingFunction): |
| |
| 2018-03-29 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Copying a list from Microsoft Word to TinyMCE fails when mso-list is on tags other than P |
| https://bugs.webkit.org/show_bug.cgi?id=182954 |
| <rdar://problem/37713141> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Fixed the bug by relaxing the restriction that we only preserve mso-list on p. |
| |
| Tests: PasteHTML.PreservesMSOListOnH4 |
| |
| * editing/markup.cpp: |
| (WebCore::StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement): |
| |
| 2018-03-29 JF Bastien <jfbastien@apple.com> |
| |
| Use Forward.h instead of forward-declaring WTF::String |
| https://bugs.webkit.org/show_bug.cgi?id=184172 |
| <rdar://problem/39026146> |
| |
| Reviewed by Yusuke Suzuki. |
| |
| As part of #184164 I'm changing WTF::String, and the forward |
| declarations are just wrong because I'm making it templated. We |
| should use Forward.h anyways, so do that instead. |
| |
| * css/makeprop.pl: |
| * platform/cocoa/PlaybackSessionInterface.h: |
| * platform/ios/Device.h: |
| * platform/ios/PlaybackSessionInterfaceAVKit.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.h: |
| * platform/win/PathWalker.h: |
| * testing/js/WebCoreTestSupport.h: |
| |
| 2018-03-29 Ross Kirsling <ross.kirsling@sony.com> |
| |
| MSVC __forceinline slows down JSC release build fivefold after r229391 |
| https://bugs.webkit.org/show_bug.cgi?id=184062 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/graphics/FormatConverter.cpp: |
| Factor ALWAYS_INLINE_EXCEPT_MSVC out to WTF. |
| |
| 2018-03-29 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r230087. |
| |
| Introduced LayoutTest failures. |
| |
| Reverted changeset: |
| |
| "FrameSelection::appearanceUpdateTimerFired should be robust |
| against layout passes underneath it" |
| https://bugs.webkit.org/show_bug.cgi?id=183395 |
| https://trac.webkit.org/changeset/230087 |
| |
| 2018-03-29 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| FrameSelection::appearanceUpdateTimerFired should be robust against layout passes underneath it |
| https://bugs.webkit.org/show_bug.cgi?id=183395 |
| <rdar://problem/38055732> |
| |
| Reviewed by Zalan Bujtas. |
| |
| In the case where a FrameSelection updates its appearance when m_appearanceUpdateTimer is fired, the |
| FrameSelection's Frame is unprotected, and can be removed by arbitrary script. This patch applies a simple |
| mitigation by wrapping the Frame in a Ref when firing the appearance update timer, and ensuring that layout is |
| really up to date before calling updateAppearanceAfterLayoutOrStyleChange() from the timer. |
| |
| Test: editing/selection/iframe-update-selection-appearance.html |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::appearanceUpdateTimerFired): |
| |
| 2018-03-29 Daniel Bates <dabates@apple.com> |
| |
| Substitute ArchiveFactory::isArchiveMIMEType() for ArchiveFactory::isArchiveMimeType(). |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::commitLoad): |
| * loader/archive/ArchiveFactory.cpp: |
| (WebCore::ArchiveFactory::isArchiveMIMEType): |
| (WebCore::ArchiveFactory::isArchiveMimeType): Deleted. |
| * loader/archive/ArchiveFactory.h: |
| * platform/MIMETypeRegistry.h: |
| |
| 2018-03-29 Daniel Bates <dabates@apple.com> |
| |
| MIMETypeRegistry should return const HashSets |
| https://bugs.webkit.org/show_bug.cgi?id=184150 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Only getSupportedNonImageMIMETypes() needs to return a non-const HashSet so that |
| LegacyWebKit can modify the set of non-image MIME types. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes): |
| (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes): |
| (WebCore::MIMETypeRegistry::getSupportedImageMIMETypesForEncoding): |
| (WebCore::MIMETypeRegistry::getSupportedMediaMIMETypes): |
| (WebCore::MIMETypeRegistry::getPDFMIMETypes): |
| (WebCore::MIMETypeRegistry::getUnsupportedTextMIMETypes): |
| * platform/MIMETypeRegistry.h: |
| |
| 2018-03-29 Brady Eidson <beidson@apple.com> |
| |
| Update Service Worker feature status. |
| https://bugs.webkit.org/show_bug.cgi?id=184139 |
| |
| Reviewed by Chris Dumez. |
| |
| * features.json: |
| |
| 2018-03-29 Chris Dumez <cdumez@apple.com> |
| |
| Drop DOMWindow::frames() / DOMWindow::window() methods |
| https://bugs.webkit.org/show_bug.cgi?id=184112 |
| |
| Reviewed by Daniel Bates. |
| |
| Drop DOMWindow::frames() / DOMWindow::window() methods as they are just aliases for DOMWindow::self(). |
| |
| * page/DOMWindow.h: |
| * page/DOMWindow.idl: |
| |
| 2018-03-29 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r230062. |
| https://bugs.webkit.org/show_bug.cgi?id=184128 |
| |
| Broke mac port. web content process crashes while loading any |
| web page (Requested by rniwa on #webkit). |
| |
| Reverted changeset: |
| |
| "MSVC __forceinline slows down JSC release build fivefold |
| after r229391" |
| https://bugs.webkit.org/show_bug.cgi?id=184062 |
| https://trac.webkit.org/changeset/230062 |
| |
| 2018-03-28 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Implement more CSSPropertyBlendingClient methods |
| https://bugs.webkit.org/show_bug.cgi?id=184077 |
| |
| Reviewed by Dean Jackson. |
| |
| We only had stubs for several of the CSSPropertyBlendingClient methods and thus always implied that we |
| were animating non-matching transform, filter and backdrop-filter properties. We now implement those using |
| the same code used in KeyframeAnimation. This allows for 31 new tests to opt into the CSS Animations and |
| CSS Transitions as Web Animations feature. |
| |
| We also ensure we only run a CSSAnimationController assertion in FrameView::didDestroyRenderTree() if |
| we're not using the CSS Animations and CSS Transitions as Web Animations feature. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::copyPropertiesFromSource): |
| (WebCore::KeyframeEffectReadOnly::updateBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::setBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingTransformFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingFilterFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingBackdropFilterFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computeCSSTransitionBlendingKeyframes): |
| * animation/KeyframeEffectReadOnly.h: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::didDestroyRenderTree): |
| |
| 2018-03-28 Chris Dumez <cdumez@apple.com> |
| |
| Align XMLHttpRequest's open() / send() / abort() with the latest specification |
| https://bugs.webkit.org/show_bug.cgi?id=184108 |
| |
| Reviewed by Youenn Fablet. |
| |
| Align XMLHttpRequest's open() / send() / abort() with the latest specification: |
| - https://xhr.spec.whatwg.org |
| |
| No new tests, rebaselined existing layout tests. |
| |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::open): |
| Align with https://xhr.spec.whatwg.org/#the-open()-method: |
| - Change the order of some steps to match the order in the spec. In particular, |
| open() no longer resets the state to UNSENT or abort any existing load when it |
| fails early due to being passed a bad method. |
| |
| (WebCore::XMLHttpRequest::createRequest): |
| Align with https://xhr.spec.whatwg.org/#the-send()-method: |
| - Use the simpler "upload listener flag" logic from the spec instead of our more |
| complex m_uploadEventsAllowed flag. This avoids constructing a SecurityOrigin |
| objects on a background thread when XHR is used inside Web Workers, which was |
| not thread-safe. |
| - Set the upload complete flag when the request has no body as per step 9. |
| - After firing the loadstartEvent, return early if the state is no longer OPEN or |
| if the send flag is unset, as per step 11.3. |
| |
| (WebCore::XMLHttpRequest::abort): |
| Align with https://xhr.spec.whatwg.org/#the-abort()-method: |
| - Only set the state to UNSENT if the state is still DONE after firing the error |
| events, as per step 3. |
| |
| (WebCore::XMLHttpRequest::didSendData): |
| Use new "upload listener flag". |
| |
| (WebCore::XMLHttpRequest::dispatchErrorEvents): |
| Align with https://xhr.spec.whatwg.org/#request-error-steps: |
| - Stop firing a progress event in case of error as this is not as per specification |
| and Firefox does not fire those either. |
| |
| * xml/XMLHttpRequest.h: |
| |
| 2018-03-28 Timothy Hatcher <timothy@apple.com> |
| |
| Consolidate NSColor to WebCore::Color conversion and fix system colors. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=184096 |
| rdar://problem/38918925 |
| |
| Reviewed by Tim Horton. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (CreateCGColorIfDifferent): Use CGColor property on NSColor, don't manually create new CGColor. |
| * platform/graphics/mac/ColorMac.h: |
| * platform/graphics/mac/ColorMac.mm: |
| (WebCore::makeRGBAFromNSColor): Move pattern code from RenderThemeMac's convertNSColorToColor. |
| Also use nextafter for proper RGBA float conversion. |
| * platform/mac/PlatformPasteboardMac.mm: |
| (WebCore::PlatformPasteboard::color): Use colorFromNSColor. |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::platformActiveSelectionBackgroundColor const): Use colorFromNSColor. |
| (WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const): Ditto. |
| (WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const): Ditto. |
| (WebCore::RenderThemeMac::systemColor const): Ditto. |
| (WebCore::paintAttachmentTitleBackground): Ditto. |
| (WebCore::convertNSColorToColor): Deleted. |
| |
| 2018-03-28 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| The SVGAnimatedProperty wrappers have to be detached from the referenced values before the SVGAnimatedType is deleted |
| https://bugs.webkit.org/show_bug.cgi?id=183972 |
| |
| Reviewed by Daniel Bates. |
| |
| If the SVGAnimatedType is a list type, e.g. SVGLengthListValues, the wrappers |
| of the animated properties have to be detached from the items in the list |
| before it's deleted. |
| |
| * svg/SVGAnimateElementBase.cpp: |
| (WebCore::SVGAnimateElementBase::clearAnimatedType): |
| |
| 2018-03-28 Ross Kirsling <ross.kirsling@sony.com> |
| |
| MSVC __forceinline slows down JSC release build fivefold after r229391 |
| https://bugs.webkit.org/show_bug.cgi?id=184062 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/graphics/FormatConverter.cpp: |
| Factor ALWAYS_INLINE_EXCEPT_MSVC out to WTF. |
| |
| 2018-03-28 Zalan Bujtas <zalan@apple.com> |
| |
| Make it possible to override the screen size |
| https://bugs.webkit.org/show_bug.cgi?id=184111 |
| <rdar://problem/38972181> |
| |
| Reviewed by Tim Horton. |
| |
| We just call screenSize() atm. |
| |
| * page/Chrome.cpp: |
| (WebCore::Chrome::overrideScreenSize const): |
| * page/Chrome.h: |
| * page/ChromeClient.h: |
| * platform/HostWindow.h: |
| * platform/PlatformScreen.h: |
| * platform/ios/PlatformScreenIOS.mm: |
| (WebCore::screenRect): |
| (WebCore::overrideScreenSize): |
| |
| 2018-03-28 Timothy Hatcher <timothy@apple.com> |
| |
| Include the 'text' color keyword as a system color. |
| |
| https://bugs.webkit.org/show_bug.cgi?id=184113 |
| rdar://problem/38779267 |
| |
| Reviewed by Tim Horton. |
| |
| * css/StyleColor.cpp: |
| (WebCore::StyleColor::isColorKeyword): Don't check CSSValueMenu, it is a system color and is included. |
| (WebCore::StyleColor::isSystemColor): Include CSSValueText. Check CSSValueWebkitFocusRingColor in the range, |
| since it is immediately after CSSValueAppleSystemYellow. |
| |
| 2018-03-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Multiple select appearance doesn't update when selecting or deselecting rows in the picker view |
| https://bugs.webkit.org/show_bug.cgi?id=184110 |
| <rdar://problem/38796648> |
| |
| Reviewed by Tim Horton. |
| |
| HTMLSelectElement::optionSelectedByUser is invoked upon user interaction with a select menu. This currently |
| takes two separate codepaths, depending on whether or not the menu list appearance is being used to render the |
| select. If a menu list appearance is used, we call selectOption(), which updates validity, updates the element |
| renderer, and then dispatches a `change` event if needed. |
| |
| However, if updateSelectedState() is used, we only update form validity and then dispatch the `change` event |
| without updating the renderer, leaving it stale. |
| |
| Test: fast/forms/ios/ipad/multiple-select-updates-renderer.html |
| |
| * html/HTMLSelectElement.cpp: |
| (WebCore::HTMLSelectElement::optionSelectedByUser): |
| |
| Update the renderer after updating the DOM to reflect the selected option. |
| |
| 2018-03-28 Daniel Bates <dabates@apple.com> |
| |
| Substitute "strong password confirmation auto fill" for "strong confirmation password auto fill" |
| <rdar://problem/36518856> |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::AXAutoFillStrongConfirmationPasswordLabel): |
| |
| 2018-03-28 Daniel Bates <dabates@apple.com> |
| |
| WebSocket cookie incorrectly stored |
| https://bugs.webkit.org/show_bug.cgi?id=184100 |
| <rdar://problem/37928715> |
| |
| Reviewed by Brent Fulgham. |
| |
| A cookie received in a WebSocket response should be stored with respect to the |
| origin of the WebSocket server in order for it to be sent in a subsequent request. |
| |
| Also removed a FIXME about implementing support for the long since |
| deprecated Set-Cookie2 header. |
| |
| Test: http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html |
| |
| * Modules/websockets/WebSocketChannel.cpp: |
| (WebCore::WebSocketChannel::processBuffer): |
| * Modules/websockets/WebSocketHandshake.h: |
| |
| 2018-03-28 Chris Dumez <cdumez@apple.com> |
| |
| Do process swap when opening a cross-origin URL via window.open(url, '_blank', 'noopener') |
| https://bugs.webkit.org/show_bug.cgi?id=183962 |
| <rdar://problem/38817833> |
| |
| Reviewed by Brady Eidson. |
| |
| Pass extra bits of information to the UIProcess via NavigationAction: |
| - Is it a cross origin navigation caused by window.open() |
| - Does the navigated frame have an opener |
| |
| This information is useful to determine on UIProcess side if we want |
| to swap WebProcess. |
| |
| * loader/FrameLoadRequest.h: |
| (WebCore::FrameLoadRequest::setIsCrossOriginWindowOpenNavigation): |
| (WebCore::FrameLoadRequest::isCrossOriginWindowOpenNavigation const): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| * loader/NavigationAction.h: |
| (WebCore::NavigationAction::setIsCrossOriginWindowOpenNavigation): |
| (WebCore::NavigationAction::isCrossOriginWindowOpenNavigation const): |
| (WebCore::NavigationAction::setOpener): |
| (WebCore::NavigationAction::opener const): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::createWindow): |
| |
| 2018-03-28 Chris Dumez <cdumez@apple.com> |
| |
| Thread safety issue in IDBFactory' shouldThrowSecurityException() |
| https://bugs.webkit.org/show_bug.cgi?id=184064 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| shouldThrowSecurityException() gets called on a non-main thread but |
| it ended up using the SchemeRegistry via SecurityOrigin::canAccessDatabase() |
| which calls SecurityOrigin::isLocal(). |
| |
| Since using the SchemeRegistry from the background thread is not safe |
| (we recently added locks which we're trying to remove), and since SecurityOrigin |
| methods are often called from background threads, this patch make SecurityOrigin::isLocal() |
| safe to call from a background thread. To achieve this, we now query the SchemeRegistry |
| in the SecurityOrigin constructor instead as SecurityOrigin objects are expected to be |
| constructed on the main thread. |
| |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::SecurityOrigin): |
| (WebCore::SecurityOrigin::isLocal const): Deleted. |
| * page/SecurityOrigin.h: |
| (WebCore::SecurityOrigin::isLocal const): |
| |
| 2018-03-28 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r230033. |
| |
| The LayoutTests modified in this change fail an assertion on |
| WK1. |
| |
| Reverted changeset: |
| |
| "[Web Animations] Implement more CSSPropertyBlendingClient |
| methods" |
| https://bugs.webkit.org/show_bug.cgi?id=184077 |
| https://trac.webkit.org/changeset/230033 |
| |
| 2018-03-28 Chris Dumez <cdumez@apple.com> |
| |
| WebSocket::didReceiveMessage() may construct a SecurityOrigin object on a non-main thread |
| https://bugs.webkit.org/show_bug.cgi?id=184068 |
| |
| Reviewed by Youenn Fablet. |
| |
| WebSocket::didReceiveMessage() may construct a SecurityOrigin object on a non-main thread, |
| which is not safe. We now use SecurityOriginData since we only need an origin String and |
| it is safe to construct a SecurityOriginData on any thread. |
| |
| * Modules/websockets/WebSocket.cpp: |
| (WebCore::WebSocket::didReceiveMessage): |
| |
| 2018-03-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Make boosted text autosizing values switchable at runtime |
| https://bugs.webkit.org/show_bug.cgi?id=184092 |
| <rdar://problem/38939917> |
| |
| Reviewed by Tim Horton. |
| |
| In r228697, we introduced a new set of boosted text autosizing constants tuned for extra zoom mode, which are |
| currently hard-coded as default values in SettingsBase. However, we've since identified cases where clients may |
| want to opt in or out of boosted text autosizing values and just use the existing values. |
| |
| This replaces settings to adjust text autosizing constants with a flag to enable or disable boosted text |
| autosizing; when changed, we update all three text autosizing parameters to their default or boosted values, and |
| then trigger style recalculation. |
| |
| Test: TextAutosizingBoost.ChangeAutosizingBoostAtRuntime |
| |
| * page/Settings.yaml: |
| * page/SettingsBase.cpp: |
| (WebCore::SettingsBase::shouldEnableTextAutosizingBoostChanged): |
| (WebCore::SettingsBase::defaultOneLineTextMultiplierCoefficient): Deleted. |
| (WebCore::SettingsBase::defaultMultiLineTextMultiplierCoefficient): Deleted. |
| (WebCore::SettingsBase::defaultMaxTextAutosizingScaleIncrease): Deleted. |
| |
| Changed these to constant values instead of helper functions, and also introduced boosted text autosizing |
| constants for use in extra zoom mode. |
| |
| * page/SettingsBase.h: |
| (WebCore::SettingsBase::oneLineTextMultiplierCoefficient const): |
| (WebCore::SettingsBase::multiLineTextMultiplierCoefficient const): |
| (WebCore::SettingsBase::maxTextAutosizingScaleIncrease const): |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::extraDefaultStyleSheet): |
| |
| Tweak the stylesheet to make `-webkit-text-size-adjust: auto` overridable by web content. Adding the !important |
| is breaking many websites that positioned text such that it is positioned within layout viewport bounds without |
| text autosizing. |
| |
| 2018-03-28 Brent Fulgham <bfulgham@apple.com> |
| |
| Avoid uninitialized mach ports |
| https://bugs.webkit.org/show_bug.cgi?id=184090 |
| <rdar://problem/37261129> |
| |
| Reviewed by Chris Dumez. |
| |
| It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value |
| of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so |
| there is a potential for us to try to use invalid ports. |
| |
| We should always check return values, and ensure that the mach port variables we seek to initialize are |
| kept in a valid state. |
| |
| No new tests, no Web-facing behavior change. |
| |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| (WebCore::attachToAppleGraphicsControl): Initialize masterPort to a default value. |
| |
| 2018-03-28 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Implement more CSSPropertyBlendingClient methods |
| https://bugs.webkit.org/show_bug.cgi?id=184077 |
| |
| Reviewed by Dean Jackson. |
| |
| We only had stubs for several of the CSSPropertyBlendingClient methods and thus always implied that we |
| were animating non-matching transform, filter and backdrop-filter properties. We now implement those using |
| the same code used in KeyframeAnimation. This allows for 31 new tests to opt into the CSS Animations and |
| CSS Transitions as Web Animations feature. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::copyPropertiesFromSource): |
| (WebCore::KeyframeEffectReadOnly::updateBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::setBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingTransformFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingFilterFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::checkForMatchingBackdropFilterFunctionLists): |
| (WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computeCSSTransitionBlendingKeyframes): |
| * animation/KeyframeEffectReadOnly.h: |
| |
| 2018-03-28 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Comparing two matching FramesTimingFunction objects fails |
| https://bugs.webkit.org/show_bug.cgi?id=184078 |
| |
| Reviewed by Jon Lee. |
| |
| Fix a stupid mistake in the == operator for FramesTimingFunction. Without a correct check, we would mistakenly interrupt and |
| restart any transition with a frames() timing function when we check that the Animation objects are similar. |
| |
| * platform/animation/TimingFunction.h: |
| |
| 2018-03-28 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK][WPE] Remove UpdateAtlas |
| https://bugs.webkit.org/show_bug.cgi?id=184042 |
| |
| Reviewed by Žan Doberšek. |
| |
| Remove UpdateAtlas and AreaAllocator classes. Instead of using UpdateAtlas as a cache |
| of buffers to render tiles with cairo, allocate a new buffer for each tile instead. |
| |
| Covered by existent tests. |
| |
| * loader/EmptyClients.h: |
| * page/ChromeClient.h: |
| * platform/TextureMapper.cmake: |
| * platform/graphics/texmap/coordinated/AreaAllocator.cpp: Removed. |
| * platform/graphics/texmap/coordinated/AreaAllocator.h: Removed. |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h: |
| * platform/graphics/texmap/coordinated/SurfaceUpdateInfo.h: |
| (): Deleted. |
| * platform/graphics/texmap/coordinated/UpdateAtlas.cpp: Removed. |
| * platform/graphics/texmap/coordinated/UpdateAtlas.h: Removed. |
| * testing/Internals.cpp: |
| (WebCore::Internals::resetToConsistentState): |
| |
| 2018-03-27 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, rolling out r230008. |
| |
| Lots of HTTP test failures |
| |
| Reverted changeset: |
| |
| "Remove unused libsoup ResourceHandle implementation" |
| https://bugs.webkit.org/show_bug.cgi?id=184048 |
| https://trac.webkit.org/changeset/230008 |
| |
| 2018-03-27 Chris Dumez <cdumez@apple.com> |
| |
| Make it possible to call ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() from non-main threads |
| https://bugs.webkit.org/show_bug.cgi?id=184029 |
| |
| Reviewed by Youenn Fablet. |
| |
| Make it possible to call ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() from non-main threads |
| by having it use SecurityOriginData (which is safe to construct on non-main threads) instead of |
| SecurityOrigin (which isn't). |
| |
| ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() is already called from non-main thread in |
| FetchLoader, XHR and WebSocket when used in workers. This wasn't safe. |
| |
| * loader/DocumentWriter.cpp: |
| (WebCore::DocumentWriter::begin): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded const): |
| (WebCore::ContentSecurityPolicy::setUpgradeInsecureRequests): |
| (WebCore::ContentSecurityPolicy::takeNavigationRequestsToUpgrade): |
| (WebCore::ContentSecurityPolicy::setInsecureNavigationRequestsToUpgrade): |
| * page/csp/ContentSecurityPolicy.h: |
| |
| 2018-03-27 Daniel Bates <dabates@apple.com> |
| |
| Attempt to fix media control layout tests after <https://trac.webkit.org/changeset/230006/> |
| (https://bugs.webkit.org/show_bug.cgi?id=179983) |
| |
| Exempt elements in user agent shadow DOM from having to perform a potentially CORS- |
| enabled fetch for a mask image to try to fix the following tests from timing out: |
| media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html |
| media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html |
| |
| * style/StylePendingResources.cpp: |
| (WebCore::Style::loadPendingImage): |
| |
| 2018-03-27 Per Arne Vollan <pvollan@apple.com> |
| |
| The layout test fast/canvas/webgl/read-pixels-test.html is timing out. |
| https://bugs.webkit.org/show_bug.cgi?id=183923 |
| <rdar://problem/38756869> |
| |
| Reviewed by Brent Fulgham. |
| |
| The test is timing out when we do not interact directly with the WindowServer, causing |
| OpenGL to fall back to software rendering. In this mode, any call to CGLChoosePixelFormat |
| requesting an accelerated pixel format will fail because it cannot determine which GPU is |
| connected to the display. |
| |
| OpenGL treats all GPUs as if they were offline when used in a process (like the WebContent |
| process) that does not directly control the display. |
| |
| We can get correct behavior if we tell OpenGL which GPU is currently connected to the |
| display, and if we instruct CGLChoosePixelFormat to create an offline renderer pixel format |
| by including the 'kCGLPFAAllowOfflineRenderers' flag in its arguments. |
| |
| We can use CGLSetVirtualScreen with an OpenGL display mask that tells the OpenGL framework |
| which GPU it should use. |
| |
| See https://developer.apple.com/library/content/technotes/tn2229/_index.html#//apple_ref/doc/uid/DTS40008924-CH1-SUBSECTION7 |
| for details on how the virtual screen is found from the OpenGL display mask. |
| |
| No new tests, covered by existing tests. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| (WebCore::setPixelFormat): |
| (WebCore::identifyAndSetCurrentGPU): |
| (WebCore::GraphicsContext3D::GraphicsContext3D): |
| (WebCore::GraphicsContext3D::setOpenGLDisplayMask): |
| (WebCore::GraphicsContext3D::allowOfflineRenderers): |
| |
| 2018-03-27 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement authenticatorGetAssertion |
| https://bugs.webkit.org/show_bug.cgi?id=183881 |
| <rdar://problem/37258628> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch does the following few things: |
| 1) It implements the spec: https://www.w3.org/TR/webauthn/#op-get-assertion as of 5 December 2017. |
| 2) It tweaks encoding/decoding of PublicKeyCredentialRequestOptions such that options can be passed |
| between UI and Web processes. |
| 3) It refines the way how LocalAuthenticator::makeCredential find intersection between |
| excludeCredentialDescriptorList and existing credentials in the authenticator, such that it is faster. |
| Basically, it takes the CredentialID from the list and treat it as an ASCII string and put it into a |
| HashSet<String>. It should not matter if a duplicated CredentialID is added. If the hash set is not |
| empty, the algorithm then queries Keychain for all CredentialIDs related to the current RP ID once. |
| For every queried CredentialID, the algorithm then treats it as an ASCII string as well and look for |
| a match in the hash set to produce the intersetction. The new way is also employed in |
| LocalAuthenticator::getAssertion as well. |
| 4) It abstracts the way to produce authData and thus reorders a bit of code in |
| LocalAuthenticator::makeCredential. |
| |
| Covered by API tests. |
| |
| * Modules/webauthn/AuthenticatorManager.cpp: |
| (WebCore::AuthenticatorManager::create const): |
| (WebCore::AuthenticatorManager::discoverFromExternalSource const): |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.h: |
| (WebCore::PublicKeyCredentialRequestOptions::encode const): |
| (WebCore::PublicKeyCredentialRequestOptions::decode): |
| * Modules/webauthn/cocoa/LocalAuthenticator.h: |
| * Modules/webauthn/cocoa/LocalAuthenticator.mm: |
| (WebCore::LocalAuthenticatorInternal::buildAuthData): |
| (WebCore::LocalAuthenticatorInternal::produceHashSet): |
| (WebCore::LocalAuthenticator::makeCredential): |
| (WebCore::LocalAuthenticator::getAssertion): |
| (WebCore::LocalAuthenticator::issueClientCertificate const): |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-03-27 Chris Dumez <cdumez@apple.com> |
| |
| Avoid constructing SecurityOrigin objects from non-main threads |
| https://bugs.webkit.org/show_bug.cgi?id=184024 |
| |
| Reviewed by Youenn Fablet. |
| |
| Avoid constructing SecurityOrigin objects from non-main threads as much as possible |
| as it is not safe. This patch gets rid of most offending cases but not all of them |
| yet, which is why I haven't added a ASSERT(isMainThread()) to the SecurityOrigin |
| constructor yet. |
| |
| For example, ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() currently |
| gets called from non-main threads and construct a SecurityOrigin. Fixing this |
| will require some refactoring that would have made this patch much larger. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::matchRegistration): |
| * page/EventSource.cpp: |
| (WebCore::EventSource::didReceiveResponse): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::SecurityOrigin): |
| * page/SecurityOrigin.h: |
| (WebCore::SecurityOrigin::isPotentiallyTrustworthy const): |
| * testing/Internals.cpp: |
| (WebCore::Internals::hasServiceWorkerRegistration): |
| * workers/DedicatedWorkerGlobalScope.cpp: |
| (WebCore::DedicatedWorkerGlobalScope::create): |
| (WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope): |
| * workers/DedicatedWorkerGlobalScope.h: |
| * workers/DedicatedWorkerThread.cpp: |
| (WebCore::DedicatedWorkerThread::createWorkerGlobalScope): |
| * workers/DedicatedWorkerThread.h: |
| * workers/WorkerGlobalScope.cpp: |
| (WebCore::WorkerGlobalScope::WorkerGlobalScope): |
| * workers/WorkerGlobalScope.h: |
| * workers/WorkerLocation.cpp: |
| (WebCore::WorkerLocation::origin const): |
| * workers/WorkerThread.cpp: |
| (WebCore::WorkerThreadStartupData::WorkerThreadStartupData): |
| (WebCore::WorkerThread::workerThread): |
| * workers/WorkerThread.h: |
| * workers/service/SWClientConnection.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::getRegistration): |
| (WebCore::ServiceWorkerContainer::getRegistrations): |
| * workers/service/ServiceWorkerGlobalScope.cpp: |
| (WebCore::ServiceWorkerGlobalScope::create): |
| (WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope): |
| * workers/service/ServiceWorkerGlobalScope.h: |
| * workers/service/ServiceWorkerProvider.cpp: |
| (WebCore::ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin): |
| * workers/service/ServiceWorkerProvider.h: |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::createWorkerGlobalScope): |
| (WebCore::fireMessageEvent): |
| (WebCore::ServiceWorkerThread::postMessageToServiceWorker): |
| * workers/service/context/ServiceWorkerThread.h: |
| |
| 2018-03-27 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused libsoup ResourceHandle implementation |
| https://bugs.webkit.org/show_bug.cgi?id=184048 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This code is unused since r228901 so let's remove it! |
| |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleInternal.h: |
| (WebCore::ResourceHandleInternal::ResourceHandleInternal): |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| (WebCore::ResourceHandle::~ResourceHandle): |
| (WebCore::ResourceHandleInternal::soupSession): |
| (WebCore::ResourceHandle::cancelledOrClientless): |
| (WebCore::ResourceHandle::ensureReadBuffer): |
| (WebCore::ResourceHandle::currentStreamPosition const): |
| (WebCore::ResourceHandle::platformContinueSynchronousDidReceiveResponse): |
| (WebCore::ResourceHandle::didStartRequest): |
| (WebCore::ResourceHandle::start): |
| (WebCore::ResourceHandle::releaseForDownload): |
| (WebCore::ResourceHandle::sendPendingRequest): |
| (WebCore::ResourceHandle::cancel): |
| (WebCore::ResourceHandle::shouldUseCredentialStorage): |
| (WebCore::ResourceHandle::continueDidReceiveAuthenticationChallenge): |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): |
| (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential): |
| (WebCore::ResourceHandle::receivedCredential): |
| (WebCore::ResourceHandle::receivedCancellation): |
| (WebCore::ResourceHandle::receivedChallengeRejection): |
| (WebCore::ResourceHandle::platformSetDefersLoading): |
| (WebCore::sessionFromContext): Deleted. |
| (WebCore::ResourceHandle::create): Deleted. |
| (WebCore::ResourceHandle::ResourceHandle): Deleted. |
| (WebCore::isAuthenticationFailureStatusCode): Deleted. |
| (WebCore::tlsErrorsChangedCallback): Deleted. |
| (WebCore::gotHeadersCallback): Deleted. |
| (WebCore::applyAuthenticationToRequest): Deleted. |
| (WebCore::restartedCallback): Deleted. |
| (WebCore::shouldRedirect): Deleted. |
| (WebCore::shouldRedirectAsGET): Deleted. |
| (WebCore::continueAfterWillSendRequest): Deleted. |
| (WebCore::doRedirect): Deleted. |
| (WebCore::redirectSkipCallback): Deleted. |
| (WebCore::wroteBodyDataCallback): Deleted. |
| (WebCore::cleanupSoupRequestOperation): Deleted. |
| (WebCore::nextMultipartResponsePartCallback): Deleted. |
| (WebCore::sendRequestCallback): Deleted. |
| (WebCore::continueAfterDidReceiveResponse): Deleted. |
| (WebCore::startingCallback): Deleted. |
| (WebCore::networkEventCallback): Deleted. |
| (WebCore::createSoupMessageForHandleAndRequest): Deleted. |
| (WebCore::createSoupRequestAndMessageForHandle): Deleted. |
| (WebCore::ResourceHandle::timeoutFired): Deleted. |
| (WebCore::waitingToSendRequest): Deleted. |
| (WebCore::readCallback): Deleted. |
| |
| 2018-03-27 Chris Dumez <cdumez@apple.com> |
| |
| Move online state detection from the WebProcess to the NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=183989 |
| <rdar://problem/37093299> |
| |
| Reviewed by Youenn Fablet. |
| |
| Move online state detection from the WebProcess to the NetworkProcess. This avoid executing the same (expensive) code in |
| EACH web process whenever a network interface's state changes. Now, the Network Process monitors network interfaces |
| and determines the online state whenever an interface's state changes. If the onLine state changes, it notifies all |
| its connected WebProcesses via IPC. |
| |
| * inspector/agents/InspectorApplicationCacheAgent.cpp: |
| (WebCore::InspectorApplicationCacheAgent::networkStateChanged): |
| * loader/LoaderStrategy.h: |
| * page/Navigator.cpp: |
| (WebCore::Navigator::onLine const): |
| * page/Page.cpp: |
| * platform/network/NetworkStateNotifier.h: |
| * workers/Worker.cpp: |
| (WebCore::Worker::Worker): |
| (WebCore::Worker::notifyFinished): |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): |
| |
| 2018-03-27 Daniel Bates <dabates@apple.com> |
| |
| CSS mask images should be retrieved using potentially CORS-enabled fetch |
| https://bugs.webkit.org/show_bug.cgi?id=179983 |
| <rdar://problem/35678149> |
| |
| Reviewed by Brent Fulgham. |
| |
| As per <https://drafts.fxtf.org/css-masking-1/#priv-sec> (Editor’s Draft, 23 December 2017) |
| we should fetch CSS mask images using a potentially CORS-enabled fetch. |
| |
| Both cross-origin CSS shape-outside images and CSS mask images may be sensitive to timing |
| attacks that can be used to reveal their pixel data when retrieved without regard to CORS. |
| For the same reason that we fetch CSS shape-outside images using a potentially CORS-enabled |
| fetch we should fetch CSS mask the same way. This also makes the behavior of WebKit more |
| closely align with the behavior in the spec. |
| |
| Test: http/tests/security/css-mask-image.html |
| |
| * page/Settings.yaml: Add a setting for toggle "Anonymous" mode fetching of mask images (defaults: true). |
| We need this setting to avoid breaking the developer convenience feature that some modern media controls |
| layout tests employ to load assets from the filesystem as opposed to using the hardcoded data URLs baked |
| into the WebKit binary. |
| * style/StylePendingResources.cpp: Substitute LoadPolicy::NoCORS and LoadPolicy::Anonymous for |
| LoadPolicy::Normal and LoadPolicy::ShapeOutside, respectively, to match the terminology used |
| in the HTML, CSS Shapes Module Level 1, and CSS Masking Module Level 1 specs. |
| (WebCore::Style::loadPendingImage): Ditto. |
| (WebCore::Style::loadPendingResources): Use load policy LoadPolicy::Anonymous when fetching |
| a mask image or shape-outside image. |
| |
| 2018-03-27 Zalan Bujtas <zalan@apple.com> |
| |
| RenderBox::parent/firstChild/nextSibling/previousSiblingBox() functions should type check. |
| https://bugs.webkit.org/show_bug.cgi?id=184032 |
| <rdar://problem/38384984> |
| |
| Reviewed by Antti Koivisto. |
| |
| We cannot rely on the correctness of the render tree structure when querying for parent/child/next and previous |
| sibling since some features (multicolumn/spanners) move subtrees out of their original position (which is highly |
| undesired and should not be encouraged at all though). |
| It should also be noted that these functions are not equivalent of typeOfChildren<RenderBox> and the following usage |
| for (auto* boxChild = firstChildBox(); boxChild; boxChild = boxChild->nextSiblingBox()) |
| can lead to unexpected result. |
| |
| Test: fast/multicol/parent-box-when-spanner-is-present.html |
| |
| * rendering/RenderBox.h: |
| (WebCore::RenderBox::parentBox const): |
| (WebCore::RenderBox::firstChildBox const): |
| (WebCore::RenderBox::lastChildBox const): |
| (WebCore::RenderBox::previousSiblingBox const): |
| (WebCore::RenderBox::nextSiblingBox const): |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::positionListMarker): |
| * rendering/RenderListMarker.cpp: |
| (WebCore::RenderListMarker::layout): |
| * rendering/RenderMultiColumnSet.cpp: |
| (WebCore::RenderMultiColumnSet::updateLogicalWidth): |
| |
| 2018-03-27 Brent Fulgham <bfulgham@apple.com> |
| |
| Further refine cookie read/write logging |
| https://bugs.webkit.org/show_bug.cgi?id=184044 |
| <rdar://problem/38915610> |
| |
| Reviewed by Chris Dumez. |
| |
| Export 'shouldBlockCookies' so that it can be accessed by the WebKit framework. |
| |
| * platform/network/NetworkStorageSession.h: |
| |
| 2018-03-27 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Stop using internals.pauseAnimationAtTimeOnElement() in favor of Web Animations API for animations tests |
| https://bugs.webkit.org/show_bug.cgi?id=184038 |
| |
| Reviewed by Dean Jackson. |
| |
| Expose a new method to indicate that the runtime flag for CSS Animations and CSS Transitions as Web Animations is enabled. |
| |
| * testing/InternalSettings.cpp: |
| (WebCore::InternalSettings::cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): |
| * testing/InternalSettings.h: |
| * testing/InternalSettings.idl: |
| |
| 2018-03-27 Thibault Saunier <tsaunier@igalia.com> |
| |
| [GStreamer] Enhance debugging in the BasePlayer |
| https://bugs.webkit.org/show_bug.cgi?id=184035 |
| |
| Reviewed by Philippe Normand. |
| |
| No behaviour changes so no test were added/enabled. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage): |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): |
| (WebCore::MediaPlayerPrivateGStreamerBase::naturalSize const): |
| (WebCore::MediaPlayerPrivateGStreamerBase::setVolume): |
| (WebCore::MediaPlayerPrivateGStreamerBase::volumeChangedCallback): |
| (WebCore::MediaPlayerPrivateGStreamerBase::setMuted): |
| (WebCore::MediaPlayerPrivateGStreamerBase::muted const): |
| (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer): |
| (WebCore::MediaPlayerPrivateGStreamerBase::setStreamVolumeElement): |
| (WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceAttached): |
| (WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceDetached): |
| (WebCore::MediaPlayerPrivateGStreamerBase::dispatchDecryptionKey): |
| (WebCore::MediaPlayerPrivateGStreamerBase::handleProtectionEvent): |
| |
| 2018-03-27 Eric Carlson <eric.carlson@apple.com> |
| |
| Make AVFoundationEnabled preference available on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=183876 |
| <rdar://problem/38726459> |
| |
| Reviewed by Youenn Fablet. |
| |
| Test: AVFoundationPref API test. |
| |
| * html/HTMLAudioElement.idl: There is no need for a runtime setting to enable/disable audio, |
| there is already settings.mediaEnabled. |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::prepareForLoad): Fail if there are no media engines registered. |
| (WebCore::HTMLMediaElement::noneSupported): Return early if m_error has already been set. |
| (WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Remove a typo. |
| |
| * page/RuntimeEnabledFeatures.cpp: |
| (WebCore::RuntimeEnabledFeatures::audioEnabled const): Deleted. |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-03-27 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [GTK] Layout test editing/deleting/delete-surrogatepair.html crashing with CRITICAL **: enchant_dict_check: assertion 'g_utf8_validate(word, len, NULL)' failed |
| https://bugs.webkit.org/show_bug.cgi?id=176799 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The length of a surrogate-pair UTF-16 character is 2 even though |
| the number of characters is 1. An incorrect string length was |
| passed to enchant_dict_check if the string contains a |
| surrogate-pair character because the length was calculated by |
| applying UTF-16 character position to UTF-8 string. |
| |
| No new tests (Covered by existing tests). |
| |
| * platform/text/enchant/TextCheckerEnchant.cpp: |
| (WebCore::TextCheckerEnchant::checkSpellingOfWord): Changed the |
| type of an argument `word` from CString to String. Convert a |
| substring of the argument into UTF-8. |
| (WebCore::TextCheckerEnchant::checkSpellingOfString): Pass the |
| original UTF-16 string to checkSpellingOfWord instead of a |
| converted UTF-8 string. |
| * platform/text/enchant/TextCheckerEnchant.h: Changed the type of |
| an argument `word` from CString to String. |
| |
| 2018-03-26 Ms2ger <Ms2ger@igalia.com> |
| |
| Remove an unnecessary const_cast from BitmapTextureGL::updateContents(). |
| https://bugs.webkit.org/show_bug.cgi?id=184007 |
| |
| Reviewed by Žan Doberšek. |
| |
| No new tests. |
| |
| * platform/graphics/texmap/BitmapTextureGL.cpp: |
| (WebCore::BitmapTextureGL::updateContents): |
| |
| 2018-03-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Make imported/mozilla/css-animations/test_animation-currenttime.html pass reliably |
| https://bugs.webkit.org/show_bug.cgi?id=183819 |
| |
| Reviewed by Dean Jackson. |
| |
| The current time for a CSS Animation exposed via the API should be clamped between 0 and the animation duration. |
| |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::bindingsCurrentTime const): |
| * animation/CSSAnimation.h: |
| * animation/WebAnimation.h: |
| |
| 2018-03-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Correctly handle timing functions specified by CSS Animations and CSS Transitions |
| https://bugs.webkit.org/show_bug.cgi?id=183935 |
| |
| Reviewed by Dean Jackson. |
| |
| We were incorrectly reflecting the animation-timing-function and transition-timing-function values on the generated |
| DeclarativeAnimation effect timing "easing" property. In fact, those values should only be represented on the keyframes. |
| |
| In the case of a CSS Animation, the animation-timing-function property set on the element's style serves as the default |
| value used for all keyframes, and individual keyframes can specify an overriding animation-timing-function. For a CSS |
| Transition, the transition-timing-function property set on the element's style serves as the timing function of the |
| from keyframe. |
| |
| To correctly reflect this, we provide a new timingFunctionForKeyframeAtIndex() function on KeyframeEffectReadOnly |
| which will return the right TimingFunction object at a given index, regardless of the animation type. In the case |
| of getKeyframes(), we manually return "linear" for the "to" keyframe since timingFunctionForKeyframeAtIndex() |
| would otherwise return the same timing function as the "from" keyframe. This avoids creating an extra |
| LinearTimingFunction object. |
| |
| As a result, a number of Mozilla imported tests progress since we have correct information on the "easing" property |
| of objects returned by getKeyframes() and the "progress" reported by getComputedTiming() now always uses a linear |
| timing function. |
| |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::syncPropertiesWithBackingAnimation): The timing function of the backing Animation should |
| not be reflected on the effect's timing object. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::getKeyframes): Return the correct timing function for a keyframe, and use a "linear" |
| value for the "to" keyframe of a CSS Transition. |
| (WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): |
| (WebCore::KeyframeEffectReadOnly::timingFunctionForKeyframeAtIndex): |
| * animation/KeyframeEffectReadOnly.h: |
| |
| 2018-03-26 Chris Dumez <cdumez@apple.com> |
| |
| Use SecurityOriginData more consistently in Service Worker code |
| https://bugs.webkit.org/show_bug.cgi?id=183969 |
| |
| Reviewed by Darin Adler. |
| |
| Use SecurityOriginData more consistently in Service Worker code to avoid constructing |
| SecurityOrigin objects unnecessarily. |
| |
| I also updated SecurityOrigin to use SecurityOriginData as a data member. This reduces |
| code duplication a bit. This also avoids constructing SecurityOriginData unnecessarily |
| in some cases as callers can now use SecurityOrigin::data() instead of |
| SecurityOriginData::fromSecurityOrigin(). |
| |
| No new tests, no Web-facing behavior change. |
| |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::origin const): |
| * Modules/encryptedmedia/CDM.cpp: |
| (WebCore::CDM::storageDirectory const): |
| * Modules/encryptedmedia/MediaKeySession.cpp: |
| (WebCore::MediaKeySession::mediaKeysStorageDirectory const): |
| * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp: |
| (WebCore::WebKitMediaKeySession::mediaKeysStorageDirectory const): |
| * Modules/indexeddb/IDBFactory.cpp: |
| (WebCore::IDBFactory::openInternal): |
| (WebCore::IDBFactory::deleteDatabase): |
| * Modules/indexeddb/client/IDBConnectionToServer.cpp: |
| (WebCore::IDBClient::IDBConnectionToServer::getAllDatabaseNames): |
| * Modules/webdatabase/Database.cpp: |
| (WebCore::Database::securityOrigin): |
| * Modules/webdatabase/DatabaseContext.cpp: |
| (WebCore::DatabaseContext::securityOrigin const): |
| * Modules/webdatabase/DatabaseContext.h: |
| * Modules/webdatabase/DatabaseManager.cpp: |
| (WebCore::DatabaseManager::fullPathForDatabase): |
| (WebCore::DatabaseManager::detailsForNameAndOrigin): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaPlayerMediaKeysStorageDirectory const): |
| * inspector/agents/InspectorDOMStorageAgent.cpp: |
| (WebCore::InspectorDOMStorageAgent::findStorageArea): |
| * loader/appcache/ApplicationCacheStorage.cpp: |
| (WebCore::ApplicationCacheStorage::calculateQuotaForOrigin): |
| (WebCore::ApplicationCacheStorage::calculateUsageForOrigin): |
| (WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache): |
| (WebCore::ApplicationCacheStorage::storeUpdatedQuotaForOrigin): |
| (WebCore::ApplicationCacheStorage::store): |
| (WebCore::ApplicationCacheStorage::ensureOriginRecord): |
| * page/DOMWindow.cpp: |
| (WebCore:: const): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::SecurityOrigin): |
| (WebCore::SecurityOrigin::isPotentiallyTrustworthy const): |
| (WebCore::SecurityOrigin::canAccess const): |
| (WebCore::SecurityOrigin::canDisplay const): |
| (WebCore::SecurityOrigin::domainForCachePartition const): |
| (WebCore::SecurityOrigin::isLocal const): |
| (WebCore::SecurityOrigin::toString const): |
| (WebCore::SecurityOrigin::toRawString const): |
| (WebCore::SecurityOrigin::create): |
| (WebCore::SecurityOrigin::isSameSchemeHostPort const): |
| * page/SecurityOrigin.h: |
| (WebCore::SecurityOrigin::protocol const): |
| (WebCore::SecurityOrigin::host const): |
| (WebCore::SecurityOrigin::port const): |
| (WebCore::SecurityOrigin::data const): |
| (WebCore::SecurityOrigin::isHTTPFamily const): |
| * page/SecurityOriginData.cpp: |
| (WebCore::SecurityOriginData::toString const): |
| (WebCore::SecurityOriginData::fromFrame): |
| * page/SecurityOriginData.h: |
| (WebCore::SecurityOriginData::fromURL): |
| * storage/StorageNamespaceProvider.cpp: |
| (WebCore::StorageNamespaceProvider::localStorageArea): |
| * testing/Internals.cpp: |
| (WebCore::Internals::clearCacheStorageMemoryRepresentation): |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::removeRegistration): |
| (WebCore::ServiceWorkerContainer::updateRegistration): |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::relatesToOrigin const): |
| * workers/service/ServiceWorkerRegistrationKey.h: |
| * workers/service/server/SWOriginStore.cpp: |
| (WebCore::SWOriginStore::add): |
| (WebCore::SWOriginStore::remove): |
| (WebCore::SWOriginStore::clear): |
| * workers/service/server/SWOriginStore.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistration): |
| (WebCore::SWServer::removeRegistration): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::tryInstallContextData): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| (WebCore::SWServer::markAllWorkersForOriginAsTerminated): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| (WebCore::SWServer::needsServerToContextConnectionForOrigin const): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerToContextConnection.cpp: |
| (WebCore::SWServerToContextConnection::SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::~SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::connectionForOrigin): |
| * workers/service/server/SWServerToContextConnection.h: |
| (WebCore::SWServerToContextConnection::securityOrigin const): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::origin const): |
| (WebCore::SWServerWorker::securityOrigin const): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-03-26 Brent Fulgham <bfulgham@apple.com> |
| |
| Warn against cookie access in the WebContent process using ProcessPrivilege assertions |
| https://bugs.webkit.org/show_bug.cgi?id=183911 |
| <rdar://problem/38762306> |
| |
| Reviewed by Youenn Fablet. |
| |
| Add a set of ProcessPrivilege assertions to enforce the rule that the WebContent process |
| should never call Cookie API directly. That should only happen in the Networking or |
| UIProcess. |
| |
| Add a new static flag to NetworkStorageSession that indicates if the current process has |
| permission to interact with the Cookie API. |
| |
| No new tests since there is no change in behavior. |
| |
| * platform/network/NetworkStorageSession.cpp: |
| (WebCore::NetworkStorageSession::NetworkStorageSession): |
| (WebCore::NetworkStorageSession::processMayUseCookieAPI): Added. |
| (WebCore::NetworkStorageSession::permitProcessToUseCookieAPI): Added. This also adds |
| the appropriate flag to the ProcessPrivileges data for the current process. |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::createCFStorageSessionForIdentifier): Do not create cookie storage if the current |
| process is prohibited from interacting with the Cookie API. |
| (WebCore::NetworkStorageSession::NetworkStorageSession): Add assertions. |
| (WebCore::NetworkStorageSession::switchToNewTestingSession): Do not create cookie storage if |
| the current process is prohibited from interacting with the Cookie API. |
| (WebCore::NetworkStorageSession::defaultStorageSession): Ditto. |
| (WebCore::NetworkStorageSession::ensureSession): Ditto. |
| (WebCore::NetworkStorageSession::cookieStorage const): Ditto. |
| * platform/network/cocoa/CookieStorageObserver.mm: |
| (WebCore::CookieStorageObserver::CookieStorageObserver): Assert if accessed from untrusted process. |
| (WebCore::CookieStorageObserver::startObserving): Ditto. |
| (WebCore::CookieStorageObserver::stopObserving): Ditto. |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::setCookie): |
| (WebCore::NetworkStorageSession::setCookies): |
| (WebCore::NetworkStorageSession::deleteCookie): |
| (WebCore::nsCookiesToCookieVector): |
| (WebCore::NetworkStorageSession::getAllCookies): |
| (WebCore::NetworkStorageSession::getCookies): |
| (WebCore::NetworkStorageSession::flushCookieStore): |
| (WebCore::NetworkStorageSession::nsCookieStorage const): |
| (WebCore::createPrivateStorageSession): |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::httpCookies): |
| (WebCore::deleteHTTPCookie): |
| (WebCore::httpCookiesForURL): |
| (WebCore::filterCookies): |
| (WebCore::applyPartitionToCookies): |
| (WebCore::cookiesInPartitionForURL): |
| (WebCore::cookiesForSession): |
| (WebCore::setHTTPCookiesForURL): |
| (WebCore::deleteAllHTTPCookies): |
| (WebCore::setCookiesFromDOM): |
| (WebCore::httpCookieAcceptPolicy): |
| (WebCore::deleteCookie): |
| (WebCore::deleteCookiesForHostnames): |
| (WebCore::deleteAllCookiesModifiedSince): |
| |
| 2018-03-26 Alex Christensen <achristensen@webkit.org> |
| |
| Merge ResourceHandleClient::willCacheResponseAsync with ResourceHandleClient::willCacheResponse |
| https://bugs.webkit.org/show_bug.cgi?id=183965 |
| |
| Reviewed by Chris Dumez. |
| |
| It turns out that ResourceHandleClient::willCacheResponseAsync didn't do anything and the logic in |
| ResourceHandleClient::willCacheResponse was not being called. This makes it so there is one code |
| path and it executes the logic in ResourceHandleClient::willCacheResponse. |
| |
| * loader/EmptyFrameLoaderClient.h: |
| * loader/FrameLoaderClient.h: |
| * loader/ResourceLoader.h: |
| * loader/SubresourceLoader.h: |
| * loader/cocoa/SubresourceLoaderCocoa.mm: |
| (WebCore::SubresourceLoader::willCacheResponseAsync): |
| (WebCore::SubresourceLoader::willCacheResponse): Deleted. |
| * loader/mac/ResourceLoaderMac.mm: |
| (WebCore::ResourceLoader::willCacheResponseAsync): |
| (WebCore::ResourceLoader::willCacheResponse): Deleted. |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleClient.cpp: |
| (WebCore::ResourceHandleClient::willCacheResponseAsync): Deleted. |
| * platform/network/ResourceHandleClient.h: |
| (WebCore::ResourceHandleClient::willCacheResponseAsync): |
| (WebCore::ResourceHandleClient::shouldCacheResponse): |
| (WebCore::ResourceHandleClient::willCacheResponse): Deleted. |
| * platform/network/cf/ResourceHandleCFNet.cpp: |
| (WebCore::ResourceHandle::continueWillCacheResponse): Deleted. |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h: |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse): |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillCacheResponse): Deleted. |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h: |
| * platform/network/mac/ResourceHandleMac.mm: |
| (WebCore::ResourceHandle::continueWillCacheResponse): Deleted. |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate continueWillCacheResponse:]): Deleted. |
| |
| 2018-03-26 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK][WPE] Upload correct buffer in BitmapTextureGL::updateContents() |
| https://bugs.webkit.org/show_bug.cgi?id=184004 |
| |
| Reviewed by Žan Doberšek. |
| |
| Do not upload the original buffer. Upload the result of creating a subImage buffer |
| if it was required. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/texmap/BitmapTextureGL.cpp: |
| (WebCore::BitmapTextureGL::updateContents): |
| |
| 2018-03-25 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Clean up TextureMapperPlatformLayer, TextureMapperBackingStore code |
| https://bugs.webkit.org/show_bug.cgi?id=183985 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Clean up TextureMapperPlatformLayer and TextureMapperBackingStore |
| headers and implementation files. Remove dubious whitespace, use #pragma |
| once, clean up constructors, destructors, method definitions and remove |
| unnecessary includes in favor of forward declarations where possible. |
| |
| The TextureMapperPlatformLayer::swapBuffers() method is removed as it |
| wasn't called or overridden anywhere. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/texmap/TextureMapperBackingStore.cpp: |
| * platform/graphics/texmap/TextureMapperBackingStore.h: |
| (WebCore::TextureMapperBackingStore::drawRepaintCounter): |
| * platform/graphics/texmap/TextureMapperPlatformLayer.h: |
| (WebCore::TextureMapperPlatformLayer::setClient): |
| (WebCore::TextureMapperPlatformLayer::TextureMapperPlatformLayer): Deleted. |
| (WebCore::TextureMapperPlatformLayer::swapBuffers): Deleted. |
| |
| 2018-03-25 Dan Bernstein <mitz@apple.com> |
| |
| [Xcode] Remove workaround only needed for deploying to iOS 10.0 and earlier |
| https://bugs.webkit.org/show_bug.cgi?id=183999 |
| |
| Reviewed by Sam Weinig. |
| |
| * Configurations/WebCore.xcconfig: Removed build settings. |
| * Configurations/WebCoreTestSupport.xcconfig: Removed location of phony WebKitLegacy from |
| frameworks search path. |
| * Configurations/WebKitLegacyStub.iOS.tbd: Removed. |
| * WebCore.xcodeproj/project.pbxproj: Removed script build phase from the Derived Sources target. |
| |
| 2018-03-25 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229954. |
| https://bugs.webkit.org/show_bug.cgi?id=184000 |
| |
| Caused many layout tests to crash on Apple High Sierra, |
| Sierra, iOS Simulator and GTK Linux Debug test bots (Requested |
| by dydz on #webkit). |
| |
| Reverted changeset: |
| |
| "Use SecurityOriginData more consistently in Service Worker |
| code" |
| https://bugs.webkit.org/show_bug.cgi?id=183969 |
| https://trac.webkit.org/changeset/229954 |
| |
| 2018-03-23 Alex Christensen <achristensen@webkit.org> |
| |
| Use completion handlers for ResourceHandleClient::canAuthenticateAgainstProtectionSpaceAsync |
| https://bugs.webkit.org/show_bug.cgi?id=183966 |
| |
| Reviewed by Chris Dumez. |
| |
| No change in behavior. |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::canAuthenticateAgainstProtectionSpaceAsync): |
| * loader/ResourceLoader.h: |
| * platform/network/BlobResourceHandle.cpp: |
| * platform/network/PingHandle.h: |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleClient.h: |
| * platform/network/SynchronousLoaderClient.cpp: |
| (WebCore::SynchronousLoaderClient::canAuthenticateAgainstProtectionSpaceAsync): |
| * platform/network/SynchronousLoaderClient.h: |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h: |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace): |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h: |
| * platform/network/mac/ResourceHandleMac.mm: |
| (WebCore::ResourceHandle::canAuthenticateAgainstProtectionSpace): |
| (WebCore::ResourceHandle::continueCanAuthenticateAgainstProtectionSpace): Deleted. |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate continueCanAuthenticateAgainstProtectionSpace:]): Deleted. |
| |
| 2018-03-24 Chris Dumez <cdumez@apple.com> |
| |
| Use SecurityOriginData more consistently in Service Worker code |
| https://bugs.webkit.org/show_bug.cgi?id=183969 |
| |
| Reviewed by Darin Adler. |
| |
| Use SecurityOriginData more consistently in Service Worker code to avoid constructing |
| SecurityOrigin objects unnecessarily. |
| |
| I also updated SecurityOrigin to use SecurityOriginData as a data member. This reduces |
| code duplication a bit. This also avoids constructing SecurityOriginData unnecessarily |
| in some cases as callers can now use SecurityOrigin::data() instead of |
| SecurityOriginData::fromSecurityOrigin(). |
| |
| No new tests, no Web-facing behavior change. |
| |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::origin const): |
| * Modules/encryptedmedia/CDM.cpp: |
| (WebCore::CDM::storageDirectory const): |
| * Modules/encryptedmedia/MediaKeySession.cpp: |
| (WebCore::MediaKeySession::mediaKeysStorageDirectory const): |
| * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp: |
| (WebCore::WebKitMediaKeySession::mediaKeysStorageDirectory const): |
| * Modules/indexeddb/IDBFactory.cpp: |
| (WebCore::IDBFactory::openInternal): |
| (WebCore::IDBFactory::deleteDatabase): |
| * Modules/indexeddb/client/IDBConnectionToServer.cpp: |
| (WebCore::IDBClient::IDBConnectionToServer::getAllDatabaseNames): |
| * Modules/webdatabase/Database.cpp: |
| (WebCore::Database::securityOrigin): |
| * Modules/webdatabase/DatabaseContext.cpp: |
| (WebCore::DatabaseContext::securityOrigin const): |
| * Modules/webdatabase/DatabaseContext.h: |
| * Modules/webdatabase/DatabaseManager.cpp: |
| (WebCore::DatabaseManager::fullPathForDatabase): |
| (WebCore::DatabaseManager::detailsForNameAndOrigin): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaPlayerMediaKeysStorageDirectory const): |
| * inspector/agents/InspectorDOMStorageAgent.cpp: |
| (WebCore::InspectorDOMStorageAgent::findStorageArea): |
| * loader/appcache/ApplicationCacheStorage.cpp: |
| (WebCore::ApplicationCacheStorage::calculateQuotaForOrigin): |
| (WebCore::ApplicationCacheStorage::calculateUsageForOrigin): |
| (WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache): |
| (WebCore::ApplicationCacheStorage::storeUpdatedQuotaForOrigin): |
| (WebCore::ApplicationCacheStorage::store): |
| (WebCore::ApplicationCacheStorage::ensureOriginRecord): |
| * page/DOMWindow.cpp: |
| (WebCore:: const): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::SecurityOrigin): |
| (WebCore::SecurityOrigin::isPotentiallyTrustworthy const): |
| (WebCore::SecurityOrigin::canAccess const): |
| (WebCore::SecurityOrigin::canDisplay const): |
| (WebCore::SecurityOrigin::domainForCachePartition const): |
| (WebCore::SecurityOrigin::isLocal const): |
| (WebCore::SecurityOrigin::toString const): |
| (WebCore::SecurityOrigin::toRawString const): |
| (WebCore::SecurityOrigin::create): |
| (WebCore::SecurityOrigin::isSameSchemeHostPort const): |
| * page/SecurityOrigin.h: |
| (WebCore::SecurityOrigin::protocol const): |
| (WebCore::SecurityOrigin::host const): |
| (WebCore::SecurityOrigin::port const): |
| (WebCore::SecurityOrigin::data const): |
| (WebCore::SecurityOrigin::isHTTPFamily const): |
| * page/SecurityOriginData.cpp: |
| (WebCore::SecurityOriginData::toString const): |
| (WebCore::SecurityOriginData::fromFrame): |
| * page/SecurityOriginData.h: |
| (WebCore::SecurityOriginData::fromURL): |
| * storage/StorageNamespaceProvider.cpp: |
| (WebCore::StorageNamespaceProvider::localStorageArea): |
| * testing/Internals.cpp: |
| (WebCore::Internals::clearCacheStorageMemoryRepresentation): |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::removeRegistration): |
| (WebCore::ServiceWorkerContainer::updateRegistration): |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::relatesToOrigin const): |
| * workers/service/ServiceWorkerRegistrationKey.h: |
| * workers/service/server/SWOriginStore.cpp: |
| (WebCore::SWOriginStore::add): |
| (WebCore::SWOriginStore::remove): |
| (WebCore::SWOriginStore::clear): |
| * workers/service/server/SWOriginStore.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistration): |
| (WebCore::SWServer::removeRegistration): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::tryInstallContextData): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| (WebCore::SWServer::markAllWorkersForOriginAsTerminated): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| (WebCore::SWServer::needsServerToContextConnectionForOrigin const): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerToContextConnection.cpp: |
| (WebCore::SWServerToContextConnection::SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::~SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::connectionForOrigin): |
| * workers/service/server/SWServerToContextConnection.h: |
| (WebCore::SWServerToContextConnection::securityOrigin const): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::origin const): |
| (WebCore::SWServerWorker::securityOrigin const): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-03-24 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229792. |
| https://bugs.webkit.org/show_bug.cgi?id=183980 |
| |
| not actually necessary (Requested by thorton on #webkit). |
| |
| Reverted changeset: |
| |
| "Fix the build" |
| https://trac.webkit.org/changeset/229792 |
| |
| 2018-03-23 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the geolocation build |
| https://bugs.webkit.org/show_bug.cgi?id=183975 |
| |
| * Modules/geolocation/ios/GeolocationPositionIOS.mm: |
| (WebCore::GeolocationPosition::GeolocationPosition): |
| |
| 2018-03-23 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build with no pasteboard |
| https://bugs.webkit.org/show_bug.cgi?id=183973 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * platform/ios/PlatformPasteboardIOS.mm: |
| |
| 2018-03-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Fix some localizable strings after r229878 |
| https://bugs.webkit.org/show_bug.cgi?id=183963 |
| |
| Reviewed by Tim Horton. |
| |
| The WEB_UI_STRING macro was incorrectly used for certain localized strings pertaining to extra zoom mode. To |
| correct this, make the "Done" string use WEB_UI_STRING with actual UI-facing text; since day, year and month |
| labels in the date picker are less generalizable to other UI, leave these as unique keys, but change them to |
| use WEB_UI_STRING_KEY instead. |
| |
| Additionally, remove now-unused localizable strings for the text input view controller. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::formControlDoneButtonTitle): |
| (WebCore::datePickerDayLabelTitle): |
| (WebCore::datePickerMonthLabelTitle): |
| (WebCore::datePickerYearLabelTitle): |
| |
| 2018-03-23 Chris Dumez <cdumez@apple.com> |
| |
| NetworkStateNotifier::updateStateWithoutNotifying() is inefficient |
| https://bugs.webkit.org/show_bug.cgi?id=183760 |
| <rdar://problem/37093299> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Update NetworkStateNotifier::updateStateWithoutNotifying() to stop calling |
| SCDynamicStoreCopyKeyList(). SCDynamicStoreCopyKeyList() is expensive as it |
| expects its key parameter to be a regular expression and it can match several |
| keys. It is also unnecessary in our case since we already have an exact key. |
| We now call the more efficient SCDynamicStoreCopyValue() instead, which is |
| the right thing to call when we have an exact key. |
| |
| This change was suggested by the SC team. |
| |
| This was tested manually as there is no easy way to write an automated test |
| for this. |
| |
| In a follow-up, I also plan to call this code in the UIProcess (or NetworkProcess) |
| to avoid calling it once per WebProcess. |
| |
| * platform/network/mac/NetworkStateNotifierMac.cpp: |
| (WebCore::NetworkStateNotifier::updateStateWithoutNotifying): |
| |
| 2018-03-23 Daniel Bates <dabates@apple.com> |
| |
| Unreviewed, rolling out r229868. |
| |
| Caused media controls tests to timeout. Will investigate |
| offline. |
| |
| Reverted changeset: |
| |
| "CSS mask images should be retrieved using potentially CORS- |
| enabled fetch" |
| https://bugs.webkit.org/show_bug.cgi?id=179983 |
| https://trac.webkit.org/changeset/229868 |
| |
| 2018-03-23 Mark Lam <mark.lam@apple.com> |
| |
| Add pointer profiling hooks to the CSS JIT. |
| https://bugs.webkit.org/show_bug.cgi?id=183947 |
| <rdar://problem/38803593> |
| |
| Reviewed by JF Bastien. |
| |
| No new tests needed. Covered by existing tests. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| - Added a missing application of WTF_PREPARE_VTBL_POINTER_FOR_INSPECTION(). |
| |
| * bindings/scripts/test/JS/JSInterfaceName.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| (WebCore::toJSNewlyCreated): |
| * css/ElementRuleCollector.cpp: |
| (WebCore::ElementRuleCollector::ruleMatches): |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::compile): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker): |
| * cssjit/SelectorCompiler.h: |
| (WebCore::SelectorCompiler::ruleCollectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::querySelectorSimpleSelectorCheckerFunction): |
| (WebCore::SelectorCompiler::ruleCollectorSelectorCheckerFunctionWithCheckingContext): |
| (WebCore::SelectorCompiler::querySelectorSelectorCheckerFunctionWithCheckingContext): |
| * dom/SelectorQuery.cpp: |
| (WebCore::SelectorDataList::executeCompiledSingleMultiSelectorData const): |
| (WebCore::SelectorDataList::execute const): |
| |
| 2018-03-23 Sihui Liu <sihui_liu@apple.com> |
| |
| Local storage getItem() for an empty string returned UNDEFINED value. |
| https://bugs.webkit.org/show_bug.cgi?id=69138 |
| <rdar://problem/13410974> |
| |
| Reviewed by Brady Eidson. |
| |
| * platform/sql/SQLiteStatement.cpp: |
| (WebCore::SQLiteStatement::getColumnBlobAsString): |
| |
| 2018-03-23 Chris Dumez <cdumez@apple.com> |
| |
| Promptly terminate service worker processes when they are no longer needed |
| https://bugs.webkit.org/show_bug.cgi?id=183873 |
| <rdar://problem/38676995> |
| |
| Reviewed by Youenn Fablet. |
| |
| The StorageProcess now keeps track of service worker clients for each security |
| origin. When there is no longer any clients for a given security origin, the |
| StorageProcess asks the service worker process for the given origin to terminate |
| and severs its connection to it. |
| |
| Change is covered by API test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::markAllWorkersForOriginAsTerminated): |
| Pass the security origin since this is called when a service worker process |
| crashes. When a service worker process for origin A crashes, we only want |
| to mark service workers in origin A as terminated, not ALL of them. |
| |
| (WebCore::SWServer::registerServiceWorkerClient): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| (WebCore::SWServer::needsServerToContextConnectionForOrigin const): |
| Tweak logic so that we only relaunch a service worker process if we still |
| have clients for its security origin. |
| |
| * workers/service/server/SWServer.h: |
| (WebCore::SWServer::disableServiceWorkerProcessTerminationDelay): |
| Add a way to disable the service worker termination delay to facilitate |
| testing. |
| |
| * workers/service/server/SWServerToContextConnection.h: |
| |
| 2018-03-23 Brady Eidson <beidson@apple.com> |
| |
| Go to back/forward list items after a process-swapped navigation. |
| <rdar://problem/38690544> and https://bugs.webkit.org/show_bug.cgi?id=183920 |
| |
| Reviewed by Andy Estes. |
| |
| Covered by new API test. |
| |
| Most of the changes to WebCore are teaching HistoryItem navigations to know when they should |
| do a policy check or not. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * history/BackForwardController.cpp: |
| (WebCore::BackForwardController::goBackOrForward): |
| (WebCore::BackForwardController::goBack): |
| (WebCore::BackForwardController::goForward): |
| |
| * history/HistoryItem.cpp: |
| (WebCore::HistoryItem::setStateObject): Actually push state object changes to the UIProcess. |
| This was a long standing bug that made it difficult to effectively test this change. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURLIntoChildFrame): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| (WebCore::FrameLoader::loadItem): |
| (WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad): |
| * loader/FrameLoader.h: |
| * loader/FrameLoaderTypes.h: |
| |
| * loader/HistoryController.cpp: |
| (WebCore::HistoryController::goToItem): |
| (WebCore::HistoryController::setDefersLoading): |
| (WebCore::HistoryController::recursiveGoToItem): |
| * loader/HistoryController.h: |
| |
| * loader/NavigationPolicyCheck.h: |
| |
| * page/Page.cpp: |
| (WebCore::Page::goToItem): |
| * page/Page.h: |
| |
| 2018-03-23 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Fix decoder key isPrevalentResource->isVeryPrevalentResource |
| https://bugs.webkit.org/show_bug.cgi?id=183950 |
| <rdar://problem/38806275> |
| |
| Reviewed by Brent Fulgham. |
| |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::decode): |
| Now isVeryPrevalentResource is decoded to the correct field. |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| WebProcessPool should not ask to register all clients for each service worker process creation |
| https://bugs.webkit.org/show_bug.cgi?id=183941 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by existing unit tests. |
| Register all Documents of a process no matter its session ID when asked to. |
| Make sure that whenever a WebProcess is asked to do so, any further Document will be registered |
| by calling setMayHaveRegisteredServiceWorkers(). |
| This ensures that a WebProcess created before any service worker but empty at the time a service worker is created |
| will actually register all its future clients. |
| |
| Add some assertions to ensure that a client is not registered twice. |
| |
| * workers/service/ServiceWorkerProvider.cpp: |
| (WebCore::ServiceWorkerProvider::registerServiceWorkerClients): |
| * workers/service/ServiceWorkerProvider.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::registerServiceWorkerClient): |
| |
| 2018-03-23 Eric Carlson <eric.carlson@apple.com> |
| |
| HTMLElement factory doesn't need to call MediaPlayer::isAvailable |
| https://bugs.webkit.org/show_bug.cgi?id=183946 |
| <rdar://problem/38802687> |
| |
| Reviewed by Youenn Fablet. |
| |
| Test: media/media-disabled.html |
| |
| * dom/make_names.pl: |
| (printConstructorInterior): |
| * page/Settings.yaml: |
| * page/SettingsDefaultValues.h: |
| |
| 2018-03-23 David Kilzer <ddkilzer@apple.com> |
| |
| Stop using dispatch_set_target_queue() |
| <https://webkit.org/b/183908> |
| <rdar://problem/33553533> |
| |
| Reviewed by Daniel Bates. |
| |
| No new tests since no change in behavior. |
| |
| * platform/mediastream/mac/AVMediaCaptureSource.mm: |
| (WebCore::globaVideoCaptureSerialQueue): Remove use of |
| dispatch_set_target_queue() by changing dispatch_queue_create() |
| to dispatch_queue_create_with_target(). |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| Use libwebrtc ObjectiveC H264 encoder and decoder |
| https://bugs.webkit.org/show_bug.cgi?id=183912 |
| |
| Reviewed by Eric Carlson. |
| |
| No observable change of behavior. |
| Made use of libwebrtc WebKit utilities. |
| Updated RealtimeINcomingVideoSourceCocoa as it now receives ObjcVideoFrame. |
| |
| * Configurations/WebCore.xcconfig: |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProviderCocoa::~LibWebRTCProviderCocoa): |
| (WebCore::LibWebRTCProviderCocoa::setH264HardwareEncoderAllowed): |
| (WebCore::LibWebRTCProviderCocoa::createDecoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::createEncoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::setActive): |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: Renamed from Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.cpp. |
| (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame): |
| (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame): |
| * testing/Internals.cpp: Removed commented out include. |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| DocumentThreadableLoader should send credentials after redirections and preflight if fetch option credentials is include |
| https://bugs.webkit.org/show_bug.cgi?id=183928 |
| |
| Reviewed by Chris Dumez. |
| |
| Tests: imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-redirect.any.html |
| imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-redirect.any.worker.html |
| |
| In case mode is include, keep sending credentials even after redirection with preflight. |
| |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::redirectReceived): |
| |
| 2018-03-23 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build after r229858 |
| |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| Allow fully whitelisted plug-ins to match non HTTP URLs |
| https://bugs.webkit.org/show_bug.cgi?id=183938 |
| rdar://problem/38534312 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by manual testing and unit testing. |
| |
| * platform/URL.cpp: |
| (WebCore::URL::isMatchingDomain const): |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| ActiveDOMObject should assert that they are destroyed in the thread they are created |
| https://bugs.webkit.org/show_bug.cgi?id=183671 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Moved MessagePort assertion to ActiveDOMObject. |
| |
| * dom/ActiveDOMObject.cpp: |
| (WebCore::ActiveDOMObject::~ActiveDOMObject): |
| * dom/ActiveDOMObject.h: |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::~MessagePort): |
| * dom/MessagePort.h: |
| |
| 2018-03-23 Youenn Fablet <youenn@apple.com> |
| |
| Safari WebKitWebRTCAudioModule crash during <video> tag update when audio track present in MediaStream |
| https://bugs.webkit.org/show_bug.cgi?id=181180 |
| <rdar://problem/36302375> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: webrtc/video-update-often.html |
| |
| AudioTrackPrivateMediaStreamCocoa needs to be destroyed in the main thread since it owns a Ref to its MediaStreamTrackPrivate. |
| We can still ref it on a background thread but we always deref it on the main thread. |
| |
| * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: |
| (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): |
| (WebCore::AudioTrackPrivateMediaStreamCocoa::render): |
| |
| 2018-03-23 Sergio Villar Senin <svillar@igalia.com> |
| |
| [css-grid] Fix auto repeat tracks computation with definite min sizes |
| https://bugs.webkit.org/show_bug.cgi?id=183933 |
| |
| Reviewed by Javier Fernandez. |
| |
| Indefinitely sized containers use the specified definite min-size (if any) as available |
| space in order to compute the number of auto repeat tracks to create. A bug in that code was |
| causing the grid to be one track larger than expected. That was only happening in the case |
| of the free space being a multiple of the total size of the autorepeat tracks. |
| |
| Test: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-auto-repeat-001.html |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::computeAutoRepeatTracksCount const): |
| |
| 2018-03-23 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK][WPE] Avoid software color conversion inside BitmapTextureGL |
| https://bugs.webkit.org/show_bug.cgi?id=183892 |
| |
| Reviewed by Žan Doberšek. |
| |
| Always use RGBA format on BitmapTextureGL (when no other format is specifically requested). When |
| the texture is updated from BGRA content, use a flag to indicate the shader to perform a color |
| conversion during the painting. This way we don't need to swap the R and B components on the CPU. |
| Also, remove one of the lists in BitmapTexturePool as now all of them have the same format, and |
| remove the UpdateContentsFlag as we never need to modify the original image data. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::updateTexture): |
| * platform/graphics/texmap/BitmapTexture.cpp: |
| (WebCore::BitmapTexture::updateContents): |
| * platform/graphics/texmap/BitmapTexture.h: |
| * platform/graphics/texmap/BitmapTextureGL.cpp: |
| (WebCore::BitmapTextureGL::BitmapTextureGL): |
| (WebCore::BitmapTextureGL::didReset): |
| (WebCore::BitmapTextureGL::updateContents): |
| (WebCore::BitmapTextureGL::applyFilters): |
| (WebCore::swizzleBGRAToRGBA): Deleted. |
| (WebCore::BitmapTextureGL::updateContentsNoSwizzle): Deleted. |
| * platform/graphics/texmap/BitmapTextureGL.h: |
| (WebCore::BitmapTextureGL::colorConvertFlags const): |
| * platform/graphics/texmap/BitmapTexturePool.cpp: |
| (WebCore::BitmapTexturePool::acquireTexture): |
| (WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired): |
| * platform/graphics/texmap/BitmapTexturePool.h: |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::updateBackingStoreIfNeeded): |
| * platform/graphics/texmap/TextureMapperContextAttributes.cpp: |
| (WebCore::TextureMapperContextAttributes::get): |
| * platform/graphics/texmap/TextureMapperContextAttributes.h: |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGL::drawNumber): |
| (WebCore::TextureMapperGL::drawTexture): |
| * platform/graphics/texmap/TextureMapperGL.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintIntoSurface): |
| * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: |
| (WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper): |
| * platform/graphics/texmap/TextureMapperTile.cpp: |
| (WebCore::TextureMapperTile::updateContents): |
| * platform/graphics/texmap/TextureMapperTile.h: |
| * platform/graphics/texmap/TextureMapperTiledBackingStore.cpp: |
| (WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded): |
| (WebCore::TextureMapperTiledBackingStore::updateContents): |
| * platform/graphics/texmap/TextureMapperTiledBackingStore.h: |
| |
| 2018-03-23 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [WTF] Add standard containers with FastAllocator specialization |
| https://bugs.webkit.org/show_bug.cgi?id=183789 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/indexeddb/IDBKeyData.h: |
| * Modules/mediasource/SampleMap.h: |
| * Modules/mediasource/SourceBuffer.cpp: |
| * Modules/webauthn/cbor/CBORValue.h: |
| It did not use FastAllocator for its container. |
| |
| * page/WheelEventTestTrigger.h: |
| * platform/audio/PlatformMediaSessionManager.h: |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h: |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| (WebCore::YCbCrToRGBMatrixForRangeAndTransferFunction): |
| * platform/mock/mediasource/MockSourceBufferPrivate.cpp: |
| * platform/wpe/PlatformPasteboardWPE.cpp: |
| * rendering/OrderIterator.h: |
| |
| 2018-03-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] infinite repeat counts aren't reflected for CSS Animations |
| https://bugs.webkit.org/show_bug.cgi?id=183932 |
| |
| Reviewed by Dean Jackson. |
| |
| The "infinite" value for animation-repeat-count is reflected as a special value which resolves to -1. We need to check |
| for this special value before setting the iterations count on the AnimationEffectTimingReadOnly object. |
| |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): |
| |
| 2018-03-22 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Correctly cancel animations when a parent gets a "display: none" style or when an element is removed |
| https://bugs.webkit.org/show_bug.cgi?id=183919 |
| |
| Reviewed by Dean Jackson. |
| |
| The old CSSAnimationController provided a cancelAnimations(Element&) method that allowed for animations for a given element |
| to be canceled when a parent element in the hierarchy gets a "display: none" style or if an element with animations is removed. |
| We add a similar cancelAnimationsForElement(Element&) method on AnimationTimeline and update CSSAnimationController::cancelAnimations() |
| call sites to use AnimationTimeline::cancelAnimationsForElement() when the flag to use Web Animations is on. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::cancelAnimationsForElement): Iterate over all animations for the provided element and call cancel() on them. |
| * animation/AnimationTimeline.h: |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::animatedStyleForRenderer): Drive-by fix while I was reviewed call sites to animationsForElement() to make |
| sure we don't create extra RefPtr<> objects. |
| * dom/Element.cpp: |
| (WebCore::Element::removedFromAncestor): Call AnimationTimeline::cancelAnimationsForElement() if the Web Animations flag is on when an |
| element is removed. |
| * dom/PseudoElement.cpp: |
| (WebCore::PseudoElement::clearHostElement): Call AnimationTimeline::cancelAnimationsForElement() if the Web Animations flag is on when |
| a pseudo-element is removed. |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): Call AnimationTimeline::cancelAnimationsForElement() if the Web Animations flag is on |
| for all children elements when an element gets a "display: none" style. |
| |
| 2018-03-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Animated transform styles are ignored when calling getComputedStyle() |
| https://bugs.webkit.org/show_bug.cgi?id=183918 |
| |
| Reviewed by Dean Jackson. |
| |
| Strictly looking at whether the renderer has a transform is a bad idea when determining whether a |
| transform is applied for an element. Looking at the RenderStyle is preferable because in the case |
| of animations running on the compositor, such as a transform-only animation or transition, the |
| renderer doesn't necessarily have a transform style on it, since we don't blend properties in |
| software as the animation progresses. Instead, all of the blending is performed by the compositor, |
| and only the computed style object has the software-blended transform style on it. |
| |
| We do need to account for inline renderers though as these do not support transforms. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::computedTransform): |
| |
| 2018-03-22 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Support "transition: all" for CSS Transitions as Web Animations |
| https://bugs.webkit.org/show_bug.cgi?id=183917 |
| |
| Reviewed by Dean Jackson. |
| |
| We now support "transition: all" CSS Transitions by iterating over all known CSS properties should the mode |
| of the backing animation be AnimateAll. Any property that we find to have a different value in the previous |
| and current style will have a backing CSSTransition object created for it. To support this, we now explicitly |
| provide a CSSPropertyID when creating a CSSTransition since we can no longer infer the transition property |
| from the backing animation, as Animation objects with mode AnimateAll report CSSPropertyInvalid as their |
| property. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::shouldBackingAnimationBeConsideredForCSSTransition): New method that checks whether a given backing |
| Animation object is suitable for consideration as a CSSTransition, where the mode must not be either AnimateNone |
| or AnimateUnknownProperty, and should the mode be AnimateSingleProperty, the property must not be CSSPropertyInvalid. |
| (WebCore::AnimationTimeline::updateCSSTransitionsForElement): We now assemble the list of previously animated |
| properties by looking at the m_elementToCSSTransitionByCSSPropertyID map and getting its keys. Then we compile |
| all backing Animation objects found in the old style that match the conditions enforced by the new method |
| shouldBackingAnimationBeConsideredForCSSTransition(). Then as we iterate over backing Animation objects found |
| in the new style, we iterate over all known CSS properties if the mode is AnimateAll, indicating that we're dealing |
| with a "transition: all" style. If we're dealing with a single property, we only process that single property. |
| * animation/CSSTransition.cpp: |
| (WebCore::CSSTransition::create): Expect a new CSSPropertyID parameter when creating a new CSSTransition since |
| we can no longer infer it from the backing Animation object. |
| (WebCore::CSSTransition::CSSTransition): Expect a new CSSPropertyID parameter when creating a new CSSTransition |
| since we can no longer infer it from the backing Animation object. |
| (WebCore::CSSTransition::matchesBackingAnimationAndStyles const): We can no longer use the == overloaded operator |
| for backing Animation objects to determine whether their respective properties match since this would compare the |
| "property" member of both Animation objects and when going from a "transition: all" style to one targeting a single |
| property, we would falsely identify mis-matching Animation objects. Instead, we pass a false flag to animationsMatch() |
| which indicates that we don't care about matching the transition property itself. |
| * animation/CSSTransition.h: Expose a new property() accessor which returns the CSSPropertyID passed at construction. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::computeCSSTransitionBlendingKeyframes): Use the new property() accessor on |
| CSSTransition to get at the transition property. |
| * platform/animation/Animation.cpp: |
| (WebCore::Animation::animationsMatch const): Replace the boolean parameter, which was not in use in WebCore, to indicate |
| whether we should match the property-related fields. We need this in CSSTransition::matchesBackingAnimationAndStyles(). |
| * platform/animation/Animation.h: |
| |
| 2018-03-22 Tim Horton <timothy_horton@apple.com> |
| |
| Adopt WK_ALTERNATE_FRAMEWORKS_DIR in WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=183930 |
| <rdar://problem/38782249> |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/WebCore.xcconfig: |
| * Configurations/WebCoreTestSupport.xcconfig: |
| |
| 2018-03-22 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229876. |
| https://bugs.webkit.org/show_bug.cgi?id=183929 |
| |
| Some webrtc tests are timing out on iOS simulator (Requested |
| by youenn on #webkit). |
| |
| Reverted changeset: |
| |
| "Use libwebrtc ObjectiveC H264 encoder and decoder" |
| https://bugs.webkit.org/show_bug.cgi?id=183912 |
| https://trac.webkit.org/changeset/229876 |
| |
| 2018-03-22 Megan Gardner <megan_gardner@apple.com> |
| |
| Expose more system colors via CSS |
| https://bugs.webkit.org/show_bug.cgi?id=183764 |
| <rdar://problem/36975898> |
| |
| Reviewed by Tim Horton. |
| |
| Test: fast/css/apple-system-control-colors.html |
| |
| Expose Apple specific system colors via CSS. |
| |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::systemColor const): |
| |
| 2018-03-22 Nan Wang <n_wang@apple.com> |
| |
| AX: Web table row count is incorrect when role row is added to <tr> in DOM |
| https://bugs.webkit.org/show_bug.cgi?id=183922 |
| |
| Reviewed by Chris Fleizach. |
| |
| Although the parent table for an ARIA grid row should be an ARIA table, we |
| should return the native table if the row is native <tr>. |
| |
| Test: accessibility/row-with-aria-role-in-native-table.html |
| |
| * accessibility/AccessibilityARIAGridRow.cpp: |
| (WebCore::AccessibilityARIAGridRow::parentTable const): |
| |
| 2018-03-22 Chris Dumez <cdumez@apple.com> |
| |
| Include security origin in the service worker process name |
| https://bugs.webkit.org/show_bug.cgi?id=183913 |
| |
| Reviewed by Youenn Fablet. |
| |
| Updated localizable strings. |
| |
| * English.lproj/Localizable.strings: |
| |
| 2018-03-22 Youenn Fablet <youenn@apple.com> |
| |
| Use libwebrtc ObjectiveC H264 encoder and decoder |
| https://bugs.webkit.org/show_bug.cgi?id=183912 |
| |
| Reviewed by Eric Carlson. |
| |
| No observable change of behavior. |
| Made use of libwebrtc WebKit utilities. |
| Updated RealtimeINcomingVideoSourceCocoa as it now receives ObjcVideoFrame. |
| |
| * Configurations/WebCore.xcconfig: |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProviderCocoa::~LibWebRTCProviderCocoa): |
| (WebCore::LibWebRTCProviderCocoa::setH264HardwareEncoderAllowed): |
| (WebCore::LibWebRTCProviderCocoa::createDecoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::createEncoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::setActive): |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: Renamed from Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.cpp. |
| (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame): |
| (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame): |
| * testing/Internals.cpp: Removed commented out include. |
| |
| 2018-03-22 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| Unreviewed, fix format string warnings in service worker code |
| |
| On Linux x86_64, uint64_t is unsigned long, not unsigned long long. |
| |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::removeRegistration): |
| (WebCore::ServiceWorkerContainer::updateRegistration): |
| (WebCore::ServiceWorkerContainer::jobFailedWithException): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult): |
| (WebCore::ServiceWorkerContainer::startScriptFetchForJob): |
| (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript): |
| (WebCore::ServiceWorkerContainer::jobFailedLoadingScript): |
| |
| 2018-03-22 Daniel Bates <dabates@apple.com> |
| |
| Expose SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest() as WebKit SPI |
| https://bugs.webkit.org/show_bug.cgi?id=183907 |
| <rdar://problem/38759127> |
| |
| Reviewed by Alex Christensen. |
| |
| Exports SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest() so that we can use it from WebKit. |
| |
| * platform/SchemeRegistry.h: |
| |
| 2018-03-22 Daniel Bates <dabates@apple.com> |
| |
| CSS mask images should be retrieved using potentially CORS-enabled fetch |
| https://bugs.webkit.org/show_bug.cgi?id=179983 |
| <rdar://problem/35678149> |
| |
| Reviewed by Brent Fulgham. |
| |
| As per <https://drafts.fxtf.org/css-masking-1/#priv-sec> (Editor's Draft, 23 December 2017) |
| we should fetch CSS mask images using a potentially CORS-enabled fetch. |
| |
| Both cross-origin CSS shape-outside images and CSS mask images may be sensitive to timing |
| attacks that can be used to reveal their pixel data when retrieved without regard to CORS. |
| For the same reason that we fetch CSS shape-outside images using a potentially CORS-enabled |
| fetch we should fetch CSS mask the same way. This also makes the behavior of WebKit more |
| closely align with the behavior in the spec. |
| |
| Test: http/tests/security/css-mask-image.html |
| |
| * style/StylePendingResources.cpp: Substitute LoadPolicy::NoCORS and LoadPolicy::Anonymous for |
| LoadPolicy::Normal and LoadPolicy::ShapeOutside, respectively, to match the terminology used |
| in the HTML, CSS Shapes Module Level 1, and CSS Masking Module Level 1 specs. |
| (WebCore::Style::loadPendingImage): Ditto. |
| (WebCore::Style::loadPendingResources): Use load policy LoadPolicy::Anonymous when fetching |
| a mask image or shape-outside image. |
| |
| 2018-03-22 Zalan Bujtas <zalan@apple.com> |
| |
| [Simple line layout] Text with letter spacing is not positioned properly. |
| https://bugs.webkit.org/show_bug.cgi?id=183079 |
| <rdar://problem/38762569> |
| |
| Reviewed by Antti Koivisto. |
| |
| We need to recompute RenderText::m_canUseSimplifiedTextMeasuring when the font cascade changes |
| since we might not be able to use the fast path anymore. |
| |
| Test: fast/text/simple-line-layout-dynamic-letter-word-spacing.html |
| |
| * rendering/RenderText.cpp: |
| (WebCore::RenderText::styleDidChange): |
| |
| 2018-03-21 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Make imported/mozilla/css-animations/test_event-dispatch.html pass reliably |
| https://bugs.webkit.org/show_bug.cgi?id=183845 |
| |
| Reviewed by Dean Jackson. |
| |
| Finish the work to get DOM events for CSS Animations and CSS Transitions dispatching as specified. |
| |
| * animation/AnimationEffectReadOnly.cpp: Move timeEpsilon to be shared as part of WebAnimationUtilities.h since we now need it in |
| WebAnimation::timeToNextRequiredTick(). |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::updateCSSAnimationsForElement): We add a pre-emptive return clause when we know that the AnimationList |
| for previous and current styles are a match. |
| * animation/CSSTransition.cpp: |
| (WebCore::CSSTransition::matchesBackingAnimationAndStyles const): Ensure we have a valid effect before downcasting it. |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::initialize): We need to call pause() for declarative animations that aren't playing so that the animation's |
| playState is set correctly and the animation is not idle. |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::updateAnimationSchedule): We no longer need to pass the current time to timeToNextRequiredTick() since the method has |
| been reworked to use the animation's current time, which is based on the timeline's current time. |
| (WebCore::DocumentTimeline::updateAnimations): Avoid creating a copy when iterating over pending hardware animations. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): We should never generate new blending keyframes if the |
| old and new styles contain the same value, since there would be no transition between two equal values, and we should only look at whether the new |
| style value and the recorded target value differ to determine if new blending keyframes are necessary. |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::timeToNextRequiredTick const): We correct our scheduling code which was shown to be broken in several of the newly-imported |
| Mozilla tests. Any running animation is now scheduled to invalidate again on the next tick, and we use timeEpsilon from WebAnimationUtilities.h to |
| correctly check if we're right at the active threshold, when we also invalidate on the next tick. If our current time is negative, in other words |
| when the animation has not yet started, we schedule this animation's next tick to be the negative of that value. In all other cases, no invalidation |
| needs to be scheduled. |
| * animation/WebAnimation.h: We move updateFinishedState() to private since this method is not actually used outside of WebAnimation.cpp. |
| * animation/WebAnimationUtilities.h: Move timeEpsilon to be shared as part of WebAnimationUtilities.h. |
| |
| 2018-03-22 Tim Horton <timothy_horton@apple.com> |
| |
| Improve readability of WebCore's OTHER_LDFLAGS |
| https://bugs.webkit.org/show_bug.cgi?id=183909 |
| <rdar://problem/38760992> |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/FeatureDefines.xcconfig: |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-03-22 Tim Horton <timothy_horton@apple.com> |
| |
| Adopt USE(OPENGL[_ES]) in more places |
| https://bugs.webkit.org/show_bug.cgi?id=183882 |
| <rdar://problem/37912195> |
| |
| Reviewed by Dan Bernstein. |
| |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| (WebCore::hasMuxableGPU): |
| (WebCore::GraphicsContext3DManager::updateHighPerformanceState): |
| (WebCore::GraphicsContext3D::GraphicsContext3D): |
| (WebCore::GraphicsContext3D::~GraphicsContext3D): |
| (WebCore::GraphicsContext3D::makeContextCurrent): |
| (WebCore::GraphicsContext3D::checkGPUStatus): |
| (WebCore::GraphicsContext3D::texImageIOSurface2D): |
| * platform/graphics/cocoa/WebGLLayer.h: |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer initWithGraphicsContext3D:]): |
| (-[WebGLLayer copyImageSnapshotWithColorSpace:]): |
| (-[WebGLLayer display]): |
| * platform/graphics/ios/GraphicsContext3DIOS.h: |
| * platform/graphics/opengl/Extensions3DOpenGL.cpp: |
| (WebCore::Extensions3DOpenGL::blitFramebuffer): |
| (WebCore::Extensions3DOpenGL::createVertexArrayOES): |
| (WebCore::Extensions3DOpenGL::deleteVertexArrayOES): |
| (WebCore::Extensions3DOpenGL::isVertexArrayOES): |
| (WebCore::Extensions3DOpenGL::bindVertexArrayOES): |
| * platform/graphics/opengl/Extensions3DOpenGL.h: |
| * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp: |
| (WebCore::GraphicsContext3D::reshapeFBOs): |
| (WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary): |
| (WebCore::GraphicsContext3D::renderbufferStorage): |
| (WebCore::GraphicsContext3D::getIntegerv): |
| (WebCore::GraphicsContext3D::texImage2D): |
| (WebCore::GraphicsContext3D::depthRange): |
| (WebCore::GraphicsContext3D::clearDepth): |
| * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: |
| (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): |
| Make it a bit more clear which code is platform-dependent and which code is GL/GLES-dependent. |
| |
| 2018-03-22 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Make TextureMapperContextAttributes thread-specific |
| https://bugs.webkit.org/show_bug.cgi?id=183895 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Store the TextureMapperContextAttributes in a thread-specific manner. |
| The TextureMapperContextAttributes::get() method is now used to retrieve |
| a reference to that thread-specific object. If it's not been initialized |
| yet, then the current GL context is used for the initialization, as it |
| used to be done in the now-removed initialize() method. |
| |
| TextureMapperPlatformLayerBuffer::clone() method now doesn't need to |
| be passed a TextureMapperGL object, since the texture can be created |
| directly by calling BitmapTextureGL::create(), passing the |
| TextureMapperContextAttributes object that's retrieved from the |
| thread-specific storage. This further simplifies the |
| TextureMapperPlatformLayerProxy::Compositor interface, removing the |
| texmapGL() getter from it. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): |
| * platform/graphics/texmap/TextureMapperContextAttributes.cpp: |
| (WebCore::threadSpecificAttributes): |
| (WebCore::TextureMapperContextAttributes::get): |
| (WebCore::TextureMapperContextAttributes::initialize): Deleted. |
| * platform/graphics/texmap/TextureMapperContextAttributes.h: |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGL::TextureMapperGL): |
| * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: |
| (WebCore::TextureMapperPlatformLayerBuffer::clone): |
| * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: |
| * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: |
| (WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture): |
| * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h: |
| |
| 2018-03-22 Zalan Bujtas <zalan@apple.com> |
| |
| SVG root is skipped while marking percentage height descendants dirty. |
| https://bugs.webkit.org/show_bug.cgi?id=183877 |
| |
| Reviewed by Antti Koivisto. |
| |
| Calling continingBlock() to get to the correct container works as long as the ancestor inline element |
| renderers are wrapped in anonymous blocks (continuation for example). |
| |
| While the SVG root renderer is an inline renderer, it is not wrapped or normalized in any way, |
| so containingBlock() will elegantly skip it and return an SVG root ancestor. |
| dirtyForLayoutFromPercentageHeightDescendants calls containingBlock() to walk up |
| on the ancestor chain to mark elements dirty. This fails when there's an SVG subtree in the block chain. |
| This patch marks the SVG subtree chain dirty to ensure that layout will get to all the dirty leaf renderers |
| (note that the SVG subtree is supposed to have only statically positioned elements so parent == containing block). |
| |
| Covered by existing tests. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::dirtyForLayoutFromPercentageHeightDescendants): |
| |
| 2018-03-22 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] Build failure when ENABLE_VIDEO, ENABLE_WEB_AUDIO and ENABLE_XSLT are disabled |
| https://bugs.webkit.org/show_bug.cgi?id=183896 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| No new tests needed. |
| |
| * bindings/js/JSWebAnimationCustom.cpp: Add missing #include of Document.h |
| |
| 2018-03-21 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r229828): WebKit.NoHistoryItemScrollToFragment API test is failing on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=183886 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Since r229828, the FrameLoader needs to call FrameLoaderClient::didDecidePolicyForNavigationAction() |
| whenever a navigation policy decision is made. I added such a call r229828 to |
| FrameLoader::continueLoadAfterNavigationPolicy() but forgot to add one to |
| FrameLoader::continueFragmentScrollAfterNavigationPolicy(), which is the equivalent |
| for fragment navigations. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): |
| |
| 2018-03-21 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Disconnect the SVGPathSegList items from their SVGPathElement before rebuilding a new list |
| https://bugs.webkit.org/show_bug.cgi?id=183723 |
| <rdar://problem/38517871> |
| |
| Reviewed by Daniel Bates. |
| |
| When setting the "d" attribute directly on a path, we rebuild the list |
| of path segments held for creating the property tear off. The old path |
| segments need to get disconnected from the path element. We already do |
| that when a path segment is replaced or removed. |
| |
| Test: svg/dom/reuse-pathseg-after-changing-d.html |
| |
| * svg/SVGPathElement.cpp: |
| (WebCore::SVGPathElement::svgAttributeChanged): |
| * svg/SVGPathSegList.cpp: |
| (WebCore::SVGPathSegList::clear): SVGPathSegListValues::clearContextAndRoles() |
| will now be called from SVGPathSegListValues::clear() via SVGListProperty::clearValues(). |
| (WebCore::SVGPathSegList::replaceItem): |
| (WebCore::SVGPathSegList::removeItem): |
| (WebCore::SVGPathSegList::clearContextAndRoles): Deleted. |
| * svg/SVGPathSegList.h: SVGPathSegListValues::clearContextAndRoles() will |
| now be called from SVGPathSegListValues::clear() via SVGListProperty::initializeValues(). |
| * svg/SVGPathSegListValues.cpp: |
| (WebCore::SVGPathSegListValues::clearItemContextAndRole): |
| (WebCore::SVGPathSegListValues::clearContextAndRoles): |
| * svg/SVGPathSegListValues.h: |
| (WebCore::SVGPathSegListValues::operator=): |
| (WebCore::SVGPathSegListValues::clear): |
| |
| 2018-03-21 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure animationcancel and transitioncancel events are dispatched |
| https://bugs.webkit.org/show_bug.cgi?id=183864 |
| |
| Reviewed by Dean Jackson. |
| |
| In order to correctly dispatch animationcancel and transitioncancel events, we must call cancel() on CSSAnimation and CSSTransitions |
| objects that are removed while in a play or pause phase. Additionally, we cancel declarative animations that are moving from a valid |
| to a null timeline. Finally, when cancel() is called on a declarative animation, we record the timestamp and manually call |
| invalidateDOMEvents() passing that timestamp in to ensure that the right phase change is recorded and results in the queuing of |
| animationcancel and transitioncancel events. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Make sure we cancel all recorded CSS Animations when we newly get a |
| "display: none" style. We also call the new cancelOrRemoveDeclarativeAnimation() method, instead of removing animations outright, |
| for all animations that previously existed but are no longer listed in the current style. |
| (WebCore::AnimationTimeline::updateCSSTransitionsForElement): Like in updateCSSAnimationsForElement(), we cancel all recorded CSS |
| Transitions when we newly get a "display: none" style. We now use the refactored removeDeclarativeAnimation() method to remove an |
| a transition for a property that was already transitioned in the previous style but has a new backing Animation object. Finally, |
| like in updateCSSAnimationsForElement(), we call the new cancelOrRemoveDeclarativeAnimation() method, instead of removing transitions |
| outright, for all transitions that previously existed but are no longer listed in the current style. |
| (WebCore::AnimationTimeline::removeDeclarativeAnimation): Refactor code into this new method to remove a declarative animation. |
| (WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation): Cancels a DeclarativeAnimation if it's active or removes it right away. |
| * animation/AnimationTimeline.h: |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::setTimeline): If we're moving from a valid timeline to a null timeline, call cancel() on this animation |
| such that an animationcancel or transitioncancel event can be dispatched. |
| (WebCore::DeclarativeAnimation::cancel): Cancelations require the computation of the time at which a declarative animation was canceled, |
| so we record the animation's active time as it's canceled and manually call invalidateDOMEvents() with that time after the general cancel() |
| code has run. |
| (WebCore::DeclarativeAnimation::invalidateDOMEvents): Accept an explicit timestamp for cancel events. |
| * animation/DeclarativeAnimation.h: |
| * animation/WebAnimation.h: |
| |
| 2018-03-21 Chris Dumez <cdumez@apple.com> |
| |
| ScrollViewInsetTests.RestoreInitialContentOffsetAfterCrash API test is failing with async delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183787 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| * loader/FrameLoaderClient.h: |
| |
| 2018-03-21 Eric Carlson <eric.carlson@apple.com> |
| |
| Clean up platform VideoFullscreenLayerManager |
| https://bugs.webkit.org/show_bug.cgi?id=183859 |
| <rdar://problem/38715419> |
| |
| Reviewed by Jer Noble. |
| |
| No new tests, no functional change. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/graphics/VideoFullscreenLayerManager.h: Copied from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h. |
| (WebCore::VideoFullscreenLayerManager::~VideoFullscreenLayerManager): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::platformLayer const): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoLayerGravity): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::requiresTextTrackRepresentation const): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::syncTextTrackBounds): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::platformLayer const): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenFrame): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requiresTextTrackRepresentation const): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::syncTextTrackBounds): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer const): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame): |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h. |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm. |
| (-[WebVideoContainerLayer setBounds:]): |
| (-[WebVideoContainerLayer setPosition:]): |
| (WebCore::VideoFullscreenLayerManagerObjC::VideoFullscreenLayerManagerObjC): |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer): |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer): |
| (WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame): |
| (WebCore::VideoFullscreenLayerManagerObjC::didDestroyVideoLayer): |
| (WebCore::VideoFullscreenLayerManagerObjC::requiresTextTrackRepresentation const): |
| (WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds): |
| (WebCore::VideoFullscreenLayerManagerObjC::setTextTrackRepresentation): |
| |
| 2018-03-21 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Dispatch DOM events for CSS Transitions and CSS Animations implemented as Web Animations |
| https://bugs.webkit.org/show_bug.cgi?id=183781 |
| |
| Reviewed by Dean Jackson. |
| |
| Now that we've implemented CSS Animations and CSS Transitions as Web Animations (webkit.org/b/183504) we can dispatch DOM events |
| for targets of DeclarativeAnimation objects. To do that, we add a new invalidateDOMEvents() method on DeclarativeAnimations which |
| is called when the timer scheduled after the timing model has been invalidated fires in DocumentTimeline::performInvalidationTask(). |
| When we check for DOM events to dispatch, we look at the last recorded phase and iteration and determine whether the state of the |
| animation has changed. We use a GenericEventQueue to enqueue the events such that they are dispatched asynchronously at a moment |
| when it is safe to evaluate script. |
| |
| * animation/AnimationEffectReadOnly.h: Make currentIteration() public since we now need it in DeclarativeAnimation::invalidateDOMEvents(). |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::create): Pass the animation target to the constructor instead of its document. |
| (WebCore::CSSAnimation::CSSAnimation): Pass the animation target to the superclass instead of its document. |
| * animation/CSSAnimation.h: |
| * animation/CSSTransition.cpp: |
| (WebCore::CSSTransition::create): Pass the animation target to the constructor instead of its document. |
| (WebCore::CSSTransition::CSSTransition): Pass the animation target to the superclass instead of its document. |
| * animation/CSSTransition.h: |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::DeclarativeAnimation): Expect an Element instead of a Document and use that element as the target of the |
| GenericEventQueue that we initialize. We also register this element as our m_target. |
| (WebCore::DeclarativeAnimation::~DeclarativeAnimation): Close the GenericEventQueue member upon destruction. |
| (WebCore::DeclarativeAnimation::initialize): We need to call pause() for declarative animations that aren't playing so that the animation's |
| playState is set correctly and the animation is not idle. |
| (WebCore::DeclarativeAnimation::phaseWithoutEffect const): Because we may need to get an animation's current phase in invalidateDOMEvents() |
| after an animation's effect has been removed, we provide an alternate way to compute the phase just by looking at the animation's current time. |
| (WebCore::DeclarativeAnimation::invalidateDOMEvents): Based on the previous and current pending state, iteration and phase, we enqueue animation |
| and transition DOM events as specified by the CSS Animations Level 2 and CSS Transitions Level 2 specifications. |
| (WebCore::DeclarativeAnimation::enqueueDOMEvent): Enqueue an event on the GenericEventQueue based on the animation type. |
| * animation/DeclarativeAnimation.h: |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::performInvalidationTask): We call invalidateDOMEvents() on all declarative animations registered with this timeline |
| now that the timing model has been invalidated. |
| * dom/EventNames.h: Add the names of newly-implemented events (animationcancel, transitioncancel, transitionrun and transitionstart). |
| * dom/GlobalEventHandlers.idl: Add new attribute-based event handlers for the newly-implemented events. |
| * html/HTMLAttributeNames.in: Add new attribute-based event handlers for the newly-implemented events. |
| * html/HTMLElement.cpp: |
| (WebCore::HTMLElement::createEventHandlerNameMap): Add new attribute-based event handlers for the newly-implemented events. |
| |
| 2018-03-21 Per Arne Vollan <pvollan@apple.com> |
| |
| Compile error when not using IOSurface canvas backing store. |
| https://bugs.webkit.org/show_bug.cgi?id=183855 |
| |
| Reviewed by Brent Fulgham. |
| |
| The method IOSurface::createFromImageBuffer is only referenced when IOSurface |
| is used as canvas backing store. |
| |
| * platform/graphics/cocoa/IOSurface.h: |
| * platform/graphics/cocoa/IOSurface.mm: |
| |
| 2018-03-21 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer |
| https://bugs.webkit.org/show_bug.cgi?id=175376 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Follow the GraphicsLayerCA class and track rectangles in need of display |
| in a Vector object. In case the whole layer needs updating, it's marked |
| separately, and further rects are ignored. |
| |
| During layer flush, all the rects are used to invalidate the backing |
| store, or a single layer-sized rect is used in case the whole layer has |
| to be updated. We can also bail early from updateContentBuffers() if |
| there are no dirty rects recorded and there's no pending visible rect |
| adjustment. |
| |
| At the end of updateContentBuffers() we now test for an existing |
| previous backing store before inquiring the backing store if the visible |
| area is already covered, enabling deletion of this backing store. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::setNeedsDisplay): |
| (WebCore::CoordinatedGraphicsLayer::setNeedsDisplayInRect): |
| (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| |
| 2018-03-21 Carlos Alberto Lopez Perez <clopez@igalia.com> |
| |
| [WPE] Build failure with ENABLE_VIDEO=OFF when GStreamer is not available |
| https://bugs.webkit.org/show_bug.cgi?id=183811 |
| |
| Reviewed by Philippe Normand. |
| |
| Add build guards for USE_GSTREAMER. |
| |
| No new tests, it is a build fix. |
| |
| * platform/graphics/gstreamer/GStreamerUtilities.h: |
| |
| 2018-03-21 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Draw Cairo patterns with cairo_paint_with_alpha() |
| https://bugs.webkit.org/show_bug.cgi?id=183774 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| In the drawPatternToCairoContext() helper in CairoOperations.cpp source |
| file, always clip the painting region to the specified rectangle and |
| then use cairo_paint_with_alpha() to paint the passed-in pattern object, |
| not relaying rasterization to cairo_fill() when using opaque alpha. We |
| still clamp the alpha value to the 0.0 - 1.0 range. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawPatternToCairoContext): |
| |
| 2018-03-21 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Have TextureMapperLayer::applyAnimationsRecursively() return running animation status |
| https://bugs.webkit.org/show_bug.cgi?id=183771 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| TextureMapperLayer::applyAnimationsRecursively() should return true when |
| the TextureMapperLayer tree has currently-running animations that |
| require continuous scene update. |
| |
| TextureMapperAnimation::ApplicationResult gains the hasRunningAnimation |
| member that's set to true if any of the applied animations are still in |
| playing state. That information is then returned in syncAnimations(), |
| and the result is accumulated in the top applyAnimationsRecursively() |
| call and returned there to the caller. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| (WebCore::TextureMapperAnimation::apply): |
| * platform/graphics/texmap/TextureMapperAnimation.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::applyAnimationsRecursively): |
| (WebCore::TextureMapperLayer::syncAnimations): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-21 Zan Dobersek <zdobersek@igalia.com> |
| |
| Use-after-move in SWContextManager::terminateWorker() with Linux x86_64 calling convention |
| https://bugs.webkit.org/show_bug.cgi?id=183783 |
| |
| Reviewed by Chris Dumez. |
| |
| In SWContextManager::terminateWorker(), some calling conventions can |
| end up moving the ServiceWorkerThreadProxy RefPtr into the lambda struct |
| before that proxy's thread (on which the lambda is bound to execute) is |
| retrieved. |
| |
| Avoid this by taking a reference to the thread in a separate earlier |
| expression, before the RefPtr is moved into the lambda in the following |
| one. |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::terminateWorker): |
| |
| 2018-03-21 Timothy Horton <timothy_horton@apple.com> |
| |
| Fix the build |
| |
| * platform/network/cf/FormDataStreamCFNet.cpp: |
| |
| 2018-03-20 Tim Horton <timothy_horton@apple.com> |
| |
| Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO |
| https://bugs.webkit.org/show_bug.cgi?id=183803 |
| <rdar://problem/38690487> |
| |
| Reviewed by Sam Weinig. |
| |
| * platform/audio/ios/MediaSessionManagerIOS.mm: |
| (WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring): |
| (WebCore::MediaSessionManageriOS::updateNowPlayingInfo): |
| (-[WebMediaSessionHelper initWithCallback:]): |
| (-[WebMediaSessionHelper dealloc]): |
| (-[WebMediaSessionHelper hasWirelessTargetsAvailable]): |
| * platform/cocoa/CoreVideoSoftLink.cpp: |
| * platform/cocoa/CoreVideoSoftLink.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::hasAvailableVideoFrame const): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| (WebCore::MediaSampleAVFObjC::getRGBAImageData const): |
| * platform/graphics/cv/PixelBufferConformerCV.cpp: |
| * platform/graphics/cv/PixelBufferConformerCV.h: |
| * platform/graphics/cv/TextureCacheCV.h: |
| * platform/graphics/cv/TextureCacheCV.mm: |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| * platform/graphics/cv/VideoTextureCopierCV.h: |
| Make it possible to disable our dependency on MediaPlayer and CoreVideo. |
| |
| 2018-03-20 Tim Horton <timothy_horton@apple.com> |
| |
| Enable the minimal simulator feature flag when appropriate |
| https://bugs.webkit.org/show_bug.cgi?id=183807 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-03-19 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Expose content attributes on _WKLinkIconParameters |
| https://bugs.webkit.org/show_bug.cgi?id=183768 |
| |
| Reviewed by Alex Christensen. |
| |
| Collect a vector of content attributes upon finding touch and fav-icons in order to expose it in a WebKit API. |
| |
| Tests: IconLoading.DefaultFavicon |
| |
| * html/LinkIconCollector.cpp: |
| (WebCore::LinkIconCollector::iconsOfTypes): Collect attributes. |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::startIconLoading): Use an empty vector for /favicon.ico. |
| * platform/LinkIcon.h: |
| (WebCore::LinkIcon::encode const): Encode the vector of content attributes. |
| (WebCore::LinkIcon::decode): Ditto for decoding. |
| |
| 2018-03-20 Zalan Bujtas <zalan@apple.com> |
| |
| RenderTreeNeedsLayoutChecker fails with absolutely positioned svg and <use> |
| https://bugs.webkit.org/show_bug.cgi?id=183718 |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch ensures after resolving the style for an SVG element with a corresponding element (<use>), |
| we adjust this style for the cloned SVG element too. |
| |
| Test: svg/in-html/path-with-absolute-positioned-svg-and-use-crash.html |
| |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::adjustSVGElementStyle): |
| (WebCore::StyleResolver::adjustRenderStyle): |
| * css/StyleResolver.h: |
| * svg/SVGElement.cpp: |
| (WebCore::SVGElement::resolveCustomStyle): |
| |
| 2018-03-20 Brady Eidson <beidson@apple.com> |
| |
| First piece of process swapping on navigation. |
| https://bugs.webkit.org/show_bug.cgi?id=183665 |
| |
| Reviewed by Andy Estes. |
| |
| Covered by API test(s) |
| |
| This patch: |
| - A new PolicyAction::Suspend for future use in this feature |
| - Makes sure that loads triggered as part of a process swap do *not* re-consult the policy delegate |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::continueAfterContentPolicy): |
| |
| * loader/FrameLoadRequest.h: |
| (WebCore::FrameLoadRequest::setShouldCheckNavigationPolicy): |
| (WebCore::FrameLoadRequest::shouldCheckNavigationPolicy const): |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| * loader/FrameLoader.h: |
| |
| * loader/FrameLoaderTypes.h: Add a new Policy type "Suspend" to be used in the future |
| by the process-swap-on-navigation mechanism. |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| (WebCore::PolicyChecker::checkNewWindowPolicy): |
| |
| 2018-03-20 Chris Dumez <cdumez@apple.com> |
| |
| QuickLook.NavigationDelegate API test is failing on iOS with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183791 |
| |
| Reviewed by Alex Christensen. |
| |
| Update PreviewLoader to not send data (or call finishFinishLoading) until |
| the resource response has been processed. |
| |
| * loader/ios/PreviewLoader.mm: |
| (-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): |
| (-[WebPreviewLoader connection:didReceiveData:lengthReceived:]): |
| (-[WebPreviewLoader connectionDidFinishLoading:]): |
| |
| 2018-03-20 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Update the timing model when pending tasks schedule changes |
| https://bugs.webkit.org/show_bug.cgi?id=183785 |
| |
| Reviewed by Dean Jackson. |
| |
| Changing the time at which a pending play or pause task is scheduled changes the pending |
| state of the animation and thus should notify that the timing model has changed and invalidate |
| the effect. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setTimeToRunPendingPlayTask): |
| (WebCore::WebAnimation::setTimeToRunPendingPauseTask): |
| (WebCore::WebAnimation::updatePendingTasks): |
| |
| 2018-03-20 Tim Horton <timothy_horton@apple.com> |
| |
| Add and adopt WK_PLATFORM_NAME and adjust default feature defines |
| https://bugs.webkit.org/show_bug.cgi?id=183758 |
| <rdar://problem/38017644> |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/FeatureDefines.xcconfig: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-03-19 Tim Horton <timothy_horton@apple.com> |
| |
| Apply some SDK checks in LocalDefaultSystemAppearance |
| https://bugs.webkit.org/show_bug.cgi?id=183767 |
| <rdar://problem/38649611> |
| |
| Reviewed by Zalan Bujtas. |
| |
| * platform/mac/LocalDefaultSystemAppearance.h: |
| * platform/mac/LocalDefaultSystemAppearance.mm: |
| (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance): |
| (WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance): |
| |
| 2018-03-19 Chris Dumez <cdumez@apple.com> |
| |
| Have one service worker process per security origin |
| https://bugs.webkit.org/show_bug.cgi?id=183600 |
| <rdar://problem/35280128> |
| |
| Reviewed by Brady Eidson. |
| |
| Split service workers from different origins into their own processes |
| for security reasons. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistrationFromStore): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::tryInstallContextData): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| (WebCore::SWServer::installContextData): |
| (WebCore::SWServer::runServiceWorkerIfNecessary): |
| (WebCore::SWServer::markAllWorkersAsTerminated): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerToContextConnection.cpp: |
| (WebCore::SWServerToContextConnection::SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::~SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::connectionForOrigin): |
| * workers/service/server/SWServerToContextConnection.h: |
| (WebCore::SWServerToContextConnection::origin): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::SWServerWorker): |
| (WebCore::SWServerWorker::securityOrigin const): |
| (WebCore::SWServerWorker::contextConnection): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-03-19 Megan Gardner <megan_gardner@apple.com> |
| |
| Have select element respect current appearance |
| https://bugs.webkit.org/show_bug.cgi?id=183753 |
| |
| Reviewed by Tim Horton. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| Have the menu lists/select elements follow the system colors. |
| |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::adjustMenuListStyle const): |
| |
| 2018-03-19 Nan Wang <n_wang@apple.com> |
| |
| AX: embedded attachments do not work correctly with text marker APIs on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=183751 |
| |
| Reviewed by Chris Fleizach. |
| |
| In WebKit1, embedded attachments are not working well with text marker APIs. |
| We should use the corresponding attachment view in the following cases: |
| 1. Hit testing on an attachment object. |
| 2. Getting the attachment object at a text marker position. |
| 3. Asking for the associated element with NSAccessibilityAttachmentTextAttribute. |
| |
| Not able to construct a layout test because it relies on embedded attachments. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (AXAttributeStringSetElement): |
| (-[WebAccessibilityObjectWrapper accessibilityHitTest:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| |
| 2018-03-19 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, another quick fix for r229699 |
| |
| Restricts ENABLE_WEB_AUTHN to only macOS and iOS. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-03-19 Daniel Bates <dabates@apple.com> |
| |
| Fix case of Strong Password localized string |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::autoFillStrongPasswordLabel): |
| |
| 2018-03-19 Chris Dumez <cdumez@apple.com> |
| |
| WebKit.WebsitePoliciesAutoplayQuirks API test times out with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183702 |
| <rdar://problem/38566060> |
| |
| Reviewed by Alex Christensen. |
| |
| The issue is that the test calls loadHTMLString then loadRequest right after, without |
| waiting for the first load to complete first. loadHTMLString is special as it relies |
| on substitute data and which schedules a timer to commit the data. When doing the |
| navigation policy check for the following loadRequest(), the substitute data timer |
| would fire and commit its data and load. This would in turn cancel the pending |
| navigation policy check for the loadRequest(). |
| |
| With sync policy delegates, this is not an issue because we take care of stopping |
| all loaders when receiving the policy decision, which happens synchronously. However, |
| when the policy decision happens asynchronously, the pending substitute data load |
| does not get cancelled in time and it gets committed. |
| |
| To address the issue, we now cancel any pending provisional load before doing the |
| navigation policy check. |
| |
| Test: fast/loader/inner-iframe-loads-data-url-into-parent-on-unload-crash-async-delegate.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::clearProvisionalLoadForPolicyCheck): |
| * loader/FrameLoader.h: |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| Cancel any pending provisional load before starting the navigation policy check. This call |
| needs to be here rather than in the call site of policyChecker().checkNavigationPolicy() |
| because there is code in PolicyChecker::checkNavigationPolicy() which relies on |
| FrameLoader::activeDocumentLoader(). |
| Also, we only cancel the provisional load if there is a policy document loader. In some |
| rare cases (when we receive a redirect after navigation policy has been decided for the |
| initial request), the provisional document loader needs to receive navigation policy |
| decisions so we cannot clear the provisional document loader in such case. |
| |
| 2018-03-19 Eric Carlson <eric.carlson@apple.com> |
| |
| [Extra zoom mode] Require fullscreen for video playback |
| https://bugs.webkit.org/show_bug.cgi?id=183742 |
| <rdar://problem/38235862> |
| |
| Reviewed by Jer Noble. |
| |
| * Modules/modern-media-controls/media/playback-support.js: |
| (PlaybackSupport.prototype.syncControl): Always show the play button. |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::updatePlayState): Return immediately if playback requires fullscreen |
| (WebCore::HTMLMediaElement::didBecomeFullscreenElement): Call updatePlayState in case |
| playback is pending. |
| * html/HTMLMediaElement.h: |
| * platform/cocoa/VideoFullscreenModel.h: |
| (WebCore::VideoFullscreenModel::presentingViewController): New. |
| (WebCore::VideoFullscreenModel::createVideoFullscreenViewController): New. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenMode): |
| * platform/ios/PlaybackSessionInterfaceAVKit.mm: |
| (WebCore::PlaybackSessionInterfaceAVKit::seekableRangesChanged): |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: Wrap AVPlayerLayerView so we can change its |
| behavior. |
| (WebAVPlayerLayerView_playerLayer): |
| (WebAVPlayerLayerView_videoView): |
| (allocWebAVPlayerLayerViewInstance): |
| (-[WebAVPlayerViewController initWithFullscreenInterface:]): |
| (-[WebAVPlayerViewController playerViewControllerShouldHandleDoneButtonTap:]): |
| (-[WebAVPlayerViewController enterFullScreenAnimated:completionHandler:]): |
| (-[WebAVPlayerViewController exitFullScreenAnimated:completionHandler:]): |
| (-[WebAVPlayerViewController NO_RETURN_DUE_TO_ASSERT]): |
| (-[WebAVPlayerViewController isPictureInPicturePossible]): |
| (-[WebAVPlayerViewController isPictureInPictureActive]): |
| (-[WebAVPlayerViewController isPictureInPictureSuspended]): |
| (-[WebAVPlayerViewController pictureInPictureActive]): |
| (-[WebAVPlayerViewController pictureInPictureWasStartedWhenEnteringBackground]): |
| (-[WebAVPlayerViewController view]): |
| (-[WebAVPlayerViewController showsPlaybackControls]): |
| (-[WebAVPlayerViewController setShowsPlaybackControls:]): |
| (-[WebAVPlayerViewController setAllowsPictureInPicturePlayback:]): |
| (-[WebAVPlayerViewController setDelegate:]): |
| (-[WebAVPlayerViewController setPlayerController:]): |
| (-[WebAVPlayerViewController avPlayerViewController]): |
| (-[WebAVPlayerViewController removeFromParentViewController]): |
| (VideoFullscreenInterfaceAVKit::setupFullscreen): |
| (fallbackViewController): |
| (VideoFullscreenInterfaceAVKit::presentingViewController): |
| (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): |
| (VideoFullscreenInterfaceAVKit::doSetup): |
| (WebCore::supportsPictureInPicture): |
| |
| 2018-03-19 Per Arne Vollan <pvollan@apple.com> |
| |
| When the WebContent process is blocked from accessing the WindowServer, the call CVDisplayLinkCreateWithCGDisplay will fail. |
| https://bugs.webkit.org/show_bug.cgi?id=183604 |
| <rdar://problem/38305109> |
| |
| Reviewed by Brent Fulgham. |
| |
| The call to CVDisplayLinkCreateWithCGDisplay can instead be made in the UIProcess. Notify the WebContent process |
| about display updates by sending a message from the UIProcess on each screen update. This patch adds an extra |
| IPC step when notifying the WebContent process about display updates. However, the MotionMark benchmark shows no |
| performance regression when running it with this patch. A possible explanation for this is that the high priority |
| display link thread is now running in the UIProcess instead of the WebContent process, which means there will be |
| more available CPU resources for the WebContent process. A run loop observer is added to make sure that only one |
| display callback (for each display observer) is executed in a single iteration of the run loop. This will make |
| sure we are not filling the IPC message queue with unhandled display link messages. |
| |
| No new tests, covered by existing tests. |
| |
| * platform/graphics/DisplayRefreshMonitor.h: |
| (WebCore::DisplayRefreshMonitor::displayLinkFired): |
| * platform/graphics/DisplayRefreshMonitorManager.cpp: |
| (WebCore::DisplayRefreshMonitorManager::displayWasUpdated): |
| * platform/graphics/DisplayRefreshMonitorManager.h: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.h: |
| |
| 2018-03-19 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure local appearance actually mirrors the app's appearance |
| https://bugs.webkit.org/show_bug.cgi?id=183743 |
| |
| Reviewed by Tim Horton. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| Current appearance isn't always accurate by default and needs to be set manually. |
| |
| * platform/mac/LocalDefaultSystemAppearance.mm: |
| (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance): |
| |
| 2018-03-19 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed GCC 4.9 build-fix after r229672. |
| |
| * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp: |
| (Nicosia::createCommand): Don't depend on implicit conversion of the |
| returning std::unique_ptr<> object, and instead only wrap the |
| heap-allocated PaintingOperation-derived in a std::unique_ptr<> at the |
| point of return. |
| |
| 2018-03-18 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229689. |
| https://bugs.webkit.org/show_bug.cgi?id=183735 |
| |
| Causes fast/loader/inner-iframe-loads-data-url-into-parent-on- |
| unload-crash.html to fail with async delegates (Requested by |
| cdumez_ on #webkit). |
| |
| Reverted changeset: |
| |
| "WebKit.WebsitePoliciesAutoplayQuirks API test times out with |
| async policy delegates" |
| https://bugs.webkit.org/show_bug.cgi?id=183702 |
| https://trac.webkit.org/changeset/229689 |
| |
| 2018-03-17 Tim Horton <timothy_horton@apple.com> |
| |
| Correct redefined fnfErr type |
| https://bugs.webkit.org/show_bug.cgi?id=183728 |
| <rdar://problem/38590063> |
| |
| Reviewed by Dan Bernstein. |
| |
| * platform/network/cf/FormDataStreamCFNet.cpp: |
| CFStreamError's error parameter takes a SInt32, not an int. |
| Make sure our redefinition has a compatible type. |
| |
| 2018-03-17 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement authenticatorMakeCredential |
| https://bugs.webkit.org/show_bug.cgi?id=183527 |
| <rdar://problem/35275886> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch does the following few things: |
| 1) It implements the authenticatorMakeCredential logic from the spec: https://www.w3.org/TR/webauthn/#op-make-cred. |
| 2) It tweaks enocding and deocding of PublicKeyCredentialCreationOptions between UIProccess and WebProcess. |
| 3) It soft links LocalAuthentication.Framework to WebCore, which was linked to WebKit. |
| 4) It creates SPI header for DeviceIdentity.Framework, and provides stubs to link it to WebCore. |
| |
| Here is a detailed explanantion of 1): |
| 1. A helper class called LocalAuthenticator is crafted to represent Apple platform attached authenticator, i.e. |
| the devices themselves. All operations are currently restricted to iOS at this moment as macOS lacks attestation |
| support. |
| 2. To do testing, this helper class is then moved from WebKit to WebCore even though all operations can only happens |
| in the UIProcess. We currently lack the ability to pretend a https environment in TestWebKitAPI which is required by |
| the WebAuthN API, and thus it is moved to WebCore to perform unit tesing flavor API tests. This is not enough as it |
| can't test message exchange between the UI and Web processes. We will address this in a subsequent patch. |
| 3. More on testing: The attestation process is abstracted into a protected method such that the testing enviroment can |
| override it with self attestation as network access is restricted in the WebKit testing enviroment. Also, swizzlers of |
| LocalAuthentication API are provided to override the behavoir of LAContext. |
| 4. More on testing: The actual Apple attestation can only happen in real device and with network access, therefore |
| it can only be covered by manual tests at this moment. |
| 5. Back to LocalAuthenticator, it currently has two public methods: |
| 5.1. makeCredential(): This method is the one does all the magic. |
| + It first checks some parameters. |
| + It then invokes LAContext to get user consent. |
| + It then talks to Apple Attestation Privacy CA to do attestations. |
| + It then stores necessary information into the Keychain. |
| + Finally it generates the attestation object. |
| 5.2 isAvailable(): |
| To check if a LocalAuthenticator is available or not. |
| 6. Even though files are of .mm format, they are written in a way that mixes NS, CF and C++ types. Here is the rule: |
| 6.1 Use CF type only if it is requested by APIs. |
| 6.2 Use NS type to manipulate all Objc objects. |
| 6.3 Use C++ otherwise. |
| |
| Covered by API tests. |
| |
| * Configurations/WebCore.xcconfig: |
| * Modules/credentialmanagement/CredentialsMessenger.cpp: |
| (WebCore::getIdFromAttestationObject): Deleted. |
| Decoding attestation object is tedious. UIProcess will instead return credential ID and attestation object |
| at the same time. Therefore, this method is removed. |
| * Modules/credentialmanagement/CredentialsMessenger.h: |
| (WebCore::CreationReturnBundle::CreationReturnBundle): Deleted. |
| (WebCore::AssertionReturnBundle::AssertionReturnBundle): Deleted. |
| * Modules/webauthn/COSEConstants.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialType.h. |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: |
| (WebCore::PublicKeyCredentialCreationOptions::isolatedPartialCopyPtr const): |
| (WebCore::PublicKeyCredentialCreationOptions::Parameters::encode const): |
| (WebCore::PublicKeyCredentialCreationOptions::Parameters::decode): |
| (WebCore::PublicKeyCredentialCreationOptions::encode const): |
| (WebCore::PublicKeyCredentialCreationOptions::decode): |
| * Modules/webauthn/PublicKeyCredentialDescriptor.h: |
| (WebCore::PublicKeyCredentialDescriptor::encode const): |
| (WebCore::PublicKeyCredentialDescriptor::decode): |
| * Modules/webauthn/PublicKeyCredentialType.h: |
| * Modules/webauthn/cocoa/LocalAuthenticator.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h. |
| * Modules/webauthn/cocoa/LocalAuthenticator.mm: Added. |
| (WebCore::LocalAuthenticatorInternal::freePtrs): |
| (WebCore::LocalAuthenticator::makeCredential const): |
| (WebCore::LocalAuthenticator::isAvailable const): |
| (WebCore::LocalAuthenticator::issueClientCertificate const): |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/cocoa/LocalAuthenticationSoftLink.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialType.h. |
| * platform/cocoa/LocalAuthenticationSoftLink.mm: Added. |
| * testing/MockCredentialsMessenger.cpp: |
| (WebCore::MockCredentialsMessenger::setCreationReturnBundle): |
| (WebCore::MockCredentialsMessenger::makeCredential): |
| (WebCore::MockCredentialsMessenger::makeCredentialReply): |
| (WebCore::MockCredentialsMessenger::setAttestationObject): Deleted. |
| * testing/MockCredentialsMessenger.h: |
| * testing/MockCredentialsMessenger.idl: |
| |
| 2018-03-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Correct debug assertion in Range::borderAndTextRects |
| https://bugs.webkit.org/show_bug.cgi?id=183710 |
| <rdar://problem/38466976> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| A debug assertion will fire if Range::borderAndTextRects is asked to evaluate a set of selected elements, where one of the elements does not have a parent. |
| |
| We should consider a nullptr parent as satisfying the condition of a parent not being present in the selection set. |
| |
| Tests: fast/dom/range/range-selection-empty-body.html |
| |
| * dom/Range.cpp: |
| (WebCore::Range::borderAndTextRects const): |
| |
| 2018-03-15 Filip Pizlo <fpizlo@apple.com> |
| |
| Put the DOM in IsoHeaps |
| https://bugs.webkit.org/show_bug.cgi?id=183546 |
| |
| Reviewed by Daniel Bates. |
| |
| No new tests because no change in behavior. |
| |
| This puts all descendants of WebCore::Node in isoheaps, so that UAFs on the DOM cannot be |
| used for RCE attacks. This probably also makes it harder to use UAFs for UXSS, since it means |
| that DOM UAFs cannot be used for universal read gadgets. |
| |
| This looks neutral on Speedometer and membuster, though I did have one round of testing |
| that led me to believe that membuster was regressed - I just wasn't able to reproduce that |
| result on subsequent testing. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * dom/Attr.cpp: |
| * dom/Attr.h: |
| * dom/CDATASection.cpp: |
| * dom/CDATASection.h: |
| * dom/CharacterData.cpp: |
| * dom/CharacterData.h: |
| * dom/Comment.cpp: |
| * dom/Comment.h: |
| * dom/ContainerNode.cpp: |
| * dom/ContainerNode.h: |
| * dom/Document.cpp: |
| * dom/Document.h: |
| * dom/DocumentFragment.cpp: |
| * dom/DocumentFragment.h: |
| * dom/DocumentType.cpp: |
| * dom/DocumentType.h: |
| * dom/Node.cpp: |
| * dom/Node.h: |
| * dom/ProcessingInstruction.cpp: |
| * dom/ProcessingInstruction.h: |
| * dom/PseudoElement.cpp: |
| * dom/PseudoElement.h: |
| * dom/ShadowRoot.cpp: |
| * dom/ShadowRoot.h: |
| * dom/StyledElement.cpp: |
| * dom/StyledElement.h: |
| * dom/TemplateContentDocumentFragment.cpp: Added. |
| * dom/TemplateContentDocumentFragment.h: |
| * dom/Text.cpp: |
| * dom/Text.h: |
| * dom/XMLDocument.cpp: Added. |
| * dom/XMLDocument.h: |
| * html/FTPDirectoryDocument.cpp: |
| * html/FTPDirectoryDocument.h: |
| * html/FileInputType.cpp: |
| * html/HTMLAnchorElement.cpp: |
| * html/HTMLAnchorElement.h: |
| * html/HTMLAppletElement.cpp: |
| * html/HTMLAppletElement.h: |
| * html/HTMLAreaElement.cpp: |
| * html/HTMLAreaElement.h: |
| * html/HTMLAttachmentElement.cpp: |
| * html/HTMLAttachmentElement.h: |
| * html/HTMLBDIElement.cpp: Added. |
| * html/HTMLBDIElement.h: |
| * html/HTMLBRElement.cpp: |
| * html/HTMLBRElement.h: |
| * html/HTMLBaseElement.cpp: |
| * html/HTMLBaseElement.h: |
| * html/HTMLBodyElement.cpp: |
| * html/HTMLBodyElement.h: |
| * html/HTMLButtonElement.cpp: |
| * html/HTMLButtonElement.h: |
| * html/HTMLCanvasElement.cpp: |
| * html/HTMLCanvasElement.h: |
| * html/HTMLDListElement.cpp: |
| * html/HTMLDListElement.h: |
| * html/HTMLDataElement.cpp: |
| * html/HTMLDataElement.h: |
| * html/HTMLDataListElement.cpp: |
| * html/HTMLDataListElement.h: |
| * html/HTMLDetailsElement.cpp: |
| * html/HTMLDetailsElement.h: |
| * html/HTMLDirectoryElement.cpp: |
| * html/HTMLDirectoryElement.h: |
| * html/HTMLDivElement.cpp: |
| * html/HTMLDivElement.h: |
| * html/HTMLDocument.cpp: |
| * html/HTMLDocument.h: |
| * html/HTMLElement.cpp: |
| * html/HTMLElement.h: |
| * html/HTMLEmbedElement.cpp: |
| * html/HTMLEmbedElement.h: |
| * html/HTMLFieldSetElement.cpp: |
| * html/HTMLFieldSetElement.h: |
| * html/HTMLFontElement.cpp: |
| * html/HTMLFontElement.h: |
| * html/HTMLFormControlElement.cpp: |
| * html/HTMLFormControlElement.h: |
| * html/HTMLFormControlElementWithState.cpp: |
| * html/HTMLFormControlElementWithState.h: |
| * html/HTMLFormElement.cpp: |
| * html/HTMLFormElement.h: |
| * html/HTMLFrameElement.cpp: |
| * html/HTMLFrameElement.h: |
| * html/HTMLFrameElementBase.cpp: |
| * html/HTMLFrameElementBase.h: |
| * html/HTMLFrameOwnerElement.cpp: |
| * html/HTMLFrameOwnerElement.h: |
| * html/HTMLFrameSetElement.cpp: |
| * html/HTMLFrameSetElement.h: |
| * html/HTMLHRElement.cpp: |
| * html/HTMLHRElement.h: |
| * html/HTMLHeadElement.cpp: |
| * html/HTMLHeadElement.h: |
| * html/HTMLHeadingElement.cpp: |
| * html/HTMLHeadingElement.h: |
| * html/HTMLHtmlElement.cpp: |
| * html/HTMLHtmlElement.h: |
| * html/HTMLIFrameElement.cpp: |
| * html/HTMLIFrameElement.h: |
| * html/HTMLImageElement.cpp: |
| * html/HTMLImageElement.h: |
| * html/HTMLInputElement.cpp: |
| * html/HTMLInputElement.h: |
| * html/HTMLKeygenElement.cpp: |
| * html/HTMLKeygenElement.h: |
| * html/HTMLLIElement.cpp: |
| * html/HTMLLIElement.h: |
| * html/HTMLLabelElement.cpp: |
| * html/HTMLLabelElement.h: |
| * html/HTMLLegendElement.cpp: |
| * html/HTMLLegendElement.h: |
| * html/HTMLLinkElement.cpp: |
| * html/HTMLLinkElement.h: |
| * html/HTMLMapElement.cpp: |
| * html/HTMLMapElement.h: |
| * html/HTMLMarqueeElement.cpp: |
| * html/HTMLMarqueeElement.h: |
| * html/HTMLMenuElement.cpp: |
| * html/HTMLMenuElement.h: |
| * html/HTMLMenuItemElement.cpp: |
| * html/HTMLMenuItemElement.h: |
| * html/HTMLMetaElement.cpp: |
| * html/HTMLMetaElement.h: |
| * html/HTMLMeterElement.cpp: |
| * html/HTMLMeterElement.h: |
| * html/HTMLModElement.cpp: |
| * html/HTMLModElement.h: |
| * html/HTMLOListElement.cpp: |
| * html/HTMLOListElement.h: |
| * html/HTMLObjectElement.cpp: |
| * html/HTMLObjectElement.h: |
| * html/HTMLOptGroupElement.cpp: |
| * html/HTMLOptGroupElement.h: |
| * html/HTMLOptionElement.cpp: |
| * html/HTMLOptionElement.h: |
| * html/HTMLOutputElement.cpp: |
| * html/HTMLOutputElement.h: |
| * html/HTMLParagraphElement.cpp: |
| * html/HTMLParagraphElement.h: |
| * html/HTMLParamElement.cpp: |
| * html/HTMLParamElement.h: |
| * html/HTMLPictureElement.cpp: |
| * html/HTMLPictureElement.h: |
| * html/HTMLPlugInElement.cpp: |
| * html/HTMLPlugInElement.h: |
| * html/HTMLPlugInImageElement.cpp: |
| * html/HTMLPlugInImageElement.h: |
| * html/HTMLPreElement.cpp: |
| * html/HTMLPreElement.h: |
| * html/HTMLProgressElement.cpp: |
| * html/HTMLProgressElement.h: |
| * html/HTMLQuoteElement.cpp: |
| * html/HTMLQuoteElement.h: |
| * html/HTMLScriptElement.cpp: |
| * html/HTMLScriptElement.h: |
| * html/HTMLSelectElement.cpp: |
| * html/HTMLSelectElement.h: |
| * html/HTMLSlotElement.cpp: |
| * html/HTMLSlotElement.h: |
| * html/HTMLSourceElement.cpp: |
| * html/HTMLSourceElement.h: |
| * html/HTMLSpanElement.cpp: |
| * html/HTMLSpanElement.h: |
| * html/HTMLStyleElement.cpp: |
| * html/HTMLStyleElement.h: |
| * html/HTMLSummaryElement.cpp: |
| * html/HTMLSummaryElement.h: |
| * html/HTMLTableCaptionElement.cpp: |
| * html/HTMLTableCaptionElement.h: |
| * html/HTMLTableCellElement.cpp: |
| * html/HTMLTableCellElement.h: |
| * html/HTMLTableColElement.cpp: |
| * html/HTMLTableColElement.h: |
| * html/HTMLTableElement.cpp: |
| * html/HTMLTableElement.h: |
| * html/HTMLTablePartElement.cpp: |
| * html/HTMLTablePartElement.h: |
| * html/HTMLTableRowElement.cpp: |
| * html/HTMLTableRowElement.h: |
| * html/HTMLTableSectionElement.cpp: |
| * html/HTMLTableSectionElement.h: |
| * html/HTMLTemplateElement.cpp: |
| * html/HTMLTemplateElement.h: |
| * html/HTMLTextAreaElement.cpp: |
| * html/HTMLTextAreaElement.h: |
| * html/HTMLTextFormControlElement.cpp: |
| * html/HTMLTextFormControlElement.h: |
| * html/HTMLTimeElement.cpp: |
| * html/HTMLTimeElement.h: |
| * html/HTMLTitleElement.cpp: |
| * html/HTMLTitleElement.h: |
| * html/HTMLTrackElement.cpp: |
| * html/HTMLTrackElement.h: |
| * html/HTMLUListElement.cpp: |
| * html/HTMLUListElement.h: |
| * html/HTMLUnknownElement.cpp: Added. |
| * html/HTMLUnknownElement.h: |
| * html/HTMLWBRElement.cpp: |
| * html/HTMLWBRElement.h: |
| * html/ImageDocument.cpp: |
| * html/ImageDocument.h: |
| * html/LabelableElement.cpp: |
| * html/LabelableElement.h: |
| * html/MediaController.cpp: |
| (MediaController::create): Deleted. |
| (MediaController::MediaController): Deleted. |
| (MediaController::addMediaElement): Deleted. |
| (MediaController::removeMediaElement): Deleted. |
| (MediaController::containsMediaElement const): Deleted. |
| (MediaController::buffered const): Deleted. |
| (MediaController::seekable const): Deleted. |
| (MediaController::played): Deleted. |
| (MediaController::duration const): Deleted. |
| (MediaController::currentTime const): Deleted. |
| (MediaController::setCurrentTime): Deleted. |
| (MediaController::unpause): Deleted. |
| (MediaController::play): Deleted. |
| (MediaController::pause): Deleted. |
| (MediaController::setDefaultPlaybackRate): Deleted. |
| (MediaController::playbackRate const): Deleted. |
| (MediaController::setPlaybackRate): Deleted. |
| (MediaController::setVolume): Deleted. |
| (MediaController::setMuted): Deleted. |
| (playbackStateWaiting): Deleted. |
| (playbackStatePlaying): Deleted. |
| (playbackStateEnded): Deleted. |
| (MediaController::playbackState const): Deleted. |
| (MediaController::reportControllerState): Deleted. |
| (eventNameForReadyState): Deleted. |
| (MediaController::updateReadyState): Deleted. |
| (MediaController::updatePlaybackState): Deleted. |
| (MediaController::updateMediaElements): Deleted. |
| (MediaController::bringElementUpToSpeed): Deleted. |
| (MediaController::isBlocked const): Deleted. |
| (MediaController::hasEnded const): Deleted. |
| (MediaController::scheduleEvent): Deleted. |
| (MediaController::asyncEventTimerFired): Deleted. |
| (MediaController::clearPositionTimerFired): Deleted. |
| (MediaController::hasAudio const): Deleted. |
| (MediaController::hasVideo const): Deleted. |
| (MediaController::hasClosedCaptions const): Deleted. |
| (MediaController::setClosedCaptionsVisible): Deleted. |
| (MediaController::supportsScanning const): Deleted. |
| (MediaController::beginScrubbing): Deleted. |
| (MediaController::endScrubbing): Deleted. |
| (MediaController::beginScanning): Deleted. |
| (MediaController::endScanning): Deleted. |
| (MediaController::canPlay const): Deleted. |
| (MediaController::isLiveStream const): Deleted. |
| (MediaController::hasCurrentSrc const): Deleted. |
| (MediaController::returnToRealtime): Deleted. |
| (MediaController::startTimeupdateTimer): Deleted. |
| (MediaController::scheduleTimeupdateEvent): Deleted. |
| * html/MediaDocument.cpp: |
| * html/MediaDocument.h: |
| * html/PluginDocument.cpp: |
| * html/PluginDocument.h: |
| * html/RubyElement.cpp: |
| * html/RubyElement.h: |
| * html/RubyTextElement.cpp: |
| * html/RubyTextElement.h: |
| * html/TextDocument.cpp: |
| * html/TextDocument.h: |
| * html/shadow/AutoFillButtonElement.cpp: |
| * html/shadow/AutoFillButtonElement.h: |
| * html/shadow/DetailsMarkerControl.cpp: |
| * html/shadow/DetailsMarkerControl.h: |
| * html/shadow/ImageControlsRootElement.cpp: |
| * html/shadow/ImageControlsRootElement.h: |
| * html/shadow/MediaControlElementTypes.cpp: |
| * html/shadow/MediaControlElementTypes.h: |
| * html/shadow/MediaControlElements.cpp: |
| * html/shadow/MediaControlElements.h: |
| * html/shadow/MediaControls.cpp: |
| * html/shadow/MediaControls.h: |
| * html/shadow/ProgressShadowElement.cpp: |
| * html/shadow/ProgressShadowElement.h: |
| * html/shadow/SliderThumbElement.cpp: |
| * html/shadow/SliderThumbElement.h: |
| * html/shadow/SpinButtonElement.cpp: |
| * html/shadow/SpinButtonElement.h: |
| * html/shadow/TextControlInnerElements.cpp: |
| * html/shadow/TextControlInnerElements.h: |
| * html/shadow/YouTubeEmbedShadowElement.cpp: |
| * html/shadow/YouTubeEmbedShadowElement.h: |
| * html/shadow/mac/ImageControlsButtonElementMac.cpp: |
| * html/shadow/mac/ImageControlsButtonElementMac.h: |
| * html/shadow/mac/ImageControlsRootElementMac.cpp: |
| * html/shadow/mac/ImageControlsRootElementMac.h: |
| * html/track/TextTrackCueGeneric.cpp: |
| * html/track/VTTCue.cpp: |
| * html/track/VTTCue.h: |
| * html/track/WebVTTElement.cpp: |
| * html/track/WebVTTElement.h: |
| * loader/SinkDocument.cpp: |
| * loader/SinkDocument.h: |
| * mathml/MathMLAnnotationElement.cpp: |
| * mathml/MathMLAnnotationElement.h: |
| * mathml/MathMLElement.cpp: |
| * mathml/MathMLElement.h: |
| * mathml/MathMLFractionElement.cpp: |
| * mathml/MathMLFractionElement.h: |
| * mathml/MathMLMathElement.cpp: |
| * mathml/MathMLMathElement.h: |
| * mathml/MathMLMencloseElement.cpp: |
| * mathml/MathMLMencloseElement.h: |
| * mathml/MathMLOperatorElement.cpp: |
| * mathml/MathMLOperatorElement.h: |
| * mathml/MathMLPaddedElement.cpp: |
| * mathml/MathMLPaddedElement.h: |
| * mathml/MathMLPresentationElement.cpp: |
| * mathml/MathMLPresentationElement.h: |
| * mathml/MathMLRootElement.cpp: |
| * mathml/MathMLRootElement.h: |
| * mathml/MathMLRowElement.cpp: |
| * mathml/MathMLRowElement.h: |
| * mathml/MathMLScriptsElement.cpp: |
| * mathml/MathMLScriptsElement.h: |
| * mathml/MathMLSelectElement.cpp: |
| * mathml/MathMLSelectElement.h: |
| * mathml/MathMLSpaceElement.cpp: |
| * mathml/MathMLSpaceElement.h: |
| * mathml/MathMLTokenElement.cpp: |
| * mathml/MathMLTokenElement.h: |
| * mathml/MathMLUnderOverElement.cpp: |
| * mathml/MathMLUnderOverElement.h: |
| * mathml/MathMLUnknownElement.cpp: Added. |
| * mathml/MathMLUnknownElement.h: |
| * svg/SVGAElement.cpp: |
| * svg/SVGAElement.h: |
| * svg/SVGAltGlyphDefElement.cpp: |
| * svg/SVGAltGlyphDefElement.h: |
| * svg/SVGAltGlyphElement.cpp: |
| * svg/SVGAltGlyphElement.h: |
| * svg/SVGAltGlyphItemElement.cpp: |
| * svg/SVGAltGlyphItemElement.h: |
| * svg/SVGAnimateColorElement.cpp: |
| * svg/SVGAnimateColorElement.h: |
| * svg/SVGAnimateElement.cpp: |
| * svg/SVGAnimateElement.h: |
| * svg/SVGAnimateElementBase.cpp: |
| * svg/SVGAnimateElementBase.h: |
| * svg/SVGAnimateMotionElement.cpp: |
| * svg/SVGAnimateMotionElement.h: |
| * svg/SVGAnimateTransformElement.cpp: |
| * svg/SVGAnimateTransformElement.h: |
| * svg/SVGAnimationElement.cpp: |
| * svg/SVGAnimationElement.h: |
| * svg/SVGCircleElement.cpp: |
| * svg/SVGCircleElement.h: |
| * svg/SVGClipPathElement.cpp: |
| * svg/SVGClipPathElement.h: |
| * svg/SVGComponentTransferFunctionElement.cpp: |
| * svg/SVGComponentTransferFunctionElement.h: |
| * svg/SVGCursorElement.cpp: |
| * svg/SVGCursorElement.h: |
| * svg/SVGDefsElement.cpp: |
| * svg/SVGDefsElement.h: |
| * svg/SVGDescElement.cpp: |
| * svg/SVGDescElement.h: |
| * svg/SVGDocument.cpp: |
| * svg/SVGDocument.h: |
| * svg/SVGElement.cpp: |
| * svg/SVGElement.h: |
| * svg/SVGEllipseElement.cpp: |
| * svg/SVGEllipseElement.h: |
| * svg/SVGFEBlendElement.cpp: |
| * svg/SVGFEBlendElement.h: |
| * svg/SVGFEColorMatrixElement.cpp: |
| * svg/SVGFEColorMatrixElement.h: |
| * svg/SVGFEComponentTransferElement.cpp: |
| * svg/SVGFEComponentTransferElement.h: |
| * svg/SVGFECompositeElement.cpp: |
| * svg/SVGFECompositeElement.h: |
| * svg/SVGFEConvolveMatrixElement.cpp: |
| * svg/SVGFEConvolveMatrixElement.h: |
| * svg/SVGFEDiffuseLightingElement.cpp: |
| * svg/SVGFEDiffuseLightingElement.h: |
| * svg/SVGFEDisplacementMapElement.cpp: |
| * svg/SVGFEDisplacementMapElement.h: |
| * svg/SVGFEDropShadowElement.cpp: |
| * svg/SVGFEDropShadowElement.h: |
| * svg/SVGFEFloodElement.cpp: |
| * svg/SVGFEFloodElement.h: |
| * svg/SVGFEGaussianBlurElement.cpp: |
| * svg/SVGFEGaussianBlurElement.h: |
| * svg/SVGFEImageElement.cpp: |
| * svg/SVGFEImageElement.h: |
| * svg/SVGFELightElement.cpp: |
| * svg/SVGFELightElement.h: |
| * svg/SVGFEMergeElement.cpp: |
| * svg/SVGFEMergeElement.h: |
| * svg/SVGFEMergeNodeElement.cpp: |
| * svg/SVGFEMergeNodeElement.h: |
| * svg/SVGFEMorphologyElement.cpp: |
| * svg/SVGFEMorphologyElement.h: |
| * svg/SVGFEOffsetElement.cpp: |
| * svg/SVGFEOffsetElement.h: |
| * svg/SVGFESpecularLightingElement.cpp: |
| * svg/SVGFESpecularLightingElement.h: |
| * svg/SVGFETileElement.cpp: |
| * svg/SVGFETileElement.h: |
| * svg/SVGFETurbulenceElement.cpp: |
| * svg/SVGFETurbulenceElement.h: |
| * svg/SVGFilterElement.cpp: |
| * svg/SVGFilterElement.h: |
| * svg/SVGFilterPrimitiveStandardAttributes.cpp: |
| * svg/SVGFilterPrimitiveStandardAttributes.h: |
| * svg/SVGFontFaceElement.cpp: |
| * svg/SVGFontFaceElement.h: |
| * svg/SVGFontFaceFormatElement.cpp: |
| * svg/SVGFontFaceFormatElement.h: |
| * svg/SVGFontFaceNameElement.cpp: |
| * svg/SVGFontFaceNameElement.h: |
| * svg/SVGFontFaceSrcElement.cpp: |
| * svg/SVGFontFaceSrcElement.h: |
| * svg/SVGFontFaceUriElement.cpp: |
| * svg/SVGFontFaceUriElement.h: |
| * svg/SVGForeignObjectElement.cpp: |
| * svg/SVGForeignObjectElement.h: |
| * svg/SVGGElement.cpp: |
| * svg/SVGGElement.h: |
| * svg/SVGGlyphElement.cpp: |
| * svg/SVGGlyphElement.h: |
| * svg/SVGGlyphRefElement.cpp: |
| * svg/SVGGlyphRefElement.h: |
| * svg/SVGGradientElement.cpp: |
| * svg/SVGGradientElement.h: |
| * svg/SVGGraphicsElement.cpp: |
| * svg/SVGGraphicsElement.h: |
| * svg/SVGHKernElement.cpp: |
| * svg/SVGHKernElement.h: |
| * svg/SVGImageElement.cpp: |
| * svg/SVGImageElement.h: |
| * svg/SVGLineElement.cpp: |
| * svg/SVGLineElement.h: |
| * svg/SVGLinearGradientElement.cpp: |
| * svg/SVGLinearGradientElement.h: |
| * svg/SVGMPathElement.cpp: |
| * svg/SVGMPathElement.h: |
| * svg/SVGMarkerElement.cpp: |
| * svg/SVGMarkerElement.h: |
| * svg/SVGMaskElement.cpp: |
| * svg/SVGMaskElement.h: |
| * svg/SVGMetadataElement.cpp: |
| * svg/SVGMetadataElement.h: |
| * svg/SVGMissingGlyphElement.cpp: |
| * svg/SVGMissingGlyphElement.h: |
| * svg/SVGPathElement.cpp: |
| * svg/SVGPathElement.h: |
| * svg/SVGPatternElement.cpp: |
| * svg/SVGPatternElement.h: |
| * svg/SVGPolyElement.cpp: |
| * svg/SVGPolyElement.h: |
| * svg/SVGPolygonElement.cpp: |
| * svg/SVGPolygonElement.h: |
| * svg/SVGPolylineElement.cpp: |
| * svg/SVGPolylineElement.h: |
| * svg/SVGRadialGradientElement.cpp: |
| * svg/SVGRadialGradientElement.h: |
| * svg/SVGRectElement.cpp: |
| * svg/SVGRectElement.h: |
| * svg/SVGSVGElement.cpp: |
| * svg/SVGSVGElement.h: |
| * svg/SVGScriptElement.cpp: |
| * svg/SVGScriptElement.h: |
| * svg/SVGSetElement.cpp: |
| * svg/SVGSetElement.h: |
| * svg/SVGStopElement.cpp: |
| * svg/SVGStopElement.h: |
| * svg/SVGStyleElement.cpp: |
| * svg/SVGStyleElement.h: |
| * svg/SVGSwitchElement.cpp: |
| * svg/SVGSwitchElement.h: |
| * svg/SVGSymbolElement.cpp: |
| * svg/SVGSymbolElement.h: |
| * svg/SVGTRefElement.cpp: |
| * svg/SVGTRefElement.h: |
| * svg/SVGTSpanElement.cpp: |
| * svg/SVGTSpanElement.h: |
| * svg/SVGTextContentElement.cpp: |
| * svg/SVGTextContentElement.h: |
| * svg/SVGTextElement.cpp: |
| * svg/SVGTextElement.h: |
| * svg/SVGTextPathElement.cpp: |
| * svg/SVGTextPathElement.h: |
| * svg/SVGTextPositioningElement.cpp: |
| * svg/SVGTextPositioningElement.h: |
| * svg/SVGTitleElement.cpp: |
| * svg/SVGTitleElement.h: |
| * svg/SVGUnknownElement.cpp: Added. |
| * svg/SVGUnknownElement.h: |
| * svg/SVGUseElement.cpp: |
| * svg/SVGUseElement.h: |
| * svg/SVGVKernElement.cpp: |
| * svg/SVGVKernElement.h: |
| * svg/SVGViewElement.cpp: |
| * svg/SVGViewElement.h: |
| * svg/animation/SVGSMILElement.cpp: |
| * svg/animation/SVGSMILElement.h: |
| |
| 2018-03-16 Youenn Fablet <youenn@apple.com> |
| |
| Ensure Document::responseReceived and clearResource are called on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=183709 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::responseReceived): |
| (WebCore::DocumentLoader::clearMainResource): |
| |
| 2018-03-16 Chris Dumez <cdumez@apple.com> |
| |
| WebKit.WebsitePoliciesAutoplayQuirks API test times out with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183702 |
| |
| Reviewed by Alex Christensen. |
| |
| The issue is that the test calls loadHTMLString then loadRequest right after, without |
| waiting for the first load to complete first. loadHTMLString is special as it relies |
| on substitute data and which schedules a timer to commit the data. When doing the |
| navigation policy check for the following loadRequest(), the substitute data timer |
| would fire and commit its data and load. This would in turn cancel the pending |
| navigation policy check for the loadRequest(). |
| |
| With sync policy delegates, this is not an issue because we take care of stopping |
| all loaders when receiving the policy decision, which happens synchronously. However, |
| when the policy decision happens asynchronously, the pending substitute data load |
| does not get cancelled in time and it gets committed. |
| |
| To address the issue, this patch updates loadWithDocumentLoader() to cancel any |
| provisional load when there is an asynchronous navigation policy decision pending. |
| |
| Change covered by new API test. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| |
| 2018-03-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Set a trap to catch an infrequent form-related nullptr crash |
| https://bugs.webkit.org/show_bug.cgi?id=183704 |
| <rdar://problem/37579354> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Make FormState a FrameDestructionObserver. We expect all relevant FormState objects to have been |
| cleaned up prior to the frame being destroyed. If we find such a case, we'd like to see the |
| stack trace to see what's going on. |
| |
| * loader/FormState.cpp: |
| (WebCore::FormState::FormState): |
| (WebCore::FormState::willDetachPage): RELEASE_ASSERT_NOT_REACHED if we ever get here. |
| * loader/FormState.h: |
| |
| 2018-03-16 Joanmarie Diggs <jdiggs@igalia.com> |
| |
| AX: AccessibilityNodeObject::textForLabelElement() doesn't follow AccName calculation rules |
| https://bugs.webkit.org/show_bug.cgi?id=183661 |
| |
| Reviewed by Chris Fleizach. |
| |
| Have AccessibilityNodeObject::textForLabelElement() return the value from |
| accessibleNameForNode() instead of innerText(). The former falls back on |
| the latter if there is no author-provided accessible name. |
| |
| Tests: accessibility/aria-label-on-label-element.html |
| accessibility/label-with-pseudo-elements.html |
| |
| * accessibility/AccessibilityNodeObject.cpp: |
| (WebCore::AccessibilityNodeObject::textForLabelElement const): |
| (WebCore::AccessibilityNodeObject::titleElementText const): |
| |
| 2018-03-16 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Fix crash on websocket with bad handshake message. |
| https://bugs.webkit.org/show_bug.cgi?id=183686 |
| |
| Reviewed by Youenn Fablet. |
| |
| The closing cleanup was called multiple times. Add flag to detect |
| it is already closed or not. |
| |
| No new tests because it is covered by existing test: |
| - LayoutTests/http/tests/websocket/tests/hybi/bad-handshake-crash.html |
| |
| * platform/network/curl/SocketStreamHandleImpl.h: |
| * platform/network/curl/SocketStreamHandleImplCurl.cpp: |
| (WebCore::SocketStreamHandleImpl::platformClose): |
| (WebCore::SocketStreamHandleImpl::didReceiveData): |
| |
| 2018-03-16 Jer Noble <jer.noble@apple.com> |
| |
| Make Fullscreen API an Experimental Feature |
| https://bugs.webkit.org/show_bug.cgi?id=183662 |
| |
| Reviewed by Jon Lee. |
| |
| The Fullscreen APIs should be guarded by a Setting, so they are not present in the DOM when the |
| Experimental Feature is disabled. |
| |
| * dom/Document.idl: |
| * dom/Element.idl: |
| |
| 2018-03-16 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure that style is updated when the effective appearance changes |
| https://bugs.webkit.org/show_bug.cgi?id=183690 |
| <rdar://problem/38385900> |
| |
| Reviewed by Tim Horton and Wenson Hsieh. |
| |
| Only exposing a function to outside WebCore, no tests needed. |
| |
| * page/Page.h: |
| |
| 2018-03-16 Chris Dumez <cdumez@apple.com> |
| |
| WebKit.RestoreSessionStateContainingScrollRestorationDefault API test is failing with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183679 |
| |
| Reviewed by Alex Christensen. |
| |
| Update CachedRawResource::didAddClient() to not send data until we've received |
| the policy decision for the response. |
| |
| No new tests, covered by new API test. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::handleSubstituteDataLoadNow): |
| (WebCore::DocumentLoader::responseReceived): |
| * loader/DocumentLoader.h: |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::responseReceived): |
| * loader/DocumentThreadableLoader.h: |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResource::responseReceived): |
| * loader/MediaResourceLoader.h: |
| * loader/appcache/ApplicationCacheResourceLoader.cpp: |
| (WebCore::ApplicationCacheResourceLoader::responseReceived): |
| * loader/appcache/ApplicationCacheResourceLoader.h: |
| * loader/cache/CachedRawResource.cpp: |
| (WebCore::CachedRawResource::didAddClient): |
| (WebCore::CachedRawResource::responseReceived): |
| * loader/cache/CachedRawResourceClient.h: |
| (WebCore::CachedRawResourceClient::responseReceived): |
| * loader/cache/KeepaliveRequestTracker.cpp: |
| (WebCore::KeepaliveRequestTracker::responseReceived): |
| * loader/cache/KeepaliveRequestTracker.h: |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.h: |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: |
| (WebCore::WebCoreAVFResourceLoader::responseReceived): |
| |
| 2018-03-16 Youenn Fablet <youenn@apple.com> |
| |
| Name Service Worker threads differently from regular Worker threads |
| https://bugs.webkit.org/show_bug.cgi?id=183698 |
| |
| Reviewed by Chris Dumez. |
| |
| No observable change of behavior. |
| For debugging purposes, knowing that a thread is a service worker thread might help give context. |
| It might also identify on a crash log whether the process is a service worker process or a regular web process. |
| |
| * workers/WorkerThread.cpp: |
| (WebCore::WorkerThread::start): |
| * workers/WorkerThread.h: |
| (WebCore::WorkerThread::isServiceWorkerThread const): |
| * workers/service/context/ServiceWorkerThread.h: |
| |
| 2018-03-16 Youenn Fablet <youenn@apple.com> |
| |
| IceCandidates leak on webrtc/datachannel/basic.html and other tests |
| https://bugs.webkit.org/show_bug.cgi?id=183676 |
| <rdar://problem/36116228> |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by manual testing using --leaks option on WK1. |
| WebKit should not release the candidates since libwebrtc is not taking ownership. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: |
| (WebCore::LibWebRTCPeerConnectionBackend::doSetLocalDescription): |
| (WebCore::LibWebRTCPeerConnectionBackend::doSetRemoteDescription): |
| |
| 2018-03-16 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Add Cairo-specific GraphicsContext operation recorder |
| https://bugs.webkit.org/show_bug.cgi?id=183593 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Add Nicosia::CairoOperationRecorder, GraphicsContextImpl implementation |
| that records all GraphicsContext operations for deferred replay on a |
| different thread. Recording here mostly consists of storing all the |
| Cairo resources in a thread-safe manner, which is eased by the atomic |
| reference counting used in Cairo. |
| |
| Nicosia::PaintingOperation derivatives are used for operations or state |
| updates that require recording. Instances of these classes are appended |
| to a Vector<> object that is then pushed into a thread pool in |
| Nicosia::PaintingEngineThreaded , replaying all the operations against |
| the Cairo context established from an associated target Nicosia::Buffer. |
| |
| This GraphicsContextImpl implementation is now used in the |
| PaintingContextCairo::ForRecording constructor to construct the |
| GraphicsContext implementation that will be used for recording. |
| |
| * platform/TextureMapper.cmake: |
| * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp: Added. |
| (Nicosia::getContext): |
| (Nicosia::OperationData::arg const const): |
| (Nicosia::createCommand): |
| (Nicosia::CairoOperationRecorder::CairoOperationRecorder): |
| (Nicosia::m_commandList): |
| (Nicosia::CairoOperationRecorder::updateState): |
| (Nicosia::CairoOperationRecorder::clearShadow): |
| (Nicosia::CairoOperationRecorder::setLineCap): |
| (Nicosia::CairoOperationRecorder::setLineDash): |
| (Nicosia::CairoOperationRecorder::setLineJoin): |
| (Nicosia::CairoOperationRecorder::setMiterLimit): |
| (Nicosia::CairoOperationRecorder::fillRect): |
| (Nicosia::CairoOperationRecorder::fillRoundedRect): |
| (Nicosia::CairoOperationRecorder::fillRectWithRoundedHole): |
| (Nicosia::CairoOperationRecorder::fillPath): |
| (Nicosia::CairoOperationRecorder::fillEllipse): |
| (Nicosia::CairoOperationRecorder::strokeRect): |
| (Nicosia::CairoOperationRecorder::strokePath): |
| (Nicosia::CairoOperationRecorder::strokeEllipse): |
| (Nicosia::CairoOperationRecorder::clearRect): |
| (Nicosia::CairoOperationRecorder::drawGlyphs): |
| (Nicosia::CairoOperationRecorder::drawImage): |
| (Nicosia::CairoOperationRecorder::drawTiledImage): |
| (Nicosia::CairoOperationRecorder::drawNativeImage): |
| (Nicosia::CairoOperationRecorder::drawPattern): |
| (Nicosia::CairoOperationRecorder::drawRect): |
| (Nicosia::CairoOperationRecorder::drawLine): |
| (Nicosia::CairoOperationRecorder::drawLinesForText): |
| (Nicosia::CairoOperationRecorder::drawLineForDocumentMarker): |
| (Nicosia::CairoOperationRecorder::drawEllipse): |
| (Nicosia::CairoOperationRecorder::drawPath): |
| (Nicosia::CairoOperationRecorder::drawFocusRing): |
| (Nicosia::CairoOperationRecorder::save): |
| (Nicosia::CairoOperationRecorder::restore): |
| (Nicosia::CairoOperationRecorder::translate): |
| (Nicosia::CairoOperationRecorder::rotate): |
| (Nicosia::CairoOperationRecorder::scale): |
| (Nicosia::CairoOperationRecorder::concatCTM): |
| (Nicosia::CairoOperationRecorder::setCTM): |
| (Nicosia::CairoOperationRecorder::getCTM): |
| (Nicosia::CairoOperationRecorder::beginTransparencyLayer): |
| (Nicosia::CairoOperationRecorder::endTransparencyLayer): |
| (Nicosia::CairoOperationRecorder::clip): |
| (Nicosia::CairoOperationRecorder::clipOut): |
| (Nicosia::CairoOperationRecorder::clipPath): |
| (Nicosia::CairoOperationRecorder::clipBounds): |
| (Nicosia::CairoOperationRecorder::applyDeviceScaleFactor): |
| (Nicosia::CairoOperationRecorder::roundToDevicePixels): |
| (Nicosia::CairoOperationRecorder::append): |
| * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h: Added. |
| * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: |
| (Nicosia::PaintingContextCairo::ForRecording::ForRecording): |
| |
| 2018-03-16 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Clean up TextureMapperLayer constructor |
| https://bugs.webkit.org/show_bug.cgi?id=183634 |
| |
| Reviewed by Michael Catanzaro. |
| |
| In the TextureMapperLayer header, only declare the constructor, and move |
| all the previous member initialization to the point of declaration of |
| these member variables. |
| |
| In the TextureMapperLayer implementation file, the constructor and |
| destructor are moved into proper order at the top of the file. The |
| former is defaulted, and the latter remains unchanged. |
| |
| No change in behavior. |
| |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::~TextureMapperLayer): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-16 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK] When using EGL, request an OpenGL core profile when possible |
| https://bugs.webkit.org/show_bug.cgi?id=178719 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| When using EGL and OpenGL, try to request a context with version >= 3.2 with a core profile |
| whenever possible. In order to to this, we require EGL version 1.5 or version 1.4 with the |
| extension EGL_KHR_create_context. If EGL requirements are not met, or we cannot get a |
| context with version >= 3.2 then use whatever EGL gives us. |
| |
| Covered by existent tests. |
| |
| * platform/graphics/egl/GLContextEGL.cpp: |
| (WebCore::GLContextEGL::createWindowContext): |
| (WebCore::GLContextEGL::createPbufferContext): |
| (WebCore::GLContextEGL::createSurfacelessContext): |
| (WebCore::GLContextEGL::createContextForEGLVersion): |
| * platform/graphics/egl/GLContextEGL.h: |
| * platform/graphics/egl/GLContextEGLWPE.cpp: |
| (WebCore::GLContextEGL::createWPEContext): |
| * platform/graphics/egl/GLContextEGLWayland.cpp: |
| (WebCore::GLContextEGL::createWaylandContext): |
| * platform/graphics/egl/GLContextEGLX11.cpp: |
| (WebCore::GLContextEGL::createPixmapContext): |
| |
| 2018-03-16 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Don't use the TextureMapperAnimation::Client interface to apply animation |
| https://bugs.webkit.org/show_bug.cgi?id=183656 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Don't have the TextureMapperLayer class inherit from the |
| TextureMapperAnimation::Client interface just for the purposes of |
| synchronization of animation-affected attributes in syncAnimations(). |
| For that purpose it's enough to provide a struct that is passed to that |
| method, and with the TextureMapperAnimation class filling out any of the |
| animated attributes that need to be updated. |
| |
| TextureMapperAnimation::ApplicationResult struct is introducted for that |
| purpose. std::optional<> members in it are assigned values during the |
| application process, if an appropriate animation affects them. The |
| relevant member values in TextureMapperLayer are then updated, or value |
| from the default state is used. |
| |
| TextureMapperAnimation::Client is removed. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| (WebCore::TextureMapperAnimation::apply): |
| (WebCore::TextureMapperAnimation::applyInternal): |
| (WebCore::TextureMapperAnimations::apply): |
| * platform/graphics/texmap/TextureMapperAnimation.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::syncAnimations): |
| (WebCore::TextureMapperLayer::setAnimatedTransform): Deleted. |
| (WebCore::TextureMapperLayer::setAnimatedOpacity): Deleted. |
| (WebCore::TextureMapperLayer::setAnimatedFilters): Deleted. |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-16 Devin Rousso <webkit@devinrousso.com> |
| |
| Web Inspector: Canvas Tab: main WebGL canvas on acko.net has no reported size |
| https://bugs.webkit.org/show_bug.cgi?id=178798 |
| <rdar://problem/35175740> |
| |
| Reviewed by Brian Burg. |
| |
| When the main frame navigates, the DOMAgent would recieve two InspectorInstrumentation calls, |
| one when the frame begins its navigation and the other when the document for that frame has |
| loaded. Both of these would discard the DOMAgent's bindings, which included the map of |
| `nodeId`s. This was an issue for canvases, as the frontend would be notified whenever any |
| canvas is created, which would usually occur before the `DOMContentLoaded` event is fired. |
| As a result, the canvases would attempt to retrieve their associated node, only to have the |
| DOMAgent discard those bindings quickly thereafter. |
| |
| This patch removes DOMAgent's and DOMDebuggerAgent's (parity) instrumentation hooks for the |
| latter event, ensuring that the bindings are only discarded once. |
| |
| * inspector/agents/InspectorDOMAgent.h: |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::mainFrameDOMContentLoaded): Deleted. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.h: |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: |
| (WebCore::InspectorDOMDebuggerAgent::frameDocumentUpdated): Added. |
| (WebCore::InspectorDOMDebuggerAgent::mainFrameDOMContentLoaded): Deleted. |
| |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::domContentLoadedEventFiredImpl): |
| (WebCore::InspectorInstrumentation::frameDocumentUpdatedImpl): |
| |
| 2018-03-15 Tim Horton <timothy_horton@apple.com> |
| |
| Include CADisplayLink explicitly where needed, instead of all of CA |
| https://bugs.webkit.org/show_bug.cgi?id=183689 |
| <rdar://problem/38528719> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: |
| |
| 2018-03-15 Tim Horton <timothy_horton@apple.com> |
| |
| Include MobileCoreServices in the WebCore prefix header |
| https://bugs.webkit.org/show_bug.cgi?id=183688 |
| <rdar://problem/38527621> |
| |
| Reviewed by Dan Bernstein. |
| |
| * WebCorePrefix.h: |
| |
| 2018-03-15 Megan Gardner <megan_gardner@apple.com> |
| |
| Create MediaQueryParserContext to provide additional context for the evaluation of media queries |
| https://bugs.webkit.org/show_bug.cgi?id=183677 |
| |
| Reviewed by Tim Horton. |
| |
| We need additional context for parsing media queries to make sure they are parsed correctly and valid. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * css/MediaList.cpp: |
| (WebCore::MediaQuerySet::create): |
| (WebCore::MediaQuerySet::set): |
| (WebCore::MediaQuerySet::add): |
| (WebCore::MediaQuerySet::remove): |
| * css/MediaList.h: |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::MediaQueryEvaluator::mediaAttributeMatches): |
| * css/MediaQueryExpression.cpp: |
| (WebCore::featureWithValidIdent): |
| (WebCore::featureWithValidDensity): |
| (WebCore::featureWithValidPositiveLength): |
| (WebCore::featureWithPositiveInteger): |
| (WebCore::featureWithPositiveNumber): |
| (WebCore::featureWithZeroOrOne): |
| (WebCore::isFeatureValidWithoutValue): |
| (WebCore::MediaQueryExpression::MediaQueryExpression): |
| * css/MediaQueryExpression.h: |
| * css/MediaQueryMatcher.cpp: |
| (WebCore::MediaQueryMatcher::matchMedia): |
| * css/MediaQueryParserContext.cpp: Added. |
| (WebCore::MediaQueryParserContext::MediaQueryParserContext): |
| * css/MediaQueryParserContext.h: Added. |
| (WebCore::MediaQueryParserContext::MediaQueryParserContext): |
| * css/StyleMedia.cpp: |
| (WebCore::StyleMedia::matchMedium const): |
| * css/StyleRuleImport.cpp: |
| (WebCore::StyleRuleImport::StyleRuleImport): |
| (WebCore::StyleRuleImport::setCSSStyleSheet): |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| (WebCore::operator==): |
| * css/parser/CSSParserImpl.cpp: |
| (WebCore::CSSParserImpl::consumeImportRule): |
| (WebCore::CSSParserImpl::consumeMediaRule): |
| * css/parser/MediaQueryParser.cpp: |
| (WebCore::MediaQueryParser::parseMediaQuerySet): |
| (WebCore::MediaQueryParser::parseMediaCondition): |
| (WebCore::MediaQueryParser::MediaQueryParser): |
| (WebCore::MediaQueryData::addExpression): |
| * css/parser/MediaQueryParser.h: |
| (WebCore::MediaQueryData::setMediaQueryParserContext): |
| * css/parser/SizesAttributeParser.cpp: |
| (WebCore::SizesAttributeParser::parse): |
| * dom/DOMImplementation.cpp: |
| (WebCore::DOMImplementation::createCSSStyleSheet): |
| * dom/InlineStyleSheetOwner.cpp: |
| (WebCore::InlineStyleSheetOwner::createSheet): |
| * dom/ProcessingInstruction.cpp: |
| (WebCore::ProcessingInstruction::setCSSStyleSheet): |
| * html/HTMLImageElement.cpp: |
| (WebCore::HTMLImageElement::bestFitSourceFromPictureElement): |
| * html/HTMLLinkElement.cpp: |
| (WebCore::HTMLLinkElement::process): |
| (WebCore::HTMLLinkElement::initializeStyleSheet): |
| (WebCore::HTMLLinkElement::setCSSStyleSheet): |
| * html/HTMLLinkElement.h: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::selectNextSourceChild): |
| * html/HTMLSourceElement.cpp: |
| (WebCore::HTMLSourceElement::parsedMediaAttribute const): |
| * html/HTMLSourceElement.h: |
| * html/HTMLStyleElement.cpp: |
| (WebCore::HTMLStyleElement::parseAttribute): |
| * html/parser/HTMLPreloadScanner.cpp: |
| (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): |
| |
| 2018-03-15 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229639. |
| https://bugs.webkit.org/show_bug.cgi?id=183683 |
| |
| it is causing a crash in API tests (Requested by youenn on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "ActiveDOMObject should assert that they are destroyed in the |
| thread they are created" |
| https://bugs.webkit.org/show_bug.cgi?id=183671 |
| https://trac.webkit.org/changeset/229639 |
| |
| 2018-03-15 Youenn Fablet <youenn@apple.com> |
| |
| Bad configuration parameters should make RTCPeerConnection constructor throw |
| https://bugs.webkit.org/show_bug.cgi?id=183615 |
| |
| Reviewed by Eric Carlson. |
| |
| Implement more of https://w3c.github.io/webrtc-pc/#set-pc-configuration. |
| Throw an error whenever underlying libwebrtc set configuration fails. |
| |
| Covered by rebased test. |
| |
| * Modules/mediastream/PeerConnectionBackend.h: |
| * Modules/mediastream/RTCPeerConnection.cpp: |
| (WebCore::iceServersFromConfiguration): |
| (WebCore::RTCPeerConnection::initializeConfiguration): |
| (WebCore::RTCPeerConnection::setConfiguration): |
| * Modules/mediastream/RTCPeerConnection.js: |
| (initializeRTCPeerConnection): |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h: |
| |
| 2018-03-15 Youenn Fablet <youenn@apple.com> |
| |
| replaceTrack triggers negotiationneeded |
| https://bugs.webkit.org/show_bug.cgi?id=180342 |
| <rdar://problem/35822426> |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by updated test. |
| Fix the case of replacing a track for which data is already flowing. |
| We should probably do the same for null tracks when fully implementing transceivers. |
| |
| * Modules/mediastream/RTCPeerConnection.cpp: |
| (WebCore::RTCPeerConnection::enqueueReplaceTrackTask): |
| |
| 2018-03-15 Keith Rollin <krollin@apple.com> |
| |
| Telemetry for stalled webpage loads |
| https://bugs.webkit.org/show_bug.cgi?id=183221 |
| <rdar://problem/36549013> |
| |
| Reviewed by Chris Dumez. |
| |
| Add telemetry for page loads, tracking the pages that succeed, fail, |
| or are canceled. This information will be used to track the overall |
| health of our page loading as time goes on. |
| |
| No new tests -- no new/changed user-level functionality. |
| |
| * page/DiagnosticLoggingKeys.cpp: |
| (WebCore::DiagnosticLoggingKeys::telemetryPageLoadKey): |
| (WebCore::DiagnosticLoggingKeys::timedOutKey): |
| (WebCore::DiagnosticLoggingKeys::canceledLessThan2SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::canceledLessThan5SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::canceledLessThan20SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::canceledMoreThan20SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::failedLessThan2SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::failedLessThan5SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::failedLessThan20SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::failedMoreThan20SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::occurredKey): |
| (WebCore::DiagnosticLoggingKeys::succeededLessThan2SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::succeededLessThan5SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::succeededLessThan20SecondsKey): |
| (WebCore::DiagnosticLoggingKeys::succeededMoreThan20SecondsKey): |
| * page/DiagnosticLoggingKeys.h: |
| * platform/network/cf/ResourceError.h: |
| (WebCore::ResourceError::ResourceError): |
| * platform/network/mac/ResourceErrorMac.mm: |
| (WebCore::ResourceError::ResourceError): |
| (WebCore::ResourceError::getNSURLErrorDomain const): |
| (WebCore::ResourceError::getCFErrorDomainCFNetwork const): |
| (WebCore::ResourceError::mapPlatformError): |
| |
| 2018-03-15 Youenn Fablet <youenn@apple.com> |
| |
| ActiveDOMObject should assert that they are destroyed in the thread they are created |
| https://bugs.webkit.org/show_bug.cgi?id=183671 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Moved MessagePort assertion to ActiveDOMObject. |
| |
| * dom/ActiveDOMObject.cpp: |
| (WebCore::ActiveDOMObject::~ActiveDOMObject): |
| * dom/ActiveDOMObject.h: |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::~MessagePort): |
| * dom/MessagePort.h: |
| |
| 2018-03-15 Youenn Fablet <youenn@apple.com> |
| |
| MessagePort is not always destroyed on the right thread |
| https://bugs.webkit.org/show_bug.cgi?id=183619 |
| <rdar://problem/38204711> |
| |
| Reviewed by Chris Dumez. |
| |
| Add assertion to ensure MessagePort is destroyed in the right thread. |
| Modify methods taking a ref in a lambda to rely on weak pointers and refing the WorkerThread if in a worker context. |
| It is safe to ref the WorkerThread since it is thread safe ref counted and we are passing the ref to the main thread |
| where the WorkerThread is expected to be destroyed. |
| |
| Test: http/tests/workers/worker-messageport-2.html |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::~MessagePort): |
| (WebCore::MessagePort::dispatchMessages): |
| (WebCore::MessagePort::updateActivity): |
| (WebCore::MessagePort::hasPendingActivity const): |
| * dom/MessagePort.h: |
| |
| 2018-03-15 Jer Noble <jer.noble@apple.com> |
| |
| Adopt new AVURLAssetUseClientURLLoadingExclusively AVURLAsset creation option. |
| https://bugs.webkit.org/show_bug.cgi?id=183660 |
| |
| Reviewed by Jon Lee. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): |
| |
| 2018-03-15 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, fix tiny mistake in r229615 that caused API tests failures. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistrationFromStore): |
| |
| 2018-03-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Remove TextureMapperLayer::texture() |
| https://bugs.webkit.org/show_bug.cgi?id=183635 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Remove the unused TextureMapperLayer::texture() method. This enables |
| removing the virtual TextureMapperBackingStore::texture() method, as |
| well as the implementations of it in TextureMapperTiledBackingStore and |
| CoordinatedBackingStore classes. |
| |
| No change in behavior. |
| |
| * platform/graphics/texmap/TextureMapperBackingStore.h: |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/TextureMapperTiledBackingStore.cpp: |
| (WebCore::TextureMapperTiledBackingStore::texture const): Deleted. |
| * platform/graphics/texmap/TextureMapperTiledBackingStore.h: |
| |
| 2018-03-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| [TexMap] Don't bother caching pattern transform matrix |
| https://bugs.webkit.org/show_bug.cgi?id=183633 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Remove the m_patternTransform and m_patternTransformDirty member |
| variables from the TextureMapperLayer class. These unnecessarily |
| complicate the state update methods that need to compare the given |
| attribute against the current state, and only update it if it has |
| changed. |
| |
| Instead, compute the pattern TransformationMatrix value on-the-fly in |
| the paintSelf() method, if at all necessary. |
| |
| No change in functionality. |
| |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintSelf): |
| (WebCore::TextureMapperLayer::setContentsRect): |
| (WebCore::TextureMapperLayer::setContentsTileSize): |
| (WebCore::TextureMapperLayer::setContentsTilePhase): |
| (WebCore::TextureMapperLayer::computePatternTransformIfNeeded): Deleted. |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-14 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Add clearing of storage access to WebResourceLoadStatisticsStore::clearInMemory() |
| https://bugs.webkit.org/show_bug.cgi?id=183641 |
| <rdar://problem/38469497> |
| |
| Reviewed by Brent Fulgham and Chris Dumez. |
| |
| No new tests. This change is to stabilize existing layout tests. |
| See Ryan Haddad's comment in https://bugs.webkit.org/show_bug.cgi?id=183620. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::removeAllStorageAccess): |
| New function to clear out all storage access entries. |
| |
| 2018-03-14 Youenn Fablet <youenn@apple.com> |
| |
| imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=183602 |
| |
| Reviewed by Chris Dumez. |
| |
| Introduce a map of ScriptExecutionContext that is read/write protected using a Lock. |
| This allows introducing postTaskTo taking a ScriptExecutionContext identifier and callable from any thread. |
| Use that method in Crypto instead of refing/unrefing the context. |
| Lock only happens if context does some postTask activity. This is governed by calling or not the new contextIdentifier() getter. |
| |
| Covered by crypto tests no longer failing m_workerGlobalScope->hasOneRef() assertion. |
| |
| * crypto/CryptoAlgorithm.cpp: |
| (WebCore::dispatchAlgorithmOperation): |
| * crypto/algorithms/CryptoAlgorithmECDH.cpp: |
| (WebCore::CryptoAlgorithmECDH::deriveBits): |
| * crypto/algorithms/CryptoAlgorithmSHA1.cpp: |
| (WebCore::CryptoAlgorithmSHA1::digest): |
| * crypto/algorithms/CryptoAlgorithmSHA224.cpp: |
| (WebCore::CryptoAlgorithmSHA224::digest): |
| * crypto/algorithms/CryptoAlgorithmSHA256.cpp: |
| (WebCore::CryptoAlgorithmSHA256::digest): |
| * crypto/algorithms/CryptoAlgorithmSHA384.cpp: |
| (WebCore::CryptoAlgorithmSHA384::digest): |
| * crypto/algorithms/CryptoAlgorithmSHA512.cpp: |
| (WebCore::CryptoAlgorithmSHA512::digest): |
| * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp: |
| (WebCore::CryptoKeyRSA::generatePair): |
| * crypto/mac/CryptoKeyRSAMac.cpp: |
| (WebCore::CryptoKeyRSA::generatePair): |
| * dom/Document.cpp: |
| (WebCore::Document::~Document): |
| * dom/ScriptExecutionContext.cpp: |
| (WebCore::allScriptExecutionContextsMapLock): |
| (WebCore::ScriptExecutionContext::ScriptExecutionContext): |
| (WebCore::ScriptExecutionContext::removeFromContextsMap): |
| (WebCore::ScriptExecutionContext::checkConsistency const): |
| (WebCore::ScriptExecutionContext::postTaskTo): |
| * dom/ScriptExecutionContext.h: |
| (WebCore::ScriptExecutionContext::contextIdentifier const): |
| * workers/WorkerGlobalScope.cpp: |
| (WebCore::WorkerGlobalScope::~WorkerGlobalScope): |
| |
| 2018-03-14 Chris Dumez <cdumez@apple.com> |
| |
| Reduce use of SWServerToContextConnection::globalServerToContextConnection() |
| https://bugs.webkit.org/show_bug.cgi?id=183626 |
| |
| Reviewed by Youenn Fablet. |
| |
| Reduce use of SWServerToContextConnection::globalServerToContextConnection() as we are moving towards |
| having multiple context connections. |
| |
| No new tests, no expected behavior change. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::matchAll): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| (WebCore::SWServer::runServiceWorkerIfNecessary): |
| (WebCore::SWServer::runServiceWorker): |
| (WebCore::SWServer::terminateWorkerInternal): |
| (WebCore::SWServer::markAllWorkersAsTerminated): |
| (WebCore::SWServer::workerContextTerminated): |
| (WebCore::SWServer::fireInstallEvent): |
| (WebCore::SWServer::fireActivateEvent): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerToContextConnection.cpp: |
| (WebCore::SWServerToContextConnection::findClientByIdentifier): |
| (WebCore::SWServerToContextConnection::matchAll): |
| (WebCore::SWServerToContextConnection::claim): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::contextConnection): |
| (WebCore::SWServerWorker::matchAll): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-03-14 Youenn Fablet <youenn@apple.com> |
| |
| MessagePort should remove its listeners when being closed |
| https://bugs.webkit.org/show_bug.cgi?id=183644 |
| |
| Reviewed by Chris Dumez. |
| |
| Test: http/tests/workers/worker-messageport.html |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::close): |
| (WebCore::MessagePort::contextDestroyed): |
| |
| 2018-03-14 Chris Dumez <cdumez@apple.com> |
| |
| Drop unnecessary StorageToWebProcessConnection::workerContextProcessConnectionCreated() |
| https://bugs.webkit.org/show_bug.cgi?id=183624 |
| |
| Reviewed by Youenn Fablet. |
| |
| Pass in context connection to SWServer::serverToContextConnectionCreated() to avoid |
| relying on the deprecated globalServerToContextConnection(). |
| |
| No new tests, no expected behavior change. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| * workers/service/server/SWServer.h: |
| |
| 2018-03-14 Mark Lam <mark.lam@apple.com> |
| |
| Enhance the MacroAssembler and LinkBuffer to support pointer profiling. |
| https://bugs.webkit.org/show_bug.cgi?id=183623 |
| <rdar://problem/38443314> |
| |
| Reviewed by Michael Saboff. |
| |
| No new tests. Just adding PtrTags required by new MacroAssembler API. |
| |
| * cssjit/FunctionCall.h: |
| (WebCore::FunctionCall::prepareAndCall): |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::compile): |
| |
| 2018-03-14 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Implement accessible dismiss action on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=183352 |
| <rdar://problem/38161500> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Test: accessibility/ios-simulator/AOM-dismiss-event.html |
| |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityPerformEscape]): |
| |
| 2018-03-14 Youenn Fablet <youenn@apple.com> |
| |
| Update libwebrtc up to 36af4e9614f707f733eb2340fae66d6325aaac5b |
| https://bugs.webkit.org/show_bug.cgi?id=183481 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by existing tests. |
| Updated libwebrtc binding code. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::fillEncodingParameters): |
| * platform/mediastream/libwebrtc/LibWebRTCAudioModule.h: |
| |
| 2018-03-14 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build after r229567 |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-03-13 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Immediately forward cookie access for domains with previous user interaction when there's an opener document |
| https://bugs.webkit.org/show_bug.cgi?id=183620 |
| <rdar://problem/38431469> |
| |
| Reviewed by Brent Fulgham. |
| |
| Tests: http/tests/storageAccess/deny-storage-access-under-opener.html |
| http/tests/storageAccess/grant-storage-access-under-opener.html |
| |
| It turns out the fix in https://bugs.webkit.org/show_bug.cgi?id=183577 |
| wasn't enough to address the compatibility issues with popups. Some of |
| them just detect their unpartitioned cookies, auto-dismiss themselves, |
| and expect their unpartitioned cookies to be available under the opener |
| afterwards. We should grant them access if the popup's domain has had |
| user interaction _previously_. |
| |
| Note that we still need https://bugs.webkit.org/show_bug.cgi?id=183577 |
| because if the popup's domain has not received user interaction |
| previously, we will not grant it storage access on just the window open. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::hasRequestedPageSpecificStorageAccessWithUserInteraction): |
| (WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction): |
| (WebCore::Document::hasGrantedPageSpecificStorageAccess): Deleted. |
| (WebCore::Document::setHasGrantedPageSpecificStorageAccess): Deleted. |
| Renamed from *Granted* to *Requested* since there is now a case |
| where access will not be granted, i.e. when the popup domain has |
| not had user interaction previously. |
| * dom/Document.h: |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback): |
| Renamed *Grant* to *Request*. |
| (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| (WebCore::ResourceLoadObserver::logWindowCreation): |
| New function called from DOMWindow::createWindow(). |
| (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener): |
| New convenience function. |
| (WebCore::ResourceLoadObserver::setGrantStorageAccessUnderOpenerCallback): Deleted. |
| Renamed *Grant* to *Request*. |
| * loader/ResourceLoadObserver.h: |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::createWindow): |
| Now calls ResourceLoadObserver::logWindowCreation() if a window |
| was created and the opener has a document and a page ID. |
| |
| 2018-03-13 Chris Dumez <cdumez@apple.com> |
| |
| fast/loader/javascript-url-iframe-remove-on-navigate.html is a flaky crash on iOS with async delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183610 |
| |
| Reviewed by Youenn Fablet. |
| |
| The issue was that in DocumentLoader::loadMainResource(), the call to requestMainResource() which |
| return null due to the load getting cancelled synchronously. If this load is the parent frame's last |
| pending load, then the 'load' event gets fired in the parent frame. In the test, the parent frame's |
| load event handler does a document.write() call which blows away the iframe. As a result, when |
| we return from the requestMainResource(), m_frame is null and we crash later on dereferencing it. |
| |
| No new tests, covered by fast/loader/javascript-url-iframe-remove-on-navigate-async-delegate.html |
| which was crashing flakily. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::loadMainResource): |
| |
| 2018-03-13 Jer Noble <jer.noble@apple.com> |
| |
| [iOS] Muted media playback can interrupt out-of-process audio |
| https://bugs.webkit.org/show_bug.cgi?id=183606 |
| <rdar://problem/37466253> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: Updated TestWebKitAPI test to verify the correct AVAudioSession category is set. |
| |
| A non-playing, non-muted media element will cause the AVAudioSession category to be set to |
| "playing" when a muted media element begins playback. Ignore these non-playing elements for |
| the purposes of determining the AVAudioSession category. |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.cpp: |
| (PlatformMediaSessionManager::updateSessionState): |
| |
| 2018-03-13 Youenn Fablet <youenn@apple.com> |
| |
| Calling removeTrack with RTCRtpSender does not set SenderTrack to null |
| https://bugs.webkit.org/show_bug.cgi?id=183308 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by updated test. |
| |
| * Modules/mediastream/RTCRtpSender.cpp: |
| (WebCore::RTCRtpSender::stop): Set track to null when being stopped i.e. removed. |
| * Modules/mediastream/RTCRtpSender.h: |
| |
| 2018-03-13 Youenn Fablet <youenn@apple.com> |
| |
| Changing link element rel attribute from preload to stylesheet should succeed loading the stylesheet |
| https://bugs.webkit.org/show_bug.cgi?id=183601 |
| <rdar://problem/38309441> |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: http/wpt/preload/change-link-rel-attribute.html |
| |
| * loader/LinkPreloadResourceClients.h: |
| (WebCore::LinkPreloadResourceClient::clearResource): Remove the call to CachedResource::cancelLoad. |
| This call is expected to be called by ResourceLoader when cancelling the load from below CachedResource. |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::allClientsRemoved): In case of preload, |
| cancel the load if not finished when there is no more client attached to it. |
| * loader/cache/CachedResource.h: |
| |
| 2018-03-12 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Immediately forward cookie access at user interaction when there's an opener document |
| https://bugs.webkit.org/show_bug.cgi?id=183577 |
| <rdar://problem/38266987> |
| |
| Reviewed by Brent Fulgham. |
| |
| Tested manually on live websites. |
| No new automated tests because of a bug in WebKitTestRunner: |
| https://bugs.webkit.org/show_bug.cgi?id=183578 |
| The event sender triggers gestures in the opener rather than |
| in the popup. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::removedLastRef): |
| Clears the new m_primaryDomainsGrantedPageSpecificStorageAccess. |
| (WebCore::Document::hasGrantedPageSpecificStorageAccess): |
| (WebCore::Document::setHasGrantedPageSpecificStorageAccess): |
| * dom/Document.h: |
| Added member m_primaryDomainsGrantedPageSpecificStorageAccess |
| where we store domains that have been granted access. |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::setGrantStorageAccessUnderOpenerCallback): |
| (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| Now checks if there is a cross-origin opener and if so, immediately |
| grants cookie access to the popup's domain if it is partitioned or |
| blocked. |
| * loader/ResourceLoadObserver.h: |
| * platform/network/NetworkStorageSession.h: |
| Added member m_pagesGrantedStorageAccess. |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::cookieStoragePartition const): |
| (WebCore::NetworkStorageSession::hasStorageAccess const): |
| Renamed from hasStorageAccessForFrame since the frameID now is optional. |
| (WebCore::NetworkStorageSession::grantStorageAccess): |
| Renamed from grantStorageAccessForFrame since the frameID now is optional. |
| (WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage): |
| Now removes the pageID entry in m_pagesGrantedStorageAccess. |
| (WebCore::NetworkStorageSession::hasStorageAccessForFrame const): Deleted. |
| Renamed since the frameID now is optional. |
| (WebCore::NetworkStorageSession::grantStorageAccessForFrame): Deleted. |
| Renamed since the frameID now is optional. |
| |
| 2018-03-12 Tim Horton <timothy_horton@apple.com> |
| |
| Stop using SDK conditionals to control feature definitions |
| https://bugs.webkit.org/show_bug.cgi?id=183430 |
| <rdar://problem/38251619> |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * Configurations/WebKitTargetConditionals.xcconfig: Renamed. |
| |
| 2018-03-12 Chris Dumez <cdumez@apple.com> |
| |
| Return boolean from DOMTokenList's replace() method |
| https://bugs.webkit.org/show_bug.cgi?id=183567 |
| |
| Reviewed by Youenn Fablet. |
| |
| Have DOMTokenList's replace() method return a boolean indicating if the |
| token was replaced, as per: |
| - https://dom.spec.whatwg.org/#dom-domtokenlist-replace |
| |
| This is a recent addition to the DOM specification: |
| - https://github.com/whatwg/dom/pull/582 |
| |
| No new tests, rebaselined existing test. |
| |
| * html/DOMTokenList.cpp: |
| (WebCore::replaceInOrderedSet): |
| (WebCore::DOMTokenList::replace): |
| * html/DOMTokenList.h: |
| * html/DOMTokenList.idl: |
| |
| 2018-03-12 Brian Burg <bburg@apple.com> |
| |
| Ignore some deprecation warnings encountered when compiling with newer versions of ICU |
| https://bugs.webkit.org/show_bug.cgi?id=183584 |
| <rdar://problem/38395317> |
| |
| Reviewed by Daniel Bates. |
| |
| Ignore new deprecation warnings. Where a function has more than one |
| deprecation warning, mark out the entire function so it remains readable. |
| |
| * editing/TextIterator.cpp: |
| * platform/graphics/SurrogatePairAwareTextIterator.cpp: |
| (WebCore::SurrogatePairAwareTextIterator::normalizeVoicingMarks): |
| * platform/text/TextEncoding.cpp: |
| |
| 2018-03-12 Yoav Weiss <yoav@yoav.ws> |
| |
| Runtime flag for link prefetch and remove link subresource. |
| https://bugs.webkit.org/show_bug.cgi?id=183540 |
| |
| Reviewed by Chris Dumez. |
| |
| This patch removes the LINK_PREFETCH build time flag, removes |
| link subresource, adds an off-by-default runtime flag for link |
| prefetch and makes sure link prefetch only works when this flag is on. |
| |
| Subresource is removed as it's not a part of any spec, nor supported by any |
| other browser. It was replaced by link preload. |
| |
| No new tests as this is not adding any new functionality. |
| |
| * Configurations/FeatureDefines.xcconfig: Remove the LINK_PREFETCH flag. |
| * html/LinkRelAttribute.cpp: |
| (WebCore::LinkRelAttribute::LinkRelAttribute): Put prefetch support behind the runtime flag. |
| (WebCore::LinkRelAttribute::isSupported): Add prefetch. |
| * html/LinkRelAttribute.h: Remove the LINK_PREFETCH flag. |
| * loader/LinkLoader.cpp: |
| (WebCore::createLinkPreloadResourceClient): Remove the LINK_PREFETCH flag. |
| (WebCore::LinkLoader::prefetchIfNeeded): Move the prefetch code to `prefetchIfNeeded()`. Remove subresource bits. |
| (WebCore::LinkLoader::loadLink): Call `prefetchIfNeeded()`. |
| * loader/LinkLoader.h: |
| * loader/ResourceLoadInfo.cpp: |
| (WebCore::toResourceType): Remove the LINK_PREFETCH flag as well as subresource. |
| * loader/SubresourceLoader.cpp: |
| (WebCore::logResourceLoaded): Remove the LINK_PREFETCH flag as well as subresource. |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::defaultPriorityForResourceType): Remove the LINK_PREFETCH flag as well as subresource. |
| (WebCore::CachedResource::load): Remove the LINK_PREFETCH flag. |
| * loader/cache/CachedResource.h: |
| (WebCore::CachedResource::ignoreForRequestCount const): Remove the LINK_PREFETCH flag as well as subresource. |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::createResource): Remove the LINK_PREFETCH flag as well as subresource. |
| (WebCore::CachedResourceLoader::requestLinkResource): Remove subresource. |
| (WebCore::contentTypeFromResourceType): Remove the LINK_PREFETCH flag as well as subresource. |
| (WebCore::CachedResourceLoader::checkInsecureContent const): Remove the LINK_PREFETCH flag as well as subresource. |
| (WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest): Remove the LINK_PREFETCH flag as well as subresource. |
| * loader/cache/CachedResourceLoader.h: |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setLinkPrefetchEnabled): Set the prefetch flag. |
| (WebCore::RuntimeEnabledFeatures::linkPrefetchEnabled const): Get the prefetch flag. |
| |
| 2018-03-12 Youenn Fablet <youenn@apple.com> |
| |
| RTCPeerConnection's close method should update signalingState |
| https://bugs.webkit.org/show_bug.cgi?id=174314 |
| <rdar://problem/33267977> |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by rebased test. |
| Add closed as signalingState enum value. |
| Set peer connection signaling state to closed once close is called. |
| |
| * Modules/mediastream/RTCPeerConnection.cpp: |
| (WebCore::RTCPeerConnection::doClose): |
| * Modules/mediastream/RTCSignalingState.idl: |
| * platform/mediastream/RTCSignalingState.h: |
| |
| 2018-03-12 Mark Lam <mark.lam@apple.com> |
| |
| Make a NativeFunction into a class to support pointer profiling. |
| https://bugs.webkit.org/show_bug.cgi?id=183573 |
| <rdar://problem/38384697> |
| |
| Reviewed by Filip Pizlo. |
| |
| No new tests because there's no new behavior. Only updating bindings. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateHashTableValueArray): |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| * bindings/scripts/test/JS/JSTestDOMJIT.cpp: |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestInterface.cpp: |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| |
| 2018-03-12 Tim Horton <timothy_horton@apple.com> |
| |
| Use a different SPI header for some AudioToolbox enums |
| https://bugs.webkit.org/show_bug.cgi?id=183574 |
| <rdar://problem/38385889> |
| |
| Reviewed by Anders Carlsson. |
| |
| * platform/audio/ios/AudioDestinationIOS.cpp: |
| * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: |
| Adjust SPI imports. |
| |
| 2018-03-12 Danyao Wang <danyao@chromium.org> |
| |
| Add a query and fragment exception to history API's unique origin restriction. |
| https://bugs.webkit.org/show_bug.cgi?id=183028 |
| |
| Reviewed by Brent Fulgham. |
| |
| Tests: http/tests/navigation/pushstate-at-unique-origin-denied.php |
| Tools/TestWebKitAPI/Tests/WebCore/URL.cpp |
| |
| * page/History.cpp: |
| (WebCore::History::stateObjectAdded): |
| |
| 2018-03-12 Antti Koivisto <antti@apple.com> |
| |
| Don't invalidate descendants for nth pseudo classes unless needed |
| https://bugs.webkit.org/show_bug.cgi?id=183566 |
| |
| Reviewed by Zalan Bujtas. |
| |
| We currently invalidate the whole subtrees that may match :nth-child and similar. In many common |
| cases we know that only the direct siblings may be affected. |
| |
| * css/SelectorChecker.cpp: |
| (WebCore::localContextForParent): |
| (WebCore::SelectorChecker::matchRecursively const): |
| |
| Track if the context matches the subject element if the selector or its siblings only. |
| |
| (WebCore::SelectorChecker::checkOne const): |
| |
| Use different bits of descendant and child invalidation cases. |
| |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::fragmentMatchesRightmostOrAdjacentElement): |
| (WebCore::SelectorCompiler::constructFragmentsInternal): |
| |
| Track if the context matches the subject element if the selector or its siblings only. |
| |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild): |
| |
| Use different bits of descendant and child invalidation cases. |
| |
| * dom/Element.cpp: |
| (WebCore::invalidateForForwardPositionalRules): |
| (WebCore::invalidateForBackwardPositionalRules): |
| |
| Invalidate more precisely based on the new bits. |
| |
| (WebCore::checkForSiblingStyleChanges): |
| (WebCore::Element::setDescendantsAffectedByForwardPositionalRules): |
| (WebCore::Element::setDescendantsAffectedByBackwardPositionalRules): |
| (WebCore::Element::hasFlagsSetDuringStylingOfChildren const): |
| (WebCore::Element::rareDataDescendantsAffectedByForwardPositionalRules const): |
| (WebCore::Element::rareDataDescendantsAffectedByBackwardPositionalRules const): |
| |
| New bits. |
| |
| * dom/Element.h: |
| (WebCore::Element::descendantsAffectedByForwardPositionalRules const): |
| (WebCore::Element::descendantsAffectedByBackwardPositionalRules const): |
| * dom/ElementRareData.h: |
| (WebCore::ElementRareData::descendantsAffectedByForwardPositionalRules const): |
| (WebCore::ElementRareData::setDescendantsAffectedByForwardPositionalRules): |
| (WebCore::ElementRareData::descendantsAffectedByBackwardPositionalRules const): |
| (WebCore::ElementRareData::setDescendantsAffectedByBackwardPositionalRules): |
| (WebCore::ElementRareData::ElementRareData): |
| (WebCore::ElementRareData::resetStyleRelations): |
| * style/StyleRelations.cpp: |
| (WebCore::Style::commitRelationsToRenderStyle): |
| (WebCore::Style::commitRelations): |
| * style/StyleRelations.h: |
| |
| 2018-03-12 Javier Fernandez <jfernandez@igalia.com> |
| |
| Remove GridLayout runtime flag |
| https://bugs.webkit.org/show_bug.cgi?id=183484 |
| |
| Reviewed by Myles C. Maxfield. |
| |
| The Grid Layout feature has been enabled by default for almost a |
| year, so I think it's time to remove the runtime flag and the |
| codepath run when the feature is disabled. |
| |
| No new tests, because there are no changes in functionality. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::valueForContentPositionAndDistributionWithOverflowAlignment): |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/StyleBuilderConverter.h: |
| (WebCore::StyleBuilderConverter::convertContentAlignmentData): |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| (WebCore::operator==): |
| * css/parser/CSSParserFastPaths.cpp: |
| (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): |
| (WebCore::CSSParserFastPaths::isKeywordPropertyID): |
| * css/parser/CSSParserMode.h: |
| (WebCore::CSSParserContextHash::hash): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| * dom/Document.cpp: |
| * dom/Document.h: |
| * page/RuntimeEnabledFeatures.h: |
| * rendering/RenderFlexibleBox.cpp: |
| (WebCore::alignmentOffset): |
| * rendering/style/RenderStyle.cpp: |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::initialDefaultAlignment): |
| * testing/InternalSettings.cpp: |
| (WebCore::InternalSettings::Backup::Backup): |
| (WebCore::InternalSettings::Backup::restoreTo): |
| * testing/InternalSettings.h: |
| * testing/InternalSettings.idl: |
| |
| 2018-03-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Implement CSS Animations and CSS Transitions as Web Animations |
| https://bugs.webkit.org/show_bug.cgi?id=183504 |
| <rdar://problem/38372965> |
| |
| Reviewed by Dean Jackson and Jon Lee. |
| |
| Tests: webanimations/css-animations.html |
| webanimations/css-transitions.html |
| |
| This patch implements CSS Animations and CSS Transitions as Web Animations. The main changes are: |
| |
| * StyleTreeResolver: StyleTreeResolver now has a code path to add CSSAnimation and CSSTransition objects onto the DocumentTimeline |
| to be picked up by the Web Animations engine. The previous CSSAnimationController code path is preserved if the runtime flag is disabled. |
| |
| * AnimationTimeline: we add two new methods, updateCSSAnimationsForElement() and updateCSSTransitionsForElement() which are called from |
| TreeResolver::createAnimatedElementUpdate(). These look at the AnimationList for the old and new RenderStyle objects and create, update |
| and remove matching CSSAnimation and CSSTransition instances. |
| |
| * DeclarativeAnimation: a new superclass to both CSSAnimation and CSSTransition which introduces the concept of a backingAnimation(), |
| which is an Animation held by the RenderStyle objects, and two virtual methods with base implementations, initialize() which is called |
| upon creating by create() methods in subclasses, and syncPropertiesWithBackingAnimation() which ensures that properties on the |
| DeclarativeAnimation objects (Web Animations side) match the backing animation (CSS side). |
| |
| * KeyframeEffectReadOnly: two new important methods to create blending keyframes (KeyframeList) based on backing Animation objects, |
| computeCSSAnimationBlendingKeyframes() and computeCSSTransitionBlendingKeyframes(). |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/AnimationEffectReadOnly.h: |
| (WebCore::AnimationEffectReadOnly::isKeyframeEffectReadOnly const): We fix this method such that calling it on a KeyframeEffect, which |
| is a subclass of KeyframeEffectReadOnly, returns true. |
| * animation/AnimationEffectTimingReadOnly.cpp: In order for DeclarativeAnimation::syncPropertiesWithBackingAnimation() to set the timing |
| function for a declarative animation's effect, we need a public method to set an effect's timing function outside of just the "easing" |
| property setter exposed via the JS API. So we introduce a setTimingFunction() method and call it from setEasing(). |
| (WebCore::AnimationEffectTimingReadOnly::setEasing): |
| (WebCore::AnimationEffectTimingReadOnly::setTimingFunction): |
| * animation/AnimationEffectTimingReadOnly.h: |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::~AnimationTimeline): Clear all maps and sets containing WebAnimation references to ensure these get destructed |
| when the AnimationTimeline is being destructed and should no longer hold a reference to them. |
| (WebCore::AnimationTimeline::relevantMapForAnimation): We store various subclasses of WebAnimation in dedicated maps so we can composite |
| animations in the correct order when animating. This function returns the correct map for a given animation such that animationWasAddedToElement() |
| and animationWasRemovedFromElement() mutate the right map. |
| (WebCore::AnimationTimeline::animationWasAddedToElement): |
| (WebCore::AnimationTimeline::animationWasRemovedFromElement): |
| (WebCore::AnimationTimeline::animationsForElement): Make sure to look for animations in the lists of CSS Animations and CSS Transitions as well |
| as Web Animations. |
| (WebCore::AnimationTimeline::updateCSSAnimationsForElement): This method is called by TreeResolver::createAnimatedElementUpdate() during style |
| resolution. It compares the AnimationList of the previous style and the new style for a given element, checks that animations with a given name |
| that were not present in the old AnimationList have a new matching CSSAnimation object for them added to the AnimationTimeline, that animations |
| with a given name that are no longer present in the new AnimationList have their matching CSSAnimation object removed from the AnimationTimeline, |
| and that animations with a given name that are present in both the old and new AnimationList have their matching CSSAnimation updated to match |
| the current state of the animation in the AnimationList. |
| (WebCore::AnimationTimeline::updateCSSTransitionsForElement): Similarly to updateCSSAnimationsForElement(), this method is called during style |
| resolution by TreeResolver::createAnimatedElementUpdate(). Its role is to create or remove CSSTransition objects based on the AnimationList found |
| in the old and new styles for a given element. It follows a slightly different logic than updateCSSAnimationsForElement() since for CSS Transitions, |
| there is no need to update CSSTransition objects for a CSS property existing in both the old and new AnimationList, since when a CSS transitions |
| property is changed, a whole new transition is initiated. However, it's important to check that different Animation objects and styles would actually |
| result in different timing properties and blending keyframes, so check for this as well before creating new CSSTransition objects. |
| * animation/AnimationTimeline.h: |
| (WebCore::AnimationTimeline::animations const): Change the m_animations type from HashSet to ListHashSet to guarantee we preserve the insertion order which is |
| required by getAnimations(). |
| (WebCore::AnimationTimeline::hasElementAnimations const): Indicates to DocumentTimeline::updateAnimations() that there are animations targeting the provided element. |
| (WebCore::AnimationTimeline::elementToAnimationsMap): |
| (WebCore::AnimationTimeline::elementToCSSAnimationsMap): |
| (WebCore::AnimationTimeline::elementToCSSTransitionsMap): |
| * animation/CSSAnimation.cpp: CSSAnimation is now a subclass of DeclarativeAnimation and subclasses initialize() and syncPropertiesWithBackingAnimation() |
| to perform work specific to CSS Animations. |
| (WebCore::CSSAnimation::create): Set the animationName property based on the provided backing animation. |
| (WebCore::CSSAnimation::CSSAnimation): |
| (WebCore::CSSAnimation::initialize): Create the blending keyframes for this CSSAnimation. |
| (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Reflect the animation-fill-mode, animation-direction, animation-iteration-count and |
| animation-play-state CSS properties on the AnimationEffectTimingReadOnly object associated with this CSSAnimation. |
| * animation/CSSAnimation.h: |
| * animation/CSSTransition.cpp: CSSTransition is now a subclass of DeclarativeAnimation. |
| (WebCore::CSSTransition::create): Set the transitionProperty property based on the provided backing animation. |
| (WebCore::CSSTransition::CSSTransition): |
| (WebCore::CSSTransition::matchesBackingAnimationAndStyles const): |
| (WebCore::CSSTransition::canBeListed const): Subclass this method such that we also check that we have blending keyframes for a CSSTransition to be |
| listed by calls to getAnimations(). |
| * animation/CSSTransition.h: |
| * animation/DeclarativeAnimation.cpp: Added. This new WebAnimation subclass now is the common base class for both CSSAnimation and CSSTransition. |
| It establishes a relationship with a "backing animation", which is an Animation obtained from a style's AnimationList while resolving styles. |
| These backing animations contain all of the parsed CSS styles related to CSS Animations and CSS Transitions and we use those to set matching properties |
| of the Web Animations timing model in the new syncPropertiesWithBackingAnimation() virtual method, which subclasses can override to perform further |
| work that is specific to a given declarative animation type. The initialize() method is called during create() methods to perform common animation |
| setup work. Note that while both initialize() and syncPropertiesWithBackingAnimation() are called, we suspend invalidation to that animation's effect |
| since these methods are meant to be called during style invalidation and we would hit an assertion if we followed the usual route of calling |
| updateStyleIfNeeded() on the target's document during invalidation. |
| (WebCore::DeclarativeAnimation::DeclarativeAnimation): |
| (WebCore::DeclarativeAnimation::setBackingAnimation): |
| (WebCore::DeclarativeAnimation::initialize): Create a KeyframeEffectReadOnly for this animation and set the provided element as its target, set that |
| element's document's timeline and play the animation if the backing animation's play state is playing. |
| (WebCore::DeclarativeAnimation::syncPropertiesWithBackingAnimation): Reflect the {animation|transition}-delay, {animation|transition}-duration and |
| {animation|transition}-timing-function properties as set on the backing animation. |
| * animation/DeclarativeAnimation.h: Added. |
| (WebCore::DeclarativeAnimation::backingAnimation const): |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::updateAnimations): Trigger style invalidation for elements targeted not just by WebAnimation instances, but also by any |
| of the DeclarativeAnimation subclasses. We also remove the call to updateFinishedState() which should have been removed when we implemented correct |
| support for asynchronous WebAnimation operations. |
| (WebCore::DocumentTimeline::animatedStyleForRenderer): Declarative animations are backed by KeyframeEffectReadOnly effects, so make sure we check |
| for KeyframeEffectReadOnly or one of its subclasses and not just KeyframeEffect since there now are animation types that use the ReadOnly variant. |
| (WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated): Same as for animatedStyleForRenderer, check for KeyframeEffectReadOnly |
| and not simply KeyframeEffect. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::invalidateElement): Stop forcing a style resolution as we invalidate element, marking them as dirty is sufficient. Calls to getAnimations() |
| already force a style resolution as needed. |
| (WebCore::KeyframeEffectReadOnly::create): Add a new create() method that only provides a target and which is used by DeclarativeAnimation::initialize(). |
| (WebCore::KeyframeEffectReadOnly::getKeyframes): The previous implementation of getKeyframes() used the ParsedKeyframe list held as m_parsedKeyframes |
| to compute keyframes. In the case of declarative animations, there are no ParsedKeyframe since the JS API was not involved, so we use the blending keyframes |
| to look for keyframe data. |
| (WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): Called by CSSAnimation::initialize(), this function creates blending keyframes by |
| looking up the keyframes date obtained from the @keyframes rule with this backing animation's name. |
| (WebCore::KeyframeEffectReadOnly::computeCSSTransitionBlendingKeyframes): Called by CSSTransition::create(), this function creates blending keyframes by |
| creating a 0-offset keyframe with the old style and a 1-offset keyframe with the new style as provided during TreeResolver::createAnimatedElementUpdate(). |
| (WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): Called by AnimationTimeline::updateCSSTransitionsForElement() |
| to check that a provided backing Animation and a pair of old and new RenderStyles that may be different objects actually would yield different timing |
| properties and keyframe CSS values for a given CSS transition to avoid the deletion and creation of CSSTransition objects. |
| (WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): We mistakenly assumed we always had blending keyframes, which is not always the case with a |
| CSSTransition where the transition style itself might be set first, but the target value after. So we should only run accelerated provided there are blending |
| keyframes at least, the function already returning false if it finds a blending keyframe animating a non-accelerated CSS property. |
| (WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): Check that there actually is a matching ParsedKeyframe to read the timing function from. |
| * animation/KeyframeEffectReadOnly.h: |
| (WebCore::KeyframeEffectReadOnly::hasBlendingKeyframes const): |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::~WebAnimation): We used to do something very wrong when a WebAnimation was destroyed which uncovered crashes when dealing with |
| declarative animations. In AnimationTimeline's updateCSSAnimationsForElement() and updateCSSTransitionsForElement(), when we identify that a DeclarativeAnimation |
| no longer matches an Animation from the current style's AnimationList, we set that DeclarativeAnimation's effect to null and call removeAnimation() on |
| the timeline. This removes all references from AnimationTimeline to this DeclarativeAnimation and leads to ~WebAnimation being called. Calling removeAnimation() |
| again in the destructor means that we'd hit ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun) in ref(). It was also meaningless to perform this work in |
| the WebAnimation destructor since an animation could never be destroyed if it were still registered on a timeline. |
| (WebCore::WebAnimation::suspendEffectInvalidation): DeclarativeAnimation instances have their timing model properties set during style invalidation, so we need |
| a mechanism to allow the usual effect invalidation to be suspended in this case. We now maintain a simple m_suspendCount count that increases and decreases with |
| calls to this method and unsuspendEffectInvalidation() and a isEffectInvalidationSuspended() method returning true whenever that count is positive. |
| (WebCore::WebAnimation::unsuspendEffectInvalidation): |
| (WebCore::WebAnimation::timingModelDidChange): Check that effect invalidation is not suspended before proceeding with invalidating the effect. |
| (WebCore::WebAnimation::setEffect): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects. |
| (WebCore::WebAnimation::setTimeline): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects. |
| (WebCore::WebAnimation::scheduleMicrotaskIfNeeded): Ensure that the WebAnimation's lifecycle is extended at least to the completion of the scheduled microtask. |
| This would otherwise cause crashes after declarative animations were destroyed when they were no longer applied. |
| (WebCore::WebAnimation::runPendingPlayTask): Only fulfill the "ready" promise if it hasn't already been, which might have been the case if multiple calls to play() |
| are made as a result of updating the animation play state in CSSAnimation::syncPropertiesWithBackingAnimation(). |
| (WebCore::WebAnimation::runPendingPauseTask): Same as above but with multiple pause() calls. |
| (WebCore::WebAnimation::startOrStopAccelerated): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects. |
| (WebCore::WebAnimation::canBeListed const): This new method is called by {Document|Element}::getAnimations() to check that an animation is in the correct state to |
| be listed. The Web Animations spec explains that only animations "that have an associated target effect which is current or in effect" can be listed. We implement |
| this behavior as specified. |
| * animation/WebAnimation.h: |
| (WebCore::WebAnimation::isDeclarativeAnimation const): |
| (WebCore::WebAnimation::isEffectInvalidationSuspended): |
| * dom/Document.cpp: |
| (WebCore::Document::getAnimations): Ensure that the document's pending styles are resolved before returning animations to ensure that any pending declarative |
| animations are created. Additionally, we ensure that we only list qualifying animations that have effects targeting elements that are children of thi document. |
| * dom/Element.cpp: |
| (WebCore::Element::getAnimations): Same as Document::getAnimations(). |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): When resolving styles, call into the AnimationTimeline if the runtime flag to enable CSS Animations and |
| CSS Transitions as Web Animations is on. Otherwise, use CSSAnimationController. |
| |
| 2018-03-12 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] Crash in WebCore::PlatformDisplayWayland::~PlatformDisplayWayland |
| https://bugs.webkit.org/show_bug.cgi?id=176490 |
| |
| Reviewed by Žan Doberšek. |
| |
| Destroy the wl_display with wl_display_disconnect() (client process API), not |
| wl_display_destroy() (server process API). It has to be destroyed last, so explicitly |
| destroy the wl_registry and wl_compositor first. |
| |
| * platform/graphics/wayland/PlatformDisplayWayland.cpp: |
| (WebCore::PlatformDisplayWayland::~PlatformDisplayWayland): |
| |
| 2018-03-10 Megan Gardner <megan_gardner@apple.com> |
| |
| Media query for default appearance |
| https://bugs.webkit.org/show_bug.cgi?id=183539 |
| <rdar://problem/38326388> |
| |
| Reviewed by Tim Horton. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| Write a media query to evaluate appearance. |
| |
| * css/CSSValueKeywords.in: |
| * css/MediaFeatureNames.h: |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::defaultAppearanceEvaluate): |
| * css/MediaQueryExpression.cpp: |
| (WebCore::featureWithValidIdent): |
| (WebCore::isFeatureValidWithoutValue): |
| * page/Page.h: |
| (WebCore::Page::defaultAppearance const): |
| (WebCore::Page::setDefaultAppearance): |
| |
| 2018-03-10 Daniel Bates <dabates@apple.com> |
| |
| InlineTextBox should own shadow data |
| https://bugs.webkit.org/show_bug.cgi?id=183359 |
| <rdar://problem/38171343> |
| |
| Reviewed by Darin Adler. |
| |
| Following r229147 we recompute the selection style, including any shadow data, whenever we |
| paint the inline text box. Therefore, InlineTextBox needs to take ownership of the shadow |
| data or it may be deallocated before it can be used. |
| |
| Covered by existing tests. |
| |
| * rendering/InlineTextBox.cpp: Changed data type of InlineTextBox::MarkedTextStyle::textShadow |
| from const ShadowData* to std::optional<ShadowData>. Also removed explicitly deleted equality |
| and inequality operators as they are unnecessary. Layout tests should catch if these are ever |
| implemented and used when painting because the painted results will be wrong. |
| (WebCore::InlineTextBox::computeStyleForUnmarkedMarkedText const): Clone ShadowData. |
| (WebCore::InlineTextBox::resolveStyleForMarkedText): Simplified logic. |
| (WebCore::InlineTextBox::paintMarkedTextForeground): Modified code now that MarkedTextStyle |
| holds a std::optional<ShadowData>. |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): Ditto. |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::computeTextSelectionPaintStyle): Changed the out parameter type from const ShadowData* |
| to std::optional<ShadowData>& and modified code as needed. |
| * rendering/TextPaintStyle.h: |
| * rendering/style/ShadowData.cpp: Removed unncessary #include of header LayoutRect.h. |
| This header will be included via ShadowData.h. |
| (WebCore::ShadowData::clone): Convenience method that returns an std::optional to a |
| cloned ShadowData object. |
| * rendering/style/ShadowData.h: |
| |
| 2018-03-09 Zalan Bujtas <zalan@apple.com> |
| |
| Turn off offset*/scroll* optimization for input elements with shadow content |
| https://bugs.webkit.org/show_bug.cgi?id=182383 |
| <rdar://problem/37114190> |
| |
| Reviewed by Antti Koivisto. |
| |
| We normally ensure clean tree before calling offsetHeight/Width, scrollHeight/Width. |
| In certain cases (see updateLayoutIfDimensionsOutOfDate() for details), it's okay to return |
| the previously computed values even when some part of the tree is dirty. |
| In case of shadow content, updateLayoutIfDimensionsOutOfDate() might return false (no need to layout) |
| for the root, while true (needs layout) for the shadow content. |
| This could confuse the caller (Element::scrollWidth/Height etc) and lead to incorrect result. |
| |
| Test: fast/forms/scrollheight-with-mutation-crash.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::updateLayoutIfDimensionsOutOfDate): |
| |
| 2018-03-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] Copying a table from the Numbers app and pasting into iCloud Numbers fails |
| https://bugs.webkit.org/show_bug.cgi?id=183485 |
| <rdar://problem/38041984> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| After r222656, WebKit now treats raw image data on the pasteboard as files for the purposes of computing |
| DataTransfer.files and DataTransfer.types. However, this is combined with existing policies that suppress |
| DataTransfer.getData and DataTransfer.setData when the pasteboard contains files (generalized to copy/paste in |
| r222688). This means we now don't allow web pages to access "text/plain" in the case where the user copies part |
| of a table from the native Numbers app since Numbers additionally writes a snapshot of the table to the platform |
| pasteboard. |
| |
| This restriction on getData/setData was intended to prevent web pages from extracting users' file paths when |
| pasting or dropping, so it doesn't make sense to enforce this restriction even when there is only in-memory |
| image data on the pasteboard. To fix this bug, we make Pasteboard::fileContentState() differentiate between |
| cases where there are (real) files on the pasteboard, and cases where we've fallen back to treating image data |
| as files. |
| |
| Rebaselined existing LayoutTests to match new behavior. |
| Also covered by 4 new API tests: |
| - PasteMixedContent.ImageDataAndPlainText |
| - PasteMixedContent.ImageDataAndPlainTextAndURL |
| - PasteMixedContent.ImageDataAndPlainTextAndURLAndHTML |
| - UIPasteboardTests.DataTransferGetDataWhenPastingImageAndText |
| |
| * dom/DataTransfer.cpp: |
| (WebCore::DataTransfer::shouldSuppressGetAndSetDataToAvoidExposingFilePaths const): |
| |
| If custom pasteboard data is enabled, suppress getData and setData if and only if we might actually expose file |
| paths (see Pasteboard::fileContentState). |
| |
| (WebCore::DataTransfer::types const): |
| |
| Only allow "text/html" or "text/uri-list" in the case where there are actual files in the pasteboard. If there's |
| only image data, add all of the DOM-safe types back into the list of types. |
| |
| * platform/Pasteboard.h: |
| * platform/StaticPasteboard.h: |
| |
| Add an enum type to represent the result of Pasteboard::fileContentState. |
| - NoFileOrImageData indicates that there was nothing on the pasteboard that could be considered a file |
| from the point of view of the page. |
| - InMemoryImage indicates that there are no files on the pasteboard, but there is image data that we consider |
| to be files, exposed via DataTransfer API. |
| - MayContainFilePaths indicates that there might be file paths on the pasteboard. This means that the source |
| has either written file paths to the pasteboard (for example, through NSFilenamesPboardType) or the source |
| has written image data along with a URL type of some sort that does not match one of the allowed URL schemes |
| that are safe to expose (currently, these are http-family, data, or blob). |
| |
| * platform/cocoa/PasteboardCocoa.mm: |
| (WebCore::Pasteboard::fileContentState): |
| |
| Refactor to return one of the three enum types described above. |
| |
| (WebCore::Pasteboard::containsFiles): Deleted. |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::fileContentState): |
| (WebCore::Pasteboard::containsFiles): Deleted. |
| * platform/win/PasteboardWin.cpp: |
| (WebCore::Pasteboard::fileContentState): |
| (WebCore::Pasteboard::containsFiles): Deleted. |
| * platform/wpe/PasteboardWPE.cpp: |
| (WebCore::Pasteboard::fileContentState): |
| (WebCore::Pasteboard::containsFiles): Deleted. |
| |
| Adjust for Pasteboard::fileContentState() tweaks. |
| |
| 2018-03-09 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: WebKit seems to be running spell checker even on non-editable content text |
| https://bugs.webkit.org/show_bug.cgi?id=183456 |
| <rdar://problem/38076042> |
| |
| Reviewed by Joanmarie Diggs. |
| |
| Test: accessibility/mac/attributed-string/attributed-string-does-not-includes-misspelled-for-non-editable.html |
| |
| Only apply misspelled attributes if it's for editable text. It's not useful or performant to do this for static text. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (AXAttributeStringSetSpelling): |
| |
| 2018-03-09 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: More accessibility events support |
| https://bugs.webkit.org/show_bug.cgi?id=183023 |
| <rdar://problem/37764380> |
| |
| Reviewed by Chris Fleizach. |
| |
| The test is crashing when we call updateBackingStore when |
| the AXObjectCache object is gone. Added a check to fix that. |
| |
| Modified the test by using the right format of setTimeout and extended the delay. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::updateBackingStore): |
| |
| 2018-03-09 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed. Fix WinCairo build after r229497. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::getNormalizedMIMEType): |
| |
| 2018-03-09 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Clean up MIMETypeRegistry::mimeTypeAssociationMap for Curl |
| https://bugs.webkit.org/show_bug.cgi?id=170529 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::getNormalizedMIMEType): |
| (WebCore::mimeTypeAssociationMap): Deleted. |
| Create map with makeNeverDestroyed and a loop instead. |
| |
| 2018-03-09 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: there should only be one way for async backend commands to send failure |
| https://bugs.webkit.org/show_bug.cgi?id=183524 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Remove some useless ErrorString arguments. Fix some bugs where we |
| may never call the callback in an early exit situation. |
| |
| Covered by existing Inspector and protocol generator tests. |
| |
| * inspector/agents/InspectorDatabaseAgent.cpp: |
| (WebCore::InspectorDatabaseAgent::executeSQL): |
| * inspector/agents/InspectorDatabaseAgent.h: |
| * inspector/agents/InspectorIndexedDBAgent.h: |
| * inspector/agents/InspectorIndexedDBAgent.cpp: |
| (WebCore::getDocumentAndIDBFactoryFromFrameOrSendFailure): |
| (WebCore::InspectorIndexedDBAgent::requestDatabaseNames): |
| (WebCore::InspectorIndexedDBAgent::requestDatabase): |
| (WebCore::InspectorIndexedDBAgent::requestData): |
| (WebCore::InspectorIndexedDBAgent::clearObjectStore): |
| (WebCore::assertDocument): Deleted. |
| (WebCore::assertIDBFactory): Deleted. |
| Modernize this code a little bit to share the document/idbFactory extraction code. |
| |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::loadResource): |
| * inspector/agents/InspectorNetworkAgent.h: |
| |
| 2018-03-09 Youenn Fablet <youenn@apple.com> |
| |
| Crash in ServiceWorkerContainer::ready |
| https://bugs.webkit.org/show_bug.cgi?id=183380 |
| |
| Reviewed by Chris Dumez. |
| |
| Not using 'this' through lambdas. |
| Instead rely on the last lambda that is passed a ScriptExecutionContext& to get back 'this' which is a ServiceWorkerContainer. |
| |
| Should be covered by imported/w3c/web-platform-tests/service-workers/service-worker/register-default-scope.https.html no longer crashing. |
| Although it should probably be LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ready.https.html that should crash |
| since this is the main test using ready. |
| |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::ready): |
| |
| 2018-03-09 Youenn Fablet <youenn@apple.com> |
| |
| RealtimeOutgoingAudioSource and RealtimeOutgoingVideoSource should be destroyed on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=183483 |
| <rdar://problem/38214152> |
| |
| Reviewed by Eric Carlson. |
| |
| When dereferencing from libwebrtc code path, schedule a call to deref on main thread. |
| WebCore dereferencing is happening in the main thread so this guarantees destruction on the main thread. |
| |
| Covered by updated mock libwebrtc peer connection backend. |
| We make mock senders to keep a reference to their source which are RealtimeOutgoingXXSource. |
| We then make mock peer connection backend to free the mock senders in a background thread. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: |
| (WebCore::LibWebRTCPeerConnectionBackend::doStop): |
| * platform/mediastream/RealtimeOutgoingAudioSource.cpp: |
| (WebCore::RealtimeOutgoingAudioSource::stop): |
| * platform/mediastream/RealtimeOutgoingAudioSource.h: |
| * platform/mediastream/RealtimeOutgoingVideoSource.cpp: |
| (WebCore::RealtimeOutgoingVideoSource::stop): |
| * platform/mediastream/RealtimeOutgoingVideoSource.h: |
| * testing/MockLibWebRTCPeerConnection.cpp: |
| (WebCore::ThreadKeeper::create): |
| (WebCore::ThreadKeeper::setThread): |
| (WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection): |
| * testing/MockLibWebRTCPeerConnection.h: |
| |
| 2018-03-09 Jer Noble <jer.noble@apple.com> |
| |
| Unconditionalize more methods in VideoFullscreenInterface (and related classes) |
| https://bugs.webkit.org/show_bug.cgi?id=183501 |
| |
| Reviewed by Eric Carlson. |
| |
| No need for these methods to be PLATFORM(MAC) only. |
| |
| * platform/cocoa/PlaybackSessionModel.h: |
| (WebCore::PlaybackSessionModelClient::ensureControlsManager): |
| * platform/ios/VideoFullscreenInterfaceAVKit.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::isPlayingVideoInEnhancedFullscreen const): |
| * platform/mac/VideoFullscreenInterfaceMac.h: |
| |
| 2018-03-09 Youenn Fablet <youenn@apple.com> |
| |
| ServiceWorker should respect IDB and DOMCache partitioning |
| https://bugs.webkit.org/show_bug.cgi?id=183496 |
| |
| Reviewed by Brady Eidson. |
| |
| Test: http/wpt/service-workers/third-party-registration.html |
| |
| Set the correct top origin of service worker ScriptExecutionContext. |
| |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| |
| 2018-03-09 Youenn Fablet <youenn@apple.com> |
| |
| Cannot change audio input source device |
| https://bugs.webkit.org/show_bug.cgi?id=175975 |
| <rdar://problem/34073589> |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by manually testing https://webrtc.github.io/samples/src/content/devices/input-output/ with a USB web cam. |
| |
| * platform/mediastream/mac/CoreAudioCaptureSource.cpp: |
| (WebCore::CoreAudioSharedUnit::setCaptureDeviceID): |
| (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): |
| |
| 2018-03-09 Jer Noble <jer.noble@apple.com> |
| |
| Add new CSS env constants for use with fullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=183498 |
| |
| Reviewed by Dean Jackson. |
| |
| Tests: fullscreen/fullscreen-auto-hide-delay.html |
| fullscreen/fullscreen-inset-top.html |
| |
| * dom/ConstantPropertyMap.cpp: |
| (WebCore::ConstantPropertyMap::nameForProperty const): |
| (WebCore::variableDataForPositiveDuration): |
| (WebCore::ConstantPropertyMap::setFullscreenInsetTop): |
| (WebCore::ConstantPropertyMap::setFullscreenAutoHideDelay): |
| * dom/ConstantPropertyMap.h: |
| * page/Page.cpp: |
| (WebCore::Page::setFullscreenInsetTop): |
| (WebCore::Page::setFullscreenAutoHideDelay): |
| * page/Page.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::resetToConsistentState): |
| (WebCore::Internals::setFullscreenInsetTop): |
| (WebCore::Internals::setFullscreenAutoHideDelay): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-03-09 Zalan Bujtas <zalan@apple.com> |
| |
| RenderTreeBuilder::splitAnonymousBoxesAroundChild should take multicolumn spanners into account. |
| https://bugs.webkit.org/show_bug.cgi?id=183493 |
| <rdar://problem/38030461> |
| |
| Reviewed by Antti Koivisto. |
| |
| Multicolumn spanners are taken out of their original position and placed next |
| to a RenderMultiColumnSet. splitAnonymousBoxesAroundChild needs to know the original parent (in the render tree context). |
| |
| Test: fast/multicol/adjust-beforeChild-for-spanner-crash.html |
| |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::adjustBeforeChildForMultiColumnSpannerIfNeeded): |
| * rendering/updating/RenderTreeBuilderMultiColumn.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveChildrenInternal): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::attach): |
| |
| 2018-03-09 Jer Noble <jer.noble@apple.com> |
| |
| Add isPictureInPictureActive messaging across WebKit process boundary |
| https://bugs.webkit.org/show_bug.cgi?id=183499 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/cocoa/PlaybackSessionModel.h: |
| (WebCore::PlaybackSessionModelClient::pictureInPictureActiveChanged): |
| * platform/cocoa/PlaybackSessionModelMediaElement.h: |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::updateForEventName): |
| (WebCore::PlaybackSessionModelMediaElement::isPictureInPictureActive const): |
| * platform/ios/WebVideoFullscreenControllerAVKit.mm: |
| (VideoFullscreenControllerContext::isPictureInPictureActive const): |
| |
| 2018-03-09 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Implement connection limit. |
| https://bugs.webkit.org/show_bug.cgi?id=183016 |
| |
| Implement both connection limit per host and total |
| connection limit on curl network layer. |
| |
| Reviewed by Youenn Fablet. |
| |
| No new tests because there's no behavior change. |
| |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::EnvironmentVariableReader::sscanTemplate<signed>): |
| (WebCore::CurlContext::CurlContext): |
| (WebCore::CurlMultiHandle::setMaxConnects): |
| (WebCore::CurlMultiHandle::setMaxTotalConnections): |
| (WebCore::CurlMultiHandle::setMaxHostConnections): |
| * platform/network/curl/CurlContext.h: |
| (WebCore::CurlContext::scheduler): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::startWithJobManager): |
| (WebCore::CurlRequest::cancel): |
| (WebCore::CurlRequest::invokeDidReceiveResponseForFile): |
| (WebCore::CurlRequest::completeDidReceiveResponse): |
| (WebCore::CurlRequest::pausedStatusChanged): |
| * platform/network/curl/CurlRequestScheduler.cpp: |
| (WebCore::CurlRequestScheduler::CurlRequestScheduler): |
| (WebCore::CurlRequestScheduler::workerThread): |
| (WebCore::CurlRequestScheduler::singleton): Deleted. |
| * platform/network/curl/CurlRequestScheduler.h: |
| |
| 2018-03-09 Jer Noble <jer.noble@apple.com> |
| |
| webkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseudo selector changes; causes glitchiness |
| https://bugs.webkit.org/show_bug.cgi?id=183383 |
| |
| Reviewed by Eric Carlson. |
| |
| Fire the webkitfullscreenchange event at the same time as the pseudo class selector changes, during the handling |
| of webkitDidEnterFullScreenForElement. For WebKit2 clients, this is guaranteed to be asynchronous, since the |
| calling method originates in the UIProcess. For WebKit1 clients (and WKTR and DRT), there's the possibility that |
| webkitWillEnterFullScreenForElement will be called synchronously from within |
| Document::requestFullScreenForElement(), so break that synchronousness by starting the |
| ChromeClient::enterFullScreenForElement(...) process in a async task. |
| |
| Previously, the firing of the fullscreenchange event was done through a zero-length timer. Use a |
| GenericTaskQueue instead. |
| |
| A number of layout tests depend on the behavior that the element will be in fullscreen when the 'playing' event |
| fires. This was true for DRT (but not WKTR), since its fullscreen implementations were deliberately synchronous, but |
| won't necessarily be true for all ports. Fix this in a subsequent patch. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::requestFullScreenForElement): |
| (WebCore::Document::webkitExitFullscreen): |
| (WebCore::Document::webkitWillEnterFullScreenForElement): |
| (WebCore::Document::webkitDidEnterFullScreenForElement): |
| (WebCore::Document::webkitDidExitFullScreenForElement): |
| (WebCore::Document::dispatchFullScreenChangeEvents): |
| * dom/Document.h: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::setReadyState): |
| (WebCore::HTMLMediaElement::playInternal): |
| (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): |
| (WebCore::HTMLMediaElement::updatePlayState): |
| (WebCore::HTMLMediaElement::setPlaying): |
| |
| 2018-03-09 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Add threaded PaintingEngine implementation |
| https://bugs.webkit.org/show_bug.cgi?id=183511 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Add Nicosia::PaintingEngineThreaded, class that internally uses a thread |
| pool in which painting tasks are executed. |
| |
| Implementation for now defaults to using GLib's GThreadPool, defaulting |
| to 4 threads that are exclusive to this pool. These parameters should be |
| fine-tuned in the future, or even made configurable, but are a solid |
| basis for testing. |
| |
| In PaintingEngineThreaded::paint(), PaintingContext implementation is |
| used to record all the operations, and the gathered Vector is combined |
| with the Buffer object and dispatched into the thread pool. In the |
| thread function, the provided buffer and painting operations are run |
| through the PaintingContext implementation, replaying all the operations |
| on a painting context that draws into the given buffer. |
| |
| The recorded operation objects implement the PaintingOperation interface |
| contain all the data necessary to replay a given operation. They can be |
| executed against a PaintingOperationReplay object, as is the case during |
| PaintingContext::replay(), or they can be dumped into a TextStream |
| object for debugging purposes. |
| |
| PaintingContext now also provides the record() and replay() static |
| functions. PaintingContext objects now differ per purpose, which can be |
| either for painting or for recording. paint() and replay() use a |
| for-painting PaintingContext, and record() uses a for-recording one. |
| The for-painting PaintingContext receives a Buffer object, i.e. a memory |
| area on which it can draw, while the for-recording PaintingContext uses |
| the passed-in PaintingOperations Vector that should store all the |
| recorded operations. |
| |
| The current Cairo implementation of PaintingContext is moved into |
| PaintingContextCairo::ForPainting. PaintingContextCairo::ForRecording is |
| added but is currently no-op until a Cairo-specific GraphicsContextImpl |
| with recording capabilities is added, allowing any call on the |
| GraphicsContext object used in PaintingContext::record() to be recorded |
| for later replay. PaintingOperationReplayCairo, inheriting from |
| PaintingOperationReplay, will be used for replay purposes, providing |
| only reference to the PlatformContextCairo object that is constructed in |
| PaintingContextCairo::ForPainting. |
| |
| The Cairo-specific GraphicsContextImpl implementation will be added in |
| a separate patch. After that, PaintingEngine::create() will be modified |
| so that the Nicosia::PaintingEngineThreaded implementation can be used |
| for testing purposes, probably by setting an environment variable. |
| |
| * platform/TextureMapper.cmake: |
| * platform/graphics/nicosia/NicosiaPaintingContext.cpp: |
| (Nicosia::PaintingContext::createForPainting): |
| (Nicosia::PaintingContext::createForRecording): |
| (Nicosia::PaintingContext::create): Deleted. |
| * platform/graphics/nicosia/NicosiaPaintingContext.h: |
| (Nicosia::PaintingContext::paint): |
| (Nicosia::PaintingContext::record): |
| (Nicosia::PaintingContext::replay): |
| * platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp: Added. |
| (Nicosia::s_threadFunc): |
| (Nicosia::paintLayer): |
| (Nicosia::PaintingEngineThreaded::PaintingEngineThreaded): |
| (Nicosia::PaintingEngineThreaded::~PaintingEngineThreaded): |
| (Nicosia::PaintingEngineThreaded::paint): |
| * platform/graphics/nicosia/NicosiaPaintingEngineThreaded.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp. |
| * platform/graphics/nicosia/NicosiaPaintingOperation.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp. |
| * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: |
| (Nicosia::PaintingContextCairo::ForPainting::ForPainting): |
| (Nicosia::PaintingContextCairo::ForPainting::~ForPainting): |
| (Nicosia::PaintingContextCairo::ForPainting::graphicsContext): |
| (Nicosia::PaintingContextCairo::ForPainting::replay): |
| (Nicosia::PaintingContextCairo::ForRecording::ForRecording): |
| (Nicosia::PaintingContextCairo::ForRecording::graphicsContext): |
| (Nicosia::PaintingContextCairo::ForRecording::replay): |
| (Nicosia::PaintingContextCairo::PaintingContextCairo): Deleted. |
| (Nicosia::PaintingContextCairo::~PaintingContextCairo): Deleted. |
| (Nicosia::PaintingContextCairo::graphicsContext): Deleted. |
| * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.h: |
| * platform/graphics/nicosia/cairo/NicosiaPaintingOperationReplayCairo.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp. |
| (Nicosia::PaintingOperationReplayCairo::PaintingOperationReplayCairo): |
| |
| 2018-03-09 Zan Dobersek <zdobersek@igalia.com> |
| |
| Remove some unused cruft in TextureMapperLayer. |
| |
| The ScrollingClient class is not used anymore since r229318. |
| findScrollableContentsLayerAt() is similarly unused, but also lacking |
| an actual definition. ContentsLayerCount enum can also be purged. |
| |
| Rubber-stamped by Carlos Garcia Campos. |
| |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-08 Zan Dobersek <zdobersek@igalia.com> |
| |
| Add basic synchronization capability to Nicosia::Buffer |
| https://bugs.webkit.org/show_bug.cgi?id=183500 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Have Nicosia::Buffer track a painting state, and allow that state to be |
| modified and accessed from different threads. The PaintingState enum |
| value is protected by a Lock object, and can be modified via the |
| beginPainting() and completePainting() methods. Additionally, the |
| waitUntilPaintingComplete() method allows the caller to wait until the |
| painting is complete for the given Nicosia::Buffer object. |
| |
| This added state doesn't affect a Nicosia::Buffer object internally, and |
| doesn't have any effect on existing usages of Nicosia::Buffer (which |
| are not multi-threaded). |
| |
| * platform/graphics/nicosia/NicosiaBuffer.cpp: |
| (Nicosia::Buffer::beginPainting): |
| (Nicosia::Buffer::completePainting): |
| (Nicosia::Buffer::waitUntilPaintingComplete): |
| * platform/graphics/nicosia/NicosiaBuffer.h: |
| |
| 2018-03-08 Zan Dobersek <zdobersek@igalia.com> |
| |
| Move NicosiaPaintingContextCairo files under Cairo-specific directory |
| https://bugs.webkit.org/show_bug.cgi?id=183497 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Pack Cairo-specific files in the Nicosia subsystem under cairo/. |
| |
| * platform/TextureMapper.cmake: |
| * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: Renamed from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContextCairo.cpp. |
| * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.h: Renamed from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContextCairo.h. |
| |
| 2018-03-08 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: More accessibility events support |
| https://bugs.webkit.org/show_bug.cgi?id=183023 |
| <rdar://problem/37764380> |
| |
| Reviewed by Chris Fleizach. |
| |
| Fixed the crash that we shouldn't dispatch the accessibility events if the |
| event path is empty. |
| |
| Also added a check to not dispatch events if the runtime flag is not enabled. |
| |
| Test: accessibility/mac/AOM-events-webarea-crash.html |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEvent const): |
| * accessibility/AccessibilityObject.h: |
| |
| 2018-03-08 Megan Gardner <megan_gardner@apple.com> |
| |
| Allow WebViews to disable system appearance |
| https://bugs.webkit.org/show_bug.cgi?id=183418 |
| <rdar://problem/36975642> |
| |
| Reviewed by Tim Horton. |
| |
| Not currently testable, tests will be added in a later patch. |
| |
| Allow webviews to choose whether or not to follow the default system appearance. |
| |
| * css/StyleColor.cpp: |
| (WebCore::StyleColor::colorFromKeyword): |
| * css/StyleColor.h: |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::colorFromPrimitiveValue const): |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParser::parseSystemColor): |
| * css/parser/CSSParser.h: |
| * css/parser/CSSParserMode.h: |
| * html/canvas/CanvasRenderingContext2D.cpp: |
| (WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal): |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::setStrokeColor): |
| (WebCore::CanvasRenderingContext2DBase::setFillColor): |
| * html/canvas/CanvasStyle.cpp: |
| (WebCore::parseColor): |
| (WebCore::parseColorOrCurrentColor): |
| (WebCore::CanvasStyle::createFromString): |
| (WebCore::CanvasStyle::createFromStringWithOverrideAlpha): |
| * html/canvas/CanvasStyle.h: |
| * page/Page.h: |
| (WebCore::Page::useSystemAppearance const): |
| (WebCore::Page::setUseSystemAppearance): |
| * platform/Theme.cpp: |
| (WebCore::Theme::paint): |
| * platform/Theme.h: |
| * platform/mac/LocalDefaultSystemAppearance.h: |
| * platform/mac/LocalDefaultSystemAppearance.mm: |
| (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance): |
| (WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance): |
| * platform/mac/ThemeMac.h: |
| * platform/mac/ThemeMac.mm: |
| (-[WebCoreThemeView initWithUseSystemAppearance:]): |
| (WebCore::paintToggleButton): |
| (WebCore::paintButton): |
| (WebCore::ThemeMac::ensuredView): |
| (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): |
| (WebCore::ThemeMac::paint): |
| (-[WebCoreThemeView init]): Deleted. |
| * rendering/RenderTheme.cpp: |
| (WebCore::RenderTheme::paint): |
| (WebCore::RenderTheme::systemColor const): |
| (WebCore::RenderTheme::focusRingColor): |
| * rendering/RenderTheme.h: |
| (WebCore::RenderTheme::platformFocusRingColor const): |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::systemColor const): |
| * rendering/RenderThemeMac.h: |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::documentViewFor const): |
| (WebCore::RenderThemeMac::platformFocusRingColor const): |
| (WebCore::RenderThemeMac::systemColor const): |
| (WebCore::RenderThemeMac::paintCellAndSetFocusedElementNeedsRepaintIfNecessary): |
| (WebCore::RenderThemeMac::paintSliderThumb): |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::computeTextPaintStyle): |
| |
| 2018-03-08 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure default appearance for selection form control |
| https://bugs.webkit.org/show_bug.cgi?id=183482 |
| <rdar://problem/38274894> |
| |
| Reviewed by Tim Horton. |
| |
| The appearance for selection form controls was not set to default. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor const): |
| |
| 2018-03-08 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Compile error: pal/ExportMacros.h not found. |
| https://bugs.webkit.org/show_bug.cgi?id=183467 |
| |
| Reviewed by Brent Fulgham. |
| |
| PAL header files are no longer located under the WebCore folder in forwarding headers. An additional |
| build step is required to copy the PAL header files to the internal include folder. |
| |
| No new tests, no change in functionality. |
| |
| * PlatformWin.cmake: |
| * WebCore.vcxproj/WebCore.proj: |
| |
| 2018-03-08 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure system appearance is default for legacy webkit |
| https://bugs.webkit.org/show_bug.cgi?id=183473 |
| <rdar://problem/38210306> |
| |
| Reviewed by Tim Horton. |
| |
| Need to set the appearance on the window for legacy webkit due to differences in drawing. |
| |
| Not currently testable, will add tests in a later patch. |
| |
| * platform/mac/ThemeMac.mm: |
| (WebCore::paintButton): |
| |
| 2018-03-08 Youenn Fablet <youenn@apple.com> |
| |
| libwebrtc update broke internal builds |
| https://bugs.webkit.org/show_bug.cgi?id=183454 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| Fixed header search paths. |
| Removed deleted file from XCode project as an additional clean-up. |
| |
| * Configurations/WebCore.xcconfig: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-03-08 Per Arne Vollan <pvollan@apple.com> |
| |
| NSAnimation is not working in the WebContent process when WindowServer access is blocked. |
| https://bugs.webkit.org/show_bug.cgi?id=183291 |
| |
| Reviewed by Dean Jackson. |
| |
| The animation can be implemented by using an NSTimer instead. Use the existing Bezier timing |
| function to create a smooth animation. |
| |
| No new tests. This code is used to fade scrollbars in and out by animating the alpha value. |
| This scrollbar setting is not the default in macOS, which makes it non trivial to create |
| layout tests for this. |
| |
| * platform/mac/ScrollAnimatorMac.mm: |
| (-[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]): |
| (-[WebScrollbarPartAnimation startAnimation]): |
| (-[WebScrollbarPartAnimation setCurrentProgress:setCurrentProgress:]): |
| (-[WebScrollbarPartAnimation invalidate]): |
| (-[WebScrollbarPartAnimation setDuration:]): |
| (-[WebScrollbarPartAnimation stopAnimation]): |
| (-[WebScrollbarPartAnimation setCurrentProgress:]): Deleted. |
| |
| 2018-03-08 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Templatize SVGAnimatedType |
| https://bugs.webkit.org/show_bug.cgi?id=183017 |
| |
| Reviewed by Dean Jackson. |
| |
| This is a work toward https://bugs.webkit.org/show_bug.cgi?id=168586. The |
| goal to have SVGAnimatedType be type independent. The appropriate method |
| of this template will be implicitly instantiated based to the type of the |
| animated attribute(s). |
| |
| * Sources.txt: Delete SVGAnimatedType.cpp since its function became template |
| functions or short enough to be inline functions. |
| * WebCore.xcodeproj/project.pbxproj: |
| * svg/SVGAnimatedAngle.cpp: |
| (WebCore::SVGAnimatedAngleAnimator::constructFromString): |
| (WebCore::SVGAnimatedAngleAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedAngleAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedAngleAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): |
| Use the template functions SVGAnimatedType::create<>() and SVGAnimatedType::as<>(). |
| |
| * svg/SVGAnimatedBoolean.cpp: |
| (WebCore::SVGAnimatedBooleanAnimator::constructFromString): |
| (WebCore::SVGAnimatedBooleanAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedBooleanAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedColor.cpp: |
| (WebCore::SVGAnimatedColorAnimator::constructFromString): |
| (WebCore::SVGAnimatedColorAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedEnumeration.cpp: |
| (WebCore::SVGAnimatedEnumerationAnimator::constructFromString): |
| (WebCore::SVGAnimatedEnumerationAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedEnumerationAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedInteger.cpp: |
| (WebCore::SVGAnimatedIntegerAnimator::constructFromString): |
| (WebCore::SVGAnimatedIntegerAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedIntegerAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedIntegerAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedIntegerOptionalInteger.cpp: |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::constructFromString): |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedLength.cpp: |
| (WebCore::SVGAnimatedLengthAnimator::constructFromString): |
| (WebCore::SVGAnimatedLengthAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedLengthAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedLengthAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedLengthList.cpp: |
| (WebCore::SVGAnimatedLengthListAnimator::constructFromString): |
| (WebCore::SVGAnimatedLengthListAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedLengthListAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedLengthListAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedNumber.cpp: |
| (WebCore::SVGAnimatedNumberAnimator::constructFromString): |
| (WebCore::SVGAnimatedNumberAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedNumberAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedNumberAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedNumberList.cpp: |
| (WebCore::SVGAnimatedNumberListAnimator::constructFromString): |
| (WebCore::SVGAnimatedNumberListAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedNumberListAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedNumberListAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedNumberOptionalNumber.cpp: |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::constructFromString): |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedPath.cpp: |
| (WebCore::SVGAnimatedPathAnimator::constructFromString): |
| (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedPathAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedPointList.cpp: |
| (WebCore::SVGAnimatedPointListAnimator::constructFromString): |
| (WebCore::SVGAnimatedPointListAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedPointListAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedPointListAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedPreserveAspectRatio.cpp: |
| (WebCore::SVGAnimatedPreserveAspectRatioAnimator::constructFromString): |
| (WebCore::SVGAnimatedPreserveAspectRatioAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedPreserveAspectRatioAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedRect.cpp: |
| (WebCore::SVGAnimatedRectAnimator::constructFromString): |
| (WebCore::SVGAnimatedRectAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedRectAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedRectAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedString.cpp: |
| (WebCore::SVGAnimatedStringAnimator::constructFromString): |
| (WebCore::SVGAnimatedStringAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedStringAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): |
| Ditto. |
| |
| * svg/SVGAnimatedTransformList.cpp: |
| (WebCore::SVGAnimatedTransformListAnimator::constructFromString): |
| (WebCore::SVGAnimatedTransformListAnimator::startAnimValAnimation): |
| (WebCore::SVGAnimatedTransformListAnimator::resetAnimValToBaseVal): |
| (WebCore::SVGAnimatedTransformListAnimator::addAnimatedTypes): |
| (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): |
| (WebCore::SVGAnimatedTransformListAnimator::calculateDistance): |
| Ditto. |
| |
| * svg/SVGAnimatedType.cpp: Removed. |
| * svg/SVGAnimatedType.h: |
| (WebCore::SVGAnimatedType::create): |
| (WebCore::SVGAnimatedType::SVGAnimatedType): |
| (WebCore::SVGAnimatedType::~SVGAnimatedType): |
| (WebCore::SVGAnimatedType::as const): |
| (WebCore::SVGAnimatedType::as): |
| (WebCore::SVGAnimatedType::type const): |
| (WebCore::SVGAnimatedType::valueAsString const): |
| (WebCore::SVGAnimatedType::setValueAsString): |
| (WebCore::SVGAnimatedType::supportsAnimVal): |
| (WebCore::SVGAnimatedType::angleAndEnumeration const): Deleted. |
| (WebCore::SVGAnimatedType::boolean const): Deleted. |
| (WebCore::SVGAnimatedType::color const): Deleted. |
| (WebCore::SVGAnimatedType::enumeration const): Deleted. |
| (WebCore::SVGAnimatedType::integer const): Deleted. |
| (WebCore::SVGAnimatedType::integerOptionalInteger const): Deleted. |
| (WebCore::SVGAnimatedType::length const): Deleted. |
| (WebCore::SVGAnimatedType::lengthList const): Deleted. |
| (WebCore::SVGAnimatedType::number const): Deleted. |
| (WebCore::SVGAnimatedType::numberList const): Deleted. |
| (WebCore::SVGAnimatedType::numberOptionalNumber const): Deleted. |
| (WebCore::SVGAnimatedType::path const): Deleted. |
| (WebCore::SVGAnimatedType::pointList const): Deleted. |
| (WebCore::SVGAnimatedType::preserveAspectRatio const): Deleted. |
| (WebCore::SVGAnimatedType::rect const): Deleted. |
| (WebCore::SVGAnimatedType::string const): Deleted. |
| (WebCore::SVGAnimatedType::transformList const): Deleted. |
| (WebCore::SVGAnimatedType::angleAndEnumeration): Deleted. |
| (WebCore::SVGAnimatedType::boolean): Deleted. |
| (WebCore::SVGAnimatedType::color): Deleted. |
| (WebCore::SVGAnimatedType::enumeration): Deleted. |
| (WebCore::SVGAnimatedType::integer): Deleted. |
| (WebCore::SVGAnimatedType::integerOptionalInteger): Deleted. |
| (WebCore::SVGAnimatedType::length): Deleted. |
| (WebCore::SVGAnimatedType::lengthList): Deleted. |
| (WebCore::SVGAnimatedType::number): Deleted. |
| (WebCore::SVGAnimatedType::numberList): Deleted. |
| (WebCore::SVGAnimatedType::numberOptionalNumber): Deleted. |
| (WebCore::SVGAnimatedType::path): Deleted. |
| (WebCore::SVGAnimatedType::pointList): Deleted. |
| (WebCore::SVGAnimatedType::preserveAspectRatio): Deleted. |
| (WebCore::SVGAnimatedType::rect): Deleted. |
| (WebCore::SVGAnimatedType::string): Deleted. |
| (WebCore::SVGAnimatedType::transformList): Deleted. |
| Replace the union by a Variant. Replace all the type specific functions |
| by the template functions create() and as(). Use WTF::visit to get the |
| value stored in the variant. Use the SVGPropertyTraits to perform the |
| required operation. |
| |
| * svg/SVGAnimatedTypeAnimator.h: |
| (WebCore::SVGAnimatedTypeAnimator::constructFromBaseValue): |
| (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue): |
| (WebCore::SVGAnimatedTypeAnimator::stopAnimValAnimationForType): |
| (WebCore::SVGAnimatedTypeAnimator::animValDidChangeForType): |
| (WebCore::SVGAnimatedTypeAnimator::animValWillChangeForType): |
| (WebCore::SVGAnimatedTypeAnimator::constructFromBaseValues): |
| (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues): |
| (WebCore::SVGAnimatedTypeAnimator::stopAnimValAnimationForTypes): |
| (WebCore::SVGAnimatedTypeAnimator::animValDidChangeForTypes): |
| (WebCore::SVGAnimatedTypeAnimator::animValWillChangeForTypes): |
| (WebCore::SVGAnimatedTypeAnimator::executeAction): |
| Rename the parameters and the local variables to match their types. Use |
| the SVGAnimatedType template functions create() and as(). |
| |
| * svg/SVGLengthValue.h: |
| (WebCore::SVGPropertyTraits<SVGLengthValue>::parse): This was moved from |
| SVGAnimatedType::setValueAsString() |
| (WebCore::SVGPropertyTraits<SVGLengthValue>::toString): This was moved from |
| SVGAnimatedType::valueAsString(). |
| |
| * svg/SVGMarkerTypes.h: Add placeholders for parse() and toString() so |
| SVGAnimatedType::valueAsString() and setValueAsString() can compile for |
| all types. |
| |
| * svg/SVGNumberListValues.h: |
| (WebCore::SVGPropertyTraits<SVGNumberListValues>::parse): |
| * svg/SVGPathByteStream.h: |
| (WebCore::SVGPropertyTraits<SVGPathByteStream>::parse): |
| (WebCore::SVGPropertyTraits<SVGPathByteStream>::toString): |
| * svg/SVGPointListValues.h: |
| (WebCore::SVGPropertyTraits<SVGPointListValues>::parse): |
| (WebCore::SVGPropertyTraits<SVGPointListValues>::toString): |
| * svg/SVGPreserveAspectRatioValue.h: |
| (WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::fromString): |
| (WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::parse): |
| (WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::toString): |
| Ditto. |
| |
| * svg/SVGTransformListValues.h: |
| (WebCore::SVGPropertyTraits<SVGTransformListValues>::parse): |
| Ditto. |
| |
| * svg/SVGValue.h: Added. SVGValueVariant is the replacement of the union |
| SVGAnimatedType::DataUnion. |
| |
| * svg/properties/SVGPropertyInfo.h: |
| Add a minimum and maximum AnimatedPropertyType so, SVGAnimatedType::type() |
| can assert that the index of the variant is in the range of this enum. |
| |
| * svg/properties/SVGPropertyTraits.h: |
| (WebCore::SVGPropertyTraits<bool>::parse): |
| (WebCore::SVGPropertyTraits<unsigned>::parse): |
| (WebCore::SVGPropertyTraits<int>::parse): |
| Ditto. |
| |
| 2018-03-08 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [JSC][WebCore] Extend jsDynamicCast for WebCore types in WebCore and remove jsDynamicDowncast |
| https://bugs.webkit.org/show_bug.cgi?id=183449 |
| |
| Reviewed by Mark Lam. |
| |
| This patch removes jsDynamicDowncast. Our JSC::jsDynamicCast can have a way to inject a fast |
| path that is similar to jsDynamicDowncast. WebCore can leverage this functionality to add |
| a fast path for WebCore's extended JS object types (JSEvent, JSElement, JSNode, and JSDocument). |
| |
| No behavior change. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/CommonVM.cpp: |
| (WebCore::lexicalFrameFromCommonVM): |
| * bindings/js/JSDOMConvertBufferSource.h: |
| (WebCore::toPossiblySharedArrayBufferView): |
| * bindings/js/JSDOMConvertPromise.h: |
| (WebCore::Converter<IDLPromise<T>>::convert): |
| * bindings/js/JSDOMExceptionHandling.cpp: |
| (WebCore::reportException): |
| (WebCore::retrieveErrorMessage): |
| * bindings/js/JSDOMIterator.h: |
| (WebCore::IteratorTraits>::next): |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::JSDOMWindowProxy::toWrapped): |
| * bindings/js/JSDOMWrapperCache.h: |
| * bindings/js/JSDocumentCustom.h: |
| (JSC::JSCastingHelpers::InheritsTraits<WebCore::JSDocument>::inherits): |
| (WebCore::jsDocumentCast): Deleted. |
| * bindings/js/JSDynamicDowncast.h: Removed. |
| * bindings/js/JSElementCustom.h: |
| (JSC::JSCastingHelpers::InheritsTraits<WebCore::JSElement>::inherits): |
| (WebCore::jsElementCast): Deleted. |
| * bindings/js/JSEventCustom.h: |
| (JSC::JSCastingHelpers::InheritsTraits<WebCore::JSEvent>::inherits): |
| (WebCore::jsEventCast): Deleted. |
| * bindings/js/JSEventTargetCustom.cpp: |
| (WebCore::jsEventTargetCast): |
| * bindings/js/JSNodeCustom.h: |
| (JSC::JSCastingHelpers::InheritsTraits<WebCore::JSNode>::inherits): |
| (WebCore::jsNodeCast): Deleted. |
| * bindings/js/JSPluginElementFunctions.cpp: |
| (WebCore::pluginElementPropertyGetter): |
| * bindings/js/JSReadableStreamSourceCustom.cpp: |
| (WebCore::JSReadableStreamSource::start): |
| * bindings/js/JSWorkerGlobalScopeBase.cpp: |
| (WebCore::toJSDedicatedWorkerGlobalScope): |
| (WebCore::toJSWorkerGlobalScope): |
| (WebCore::toJSServiceWorkerGlobalScope): |
| * bindings/js/ReadableStream.cpp: |
| (WebCore::ReadableStream::create): |
| (WebCore::ReadableStream::isDisturbed): |
| * bindings/js/ReadableStream.h: |
| (WebCore::JSReadableStreamWrapperConverter::toWrapped): |
| * bindings/js/ScriptModuleLoader.cpp: |
| (WebCore::ScriptModuleLoader::evaluate): |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| (WebCore::CloneSerializer::serialize): |
| * bindings/js/StructuredClone.cpp: |
| (WebCore::structuredCloneArrayBufferView): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GetCastingHelperForThisObject): |
| (GenerateImplementation): |
| * bindings/scripts/test/JS/JSInterfaceName.cpp: |
| (WebCore::jsInterfaceNameConstructor): |
| (WebCore::setJSInterfaceNameConstructor): |
| (WebCore::JSInterfaceName::toWrapped): |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| (WebCore::IDLAttribute<JSMapLike>::cast): |
| (WebCore::IDLOperation<JSMapLike>::cast): |
| (WebCore::jsMapLikeConstructor): |
| (WebCore::setJSMapLikeConstructor): |
| (WebCore::JSMapLike::toWrapped): |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| (WebCore::IDLAttribute<JSReadOnlyMapLike>::cast): |
| (WebCore::IDLOperation<JSReadOnlyMapLike>::cast): |
| (WebCore::jsReadOnlyMapLikeConstructor): |
| (WebCore::setJSReadOnlyMapLikeConstructor): |
| (WebCore::JSReadOnlyMapLike::toWrapped): |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| (WebCore::IDLAttribute<JSTestActiveDOMObject>::cast): |
| (WebCore::IDLOperation<JSTestActiveDOMObject>::cast): |
| (WebCore::jsTestActiveDOMObjectConstructor): |
| (WebCore::setJSTestActiveDOMObjectConstructor): |
| (WebCore::JSTestActiveDOMObject::toWrapped): |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| (WebCore::IDLAttribute<JSTestCEReactions>::cast): |
| (WebCore::IDLOperation<JSTestCEReactions>::cast): |
| (WebCore::jsTestCEReactionsConstructor): |
| (WebCore::setJSTestCEReactionsConstructor): |
| (WebCore::JSTestCEReactions::toWrapped): |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| (WebCore::IDLAttribute<JSTestCEReactionsStringifier>::cast): |
| (WebCore::IDLOperation<JSTestCEReactionsStringifier>::cast): |
| (WebCore::jsTestCEReactionsStringifierConstructor): |
| (WebCore::setJSTestCEReactionsStringifierConstructor): |
| (WebCore::JSTestCEReactionsStringifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| (WebCore::IDLAttribute<JSTestCallTracer>::cast): |
| (WebCore::IDLOperation<JSTestCallTracer>::cast): |
| (WebCore::jsTestCallTracerConstructor): |
| (WebCore::setJSTestCallTracerConstructor): |
| (WebCore::JSTestCallTracer::toWrapped): |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| (WebCore::jsTestClassWithJSBuiltinConstructorConstructor): |
| (WebCore::setJSTestClassWithJSBuiltinConstructorConstructor): |
| (WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped): |
| * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: |
| (WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor): |
| (WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor): |
| (WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped): |
| * bindings/scripts/test/JS/JSTestDOMJIT.cpp: |
| (WebCore::IDLAttribute<JSTestDOMJIT>::cast): |
| (WebCore::IDLOperation<JSTestDOMJIT>::cast): |
| (WebCore::jsTestDOMJITConstructor): |
| (WebCore::setJSTestDOMJITConstructor): |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| (WebCore::IDLAttribute<JSTestEnabledBySetting>::cast): |
| (WebCore::IDLOperation<JSTestEnabledBySetting>::cast): |
| (WebCore::jsTestEnabledBySettingConstructor): |
| (WebCore::setJSTestEnabledBySettingConstructor): |
| (WebCore::JSTestEnabledBySetting::toWrapped): |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| (WebCore::IDLAttribute<JSTestEventConstructor>::cast): |
| (WebCore::jsTestEventConstructorConstructor): |
| (WebCore::setJSTestEventConstructorConstructor): |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| (WebCore::IDLOperation<JSTestEventTarget>::cast): |
| (WebCore::jsTestEventTargetConstructor): |
| (WebCore::setJSTestEventTargetConstructor): |
| (WebCore::JSTestEventTarget::toWrapped): |
| * bindings/scripts/test/JS/JSTestException.cpp: |
| (WebCore::IDLAttribute<JSTestException>::cast): |
| (WebCore::jsTestExceptionConstructor): |
| (WebCore::setJSTestExceptionConstructor): |
| (WebCore::JSTestException::toWrapped): |
| * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: |
| (WebCore::IDLAttribute<JSTestGenerateIsReachable>::cast): |
| (WebCore::jsTestGenerateIsReachableConstructor): |
| (WebCore::setJSTestGenerateIsReachableConstructor): |
| (WebCore::JSTestGenerateIsReachable::toWrapped): |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::IDLAttribute<JSTestGlobalObject>::cast): |
| (WebCore::IDLOperation<JSTestGlobalObject>::cast): |
| (WebCore::jsTestGlobalObjectConstructor): |
| (WebCore::setJSTestGlobalObjectConstructor): |
| (WebCore::JSTestGlobalObject::toWrapped): |
| * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: |
| (WebCore::jsTestIndexedSetterNoIdentifierConstructor): |
| (WebCore::setJSTestIndexedSetterNoIdentifierConstructor): |
| (WebCore::JSTestIndexedSetterNoIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: |
| (WebCore::jsTestIndexedSetterThrowingExceptionConstructor): |
| (WebCore::setJSTestIndexedSetterThrowingExceptionConstructor): |
| (WebCore::JSTestIndexedSetterThrowingException::toWrapped): |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| (WebCore::IDLOperation<JSTestIndexedSetterWithIdentifier>::cast): |
| (WebCore::jsTestIndexedSetterWithIdentifierConstructor): |
| (WebCore::setJSTestIndexedSetterWithIdentifierConstructor): |
| (WebCore::JSTestIndexedSetterWithIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestInterface.cpp: |
| (WebCore::IDLAttribute<JSTestInterface>::cast): |
| (WebCore::IDLOperation<JSTestInterface>::cast): |
| (WebCore::jsTestInterfaceConstructor): |
| (WebCore::setJSTestInterfaceConstructor): |
| (WebCore::JSTestInterface::toWrapped): |
| * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: |
| (WebCore::IDLAttribute<JSTestInterfaceLeadingUnderscore>::cast): |
| (WebCore::jsTestInterfaceLeadingUnderscoreConstructor): |
| (WebCore::setJSTestInterfaceLeadingUnderscoreConstructor): |
| (WebCore::JSTestInterfaceLeadingUnderscore::toWrapped): |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| (WebCore::IDLOperation<JSTestIterable>::cast): |
| (WebCore::jsTestIterableConstructor): |
| (WebCore::setJSTestIterableConstructor): |
| (WebCore::JSTestIterable::toWrapped): |
| * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: |
| (WebCore::IDLAttribute<JSTestJSBuiltinConstructor>::cast): |
| (WebCore::IDLOperation<JSTestJSBuiltinConstructor>::cast): |
| (WebCore::jsTestJSBuiltinConstructorConstructor): |
| (WebCore::setJSTestJSBuiltinConstructorConstructor): |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| (WebCore::IDLOperation<JSTestMediaQueryListListener>::cast): |
| (WebCore::jsTestMediaQueryListListenerConstructor): |
| (WebCore::setJSTestMediaQueryListListenerConstructor): |
| (WebCore::JSTestMediaQueryListListener::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: |
| (WebCore::jsTestNamedAndIndexedSetterNoIdentifierConstructor): |
| (WebCore::setJSTestNamedAndIndexedSetterNoIdentifierConstructor): |
| (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: |
| (WebCore::jsTestNamedAndIndexedSetterThrowingExceptionConstructor): |
| (WebCore::setJSTestNamedAndIndexedSetterThrowingExceptionConstructor): |
| (WebCore::JSTestNamedAndIndexedSetterThrowingException::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| (WebCore::IDLOperation<JSTestNamedAndIndexedSetterWithIdentifier>::cast): |
| (WebCore::jsTestNamedAndIndexedSetterWithIdentifierConstructor): |
| (WebCore::setJSTestNamedAndIndexedSetterWithIdentifierConstructor): |
| (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: |
| (WebCore::jsTestNamedConstructorConstructor): |
| (WebCore::setJSTestNamedConstructorConstructor): |
| (WebCore::JSTestNamedConstructor::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: |
| (WebCore::jsTestNamedDeleterNoIdentifierConstructor): |
| (WebCore::setJSTestNamedDeleterNoIdentifierConstructor): |
| (WebCore::JSTestNamedDeleterNoIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: |
| (WebCore::jsTestNamedDeleterThrowingExceptionConstructor): |
| (WebCore::setJSTestNamedDeleterThrowingExceptionConstructor): |
| (WebCore::JSTestNamedDeleterThrowingException::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| (WebCore::IDLOperation<JSTestNamedDeleterWithIdentifier>::cast): |
| (WebCore::jsTestNamedDeleterWithIdentifierConstructor): |
| (WebCore::setJSTestNamedDeleterWithIdentifierConstructor): |
| (WebCore::JSTestNamedDeleterWithIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: |
| (WebCore::jsTestNamedDeleterWithIndexedGetterConstructor): |
| (WebCore::setJSTestNamedDeleterWithIndexedGetterConstructor): |
| (WebCore::JSTestNamedDeleterWithIndexedGetter::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: |
| (WebCore::jsTestNamedGetterCallWithConstructor): |
| (WebCore::setJSTestNamedGetterCallWithConstructor): |
| (WebCore::JSTestNamedGetterCallWith::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: |
| (WebCore::jsTestNamedGetterNoIdentifierConstructor): |
| (WebCore::setJSTestNamedGetterNoIdentifierConstructor): |
| (WebCore::JSTestNamedGetterNoIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| (WebCore::IDLOperation<JSTestNamedGetterWithIdentifier>::cast): |
| (WebCore::jsTestNamedGetterWithIdentifierConstructor): |
| (WebCore::setJSTestNamedGetterWithIdentifierConstructor): |
| (WebCore::JSTestNamedGetterWithIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: |
| (WebCore::jsTestNamedSetterNoIdentifierConstructor): |
| (WebCore::setJSTestNamedSetterNoIdentifierConstructor): |
| (WebCore::JSTestNamedSetterNoIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: |
| (WebCore::jsTestNamedSetterThrowingExceptionConstructor): |
| (WebCore::setJSTestNamedSetterThrowingExceptionConstructor): |
| (WebCore::JSTestNamedSetterThrowingException::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| (WebCore::IDLOperation<JSTestNamedSetterWithIdentifier>::cast): |
| (WebCore::jsTestNamedSetterWithIdentifierConstructor): |
| (WebCore::setJSTestNamedSetterWithIdentifierConstructor): |
| (WebCore::JSTestNamedSetterWithIdentifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| (WebCore::IDLOperation<JSTestNamedSetterWithIndexedGetter>::cast): |
| (WebCore::jsTestNamedSetterWithIndexedGetterConstructor): |
| (WebCore::setJSTestNamedSetterWithIndexedGetterConstructor): |
| (WebCore::JSTestNamedSetterWithIndexedGetter::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| (WebCore::IDLOperation<JSTestNamedSetterWithIndexedGetterAndSetter>::cast): |
| (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterConstructor): |
| (WebCore::setJSTestNamedSetterWithIndexedGetterAndSetterConstructor): |
| (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: |
| (WebCore::jsTestNamedSetterWithOverrideBuiltinsConstructor): |
| (WebCore::setJSTestNamedSetterWithOverrideBuiltinsConstructor): |
| (WebCore::JSTestNamedSetterWithOverrideBuiltins::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| (WebCore::IDLAttribute<JSTestNamedSetterWithUnforgableProperties>::cast): |
| (WebCore::IDLOperation<JSTestNamedSetterWithUnforgableProperties>::cast): |
| (WebCore::jsTestNamedSetterWithUnforgablePropertiesConstructor): |
| (WebCore::setJSTestNamedSetterWithUnforgablePropertiesConstructor): |
| (WebCore::JSTestNamedSetterWithUnforgableProperties::toWrapped): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| (WebCore::IDLAttribute<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::cast): |
| (WebCore::IDLOperation<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::cast): |
| (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): |
| (WebCore::setJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): |
| (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::toWrapped): |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| (WebCore::IDLAttribute<JSTestNode>::cast): |
| (WebCore::IDLOperation<JSTestNode>::cast): |
| (WebCore::jsTestNodeConstructor): |
| (WebCore::setJSTestNodeConstructor): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::IDLAttribute<JSTestObj>::cast): |
| (WebCore::IDLOperation<JSTestObj>::cast): |
| (WebCore::jsTestObjConstructor): |
| (WebCore::setJSTestObjConstructor): |
| (WebCore::JSTestObj::toWrapped): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| (WebCore::jsTestOverloadedConstructorsConstructor): |
| (WebCore::setJSTestOverloadedConstructorsConstructor): |
| (WebCore::JSTestOverloadedConstructors::toWrapped): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: |
| (WebCore::jsTestOverloadedConstructorsWithSequenceConstructor): |
| (WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor): |
| (WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped): |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| (WebCore::IDLOperation<JSTestOverrideBuiltins>::cast): |
| (WebCore::jsTestOverrideBuiltinsConstructor): |
| (WebCore::setJSTestOverrideBuiltinsConstructor): |
| (WebCore::JSTestOverrideBuiltins::toWrapped): |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::jsTestPluginInterfaceConstructor): |
| (WebCore::setJSTestPluginInterfaceConstructor): |
| (WebCore::JSTestPluginInterface::toWrapped): |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| (WebCore::IDLAttribute<JSTestPromiseRejectionEvent>::cast): |
| (WebCore::jsTestPromiseRejectionEventConstructor): |
| (WebCore::setJSTestPromiseRejectionEventConstructor): |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| (WebCore::IDLAttribute<JSTestSerialization>::cast): |
| (WebCore::IDLOperation<JSTestSerialization>::cast): |
| (WebCore::jsTestSerializationConstructor): |
| (WebCore::setJSTestSerializationConstructor): |
| (WebCore::JSTestSerialization::toWrapped): |
| * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp: |
| (WebCore::jsTestSerializationIndirectInheritanceConstructor): |
| (WebCore::setJSTestSerializationIndirectInheritanceConstructor): |
| * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: |
| (WebCore::IDLAttribute<JSTestSerializationInherit>::cast): |
| (WebCore::IDLOperation<JSTestSerializationInherit>::cast): |
| (WebCore::jsTestSerializationInheritConstructor): |
| (WebCore::setJSTestSerializationInheritConstructor): |
| * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: |
| (WebCore::IDLAttribute<JSTestSerializationInheritFinal>::cast): |
| (WebCore::IDLOperation<JSTestSerializationInheritFinal>::cast): |
| (WebCore::jsTestSerializationInheritFinalConstructor): |
| (WebCore::setJSTestSerializationInheritFinalConstructor): |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| (WebCore::IDLAttribute<JSTestSerializedScriptValueInterface>::cast): |
| (WebCore::IDLOperation<JSTestSerializedScriptValueInterface>::cast): |
| (WebCore::jsTestSerializedScriptValueInterfaceConstructor): |
| (WebCore::setJSTestSerializedScriptValueInterfaceConstructor): |
| (WebCore::JSTestSerializedScriptValueInterface::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| (WebCore::IDLOperation<JSTestStringifier>::cast): |
| (WebCore::jsTestStringifierConstructor): |
| (WebCore::setJSTestStringifierConstructor): |
| (WebCore::JSTestStringifier::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| (WebCore::IDLOperation<JSTestStringifierAnonymousOperation>::cast): |
| (WebCore::jsTestStringifierAnonymousOperationConstructor): |
| (WebCore::setJSTestStringifierAnonymousOperationConstructor): |
| (WebCore::JSTestStringifierAnonymousOperation::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| (WebCore::IDLOperation<JSTestStringifierNamedOperation>::cast): |
| (WebCore::jsTestStringifierNamedOperationConstructor): |
| (WebCore::setJSTestStringifierNamedOperationConstructor): |
| (WebCore::JSTestStringifierNamedOperation::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| (WebCore::IDLOperation<JSTestStringifierOperationImplementedAs>::cast): |
| (WebCore::jsTestStringifierOperationImplementedAsConstructor): |
| (WebCore::setJSTestStringifierOperationImplementedAsConstructor): |
| (WebCore::JSTestStringifierOperationImplementedAs::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| (WebCore::IDLOperation<JSTestStringifierOperationNamedToString>::cast): |
| (WebCore::jsTestStringifierOperationNamedToStringConstructor): |
| (WebCore::setJSTestStringifierOperationNamedToStringConstructor): |
| (WebCore::JSTestStringifierOperationNamedToString::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| (WebCore::IDLAttribute<JSTestStringifierReadOnlyAttribute>::cast): |
| (WebCore::IDLOperation<JSTestStringifierReadOnlyAttribute>::cast): |
| (WebCore::jsTestStringifierReadOnlyAttributeConstructor): |
| (WebCore::setJSTestStringifierReadOnlyAttributeConstructor): |
| (WebCore::JSTestStringifierReadOnlyAttribute::toWrapped): |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| (WebCore::IDLAttribute<JSTestStringifierReadWriteAttribute>::cast): |
| (WebCore::IDLOperation<JSTestStringifierReadWriteAttribute>::cast): |
| (WebCore::jsTestStringifierReadWriteAttributeConstructor): |
| (WebCore::setJSTestStringifierReadWriteAttributeConstructor): |
| (WebCore::JSTestStringifierReadWriteAttribute::toWrapped): |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| (WebCore::IDLAttribute<JSTestTypedefs>::cast): |
| (WebCore::IDLOperation<JSTestTypedefs>::cast): |
| (WebCore::jsTestTypedefsConstructor): |
| (WebCore::setJSTestTypedefsConstructor): |
| (WebCore::JSTestTypedefs::toWrapped): |
| * bridge/objc/WebScriptObject.mm: |
| (-[WebScriptObject setValue:forKey:]): |
| * bridge/runtime_array.cpp: |
| (JSC::RuntimeArray::lengthGetter): |
| * bridge/runtime_method.cpp: |
| (JSC::RuntimeMethod::lengthGetter): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::controllerJSValue): |
| (WebCore::HTMLMediaElement::updateCaptionContainer): |
| (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot): |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::buildObjectForEventListener): |
| |
| 2018-03-08 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [JSC] Add inherits<T>(VM&) leveraging JSCast fast path |
| https://bugs.webkit.org/show_bug.cgi?id=183429 |
| |
| Reviewed by Mark Lam. |
| |
| * bindings/js/IDBBindingUtilities.cpp: |
| (WebCore::createIDBKeyFromValue): |
| * bindings/js/JSDOMConvertDate.cpp: |
| (WebCore::valueToDate): |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::JSDOMGlobalObject::scriptExecutionContext const): |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::JSDOMWindow::toWrapped): |
| * bindings/js/JSEventTargetCustom.cpp: |
| * bindings/js/JSNodeCustom.cpp: |
| (WebCore::JSNode::pushEventHandlerScope const): |
| * bindings/js/JSXPathNSResolverCustom.cpp: |
| (WebCore::JSXPathNSResolver::toWrapped): |
| * bindings/js/ScriptState.cpp: |
| (WebCore::domWindowFromExecState): |
| (WebCore::scriptExecutionContextFromExecState): |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::isArray): |
| (WebCore::CloneSerializer::isMap): |
| (WebCore::CloneSerializer::isSet): |
| (WebCore::CloneSerializer::dumpArrayBufferView): |
| (WebCore::CloneSerializer::dumpDOMPoint): |
| (WebCore::CloneSerializer::dumpDOMRect): |
| (WebCore::CloneSerializer::dumpDOMMatrix): |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| (WebCore::CloneDeserializer::CloneDeserializer): |
| (WebCore::CloneDeserializer::readArrayBufferView): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateOverloadDispatcher): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameterOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnionOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnionsOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnionOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnionOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameterOverloadDispatcher): |
| (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunctionOverloadDispatcher): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| (WebCore::JSTestOverloadedConstructorsConstructor::construct): |
| * bridge/c/c_instance.cpp: |
| (JSC::Bindings::CInstance::invokeMethod): |
| * bridge/objc/WebScriptObject.mm: |
| (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]): |
| * bridge/objc/objc_instance.mm: |
| (ObjcInstance::invokeMethod): |
| * bridge/objc/objc_runtime.mm: |
| (JSC::Bindings::callObjCFallbackObject): |
| * bridge/runtime_method.cpp: |
| (JSC::callRuntimeMethod): |
| * bridge/runtime_object.cpp: |
| (JSC::Bindings::callRuntimeObject): |
| (JSC::Bindings::callRuntimeConstructor): |
| * inspector/WebInjectedScriptHost.cpp: |
| (WebCore::WebInjectedScriptHost::subtype): |
| (WebCore::WebInjectedScriptHost::isHTMLAllCollection): |
| |
| 2018-03-08 Tim Horton <timothy_horton@apple.com> |
| |
| Stop linking ApplicationServices directly |
| https://bugs.webkit.org/show_bug.cgi?id=182867 |
| <rdar://problem/38252142> |
| |
| Reviewed by Alex Christensen. |
| |
| The frameworks that we use that live inside ApplicationServices |
| have mostly moved out, so import them directly. |
| |
| * Configurations/WebCore.xcconfig: |
| * html/canvas/CanvasRenderingContext2D.cpp: |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| * platform/MIMETypeRegistry.cpp: |
| * platform/graphics/ComplexTextController.cpp: |
| * platform/graphics/cg/ColorCG.cpp: |
| * platform/graphics/cg/ImageDecoderCG.cpp: |
| * platform/graphics/cg/UTIRegistry.cpp: |
| * platform/graphics/cocoa/FontCocoa.mm: |
| * platform/graphics/mac/ComplexTextControllerCoreText.mm: |
| * platform/graphics/mac/GlyphPageMac.cpp: |
| * platform/graphics/mac/PDFDocumentImageMac.mm: |
| * platform/graphics/mac/SimpleFontDataCoreText.cpp: |
| * platform/graphics/win/FontCGWin.cpp: |
| * platform/graphics/win/FontCacheWin.cpp: |
| * platform/graphics/win/FontCustomPlatformData.cpp: |
| * platform/graphics/win/FontPlatformDataCGWin.cpp: |
| * platform/graphics/win/ImageCGWin.cpp: |
| * platform/graphics/win/SimpleFontDataCGWin.cpp: |
| |
| 2018-03-07 Tim Horton <timothy_horton@apple.com> |
| |
| Sort and separate FeatureDefines.xcconfig |
| https://bugs.webkit.org/show_bug.cgi?id=183427 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| Sort and split FeatureDefines into paragraphs |
| (to make it easier to sort later). |
| |
| 2018-03-07 Zalan Bujtas <zalan@apple.com> |
| |
| Invalid innerTextRenderer in RenderTextControlSingleLine::styleDidChange() |
| https://bugs.webkit.org/show_bug.cgi?id=183385 |
| <rdar://problem/38085397> |
| |
| Reviewed by Antti Koivisto. |
| |
| When HTMLInputElement::updateType() is called with a dirty value, we eagerly change the m_inputType first |
| and then we take care of the dirty value by calling setAttributeWithoutSynchronization(). |
| With a DOMSubtreeModified event listener attached, setAttributeWithoutSynchronization() can end up running some |
| layout code (offsetHeight) with a renderer - m_inputType mismatch. |
| |
| This patch ensures that we don't change the m_inputType until after we finished setting the new value. |
| |
| Test: fast/DOM/HTMLInputElement/input-value-and-type-change-crash.html |
| |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::updateType): |
| |
| 2018-03-07 Chris Dumez <cdumez@apple.com> |
| |
| Get rid of custom bindings for History's replaceState() / pushState() |
| https://bugs.webkit.org/show_bug.cgi?id=183372 |
| |
| Reviewed by Youenn Fablet. |
| |
| Get rid of custom bindings for History's replaceState() / pushState() by |
| moving the cached state from the wrapper to the History implementation |
| object. |
| |
| No new tests, no web-facing behavior change. |
| |
| * bindings/js/JSHistoryCustom.cpp: |
| (WebCore::JSHistory::state const): |
| (WebCore::JSHistory::visitAdditionalChildren): |
| * page/History.cpp: |
| (WebCore::History::cachedState): |
| (WebCore::History::stateObjectAdded): |
| * page/History.h: |
| (WebCore::History::pushState): |
| (WebCore::History::replaceState): |
| * page/History.idl: |
| |
| 2018-03-07 Youenn Fablet <youenn@apple.com> |
| |
| Match unsupported plugins based on domains and not origin |
| https://bugs.webkit.org/show_bug.cgi?id=183384 |
| |
| Reviewed by Chris Dumez. |
| |
| Move from an origin-keyed map to a vector of plugins. |
| We iterate through the vector and a match happens if the page host name ends with the provided matching domain. |
| This allows supporting rules for *.mydomain.com by passing 'mydomain.com'. |
| Covered by existing tests. |
| We are not testing subdomains like www.localhost since there is no support in our CI but this is tested through Unit tests. |
| |
| * loader/EmptyClients.cpp: |
| * platform/URL.cpp: |
| (WebCore::URL::isMatchingDomain const): |
| * platform/URL.h: |
| * plugins/PluginData.h: |
| (WebCore::isSupportedPlugin): |
| (WebCore::SupportedPluginName::decode): |
| (WebCore::SupportedPluginName::encode const): |
| * plugins/PluginInfoProvider.h: |
| |
| 2017-12-18 Youenn Fablet <youenn@apple.com> |
| |
| Update to libwebrtc revision 4e70a72571dd26b85c2385e9c618e343428df5d3 |
| https://bugs.webkit.org/show_bug.cgi?id=180843 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by existing tests. |
| |
| Moving H264 codecs and factories to libwebrtc. |
| Updating LibWebRTCProvider according new libwebrtc API. |
| Updating ref counting according new libwebrtc API. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: |
| (WebCore::LibWebRTCMediaEndpoint::AddRef const): |
| (WebCore::LibWebRTCMediaEndpoint::Release const): |
| (WTF::LogArgument<webrtc::RTCStats>::toString): |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mediastream/RealtimeOutgoingAudioSource.h: |
| * platform/mediastream/RealtimeOutgoingVideoSource.h: |
| * platform/mediastream/libwebrtc/LibWebRTCAudioModule.h: |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: |
| (WebCore::LibWebRTCProvider::createPeerConnectionFactory): |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.h: |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProviderCocoa::~LibWebRTCProviderCocoa): |
| (WebCore::LibWebRTCProviderCocoa::createDecoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::createEncoderFactory): |
| (WebCore::LibWebRTCProviderCocoa::setActive): |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h: |
| * platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.cpp: Removed. |
| * platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.cpp: Removed. |
| * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: |
| (WebCore::ConvertToI420): |
| (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated): |
| * testing/Internals.cpp: |
| (WebCore::Internals::setH264HardwareEncoderAllowed): |
| * testing/MockLibWebRTCPeerConnection.h: |
| |
| 2018-03-07 Sihui Liu <sihui_liu@apple.com> |
| |
| replaceState cause back/forward malfunction on html page with <base href="/"> tag |
| https://bugs.webkit.org/show_bug.cgi?id=182678 |
| <rdar://problem/37517821> |
| |
| Reviewed by Chris Dumez. |
| |
| replaceState should not change URL when the URL argument is NULL, but should change URL when the URL argument is an empty string. |
| |
| Test: http/tests/history/replacestate-no-url.html |
| |
| * page/History.cpp: |
| (WebCore::History::urlForState): |
| |
| 2018-03-07 Antti Koivisto <antti@apple.com> |
| |
| Don't invalidate descendants for sibling combinators unless needed |
| https://bugs.webkit.org/show_bug.cgi?id=183410 |
| <rdar://problem/38227297> |
| |
| Reviewed by Zalan Bujtas. |
| |
| If we know the matched sibling combinator doesn't affect descendants we shouldn't invalidate them. |
| |
| * css/SelectorChecker.cpp: |
| (WebCore::SelectorChecker::matchRecursively const): |
| |
| Use different bit for the descendant case. |
| |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::fragmentMatchesTheRightmostElement): |
| |
| Remove unneeded context assert. |
| |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker): |
| |
| Use different bit for the descendant case. |
| |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorCheckerExcludingPseudoElements): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasPseudoElement): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateRequestedPseudoElementEqualsToSelectorPseudoElement): |
| * dom/Element.cpp: |
| (WebCore::invalidateForSiblingCombinators): |
| |
| Invalidate the target sibling or all descendants based on the bits. |
| |
| * dom/Element.h: |
| (WebCore::Element::descendantsAffectedByPreviousSibling const): |
| (WebCore::Element::setDescendantsAffectedByPreviousSibling const): |
| * dom/Node.h: |
| * style/StyleRelations.cpp: |
| (WebCore::Style::commitRelationsToRenderStyle): |
| (WebCore::Style::commitRelations): |
| * style/StyleRelations.h: |
| |
| Add DescendantsAffectedByPreviousSibling bit. AffectedByPreviousSibling is now just about the target element. |
| |
| 2018-03-07 Antti Koivisto <antti@apple.com> |
| |
| checkForSiblingStyleChanges should use internal versions of the invalidation functions |
| https://bugs.webkit.org/show_bug.cgi?id=183405 |
| <rdar://problem/38218310> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Non-internal invalidateStyleForElement/Subtree() implement sibling combinator invalidation. Checking this |
| is only needed if the element in question changed somehow. In checkForSiblingStyleChanges we know that |
| another element changed and we really just want to invalidate. |
| |
| * css/SelectorChecker.cpp: |
| (WebCore::isFirstOfType): |
| (WebCore::SelectorChecker::checkOne const): |
| |
| Also make :first-of-type use ChildrenAffectedByForwardPositionalRules for invalidation similar to :last-of-type |
| for more correct invalidation. |
| |
| * dom/Element.cpp: |
| (WebCore::checkForSiblingStyleChanges): |
| |
| 2018-03-07 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| HTML `pattern` attribute should set `u` flag for regular expressions |
| https://bugs.webkit.org/show_bug.cgi?id=151598 |
| |
| Reviewed by Chris Dumez. |
| |
| This patch attaches "u" flag to the RegExp compiled for HTML "pattern" attribute[1]. |
| |
| [1]: https://html.spec.whatwg.org/multipage/forms.html#the-pattern-attribute |
| |
| * html/BaseTextInputType.cpp: |
| (WebCore::BaseTextInputType::patternMismatch const): |
| |
| 2018-03-07 Frederic Wang <fwang@igalia.com> |
| |
| Relayout frames after AsyncFrameScrolling or FrameFlattening option is changed |
| https://bugs.webkit.org/show_bug.cgi?id=183081 |
| |
| Reviewed by Antonio Gomes. |
| |
| The frames may be resized when the FrameFlattening option is modified and hence this patch |
| forces a relayout. It also does that when AsyncFrameScrolling is modified too, since that |
| may imply changes in frame flattening after bug 173704. Forcing a relayout will also be |
| enough to trigger other updates for async frame scrolling in the future (see bug 149264 and |
| bug 171667). |
| |
| Test: platform/ios/fast/frames/flattening/iframe-flattening-async-frame-scrolling-dynamic.html |
| |
| * page/Settings.yaml: Call setNeedsRelayoutAllFrames when one of the AsyncFrameScrolling or |
| FrameFlattening options is changed. |
| * page/SettingsBase.cpp: Include RenderWidget to make call on frame->ownerRenderer(). |
| (WebCore::SettingsBase::setNeedsRelayoutAllFrames): Make layout and preferred widths dirty |
| on all frames in the page and schedule a relayout. |
| * page/SettingsBase.h: Declare setNeedsRelayoutAllFrames(). |
| |
| 2018-03-07 Alejandro G. Castro <alex@igalia.com> |
| |
| Make NetworkRTCResolver port agnostic |
| https://bugs.webkit.org/show_bug.cgi?id=178855 |
| |
| Reviewed by Youenn Fablet. |
| |
| Add new API in the DNSResolveQueue allowing to revolve hostnames and get the result. Add platform |
| specific code for soup platform and refactor the other platforms. Added new API to the DNS API header |
| and move the general code to the DNS.cpp file, that way we can reuse that code in all the platforms |
| and leave the ResolveQueue class of the platforms in a file. |
| |
| No new tests because this is a refactor. |
| |
| * PlatformAppleWin.cmake: Move the DNSCFNet class to DNSResolveQueueCFNet. |
| * PlatformMac.cmake: Ditto. |
| * Sources.txt: Add the DNS.cpp for compilation. |
| * SourcesCocoa.txt: Move the DNSCFNet class to DNSResolveQueueCFNet. |
| * WebCore.xcodeproj/project.pbxproj: Move the DNSCFNet class to DNSResolveQueueCFNet, add the DNS.cpp |
| for compilation. Add the new DNSResolveQueueCFNet class. |
| * platform/Curl.cmake: Move the DNSCFNet class to DNSResolveQueueCurl. |
| * platform/network/DNS.cpp: Add this file with the default implementation of the DNS functions for |
| all the platforms. |
| (WebCore::prefetchDNS): Copied from every platform implementation. |
| (WebCore::resolveDNS): Add the function, resolves a hostname, receives the identifier of the operation |
| and the completion handler. |
| (WebCore::stopResolveDNS): Add the function, stops a resolution operation, receives the identifier |
| of the operation. |
| * platform/network/DNS.h: Add the new APIs resolveDNS and stopResolveDNS with the classes used for the |
| implementation. |
| (WebCore::IPAddress::IPAddress): Add this class used to send the resolved address information, it does |
| not depend on libwebrtc rtc classes. |
| (WebCore::IPAddress::get): Get a reference to the struct sockaddr_in in the IPAddress class. |
| (WebCore::DNSCompletionHandler): Add this CompletionHandler type to be used when resolving the DNS |
| address. |
| * platform/network/DNSResolveQueue.cpp: Add the DNSResolveQueue platform instantiation in the singleton. |
| (WebCore::DNSResolveQueue::singleton): Use DNSResolveQueue platform classes when creating the singleton.. |
| (WebCore::DNSResolveQueue::resolve): Add this method to get the address of a hostname, it sends the |
| identifier and the completion handler to use when returning the result. |
| (WebCore::DNSResolveQueue::stopResolve): Add this method to stop the resolve operation when required. |
| * platform/network/DNSResolveQueue.h: Add the new methods and make the class abstract, so that every |
| platform can implement the functions. |
| * platform/network/cf/DNSResolveQueueCFNet.cpp: Renamed from Source/WebCore/platform/network/cf/DNSCFNet.cpp. |
| Add the methods to the new class DNSResolveQueueCFNet, move the prefetchDNS to the DNS.cpp general |
| implementation. |
| * platform/network/cf/DNSResolveQueueCFNet.h: Add the new class inheriting from the DNSResolveQueue. Add the |
| new methods, we have to implement these methods and move the NetworkRTCResolver for COCOA code here. |
| (WebCore::DNSResolveQueueCF::resolve): Dummy method, not implemented. |
| (WebCore::DNSResolveQueueCF::stopResolve): Ditto. |
| * platform/network/curl/DNSResolveQueueCurl.cpp: Renamed from Source/WebCore/platform/network/curl/DNSCurl.cpp. |
| * platform/network/curl/DNSResolveQueueCurl.h: Add the new class inheriting from the DNSResolveQueue. |
| (WebCore::DNSResolveQueueCurl::resolve): Ditto. |
| (WebCore::DNSResolveQueueCurl::stopResolve): Ditto. |
| * platform/network/soup/DNSResolveQueueSoup.h: New class inheriting from the DNSResolveQueue class, adding |
| a HasMap with the active operations, it allows stopping them. |
| * platform/network/soup/DNSResolveQueueSoup.cpp: Renamed from Source/WebCore/platform/network/curl/DNSSoup.cpp. |
| (WebCore::resolvedWithObserverCallback): Called when the result address from the soup platform is ready, |
| sends the address to the completion handler. |
| (WebCore::DNSResolveQueueSoup::resolve): Launch the resolve operation with the soup library. |
| (WebCore::DNSResolveQueueSoup::stopResolve): Stop the resolve operation on process with a GCancellable. |
| |
| 2018-03-06 Brian Burg <bburg@apple.com> |
| |
| [Cocoa] Stop copying ForwardingHeaders directory that no longer exists |
| https://bugs.webkit.org/show_bug.cgi?id=183396 |
| |
| Reviewed by Dan Bernstein. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| Rename the phase to "Copy ICU Headers". ForwardingHeaders are no longer a thing. |
| |
| 2018-03-06 Youenn Fablet <youenn@apple.com> |
| |
| didReceiveServerRedirectForProvisionalNavigation is not called in case of document redirection with service worker registration change |
| https://bugs.webkit.org/show_bug.cgi?id=183299 |
| <rdar://problem/37547029> |
| |
| Reviewed by Alex Christensen. |
| |
| In case of redirection with service worker registration change, we cancel the load and create a new one. |
| This prevent ResourceLoader::willSendRequestInternal to call the didReceiveServerRedirectForProvisionalNavigation |
| callback. We thus explictly call this callback after restarting the load with the new service worker step. |
| We only call this callback if the main resource is there as we do not want to call it if it was blocked by content extension. |
| |
| Test: http/wpt/service-workers/navigation-redirect-main-frame.https.html |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::restartLoadingDueToServiceWorkerRegistrationChange): |
| |
| 2018-03-06 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Remove unnecessary copied ResourceRequest member variable. |
| https://bugs.webkit.org/show_bug.cgi?id=183010 |
| |
| Reviewed by Youenn Fablet. |
| |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleInternal.h: |
| (WebCore::ResourceHandleInternal::ResourceHandleInternal): |
| * platform/network/curl/CurlRequest.h: |
| (WebCore::CurlRequest::resourceRequest const): |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandle::start): |
| (WebCore::ResourceHandle::addCacheValidationHeaders): |
| (WebCore::ResourceHandle::createCurlRequest): |
| (WebCore::ResourceHandle::restartRequestWithCredential): |
| (WebCore::ResourceHandle::continueAfterWillSendRequest): |
| |
| 2018-03-06 Nan Wang <n_wang@apple.com> |
| |
| AX: Flaky test after r229310 |
| https://bugs.webkit.org/show_bug.cgi?id=183376 |
| <rdar://problem/38188685> |
| |
| Reviewed by Chris Fleizach. |
| |
| The test that forces the context menu to show sometimes locks up |
| the test runner. Also, we missed a case where calling AXShowMenu |
| action on a combobox is not dispatching the accessibility event. |
| |
| Using the combobox example to test the event dispatching in order to |
| avoid the test hang. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityPerformShowMenuAction]): |
| (-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]): |
| |
| 2018-03-06 Chris Dumez <cdumez@apple.com> |
| |
| fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed.html fails with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183345 |
| |
| Reviewed by Alex Christensen. |
| |
| FrameLoader::loadURL() was calling loadWithNavigationAction() and then resetting the |
| m_quickRedirectComing flag right after. This works if the navigation policy decision |
| triggered by loadWithNavigationAction() is made synchronously. However, when it is |
| made asynchronously, the flag gets reset too early, before the policy decision |
| handler has been called. This is an issue because the policy decision handler |
| relies on the m_quickRedirectComing flag. |
| |
| Similarly, FrameLoader::loadFrameRequest() was calling loadPostRequest() / loadURL() |
| and then focusing a frame right after. This does not work as intended when the navigation |
| policy decision is made asynchronously. |
| |
| To address the issue, we now pass a completion handler that gets called when the operation |
| has actually completion, after the policy decision has been made. This maintains the |
| behavior in place with synchronous policy delegates. |
| |
| Test: fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-async-delegates.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURLIntoChildFrame): |
| (WebCore::FrameLoader::loadFrameRequest): |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::loadWithNavigationAction): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| (WebCore::FrameLoader::reloadWithOverrideEncoding): |
| (WebCore::FrameLoader::reload): |
| (WebCore::FrameLoader::loadPostRequest): |
| (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/FrameLoader.h: |
| |
| 2018-03-06 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Add a new CSSTransition subclass of WebAnimation |
| https://bugs.webkit.org/show_bug.cgi?id=183373 |
| <rdar://problem/38181985> |
| |
| Reviewed by Dean Jackson. |
| |
| Adding a new CSSAnimation subclass which we will create in a later patch while resolving styles |
| upon identifying that a new CSS Animation has been added to an element. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/CSSTransition.cpp: Added. |
| (WebCore::CSSTransition::create): |
| (WebCore::CSSTransition::CSSTransition): |
| * animation/CSSTransition.h: Added. |
| * animation/CSSTransition.idl: Added. |
| * animation/KeyframeEffect.cpp: |
| * animation/WebAnimation.h: |
| (WebCore::WebAnimation::isCSSTransition const): |
| * bindings/js/JSWebAnimationCustom.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/js/WebCoreBuiltinNames.h: |
| |
| 2018-03-06 Megan Gardner <megan_gardner@apple.com> |
| |
| Ensure system appearance is default for web content |
| https://bugs.webkit.org/show_bug.cgi?id=183354 |
| <rdar://problem/36975571> |
| <rdar://problem/38162381> |
| |
| Make sure the the system appearance for web content is default, and |
| consolidate that code to a single class. |
| |
| Reviewed by Tim Horton. |
| |
| Not currently testable, will add tests in a future patch. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mac/LocalDefaultSystemAppearance.h: Added. |
| * platform/mac/LocalDefaultSystemAppearance.mm: Added. |
| (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance): |
| (WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance): |
| * platform/mac/ThemeMac.mm: |
| (-[WebCoreThemeView init]): |
| (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::systemColor const): |
| |
| 2018-03-06 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Add a new runtime flag to control whether CSS Animations and CSS Transitions should run using the Web Animations timeline |
| https://bugs.webkit.org/show_bug.cgi?id=183370 |
| <rdar://problem/38180729> |
| |
| Reviewed by Dean Jackson. |
| |
| Before we start creating WebAnimation objects to perform CSS Animations and CSS Transitions, which will replace the existing codepath |
| involving CSSAnimationController and CompositeAnimation, we need a runtime flag that will allow all the new code to be turned off by |
| default while we bring this feature up. |
| |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): |
| (WebCore::RuntimeEnabledFeatures::cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled const): |
| |
| 2018-03-06 Daniel Bates <dabates@apple.com> |
| |
| Make more use of USE(OPENGL_ES) and replace typedefs with C++11 using statements |
| in TextureCacheCV.h |
| |
| Rubber-stamped by Tim Horton. |
| |
| * platform/graphics/cv/TextureCacheCV.h: |
| |
| 2018-03-06 Antti Koivisto <antti@apple.com> |
| |
| Cache hasComplexSelectorsForStyleAttribute bit |
| https://bugs.webkit.org/show_bug.cgi?id=183363 |
| |
| Reviewed by Andreas Kling. |
| |
| * css/DocumentRuleSets.cpp: |
| (WebCore::DocumentRuleSets::collectFeatures const): |
| (WebCore::DocumentRuleSets::hasComplexSelectorsForStyleAttribute const): |
| |
| Cache the bit to avoid hash lookups. |
| |
| * css/DocumentRuleSets.h: |
| * dom/StyledElement.cpp: |
| (WebCore::StyledElement::invalidateStyleAttribute): |
| (WebCore::shouldSynchronizeStyleAttributeImmediatelyForInvalidation): Deleted. |
| |
| Move code to DocumentRuleSets. |
| |
| 2018-03-06 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Change the type of SVGToOTFFontConverter::m_weight to be not a char |
| https://bugs.webkit.org/show_bug.cgi?id=183339 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because there is no behavior change. |
| |
| * svg/SVGToOTFFontConversion.cpp: |
| (WebCore::SVGToOTFFontConverter::appendOS2Table): |
| (WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter): |
| |
| 2018-03-06 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Add a new CSSAnimation subclass of WebAnimation |
| https://bugs.webkit.org/show_bug.cgi?id=183371 |
| <rdar://problem/38181724> |
| |
| Reviewed by Dean Jackson. |
| |
| Adding a new CSSAnimation subclass which we will create in a later patch while resolving styles |
| upon identifying that a new CSS Animation has been added to an element. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/CSSAnimation.cpp: Added. |
| (WebCore::CSSAnimation::create): |
| (WebCore::CSSAnimation::CSSAnimation): |
| * animation/CSSAnimation.h: Added. |
| * animation/CSSAnimation.idl: Added. |
| * animation/KeyframeEffectReadOnly.cpp |
| * animation/WebAnimation.h: |
| (WebCore::WebAnimation::isCSSAnimation const): |
| * animation/WebAnimation.idl: |
| * bindings/js/JSWebAnimationCustom.cpp: |
| (WebCore::toJSNewlyCreated): |
| (WebCore::toJS): |
| * bindings/js/WebCoreBuiltinNames.h: |
| |
| 2018-03-06 Ms2ger <Ms2ger@igalia.com> |
| |
| Explicitly qualify some method calls on this in lambdas in Service Worker code. |
| https://bugs.webkit.org/show_bug.cgi?id=183367 |
| |
| Reviewed by Chris Dumez. |
| |
| No new tests -- no change in behavior. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::matchAll): |
| |
| 2018-03-06 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Remove unused scrolling-related code in TextureMapperLayer, CoordinatedGraphics stack |
| https://bugs.webkit.org/show_bug.cgi?id=183340 |
| |
| Reviewed by Michael Catanzaro. |
| |
| TextureMapperLayer::scrollBy() method is completely unused and can be |
| removed. This opens the gates on removing majority of scrolling-related |
| code in TextureMapperLayer, CoordinatedGraphicsLayer and |
| CoordinatedGraphicsScene classes, along with smaller bits in other |
| closely-associated classes. |
| |
| We're able to remove two virtual method overrides in the |
| ScrollingCoordinatorCoordinatedGraphics class. |
| |
| TextureMapperLayer can drop the ScrollingClient member variable, along |
| with multiple others. Various unused methods in that class are removed |
| as well. |
| |
| CoordinatedGraphicsLayer and GraphicsLayerTextureMapper can both remove |
| the custom scrolling state tracking. |
| |
| No new tests -- no change in behavior. |
| |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp: |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::scrollableAreaScrollLayerDidChange): Deleted. |
| (WebCore::ScrollingCoordinatorCoordinatedGraphics::willDestroyScrollableArea): Deleted. |
| * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h: |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::GraphicsLayerTextureMapper): |
| (WebCore::GraphicsLayerTextureMapper::commitLayerChanges): |
| (WebCore::GraphicsLayerTextureMapper::didCommitScrollOffset): Deleted. |
| (WebCore::GraphicsLayerTextureMapper::setIsScrollable): Deleted. |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.h: |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::hitTest): Deleted. |
| (WebCore::TextureMapperLayer::scrollableLayerHitTestCondition): Deleted. |
| (WebCore::TextureMapperLayer::findScrollableContentsLayerAt): Deleted. |
| (WebCore::TextureMapperLayer::mapScrollOffset): Deleted. |
| (WebCore::TextureMapperLayer::commitScrollOffset): Deleted. |
| (WebCore::TextureMapperLayer::scrollBy): Deleted. |
| (WebCore::TextureMapperLayer::didCommitScrollOffset): Deleted. |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): |
| (WebCore::CoordinatedGraphicsLayer::syncLayerState): |
| (WebCore::CoordinatedGraphicsLayer::resetLayerState): |
| (WebCore::CoordinatedGraphicsLayer::setScrollableArea): Deleted. |
| (WebCore::CoordinatedGraphicsLayer::commitScrollOffset): Deleted. |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h: |
| |
| 2018-03-06 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Apply TextureMapperLayer animations with a single MonotonicTime value |
| https://bugs.webkit.org/show_bug.cgi?id=183360 |
| |
| Reviewed by Sergio Villar Senin. |
| |
| When animations are being applied on the TextureMapperLayer tree, the |
| monotonic time value is retrieved repeatedly in TextureMapperAnimation |
| class. Instead of spawning repeated syscalls that are required to obtain |
| the time value, TextureMapperLayer::applyAnimationsRecursively() now |
| accepts a MonotonicTime value that should be used for all animation |
| updates. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::flushCompositingStateForThisLayerOnly): |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| (WebCore::TextureMapperAnimation::apply): |
| (WebCore::TextureMapperAnimation::computeTotalRunningTime): |
| (WebCore::TextureMapperAnimations::apply): |
| * platform/graphics/texmap/TextureMapperAnimation.h: |
| (WebCore::TextureMapperAnimation::keyframes const): |
| (WebCore::TextureMapperAnimation::animation const): |
| (WebCore::TextureMapperAnimation::boxSize const): Deleted. |
| (WebCore::TextureMapperAnimation::listsMatch const): Deleted. |
| (WebCore::TextureMapperAnimation::startTime const): Deleted. |
| (WebCore::TextureMapperAnimation::pauseTime const): Deleted. |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::applyAnimationsRecursively): |
| (WebCore::TextureMapperLayer::syncAnimations): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| |
| 2018-03-06 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Clean up CoordinatedImageBacking |
| https://bugs.webkit.org/show_bug.cgi?id=183332 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Clean up the CoordinatedImageBacking class. Prefer reference values in |
| class functions, methods and member variables, where possible. Move |
| member variables into a more sensible order. Initialize a few member |
| variables at the place of declaration. |
| |
| Drop releaseSurfaceIfNeeded() and updateVisibilityIfNeeded() methods, |
| integrating them into the update() method, which was the only place |
| where they were called from. |
| |
| We don't have to keep a reference to the buffer object, since we're |
| not using it internally after it's been passed to the client's |
| updateImageBacking() implementation. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::syncImageBacking): |
| (WebCore::CoordinatedGraphicsLayer::releaseImageBackingIfNeeded): |
| * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: |
| (WebCore::CoordinatedImageBacking::getCoordinatedImageBackingID): |
| (WebCore::CoordinatedImageBacking::CoordinatedImageBacking): |
| (WebCore::CoordinatedImageBacking::addHost): |
| (WebCore::CoordinatedImageBacking::removeHost): |
| (WebCore::CoordinatedImageBacking::update): |
| (WebCore::CoordinatedImageBacking::clearContentsTimerFired): |
| (WebCore::CoordinatedImageBacking::create): Deleted. |
| (WebCore::CoordinatedImageBacking::markDirty): Deleted. |
| (WebCore::CoordinatedImageBacking::releaseSurfaceIfNeeded): Deleted. |
| (WebCore::CoordinatedImageBacking::updateVisibilityIfNeeded): Deleted. |
| * platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: |
| |
| 2018-03-06 Zan Dobersek <zdobersek@igalia.com> |
| |
| GraphicsLayerTextureMapper: remove the setAnimations() method |
| https://bugs.webkit.org/show_bug.cgi?id=183358 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Remove the GraphicsLayerTextureMapper::setAnimations() method. This was |
| not called from anywhere, and is not the way animations are generated |
| for a given GraphicsLayer object (that would be addAnimation() method). |
| |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::setAnimations): Deleted. |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.h: |
| |
| 2018-03-06 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: More accessibility events support |
| https://bugs.webkit.org/show_bug.cgi?id=183023 |
| <rdar://problem/37764380> |
| |
| Reviewed by Chris Fleizach. |
| |
| Accessibility events. |
| Spec: https://wicg.github.io/aom/spec/phase2.html |
| |
| This change adds support for these new events: |
| accessiblecontextmenu |
| accessibledecrement |
| accessibledismiss |
| accessiblefocus |
| accessibleincrement |
| accessiblescrollintoview |
| accessibleselect |
| |
| Note: The show context menu action is only supported on macOS now. |
| The dismiss action is not implemented for all the platforms yet. |
| |
| Test: accessibility/mac/AOM-events-all.html |
| |
| * accessibility/AccessibilityListBoxOption.cpp: |
| (WebCore::AccessibilityListBoxOption::setSelected): |
| * accessibility/AccessibilityMediaObject.cpp: |
| (WebCore::AccessibilityMediaObject::increment): |
| (WebCore::AccessibilityMediaObject::decrement): |
| * accessibility/AccessibilityMenuListOption.cpp: |
| (WebCore::AccessibilityMenuListOption::setSelected): |
| * accessibility/AccessibilityNodeObject.cpp: |
| (WebCore::AccessibilityNodeObject::increment): |
| (WebCore::AccessibilityNodeObject::decrement): |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::press): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEvent const): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEventWithType const): |
| (WebCore::AccessibilityObject::dispatchAccessibleSetValueEvent const): |
| (WebCore::AccessibilityObject::scrollToMakeVisible const): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEvent): Deleted. |
| (WebCore::AccessibilityObject::dispatchAccessibleSetValueEvent): Deleted. |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::setFocused): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]): |
| * dom/Element.idl: |
| * dom/EventNames.h: |
| |
| 2018-03-05 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Fix std::make_unique / new[] using system malloc |
| https://bugs.webkit.org/show_bug.cgi?id=182975 |
| |
| Reviewed by JF Bastien. |
| |
| Use Vector, FAST_ALLOCATED, or UniqueArray instead. |
| |
| * Modules/webaudio/AudioBufferSourceNode.cpp: |
| (WebCore::AudioBufferSourceNode::setBuffer): |
| * Modules/webaudio/AudioBufferSourceNode.h: |
| * css/StyleRule.h: |
| * cssjit/CompiledSelector.h: |
| * html/HTMLFrameSetElement.h: |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): |
| (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): |
| (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::LRUImageBufferCache): |
| (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): |
| (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::bubbleToFront): |
| * html/canvas/WebGLRenderingContextBase.h: |
| * platform/Length.cpp: |
| (WebCore::newCoordsArray): |
| (WebCore::newLengthArray): |
| (): Deleted. |
| * platform/Length.h: |
| * platform/audio/DynamicsCompressor.cpp: |
| (WebCore::DynamicsCompressor::setNumberOfChannels): |
| * platform/audio/DynamicsCompressor.h: |
| * platform/audio/FFTFrame.h: |
| * platform/audio/gstreamer/FFTFrameGStreamer.cpp: |
| (WebCore::FFTFrame::FFTFrame): |
| * platform/graphics/FormatConverter.h: |
| (WebCore::FormatConverter::FormatConverter): |
| * platform/graphics/GraphicsContext3D.cpp: |
| (WebCore::GraphicsContext3D::texImage2DResourceSafe): |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/ca/win/CACFLayerTreeHost.cpp: |
| (WebCore::getDirtyRects): |
| * platform/graphics/cairo/CairoUtilities.cpp: |
| (WebCore::flipImageSurfaceVertically): |
| * platform/graphics/cg/GraphicsContext3DCG.cpp: |
| (WebCore::GraphicsContext3D::ImageExtractor::extractImage): |
| * platform/graphics/gpu/Texture.cpp: |
| (WebCore::Texture::updateSubRect): |
| * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: |
| (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): |
| (WebCore::GraphicsContext3D::compileShader): |
| (WebCore::GraphicsContext3D::getActiveAttribImpl): |
| (WebCore::GraphicsContext3D::getActiveUniformImpl): |
| (WebCore::GraphicsContext3D::getProgramInfoLog): |
| (WebCore::GraphicsContext3D::getShaderInfoLog): |
| * platform/graphics/texmap/TextureMapperShaderProgram.cpp: |
| (WebCore::getShaderLog): |
| (WebCore::getProgramLog): |
| * platform/graphics/win/ImageBufferDataDirect2D.cpp: |
| (WebCore::ImageBufferData::putData): |
| * platform/image-decoders/png/PNGImageDecoder.cpp: |
| (WebCore::PNGImageReader::PNGImageReader): |
| (WebCore::PNGImageReader::close): |
| (WebCore::PNGImageReader::interlaceBuffer const): |
| (WebCore::PNGImageReader::createInterlaceBuffer): |
| * platform/image-decoders/webp/WEBPImageDecoder.cpp: |
| (WebCore::WEBPImageDecoder::decodeFrame): |
| * platform/network/curl/SocketStreamHandleImpl.h: |
| (WebCore::SocketStreamHandleImpl::SocketData::SocketData): |
| * platform/network/curl/SocketStreamHandleImplCurl.cpp: |
| (WebCore::createCopy): |
| (WebCore::SocketStreamHandleImpl::readData): |
| (): Deleted. |
| * platform/network/soup/SocketStreamHandleImpl.h: |
| * platform/network/soup/SocketStreamHandleImplSoup.cpp: |
| (WebCore::SocketStreamHandleImpl::connected): |
| * platform/win/LoggingWin.cpp: |
| (WebCore::logLevelString): |
| |
| 2018-03-05 Yoav Weiss <yoav@yoav.ws> |
| |
| Support for preconnect Link headers |
| https://bugs.webkit.org/show_bug.cgi?id=181657 |
| |
| Reviewed by Darin Adler. |
| |
| Move the preconnect functionality into its own function, and |
| also call this function when Link headers are processed. |
| |
| Test: http/tests/preconnect/link-header-rel-preconnect-http.php |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::loadLinksFromHeader): Call preconnectIfNeeded. |
| (WebCore::LinkLoader::preconnectIfNeeded): Preconnect to a host functionality moved here. |
| (WebCore::LinkLoader::loadLink): Call preconnectIfNeeded. |
| * loader/LinkLoader.h: |
| |
| 2018-03-05 Antti Koivisto <antti@apple.com> |
| |
| Add ChildrenAffectedByForwardPositionalRules bit for nth-child pseudo class marking |
| https://bugs.webkit.org/show_bug.cgi?id=183341 |
| <rdar://problem/38151470> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Use it instead of AffectsNextSibling/AffectedByPreviousSibling bits, similar to ChildrenAffectedByBackwardPositionalRules bit. |
| This is more efficient and requires way less marking. |
| |
| * css/SelectorChecker.cpp: |
| (WebCore::countElementsBefore): |
| (WebCore::countElementsOfTypeBefore): |
| (WebCore::SelectorChecker::checkOne const): |
| |
| Mark with ChildrenAffectedByForwardPositionalRules. |
| |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf): |
| |
| Mark with ChildrenAffectedByForwardPositionalRules. |
| |
| * dom/Element.cpp: |
| (WebCore::checkForSiblingStyleChanges): |
| |
| Invalidate siblings after added/removed element. |
| |
| (WebCore::Element::setChildrenAffectedByForwardPositionalRules): |
| (WebCore::Element::hasFlagsSetDuringStylingOfChildren const): |
| (WebCore::Element::rareDataChildrenAffectedByForwardPositionalRules const): |
| |
| Add the new marking bit. |
| |
| * dom/Element.h: |
| (WebCore::Element::childrenAffectedByForwardPositionalRules const): |
| (WebCore::Element::attributeWithoutSynchronization const): |
| |
| Remove assert so we can use this to get the current unresolved lazy value of style attrbute. |
| |
| * dom/ElementRareData.h: |
| (WebCore::ElementRareData::childrenAffectedByForwardPositionalRules const): |
| (WebCore::ElementRareData::setChildrenAffectedByForwardPositionalRules): |
| (WebCore::ElementRareData::ElementRareData): |
| (WebCore::ElementRareData::resetStyleRelations): |
| |
| Add the new marking bit. |
| |
| * dom/StyledElement.cpp: |
| (WebCore::StyledElement::invalidateStyleAttribute): |
| |
| In special case where we have attribute selectors for style attribute, synchronize the attribute immediately so we get invalidation right. |
| Tested by fast/css/style-attribute-invalidation-propagates-to-counted-siblings.html |
| |
| * style/StyleRelations.cpp: |
| (WebCore::Style::commitRelationsToRenderStyle): |
| (WebCore::Style::commitRelations): |
| |
| Commit the new bit. |
| |
| * style/StyleRelations.h: |
| |
| 2018-03-05 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed build fix, remove unused variables. |
| |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeSpeakAs): |
| (WebCore::consumeHangingPunctuation): |
| |
| 2018-03-05 Chris Dumez <cdumez@apple.com> |
| |
| fast/loader/onload-policy-ignore-for-frame.html is timing out with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183337 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Make sure we call checkCompleted() before calling checkLoadComplete() in |
| FrameLoader::continueLoadAfterNavigationPolicy() when the client tells us |
| to ignore the navigation, so that we properly recognize that the load is |
| done. This matches what is already done in FrameLoader::receivedMainResourceError(). |
| |
| Test: fast/loader/onload-policy-ignore-for-frame-async-delegates.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| |
| 2018-03-05 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] Allow user-installed fonts to be disabled |
| https://bugs.webkit.org/show_bug.cgi?id=183349 |
| |
| Rubber stamped by Brent Fulgham. |
| |
| Tests: fast/text/user-installed-font.html |
| fast/text/user-installed-fonts/disable.html |
| fast/text/user-installed-fonts/shadow-disable.html |
| fast/text/user-installed-fonts/shadow-family-disable.html |
| fast/text/user-installed-fonts/shadow-family.html |
| fast/text/user-installed-fonts/shadow-postscript-disable.html |
| fast/text/user-installed-fonts/shadow-postscript-family-disable.html |
| fast/text/user-installed-fonts/shadow-postscript-family.html |
| fast/text/user-installed-fonts/shadow-postscript.html |
| fast/text/user-installed-fonts/shadow.html |
| fast/text/user-installed-fonts/system-ui.html |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| |
| 2018-03-05 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Silence OpenGL and OpenGL ES deprecation warnings in newer SDKs |
| https://bugs.webkit.org/show_bug.cgi?id=183350 |
| |
| Unreviewed. |
| |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-03-05 Andy Estes <aestes@apple.com> |
| |
| [Mac] Teach WebCore::Pasteboard about file promise drags |
| https://bugs.webkit.org/show_bug.cgi?id=183314 |
| <rdar://problem/38105493> |
| |
| Reviewed by Darin Adler. |
| |
| While WebKit does support receiving file promise drags (since r210360), WebCore::Pasteboard |
| has not been instructed on how to read their file paths. When the various pasteboard readers |
| ask for file paths after a file promise drop, they receive an empty vector. This impacts |
| various features, most notably the DataTransfer API. |
| |
| Pasteboard actually cannot learn about promised file paths from the pasteboard itself, as |
| the pasteboard only contains the dragged files' UTIs. Promised file paths aren't known until |
| the WebKits call -[NSFilePromiseReceiver receivePromisedFilesAtDestination:...], at which |
| point the file paths are passed to WebCore as part of WebCore::DragData. |
| |
| When we construct new Pasteboards for drag and drop, we need to store any promised file |
| paths from the DragData. Then, when the various pasteboard readers ask for file paths and |
| NSFilesPromisePboardType is on the pasteboard, we can return these promised file paths. |
| |
| Tests: editing/pasteboard/data-transfer-items-drag-drop-file-promise.html |
| editing/pasteboard/data-transfer-items-drop-file-promise.html |
| editing/pasteboard/datatransfer-items-drop-plaintext-file-promise.html |
| editing/pasteboard/datatransfer-types-dropping-text-file-promise.html |
| editing/pasteboard/drag-file-promises-to-editable-element-as-URLs.html |
| editing/pasteboard/drag-file-promises-to-editable-element-as-attachment.html |
| editing/pasteboard/file-input-files-access-promise.html |
| |
| * platform/FileSystem.h: |
| * platform/Pasteboard.h: |
| (WebCore::Pasteboard::Pasteboard): |
| * platform/mac/DragDataMac.mm: |
| (WebCore::DragData::containsPromise const): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::Pasteboard): |
| (WebCore::Pasteboard::createForDragAndDrop): |
| (WebCore::toString): |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::readFilePaths): |
| (WebCore::absoluteURLsFromPasteboardFilenames): Deleted. |
| * platform/mac/PlatformPasteboardMac.mm: |
| (WebCore::PlatformPasteboard::numberOfFiles const): |
| |
| 2018-03-05 Andy Estes <aestes@apple.com> |
| |
| [Mac] Fix the build |
| |
| * Modules/applepay/ApplePaySession.cpp: |
| (WebCore::convertAndValidate): Removed unused variables. |
| |
| 2018-03-05 Antti Koivisto <antti@apple.com> |
| |
| Don't invalidate all children when doing insertion/deletion in presence of backward positional selectors |
| https://bugs.webkit.org/show_bug.cgi?id=183325 |
| <rdar://problem/38134480> |
| |
| Reviewed by Zalan Bujtas. |
| |
| It is sufficient to invalidate siblings before the mutation point. |
| |
| * dom/Element.cpp: |
| (WebCore::checkForSiblingStyleChanges): |
| |
| We already do sibling walk in the case of forwards positional rules and sibling combinators. The work |
| done here is insignifant compared to cost of overinvalidating. |
| |
| 2018-03-05 Ali Juma <ajuma@chromium.org> |
| |
| imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-404.html times out with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183297 |
| |
| Reviewed by Chris Dumez. |
| |
| When a FrameLoader's policy document loader is cleared after receiving a navigation policy decision |
| to not continue loading, we still need to trigger a check for load completion, since this loader or |
| an ancestor loader may have been in state isLoadingInAPISense only because of the existence of |
| the just-cleared policy document loader. Without triggering this check, these loaders may never |
| call WebFrameLoaderClient::dispatchDidFinishLoad. |
| |
| Test: http/wpt/html/semantics/text-level-semantics/the-a-element/a-download-click-404.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): |
| |
| 2018-03-04 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively |
| https://bugs.webkit.org/show_bug.cgi?id=183312 |
| |
| Reviewed by Mark Lam. |
| |
| Remove wtf/CurrentTime.h include pragma. |
| |
| * Modules/geolocation/Geolocation.cpp: |
| * Modules/mediasource/SourceBuffer.cpp: |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| * Modules/speech/SpeechSynthesis.cpp: |
| * contentextensions/ContentExtensionCompiler.cpp: |
| * contentextensions/ContentExtensionParser.cpp: |
| * dom/Document.cpp: |
| * dom/Element.cpp: |
| * dom/Event.cpp: |
| * dom/ScriptedAnimationController.cpp: |
| * dom/SimulatedClick.cpp: |
| * fileapi/File.cpp: |
| * fileapi/FileReader.cpp: |
| * history/CachedPage.cpp: |
| * html/BaseDateAndTimeInputType.cpp: |
| * html/DateTimeInputType.cpp: |
| * html/HTMLMediaElement.cpp: |
| * html/MediaController.cpp: |
| * html/MediaElementSession.cpp: |
| * html/MonthInputType.cpp: |
| * html/TimeInputType.cpp: |
| * html/parser/HTMLParserScheduler.h: |
| * inspector/InspectorCanvas.cpp: |
| * loader/FrameLoader.cpp: |
| * loader/LoadTiming.cpp: |
| * loader/NavigationScheduler.cpp: |
| * loader/ProgressTracker.cpp: |
| * loader/cache/CachedCSSStyleSheet.cpp: |
| * loader/cache/CachedImage.cpp: |
| * loader/cache/CachedResource.cpp: |
| * loader/cache/MemoryCache.cpp: |
| * page/DOMTimer.cpp: |
| * page/DOMWindow.cpp: |
| * page/DragController.cpp: |
| * page/EventHandler.cpp: |
| * page/FocusController.cpp: |
| * page/FrameView.cpp: |
| * page/Page.cpp: |
| * page/Performance.cpp: |
| * page/PerformanceTiming.cpp: |
| * page/animation/AnimationBase.cpp: |
| * page/animation/CSSAnimationController.cpp: |
| * page/mac/WheelEventDeltaFilterMac.mm: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| * platform/ScrollAnimationKinetic.cpp: |
| * platform/ScrollAnimationSmooth.cpp: |
| * platform/ThreadTimers.cpp: |
| * platform/Timer.cpp: |
| * platform/audio/mac/AudioSampleDataSource.mm: |
| * platform/cocoa/ScrollController.mm: |
| * platform/gamepad/cocoa/GameControllerGamepad.mm: |
| * platform/gamepad/mac/HIDGamepad.cpp: |
| * platform/graphics/BitmapImage.cpp: |
| * platform/graphics/DisplayRefreshMonitorManager.cpp: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| * platform/graphics/ca/LayerPool.cpp: |
| * platform/graphics/ca/PlatformCALayer.h: |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| * platform/graphics/ca/win/CACFLayerTreeHost.cpp: |
| * platform/graphics/ca/win/PlatformCALayerWin.cpp: |
| * platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp: |
| * platform/graphics/cg/GraphicsContextCG.cpp: |
| * platform/graphics/cocoa/WebCoreDecompressionSession.mm: |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: |
| * platform/graphics/texmap/BitmapTexturePool.h: |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| * platform/graphics/texmap/TextureMapper.cpp: |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| * platform/graphics/texmap/TextureMapperFPSCounter.cpp: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| * platform/graphics/win/GraphicsContextDirect2D.cpp: |
| * platform/graphics/win/GraphicsLayerDirect2D.cpp: |
| * platform/gtk/PlatformKeyboardEventGtk.cpp: |
| * platform/gtk/ScrollAnimatorGtk.cpp: |
| * platform/ios/LegacyTileCache.mm: |
| * platform/ios/LegacyTileLayerPool.mm: |
| * platform/ios/ScrollViewIOS.mm: |
| * platform/mediastream/RealtimeOutgoingVideoSource.cpp: |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: |
| * platform/mock/MockRealtimeMediaSource.cpp: |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| * platform/network/CacheValidation.cpp: |
| * platform/network/DNSResolveQueue.cpp: |
| * platform/network/ResourceResponseBase.cpp: |
| * platform/network/curl/CurlCacheEntry.cpp: |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| * platform/text/TextEncodingRegistry.cpp: |
| * platform/text/win/LocaleWin.cpp: |
| * platform/win/MainThreadSharedTimerWin.cpp: |
| * platform/win/PlatformMouseEventWin.cpp: |
| * rendering/RenderLayerCompositor.cpp: |
| * rendering/RenderProgress.cpp: |
| * svg/animation/SMILTimeContainer.cpp: |
| * testing/MockGamepad.cpp: |
| * workers/WorkerRunLoop.cpp: |
| |
| 2018-03-04 Tim Horton <timothy_horton@apple.com> |
| |
| Make !ENABLE(DATA_DETECTION) iOS build actually succeed |
| https://bugs.webkit.org/show_bug.cgi?id=183283 |
| <rdar://problem/38062148> |
| |
| Reviewed by Sam Weinig. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-03-03 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Delete incorrect version of clampTo() function from SVGToOTFFontConversion.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=183165 |
| |
| Reviewed by Darin Adler. |
| |
| Some of the calls in SVGToOTFFontConversion.cpp were directed to the function |
| in MathExtras.h while the rest were directed to this local static function. |
| There should not be two versions with the same name while they are supposed |
| to do the same thing. Besides, the local version does not work correctly |
| if the type of the argument's max limit is less the max limit of the returned |
| type, e.g. char -> uint16_t. |
| |
| * svg/SVGToOTFFontConversion.cpp: |
| (WebCore::clampTo): Deleted. |
| |
| 2018-03-03 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move styleDidChange mutation logic to RenderTreeUpdater |
| https://bugs.webkit.org/show_bug.cgi?id=183273 |
| <rdar://problem/38054892> |
| |
| Reviewed by Antti Koivisto. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleDidChange): |
| (WebCore::RenderElement::noLongerAffectsParentBlock const): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::updateElementRenderer): |
| |
| 2018-03-03 Yoav Weiss <yoav@yoav.ws> |
| |
| Link headers for subresources are not being processes |
| https://bugs.webkit.org/show_bug.cgi?id=181789 |
| |
| Reviewed by Youenn Fablet. |
| |
| Triggers Link header processing when the Link headers arrive on a subresource. |
| |
| Test: http/tests/preload/link-header-on-subresource.html |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::loadLinksFromHeader): Change the media check conditions. |
| * loader/LinkLoader.h: Add a third state for media checks. |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didReceiveResponse): Preload links from headers for subresources. |
| |
| 2018-03-02 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [WTF] Remove RunLoop and RunLoop::Timer's interface using double as seconds |
| https://bugs.webkit.org/show_bug.cgi?id=183293 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: |
| (WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture): |
| |
| 2018-03-02 Dean Jackson <dino@apple.com> |
| |
| Remove NP_GLContext since it is unsupported |
| https://bugs.webkit.org/show_bug.cgi?id=183305 |
| <rdar://problem/36875555> |
| |
| Reviewed by Simon Fraser. |
| |
| * plugins/npapi.h: Remove NP_GLContext and mention that |
| it is not supported. |
| |
| 2018-03-02 Chris Dumez <cdumez@apple.com> |
| |
| imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html crashes with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183294 |
| <rdar://problem/38073596> |
| |
| Reviewed by Youenn Fablet. |
| |
| Drop code that was added to SubresourceLoader::willCancel() in r228852. The purpose of this code |
| was to make sure that SubresourceLoader::m_policyForResponseCompletionHandler always gets called, |
| even when the load is cancelled. However, this code is not needed (since m_policyForResponseCompletionHandler |
| is a CompletionHandler, an assertion will be hit if we fail to call it and we'll know). Calling |
| the completionHandler inside SubresourceLoader::willCancel() is too early and leads to crashes. |
| |
| The completionHandler currently gets called DocumentLoader::responseReceived() via a call to |
| mainResourceLoader->didReceiveResponsePolicy(). Note that in r229177, we made sure that the |
| call to didReceiveResponsePolicy() happens *after* the call to continueAfterContentPolicy() |
| to maintain our non-async policy delegate behavior. However, continueAfterContentPolicy() |
| would end up calling willCancel() and call the completionHandler when shouldContinue was |
| false. |
| |
| Test: http/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-async-delegate.html |
| |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::willCancel): |
| |
| 2018-03-02 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build after r229185 and r229184 |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::exernalDeviceDisplayNameForPlayer): |
| * platform/ios/DeviceOrientationClientIOS.h: |
| * platform/ios/DeviceOrientationClientIOS.mm: |
| |
| 2018-03-02 Tim Horton <timothy_horton@apple.com> |
| |
| Make the !ENABLE(DEVICE_ORIENTATION) iOS build succeed |
| https://bugs.webkit.org/show_bug.cgi?id=183296 |
| |
| Reviewed by Dan Bernstein. |
| |
| * platform/ios/DeviceMotionClientIOS.h: |
| * platform/ios/DeviceMotionClientIOS.mm: |
| * platform/ios/WebCoreMotionManager.h: |
| * platform/ios/WebCoreMotionManager.mm: |
| |
| 2018-03-02 Tim Horton <timothy_horton@apple.com> |
| |
| Make it possible to build for iOS without Celestial |
| https://bugs.webkit.org/show_bug.cgi?id=183295 |
| <rdar://problem/38074468> |
| |
| Reviewed by Dan Bernstein. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::exernalDeviceDisplayNameForPlayer): |
| |
| 2018-03-02 Youenn Fablet <youenn@apple.com> |
| |
| Clients should register to StorageProcess with their service worker registration identifier |
| https://bugs.webkit.org/show_bug.cgi?id=182313 |
| <rdar://problem/38044403> |
| |
| Reviewed by Chris Dumez. |
| |
| Relanding with fixing matchAll for uncontrolled clients. |
| |
| No observable change of behavior in regular conditions. |
| When service worker process crashes, the service worker identifiers sent by the WebProcess might be wrong |
| and we will not be able to retrieve the registration from these identifiers. |
| The storage process will be able to still process correctly messages coming from the WebProcess to register clients of the registration. |
| Otherwise, there is a chance that WebProcess clients will not be added to the SWServerRegistration.m_clientsUsingRegistration maps. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setServiceWorkerConnection): |
| * workers/service/SWClientConnection.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::matchAll): |
| (WebCore::SWServer::claim): |
| (WebCore::SWServer::registerServiceWorkerClient): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| (WebCore::SWServer::setClientActiveWorker): Deleted. |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::activate): |
| |
| 2018-03-02 Youenn Fablet <youenn@apple.com> |
| |
| Loads for a Document controlled by a Service Worker should not use AppCache |
| https://bugs.webkit.org/show_bug.cgi?id=183148 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| |
| Postponing document loading through app cache after matching service worker registration. |
| Trying to load through app cache only if there is no service worker registration. |
| |
| Disabling app cache for any load that has a service worker registration identifier. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::redirectReceived): |
| (WebCore::DocumentLoader::willSendRequest): |
| (WebCore::DocumentLoader::tryLoadingRequestFromApplicationCache): |
| (WebCore::DocumentLoader::tryLoadingRedirectRequestFromApplicationCache): |
| (WebCore::DocumentLoader::restartLoadingDueToServiceWorkerRegistrationChange): |
| (WebCore::DocumentLoader::scheduleSubstituteResourceLoad): |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * loader/DocumentLoader.h: |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::maybeLoadMainResource): |
| (WebCore::ApplicationCacheHost::maybeLoadMainResourceForRedirect): |
| (WebCore::ApplicationCacheHost::maybeLoadResource): |
| (WebCore::ApplicationCacheHost::scheduleLoadFallbackResourceFromApplicationCache): |
| * loader/appcache/ApplicationCacheHost.h: |
| |
| 2018-03-02 Chris Dumez <cdumez@apple.com> |
| |
| fast/events/before-unload-remove-itself.html crashes with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183290 |
| <rdar://problem/38069045> |
| |
| Reviewed by Alex Christensen. |
| |
| When the navigation policy happens asynchronously, it is now possible for the |
| Frame / FrameLoader to get destroyed between the point that policyChecker().checkNavigationPolicy() |
| is called and when continueLoadAfterNavigationPolicy() is called. |
| |
| To address the issue, we now protect the Frame and capture it in the lambda passed |
| to policyChecker().checkNavigationPolicy(). |
| |
| Test: fast/events/before-unload-remove-itself-async-delegate.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| |
| 2018-03-02 Chris Dumez <cdumez@apple.com> |
| |
| Converting a load to a download does not work with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183254 |
| <rdar://problem/38035334> |
| |
| Reviewed by Youenn Fablet. |
| |
| Update DocumentLoader::responseReceived() to call didReceiveResponsePolicy() |
| on the mainResourceLoader *after* calling continueAfterContentPolicy(), |
| not *before*. This makes sure that the WebResourceLoader sends the |
| NetworkResourceLoader::ContinueDidReceiveResponse IPC back to the Network |
| Process *after* the policy decision has been processed, which restores the |
| pre-r228852 order. |
| |
| Test: fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-async-delegate.html |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::responseReceived): |
| |
| 2018-03-02 Youenn Fablet <youenn@apple.com> |
| |
| Some RealtimeMediaSource methods do not need to be marked as virtual |
| https://bugs.webkit.org/show_bug.cgi?id=183272 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| |
| * platform/mediastream/RealtimeMediaSource.h: |
| |
| 2018-03-01 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Remove monotonicallyIncreasingTime |
| https://bugs.webkit.org/show_bug.cgi?id=182911 |
| |
| Reviewed by Michael Catanzaro. |
| |
| While generic code uses MonotonicTime, CAAnimation uses media time (CFTimeInterval). |
| At this boundary, we convert MonotonicTime to media time, this is the same logic to |
| the code before this patch. |
| |
| * Modules/gamepad/Gamepad.h: |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::SourceBuffer::SourceBuffer): |
| (WebCore::SourceBuffer::monitorBufferingRate): |
| * Modules/mediasource/SourceBuffer.h: |
| * Modules/speech/SpeechSynthesis.cpp: |
| (WebCore::SpeechSynthesis::startSpeakingImmediately): |
| (WebCore::SpeechSynthesis::fireEvent): |
| * Modules/speech/SpeechSynthesisUtterance.h: |
| * contentextensions/ContentExtensionCompiler.cpp: |
| (WebCore::ContentExtensions::compileRuleList): |
| * contentextensions/ContentExtensionParser.cpp: |
| (WebCore::ContentExtensions::parseRuleList): |
| * contentextensions/ContentExtensionsBackend.cpp: |
| (WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad const): |
| * dom/Element.cpp: |
| (WebCore::Element::setActive): |
| * history/CachedPage.cpp: |
| (WebCore::CachedPage::CachedPage): |
| (WebCore::CachedPage::hasExpired const): |
| * history/CachedPage.h: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::startProgressEventTimer): |
| (WebCore::HTMLMediaElement::progressEventTimerFired): |
| (WebCore::HTMLMediaElement::refreshCachedTime const): |
| (WebCore::HTMLMediaElement::invalidateCachedTime const): |
| (WebCore::HTMLMediaElement::currentMediaTime const): |
| (WebCore::HTMLMediaElement::startPlaybackProgressTimer): |
| * html/HTMLMediaElement.h: |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::removeBehaviorRestriction): |
| (WebCore::MediaElementSession::mostRecentUserInteractionTime const): |
| (WebCore::MediaElementSession::resetPlaybackSessionState): |
| * html/MediaElementSession.h: |
| * html/parser/HTMLParserScheduler.cpp: |
| (WebCore::PumpSession::PumpSession): |
| (WebCore::HTMLParserScheduler::HTMLParserScheduler): |
| * html/parser/HTMLParserScheduler.h: |
| (WebCore::HTMLParserScheduler::checkForYield): |
| * inspector/InspectorCanvas.cpp: |
| (WebCore::InspectorCanvas::recordAction): |
| (WebCore::InspectorCanvas::finalizeFrame): |
| * inspector/InspectorCanvas.h: |
| * inspector/agents/InspectorMemoryAgent.cpp: |
| (WebCore::InspectorMemoryAgent::startTracking): |
| (WebCore::InspectorMemoryAgent::didHandleMemoryPressure): |
| (WebCore::InspectorMemoryAgent::collectSample): |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::buildObjectForTiming): |
| (WebCore::InspectorNetworkAgent::timestamp): |
| (WebCore::InspectorNetworkAgent::didFinishLoading): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::timestamp): |
| * inspector/agents/InspectorTimelineAgent.cpp: |
| (WebCore::InspectorTimelineAgent::timestamp): |
| * inspector/agents/WebHeapAgent.cpp: |
| (WebCore::WebHeapAgent::dispatchGarbageCollectedEvent): |
| * inspector/agents/WebHeapAgent.h: |
| * loader/cache/CachedCSSStyleSheet.cpp: |
| (WebCore::CachedCSSStyleSheet::restoreParsedStyleSheet): |
| * loader/cache/CachedImage.cpp: |
| (WebCore::CachedImage::didDraw): |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::didAccessDecodedData): |
| * loader/cache/CachedResource.h: |
| * loader/cache/MemoryCache.cpp: |
| (WebCore::MemoryCache::pruneLiveResourcesToSize): |
| * page/EventHandler.cpp: |
| (WebCore::MaximumDurationTracker::MaximumDurationTracker): |
| (WebCore::MaximumDurationTracker::~MaximumDurationTracker): |
| * page/FocusController.cpp: |
| (WebCore::FocusController::setFocusedElement): |
| (WebCore::FocusController::timeSinceFocusWasSet const): |
| * page/FocusController.h: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::reset): |
| (WebCore::FrameView::willPaintContents): |
| (WebCore::FrameView::didPaintContents): |
| * page/FrameView.h: |
| * page/animation/AnimationBase.cpp: |
| (WebCore::AnimationBase::freezeAtTime): |
| (WebCore::AnimationBase::beginAnimationUpdateTime const): |
| * page/animation/AnimationBase.h: |
| (WebCore::AnimationBase::onAnimationStartResponse): |
| * page/animation/CSSAnimationController.cpp: |
| (WebCore::CSSAnimationControllerPrivate::beginAnimationUpdateTime): |
| (WebCore::CSSAnimationControllerPrivate::receivedStartTimeResponse): |
| (WebCore::CSSAnimationControllerPrivate::startTimeResponse): |
| (WebCore::CSSAnimationController::notifyAnimationStarted): |
| * page/animation/CSSAnimationController.h: |
| * page/animation/CSSAnimationControllerPrivate.h: |
| * page/mac/WheelEventDeltaFilterMac.h: |
| * page/mac/WheelEventDeltaFilterMac.mm: |
| (WebCore::WheelEventDeltaFilterMac::beginFilteringDeltas): |
| (WebCore::WheelEventDeltaFilterMac::updateFromDelta): |
| (WebCore::WheelEventDeltaFilterMac::endFilteringDeltas): |
| * platform/ControlStates.h: |
| (WebCore::ControlStates::timeSinceControlWasFocused const): |
| (WebCore::ControlStates::setTimeSinceControlWasFocused): |
| * platform/PlatformSpeechSynthesisUtterance.h: |
| (WebCore::PlatformSpeechSynthesisUtterance::startTime const): |
| (WebCore::PlatformSpeechSynthesisUtterance::setStartTime): |
| * platform/gamepad/PlatformGamepad.h: |
| (WebCore::PlatformGamepad::lastUpdateTime const): |
| (WebCore::PlatformGamepad::connectTime const): |
| (WebCore::PlatformGamepad::PlatformGamepad): |
| * platform/gamepad/cocoa/GameControllerGamepad.mm: |
| (WebCore::GameControllerGamepad::setupAsExtendedGamepad): |
| (WebCore::GameControllerGamepad::setupAsGamepad): |
| * platform/gamepad/mac/HIDGamepad.cpp: |
| (WebCore::HIDGamepad::HIDGamepad): |
| (WebCore::HIDGamepad::valueChanged): |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::GraphicsLayer::suspendAnimations): |
| * platform/graphics/GraphicsLayer.h: |
| * platform/graphics/GraphicsLayerClient.h: |
| (WebCore::GraphicsLayerClient::notifyAnimationStarted): |
| * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: |
| (WebCore::LayerClient::platformCALayerAnimationStarted): |
| (WebCore::AVFWrapper::createImageForTimeInRect): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::addAnimation): |
| (WebCore::GraphicsLayerCA::pauseAnimation): |
| (WebCore::GraphicsLayerCA::platformCALayerAnimationStarted): |
| (WebCore::GraphicsLayerCA::setAnimationOnLayer): |
| (WebCore::GraphicsLayerCA::pauseCAAnimationOnLayer): |
| (WebCore::GraphicsLayerCA::createAnimationFromKeyframes): |
| (WebCore::GraphicsLayerCA::appendToUncommittedAnimations): |
| (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| (WebCore::GraphicsLayerCA::LayerPropertyAnimation::LayerPropertyAnimation): |
| (WebCore::GraphicsLayerCA::AnimationProcessingAction::AnimationProcessingAction): |
| * platform/graphics/ca/LayerPool.cpp: |
| (WebCore::LayerPool::LayerPool): |
| (WebCore::LayerPool::addLayer): |
| (WebCore::LayerPool::decayedCapacity const): |
| (WebCore::LayerPool::pruneTimerFired): |
| * platform/graphics/ca/LayerPool.h: |
| * platform/graphics/ca/PlatformCAAnimation.h: |
| * platform/graphics/ca/PlatformCALayer.h: |
| * platform/graphics/ca/PlatformCALayerClient.h: |
| (WebCore::PlatformCALayerClient::platformCALayerAnimationStarted): |
| * platform/graphics/ca/TileGrid.cpp: |
| (WebCore::TileGrid::revalidateTiles): |
| (WebCore::TileGrid::startedNewCohort): |
| (WebCore::TileGrid::TileCohortInfo::timeUntilExpiration): |
| (WebCore::TileGrid::cohortRemovalTimerFired): |
| * platform/graphics/ca/TileGrid.h: |
| (WebCore::TileGrid::TileCohortInfo::TileCohortInfo): |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (mediaTimeToCurrentTime): |
| (-[WebAnimationDelegate animationDidStart:]): |
| (PlatformCALayerCocoa::animationStarted): |
| * platform/graphics/ca/win/CACFLayerTreeHost.cpp: |
| (WebCore::CACFLayerTreeHost::notifyAnimationsStarted): |
| * platform/graphics/ca/win/PlatformCALayerWin.cpp: |
| (PlatformCALayerWin::animationStarted): |
| (PlatformCALayerWin::layerTreeAsString const): |
| * platform/graphics/ca/win/PlatformCALayerWin.h: |
| * platform/graphics/cocoa/WebCoreDecompressionSession.mm: |
| (WebCore::WebCoreDecompressionSession::decodeSample): |
| * platform/graphics/texmap/BitmapTexturePool.cpp: |
| (WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired): |
| * platform/graphics/texmap/BitmapTexturePool.h: |
| (WebCore::BitmapTexturePool::Entry::markIsInUse): |
| (WebCore::BitmapTexturePool::Entry::canBeReleased const): |
| (): Deleted. |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::GraphicsLayerTextureMapper): |
| (WebCore::GraphicsLayerTextureMapper::addAnimation): |
| (WebCore::GraphicsLayerTextureMapper::pauseAnimation): |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.h: |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| (WebCore::TextureMapperAnimation::TextureMapperAnimation): |
| (WebCore::TextureMapperAnimation::apply): |
| (WebCore::TextureMapperAnimation::pause): |
| (WebCore::TextureMapperAnimation::resume): |
| (WebCore::TextureMapperAnimation::computeTotalRunningTime): |
| (WebCore::TextureMapperAnimations::pause): |
| (WebCore::TextureMapperAnimations::suspend): |
| * platform/graphics/texmap/TextureMapperAnimation.h: |
| (WebCore::TextureMapperAnimation::startTime const): |
| (WebCore::TextureMapperAnimation::pauseTime const): |
| * platform/graphics/texmap/TextureMapperFPSCounter.cpp: |
| (WebCore::TextureMapperFPSCounter::TextureMapperFPSCounter): |
| (WebCore::TextureMapperFPSCounter::updateFPSAndDisplay): |
| * platform/graphics/texmap/TextureMapperFPSCounter.h: |
| * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: |
| (WebCore::TextureMapperPlatformLayerBuffer::markUsed): |
| (WebCore::TextureMapperPlatformLayerBuffer::lastUsedTime const): |
| (): Deleted. |
| * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: |
| (WebCore::TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::addAnimation): |
| (WebCore::CoordinatedGraphicsLayer::pauseAnimation): |
| (WebCore::CoordinatedGraphicsLayer::suspendAnimations): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/RealtimeOutgoingVideoSource.cpp: |
| (WebCore::RealtimeOutgoingVideoSource::sendFrame): |
| * platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp: |
| (WebCore::LibWebRTCAudioModule::StartPlayoutOnAudioThread): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: |
| (WebCore::DisplayCaptureSourceCocoa::startProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::stopProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::elapsedTime): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.h: |
| * platform/mediastream/mac/MockRealtimeAudioSourceMac.h: |
| * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: |
| (WebCore::MockRealtimeAudioSourceMac::render): |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: |
| (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer): |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h: |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: |
| (WebCore::ScreenDisplayCaptureSourceMac::sampleBufferFromPixelBuffer): |
| (WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): |
| * platform/mock/MockRealtimeAudioSource.cpp: |
| (WebCore::MockRealtimeAudioSource::startProducingData): |
| (WebCore::MockRealtimeAudioSource::stopProducingData): |
| (WebCore::MockRealtimeAudioSource::elapsedTime): |
| (WebCore::MockRealtimeAudioSource::tick): |
| (WebCore::MockRealtimeAudioSource::delaySamples): |
| * platform/mock/MockRealtimeAudioSource.h: |
| (WebCore::MockRealtimeAudioSource::render): |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| (WebCore::MockRealtimeVideoSource::startProducingData): |
| (WebCore::MockRealtimeVideoSource::stopProducingData): |
| (WebCore::MockRealtimeVideoSource::elapsedTime): |
| (WebCore::MockRealtimeVideoSource::drawText): |
| (WebCore::MockRealtimeVideoSource::delaySamples): |
| (WebCore::MockRealtimeVideoSource::generateFrame): |
| * platform/mock/MockRealtimeVideoSource.h: |
| * platform/network/DNSResolveQueue.cpp: |
| (WebCore::DNSResolveQueue::DNSResolveQueue): |
| (WebCore::DNSResolveQueue::isUsingProxy): |
| * platform/network/DNSResolveQueue.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::suspendAnimations): |
| * rendering/RenderBoxModelObject.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::paintFocusRing): |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintAreaElementFocusRing): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::notifyAnimationStarted): |
| (WebCore::RenderLayerBacking::suspendAnimations): |
| * rendering/RenderLayerBacking.h: |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::didPaintBacking): |
| * rendering/RenderProgress.cpp: |
| (WebCore::RenderProgress::RenderProgress): |
| (WebCore::RenderProgress::animationProgress const): |
| (WebCore::RenderProgress::updateAnimationState): |
| * rendering/RenderProgress.h: |
| * rendering/RenderTheme.cpp: |
| (WebCore::RenderTheme::animationDurationForProgressBar const): |
| * rendering/RenderTheme.h: |
| * rendering/RenderThemeGtk.cpp: |
| (WebCore::RenderThemeGtk::animationDurationForProgressBar const): |
| * rendering/RenderThemeGtk.h: |
| * rendering/RenderThemeIOS.h: |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::animationDurationForProgressBar const): |
| * rendering/RenderThemeMac.h: |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::animationDurationForProgressBar const): |
| * svg/animation/SMILTimeContainer.cpp: |
| (WebCore::SMILTimeContainer::SMILTimeContainer): |
| (WebCore::SMILTimeContainer::elapsed const): |
| (WebCore::SMILTimeContainer::isActive const): |
| (WebCore::SMILTimeContainer::isPaused const): |
| (WebCore::SMILTimeContainer::isStarted const): |
| (WebCore::SMILTimeContainer::begin): |
| (WebCore::SMILTimeContainer::pause): |
| (WebCore::SMILTimeContainer::resume): |
| (WebCore::SMILTimeContainer::setElapsed): |
| (WebCore::SMILTimeContainer::timerFired): |
| * svg/animation/SMILTimeContainer.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::delayMediaStreamTrackSamples): |
| * testing/MockGamepad.cpp: |
| (WebCore::MockGamepad::MockGamepad): |
| (WebCore::MockGamepad::updateDetails): |
| (WebCore::MockGamepad::setAxisValue): |
| (WebCore::MockGamepad::setButtonValue): |
| |
| 2018-03-02 Alejandro G. Castro <alex@igalia.com> |
| |
| Make LibWebRTCProvider port agnostic again after r215424 |
| https://bugs.webkit.org/show_bug.cgi?id=183080 |
| |
| Reviewed by Youenn Fablet. |
| |
| In the r215424 commit the webRTCAvailable function started to use a function from the DARWIN platform, |
| we have moved that code to the cocoa class and created a glib implementation that will be used in the future |
| to implement the LibWebRTCProviderGlib class. |
| |
| No new tests, this is a refactor. |
| |
| * Sources.txt: Add the compilation of the new file. |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: Remove the webRTCAvailable function from this file. |
| (WebCore::LibWebRTCProvider::create): We want to use this even when LIBWEBRTC is not used. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): Moved the code from the LibWebRTCProvider class. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): Add the glib implementation, basically true, we are always |
| linking libwebrtc for the moment in these situations. |
| |
| 2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r222843): [HarfBuzz] Combining enclosed keycap not correctly handled |
| https://bugs.webkit.org/show_bug.cgi?id=183246 |
| |
| Reviewed by Michael Catanzaro. |
| |
| We are not correctly handling the combining enclosed keycap since we switched to use |
| ComplexTextController. This is because fontForCombiningCharacterSequence() always returns the font of the first |
| character, without checking if that font can render the whole sequence or not. Before 222843, the shaper did |
| that check when creating the text runs. In this case the sequence was split and a different font was used for the |
| text and the mark. This patch makes fontForCombiningCharacterSequence() try to find a suitable font for the |
| whole sequence, first looking at the CSS fallbacks and finally at system ones. The result is much better than |
| the old one, because we use the same font for both the text and the mark. If there isn't any font to render the |
| mark, then we fallback to use the first character font, since we will end up rendering the missing glyph |
| character, it's better to use the same font than the first character one. |
| |
| Test: fast/text/combining-enclosing-keycap.html |
| |
| * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp: |
| (WebCore::FontCascade::fontForCombiningCharacterSequence const): Check if the first charatcer font can render |
| the whole sequence, trying with fallbacks otherwise. |
| * platform/graphics/freetype/SimpleFontDataFreeType.cpp: |
| (WebCore::Font::canRenderCombiningCharacterSequence const): Check if the font face has glyphs for the whole |
| sequence not just the first character. |
| |
| 2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [FreeType] Remove FontPlatformData fallbacks |
| https://bugs.webkit.org/show_bug.cgi?id=183210 |
| |
| Reviewed by Michael Catanzaro. |
| |
| They are only used by FontCache::systemFallbackForCharacters() where a direct FcFontMatch provides the same |
| or better results. |
| |
| * platform/graphics/FontPlatformData.h: Remove fallbacks. |
| * platform/graphics/freetype/FontCacheFreeType.cpp: |
| (WebCore::FontCache::systemFallbackForCharacters): Use FcFontMatch() only. |
| * platform/graphics/freetype/FontPlatformDataFreeType.cpp: |
| (WebCore::FontPlatformData::fallbacks): Removed. |
| |
| 2018-03-01 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229153. |
| https://bugs.webkit.org/show_bug.cgi?id=183274 |
| |
| it is breaking imported/w3c/web-platform-tests/service-workers |
| /service-worker/clients-matchall-exact-controller.https.html |
| (Requested by youenn on #webkit). |
| |
| Reverted changeset: |
| |
| "Clients should register to StorageProcess with their service |
| worker registration identifier" |
| https://bugs.webkit.org/show_bug.cgi?id=182313 |
| https://trac.webkit.org/changeset/229153 |
| |
| 2018-03-01 Youenn Fablet <youenn@apple.com> |
| |
| Clients should register to StorageProcess with their service worker registration identifier |
| https://bugs.webkit.org/show_bug.cgi?id=182313 |
| |
| Reviewed by Chris Dumez. |
| |
| No observable change of behavior in regular conditions. |
| When service worker process crashes, the service worker identifiers sent by the WebProcess might be wrong |
| and we will not be able to retrieve the registration from these identifiers. |
| The storage process will be able to still process correctly messages coming from the WebProcess to register clients of the registration. |
| Otherwise, there is a chance that WebProcess clients will not be added to the SWServerRegistration.m_clientsUsingRegistration maps. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setServiceWorkerConnection): |
| * workers/service/SWClientConnection.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::registerServiceWorkerClient): |
| * workers/service/server/SWServer.h: |
| |
| 2018-03-01 Youenn Fablet <youenn@apple.com> |
| |
| Add API test to validate setting of service worker and cache storage directories |
| https://bugs.webkit.org/show_bug.cgi?id=182543 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by API tests. |
| |
| Add getters to service worker registration directory. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::serviceWorkerRegistrationDirectory): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * workers/service/SWClientConnection.h: |
| * workers/service/server/RegistrationDatabase.h: |
| (WebCore::RegistrationDatabase::serviceWorkerRegistrationDirectory const): |
| * workers/service/server/RegistrationStore.h: |
| (WebCore::RegistrationStore::serviceWorkerRegistrationDirectory const): |
| * workers/service/server/SWServer.h: |
| (WebCore::SWServer::serviceWorkerRegistrationDirectory const): |
| |
| 2018-03-01 Youenn Fablet <youenn@apple.com> |
| |
| SWServer::removeClientServiceWorkerRegistration should not log an error if there is no registration |
| https://bugs.webkit.org/show_bug.cgi?id=183248 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Removed the error logging. |
| As can be seen from running api and layout tests, a web process can ask a registration to be unregistered |
| and by the time it goes to the StorageProcess, the registration is already cleared. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::removeClientServiceWorkerRegistration): |
| |
| 2018-03-01 Daniel Bates <dabates@apple.com> |
| |
| CSS ::selection stroke-color and stroke-width are not applied to selected text in text fields |
| and ::selection:window-inactive stroke-color and stroke-width are never applied |
| https://bugs.webkit.org/show_bug.cgi?id=183178 |
| |
| Reviewed by David Hyatt. |
| |
| This change fixes the following two issues: |
| 1. Properties stroke-color and stroke-width are not applied to the ::selection pseudo- |
| element of text fields. |
| 2. Properties stroke-color and stroke-width are never applied to ::selection:window-inactive |
| pseudo elements. |
| |
| Currently when computing the paint styles for selected text we query the cached styles for |
| the ::selection pseudo element on the renderer. Text fields are implemented using a User Agent |
| shadow DOM. With regards to issue (1) the renderer queried was the inner most renderer for |
| the text in the text field. But it should have been the shadow host renderer (i.e. the renderer |
| for the <input>). With regards to issue (2) we cannot retrieve cached styles for the |
| ::selection pseudo element because it can be effected by a pseudo class, :window-inactive, |
| which matches when the page is deactivated (i.e. the window is in the background as the user |
| made another window the frontmost window). Both of these issues are fixed by making use |
| of RenderElement::selectionPseudoStyle(). |
| |
| Tests: fast/selectors/selection-window-inactive-stroke-color.html |
| fast/selectors/selection-window-inactive-text-shadow.html |
| fast/selectors/text-field-selection-stroke-color.html |
| fast/selectors/text-field-selection-text-shadow.html |
| fast/selectors/text-field-selection-window-inactive-stroke-color.html |
| fast/selectors/text-field-selection-window-inactive-text-shadow.html |
| |
| * rendering/RenderText.h: |
| (WebCore::RenderText::selectionPseudoStyle const): Add a convenience function that turns |
| around and calls the function of the same name on its parent. |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::computeTextSelectionPaintStyle): Modified to use RenderText::selectionPseudoStyle() |
| instead of directly querying for the cached styles for the ::selection pseudo element. |
| |
| 2018-03-01 Per Arne Vollan <pvollan@apple.com> |
| |
| Scrollbar preferences are ignored when the WebContent process doesn't have access to the WindowServer. |
| https://bugs.webkit.org/show_bug.cgi?id=183231 |
| <rdar://problem/37793457> |
| |
| Reviewed by Brent Fulgham. |
| |
| When the WebContent process doesn't have access to the WindowServer, the scrollbars are always of the overlay type. |
| The notification about scrollbar preferences is never received by the WebContent process when there is no |
| WindowServer access. This can be fixed by adding an observer of scrollbar preferences in the UI process, and |
| notifying the WebProcess about this by sending it a message. This message should also contain the preferred |
| scrollbar type, since the call '[NSScroller preferredScrollerStyle]' will always return the overlay style when |
| there is no WindowServer access. |
| |
| No new tests, covered by existing tests. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mac/NSScrollerImpDetails.h: |
| * platform/mac/NSScrollerImpDetails.mm: |
| (WebCore::ScrollerStyle::recommendedScrollerStyle): |
| (WebCore::ScrollerStyle::setUseOverlayScrollbars): |
| (WebCore::recommendedScrollerStyle): Deleted. |
| * platform/mac/ScrollAnimatorMac.mm: |
| (WebCore::ScrollAnimatorMac::ScrollAnimatorMac): |
| (WebCore::ScrollAnimatorMac::mouseEnteredScrollbar const): |
| (WebCore::ScrollAnimatorMac::mouseExitedScrollbar const): |
| (WebCore::ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting): |
| * platform/mac/ScrollbarThemeMac.mm: |
| (WebCore::ScrollbarThemeMac::registerScrollbar): |
| (WebCore::ScrollbarThemeMac::scrollbarThickness): |
| (WebCore::ScrollbarThemeMac::usesOverlayScrollbarsChanged): |
| |
| 2018-03-01 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Temporarily enable user-installed-fonts everywhere until we can stop crashing on launch |
| https://bugs.webkit.org/show_bug.cgi?id=183255 |
| |
| Unreviewed. |
| |
| Tests are already disabled. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| |
| 2018-03-01 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Split DNS cache expiration and connection timeout setting. |
| https://bugs.webkit.org/show_bug.cgi?id=182979 |
| |
| It was mis-implemented and was named ambiguous name 'enableTimeout'. |
| Implement each feature correctly. |
| |
| Reviewed by Per Arne Vollan. |
| |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::EnvironmentVariableReader::read): |
| (WebCore::EnvironmentVariableReader::defined): |
| (WebCore::EnvironmentVariableReader::readAs): |
| (WebCore::EnvironmentVariableReader::sscanTemplate): |
| (WebCore::EnvironmentVariableReader::sscanTemplate<unsigned>): |
| (WebCore::CurlContext::CurlContext): |
| (WebCore::safeTimeValue): |
| (WebCore::CurlHandle::setDnsCacheTimeout): |
| (WebCore::CurlHandle::setConnectTimeout): |
| (WebCore::CurlHandle::setTimeout): |
| (WebCore::CurlHandle::enableTimeout): Deleted. |
| * platform/network/curl/CurlContext.h: |
| (WebCore::CurlContext::dnsCacheTimeout const): |
| (WebCore::CurlContext::connectTimeout const): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::setupTransfer): |
| |
| 2018-03-01 Zalan Bujtas <zalan@apple.com> |
| |
| Remove RenderElement::s_noLongerAffectsParentBlock |
| https://bugs.webkit.org/show_bug.cgi?id=183196 |
| <rdar://problem/38030797> |
| |
| Reviewed by Antti Koivisto. |
| |
| Remove the hack to track floating/out-of-flow changes between styleWillChange and styleDidChange. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| (WebCore::RenderElement::noLongerAffectsParentBlock const): |
| (WebCore::RenderElement::styleDidChange): |
| * rendering/RenderElement.h: |
| (WebCore::RenderElement::noLongerAffectsParentBlock const): Deleted. |
| |
| 2018-03-01 Chris Dumez <cdumez@apple.com> |
| |
| imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html fails with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183225 |
| <rdar://problem/38003828> |
| |
| Reviewed by Alex Christensen. |
| |
| Bypass navigation policy check when loading about:blank. This does not seem necessary and it would not |
| be Web-compatible for such policy check to happen synchronously. This is because an iframe without src |
| or src="about:blank" should load synchronously as per HTML specification. |
| |
| Test: http/wpt/html/browsers/windows/browsing-context.html |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| |
| 2018-03-01 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Linker errors in some curl files due to missing exports |
| https://bugs.webkit.org/show_bug.cgi?id=183238 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests, no change in behavior. |
| |
| Adding WEBCORE_EXPORT to functions now used in WebKit. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/curl/CookieJarDB.h: |
| * platform/network/curl/CurlContext.h: |
| |
| 2018-03-01 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229130. |
| https://bugs.webkit.org/show_bug.cgi?id=183244 |
| |
| It breaks AppleWin compilation (Requested by alexg__ on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "Make LibWebRTCProvider port agnostic again after r215424" |
| https://bugs.webkit.org/show_bug.cgi?id=183080 |
| https://trac.webkit.org/changeset/229130 |
| |
| 2018-03-01 Alejandro G. Castro <alex@igalia.com> |
| |
| Make LibWebRTCProvider port agnostic again after r215424 |
| https://bugs.webkit.org/show_bug.cgi?id=183080 |
| |
| Reviewed by Youenn Fablet. |
| |
| In the r215424 commit the webRTCAvailable function started to use a function from the DARWIN platform, |
| we have moved that code to the cocoa class and created a glib implementation that will be used in the future |
| to implement the LibWebRTCProviderGlib class. |
| |
| No new tests, this is a refactor. |
| |
| * Sources.txt: Add the compilation of the new file. |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: Remove the webRTCAvailable function from this file. |
| (WebCore::LibWebRTCProvider::create): We want to use this even when LIBWEBRTC is not used. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): Moved the code from the LibWebRTCProvider class. |
| * platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): Add the glib implementation, basically true, we are always |
| linking libwebrtc for the moment in these situations. |
| |
| 2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [FreeType] Color emojis in WebKitGTK+ for great justice |
| https://bugs.webkit.org/show_bug.cgi?id=183155 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Emojis are actually rendered if there's an emoji font installed in the system, but the size is so tiny that we |
| don't see them. This is because for some reason the matrix we are getting from fontconfig contains a scale, |
| which we don't expect. We only get the fontconfig matrix to apply rotations in case of oblique fonts, and then we |
| always apply the scale for the computed pixel font size. Ignoring the fontconfig matrix scale fixes the issue. |
| |
| * platform/graphics/freetype/FontCacheFreeType.cpp: |
| (WebCore::fontWeightToFontconfigWeight): Moved here since it's now used by configurePatternForFontDescription(). |
| (WebCore::configurePatternForFontDescription): Helper function to apply the same options for fallback pattern. |
| (WebCore::createFontConfigPatternForCharacters): Use configurePatternForFontDescription(). |
| (WebCore::findBestFontGivenFallbacks): Adopt the returned reference. |
| (WebCore::FontCache::systemFallbackForCharacters): Clean it up. |
| (WebCore::FontCache::createFontPlatformData): Use configurePatternForFontDescription(). |
| * platform/graphics/freetype/FontPlatformDataFreeType.cpp: |
| (WebCore::FontPlatformData::buildScaledFont): Ignore the scale returned by fontconfig matrix. |
| |
| 2018-02-28 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] text samples no longer processed |
| https://bugs.webkit.org/show_bug.cgi?id=183212 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::newTextSample): Refer to |
| track stream ID instead of (potentially) manually generated track |
| ID stored as hashmap keys. |
| |
| 2018-02-28 Tim Horton <timothy_horton@apple.com> |
| |
| Push WTF_PLATFORM_IOS down into preprocessor.pm instead of trying to determine it inside |
| https://bugs.webkit.org/show_bug.cgi?id=183193 |
| |
| Reviewed by Andy Estes. |
| |
| * DerivedSources.make: |
| * bindings/scripts/preprocessor.pm: |
| (applyPreprocessor): |
| Instead of trying to discern WTF_PLATFORM_IOS inside preprocessor.pm, |
| push it down from DerivedSources.make. Also clean up DerivedSources.make |
| a tiny bit by adding a variable, FEATURE_AND_PLATFORM_DEFINES, which |
| contains both FEATURE_DEFINES and WTF_PLATFORM macros if needed. |
| |
| 2018-02-28 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: Dispatch accessiblesetvalue event |
| https://bugs.webkit.org/show_bug.cgi?id=183021 |
| <rdar://problem/37764242> |
| |
| Reviewed by Chris Fleizach. |
| |
| Accessibility events. |
| Spec: https://wicg.github.io/aom/spec/phase2.html |
| |
| Added a new event type AccessibleSetValueEvent. |
| |
| Test: accessibility/mac/AOM-event-accessiblesetvalue.html |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * accessibility/AccessibilityAllInOne.cpp: |
| * accessibility/AccessibilityNodeObject.cpp: |
| (WebCore::AccessibilityNodeObject::canSetValueAttribute const): |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::press): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEvent): |
| (WebCore::AccessibilityObject::dispatchAccessibleSetValueEvent): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::setValue): |
| * accessibility/AccessibilityScrollbar.cpp: |
| (WebCore::AccessibilityScrollbar::setValue): |
| * accessibility/AccessibilitySlider.cpp: |
| (WebCore::AccessibilitySlider::setValue): |
| * accessibility/AccessibleSetValueEvent.cpp: Added. |
| (WebCore::AccessibleSetValueEvent::AccessibleSetValueEvent): |
| * accessibility/AccessibleSetValueEvent.h: Added. |
| (WebCore::AccessibleSetValueEvent::create): |
| (WebCore::AccessibleSetValueEvent::value const): |
| * accessibility/AccessibleSetValueEvent.idl: Added. |
| * dom/Element.idl: |
| * dom/EventNames.h: |
| * dom/EventNames.in: |
| |
| 2018-02-28 Chris Dumez <cdumez@apple.com> |
| |
| html/browsers/browsing-the-web/navigating-across-documents/006.html fails with async policy delegates |
| https://bugs.webkit.org/show_bug.cgi?id=183168 |
| <rdar://problem/37951341> |
| |
| Reviewed by Alex Christensen. |
| |
| The test has an anchor element with both a 'click' event handler which submits a form |
| and an href attribute. When clicking the link, as per specification, things happen in |
| this order: |
| 1. We fire the click event at the anchor, which will execute the event handler and submit the form. |
| Submitting the form *schedules* a navigation to 'click.html'. |
| 2. We execute the anchor activation code which *navigates* to 'href.html'. The navigation to |
| 'href' is supposed to cancel the pending navigation to 'click.html' and we should navigate |
| to 'href.html', which is what the test asserts. |
| |
| The issue for us is that we do not cancel pending navigations until after the navigation |
| policy decision is made, when the provisional loads actually starts, in FrameLoader::provisionalLoadStarted(). |
| Because the policy decision for the navigation can now be made asynchronously, the NavigationScheduler |
| timer can now fire while the decision is made and we'll submit the form, thus navigating to |
| 'click.html'. |
| |
| To address the issue, we now cancel any pending navigations in FrameLoader::loadWithDocumentLoader(), |
| *before* doing the policy check for the navigation. |
| |
| Test: http/wpt/html/browsers/browsing-the-web/navigating-across-documents/006.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadWithDocumentLoader): |
| |
| 2018-02-28 John Wilander <wilander@apple.com> |
| |
| Add a second tier of prevalence to facilitate telemetry on very prevalent domains |
| https://bugs.webkit.org/show_bug.cgi?id=183218 |
| <rdar://problem/37992388> |
| |
| Reviewed by Brent Fulgham. |
| |
| Test: http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics.html |
| |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::encode const): |
| (WebCore::ResourceLoadStatistics::decode): |
| (WebCore::ResourceLoadStatistics::toString const): |
| (WebCore::ResourceLoadStatistics::merge): |
| Handling of the new boolean field isVeryPrevalentResource. |
| * loader/ResourceLoadStatistics.h: |
| Added the new boolean field isVeryPrevalentResource. |
| |
| 2018-02-28 Alex Christensen <achristensen@webkit.org> |
| |
| Reduce use of NetworkingContext in WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=183213 |
| |
| Reviewed by Brady Eidson. |
| |
| NetworkingContext is intended to be used only with ResourceHandle, which is now only used in WebKitLegacy. |
| Now that we don't use ResourceHandle in the WebProcess, everything that was done through the NetworkingContext |
| can now be done a cleaner way with no change in behavior. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadResourceSynchronously): |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::loadLink): |
| * loader/LoaderStrategy.h: |
| * platform/network/ProxyServer.h: |
| * platform/network/cf/ProxyServerCFNet.cpp: |
| (WebCore::proxyServersForURL): |
| * platform/network/curl/ProxyServerCurl.cpp: |
| (WebCore::proxyServersForURL): |
| * platform/network/soup/ProxyServerSoup.cpp: |
| (WebCore::proxyServersForURL): |
| |
| 2018-02-28 Zalan Bujtas <zalan@apple.com> |
| |
| Remove RenderElement::s_affectsParentBlock |
| https://bugs.webkit.org/show_bug.cgi?id=183187 |
| <rdar://problem/37961079> |
| |
| Reviewed by Antti Koivisto. |
| |
| Remove the hack to track floating/out-of-flow changes between styleWillChange and styleDidChange. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| (WebCore::RenderElement::styleDidChange): |
| * rendering/RenderElement.h: |
| |
| 2018-02-28 Antti Koivisto <antti@apple.com> |
| |
| Filter attribute selectors with selector filter |
| https://bugs.webkit.org/show_bug.cgi?id=183200 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Currently selector filtering is done based on tags, classes and ids. We should include attributes too. |
| |
| This patch adds filtering based on attribute name (but not content). |
| |
| * css/SelectorFilter.cpp: |
| (WebCore::isExcludedAttribute): |
| |
| Ignore id, class and style attributes. First two are already handled and the last is common but is rarely |
| used in selectors. |
| |
| (WebCore::collectElementIdentifierHashes): |
| |
| Collect attributes. |
| Remove the unnecessary StyledElement casting. |
| |
| (WebCore::collectSimpleSelectorHash): |
| |
| Collect attribute selectors. |
| |
| (WebCore::chooseSelectorHashesForFilter): |
| |
| Pick attributes with high priority for the filter as it is likely a good signal. |
| |
| 2018-02-27 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR] Convert VRPlatformDisplayInfo into a class |
| https://bugs.webkit.org/show_bug.cgi?id=183162 |
| |
| Reviewed by Žan Doberšek. |
| |
| In preparation for further changes we're transforming the |
| VRPlatformDisplayInfo into a class. All the members are now private |
| and the class provides the needed getters/setters. |
| |
| Apart from that VRDisplayCapabilityFlags is now just an unsigned and |
| the different flags are defined in VRDisplayCapabilityFlag enum. |
| Another cleanup was the removal of VRDisplayCapabilities.cpp as |
| everything can be implemented in the header. |
| |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::VRDisplay): |
| (WebCore::VRDisplay::isConnected const): |
| (WebCore::VRDisplay::stageParameters const): |
| * Modules/webvr/VRDisplayCapabilities.cpp: Removed. |
| * Modules/webvr/VRDisplayCapabilities.h: |
| (WebCore::VRDisplayCapabilities::hasPosition const): |
| (WebCore::VRDisplayCapabilities::hasOrientation const): |
| (WebCore::VRDisplayCapabilities::hasExternalDisplay const): |
| (WebCore::VRDisplayCapabilities::canPresent const): |
| (WebCore::VRDisplayCapabilities::maxLayer const): |
| (WebCore::VRDisplayCapabilities::VRDisplayCapabilities): |
| * Sources.txt: |
| * platform/vr/VRPlatformDisplay.h: |
| (WebCore::VRPlatformDisplayInfo::displayName const): |
| (WebCore::VRPlatformDisplayInfo::setDisplayName): |
| (WebCore::VRPlatformDisplayInfo::isConnected const): |
| (WebCore::VRPlatformDisplayInfo::setIsConnected): |
| (WebCore::VRPlatformDisplayInfo::isMounted const): |
| (WebCore::VRPlatformDisplayInfo::setIsMounted): |
| (WebCore::VRPlatformDisplayInfo::capabilityFlags const): |
| (WebCore::VRPlatformDisplayInfo::setCapabilityFlags): |
| (WebCore::VRPlatformDisplayInfo::displayIdentifier const): |
| (WebCore::VRPlatformDisplayInfo::setDisplayIdentifier): |
| (WebCore::VRPlatformDisplayInfo::eyeTranslation const): |
| (WebCore::VRPlatformDisplayInfo::setEyeTranslation): |
| (WebCore::VRPlatformDisplayInfo::eyeFieldOfView const): |
| (WebCore::VRPlatformDisplayInfo::setEyeFieldOfView): |
| (WebCore::VRPlatformDisplayInfo::renderSize const): |
| (WebCore::VRPlatformDisplayInfo::setRenderSize): |
| (WebCore::VRPlatformDisplayInfo::setPlayAreaBounds): |
| (WebCore::VRPlatformDisplayInfo::playAreaBounds const): |
| (WebCore::VRPlatformDisplayInfo::setSittingToStandingTransform): |
| (WebCore::VRPlatformDisplayInfo::sittingToStandingTransform const): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| (WebCore::VRPlatformDisplayOpenVR::updateEyeParameters): |
| (WebCore::VRPlatformDisplayOpenVR::updateStageParameters): |
| |
| 2018-02-27 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r229060. |
| https://bugs.webkit.org/show_bug.cgi?id=183198 |
| |
| This patch causes crashes on two SVG tests (Requested by fredw |
| on #webkit). |
| |
| Reverted changeset: |
| |
| "Relayout frames after AsyncFrameScrolling or FrameFlattening |
| option is changed" |
| https://bugs.webkit.org/show_bug.cgi?id=183081 |
| https://trac.webkit.org/changeset/229060 |
| |
| 2018-02-27 Youenn Fablet <youenn@apple.com> |
| |
| Do not trigger a service worker match in case of document redirection if it will be already served by AppCache |
| https://bugs.webkit.org/show_bug.cgi?id=183185 |
| <rdar://problem/37693796> |
| |
| Reviewed by Chris Dumez. |
| |
| Disabling service worker matching in case there is a substitute data. |
| Otherwise there is a risk for a double load, substitute data first and the new load |
| triggered if matching a new registration. |
| A future fix should first do service worker registration matching and if there is no registration query appcache. |
| |
| Test: http/tests/appcache/main-resource-redirect-with-sw.html |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::redirectReceived): |
| |
| 2018-02-27 Tim Horton <timothy_horton@apple.com> |
| |
| Ensure target triple is propagated correctly to DerivedSources.make |
| https://bugs.webkit.org/show_bug.cgi?id=183189 |
| <rdar://problem/37959694> |
| |
| Reviewed by Dan Bernstein. |
| |
| If we don't propagate the target triple, we can sometimes build with |
| the wrong options enabled. |
| |
| * Configurations/Base.xcconfig: |
| Mentioning LLVM_TARGET_TRIPLE_SUFFIX here is required to get it to be available to scripts. |
| |
| * DerivedSources.make: |
| Propagate the target triple into our compiler invocations. |
| |
| 2018-02-27 Doug Russell <doug@getitdownonpaper.com> |
| |
| AX: Spell check and style attributes should be optional when fetching attributed string |
| https://bugs.webkit.org/show_bug.cgi?id=160744 |
| |
| Reviewed by Chris Fleizach. |
| |
| The overhead of fetching a spell checked attributed string via AX API is substantial. |
| In some cases on the order of 7/8 of the total time spent fetching the string. |
| |
| This change introduces the new attribute AXAttributedStringForTextMarkerRangeWithOptions which accepts an NSDictionary as it's parameter with keys "AXTextMarkerRange" (AXTextMarkerRangeRef) and "AXSpellCheck" (NSNumber(BOOL)). |
| |
| AXAttributedStringForTextMarkerRange will remain unchanged. |
| |
| Tests: accessibility/mac/attributed-string/attributed-string-for-range-with-options.html |
| accessibility/mac/attributed-string/attributed-string-for-range.html |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (AXAttributedStringAppendText): |
| (-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]): |
| (-[WebAccessibilityObjectWrapper accessibilityParameterizedAttributeNames]): |
| (-[WebAccessibilityObjectWrapper doAXAttributedStringForRange:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| (-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]): Deleted. |
| |
| 2018-02-27 Daniel Bates <dabates@apple.com> |
| |
| Standardize terminology for marked text |
| https://bugs.webkit.org/show_bug.cgi?id=180999 |
| |
| Reviewed by Zalan Bujtas. |
| |
| The name MarkerSubrange is a misnomer for a data structure that associates a text subrange with a type |
| and optional document marker. In particular, a MarkerSubrange may not always correspond to a document |
| marker. For instance, selected text is represented using a MarkerSubrange that does not have a |
| corresponding document marker. Let's standardize on the phrase "marked text" as the canonical way to |
| describe these tagged text subranges. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::localSelectionRect const): |
| (WebCore::InlineTextBox::MarkedTextStyle::areBackgroundMarkedTextStylesEqual): |
| (WebCore::InlineTextBox::MarkedTextStyle::areForegroundMarkedTextStylesEqual): |
| (WebCore::InlineTextBox::MarkedTextStyle::areDecorationMarkedTextStylesEqual): |
| (WebCore::InlineTextBox::StyledMarkedText::StyledMarkedText): |
| (WebCore::createMarkedTextFromSelectionInBox): |
| (WebCore::InlineTextBox::paint): |
| (WebCore::InlineTextBox::paintPlatformDocumentMarkers): |
| (WebCore::InlineTextBox::paintPlatformDocumentMarker): |
| (WebCore::InlineTextBox::computeStyleForUnmarkedMarkedText const): |
| (WebCore::InlineTextBox::resolveStyleForMarkedText): |
| (WebCore::InlineTextBox::subdivideAndResolveStyle): |
| (WebCore::InlineTextBox::coalesceAdjacentMarkedTexts): |
| (WebCore::InlineTextBox::collectMarkedTextsForDraggedContent): |
| (WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers): |
| (WebCore::InlineTextBox::paintMarkedTexts): |
| (WebCore::InlineTextBox::paintMarkedTextBackground): |
| (WebCore::InlineTextBox::paintMarkedTextForeground): |
| (WebCore::InlineTextBox::paintMarkedTextDecoration): |
| (WebCore::InlineTextBox::paintCompositionBackground): |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areBackgroundMarkerSubrangeStylesEqual): Deleted. |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areForegroundMarkerSubrangeStylesEqual): Deleted. |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areDecorationMarkerSubrangeStylesEqual): Deleted. |
| (WebCore::InlineTextBox::StyledMarkerSubrange::StyledMarkerSubrange): Deleted. |
| (WebCore::createMarkerSubrangeFromSelectionInBox): Deleted. |
| (WebCore::InlineTextBox::computeStyleForUnmarkedMarkerSubrange const): Deleted. |
| (WebCore::InlineTextBox::resolveStyleForSubrange): Deleted. |
| (WebCore::InlineTextBox::coalesceAdjacentSubranges): Deleted. |
| (WebCore::InlineTextBox::collectSubrangesForDraggedContent): Deleted. |
| (WebCore::InlineTextBox::collectSubrangesForDocumentMarkers): Deleted. |
| (WebCore::InlineTextBox::paintMarkerSubranges): Deleted. |
| (WebCore::InlineTextBox::paintTextSubrangeBackground): Deleted. |
| (WebCore::InlineTextBox::paintTextSubrangeForeground): Deleted. |
| (WebCore::InlineTextBox::paintTextSubrangeDecoration): Deleted. |
| * rendering/InlineTextBox.h: |
| (WebCore::InlineTextBox::paintMarkedTexts): |
| (WebCore::InlineTextBox::paintMarkerSubranges): Deleted. |
| * rendering/MarkedText.cpp: Renamed from Source/WebCore/rendering/MarkerSubrange.cpp. |
| (WebCore::subdivide): |
| * rendering/MarkedText.h: Renamed from Source/WebCore/rendering/MarkerSubrange.h. |
| (WebCore::MarkedText::MarkedText): |
| (WebCore::MarkedText::isEmpty const): |
| (WebCore::MarkedText::operator!= const): |
| (WebCore::MarkedText::operator== const): |
| |
| 2018-02-27 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, roll out r228430. |
| |
| Roll out r228430 now that it is no longer needed after r228852. |
| |
| No new tests, initial fix is still covered by WebKit.RespondToPolicyForNavigationResponseAsynchronously |
| API test. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::stopLoading): |
| * loader/NavigationScheduler.cpp: |
| (WebCore::NavigationScheduler::schedule): |
| |
| 2018-02-27 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Correct implementation of pending tasks and promises |
| https://bugs.webkit.org/show_bug.cgi?id=183161 |
| |
| Reviewed by Dean Jackson. |
| |
| We had an incorrect implementation of the spec due to two misinterpretations. |
| |
| The first one is about pending tasks (play and pause) which the spec says should |
| be performed by "scheduling a task". In WebCore, this means using postTask() on a |
| ScriptExecutionContext, such as Document. One of the big practical changes is that |
| calling play() on an animation correctly sets its startTime to null (unresolved) |
| immediately after the call to play() returns before setting it to a resolved value |
| when the task is performed asynchronously. As a result, the playState is now always |
| accurate. |
| |
| The second one is about promises where new promises need to be created in certain |
| situations called out by the spec. We used to call clear() on them, but this merely |
| resets the fulfillment or rejection state of the promise, while the spec requires |
| a different object to be returned for the promise. We now create our promises using |
| makeUniqueRef<> when new promise objects are expected to be created. |
| |
| This patch also corrects a few smaller bugs and spec compliant issues, called out |
| below, related to pending tasks and promises uncovered while looking at relevant |
| WPT tests. |
| |
| * animation/DocumentTimeline.h: Expose the Document used to create this timeline such |
| that it may be used by WebAnimation objects registered for this timeline when scheduling |
| a task is required via postTask(). |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::WebAnimation): |
| (WebCore::WebAnimation::setBindingsStartTime): |
| (WebCore::WebAnimation::setCurrentTime): |
| (WebCore::WebAnimation::cancel): Ensure the finished promise has not already been fulfilled |
| before rejecting it. While the spec does not specifically call this out, a promise may not |
| be rejected after being fulfilled, and we would hit an ASSERT if we didn't also check that |
| it was in the correct pending state before attemping to reject it. |
| (WebCore::WebAnimation::resetPendingTasks): |
| (WebCore::WebAnimation::finish): |
| (WebCore::WebAnimation::updateFinishedState): |
| (WebCore::WebAnimation::finishNotificationSteps): |
| (WebCore::WebAnimation::play): We used to only check for a pending pause task before canceling |
| that task, but the spec says to check for either a pending pause or play task (ie. pending()) |
| and to cancel whichever is scheduled. |
| (WebCore::WebAnimation::runPendingPlayTask): We were missing an assertion called out by the |
| spec when running a pending task. |
| (WebCore::WebAnimation::pause): |
| (WebCore::WebAnimation::runPendingPauseTask): |
| (WebCore::WebAnimation::updatePendingTasks): We now use postTask() on the animation's associated |
| timeline's document to schedule pending tasks for which the criteria to run are met, ie. there |
| is an associated timeline. |
| * animation/WebAnimation.h: |
| |
| 2018-02-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Implement additional SPI for adjusting viewport shrink-to-fit behavior |
| https://bugs.webkit.org/show_bug.cgi?id=183100 |
| <rdar://problem/37840987> |
| |
| Reviewed by Tim Horton. |
| |
| Introduce new customization options to ViewportConfiguration. The first is m_forceHorizontalShrinkToFit, which |
| (when set to true) forces the viewport to scale using shrink-to-fit heuristics, regardless of whether |
| "shrink-to-fit=no" is specified via viewport parameters or if content width did not exceed minimum layout size. |
| The second is m_viewSize, which reflects the true size of the viewport. See WebKit ChangeLog for more details. |
| |
| Tests: ViewportSizingTests.ForceShrinkToFitViewportOverridesViewportParameters |
| ViewportSizingTests.ShrinkToFitViewportWithMinimumAllowedLayoutWidth |
| |
| * page/ViewportConfiguration.cpp: |
| (WebCore::ViewportConfiguration::ViewportConfiguration): |
| (WebCore::ViewportConfiguration::setMinimumLayoutSize): |
| |
| Plumb the real size of the view alongside the minimum layout size when updating the minimum layout size. |
| |
| (WebCore::ViewportConfiguration::setForceHorizontalShrinkToFit): |
| (WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const): |
| |
| Bail early and return true if forceHorizontalShrinkToFit is set. This forces shrink-to-fit even in cases where |
| "shrink-to-fit" is set to "no", or content dimensions don't exceed layout dimensions. |
| |
| (WebCore::ViewportConfiguration::initialScaleFromSize const): |
| |
| Use view dimensions rather than minimum layout dimensions when computing the initial scale. Minimum layout size |
| is no longer always equal to the size of the view if the client has specified a minimum allowed layout width. As |
| such, when computing the initial scale, to ensure that the content (which was laid out using the minimum layout |
| size) fits within the real viewport, we need to divide real viewport dimensions by content dimensions. |
| |
| (WebCore::ViewportConfiguration::minimumScale const): |
| |
| Similarly, use view size instead of minimum layout size to compute minimum scale. |
| |
| (WebCore::ViewportConfiguration::description const): |
| * page/ViewportConfiguration.h: |
| |
| 2018-02-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the debug build after r228877. |
| |
| In the case where CAN_DISALLOW_USER_INSTALLED_FONTS is enabled, this function doesn't return anything when |
| allowUserInstalledFonts != AllowUserInstalledFonts::No. Fix the build by moving `return nullptr;` back out of |
| the `#else`. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::installedFontMandatoryAttributes): |
| |
| 2018-02-27 Milan Crha <mcrha@redhat.com> |
| |
| Potential privacy issue: DNS prefetching can be re-enabled |
| https://bugs.webkit.org/show_bug.cgi?id=182924 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::parseDNSPrefetchControlHeader): |
| |
| 2018-02-26 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Implement the procedure to set the target effect of an animation |
| https://bugs.webkit.org/show_bug.cgi?id=183146 |
| |
| Reviewed by Dean Jackson. |
| |
| We only had a partial implementation of setEffect() and we now update it to cover the entire |
| implementation as mandated by the spec. While this doesn't yield any WPT results changes, this |
| patch will help getting a significant number of new PASS results when we get around to implement |
| correct support for async procedures (pending pause/play tasks and promises) in the next patch. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setEffect): |
| |
| 2018-02-26 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Update the playState implementation |
| https://bugs.webkit.org/show_bug.cgi?id=183145 |
| |
| Reviewed by Dean Jackson. |
| |
| The Web Animations spec has changed since we first implemented the playState property and the "pending" |
| enum value has been dropped since then (there is a separate "pending" property which we also implement). |
| We update our implementation to match the latest spec text. This does not change WPT test results a lot, |
| but this patch will help getting a significant number of new PASS results when we get around to implementing |
| correct support for async procedures (pending pause/play tasks and promises) in a couple of patches. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::playState const): |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| |
| 2018-02-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Address post-review comment after r229049. |
| https://bugs.webkit.org/show_bug.cgi?id=183142 |
| |
| Reviewed by Tim Horton. |
| |
| Wrap a newly added string literal with ASCIILiteral. |
| |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::extraDefaultStyleSheet): |
| |
| 2018-02-26 Mark Lam <mark.lam@apple.com> |
| |
| Modernize FINALIZE_CODE and peer macros to use __VA_ARGS__ arguments. |
| https://bugs.webkit.org/show_bug.cgi?id=183159 |
| <rdar://problem/37930837> |
| |
| Reviewed by Keith Miller. |
| |
| No new tests needed because this is just a refactoring patch. |
| |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::compile): |
| |
| 2018-02-26 Dan Bernstein <mitz@apple.com> |
| |
| Removed references to files that were removed in r228912. |
| |
| * WebCore.xcodeproj/project.pbxproj: Removed references to SourcesIOS.txt and SourcesMac.txt. |
| |
| 2018-02-26 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Tweak UA stylesheet to improve legibility of rendered text |
| https://bugs.webkit.org/show_bug.cgi?id=183142 |
| <rdar://problem/37912966> |
| |
| Reviewed by Tim Horton. |
| |
| Force text-size-adjust and hyphens to be always on in EXTRA_ZOOM_MODE. To accomplish this, we override the extra |
| style sheet in RenderTheme to include these two style rules. |
| |
| * rendering/RenderThemeIOS.h: |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::extraDefaultStyleSheet): |
| |
| 2018-02-26 Don Olmstead <don.olmstead@sony.com> |
| |
| Fix WebCore includes within WebKitLegacy |
| https://bugs.webkit.org/show_bug.cgi?id=183147 |
| |
| Reviewed by Tim Horton. |
| |
| No new tests. No change in behavior. |
| |
| * PlatformWin.cmake: |
| * platform/win/GDIUtilities.h: |
| |
| 2018-02-26 Youenn Fablet <youenn@apple.com> |
| |
| Add some more release logging related to DocumentWriter::addData crash |
| https://bugs.webkit.org/show_bug.cgi?id=183141 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Add some additional release logging to verify whether DocumentWriter::begin was called and exited before updating its state. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::commitData): |
| * loader/DocumentWriter.cpp: |
| (WebCore::DocumentWriter::begin): |
| * loader/DocumentWriter.h: |
| |
| 2018-02-26 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Implement the procedure to set the start time |
| https://bugs.webkit.org/show_bug.cgi?id=183137 |
| |
| Reviewed by Dean Jackson. |
| |
| Implement the procedure to set the start time as setBindingsStartTime() and use the setStartTime() method as |
| an internal method to set the m_startTime instance variable and invalidate the timing model rather than run |
| the entire procedure which should only be called when setting the "startTime" property through the JS API. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setTimeline): |
| (WebCore::WebAnimation::setBindingsStartTime): |
| (WebCore::WebAnimation::setStartTime): |
| (WebCore::WebAnimation::silentlySetCurrentTime): |
| (WebCore::WebAnimation::finish): |
| (WebCore::WebAnimation::updateFinishedState): |
| (WebCore::WebAnimation::runPendingPlayTask): |
| (WebCore::WebAnimation::runPendingPauseTask): |
| |
| 2018-02-26 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Cookies are not being added to the Cookie field in Request Headers |
| https://bugs.webkit.org/show_bug.cgi?id=183095 |
| |
| Reviewed by Alex Christensen. |
| |
| Populating the Cookie request header field now that cookies are no longer handled in libcurl. |
| |
| * platform/network/curl/CookieJarCurlDatabase.cpp: Renaming the httpOnly variable as its actual use wasn't clear |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| |
| 2018-02-26 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure setting the hold time invalidates the timing model |
| https://bugs.webkit.org/show_bug.cgi?id=183136 |
| |
| Reviewed by Dean Jackson. |
| |
| We used to always set the m_holdTime member variable directly, but the computation of the currentTime |
| depends on the value of m_holdTime, so setting the hold time should invalidate the timing model as well |
| as setting the m_holdTime member variable. In this patch we add a new setHoldTime() private method that |
| sets the member variable and invalidates the timing model. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setTimeline): |
| (WebCore::WebAnimation::setHoldTime): |
| (WebCore::WebAnimation::silentlySetCurrentTime): |
| (WebCore::WebAnimation::setCurrentTime): |
| (WebCore::WebAnimation::cancel): |
| (WebCore::WebAnimation::finish): |
| (WebCore::WebAnimation::updateFinishedState): |
| (WebCore::WebAnimation::play): |
| (WebCore::WebAnimation::runPendingPlayTask): |
| (WebCore::WebAnimation::pause): |
| (WebCore::WebAnimation::runPendingPauseTask): |
| * animation/WebAnimation.h: |
| |
| 2018-02-26 Youenn Fablet <youenn@apple.com> |
| |
| MessagePort is not always destroyed in the right thread |
| https://bugs.webkit.org/show_bug.cgi?id=183053 |
| |
| Reviewed by Chris Dumez. |
| |
| Make existingMessagePortForIdentifier take a lambda so that we hold the lock until there |
| is no longer a need to keep the MessagePort around. |
| This is very time sensitive and does not happen a lot when running WPT tests. |
| |
| Update existing call sites to pass a lambda. |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::existingMessagePortForIdentifier): |
| * dom/MessagePort.h: |
| * dom/messageports/MessagePortChannelProviderImpl.cpp: |
| (WebCore::MessagePortChannelProviderImpl::postMessageToRemote): |
| (WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): |
| |
| 2018-02-26 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r226745. |
| https://bugs.webkit.org/show_bug.cgi?id=183132 |
| |
| This is breaking some websites (Requested by youenn on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "Use no-cache fetch mode when loading main documents with |
| location.reload()" |
| https://bugs.webkit.org/show_bug.cgi?id=181285 |
| https://trac.webkit.org/changeset/226745 |
| |
| 2018-02-26 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, USE_GSTREAMER_PLAYBIN3 build fix. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| There is no such ENABLE_GSTREAMER_PLAYBIN3. |
| |
| 2018-02-26 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, manual rollout of r228866 causing EGL_BAD_CONTEXT errors |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): |
| Create an EGL display, even in Wayland. |
| |
| 2018-02-21 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR][OpenVR] Retrieve displayId and the z-depth of eye view frustum |
| https://bugs.webkit.org/show_bug.cgi?id=182999 |
| |
| Reviewed by Žan Doberšek. |
| |
| Retrieve the z-depth of the eye view frustum and the HMD unique id. |
| The unique identifier is generated by the VRPlatormManager whereas |
| we use the default values from the spec for the z-depth (those can |
| be changed by applications later via JavaScript). |
| |
| Once this lands the only remaining data to be retrieved from VR |
| backends for VRDisplay is the pose (getPose() call) and the frame |
| data (getFrameData() call). |
| |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::VRDisplay): |
| (WebCore::VRDisplay::displayId const): Deleted. |
| (WebCore::VRDisplay::displayName const): Deleted. |
| (WebCore::VRDisplay::depthNear const): Deleted. |
| (WebCore::VRDisplay::setDepthNear): Deleted. |
| (WebCore::VRDisplay::depthFar const): Deleted. |
| (WebCore::VRDisplay::setDepthFar): Deleted. |
| * Modules/webvr/VRDisplay.h: |
| (WebCore::VRDisplay::displayId const): Moved implementation from |
| source file. |
| (WebCore::VRDisplay::displayName const): Ditto. |
| (WebCore::VRDisplay::depthNear const): |
| (WebCore::VRDisplay::setDepthNear): |
| (WebCore::VRDisplay::depthFar const): |
| (WebCore::VRDisplay::setDepthFar): |
| * platform/vr/VRManager.cpp: |
| (WebCore::VRManager::generateUniqueDisplayIdentifier): |
| * platform/vr/VRManager.h: |
| * platform/vr/VRPlatformDisplay.h: |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| |
| 2018-02-26 Charlie Turner <cturner@igalia.com> |
| |
| Fix build error with !LOG_DISABLED |
| https://bugs.webkit.org/show_bug.cgi?id=183049 |
| |
| Reviewed by Philippe Normand. |
| |
| The following error message was being reported when doing a |
| release build with -DLOG_DISABLED=0: |
| |
| ../../Source/WebCore/dom/messageports/MessagePortChannel.cpp: In member function ‘void WebCore::MessagePortChannel::entanglePortWithProcess(const WebCore::MessagePortIdentifier&, WebCore::ProcessIdentifier)’: |
| ../../Source/WebCore/dom/messageports/MessagePortChannel.cpp:85:111: error: ‘logString’ was not declared in this scope |
| LOG(MessagePorts, "MessagePortChannel %s (%p) entangling port %s (that port has %zu messages available)", logString().utf8().data(), this, port.logString().utf8().data(), m_pendingMessages[i].size()); |
| |
| Other uses of logString are guarded by !LOG_DISABLED rather than |
| NDEBUG, which was the cause of this issue. |
| |
| * dom/messageports/MessagePortChannel.h: Guard using !LOG_DISABLED |
| rather than NDEBUG. |
| |
| 2018-02-26 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GStreamer] User current executable name instead of g_get_prgname() for gst_init |
| https://bugs.webkit.org/show_bug.cgi?id=183119 |
| |
| Reviewed by Philippe Normand. |
| |
| g_get_prgname() is only set for programs using GOptionContext, calling gtk_init or explicitly calling |
| g_set_prgname(). Use WTF::getCurrentExecutableName() instead. |
| |
| * platform/graphics/gstreamer/GStreamerUtilities.cpp: |
| (WebCore::initializeGStreamer): |
| |
| 2018-02-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Disable downloadable binary fonts by default |
| https://bugs.webkit.org/show_bug.cgi?id=183102 |
| <rdar://problem/37860699> |
| |
| Reviewed by Tim Horton. |
| |
| Disable downloadable binary fonts by default in extra zoom mode by making the initial value of |
| `downloadableBinaryFontsEnabled` conditional. Layout tests are not possible at this time; test to be added once |
| layout test support is in place. |
| |
| * page/Settings.yaml: |
| * page/SettingsBase.cpp: |
| (WebCore::SettingsBase::defaultDownloadableBinaryFontsEnabled): |
| * page/SettingsBase.h: |
| |
| 2018-02-25 Chris Dumez <cdumez@apple.com> |
| |
| Service workers do not work well inside Web.app |
| https://bugs.webkit.org/show_bug.cgi?id=183105 |
| <rdar://problem/37864140> |
| |
| Reviewed by Youenn Fablet. |
| |
| SessionID::defaultSessionID() was hardcoded in the ServiceWorkerThread constructor |
| instead of using the sessionID of the SWServer that created the service worker thread. |
| As a result, when the Service Worker would establish a SWClientConnection to the |
| server, it would use the wrong sessionID and would end up using a different SWServer |
| (Since we have a different SWServer instance per sessionID). As a result, |
| ServiceWorkerRegistration / ServiceWorker objects inside the service worker would not |
| be kept in sync with the server (since they registered themselves with the wrong |
| SWServer). |
| |
| Covered by new API test. |
| |
| * workers/service/ServiceWorkerContextData.cpp: |
| (WebCore::ServiceWorkerContextData::isolatedCopy const): |
| * workers/service/ServiceWorkerContextData.h: |
| (WebCore::ServiceWorkerContextData::encode const): |
| (WebCore::ServiceWorkerContextData::decode): |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::createPageForServiceWorker): |
| (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::importRecords): |
| * workers/service/server/RegistrationStore.h: |
| (WebCore::RegistrationStore::server): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::updateWorker): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::contextData const): |
| |
| 2018-02-24 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Null-dereference of the second argument `resource` of DocumentLoader::scheduleSubstituteResourceLoad |
| https://bugs.webkit.org/show_bug.cgi?id=182920 |
| |
| Reviewed by Darin Adler. |
| |
| A test case |
| imported/w3c/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.html |
| always crashes due to a null-dereference if compiled and optimized |
| by GCC 7.2. The second argument `resource` of |
| DocumentLoader::scheduleSubstituteResourceLoad can be null if the |
| resource can't be found in cache. I guess GCC optimizes inline |
| HashMap::add based on assuming the `resource` never becomes null |
| because its type is SubstituteResource&. |
| |
| This changes introduces a new method |
| DocumentLoader::scheduleCannotShowURLError because it looks tricky |
| to pass a nullptr to the second argument of |
| scheduleSubstituteResourceLoad. |
| |
| No new tests (Covered by existing tests). |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::scheduleCannotShowURLError): Added a new method. |
| * loader/DocumentLoader.h: |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::maybeLoadResource): |
| Call scheduleCannotShowURLError if the resource not found in the appcache. |
| |
| 2018-02-17 Darin Adler <darin@apple.com> |
| |
| Prepare for ExtendedColor changes (first step) |
| https://bugs.webkit.org/show_bug.cgi?id=182904 |
| |
| Reviewed by Sam Weinig. |
| |
| * css/CSSValuePool.cpp: |
| (WebCore::CSSValuePool::createColorValue): Use HashMap::ensure. |
| (WebCore::CSSValuePool::createFontFamilyValue): Ditto. |
| (WebCore::CSSValuePool::createFontFaceValue): Ditto. |
| |
| * css/parser/CSSParserFastPaths.cpp: |
| (WebCore::CSSParserFastPaths::maybeParseValue): Tightened up |
| the logic a bit. |
| |
| * html/canvas/CanvasRenderingContext2D.cpp: Removed many unneeded includes. |
| |
| * inspector/InspectorCanvas.cpp: |
| (WebCore::InspectorCanvas::recordAction): Updated for Ref instead of |
| RefPtr and to use move semantics. |
| (WebCore::buildArrayForAffineTransform): Return Ref instead of RefPtr. |
| (WebCore::buildArrayForVector): Ditto. |
| (WebCore::InspectorCanvas::buildInitialState): Ditto. Also use auto more. |
| (WebCore::InspectorCanvas::buildAction): Ditto. |
| (WebCore::InspectorCanvas::buildArrayForCanvasGradient): Ditto. |
| (WebCore::InspectorCanvas::buildArrayForCanvasPattern): Ditto. |
| (WebCore::InspectorCanvas::buildArrayForImageData): Ditto. |
| * inspector/InspectorCanvas.h: Updated for the above. Also us "using" instead |
| of typedef and removed unneeded ErrorString typedef and some includes. |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::concludeEditDrag): Use auto and Ref. |
| |
| * platform/DragData.h: Used pragma once and reorganized includes a bit. |
| |
| * platform/graphics/ImageFrame.h: |
| (WebCore::ImageFrame::frameBytes const): Use uint32_t instead of RGBA32 to |
| prepare for removal of the RGBA32 type coming in a future patch. |
| * platform/graphics/ImageSource.cpp: |
| (WebCore::ImageSource::cacheNativeImageAtIndex): Ditto. |
| (WebCore::ImageSource::canUseAsyncDecoding): Ditto. |
| |
| * platform/graphics/cocoa/GraphicsContextCocoa.mm: Tweaked #if for Mac-only |
| code to use PLATFORM(MAC) to be easier to read. |
| (WebCore::GraphicsContext::focusRingColor): Use sRGBColorSpaceRef instead of |
| calling CGColorSpaceCreateWithName each time. |
| |
| * platform/graphics/texmap/TextureMapperFPSCounter.cpp: Added include needed |
| now that it was removed from some header. |
| |
| * platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h: Use uint32_t |
| instead of RGBA32 to prepare for removal of the RGBA32 type coming in a future patch. |
| * platform/image-decoders/ScalableImageDecoder.cpp: |
| (WebCore::ScalableImageDecoder::frameBytesAtIndex const): Ditto. |
| * platform/image-decoders/cairo/ImageBackingStoreCairo.cpp: |
| (WebCore::ImageBackingStore::image const): Ditto. |
| * platform/image-decoders/gif/GIFImageDecoder.cpp: |
| (WebCore::GIFImageDecoder::haveDecodedRow): Ditto. |
| * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: |
| (WebCore::setPixel): Ditto. |
| (WebCore::JPEGImageDecoder::outputScanlines): Ditto. |
| * platform/image-decoders/png/PNGImageDecoder.cpp: |
| (WebCore::PNGImageDecoder::rowAvailable): Ditto. |
| (WebCore::PNGImageDecoder::frameComplete): Ditto. |
| * platform/image-decoders/webp/WEBPImageDecoder.cpp: |
| (WebCore::WEBPImageDecoder::decodeFrame): Ditto. |
| (WebCore::WEBPImageDecoder::applyPostProcessing): Ditto. |
| |
| * platform/mac/PlatformPasteboardMac.mm: |
| (WebCore::PlatformPasteboard::color): Added comments. |
| |
| * rendering/EllipsisBox.cpp: |
| (WebCore::EllipsisBox::paintSelection): Use Color::isVisible. |
| |
| 2018-02-23 Chris Dumez <cdumez@apple.com> |
| |
| Crash under SchemeRegistry::shouldTreatURLSchemeAsLocal(WTF::String const&) |
| https://bugs.webkit.org/show_bug.cgi?id=183066 |
| <rdar://problem/37804111> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| SecurityOrigin objects are constructed on various threads. However, someone added a |
| shouldTreatAsPotentiallyTrustworthy() call to the SecurityOrigin constructor which |
| was not thread safe. This is because this function relies on SchemeRegistry::shouldTreatURLSchemeAsSecure() |
| and SchemeRegistry::shouldTreatURLSchemeAsLocal() which were relying on global static HashMaps without |
| locks. |
| |
| Update SecurityOrigin to initialize m_isPotentiallyTrustworthy lazily, to avoid paying |
| initialization cost in the constructor. This is only queries by SecurityContext::isSecureContext(). |
| |
| Make SchemeRegistry::shouldTreatURLSchemeAsLocal() and SchemeRegistry::shouldTreatURLSchemeAsSecure() |
| thread-safe, since they are needed to initialize SecurityOrigin::m_isPotentiallyTrustworthy from |
| various threads. |
| |
| SchemeRegistry::shouldTreatURLSchemeAsSecure() is only called from SecurityOrigin (which requires |
| thread-safety), and getUserMedia() which is not hot code so the extra locking there should not |
| be an issue. |
| |
| SchemeRegistry::shouldTreatURLSchemeAsLocal() is called from SecurityOrigin (which requires thread- |
| safety). It is also called from isQuickLookPreviewURL(), MHTMLArchive::create(), Page::userStyleSheetLocationChanged(), |
| isRemoteWebArchive() and HTMLPlugInImageElement. All these are not hot code so I do not think |
| we need a fast path. |
| |
| * page/SecurityOrigin.cpp: |
| (WebCore::isLoopbackIPAddress): |
| (WebCore::shouldTreatAsPotentiallyTrustworthy): |
| (WebCore::SecurityOrigin::isPotentiallyTrustworthy const): |
| (WebCore::SecurityOrigin::isLocalHostOrLoopbackIPAddress): |
| * page/SecurityOrigin.h: |
| * platform/SchemeRegistry.cpp: |
| (WebCore::localURLSchemesLock): |
| (WebCore::localURLSchemes): |
| (WebCore::secureSchemesLock): |
| (WebCore::secureSchemes): |
| (WebCore::SchemeRegistry::registerURLSchemeAsLocal): |
| (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): |
| (WebCore::SchemeRegistry::registerURLSchemeAsSecure): |
| (WebCore::SchemeRegistry::shouldTreatURLSchemeAsSecure): |
| * platform/SchemeRegistry.h: |
| |
| 2018-02-23 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Cookie Database files are wrongfully getting deleted when the database is opened |
| https://bugs.webkit.org/show_bug.cgi?id=183051 |
| |
| Reviewed by Per Arne Vollan. |
| |
| The file stat logic was backwards causing a wrongful detection of database corruption. |
| Fixed the logic and abstracted these calls to use FileSystem. |
| |
| * platform/network/curl/CookieJarDB.cpp: |
| |
| 2018-02-23 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Make RenderTreeBuilder::* classes WTF_MAKE_FAST_ALLOCATED |
| https://bugs.webkit.org/show_bug.cgi?id=183084 |
| <rdar://problem/37828706> |
| |
| Reviewed by Antti Koivisto. |
| |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| * rendering/updating/RenderTreeBuilderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilderContinuation.h: |
| * rendering/updating/RenderTreeBuilderFirstLetter.h: |
| * rendering/updating/RenderTreeBuilderFormControls.h: |
| * rendering/updating/RenderTreeBuilderFullScreen.h: |
| * rendering/updating/RenderTreeBuilderInline.h: |
| * rendering/updating/RenderTreeBuilderList.h: |
| * rendering/updating/RenderTreeBuilderMathML.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.h: |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| * rendering/updating/RenderTreeBuilderSVG.h: |
| * rendering/updating/RenderTreeBuilderTable.h: |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.h: |
| |
| 2018-02-23 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderFullScreen::createPlaceholder to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=183027 |
| <rdar://problem/37773058> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setFullScreenRenderer): |
| * dom/Document.h: |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreenPlaceholder::RenderFullScreenPlaceholder): |
| (WebCore::RenderFullScreenPlaceholder::isRenderFullScreenPlaceholder const): |
| (WebCore::RenderFullScreen::wrapNewRenderer): |
| (WebCore::RenderFullScreen::wrapExistingRenderer): |
| (): Deleted. |
| (WebCore::RenderFullScreen::createPlaceholder): Deleted. |
| * rendering/RenderFullScreen.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::createPlaceholderForFullScreen): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderFullScreen.cpp: |
| (WebCore::RenderTreeBuilder::FullScreen::createPlaceholder): |
| * rendering/updating/RenderTreeBuilderFullScreen.h: |
| |
| 2018-02-23 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Add WARN_UNUSED_RETURN to detach() |
| https://bugs.webkit.org/show_bug.cgi?id=183073 |
| <rdar://problem/37814585> |
| |
| Reviewed by Antti Koivisto. |
| |
| So that we don't destroy a renderer accidentally. |
| |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| * rendering/updating/RenderTreeBuilderSVG.h: |
| |
| 2018-02-22 Antoine Quint <graouts@apple.com> |
| |
| REGRESSION (r228445): A big pause button shows over YouTube videos if you tap "Tap To Unmute" on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=183074 |
| <rdar://problem/37747028> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: media/modern-media-controls/start-support/start-support-disable-controls-and-re-enable-post-play.html |
| |
| In the fix for webkit.org/b/182668, we made it so that when the "controls" attribute is absent from a media |
| element we stop listening to the bulk of media events and prevent controls from updating any DOM properties |
| so as to minimize the amount of CPU usage by the Web process. |
| |
| An unfortunate side effect was that, if the media controls were disabled at the time the video starts playing, |
| the StartSupport class would thus not catch the "play" event and would not be able to set the "hasPlayed" |
| property to "true" on the MediaController, which would then prevent the _shouldShowStartButton() from returning |
| "false". As a result, if the "controls" attribute was turned back on after the media started playing, they |
| would default to showing the start button, which would be then in the play state, ie. showing the pause icon. |
| |
| We now set the "hasPlayed" property in the "play" event handler on MediaController, which is always registered |
| regardless of the "controls" attribute setting. We also ensure we invalidate the "showStartButton" property on |
| the media controls when StartSupport is enabled, which is the case when the "controls" attribute is toggled back |
| to "true" from a previous "false" value. |
| |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype.handleEvent): |
| * Modules/modern-media-controls/media/start-support.js: |
| (StartSupport): |
| (StartSupport.prototype.enable): |
| (StartSupport.prototype.handleEvent): |
| (StartSupport.prototype._updateShowsStartButton): |
| |
| 2018-02-23 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GStreamer][MiniBrowser] Honor GStreamer command line parameters in MiniBrowser |
| https://bugs.webkit.org/show_bug.cgi?id=173655 |
| <rdar://problem/37706341> |
| |
| Reviewed by Philippe Normand. |
| |
| Do not assume gst is only used in the WebProcess, the MIMETypeRegistry also uses gst to get the list of |
| supported media types. Move the code to extract gst options from the process command line to a helper function |
| and use it in the UI process to pass the options to the WebProcess, but also in the current process when gst is |
| initialized without providing options. |
| |
| Fixes several unit tests that use MIMETypeRegistry in the UI process. |
| |
| * platform/graphics/gstreamer/GStreamerUtilities.cpp: |
| (WebCore::extractGStreamerOptionsFromCommandLine): Helper to get the gst options from the current process |
| command line. |
| (WebCore::initializeGStreamer): Ensure this is called once. Get the gst options from the given vector or extract |
| it from the command line if not provided. |
| * platform/graphics/gstreamer/GStreamerUtilities.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::initializeGStreamerAndRegisterWebKitElements): Bring back the gst |
| initialization here. |
| |
| 2018-02-23 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] HTTP totalBytes query returns 0 after seeking (sometimes) |
| https://bugs.webkit.org/show_bug.cgi?id=183002 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webkit_web_src_init): Initialize member variables. Also no need |
| to set the appsrc size at that point. |
| (webKitWebSrcStop): There is no need to reset the size when |
| seeking. Size should in most cases represent the Content-Length |
| response attribute, even when seeking. |
| (webKitWebSrcStart): No need to reset the size attribute. |
| (webKitWebSrcQueryWithParent): Let appsrc handle DURATION queries. |
| (CachedResourceStreamingClient::responseReceived): Emit duration notification one time only. |
| |
| 2018-02-23 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] media/video-src-blob-using-open-panel.html crashes in Debug |
| https://bugs.webkit.org/show_bug.cgi?id=183005 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Test: media/video-src-blob-using-open-panel.html |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::convertToInternalProtocol): Also convert blob URIs |
| because they're handled by our httpsrc element. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webKitWebSrcGetProtocols): Prefix blob URIs too, for consistency purpose. |
| |
| 2018-02-22 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Remove currentTime() / currentTimeMS() |
| https://bugs.webkit.org/show_bug.cgi?id=183052 |
| |
| Reviewed by Mark Lam. |
| |
| * Modules/geolocation/Geolocation.cpp: |
| (WebCore::Geolocation::haveSuitableCachedPosition): |
| * dom/DOMTimeStamp.h: |
| (WebCore::convertSecondsToDOMTimeStamp): |
| * fileapi/File.cpp: |
| (WebCore::File::File): |
| (WebCore::File::lastModified const): |
| * history/HistoryItem.cpp: |
| (WebCore::generateSequenceNumber): |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::defaultValueForStepUp const): |
| * html/DateTimeInputType.cpp: |
| (WebCore::DateTimeInputType::defaultValueForStepUp const): |
| * html/MonthInputType.cpp: |
| (WebCore::MonthInputType::defaultValueForStepUp const): |
| * html/TimeInputType.cpp: |
| (WebCore::TimeInputType::defaultValueForStepUp const): |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::willSendRequest): |
| (WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest): |
| * loader/EmptyFrameLoaderClient.h: |
| * loader/FormSubmission.cpp: |
| (WebCore::generateFormDataIdentifier): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::clientRedirected): |
| * loader/FrameLoader.h: |
| * loader/FrameLoaderClient.h: |
| * loader/NavigationScheduler.cpp: |
| * page/History.cpp: |
| (WebCore::History::stateObjectAdded): |
| * page/History.h: |
| * page/PageOverlay.cpp: |
| (WebCore::PageOverlay::startFadeAnimation): |
| (WebCore::PageOverlay::fadeAnimationTimerFired): |
| * page/PageOverlay.h: |
| * platform/graphics/cg/GraphicsContextCG.cpp: |
| (WebCore::GraphicsContext::drawNativeImage): |
| * platform/ios/LegacyTileLayerPool.h: |
| * platform/ios/LegacyTileLayerPool.mm: |
| (WebCore::LegacyTileLayerPool::LegacyTileLayerPool): |
| (WebCore::LegacyTileLayerPool::addLayer): |
| (WebCore::LegacyTileLayerPool::decayedCapacity const): |
| (WebCore::LegacyTileLayerPool::prune): |
| * platform/ios/SystemMemoryIOS.cpp: |
| (WebCore::systemMemoryLevel): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: |
| |
| 2018-02-22 Per Arne Vollan <pvollan@apple.com> |
| |
| The WebContent process should not use NSScreen in the screenDepth implementation. |
| https://bugs.webkit.org/show_bug.cgi?id=183048 |
| |
| Reviewed by Brent Fulgham. |
| |
| NSScreen method calls should be done in the UIProcess, since these calls will communicate with |
| the WindowServer. The screen depth property can be retrieved in the UIProcess, and sent to the |
| WebContent process, where it is cached. Whenever screen properties change, the UIProcess will |
| send the new screen properties to the WebProcess. |
| |
| No new tests, covered by existing tests. |
| |
| * platform/ScreenProperties.h: |
| (WebCore::ScreenProperties::encode const): |
| (WebCore::ScreenProperties::decode): |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::getScreenProperties): |
| (WebCore::screenDepth): |
| (WebCore::screenDepthPerComponent): |
| (WebCore::screenRect): |
| (WebCore::screenAvailableRect): |
| |
| 2018-02-22 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Rename insertChild() -> attach(), takeChild() -> detach() and removeAndDestroy() -> destroy() |
| https://bugs.webkit.org/show_bug.cgi?id=183061 |
| <rdar://problem/37800269> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| ...and moveChildTo() -> move() (moveChildrenTo() -> moveChildren()), |
| removeFromParentAndDestroyCleaningUpAnonymousWrappers() -> destroyAndCleanUpAnonymousWrappers() |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::destroyRenderTree): |
| (WebCore::Document::setFullScreenRenderer): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setText): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::didAttachChild): |
| (WebCore::RenderElement::didInsertChild): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::wrapNewRenderer): |
| (WebCore::RenderFullScreen::wrapExistingRenderer): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| (WebCore::RenderFullScreen::createPlaceholder): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::didAttachChild): |
| (RenderMenuList::setText): |
| (RenderMenuList::didInsertChild): Deleted. |
| * rendering/RenderMenuList.h: |
| * rendering/RenderQuote.cpp: |
| (WebCore::RenderQuote::updateTextRenderer): |
| * rendering/RenderTextFragment.cpp: |
| (WebCore::RenderTextFragment::setText): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::destroy): |
| (WebCore::RenderTreeBuilder::attach): |
| (WebCore::RenderTreeBuilder::attachIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::detach): |
| (WebCore::RenderTreeBuilder::attachToRenderElement): |
| (WebCore::RenderTreeBuilder::attachToRenderElementInternal): |
| (WebCore::RenderTreeBuilder::move): |
| (WebCore::RenderTreeBuilder::moveAllChildren): |
| (WebCore::RenderTreeBuilder::moveChildren): |
| (WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloats): |
| (WebCore::RenderTreeBuilder::makeChildrenNonInline): |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| (WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock): |
| (WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers): |
| (WebCore::RenderTreeBuilder::detachFromRenderGrid): |
| (WebCore::RenderTreeBuilder::detachFromRenderElement): |
| (WebCore::RenderTreeBuilder::attachToRenderGrid): |
| (WebCore::RenderTreeBuilder::removeAndDestroy): Deleted. |
| (WebCore::RenderTreeBuilder::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildIgnoringContinuation): Deleted. |
| (WebCore::RenderTreeBuilder::takeChild): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToRenderElement): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToRenderElementInternal): Deleted. |
| (WebCore::RenderTreeBuilder::moveChildTo): Deleted. |
| (WebCore::RenderTreeBuilder::moveAllChildrenTo): Deleted. |
| (WebCore::RenderTreeBuilder::moveChildrenTo): Deleted. |
| (WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloatsTo): Deleted. |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): Deleted. |
| (WebCore::RenderTreeBuilder::takeChildFromRenderGrid): Deleted. |
| (WebCore::RenderTreeBuilder::takeChildFromRenderElement): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToRenderGrid): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::attach): |
| (WebCore::RenderTreeBuilder::Block::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::Block::removeLeftoverAnonymousBlock): |
| (WebCore::RenderTreeBuilder::Block::detach): |
| (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild): |
| (WebCore::RenderTreeBuilder::Block::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation): Deleted. |
| (WebCore::RenderTreeBuilder::Block::takeChild): Deleted. |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::attach): |
| (WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloats): |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo): Deleted. |
| * rendering/updating/RenderTreeBuilderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilderContinuation.cpp: |
| (WebCore::RenderTreeBuilder::Continuation::cleanupOnDestroy): |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::cleanupOnDestroy): |
| (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| * rendering/updating/RenderTreeBuilderFormControls.cpp: |
| (WebCore::RenderTreeBuilder::FormControls::attach): |
| (WebCore::RenderTreeBuilder::FormControls::detach): |
| (WebCore::RenderTreeBuilder::FormControls::findOrCreateParentForChild): |
| (WebCore::RenderTreeBuilder::FormControls::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::FormControls::takeChild): Deleted. |
| * rendering/updating/RenderTreeBuilderFormControls.h: |
| * rendering/updating/RenderTreeBuilderFullScreen.cpp: |
| (WebCore::RenderTreeBuilder::FullScreen::cleanupOnDestroy): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::attach): |
| (WebCore::RenderTreeBuilder::Inline::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Inline::attachIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::Inline::splitFlow): |
| (WebCore::RenderTreeBuilder::Inline::splitInlines): |
| (WebCore::RenderTreeBuilder::Inline::childBecameNonInline): |
| (WebCore::RenderTreeBuilder::Inline::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation): Deleted. |
| * rendering/updating/RenderTreeBuilderInline.h: |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMathML.cpp: |
| (WebCore::RenderTreeBuilder::MathML::makeFences): |
| (WebCore::RenderTreeBuilder::MathML::attach): |
| (WebCore::RenderTreeBuilder::MathML::insertChild): Deleted. |
| * rendering/updating/RenderTreeBuilderMathML.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant): |
| (WebCore::RenderTreeBuilder::MultiColumn::handleSpannerRemoval): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::attach): |
| (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): |
| (WebCore::RenderTreeBuilder::Ruby::rubyBaseSafe): |
| (WebCore::RenderTreeBuilder::Ruby::detach): |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): Deleted. |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::attach): |
| (WebCore::RenderTreeBuilder::SVG::detach): |
| (WebCore::RenderTreeBuilder::SVG::insertChild): Deleted. |
| (WebCore::RenderTreeBuilder::SVG::takeChild): Deleted. |
| * rendering/updating/RenderTreeBuilderSVG.h: |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild): |
| (WebCore::RenderTreeBuilder::Table::attach): |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| (WebCore::RenderTreeBuilder::Table::insertChild): Deleted. |
| * rendering/updating/RenderTreeBuilderTable.h: |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::createRenderer): |
| (WebCore::RenderTreeUpdater::createTextRenderer): |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| (WebCore::RenderTreeUpdater::tearDownTextRenderer): |
| (WebCore::RenderTreeUpdater::tearDownLeftoverPaginationRenderersIfNeeded): |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: |
| (WebCore::createContentRenderers): |
| |
| 2018-02-22 Chris Dumez <cdumez@apple.com> |
| |
| ResourceRequestBase::isolatedCopy() fails to isolate copy the cachePartition |
| https://bugs.webkit.org/show_bug.cgi?id=183059 |
| <rdar://problem/37800202> |
| |
| Reviewed by Youenn Fablet. |
| |
| Update ResourceRequestBase::setAsIsolatedCopy() to call isolatedCopy() on the cachePartition as well, |
| given that it is a String and it would not be safe to send it to another thread otherwise. |
| |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setAsIsolatedCopy): |
| |
| 2018-02-22 Chris Dumez <cdumez@apple.com> |
| |
| ServiceWorkerContainer::startScriptFetchForJob() fails to isolate copy the registrationKey before passing it to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=183050 |
| <rdar://problem/37796881> |
| |
| Reviewed by Youenn Fablet. |
| |
| Create an isolated copy of the registrationKey before passing it to the main thread in ServiceWorkerContainer's |
| startScriptFetchForJob() / jobFinishedLoadingScript() / jobFailedLoadingScript(). |
| |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::startScriptFetchForJob): |
| (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript): |
| (WebCore::ServiceWorkerContainer::jobFailedLoadingScript): |
| |
| 2018-02-22 Chris Dumez <cdumez@apple.com> |
| |
| ServiceWorkerContainer::scheduleJob() fails to isolate copy the jobData before passing it to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=183046 |
| <rdar://problem/37793395> |
| |
| Reviewed by Youenn Fablet. |
| |
| Make sure we isolate copy the jobData before passing it to the main thread in ServiceWorkerContainer::scheduleJob(). |
| The jobData contains Strings / URLs so it is not safe to have non-isolated copies of it on various threads. |
| |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::scheduleJob): |
| |
| 2018-02-22 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Fix warning on clang. |
| https://bugs.webkit.org/show_bug.cgi?id=182986 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| No new tests because there's no behaviro changes. |
| |
| * platform/network/curl/CurlResourceHandleDelegate.cpp: |
| (WebCore::CurlResourceHandleDelegate::curlDidSendData): |
| (WebCore::CurlResourceHandleDelegate::curlDidReceiveBuffer): |
| (WebCore::CurlResourceHandleDelegate::curlDidFailWithError): |
| * platform/network/curl/CurlResourceHandleDelegate.h: |
| |
| 2018-02-22 Youenn Fablet <youenn@apple.com> |
| |
| WorkerCacheStorageConnection::doRemove can assert in case two frames try to delete the same cache at the same time |
| https://bugs.webkit.org/show_bug.cgi?id=183041 |
| |
| Reviewed by Chris Dumez. |
| |
| * Modules/cache/WorkerCacheStorageConnection.cpp: |
| (WebCore::WorkerCacheStorageConnection::doRemove): Update the assertion to accept the |
| case of an already deleted cache, i.e. returned identifer is 0. |
| |
| 2018-02-22 Alejandro G. Castro <alex@igalia.com> |
| |
| Remove some code leftovers in LibWebRTCMediaEndpoint and RealtimeOutgoingVideoSource classes |
| https://bugs.webkit.org/show_bug.cgi?id=183031 |
| |
| Reviewed by Youenn Fablet. |
| |
| This include and namespace are not required in the file. |
| |
| Just removing unused code, no tests required. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| |
| 2018-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Document.open() cancels existing provisional load but not navigation policy check |
| https://bugs.webkit.org/show_bug.cgi?id=183012 |
| <rdar://problem/37755831> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: fast/dom/Document/open-with-pending-load-async-policy.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::open): |
| The existing code was calling FrameLoader::stopAllLoaders() when the loader's state |
| is FrameStateProvisional. The issue is that the FrameLoader's state only gets set |
| to FrameStateProvisional after the policy decision for the navigation is made. |
| This means that we fail to cancel a pending load if is still in the policy decision |
| stage, which can happen when the policy decision is made asynchronously. We now |
| also cancel such pending navigation policy checks as well. |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::PolicyChecker::checkNavigationPolicy): |
| Make sure the m_delegateIsDecidingNavigationPolicy flag gets reset inside the |
| lambda. Otherwise, it gets reset too early when the policy decision is made |
| asynchronously. |
| |
| 2018-02-22 Youenn Fablet <youenn@apple.com> |
| |
| Add release asserts for service worker fetch and postMessage events |
| https://bugs.webkit.org/show_bug.cgi?id=183025 |
| rdar://problem/37765052 |
| |
| Reviewed by Daniel Bates. |
| |
| Add release assertion so that a service worker will only dispatch a message event |
| for clients and service workers with the same origin. |
| No change of behavior. |
| |
| * platform/network/ResourceRequestBase.h: |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::postMessageToServiceWorker): |
| * workers/service/context/ServiceWorkerThreadProxy.h: |
| |
| 2018-02-22 Miguel Gomez <magomez@igalia.com> |
| |
| including both gl3.h and gl2.h when USE_OPENGL_ES is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=183008 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Don't include GLES3 headers as we stick to GLES2 API resources. |
| |
| No new tests, no behavior change. |
| |
| * platform/graphics/GLContext.cpp: |
| |
| 2018-02-22 Ms2ger <Ms2ger@igalia.com> |
| |
| [GTK][WPE] Fix some build errors in service workers code |
| https://bugs.webkit.org/show_bug.cgi?id=182966 |
| |
| Reviewed by Žan Doberšek. |
| |
| No new tests: no change in behavior. |
| |
| * workers/service/ServiceWorkerProvider.h: add missing forward declaration. |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderObject::insertedInto() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=183022 |
| <rdar://problem/37764326> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::insertedIntoTree): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChildToRenderElementInternal): |
| (WebCore::RenderTreeBuilder::moveChildrenTo): |
| (WebCore::RenderTreeBuilder::multiColumnDescendantInserted): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-21 Tim Horton <timothy_horton@apple.com> |
| |
| Include all Cocoa sources in all Cocoa platform builds |
| https://bugs.webkit.org/show_bug.cgi?id=183026 |
| <rdar://problem/37513101> |
| |
| Reviewed by Dan Bernstein. |
| |
| Similar to r228571, don't have separate Sources files for iOS and Mac. |
| All sources now have #ifdefs that ensure that only the right ones |
| build on the right platforms. This makes it much easier to reason |
| about what builds where by just looking at the sources. |
| |
| * SourcesCocoa.txt: |
| * SourcesIOS.txt: Removed. |
| * SourcesMac.txt: Removed. |
| * WebCore.xcodeproj/project.pbxproj: |
| * editing/WebContentReader.h: |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h: |
| |
| 2018-02-21 Youenn Fablet <youenn@apple.com> |
| |
| Make SubstituteResource take a ResourceResponse r-value |
| https://bugs.webkit.org/show_bug.cgi?id=183020 |
| |
| Reviewed by Alex Christensen. |
| |
| No change of behavior. |
| Make SubstituteResource take a ResourceResponse r-value. |
| Update ArchiveResource accordingly. |
| Take benefit of that in ApplicationCacheResource to set the response source to ApplicationCache |
| before passing it to SubstituteResource constructor. |
| |
| * loader/SubstituteResource.h: |
| (WebCore::SubstituteResource::SubstituteResource): |
| (WebCore::SubstituteResource::resourceResponse): Deleted. |
| * loader/appcache/ApplicationCacheResource.cpp: |
| (WebCore::ApplicationCacheResource::create): |
| (WebCore::ApplicationCacheResource::ApplicationCacheResource): |
| * loader/appcache/ApplicationCacheResource.h: |
| (WebCore::ApplicationCacheResource::create): Deleted. |
| * loader/archive/ArchiveResource.cpp: |
| (WebCore::ArchiveResource::ArchiveResource): |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] ::willBeRemoved() does not need RenderTreeBuilder anymore. |
| https://bugs.webkit.org/show_bug.cgi?id=183019 |
| <rdar://problem/37761421> |
| |
| Reviewed by Antti Koivisto. |
| |
| All the willBeDestroyed() mutations have been moved over to RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::willBeDestroyed): |
| * rendering/RenderBlock.h: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::willBeDestroyed): |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::willBeDestroyed): |
| * rendering/RenderBox.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::willBeDestroyed): |
| * rendering/RenderBoxModelObject.h: |
| * rendering/RenderCounter.cpp: |
| (WebCore::RenderCounter::willBeDestroyed): |
| * rendering/RenderCounter.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::willBeDestroyed): |
| * rendering/RenderElement.h: |
| * rendering/RenderEmbeddedObject.cpp: |
| (WebCore::RenderEmbeddedObject::willBeDestroyed): |
| * rendering/RenderEmbeddedObject.h: |
| * rendering/RenderFragmentedFlow.cpp: |
| (WebCore::RenderFragmentedFlow::willBeDestroyed): |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::willBeDestroyed): |
| * rendering/RenderImage.h: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::willBeDestroyed): |
| * rendering/RenderInline.h: |
| * rendering/RenderLayerModelObject.cpp: |
| (WebCore::RenderLayerModelObject::willBeDestroyed): |
| * rendering/RenderLayerModelObject.h: |
| * rendering/RenderListBox.cpp: |
| (WebCore::RenderListBox::willBeDestroyed): |
| * rendering/RenderListBox.h: |
| * rendering/RenderListMarker.cpp: |
| (WebCore::RenderListMarker::willBeDestroyed): |
| * rendering/RenderListMarker.h: |
| * rendering/RenderMenuList.cpp: |
| (WebCore::RenderMenuList::willBeDestroyed): |
| * rendering/RenderMenuList.h: |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::willBeDestroyed): |
| (WebCore::RenderObject::destroy): |
| * rendering/RenderObject.h: |
| * rendering/RenderReplaced.cpp: |
| (WebCore::RenderReplaced::willBeDestroyed): |
| * rendering/RenderReplaced.h: |
| * rendering/RenderSearchField.cpp: |
| (WebCore::RenderSearchField::willBeDestroyed): |
| * rendering/RenderSearchField.h: |
| * rendering/RenderSnapshottedPlugIn.cpp: |
| (WebCore::RenderSnapshottedPlugIn::willBeDestroyed): |
| * rendering/RenderSnapshottedPlugIn.h: |
| * rendering/RenderText.cpp: |
| (WebCore::RenderText::willBeDestroyed): |
| * rendering/RenderText.h: |
| * rendering/RenderTextControlMultiLine.cpp: |
| (WebCore::RenderTextControlMultiLine::willBeDestroyed): |
| * rendering/RenderTextControlMultiLine.h: |
| * rendering/RenderVideo.cpp: |
| (WebCore::RenderVideo::willBeDestroyed): |
| * rendering/RenderVideo.h: |
| * rendering/RenderWidget.cpp: |
| (WebCore::RenderWidget::willBeDestroyed): |
| * rendering/RenderWidget.h: |
| * rendering/svg/RenderSVGBlock.cpp: |
| (WebCore::RenderSVGBlock::willBeDestroyed): |
| * rendering/svg/RenderSVGBlock.h: |
| * rendering/svg/RenderSVGImage.cpp: |
| (WebCore::RenderSVGImage::willBeDestroyed): |
| * rendering/svg/RenderSVGImage.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::willBeDestroyed): |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGModelObject.cpp: |
| (WebCore::RenderSVGModelObject::willBeDestroyed): |
| * rendering/svg/RenderSVGModelObject.h: |
| * rendering/svg/RenderSVGResourceContainer.cpp: |
| (WebCore::RenderSVGResourceContainer::willBeDestroyed): |
| * rendering/svg/RenderSVGResourceContainer.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::willBeDestroyed): |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::willBeDestroyed): |
| * rendering/svg/RenderSVGText.h: |
| |
| 2018-02-21 Per Arne Vollan <pvollan@apple.com> |
| |
| The WebContent process should not use NSScreen in the screenAvailableRect/screenRect implementations. |
| https://bugs.webkit.org/show_bug.cgi?id=182855 |
| |
| Reviewed by Brent Fulgham. |
| |
| On macOS, the functions screenAvailableRect and screenRect is implemented using NSScreen, which is communicating |
| with the WindowServer. To avoid this WindowServer communication from the WebContent process when calling |
| screenAvailableRect and screenRect, it is possible to let the UIProcess send a message to the WebContent |
| process whenever there is a change in the display properties, and have the WebContent process cache these |
| display properties. This message should also be sent to a newly started WebContent process. |
| |
| No new tests, covered by existing tests. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/PlatformScreen.h: |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::getScreenProperties): |
| (WebCore::screenProperties): |
| (WebCore::setScreenProperties): |
| (WebCore::screenRect): |
| (WebCore::screenAvailableRect): |
| * platform/ScreenProperties.h: Added. |
| (WebCore::ScreenProperties::encode const): |
| (WebCore::ScreenProperties::decode): |
| |
| 2018-02-21 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Curl Cookie Database File should be configurable using NetworkProcessCreationParameters |
| https://bugs.webkit.org/show_bug.cgi?id=182751 |
| |
| Reviewed by Youenn Fablet. |
| |
| No change in behavior. |
| |
| Adding support to set a custom CookieJar Database. |
| Took CookieJarDB::open() out of its constructor because both the Network and Web process |
| were trying to open the journal files but one process was failing due to a lack of permission. |
| Now the database file is lazily opened and only the Network process will try to open the database. |
| Some cleanup was done to CookieJarDB too. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/curl/CookieJarDB.cpp: |
| * platform/network/curl/CookieJarDB.h: |
| * platform/network/curl/NetworkStorageSessionCurl.cpp: |
| |
| 2018-02-21 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r228708): Crash under WebCore::MediaResource::responseReceived(WebCore::CachedResource&, WebCore::ResourceResponse const&) |
| https://bugs.webkit.org/show_bug.cgi?id=183018 |
| <rdar://problem/37754154> |
| |
| Reviewed by Eric Carlson. |
| |
| The fix at r228708 was trying to address the fact that avplayer sometimes |
| deallocates WebCoreNSURLSessionDataTask objects on a non-main thread, which |
| was not safe because its _resource data member needs to be deallocated on |
| the main thread. |
| |
| The issue is that r228708 caused _resource to outlive its WebCoreNSURLSessionDataTask. |
| This is an issue because _resource has a client data member (of type WebCoreNSURLSessionDataTaskClient) |
| which has a raw pointer to the WebCoreNSURLSessionDataTask. This means that the main thread could |
| call methods like responseReceived() on the resource, which would call responseReceived() on the |
| client, which would try to call [WebCoreNSURLSessionDataTask receivedResponse:] with an invalid |
| m_task pointer. |
| |
| To address the issue, I introduced a clearTask() method on WebCoreNSURLSessionDataTaskClient, which |
| gets called from a non-main thread to clear the client's m_task pointer when the task is destroyed |
| on a non-main thread. So that this is safe, every time the client tries to use m_task, we now |
| acquire a lock for thread-safety and do a null-check on m_task. |
| |
| No new tests, no known reproduction case. |
| |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| (WebCore::PlatformMediaResource::client): |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (WebCore::WebCoreNSURLSessionDataTaskClient::clearTask): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::dataSent): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::shouldCacheResponse): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::accessControlCheckFailed): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::loadFailed): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::loadFinished): |
| (-[WebCoreNSURLSessionDataTask dealloc]): |
| |
| 2018-02-21 Youenn Fablet <youenn@apple.com> |
| |
| Move AppCache loading to the NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=178540 |
| <rdar://problem/37119346> |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by existing tests. |
| |
| Use ApplicationResourceLoader for cache entry loading. |
| Remove all ResourceHandle use from ApplicationCacheGroup. |
| Renamed m_loader in m_manifestLoader and added a new m_entryLoader to load cache entries. |
| |
| Updated ApplicationCacheResourceLoader to handle different types of CachedResource. |
| This allows in particular to handle redirections based on the resource type and create the ApplicationCacheResource with the right type. |
| Use Include as credentials mode as per specification. |
| |
| Add a new ApplicationCache ResourceResonse::Source. |
| This allows fixing an assertion and should allow better inspector support if needs be. |
| |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::responseSource): |
| * loader/ResourceLoader.cpp: |
| (WebCore::logResourceResponseSource): |
| * loader/SubstituteResource.h: |
| (WebCore::SubstituteResource::resourceResponse): |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::stopLoading): |
| (WebCore::ApplicationCacheGroup::update): |
| (WebCore::ApplicationCacheGroup::didFinishLoading): |
| (WebCore::ApplicationCacheGroup::didFinishLoadingEntry): |
| (WebCore::ApplicationCacheGroup::didFail): |
| (WebCore::ApplicationCacheGroup::didFailLoadingEntry): |
| (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): |
| (WebCore::ApplicationCacheGroup::startLoadingEntry): |
| * loader/appcache/ApplicationCacheGroup.h: |
| * loader/appcache/ApplicationCacheResource.cpp: |
| (WebCore::ApplicationCacheResource::ApplicationCacheResource): |
| * loader/appcache/ApplicationCacheResourceLoader.cpp: |
| (WebCore::ApplicationCacheResourceLoader::create): |
| (WebCore::ApplicationCacheResourceLoader::ApplicationCacheResourceLoader): |
| (WebCore::ApplicationCacheResourceLoader::responseReceived): |
| (WebCore::ApplicationCacheResourceLoader::redirectReceived): |
| * loader/appcache/ApplicationCacheResourceLoader.h: |
| * platform/network/ResourceResponseBase.h: |
| * platform/network/cocoa/ResourceResponseCocoa.mm: |
| (WebCore::ResourceResponse::platformCertificateInfo const): |
| * testing/Internals.cpp: |
| (WebCore::responseSourceToString): |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBoxModelObject::willBeRemoved() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=183014 |
| <rdar://problem/37757428> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::~RenderBoxModelObject): |
| (WebCore::RenderBoxModelObject::willBeDestroyed): |
| (WebCore::RenderBoxModelObject::continuationChainNode const): |
| (): Deleted. |
| (WebCore::RenderBoxModelObject::removeAndDestroyAllContinuations): Deleted. |
| * rendering/RenderBoxModelObject.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::removeAndDestroy): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::continuationBuilder): |
| * rendering/updating/RenderTreeBuilderContinuation.cpp: Added. |
| (WebCore::RenderTreeBuilder::Continuation::Continuation): |
| (WebCore::RenderTreeBuilder::Continuation::cleanupOnDestroy): |
| * rendering/updating/RenderTreeBuilderContinuation.h: Added. |
| |
| 2018-02-21 Youenn Fablet <youenn@apple.com> |
| |
| ServiceWorkerJob::m_lastResponse is unneeded |
| https://bugs.webkit.org/show_bug.cgi?id=183013 |
| |
| Reviewed by Chris Dumez. |
| |
| Remove this field since not used anywhere. |
| |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::didReceiveResponse): |
| * workers/service/ServiceWorkerJob.h: |
| |
| 2018-02-21 Youenn Fablet <youenn@apple.com> |
| |
| Use ResourceLoader to load appcache manifest |
| https://bugs.webkit.org/show_bug.cgi?id=182861 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated tests. |
| |
| Add ApplicationCacheResourceLoader to load an ApplicationCacheResource from a ResourceLoader. |
| Make use of it to load the app cache manifest. |
| Future work should load entries using the same loader. |
| |
| Remove manifest handle. |
| Ensure that DocumentLoader does not register the manifest resource loader as its lifetime |
| is handled by its ApplicationCacheGroup. |
| |
| Add a ResourceLoader option to bypass the application cache. |
| Use it for manifest loading. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::addSubresourceLoader): |
| * loader/ResourceLoaderOptions.h: |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::stopLoading): |
| (WebCore::ApplicationCacheGroup::update): |
| (WebCore::ApplicationCacheGroup::createRequest): |
| (WebCore::ApplicationCacheGroup::didReceiveResponseAsync): |
| (WebCore::ApplicationCacheGroup::didReceiveData): |
| (WebCore::ApplicationCacheGroup::didFinishLoading): |
| (WebCore::ApplicationCacheGroup::didFail): |
| (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): |
| (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): |
| * loader/appcache/ApplicationCacheGroup.h: |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::maybeLoadResource): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForError): |
| * loader/appcache/ApplicationCacheResourceLoader.cpp: Added. |
| * loader/appcache/ApplicationCacheResourceLoader.h: Added. |
| |
| 2018-02-21 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h |
| https://bugs.webkit.org/show_bug.cgi?id=182883 |
| |
| Reviewed by Per Arne Vollan. |
| |
| No new tests. No change in behavior. |
| |
| * WebCorePrefix.h: |
| * config.h: |
| * testing/js/WebCoreTestSupportPrefix.h: |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderView::willBeRemoved() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=183009 |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::destroyRenderTree): |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::~RenderView): |
| (WebCore::RenderView::willBeDestroyed): Deleted. |
| * rendering/RenderView.h: |
| |
| 2018-02-21 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] USE_UPOWER causes crashes inside a chroot or on systems with broken dbus/upower |
| https://bugs.webkit.org/show_bug.cgi?id=181825 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| We could fix this crash, but that would not be good enough, because upower-glib is a |
| synchronous API that wraps D-Bus calls. That's not acceptable for use in the web process. |
| Rewrite LowPowerModeNotifierGLib to use upower's D-Bus API directly, instead. |
| |
| Note that this also enables LowPowerModeNotifier for WPE, since the USE(UPOWER) build |
| flag is no longer needed. |
| |
| * platform/LowPowerModeNotifier.cpp: |
| * platform/LowPowerModeNotifier.h: |
| * platform/glib/LowPowerModeNotifierGLib.cpp: |
| (WebCore::LowPowerModeNotifier::LowPowerModeNotifier): |
| (WebCore::LowPowerModeNotifier::updateWarningLevel): |
| (WebCore::LowPowerModeNotifier::warningLevelChanged): |
| (WebCore::LowPowerModeNotifier::gPropertiesChangedCallback): |
| (WebCore::LowPowerModeNotifier::~LowPowerModeNotifier): |
| (WebCore::LowPowerModeNotifier::updateState): Deleted. |
| (WebCore::LowPowerModeNotifier::warningLevelCallback): Deleted. |
| |
| 2018-02-21 Chris Dumez <cdumez@apple.com> |
| |
| VTTCue constructor should use 'double' type for startTime / endTime |
| https://bugs.webkit.org/show_bug.cgi?id=182988 |
| |
| Reviewed by Eric Carlson. |
| |
| VTTCue constructor should use 'double' type for startTime / endTime, not |
| 'unrestricted double': |
| - https://w3c.github.io/webvtt/#the-vttcue-interface |
| |
| Otherwise, we end up potentially returning NaN for TextTrackCue.startTime / endTime, |
| even though those correctly use type 'double': |
| - https://html.spec.whatwg.org/multipage/media.html#texttrackcue |
| |
| The new behavior is consistent with Firefox and Chrome. |
| |
| No new tests, updated existing test. |
| |
| * bindings/js/JSDOMConvertNumbers.h: |
| (WebCore::JSConverter<IDLDouble>::convert): |
| Add assertion to make sure our implementation never tries to return NaN |
| for an IDL attribute of type 'double'. This would be invalid as per Web |
| IDL spec and would crash if the NaN being returned was impure as JSValue |
| could not store it as a double. |
| |
| * html/track/VTTCue.idl: |
| Update constructor parameters to use 'double' type instead of 'unrestricted |
| double', as per: |
| - https://w3c.github.io/webvtt/#the-vttcue-interface |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTextFragment::willBeRemoved() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182946 |
| <rdar://problem/37690039> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderTextFragment.cpp: |
| (WebCore::RenderTextFragment::willBeDestroyed): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::cleanupOnRemoval): |
| * rendering/updating/RenderTreeBuilderFirstLetter.h: |
| |
| 2018-02-21 Ms2ger <Ms2ger@igalia.com> |
| |
| [GCrypt] Remove unsound assertion from CryptoKeyRSA::exportData(). |
| https://bugs.webkit.org/show_bug.cgi?id=183001 |
| |
| Reviewed by Philippe Normand. |
| |
| This function is called from structured cloning, in particular when storing |
| a key in IndexedDB. This would trip the assertion if the key in question is |
| non-exportable. |
| |
| The assertion was copied from the macOS implementation in r172389; it was |
| subsequently removed there in r172898 to handle this case. |
| |
| Test: crypto/subtle/rsa-indexeddb-non-exportable.html |
| |
| * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp: |
| (WebCore::CryptoKeyRSA::exportData const): remove assertion. |
| |
| 2018-02-21 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] Make system-ui obey the user-installed-font policy |
| https://bugs.webkit.org/show_bug.cgi?id=182860 |
| <rdar://problem/36158249> |
| |
| Reviewed by Antti Koivisto. |
| |
| We have a completely different codepath for system-ui which makes it follow the system's |
| font cascade list. This codepath (along with all the other relevant places which create |
| system fonts) needs to obey the AllowUserInstalledFonts enum. This patch is fairly |
| mechanical; we simply are hooking up the flag across SystemFontDatabase. |
| |
| There are a few places which creates system fonts which this patch doesn't touch. This is |
| not a problem because all the remaining places either: |
| 1) Simply pull out some attributes of the font (name, weight, size, etc.) and then throw |
| away the font object itself, or |
| 2) Use the font in an environment where script cannot access the characters rendered (such |
| as DragImages or the fullscreen placeholder view or the inside of the attachment element). |
| |
| Test: fast/text/user-installed-fonts/system-ui.html |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontDatabase::collectionForFamily): |
| (WebCore::FontDatabase::fontForPostScriptName): |
| (WebCore::fontWithFamily): |
| (WebCore::installedFontMandatoryAttributes): |
| (WebCore::createSpecificFontForInstalledFonts): |
| * platform/graphics/cocoa/FontCacheCoreText.h: |
| * platform/graphics/cocoa/FontDescriptionCocoa.cpp: |
| (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator== const): |
| (WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash const): |
| (WebCore::SystemFontDatabase::systemFontCascadeList): |
| (WebCore::SystemFontDatabase::removeCascadeList): |
| (WebCore::SystemFontDatabase::computeCascadeList): |
| (WebCore::systemFontParameters): |
| (WebCore::systemFontCascadeList): |
| (WebCore::FontCascadeDescription::effectiveFamilyCount const): |
| (WebCore::FontCascadeDescription::effectiveFamilyAt const): |
| * platform/graphics/ios/FontCacheIOS.mm: |
| (WebCore::platformFontWithFamilySpecialCase): |
| * platform/graphics/mac/FontCacheMac.mm: |
| (WebCore::platformFontWithFamilySpecialCase): |
| |
| 2018-02-21 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix build after r228867. |
| |
| * Modules/webvr/VRStageParameters.cpp: |
| |
| 2018-02-21 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Rewrite purgeInvalid*Tracks methods |
| https://bugs.webkit.org/show_bug.cgi?id=183004 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Removing items from a hashmap while iterating is bad. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidAudioTracks): |
| Safely remove items from the hashmap using removeIf(). |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidVideoTracks): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidTextTracks): Ditto. |
| |
| 2018-02-21 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix build after r228867. |
| |
| * Modules/webvr/VRStageParameters.cpp: |
| |
| 2018-02-21 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Crash in Debug build when purging invalid tracks |
| https://bugs.webkit.org/show_bug.cgi?id=182997 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidAudioTracks): Clear the hashmap when there is no valid track left. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidVideoTracks): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidTextTracks): Ditto. |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| (WebCore::TrackPrivateBaseGStreamer::getLanguageCode): Demote debugging, this appears too much at least with playbin2. |
| (WebCore::TrackPrivateBaseGStreamer::getTag): Ditto. |
| |
| 2018-02-21 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] We need to adopt GstGlDisplays after GStreamer 1.13.1 |
| https://bugs.webkit.org/show_bug.cgi?id=182996 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): |
| Adopt references when running with GStreamer 1.13.1 to avoid |
| memory leaks. |
| |
| 2018-02-20 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK] Layout test media/track/track-in-band-duplicate-tracks-when-source-changes.html failing since r228617 |
| https://bugs.webkit.org/show_bug.cgi?id=160131 |
| <rdar://problem/35873985> |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText): We |
| can't assume the pad has a sticky event here like implemented in |
| InbandTextTrackPrivateGStreamer because it might be emitted after |
| the track was created. So fallback to a dummy stream ID like in |
| the Audio and Video tracks. |
| |
| 2018-02-20 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR][OpenVR] Retrieve stage parameters |
| https://bugs.webkit.org/show_bug.cgi?id=182976 |
| |
| Reviewed by Žan Doberšek. |
| |
| Use OpenVR to retrieve stage parameters, i.e., play area size and |
| the transformation from sitting to standing position. It includes |
| the same fallback used by Firefox to provide sensible values in case |
| we cannot get the required information from the VR SDK (it's quite |
| common not to have defined a play area). |
| |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::stageParameters const): |
| * Modules/webvr/VRDisplay.h: |
| * Modules/webvr/VRStageParameters.cpp: |
| (WebCore::VRStageParameters::VRStageParameters): |
| (WebCore::VRStageParameters::sittingToStandingTransform const): |
| (WebCore::VRStageParameters::sizeX const): |
| (WebCore::VRStageParameters::sizeZ const): |
| * Modules/webvr/VRStageParameters.h: |
| (WebCore::VRStageParameters::create): |
| * platform/vr/VRPlatformDisplay.h: |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| (WebCore::VRPlatformDisplayOpenVR::updateStageParameters): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.h: |
| |
| 2018-02-21 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Create a Wayland GL display instead of EGL |
| https://bugs.webkit.org/show_bug.cgi?id=182968 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): |
| Add logging and instantiate a GstDisplayWayland display instead of |
| an EGL display when running under a Wayland compositor. |
| |
| 2018-02-21 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderFullScreen::willBeRemoved() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182947 |
| <rdar://problem/37690848> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::willBeDestroyed): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::fullScreenBuilder): |
| * rendering/updating/RenderTreeBuilderFullScreen.cpp: Added. |
| (WebCore::RenderTreeBuilder::FullScreen::FullScreen): |
| (WebCore::RenderTreeBuilder::FullScreen::cleanupOnRemoval): |
| * rendering/updating/RenderTreeBuilderFullScreen.h: Added. |
| * rendering/updating/RenderTreeBuilderMathML.cpp: |
| |
| 2018-02-20 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderListItem::willBeRemoved() mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182943 |
| <rdar://problem/37689029> |
| |
| Reviewed by Antti Koivisto. |
| |
| We don't need to destroy the marker in RenderListItem::willBeRemoved(), because it gets deleted |
| in RenderTreeBuilder::removeAndDestroy() together with RenderListItem (as long as the marker is |
| the RenderListItem's descendent). |
| |
| Covered by existing tests. |
| |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::~RenderListItem): |
| (WebCore::RenderListItem::willBeDestroyed): Deleted. |
| * rendering/RenderListItem.h: |
| |
| 2018-02-20 Nan Wang <n_wang@apple.com> |
| |
| AX: Keyboard focus not following VoiceOver cursor into web content or within web content. |
| https://bugs.webkit.org/show_bug.cgi?id=182752 |
| <rdar://problem/37518233> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Call the assistive technology specific method for becoming first responder. |
| |
| Test: accessibility/mac/accessibility-make-first-responder.html |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]): |
| * page/ChromeClient.h: |
| |
| 2018-02-20 Tim Horton <timothy_horton@apple.com> |
| |
| Introduce HAVE(IOSURFACE_ACCELERATOR) |
| https://bugs.webkit.org/show_bug.cgi?id=182955 |
| <rdar://problem/37699510> |
| |
| Reviewed by Sam Weinig. |
| |
| No new tests, no change in behavior. |
| |
| Introduce HAVE(IOSURFACE_ACCELERATOR) and guard all uses of |
| IOSurfaceAccelerator behind it. |
| |
| Rename USE(IOSURFACE) to HAVE(IOSURFACE) for accuracy. |
| |
| * page/cocoa/MemoryReleaseCocoa.mm: |
| * platform/graphics/ca/TileController.cpp: |
| * platform/graphics/cg/IOSurfacePool.cpp: |
| * platform/graphics/cg/IOSurfacePool.h: |
| * platform/graphics/cg/ImageBufferCG.cpp: |
| * platform/graphics/cocoa/IOSurface.h: |
| * platform/graphics/cocoa/IOSurface.mm: |
| * platform/graphics/cocoa/IOSurfacePoolCocoa.mm: |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| * platform/graphics/cv/VideoTextureCopierCV.h: |
| |
| 2018-02-20 Chris Dumez <cdumez@apple.com> |
| |
| Provisional load may get committed before receiving the decidePolicyForNavigationResponse response |
| https://bugs.webkit.org/show_bug.cgi?id=182720 |
| <rdar://problem/37515204> |
| |
| Reviewed by Alex Christensen. |
| |
| Wait for the policy response from the client after receiving a resource response, |
| before sending the NetworkResourceLoader::ContinueDidReceiveResponse IPC back to |
| the NetworkProcess. Otherwise, the network process may start sending us data and |
| we may end up committing the provisional load before receiving the policy decision |
| fron the client. |
| |
| Change is covered by new API test. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::responseReceived): |
| * loader/NetscapePlugInStreamLoader.cpp: |
| (WebCore::NetscapePlugInStreamLoader::didReceiveResponse): |
| * loader/NetscapePlugInStreamLoader.h: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::deliverResponseAndData): |
| (WebCore::ResourceLoader::loadDataURL): |
| (WebCore::ResourceLoader::didReceiveResponse): |
| (WebCore::ResourceLoader::didReceiveResponseAsync): |
| * loader/ResourceLoader.h: |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didReceiveResponse): |
| (WebCore::SubresourceLoader::didReceiveResponsePolicy): |
| (WebCore::SubresourceLoader::willCancel): |
| * loader/SubresourceLoader.h: |
| * loader/ios/PreviewLoader.mm: |
| (-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): |
| |
| 2018-02-20 Chris Dumez <cdumez@apple.com> |
| |
| Crash under JSC::JSCell::toNumber(JSC::ExecState*) |
| https://bugs.webkit.org/show_bug.cgi?id=182984 |
| <rdar://problem/37694346> |
| |
| Reviewed by Mark Lam. |
| |
| The issue was caused by DOMMatrix attributes potentially returning "impure" |
| NaN values. We would call JSC::jsNumber(double) to construct the JSValue |
| but this is only safe for pure NaN values. Make sure we purify the double |
| returned by the implementation for IDL attributes of type 'unrestricted double' |
| before calling JSC::jsNumber(double). |
| |
| No new tests, extended existing test. |
| |
| * bindings/js/JSDOMConvertNumbers.h: |
| (WebCore::JSConverter<IDLUnrestrictedDouble>::convert): |
| * testing/TypeConversions.h: |
| (WebCore::TypeConversions::testImpureNaNUnrestrictedDouble const): |
| (WebCore::TypeConversions::testImpureNaN2UnrestrictedDouble const): |
| (WebCore::TypeConversions::testQuietNaNUnrestrictedDouble const): |
| * testing/TypeConversions.idl: |
| |
| 2018-02-20 Tim Horton <timothy_horton@apple.com> |
| |
| Make more use of USE(OPENGL_ES) where it makes sense |
| https://bugs.webkit.org/show_bug.cgi?id=182957 |
| <rdar://problem/37699443> |
| |
| Reviewed by Dan Bernstein. |
| |
| No new tests, no behavior change. |
| |
| Make use of USE(OPENGL_ES) for CoreVideo functions that differ based |
| on GL availability. Also adjust GraphicsContext3D in the same way. |
| |
| * platform/cocoa/CoreVideoSoftLink.cpp: |
| * platform/cocoa/CoreVideoSoftLink.h: |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/cv/TextureCacheCV.mm: |
| (WebCore::TextureCacheCV::create): |
| (WebCore::TextureCacheCV::textureFromImage): |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| (WebCore::enumToStringMap): |
| (WebCore::VideoTextureCopierCV::initializeContextObjects): |
| (WebCore::VideoTextureCopierCV::initializeUVContextObjects): |
| (WebCore::VideoTextureCopierCV::copyImageToPlatformTexture): |
| (WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture): |
| |
| 2018-02-20 Nan Wang <n_wang@apple.com> |
| |
| AX: AOM: Dispatch accessibleclick event |
| https://bugs.webkit.org/show_bug.cgi?id=180898 |
| <rdar://problem/36086710> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Accessibility events. |
| Spec: https://wicg.github.io/aom/spec/phase2.html |
| |
| This patch allows developers to register event handlers on Elements |
| for custom accessibility events. |
| |
| Accessibility events go through a capturing and bubbling phase just |
| like DOM events, but in the accessibility tree. |
| |
| Implemented "accessibleclick" event. |
| |
| Test: accessibility/mac/AOM-events.html |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::press): |
| (WebCore::AccessibilityObject::dispatchAccessibilityEvent): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityPerformAction:]): |
| * dom/Element.idl: |
| * dom/EventDispatcher.cpp: |
| (WebCore::dispatchEventWithType): |
| (WebCore::EventDispatcher::dispatchEvent): |
| * dom/EventDispatcher.h: |
| * dom/EventNames.h: |
| * dom/EventPath.cpp: |
| (WebCore::EventPath::EventPath): |
| * dom/EventPath.h: |
| |
| 2018-02-20 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 11.3 Beta] Can't copy a URL from Safari and paste it into the Gmail app |
| https://bugs.webkit.org/show_bug.cgi?id=182952 |
| <rdar://problem/37636190> |
| |
| Reviewed by Tim Horton. |
| |
| After r220865 refactored the iOS copy codepaths to use NSItemProviders, we stopped writing the URL as plain text |
| to the pasteboard. However, this means clients that only check for "text/plain" (or one of its aliases) on the |
| pasteboard won't read any data on paste. |
| |
| To fix this, we restore the pre-iOS 11.3 behavior of writing both the URL and plain text to the pasteboard. |
| Since we're using item providers, we also ensure that the NSURL is at a higher fidelity than the string to make |
| it clear that the data should be consumed as a URL. |
| |
| This patch also rebaselines an existing drag and drop test to cover this change, and adds a new API test, |
| ActionSheetTests.CopyLinkWritesURLAndPlainText, which simulates copying a link using the share sheet and pasting |
| into a DataTransfer-dumping test harness. |
| |
| * platform/ios/PlatformPasteboardIOS.mm: |
| (WebCore::PlatformPasteboard::write): |
| |
| 2018-02-20 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] Returning from Auto-PiP causes Safari to be unresponsive |
| https://bugs.webkit.org/show_bug.cgi?id=182977 |
| <rdar://problem/37685981> |
| |
| Reviewed by Jer Noble. |
| |
| Remove the error handling added in r228115, it breaks auto-pip. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::applicationDidBecomeActive): |
| (VideoFullscreenInterfaceAVKit::enterFullscreenStandard): |
| (VideoFullscreenInterfaceAVKit::exitFullscreen): |
| (VideoFullscreenInterfaceAVKit::cleanupFullscreen): |
| (VideoFullscreenInterfaceAVKit::didStartPictureInPicture): |
| (VideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler): |
| (VideoFullscreenInterfaceAVKit::exitFullscreenHandler): |
| (VideoFullscreenInterfaceAVKit::enterFullscreenHandler): |
| |
| 2018-02-20 Jer Noble <jer.noble@apple.com> |
| |
| [EME] Adopt new AVContentKeySession success delegate callback |
| https://bugs.webkit.org/show_bug.cgi?id=182974 |
| <rdar://problem/36079035> |
| |
| Reviewed by Eric Carlson. |
| |
| Store the updateLicenseCallback if the new protocol method is present and supported. |
| |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (-[WebCoreFPSContentKeySessionDelegate contentKeySession:contentKeyRequestDidSucceed:]): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didFailToProvideRequest): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestDidSucceed): |
| |
| 2018-02-19 Dean Jackson <dino@apple.com> |
| |
| Handle all writing-modes in downcast |
| https://bugs.webkit.org/show_bug.cgi?id=182949 |
| <rdar://problem/37710687> |
| |
| Reviewed by Myles Maxfield. |
| |
| It appears we forgot to handle the deprecated "lr" |
| writing-mode value. |
| |
| Test: fast/writing-mode/svg-writing-modes.html |
| |
| * css/CSSPrimitiveValueMappings.h: |
| (WebCore::CSSPrimitiveValue::operator WritingMode const): |
| |
| 2018-02-20 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Drop target GraphicsContext usage in Cairo operations |
| https://bugs.webkit.org/show_bug.cgi?id=182964 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The GraphicsContext parameters in various Cairo operations are not used |
| anymore, so they can be removed. Callsites are updated to reflect this. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawShadowLayerBuffer): |
| (WebCore::Cairo::fillShadowBuffer): |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::drawGlyphsShadow): |
| (WebCore::Cairo::fillRect): |
| (WebCore::Cairo::fillRoundedRect): |
| (WebCore::Cairo::fillRectWithRoundedHole): |
| (WebCore::Cairo::fillPath): |
| (WebCore::Cairo::strokeRect): |
| (WebCore::Cairo::strokePath): |
| (WebCore::Cairo::drawGlyphs): |
| (WebCore::Cairo::drawNativeImage): |
| (WebCore::Cairo::drawSurface): |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/FontCairo.cpp: |
| (WebCore::FontCascade::drawGlyphs): |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::drawNativeImage): |
| (WebCore::GraphicsContext::fillPath): |
| (WebCore::GraphicsContext::strokePath): |
| (WebCore::GraphicsContext::fillRect): |
| (WebCore::GraphicsContext::strokeRect): |
| (WebCore::GraphicsContext::platformFillRoundedRect): |
| (WebCore::GraphicsContext::fillRectWithRoundedHole): |
| * platform/graphics/cairo/GraphicsContextImplCairo.cpp: |
| (WebCore::GraphicsContextImplCairo::fillRect): |
| (WebCore::GraphicsContextImplCairo::fillRoundedRect): |
| (WebCore::GraphicsContextImplCairo::fillRectWithRoundedHole): |
| (WebCore::GraphicsContextImplCairo::fillPath): |
| (WebCore::GraphicsContextImplCairo::strokeRect): |
| (WebCore::GraphicsContextImplCairo::strokePath): |
| (WebCore::GraphicsContextImplCairo::drawGlyphs): |
| (WebCore::GraphicsContextImplCairo::drawNativeImage): |
| * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: |
| (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame): |
| |
| 2018-02-20 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR][OpenVR] Retrieve eye parameters and field of view |
| https://bugs.webkit.org/show_bug.cgi?id=182962 |
| |
| Reviewed by Žan Doberšek. |
| |
| Get the required data from OpenVR to fill in the VREyeParameters and |
| the VRFieldOfView objects. |
| |
| * Modules/webvr/VRDisplay.cpp: Create some attributes in the |
| body of the constructor instead in the member initialization list to |
| avoid calling getDisplayInfo() multiple times. |
| (WebCore::VRDisplay::VRDisplay): |
| (WebCore::VRDisplay::capabilities const): |
| (WebCore::VRDisplay::getEyeParameters const): |
| * Modules/webvr/VRDisplay.h: |
| * Modules/webvr/VREyeParameters.cpp: |
| (WebCore::VREyeParameters::VREyeParameters): Added new attributes to |
| the constructor. |
| (WebCore::VREyeParameters::offset const): Return a Ref instead of |
| a raw pointer. |
| (WebCore::VREyeParameters::renderWidth const): |
| (WebCore::VREyeParameters::renderHeight const): |
| * Modules/webvr/VREyeParameters.h: |
| (WebCore::VREyeParameters::create): |
| * Modules/webvr/VRFieldOfView.cpp: Removed. All the impletementation |
| fits perfectly in the header file. |
| * Modules/webvr/VRFieldOfView.h: |
| (WebCore::VRFieldOfView::create): |
| (WebCore::VRFieldOfView::upDegrees const): |
| (WebCore::VRFieldOfView::rightDegrees const): |
| (WebCore::VRFieldOfView::downDegrees const): |
| (WebCore::VRFieldOfView::leftDegrees const): |
| (WebCore::VRFieldOfView::VRFieldOfView): |
| * Sources.txt: |
| * platform/vr/VRPlatformDisplay.h: Added some more data to the |
| VRPlatformDisplayInfo struct. |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| (WebCore::VRPlatformDisplayOpenVR::computeFieldOfView): Computes the |
| up/down/left/right FOV angles in degrees from the raw project |
| values returned by OpenVR. |
| (WebCore::VRPlatformDisplayOpenVR::updateEyeParameters): Fills in |
| the eye parameter info. |
| (WebCore::VRPlatformDisplayOpenVR::~VRPlatformDisplayOpenVR): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.h: |
| |
| 2018-02-20 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer][MiniBrowser] Honor GStreamer command line parameters in MiniBrowser |
| https://bugs.webkit.org/show_bug.cgi?id=173655 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The FIXME in GStreamerUtilities.cpp asks to pass the command line |
| parameters to the GStreamer initialization function. |
| |
| Based on initial patch by: Vanessa Chipirrás Navalón <vchipirras@igalia.com> |
| |
| * Modules/webaudio/AudioContext.cpp: |
| (WebCore::AudioContext::constructCommon): Removes the call to the method |
| that GStreamer initializes. It is no longer necessary. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::initializeGStreamerAndRegisterWebKitElements): Ditto |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| (WebCore::initializeGStreamerAndRegisterWebKitMSEElement): Ditto |
| * platform/graphics/gstreamer/GStreamerUtilities.cpp: |
| (WebCore::initializeGStreamer): Receive the GStreamer options and initialize GStreamer. |
| * platform/graphics/gstreamer/GStreamerUtilities.h: Add vector which contains |
| GStreamer options as the input parameter of the initializeGStreamer() method. |
| |
| 2018-02-20 Miguel Gomez <magomez@igalia.com> |
| |
| [GTK] whatsapp web blurry in some parts, sharp on others |
| https://bugs.webkit.org/show_bug.cgi?id=182673 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| CoordinatedGraphicsLayer::createBackingStore() uses the scale factor returned by effectiveContentsScale(), |
| which is always 1 if selfOrAncestorHaveNonAffineTransforms() returns true. But this fuction always returns |
| true if the layer has an AnimatedPropertyTransform animation, which means that layers with those animations |
| won't use the appropriate scale factor, causing blurry renderings. |
| |
| This patch removes the animations check, so animated layers properly use the required scale factor. |
| |
| No new tests, no behavior change. |
| |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms): |
| |
| 2018-02-20 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Leverage ShadowBlur without using scratch buffer, target GraphicsContext |
| https://bugs.webkit.org/show_bug.cgi?id=182958 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| To allow ShadowBlur usage in different threads, avoid the ShadowBlur |
| class using the scratch buffer internally. The current implementation of |
| that scratch buffer is not thread-safe and its usage in such conditions |
| can lead to crashes. |
| |
| Instead, the new methods use a temporary ImageBuffer object for drawing. |
| This does negate the efficiency of possibly reusing the scratch buffer, |
| but at this point that is not yet the priority. This only affects ports |
| using Cairo for drawing. |
| |
| The added methods don't require a target GraphicsContext object to be |
| passed in, instead they accept buffer draw callbacks that are invoked |
| with the temporary ImageBuffer object containing the rasterized shadow, |
| as well as position and size parameters. The CTM and clip bounds values |
| also have to be passed in manually. In CairoOperations.cpp, the provided |
| callbacks invoke commands that are equivalent in effect to those that |
| would otherwise be invoked on the target GraphicsContext object in the |
| ShadowBlur class. |
| |
| For now, this approach has to avoid the tiling-based drawing of the |
| rectangular shadows in drawRectShadow() and inset shadows in |
| drawInsetShadow(), and instead stick to the non-tiling fallback. While |
| only affecting Cairo-using ports, with some refactoring it should be |
| possible to again leverage the tiling-based approach as well. |
| |
| The beginShadowLayer() and endShadowLayer() functions, which are only |
| used in CairoOperations.cpp, are replaced with the drawShadowLayer() |
| method. This one accepts an additional callback that allows the caller |
| to explicitly draw the shadow shape using the provided shadowing |
| GraphicsContext object. As with the other two new methods, a temporary |
| ImageBuffer object is used, and the buffer draw callback is invoked to |
| allow caller to properly handle the shadowing output. |
| |
| In CairoOperations.cpp, the new ShadowBlur methods are exercised, with |
| direct Cairo operation invocation replacing the GraphicsContext calls |
| otherwise done through ShadowBlur. ShadowState object now also has to |
| track the global alpha and the global composite operator values so that |
| it can properly rasterize the resulting shadow into the final image. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/ShadowBlur.cpp: |
| (WebCore::ShadowBlur::adjustBlurRadius): |
| (WebCore::ShadowBlur::calculateLayerBoundingRect): |
| (WebCore::ShadowBlur::drawRectShadow): |
| (WebCore::ShadowBlur::drawInsetShadow): |
| (WebCore::ShadowBlur::drawShadowLayer): |
| (WebCore::ShadowBlur::beginShadowLayer): Deleted. |
| (WebCore::ShadowBlur::endShadowLayer): Deleted. |
| * platform/graphics/ShadowBlur.h: |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawShadowLayerBuffer): |
| (WebCore::Cairo::fillShadowBuffer): |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::drawGlyphsShadow): |
| (WebCore::Cairo::ShadowState::ShadowState): |
| (WebCore::Cairo::fillRect): |
| (WebCore::Cairo::fillRoundedRect): |
| (WebCore::Cairo::fillRectWithRoundedHole): |
| (WebCore::Cairo::drawSurface): |
| * platform/graphics/cairo/CairoOperations.h: |
| Default-initialize FillSource::fillRule to RULE_NONZERO. |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| Drop the ShadowBlur.h include, it's moved to CairoOperations.cpp. |
| * rendering/RenderThemeGtk.cpp: |
| Explicitly include the FloatRoundedRect.h header now that it's not |
| included through the ShadowBlur.h header via PlatformContextCairo.h. |
| |
| 2018-02-20 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR] Use RuntimeEnabledFeatures to enable/disable WebVR |
| https://bugs.webkit.org/show_bug.cgi?id=182961 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The shared feature was properly added to RuntimeEnabledFeatures some |
| time ago but the code was instead using a private method in |
| NavigatorWebVR to temporarily disable it. WebVR is enabled in |
| WebPreferences.yaml for GTK+ & WPE as default experimental feature. |
| |
| * Modules/webvr/NavigatorWebVR.cpp: |
| (WebCore::NavigatorWebVR::getVRDisplays): |
| (WebCore::NavigatorWebVR::vrEnabled): Deleted. |
| |
| 2018-02-19 Antti Koivisto <antti@apple.com> |
| |
| Use selector filter when invalidating descendants |
| https://bugs.webkit.org/show_bug.cgi?id=182839 |
| <rdar://problem/37581072> |
| |
| Reviewed by Zalan Bujtas. |
| |
| We can make descendant invalidation faster by enabling filtering. |
| |
| * css/SelectorFilter.cpp: |
| (WebCore::SelectorFilter::initializeParentStack): |
| |
| Traverse and reverse the ancestor chain, and push it. |
| |
| (WebCore::SelectorFilter::pushParent): |
| (WebCore::SelectorFilter::pushParentInitializingIfNeeded): |
| |
| Add a version of pushParent that can initialize the stack. |
| |
| (WebCore::SelectorFilter::popParent): |
| (WebCore::SelectorFilter::popParentsUntil): |
| |
| Pop until a given parent element. |
| |
| (WebCore::SelectorFilter::pushParentStackFrame): Deleted. |
| (WebCore::SelectorFilter::popParentStackFrame): Deleted. |
| |
| These were the same as push/popParent. |
| |
| * css/SelectorFilter.h: |
| (WebCore::SelectorFilter::popParent): Deleted. |
| * style/StyleInvalidator.cpp: |
| (WebCore::Style::Invalidator::invalidateStyleForDescendants): |
| |
| Use pushParentInitializingIfNeeded. |
| |
| (WebCore::Style::Invalidator::invalidateStyleWithMatchElement): |
| |
| Use selector filter when doing descendant tree invalidation. |
| Make sure to pop it until the parent when reusing. |
| |
| 2018-02-19 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| null m_lastNodeInserted dereference at ReplaceSelectionCommand::InsertedNodes::lastLeafInserted |
| https://bugs.webkit.org/show_bug.cgi?id=161947 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| InsertedNodes happened to be empty if the inserted nodes were |
| removed. Add more checks if InsertedNodes is empty. |
| |
| No new tests (Covered by existing tests). |
| |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::ReplaceSelectionCommand::doApply): Return early if InsertedNodes becomes empty. |
| * editing/ReplaceSelectionCommand.h: |
| (WebCore::ReplaceSelectionCommand::InsertedNodes::isEmpty): New method. |
| (WebCore::ReplaceSelectionCommand::InsertedNodes::lastLeafInserted const): |
| Assert m_lastNodeInserted is not null. |
| (WebCore::ReplaceSelectionCommand::InsertedNodes::pastLastLeaf const): Ditto. |
| |
| 2018-02-19 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Add SVGPropertyTraits::fromString() to all the SVG animated types |
| https://bugs.webkit.org/show_bug.cgi?id=182901 |
| |
| Reviewed by Dean Jackson. |
| |
| This is a work toward https://bugs.webkit.org/show_bug.cgi?id=168586. The |
| goal is is to templatize the SVGAnimatedType class and to use SVGPropertyTraits |
| methods inside the template functions. |
| |
| * WebCore.xcodeproj/project.pbxproj: Move the enum and the SVGPropertyTraits |
| from SVGMarkerElement.h to SVGMarkerTypes.h. |
| * svg/SVGAngle.h: |
| (WebCore::SVGAngle::SVGAngle): Delete unused constructor and create() method. |
| * svg/SVGAngleValue.h: |
| * svg/SVGAnimateMotionElement.cpp: |
| (WebCore::parsePoint): Deleted. Move this function to SVGParserUtilities.cpp |
| * svg/SVGAnimatedAngle.cpp: |
| (WebCore::SVGAnimatedAngleAnimator::constructFromString): Use SVGPropertyTraits::fromString(). |
| * svg/SVGAnimatedBoolean.cpp: |
| (WebCore::SVGAnimatedBooleanAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedColor.cpp: |
| (WebCore::SVGAnimatedColorAnimator::constructFromString): Ditto. |
| (WebCore::SVGAnimatedColorAnimator::addAnimatedTypes): Use const. |
| (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): Ditto. |
| * svg/SVGAnimatedEnumeration.cpp: |
| (WebCore::SVGAnimatedEnumerationAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedInteger.cpp: |
| (WebCore::SVGAnimatedIntegerAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedIntegerOptionalInteger.cpp: |
| (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedLength.cpp: |
| * svg/SVGAnimatedLengthList.cpp: |
| (WebCore::SVGAnimatedLengthListAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedNumber.cpp: |
| (WebCore::SVGAnimatedNumberAnimator::constructFromString): Ditto |
| (WebCore::parseNumberFromString): |
| * svg/SVGAnimatedNumberList.cpp: |
| (WebCore::SVGAnimatedNumberListAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedNumberOptionalNumber.cpp: |
| (WebCore::SVGAnimatedNumberOptionalNumberAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedPath.cpp: |
| (WebCore::SVGAnimatedPathAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedPointList.cpp: |
| (WebCore::SVGAnimatedPointListAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedPreserveAspectRatio.cpp: |
| (WebCore::SVGAnimatedPreserveAspectRatioAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedRect.cpp: |
| (WebCore::SVGAnimatedRectAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedString.cpp: |
| (WebCore::SVGAnimatedStringAnimator::constructFromString): Ditto. |
| * svg/SVGAnimatedTransformList.cpp: |
| (WebCore::SVGAnimatedTransformListAnimator::constructFromString): Ditto. |
| * svg/SVGLength.h: |
| (WebCore::SVGLength::SVGLength): Delete unused constructor and create() method. |
| * svg/SVGLengthListValues.h: |
| (WebCore::SVGPropertyTraits<SVGLengthListValues>::fromString): New SVGPropertyTraits method. |
| (WebCore::SVGPropertyTraits<SVGLengthListValues>::parse): Ditto. |
| * svg/SVGMarkerElement.h: |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::highestEnumValue): Deleted. |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::toString): Deleted. |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::fromString): Deleted. |
| (WebCore::SVGIDLEnumLimits<SVGMarkerOrientType>::highestExposedEnumValue): Deleted. |
| (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::highestEnumValue): Deleted. |
| (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString): Deleted. |
| * svg/SVGMarkerTypes.h: Added. |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::highestEnumValue): |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::toString): |
| (WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::fromString): |
| (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::highestEnumValue): |
| (WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString): |
| (WebCore::SVGIDLEnumLimits<SVGMarkerOrientType>::highestExposedEnumValue): |
| * svg/SVGMatrix.h: Delete unused constructor and create method. |
| * svg/SVGNumber.h: |
| (WebCore::SVGNumber::SVGNumber): Ditto. |
| * svg/SVGNumberListValues.h: |
| (WebCore::SVGPropertyTraits<SVGNumberListValues>::fromString): New SVGPropertyTraits method. |
| * svg/SVGParserUtilities.cpp: |
| (WebCore::parsePoint): This is moved from SVGAnimateMotionElement.cpp |
| * svg/SVGParserUtilities.h: |
| * svg/SVGPathByteStream.h: |
| (WebCore::SVGPathByteStream::SVGPathByteStream): |
| (WebCore::SVGPathByteStream::operator=): Add copy and move assignment operators. |
| (WebCore::SVGPathByteStream::copy const): Use the copy assignment. |
| (WebCore::SVGPathByteStream::isEmpty const): Use Data.isEmpty(). |
| (WebCore::SVGPropertyTraits<SVGPathByteStream>::initialValue): New SVGPropertyTraits method. |
| (WebCore::SVGPropertyTraits<SVGPathByteStream>::fromString): Ditto. |
| * svg/SVGPathUtilities.cpp: |
| (WebCore::addToSVGPathByteStream): Answer Simon's questions which were added in r190844. |
| * svg/SVGPoint.h: |
| (WebCore::SVGPoint::SVGPoint): Delete unused constructor and create method. |
| * svg/SVGPointListValues.h: |
| (WebCore::SVGPropertyTraits<SVGPointListValues>::fromString): New SVGPropertyTraits method. |
| * svg/SVGPolyElement.cpp: |
| (WebCore::SVGPolyElement::parseAttribute): Use the move assignment operator. |
| * svg/SVGPreserveAspectRatio.h: |
| (WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio): Delete unused constructor and create method. |
| * svg/SVGPreserveAspectRatioValue.cpp: |
| (WebCore::SVGPreserveAspectRatioValue::SVGPreserveAspectRatioValue): Add new constructor. |
| * svg/SVGPreserveAspectRatioValue.h: |
| (WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::fromString): New SVGPropertyTraits method. |
| (WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::toString): Ditto. |
| * svg/SVGRect.h: |
| (WebCore::SVGRect::SVGRect): Delete unused constructor and create method. |
| * svg/SVGRectTraits.h: Removed. |
| * svg/SVGTransform.h: |
| (WebCore::SVGTransform::SVGTransform): Delete unused constructor and create method. |
| * svg/SVGTransformListValues.h: |
| (WebCore::SVGPropertyTraits<SVGTransformListValues>::fromString): New SVGPropertyTraits method. |
| * svg/properties/SVGPropertyTearOff.h: Delete unused create method. |
| * svg/properties/SVGPropertyTraits.h: New SVGPropertyTraits methods. |
| (WebCore::SVGPropertyTraits<bool>::fromString): |
| (WebCore::SVGPropertyTraits<Color>::initialValue): |
| (WebCore::SVGPropertyTraits<Color>::fromString): |
| (WebCore::SVGPropertyTraits<Color>::parse): |
| (WebCore::SVGPropertyTraits<Color>::toString): |
| (WebCore::SVGPropertyTraits<int>::fromString): |
| (WebCore::SVGPropertyTraits<float>::fromString): |
| (WebCore::SVGPropertyTraits<float>::parse): |
| (WebCore::SVGPropertyTraits<FloatPoint>::initialValue): |
| (WebCore::SVGPropertyTraits<FloatPoint>::fromString): |
| (WebCore::SVGPropertyTraits<FloatPoint>::parse): |
| (WebCore::SVGPropertyTraits<FloatPoint>::toString): |
| (WebCore::SVGPropertyTraits<FloatRect>::initialValue): |
| (WebCore::SVGPropertyTraits<FloatRect>::fromString): |
| (WebCore::SVGPropertyTraits<FloatRect>::parse): |
| (WebCore::SVGPropertyTraits<FloatRect>::toString): |
| (WebCore::SVGPropertyTraits<String>::fromString): |
| (WebCore::SVGPropertyTraits<String>::parse): |
| (WebCore::SVGPropertyTraits<String>::toString): |
| |
| 2018-02-19 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Implement a compact set of media controls |
| https://bugs.webkit.org/show_bug.cgi?id=182937 |
| <rdar://problem/37682257> |
| |
| Reviewed by Eric Carlson. |
| |
| We add a new type of media controls used when we need stripped down and compact controls. The new |
| CompactMediaControls only show a play/pause button and an invalid placard and disregard all media |
| events that are not relevant to the display of these controls. |
| |
| To distinguish cases where we need to show compact media controls, we expose a new property on |
| MediaControlsHost called "compactMode". |
| |
| Tests: media/modern-media-controls/compact-media-controls/compact-media-controls-constructor.html |
| media/modern-media-controls/compact-media-controls/compact-media-controls-layout.html |
| |
| * Modules/mediacontrols/MediaControlsHost.cpp: |
| (WebCore::MediaControlsHost::base64StringForIconNameAndType const): |
| (WebCore::MediaControlsHost::compactMode const): |
| * Modules/mediacontrols/MediaControlsHost.h: |
| (WebCore::MediaControlsHost::setSimulateCompactMode): |
| * Modules/mediacontrols/MediaControlsHost.idl: |
| * Modules/modern-media-controls/controls/compact-media-controls.js: Added. |
| (CompactMediaControls.prototype.get scaleFactor): |
| (CompactMediaControls.prototype.set scaleFactor): |
| (CompactMediaControls.prototype.get shouldCenterControlsVertically): |
| (CompactMediaControls.prototype.set shouldCenterControlsVertically): |
| (CompactMediaControls.prototype.get placard): |
| (CompactMediaControls.prototype.set placard): |
| (CompactMediaControls.prototype.layout): |
| (CompactMediaControls.prototype.commitProperty): |
| * Modules/modern-media-controls/controls/icon-service.js: |
| (const.iconService.new.IconService.prototype._fileNameAndPlatformForIconAndLayoutTraits): |
| (const.iconService.new.IconService): |
| * Modules/modern-media-controls/controls/inline-media-controls.js: |
| * Modules/modern-media-controls/controls/layout-item.js: |
| * Modules/modern-media-controls/js-files: |
| * Modules/modern-media-controls/main.js: |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype.get layoutTraits): |
| (MediaController.prototype._supportingObjectClasses): Compute the set of MediaControllerSupport classes based |
| on the layout traits such that in compact mode we only return PlacardSupport and PlaybackSupport. |
| (MediaController.prototype._updateControlsIfNeeded): |
| (MediaController.prototype._controlsClassForLayoutTraits): |
| (MediaController.prototype._shouldControlsBeAvailable): |
| * Modules/modern-media-controls/media/placard-support.js: |
| (PlacardSupport.prototype.get mediaEvents): Only track the "error" event in compact mode since this is the only |
| relevant placard. |
| * Modules/modern-media-controls/media/playback-support.js: |
| (PlaybackSupport.prototype.syncControl): Only show or hide the play/pause button based on the playback state |
| when in compact mode. |
| (PlaybackSupport): |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-02-19 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Make KeyframeEffect target nullable and read-write |
| https://bugs.webkit.org/show_bug.cgi?id=182741 |
| |
| Reviewed by Dean Jackson. |
| |
| We used to completely disregard null targets, for instance not parsing keyframes, but targets |
| can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL |
| for KeyframeEffect to mark the target property as read-write and update the implementation |
| to correctly handle null targets. |
| |
| This revealed a few issues in our implementation by allowing more WPT tests to run. So we also |
| ensure that: |
| |
| - we don't crash when parsing font-related properties by calling update() on the generated |
| RenderStyle's FontCascade when parsing keyframes. |
| |
| - CSS properties are provided as camel-case and not as hyphenated form |
| |
| - values provided in keyframes dictionaries are only read for valid properties |
| |
| - styles for effect targets are invalidated as soon as the timing model for that animation |
| is changed |
| |
| * animation/KeyframeEffect.idl: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::invalidateElement): Add a new utility method to invalidate a given element since |
| we may want to invalidate not only the current target (m_target) but also a previous target. |
| (WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName |
| so that it can call that function. We also check that we reject CSS properties that are not provided in |
| camel-case form (eg. "font-size" vs. "fontSize"). |
| (WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name |
| maps to a valid CSS property. |
| (WebCore::KeyframeEffectReadOnly::processKeyframes): Allow keyframes to be processed even if the effect's |
| target is null. |
| (WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and |
| invalidate the style of the new target and the old targets, if any. We also update the blending keyframes |
| since this task may not have been completed in a previous call to processKeyframes() due to the target being |
| null at that time. |
| (WebCore::KeyframeEffectReadOnly::invalidate): Use the invalidateElement() utility. |
| * animation/KeyframeEffectReadOnly.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget() |
| to inform the animation of the previous effect target and the new one upon a target change. This allows us to |
| forward this information onto the timeline so that we correctly add or remove the targets from the list of |
| animated elements. |
| * animation/WebAnimation.h: |
| |
| 2018-02-19 Chris Dumez <cdumez@apple.com> |
| |
| Crash under MIMETypeRegistry::isSupportedJavaScriptMIMEType() |
| https://bugs.webkit.org/show_bug.cgi?id=182927 |
| <rdar://problem/37675748> |
| |
| Reviewed by Antti Koivisto. |
| |
| Make it safe to call MIMETypeRegistry::isSupportedJavaScriptMIMEType() from the non-main thread. |
| It is currently being called from a background thread in the following places: |
| - ServiceWorkerJob::didReceiveResponse() |
| - WorkerGlobalScope::importScripts() |
| |
| These call sites on non-main threads were added recently with the support for service workers. |
| |
| No new tests, already covered by existing tests that flakily experience service worker |
| process crashes. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType): |
| |
| 2018-02-19 Dean Jackson <dino@apple.com> |
| |
| SIGFPE @ int WebCore::SVGToOTFFontConverter::scaleUnitsPerEm<int> const + 45 |
| https://bugs.webkit.org/show_bug.cgi?id=182944 |
| <rdar://problem/35369984> |
| |
| Reviewed by Myles Maxfield. |
| |
| Avoid a divide-by-zero. |
| |
| Test: svg/text/font-bad-unitsperem.html |
| |
| * svg/SVGFontFaceElement.cpp: |
| (WebCore::SVGFontFaceElement::unitsPerEm const): |
| |
| 2018-02-19 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r219342): Touch event coordinates and elementFromPoint coordinates differ |
| https://bugs.webkit.org/show_bug.cgi?id=182910 |
| <rdar://problem/37533950> |
| |
| Reviewed by Simon Fraser. |
| |
| We reverted other changes to the definition of client coordinates |
| in r219829 due to compatibility concerns. However, we failed to revert |
| r219342 on trunk, leaving elementFromPoint() using coordinates relative |
| to the layout viewport. |
| |
| Add a currently off-by-default setting to switch on layout-viewport-relative |
| client coordinates and guard the elementFromPoint changes behind it. |
| A future patch should roll r219829 back in also behind this setting, so |
| that everything remains consistent regardless of which coordinate space we choose. |
| |
| * dom/TreeScope.cpp: |
| (WebCore::absolutePointIfNotClipped): |
| * page/Settings.yaml: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::hitTest): |
| |
| 2018-02-19 Eric Carlson <eric.carlson@apple.com> |
| |
| [Extra zoom mode] Don't allow PiP media playback |
| https://bugs.webkit.org/show_bug.cgi?id=182930 |
| <rdar://problem/37676259> |
| |
| Reviewed by Andy Estes. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): Don't call setPIPModeEnabled: |
| if it isn't implemented. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenMode): Ditto. |
| |
| 2018-02-19 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Decouple parsing JS keyframes and computing blending keyframes |
| https://bugs.webkit.org/show_bug.cgi?id=182939 |
| <rdar://problem/37678364> |
| |
| Reviewed by Dean Jackson. |
| |
| Move all the code used to create the KeyframeList into a dedicated updateBlendingKeyframes() method. |
| |
| No new tests since this code change has no user-visible impact. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::processKeyframes): |
| (WebCore::KeyframeEffectReadOnly::updateBlendingKeyframes): |
| * animation/KeyframeEffectReadOnly.h: |
| |
| 2018-02-19 Jer Noble <jer.noble@apple.com> |
| |
| [EME] Add mechanism for MediaKeySession to react to HDCP changes |
| https://bugs.webkit.org/show_bug.cgi?id=182935 |
| |
| Reviewed by Eric Carlson. |
| |
| Add a client callback interface to CDMInterface to allow subclasses to communicate up to |
| MediaKeySEssion. Add a virtual method to CDMInterface to allow it to be notified of HDCP |
| status changes. Override this method in CDMInstanceFairPlayStreamingAVFObjC. Hook up the |
| outputObscuredDueToInsufficientExternalProtectionChanged() methods in both |
| MediaPlayerPrivateAVFoundationObjC and MediaPlayerPrivateMediaSourceAVFObjC to this new |
| CDMInstance method. Add an Internals method to simulate an HDCP error for testing purposes. |
| |
| * Modules/encryptedmedia/MediaKeySession.cpp: |
| (WebCore::MediaKeySession::MediaKeySession): |
| (WebCore::MediaKeySession::~MediaKeySession): |
| (WebCore::MediaKeySession::updateKeyStatuses): |
| * Modules/encryptedmedia/MediaKeySession.h: |
| * platform/encryptedmedia/CDMInstance.h: |
| (WebCore::CDMInstance::setHDCPStatus): |
| (WebCore::CDMInstance::setClient): |
| (WebCore::CDMInstance::clearClient): |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::beginSimulatedHDCPError): |
| (WebCore::MediaPlayer::endSimulatedHDCPError): |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::beginSimulatedHDCPError): |
| (WebCore::MediaPlayerPrivateInterface::endSimulatedHDCPError): |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setClient): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::clearClient): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionIdentifierChanged): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::outputObscuredDueToInsufficientExternalProtectionChanged): |
| (WebCore::playerKVOProperties): |
| (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged): |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]): |
| (WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged): |
| * testing/Internals.cpp: |
| (WebCore::Internals::beginSimulatedHDCPError): |
| (WebCore::Internals::endSimulatedHDCPError): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-02-19 Chris Dumez <cdumez@apple.com> |
| |
| CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::TimerBase::~TimerBase |
| https://bugs.webkit.org/show_bug.cgi?id=182931 |
| <rdar://problem/37602962> |
| |
| Reviewed by Antti Koivisto. |
| |
| Make sure PlatformMediaResource is ThreadSafeRefCounted since it is being |
| used from several threads in WebCoreNSURLSession. Also make sure it is |
| always destroyed on the main thread since it ends up destroying a |
| CachedRawResource object. |
| |
| No new tests, no known reproduction case. |
| |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (-[WebCoreNSURLSessionDataTask dealloc]): |
| |
| 2018-02-19 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Rename RenderTreeBuilder::removeAndDestroyChild() -> removeAndDestroy() |
| https://bugs.webkit.org/show_bug.cgi?id=182934 |
| <rdar://problem/37678241> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setFullScreenRenderer): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::removeAndDestroyAllContinuations): |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setText): |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::willBeDestroyed): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::willBeDestroyed): |
| * rendering/RenderTextFragment.cpp: |
| (WebCore::RenderTextFragment::willBeDestroyed): |
| (WebCore::RenderTextFragment::setText): |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::willBeDestroyed): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeAndDestroy): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| (WebCore::RenderTreeBuilder::removeAndDestroyChild): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::handleSpannerRemoval): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| |
| 2018-02-19 Daniel Bates <dabates@apple.com> |
| |
| Do not block authentication challenge to navigated resources |
| https://bugs.webkit.org/show_bug.cgi?id=182807 |
| <rdar://problem/37481619> |
| |
| Reviewed by Brent Fulgham. |
| |
| Blocking the main resource from asking for credentials depending on how it was |
| navigated to could be confusing to a person and breaks web compatibility. Restore |
| the behavior before r224134. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::receivedFirstData): |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::init): |
| (WebCore::ResourceLoader::willSendRequestInternal): |
| (WebCore::ResourceLoader::didBlockAuthenticationChallenge): |
| (WebCore::ResourceLoader::isAllowedToAskUserForCredentials const): |
| (WebCore::ResourceLoader::isMixedContent const): Deleted. |
| * loader/ResourceLoader.h: |
| (WebCore::ResourceLoader::wasAuthenticationChallengeBlocked const): |
| (WebCore::ResourceLoader::wasInsecureRequestSeen const): Deleted. |
| |
| 2018-02-17 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Store all parsed keyframe input information in a single structure |
| https://bugs.webkit.org/show_bug.cgi?id=182903 |
| |
| Reviewed by Dean Jackson. |
| |
| When parsing keyframe input provided through the JS API, we used to create several data structures. |
| During parsing we would create a Vector<ProcessedKeyframe> where we would store the validated values |
| for "offset", "easing" and "composite" as well as CSS properties and CSS values as strings. |
| |
| Then we would create a KeyframeList, a class that pre-dates the work on Web Animations and is used |
| for hardware animations, with RenderStyle objects that are used for CSS property blending at runtime. |
| Once the KeyframeList was created, the Vector<ProcessedKeyframe> was discarded. |
| |
| Since KeyframeList did not know about nullable offsets, timing functions and composite operations, and |
| because we do not with to modify a legacy class that we will eventually remove once all the Web Animations |
| work is complete, we also stored the parsed offsets as m_offsets, the timing functions as m_timingFunctions |
| and the composite operations as m_compositeOperations. |
| |
| In this patch we rename the ProcessedKeyframe structure used temporarily during parsing to ParsedKeyframe and |
| store both the input and processed data related to a given keyframe in that single structure which we keep |
| around as m_parsedKeyframes when we finished processing the keyframes input. This update ParsedKeyframe structure |
| allows to keep around the original nullable offsets, the original CSS properties and CSS values as strings as |
| a HashMap<CSSPropertyID, String>, as well as the CSS properties and CSS values as CSSValue objects using a |
| MutableStyleProperties object. |
| |
| This has the benefit of reducing the number of members, but also pave the way for supporting read-write targets |
| where we will be able to decouple parsing keyframes and creating a KeyframeList, which requires a valid target |
| to create RenderStyle objects used for blending, since the original parsing-time information is now stored. |
| |
| Finally, this allowed getKeyframes() to be more compliant by returning the CSS values as originally provided in |
| the keyframe input with shorthand properties when provided, rather than the long-hands we used to read back |
| through RenderStyle objects. |
| |
| The generated KeyframeList is now stored as m_blendingKeyframes and is only used for the purpose of interfacing |
| with hardware animations and CSS property blending. |
| |
| While ProcessedKeyframe was copyable due to holding only simple types, ParsedKeyframe is not since it uses a Ref |
| to hold the MutableStyleProperties. This uncovered some cases where we copied ProcessedKeyframe objects, we now |
| ensure that the ParsedKeyframe objects are moved instead, which was the correct thing to do all along. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::computeMissingKeyframeOffsets): While we used to store std::optional<double> for the computed offset, |
| we now store a simple double, which makes more sense since the computed offset is eventually a fully resolved |
| value after calling computeMissingKeyframeOffsets(). So we now compute the final computed offset without resorting |
| to intermediate nullable computed offsets. |
| (WebCore::processIterableKeyframes): |
| (WebCore::processPropertyIndexedKeyframes): |
| (WebCore::KeyframeEffectReadOnly::KeyframeEffectReadOnly): |
| (WebCore::KeyframeEffectReadOnly::copyPropertiesFromSource): |
| (WebCore::KeyframeEffectReadOnly::getKeyframes): |
| (WebCore::KeyframeEffectReadOnly::processKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computeStackingContextImpact): |
| (WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): |
| (WebCore::KeyframeEffectReadOnly::getAnimatedStyle): |
| (WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): |
| (WebCore::KeyframeEffectReadOnly::startOrStopAccelerated): |
| * animation/KeyframeEffectReadOnly.h: |
| (WebCore::KeyframeEffectReadOnly::ParsedKeyframe::ParsedKeyframe): |
| |
| 2018-02-19 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Remove redundant RenderObject::removeFromParentAndDestroy |
| https://bugs.webkit.org/show_bug.cgi?id=182926 |
| <rdar://problem/37674997> |
| |
| Reviewed by Antti Koivisto. |
| |
| Call RenderTreeBuilder::removeAndDestroyChild() directly instead. |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setFullScreenRenderer): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::removeAndDestroyAllContinuations): |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setText): |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::willBeDestroyed): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::willBeDestroyed): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::removeFromParentAndDestroy): Deleted. |
| * rendering/RenderObject.h: |
| * rendering/RenderTextFragment.cpp: |
| (WebCore::RenderTextFragment::willBeDestroyed): |
| (WebCore::RenderTextFragment::setText): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::handleSpannerRemoval): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| |
| 2018-02-19 Tim Horton <timothy_horton@apple.com> |
| |
| Increase text autosizing constants for extra zoom mode |
| https://bugs.webkit.org/show_bug.cgi?id=182919 |
| <rdar://problem/37671259> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * page/Settings.yaml: |
| * page/SettingsBase.cpp: |
| (WebCore::SettingsBase::defaultMinimumZoomFontSize): |
| (WebCore::SettingsBase::defaultOneLineTextMultiplierCoefficient): |
| (WebCore::SettingsBase::defaultMultiLineTextMultiplierCoefficient): |
| (WebCore::SettingsBase::defaultMaxTextAutosizingScaleIncrease): |
| * page/SettingsBase.h: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::oneLineTextMultiplier): |
| (WebCore::textMultiplier): |
| (WebCore::RenderBlockFlow::adjustComputedFontSizes): |
| * rendering/TextAutoSizing.cpp: |
| (WebCore::TextAutoSizingValue::adjustTextNodeSizes): |
| Make autosizing constants settings, and change their default values. |
| |
| 2018-02-17 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Accept null composite modes in keyframes |
| https://bugs.webkit.org/show_bug.cgi?id=182902 |
| |
| Reviewed by Dean Jackson. |
| |
| The Web Animations spec used to specify that that composite modes should be non-null and instead not be |
| provided when specifying keyframes, but now null values are accepted. We update the IDL input types used |
| when parsing keyframes to allow for null values. |
| |
| We had already updated the getKeyframes() output in webkit.org/b/182600. |
| |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::processIterableKeyframes): |
| (WebCore::processKeyframeLikeObject): |
| (WebCore::processPropertyIndexedKeyframes): |
| * animation/KeyframeEffectReadOnly.h: |
| * animation/KeyframeEffectReadOnly.idl: |
| |
| 2018-02-19 Ms2ger <Ms2ger@igalia.com> |
| |
| Explicitly qualify some method calls on this in lamdas in Service Worker code. |
| https://bugs.webkit.org/show_bug.cgi?id=182875 |
| |
| Reviewed by Chris Dumez. |
| |
| This is necessary for the code to build with GCC 5. Other code already |
| appears to have been adapted similarly. |
| |
| No change in functionality. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::redirectReceived): |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::ready): |
| (WebCore::ServiceWorkerContainer::getRegistration): |
| (WebCore::ServiceWorkerContainer::getRegistrations): |
| (WebCore::ServiceWorkerContainer::didFinishGetRegistrationsRequest): |
| * workers/service/ServiceWorkerGlobalScope.cpp: |
| (WebCore::ServiceWorkerGlobalScope::updateExtendedEventsSet): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::claim): |
| (WebCore::SWServer::Connection::resolveRegistrationReadyRequests): |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::updateRegistrationState): |
| (WebCore::SWServerRegistration::setUpdateViaCache): |
| (WebCore::SWServerRegistration::setLastUpdateTime): |
| (WebCore::SWServerRegistration::fireUpdateFoundEvent): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::setState): |
| |
| 2018-02-19 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement::removeAndDestroyChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182915 |
| <rdar://problem/37658123> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::removeAndDestroyChild): Deleted. |
| * rendering/RenderElement.h: |
| (WebCore::RenderElement::isChildAllowed const): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::removeFromParentAndDestroy): |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::willBeDestroyed): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeAndDestroyChild): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| |
| 2018-02-12 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR][OpenVR] Implement getVRDisplays() |
| https://bugs.webkit.org/show_bug.cgi?id=182692 |
| |
| Reviewed by Žan Doberšek. |
| |
| This provides an implementation of Navigator's getVRDisplays() |
| method using OpenVR as backend. It queues several promises in |
| a queue and resolves them all just once. The information retrieved |
| is very minimal for the time being, but this change lays the ground |
| for all the changes that are about to land. |
| |
| The VR code uses a VRManager which is the interface with the |
| platform code and the responsible for instantiating the right |
| platform code. This platform code is currently being implemented |
| using OpenVR but could we also ported in the future to OpenXR or any |
| other VR SDK. |
| |
| * CMakeLists.txt: |
| * Modules/webvr/NavigatorWebVR.cpp: |
| (WebCore::NavigatorWebVR::getVRDisplays): |
| (WebCore::NavigatorWebVR::vrEnabled): |
| * Modules/webvr/NavigatorWebVR.h: |
| * Modules/webvr/VRDisplay.cpp: |
| (WebCore::VRDisplay::create): |
| (WebCore::VRDisplay::VRDisplay): |
| (WebCore::VRDisplay::isConnected const): |
| (WebCore::VRDisplay::displayName const): |
| * Modules/webvr/VRDisplay.h: |
| * Modules/webvr/VRDisplayCapabilities.cpp: |
| (WebCore::VRDisplayCapabilities::VRDisplayCapabilities): |
| (WebCore::VRDisplayCapabilities::hasPosition const): |
| (WebCore::VRDisplayCapabilities::hasOrientation const): |
| (WebCore::VRDisplayCapabilities::hasExternalDisplay const): |
| (WebCore::VRDisplayCapabilities::canPresent const): |
| (WebCore::VRDisplayCapabilities::maxLayer const): |
| * Modules/webvr/VRDisplayCapabilities.h: |
| (WebCore::VRDisplayCapabilities::create): |
| * Sources.txt: |
| * platform/vr/VRManager.cpp: Added. This is the main interface used by bindings code to |
| access VR devices data provided by platform code. |
| (WebCore::VRManager::singleton): |
| (WebCore::VRManager::VRManager): |
| (WebCore::VRManager::~VRManager): |
| (WebCore::VRManager::refreshVRDevices): |
| * platform/vr/VRManager.h: Added. |
| * platform/vr/VRPlatformDisplay.h: Added. Abstraction of a VR display system. To be |
| implemented by backends like OpenVR, OpenXR... |
| * platform/vr/VRPlatformManager.h: Added. Abstraction of the platform specific class which |
| retrieves data from VR devices. To be implemented by backends like OpenVR, OpenXR... |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.cpp: Added. |
| (WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR): |
| * platform/vr/openvr/VRPlatformDisplayOpenVR.h: Added. |
| * platform/vr/openvr/VRPlatformManagerOpenVR.cpp: Added. |
| (WebCore::VRPlatformManagerOpenVR::create): |
| (WebCore::VRPlatformManagerOpenVR::VRPlatformManagerOpenVR): |
| (WebCore::VRPlatformManagerOpenVR::~VRPlatformManagerOpenVR): |
| (WebCore::VRPlatformManagerOpenVR::initOpenVR): |
| * platform/vr/openvr/VRPlatformManagerOpenVR.h: Added. |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-02-19 Manuel Rego Casasnovas <rego@igalia.com> |
| |
| [css-grid] Apply automatic minimum size clamping to spanning items too |
| https://bugs.webkit.org/show_bug.cgi?id=182684 |
| |
| Reviewed by Javier Fernandez. |
| |
| In r225776 we added the conditions from the spec to apply |
| the automatic minimum size clamping when required |
| but only to non-spanning items. |
| See: https://drafts.csswg.org/css-grid/#min-size-auto |
| |
| This patch moves the code from GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem() |
| to GridTrackSizingAlgorithmStrategy::minSizeForChild() |
| that way the clamping is applied for both spanning and non-spanning items. |
| |
| This somehow reverts r225776, as it was adding some duplicated code. |
| All the checks to know if we should use that part of the spec |
| were already present in GridTrackSizingAlgorithmStrategy::minSizeForChild(). |
| |
| Apart from using the previous code, there's a new loop to verify |
| that the max track sizing function is fixed for all the tracks of the item. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem): |
| (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const): |
| |
| 2018-02-19 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK][GStreamer] Replaying a webm video twice causes the video to stop getting rendered |
| https://bugs.webkit.org/show_bug.cgi?id=176789 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Ensure the wrapped GstGLContext is set when the pipeline goes from |
| READY to PAUSED state. This is a workaround for |
| https://bugzilla.gnome.org/show_bug.cgi?id=757933. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): Add debug statement. |
| (WebCore::MediaPlayerPrivateGStreamer::readyTimerFired): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::changePipelineState): |
| Ensure the wrapped GstGLContext is set when the pipeline goes from |
| READY to PAUSED state. |
| (WebCore::MediaPlayerPrivateGStreamer::didEnd): Add debug statement. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| Change the requestGLContext to be a method instead of a static |
| function. Being a static function was a requirement for the now-removed OpenWebRTC player. |
| (WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage): Add |
| debug statement, fix requestGLContext usage. |
| (WebCore::MediaPlayerPrivateGStreamerBase::requestGLContext): Refactor as method. |
| (WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer): Fix requestGLContext usage. |
| (WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL): Remove fixed FIXME. |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGLVideoSinkContext): |
| Set display and app wrapped contexts on the video sink. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| |
| 2018-02-19 Xabier Rodriguez Calvar <calvaris@igalia.com> |
| |
| [GStreamer] Crash in WebCore::MediaPlayerRequestInstallMissingPluginsCallback::complete |
| https://bugs.webkit.org/show_bug.cgi?id=166733 |
| |
| Reviewed by Philippe Normand. |
| |
| There are a couple of issues to tackle here. |
| |
| First is handling getting more than one missing plugin |
| installation request at the same time. For this we add the request |
| to a Vector and handle them there. |
| |
| Second is that if the player is dead and we still get the result, |
| bad things happen. For that we "weaked" the pointer capture by the |
| lambda. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): |
| Handle Vector of callbacks. |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Weak |
| private player pointer and put the callback in the Vector. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| Callback becomes Vector. |
| * platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h: |
| (WebCore::MediaPlayerRequestInstallMissingPluginsCallback::create): |
| (WebCore::MediaPlayerRequestInstallMissingPluginsCallback::complete): |
| (WebCore::MediaPlayerRequestInstallMissingPluginsCallback::MediaPlayerRequestInstallMissingPluginsCallback): |
| Callback function is refactored into a "using" type and added self |
| as parameter to the function. |
| |
| 2018-02-19 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Playbin3 support |
| https://bugs.webkit.org/show_bug.cgi?id=182530 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| This patch introduces opt-in support for the playbin3 GStreamer |
| element. This new playback element is still considered |
| experimental but it can still be very useful for media assets |
| containing multiple tracks of the same type. In such scenario |
| audio/video decoders would be created only for the selected tracks |
| whereas playbin2 creates decoder for each track. |
| |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp: Take |
| a weak pointer of the media player instead of playbin and call the |
| player when enabling tracks. Also use the GstStream API instead of |
| inspecting the pad when playbin3 is used. |
| (WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer): |
| (WebCore::AudioTrackPrivateGStreamer::disconnect): |
| (WebCore::AudioTrackPrivateGStreamer::markAsActive): |
| (WebCore::AudioTrackPrivateGStreamer::setEnabled): |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/GRefPtrGStreamer.cpp: GstStream and |
| GstStreamCollection smart pointer support. |
| (WTF::adoptGRef): |
| (WTF::refGPtr<GstStream>): |
| (WTF::derefGPtr<GstStream>): |
| (WTF::refGPtr<GstStreamCollection>): |
| (WTF::derefGPtr<GstStreamCollection>): |
| * platform/graphics/gstreamer/GRefPtrGStreamer.h: |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp: |
| Use the GstStream API instead of inspecting the pad when playbin3 |
| is used. |
| (WebCore::InbandTextTrackPrivateGStreamer::InbandTextTrackPrivateGStreamer): |
| (WebCore::InbandTextTrackPrivateGStreamer::disconnect): |
| * platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h: |
| (WebCore::InbandTextTrackPrivateGStreamer::create): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): |
| m_{audio,video,text}Tracks are now hashmaps, which is a bit more |
| convenient to use than Vectors. |
| (WebCore::MediaPlayerPrivateGStreamer::updateTracks): Update our |
| tracks implementations depending on the streams stored in the |
| collection. |
| (WebCore::MediaPlayerPrivateGStreamer::enableTrack): Activate the |
| given track. This method is called by the TrackPrivate |
| implementations. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): |
| Refactored legacy (playbin2) support for track hashmap storage. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::newTextSample): Use track hashmap storage. |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): React on |
| playbin3 GstStream messages, store the collection provided and |
| activate the given selected streams accordingly. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidAudioTracks): Invalidate tracks no longer needed. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidVideoTracks): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::purgeInvalidTextTracks): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::sourceSetupCallback): |
| Refactoring, use source-setup signal instead of the source |
| property which is not supported in playbin3. |
| (WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback): |
| Promoted logging messages, GST_TRACE should be used for very |
| frequent and less interesting messages. |
| (WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::sourceSetup): Called by the source-setup signal handler. |
| (WebCore::MediaPlayerPrivateGStreamer::setDownloadBuffering): Debugging message added. |
| (WebCore::MediaPlayerPrivateGStreamer::setPreload): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Create a |
| playbin3 element if USE(GSTREAMER_PLAYBIN3) was enabled and |
| connect to playbin2 signals otherwise. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| (WebCore::MediaPlayerPrivateGStreamer::createWeakPtr): Promoted to public. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| New StreamCollectionChanged notification type, used the sub-class. |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| (WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer): Support for GstStream API. |
| (WebCore::TrackPrivateBaseGStreamer::disconnect): Clear GstStream too. |
| (WebCore::TrackPrivateBaseGStreamer::tagsChanged): Get tags from GstStream. |
| (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfActiveChanged): No need to check m_pad twice. |
| (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged): Ditto. |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp: Take |
| a weak pointer of the media player instead of playbin and call the |
| player when enabling tracks. Also use the GstStream API instead of |
| inspecting the pad when playbin3 is used. |
| (WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer): |
| (WebCore::VideoTrackPrivateGStreamer::disconnect): |
| (WebCore::VideoTrackPrivateGStreamer::markAsActive): |
| (WebCore::VideoTrackPrivateGStreamer::setSelected): |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/mse/AppendPipeline.cpp: Pass player pointer to track constructor. |
| (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink): |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: Source-setup signal handler. |
| (WebCore::MediaPlayerPrivateGStreamerMSE::sourceSetup): |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h: |
| |
| 2018-02-19 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| REGRESSION(r219298): RELEASE_ASSERT(!m_owningPointerForClose) fails in WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose |
| https://bugs.webkit.org/show_bug.cgi?id=174354 |
| <rdar://problem/33294987> |
| |
| Reviewed by Michael Catanzaro. |
| |
| UniqueIDBDatabase::invokeOperationAndTransactionTimer was called |
| even after m_owningPointerForClose was set in |
| UniqueIDBDatabase::didDeleteBackingStore. |
| |
| No new tests (Covered by existing tests). |
| |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: |
| (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): |
| Do not start deleting the UniqueIDBDatabase. Just call invokeOperationAndTransactionTimer. |
| (WebCore::IDBServer::UniqueIDBDatabase::invokeOperationAndTransactionTimer): |
| Assert m_owningPointerForClose is null. |
| |
| 2018-02-18 Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> |
| |
| Fix build error after r228417 without ACCESSIBILITY |
| https://bugs.webkit.org/show_bug.cgi?id=182914 |
| |
| Reviewed by Chris Fleizach. |
| |
| An inline empty version of AXObjectCache::deferFocusdUIElementChangeIfNeeded() |
| needs to be defined if not HAVE(ACCESSIBILITY). |
| |
| * accessibility/AXObjectCache.h: |
| (WebCore::AXObjectCache::deferFocusedUIElementChangeIfNeeded): |
| |
| 2018-02-18 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] REGRESSION(r228238) Detach renderer before destroying its subtree. |
| https://bugs.webkit.org/show_bug.cgi?id=182908 |
| <rdar://problem/37619394> |
| |
| Reviewed by Antti Koivisto. |
| |
| Prior to r228238 we first detached the to-be-destroyed renderer and then |
| started nuking its descendants. r228238 changed the order and now the descendants are |
| destroyed while they are still attached to the tree. Apparently some of the takeChild() |
| normalization logic gets triggered now that the renderers still have access to their previous/next |
| siblings. This is unexpected and it shouldn't matter whether the subtree is still attached. |
| Let's revert it to the original order for now (see webkit.org/b/182909). |
| |
| Test: fast/block/crash-when-subtree-is-still-attached.html |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::removeAndDestroyChild): |
| |
| 2018-02-18 Charlie Turner <cturner@igalia.com> |
| |
| [GStreamer] Push smaller buffers from HTTP source |
| https://bugs.webkit.org/show_bug.cgi?id=182829 |
| |
| Reviewed by Philippe Normand. |
| |
| Split the received buffer into smaller buffers of a size consistent |
| with the basesrc (4KiB). It is important not to push large buffers |
| into the appsrc (where large is relative to the appsrc's configured |
| byte size). If large buffers are pushed, then when they are internally |
| dequeued by the appsrc, the buffering percentage can dramatically |
| plummet due to a large amount of bytes being removed after a push. This |
| can in turn trick the media player into thinking it needs to buffer, |
| and then issuing a spurious set of playing->paused then |
| paused->playing transitions, which by the time the buffering logic |
| completes, data are already available. |
| |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (CachedResourceStreamingClient::dataReceived): |
| |
| 2018-02-17 Darin Adler <darin@apple.com> |
| |
| Web Inspector: get rid of remaining uses of OptOutput<T> |
| https://bugs.webkit.org/show_bug.cgi?id=180607 |
| |
| Reviewed by Brian Burg. |
| |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::buildSourceRangeObject): Take a const Vector& instead of a Vector*. |
| (WebCore::InspectorStyle::buildObjectForStyle const): Pass lineEndings() instead |
| of lineEndings().get(). |
| (WebCore::InspectorStyle::styleWithProperties const): Ditto. |
| (WebCore::InspectorStyleSheet::buildObjectForSelectorList): Ditto. |
| (WebCore::InspectorStyleSheet::lineEndings const): Return a Vector instead of |
| a std::unique_ptr<Vector>. |
| (WebCore::InspectorStyleSheetForInlineStyle::lineEndings const): Ditto. |
| * inspector/InspectorStyleSheet.h: Updated for the above. |
| |
| * inspector/agents/InspectorCSSAgent.h: Removed some bogus const. |
| * inspector/agents/InspectorCanvasAgent.cpp: Ditto. |
| * inspector/agents/InspectorCanvasAgent.h: Ditto. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: Improved type of global strings |
| so we don't waste space with a pointer to the string. |
| (WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint): Removed |
| explicit creation of String, which was wasteful and unnecessary. |
| (WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::setXHRBreakpoint): Removed bogus const. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.h: Removed bogus const and use |
| final instead of override. |
| * inspector/agents/InspectorPageAgent.cpp: Ditto. |
| * inspector/agents/InspectorPageAgent.h: Ditto. |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Cleanup RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182899 |
| <rdar://problem/37627888> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::moveChildTo): |
| (WebCore::RenderTreeBuilder::moveAllChildrenTo): |
| (WebCore::RenderTreeBuilder::moveChildrenTo): |
| (WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloatsTo): |
| (WebCore::RenderTreeBuilder::makeChildrenNonInline): |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderMenuList): Deleted. |
| (WebCore::RenderTreeBuilder::takeChildFromRenderButton): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::current): |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild): |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo): |
| * rendering/updating/RenderTreeBuilderFormControls.cpp: |
| (WebCore::RenderTreeBuilder::FormControls::takeChild): |
| * rendering/updating/RenderTreeBuilderFormControls.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| |
| 2018-02-16 Daniel Bates <dabates@apple.com> |
| |
| Remove UTF-32 BOM parsing code |
| https://bugs.webkit.org/show_bug.cgi?id=182900 |
| <rdar://problem/37238717> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| The UTF-32 encodings were removed from the text codec registry in r224747. So, |
| we no longer need code to parse UTF-32{BE, LE} BOM or encode and decode these |
| variants. |
| |
| * dom/TextDecoder.cpp: |
| (WebCore::codeUnitByteSize): |
| * loader/TextResourceDecoder.cpp: |
| (WebCore::TextResourceDecoder::checkForBOM): |
| (WebCore::TextResourceDecoder::checkForHeadCharset): |
| * platform/text/TextEncoding.cpp: |
| (WebCore::TextEncoding::isNonByteBasedEncoding const): |
| (WebCore::UTF32BigEndianEncoding): Deleted. |
| (WebCore::UTF32LittleEndianEncoding): Deleted. |
| * platform/text/TextEncoding.h: |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBoxModelObject::moveChild*() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182896 |
| <rdar://problem/37623051> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.h: |
| (WebCore::RenderBlock::moveAllChildrenIncludingFloatsTo): Deleted. |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| (WebCore::RenderBlockFlow::moveAllChildrenIncludingFloatsTo): Deleted. |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::moveChildTo): Deleted. |
| (WebCore::RenderBoxModelObject::moveChildrenTo): Deleted. |
| (WebCore::RenderBoxModelObject::moveAllChildrenToInternal): Deleted. |
| * rendering/RenderBoxModelObject.h: |
| (WebCore::RenderBoxModelObject::moveChildTo): Deleted. |
| (WebCore::RenderBoxModelObject::moveAllChildrenTo): Deleted. |
| (WebCore::RenderBoxModelObject::moveChildrenTo): Deleted. |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::moveChildTo): |
| (WebCore::RenderTreeBuilder::moveAllChildrenTo): |
| (WebCore::RenderTreeBuilder::moveChildrenTo): |
| (WebCore::RenderTreeBuilder::moveAllChildrenIncludingFloatsTo): |
| (WebCore::RenderTreeBuilder::makeChildrenNonInline): |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::moveAllChildrenToInternal): |
| (WebCore::RenderTreeBuilder::Block::removeLeftoverAnonymousBlock): |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild): |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::moveAllChildrenIncludingFloatsTo): |
| * rendering/updating/RenderTreeBuilderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| |
| 2018-02-16 Andy Estes <aestes@apple.com> |
| |
| [Cocoa] Stop using non-prefixed vDSP functions in 32-bit builds |
| https://bugs.webkit.org/show_bug.cgi?id=182898 |
| <rdar://problem/37195079> |
| |
| Reviewed by Tim Horton. |
| |
| There's no need to use non-prefixed vDSP function aliases on 32-bit builds. |
| The vDSP-prefixed versions are available on all Cocoa platforms we currently support. |
| |
| * platform/audio/DirectConvolver.cpp: |
| (WebCore::DirectConvolver::process): |
| * platform/audio/VectorMath.cpp: |
| (WebCore::VectorMath::vsmul): |
| (WebCore::VectorMath::vadd): |
| (WebCore::VectorMath::vmul): |
| (WebCore::VectorMath::zvmul): |
| |
| 2018-02-16 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r228575. |
| |
| Introduced LayoutTest crashes under GuardMalloc. |
| |
| Reverted changeset: |
| |
| "Use ResourceLoader to load appcache manifest" |
| https://bugs.webkit.org/show_bug.cgi?id=182861 |
| https://trac.webkit.org/changeset/228575 |
| |
| 2018-02-16 Dean Jackson <dino@apple.com> |
| |
| Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa |
| https://bugs.webkit.org/show_bug.cgi?id=182894 |
| |
| Reviewed by Tim Horton. |
| |
| Adjust the places where we check for PLATFORM(MAC) or |
| PLATFORM(IOS) related to WebGL, and instead rely |
| on USE(OPENGL) USE(OPENGL_ES). |
| |
| * CMakeLists.txt: |
| * PlatformGTK.cmake: |
| * platform/graphics/GLContext.cpp: |
| (WebCore::initializeOpenGLShimsIfNeeded): |
| * platform/graphics/GraphicsContext3DPrivate.cpp: |
| * platform/graphics/OpenGLESShims.h: |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| * platform/graphics/egl/GLContextEGL.cpp: |
| (WebCore::GLContextEGL::getEGLConfig): |
| (WebCore::GLContextEGL::createContext): |
| (WebCore::GLContextEGL::createSharingContext): |
| * platform/graphics/egl/GLContextEGLWPE.cpp: |
| (WebCore::GLContextEGL::createWPEContext): |
| * platform/graphics/egl/GLContextEGLWayland.cpp: |
| (WebCore::GLContextEGL::createWaylandContext): |
| * platform/graphics/egl/GLContextEGLX11.cpp: |
| (WebCore::GLContextEGL::createPixmapContext): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): |
| * platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp: |
| (WebCore::VideoTextureCopierGStreamer::VideoTextureCopierGStreamer): |
| (WebCore::VideoTextureCopierGStreamer::~VideoTextureCopierGStreamer): |
| (WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture): |
| * platform/graphics/gstreamer/VideoTextureCopierGStreamer.h: |
| * platform/graphics/opengl/Extensions3DOpenGLES.cpp: |
| * platform/graphics/opengl/Extensions3DOpenGLES.h: |
| * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: |
| (WebCore::GraphicsContext3D::create): |
| (WebCore::GraphicsContext3D::GraphicsContext3D): |
| (WebCore::GraphicsContext3D::isGLES2Compliant const): |
| * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: |
| (WebCore::GraphicsContext3D::create): |
| (WebCore::GraphicsContext3D::GraphicsContext3D): |
| (WebCore::GraphicsContext3D::~GraphicsContext3D): |
| (WebCore::GraphicsContext3D::isGLES2Compliant const): |
| (WebCore::GraphicsContext3D::getExtensions): |
| * platform/graphics/texmap/TextureMapperContextAttributes.cpp: |
| (WebCore::TextureMapperContextAttributes::initialize): |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGLData::~TextureMapperGLData): |
| (WebCore::TextureMapperGLData::getVAO): |
| (WebCore::TextureMapperGL::beginPainting): |
| (WebCore::TextureMapperGL::endPainting): |
| * platform/graphics/texmap/TextureMapperGLHeaders.h: |
| * platform/graphics/texmap/TextureMapperShaderProgram.cpp: |
| (WebCore::TextureMapperShaderProgram::create): |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement::insertChildInternal() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182885 |
| <rdar://problem/37617371> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::insertChildInternal): Deleted. |
| * rendering/RenderObject.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChildToRenderElement): |
| |
| 2018-02-16 Youenn Fablet <youenn@apple.com> |
| |
| Allow specifying which plug-ins are supported |
| https://bugs.webkit.org/show_bug.cgi?id=182748 |
| |
| Reviewed by Chris Dumez. |
| |
| Tests: http/tests/plugins/nounsupported-plugin.html |
| http/tests/plugins/supported-plugin-all-origin-visibility.html |
| http/tests/plugins/supported-plugin-on-specific-origin.html |
| http/tests/plugins/supported-plugin-origin-specific-visibility.html |
| http/tests/plugins/unsupported-plugin-on-specific-origin.html |
| plugins/unsupported-plugin.html |
| |
| Added support for computing plugin web visibility with the added knowledge of supported plugins. |
| In case of a plugin failing to be created due to being unsupported, update the UI |
| to use mark the plugin as "Unexpected plug in". |
| |
| Added internal API to retrieve the plug-in error description message. |
| |
| * English.lproj/Localizable.strings: |
| * WebCore.xcodeproj/project.pbxproj: |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::HTMLPlugInElement::setReplacement): |
| * html/HTMLPlugInElement.h: |
| * loader/EmptyClients.cpp: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::unsupportedPluginText): |
| * platform/LocalizedStrings.h: |
| * plugins/PluginData.cpp: |
| (WebCore::PluginData::initPlugins): |
| * plugins/PluginData.h: |
| (WebCore::decodePluginNames): |
| (WebCore::encodePluginNames): |
| (WebCore::SupportedPluginNames::decode): |
| (WebCore::SupportedPluginNames::encode const): |
| * plugins/PluginInfoProvider.h: |
| * rendering/RenderEmbeddedObject.cpp: |
| (WebCore::unavailablePluginReplacementText): |
| * rendering/RenderEmbeddedObject.h: |
| (WebCore::RenderEmbeddedObject::pluginReplacementTextIfUnavailable const): |
| * testing/Internals.cpp: |
| (WebCore::Internals::unavailablePluginReplacementText): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-02-16 Chris Dumez <cdumez@apple.com> |
| |
| http/tests/security/http-0.9/xhr-blocked.html is flaky |
| https://bugs.webkit.org/show_bug.cgi?id=182857 |
| <rdar://problem/37616958> |
| |
| Reviewed by Antti Koivisto. |
| |
| WebCoreResourceHandleAsOperationQueueDelegate does not own the messageQueue and |
| the detachHandle function was failing to nullout m_messageQueue when the resourceHandle |
| gets destroyed. This means that callFunctionOnMainThread would sometimes try to append |
| to a dead messageQueue. |
| |
| No new tests, already covered by: |
| http/tests/security/http-0.9/xhr-blocked.html is flaky |
| |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate detachHandle]): |
| |
| 2018-02-16 Antti Koivisto <antti@apple.com> |
| |
| Assert in mixed blend animation |
| https://bugs.webkit.org/show_bug.cgi?id=182887 |
| <rdar://problem/37598140> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Test: fast/css/calc-mixed-blend-crash.html |
| |
| * platform/CalculationValue.cpp: |
| (WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength): |
| |
| Fix mismatch between the type test and the value used. |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock/RenderInline::addChildIgnoringContinuation() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182876 |
| <rdar://problem/37607604> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::addChildIgnoringContinuation): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::addChildIgnoringContinuation): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::addChildIgnoringContinuation): Deleted. |
| * rendering/RenderInline.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChildIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlockIgnoringContinuation): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToRenderInlineIgnoringContinuation): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::insertChildToContinuation): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Inline::splitInlines): |
| |
| 2018-02-16 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Unify logic of ResourceHandleCurlDelegate into ResourceHandle |
| https://bugs.webkit.org/show_bug.cgi?id=182578 |
| |
| Reconstruct the classes to match Curl port network layer more similar |
| structure with other ports. Move CurlRequest handling into ResourceHandle |
| and makes CurlResourceHandleDelegate simple life cycle. Also its duty is |
| for most of incoming data and event handling from CurRequest. |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because there's no new behavior. |
| |
| * platform/Curl.cmake: |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleInternal.h: |
| (WebCore::ResourceHandleInternal::ResourceHandleInternal): |
| * platform/network/curl/CurlCacheManager.cpp: |
| (WebCore::CurlCacheManager::didReceiveResponse): |
| * platform/network/curl/CurlDownload.cpp: |
| (WebCore::CurlDownload::~CurlDownload): |
| (WebCore::CurlDownload::createCurlRequest): |
| (WebCore::CurlDownload::curlDidReceiveResponse): |
| (WebCore::CurlDownload::curlDidReceiveBuffer): |
| (WebCore::CurlDownload::curlDidComplete): |
| (WebCore::CurlDownload::curlDidFailWithError): |
| (WebCore::CurlDownload::willSendRequest): |
| * platform/network/curl/CurlDownload.h: |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::CurlRequest): |
| (WebCore::CurlRequest::cancel): |
| (WebCore::CurlRequest::callClient): |
| (WebCore::CurlRequest::willSendData): |
| (WebCore::CurlRequest::didReceiveData): |
| (WebCore::CurlRequest::didReceiveDataFromMultipart): |
| (WebCore::CurlRequest::didCompleteTransfer): |
| (WebCore::CurlRequest::invokeDidReceiveResponse): |
| * platform/network/curl/CurlRequest.h: |
| (WebCore::CurlRequest::create): |
| (WebCore::CurlRequest::invalidateClient): |
| (WebCore::CurlRequest::setClient): Deleted. |
| * platform/network/curl/CurlRequestClient.h: |
| * platform/network/curl/CurlResourceHandleDelegate.cpp: Added. |
| (WebCore::CurlResourceHandleDelegate::CurlResourceHandleDelegate): |
| (WebCore::CurlResourceHandleDelegate::ref): |
| (WebCore::CurlResourceHandleDelegate::deref): |
| (WebCore::CurlResourceHandleDelegate::cancelledOrClientless): |
| (WebCore::CurlResourceHandleDelegate::client const): |
| (WebCore::CurlResourceHandleDelegate::d): |
| (WebCore::CurlResourceHandleDelegate::curlDidSendData): |
| (WebCore::handleCookieHeaders): |
| (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse): |
| (WebCore::CurlResourceHandleDelegate::curlDidReceiveBuffer): |
| (WebCore::CurlResourceHandleDelegate::curlDidComplete): |
| (WebCore::CurlResourceHandleDelegate::curlDidFailWithError): |
| * platform/network/curl/CurlResourceHandleDelegate.h: Added. |
| (WebCore::CurlResourceHandleDelegate::response const): |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandleInternal::~ResourceHandleInternal): |
| (WebCore::ResourceHandle::start): |
| (WebCore::ResourceHandle::cancel): |
| (WebCore::ResourceHandle::cancelledOrClientless): |
| (WebCore::ResourceHandle::createCurlRequest): |
| (WebCore::ResourceHandle::delegate): |
| (WebCore::ResourceHandle::platformSetDefersLoading): |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): |
| (WebCore::ResourceHandle::receivedCredential): |
| (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential): |
| (WebCore::ResourceHandle::getCredential): |
| (WebCore::ResourceHandle::restartRequestWithCredential): |
| (WebCore::ResourceHandle::platformLoadResourceSynchronously): |
| (WebCore::ResourceHandle::platformContinueSynchronousDidReceiveResponse): |
| (WebCore::ResourceHandle::continueAfterDidReceiveResponse): |
| (WebCore::ResourceHandle::shouldRedirectAsGET): |
| (WebCore::ResourceHandle::willSendRequest): |
| (WebCore::ResourceHandle::continueAfterWillSendRequest): |
| (WebCore::ResourceHandle::handleDataURL): |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: Removed. |
| * platform/network/curl/ResourceHandleCurlDelegate.h: Removed. |
| |
| 2018-02-16 Youenn Fablet <youenn@apple.com> |
| |
| Use ResourceLoader to load appcache manifest |
| https://bugs.webkit.org/show_bug.cgi?id=182861 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated tests. |
| |
| Add ApplicationCacheResourceLoader to load an ApplicationCacheResource from a ResourceLoader. |
| Make use of it to load the app cache manifest. |
| Future work should load entries using the same loader. |
| |
| Remove manifest handle. |
| Ensure that DocumentLoader does not register the manifest resource loader as its lifetime |
| is handled by its ApplicationCacheGroup. |
| |
| Add a ResourceLoader option to bypass the application cache. |
| Use it for manifest loading. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::addSubresourceLoader): |
| * loader/ResourceLoaderOptions.h: |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::stopLoading): |
| (WebCore::ApplicationCacheGroup::update): |
| (WebCore::ApplicationCacheGroup::createRequest): |
| (WebCore::ApplicationCacheGroup::didReceiveResponseAsync): |
| (WebCore::ApplicationCacheGroup::didReceiveData): |
| (WebCore::ApplicationCacheGroup::didFinishLoading): |
| (WebCore::ApplicationCacheGroup::didFail): |
| (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): |
| (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): |
| * loader/appcache/ApplicationCacheGroup.h: |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::maybeLoadResource): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse): |
| (WebCore::ApplicationCacheHost::maybeLoadFallbackForError): |
| * loader/appcache/ApplicationCacheResourceLoader.cpp: Added. |
| * loader/appcache/ApplicationCacheResourceLoader.h: Added. |
| |
| 2018-02-16 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WebCore::EventTarget::fireEventListeners |
| https://bugs.webkit.org/show_bug.cgi?id=182880 |
| <rdar://problem/20788804> |
| |
| Reviewed by Youenn Fablet. |
| |
| Make sure the 'ended' event does not get dispatched on a |
| AudioScheduledSourceNode after ActiveDOMObjects have been stopped. |
| |
| Test: webaudio/audiobuffersource-ended-detached-frame.html |
| |
| * Modules/webaudio/AudioScheduledSourceNode.cpp: |
| (WebCore::AudioScheduledSourceNode::finish): |
| |
| 2018-02-16 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() |
| https://bugs.webkit.org/show_bug.cgi?id=182771 |
| <rdar://problem/36459988> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() |
| per https://www.w3.org/TR/webauthn/#isUserVerifyingPlatformAuthenticatorAvailable with some |
| limitations. |
| |
| In addition, it changes DeferredPromise to DOMPromiseDeferred<> for all CredentialsManagement |
| and WebAuthN API. |
| |
| Test: http/wpt/webauthn/public-key-is-user-verifying-platform-authenticator-available.html |
| |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::store): |
| (WebCore::CredentialsContainer::isCreate): |
| (WebCore::CredentialsContainer::preventSilentAccess const): |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| * Modules/credentialmanagement/CredentialsMessenger.cpp: |
| (WebCore::CredentialsMessenger::addCreationCompletionHandler): |
| Remove a redundant assertion. |
| (WebCore::CredentialsMessenger::addRequestCompletionHandler): |
| Remove a redundant assertion. |
| (WebCore::CredentialsMessenger::addQueryCompletionHandler): |
| (WebCore::CredentialsMessenger::takeQueryCompletionHandler): |
| * Modules/credentialmanagement/CredentialsMessenger.h: |
| * Modules/webauthn/AuthenticatorManager.cpp: |
| (WebCore::AuthenticatorManagerInternal::initTimeoutTimer): |
| (WebCore::AuthenticatorManager::create const): |
| (WebCore::AuthenticatorManager::discoverFromExternalSource const): |
| (WebCore::AuthenticatorManager::isUserVerifyingPlatformAuthenticatorAvailable const): |
| * Modules/webauthn/AuthenticatorManager.h: |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredential::isUserVerifyingPlatformAuthenticatorAvailable): |
| * Modules/webauthn/PublicKeyCredential.h: |
| * testing/MockCredentialsMessenger.cpp: |
| (WebCore::MockCredentialsMessenger::isUserVerifyingPlatformAuthenticatorAvailable): |
| (WebCore::MockCredentialsMessenger::isUserVerifyingPlatformAuthenticatorAvailableReply): |
| * testing/MockCredentialsMessenger.h: |
| * testing/MockCredentialsMessenger.idl: |
| |
| 2018-02-16 Tim Horton <timothy_horton@apple.com> |
| |
| Stop using EXCLUDED_SOURCE_FILE_NAMES for touch and gesture files in WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=182866 |
| |
| Reviewed by Daniel Bates. |
| |
| * Configurations/WebCore.xcconfig: |
| These generated files already have ENABLE() flags around them, |
| so there's no reason to exclude them explicitly. |
| |
| 2018-02-16 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, fix iOS build after r228562. |
| |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::openSQLiteDatabase): |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182878 |
| <rdar://problem/37608349> |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch removes the last addChild() related mutation logic from the renderers. |
| |
| No change in functionality. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::didInsertChild): |
| (WebCore::RenderElement::addChild): Deleted. |
| * rendering/RenderElement.h: |
| (WebCore::RenderElement::isChildAllowed const): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::insertChildToRenderElement): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::insertChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| |
| 2018-02-16 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228546. |
| |
| This caused a consistent crash on all macOS WK2 platforms. |
| |
| Reverted changeset: |
| |
| "Web Inspector: get rid of remaining uses of OptOutput<T>" |
| https://bugs.webkit.org/show_bug.cgi?id=180607 |
| https://trac.webkit.org/changeset/228546 |
| |
| 2018-02-16 Youenn Fablet <youenn@apple.com> |
| |
| Log the error message when failing to open the database |
| https://bugs.webkit.org/show_bug.cgi?id=182795 |
| <rdar://problem/37592399> |
| |
| Unreviewed. |
| Fixing iOS simulator debug build. |
| |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::openSQLiteDatabase): |
| |
| 2018-02-16 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| IndexedDB: Several test crash in when destroying a IDBKeyData |
| https://bugs.webkit.org/show_bug.cgi?id=167576 |
| |
| Reviewed by Michael Catanzaro. |
| |
| IDBKeyDataHashTraits::constructDeletedValue is using operator= to |
| assign deletedValue. But, the value is destructed just before |
| calling constructDeletedValue. You can't use operator= for a |
| destructed value. |
| |
| No new tests (Covered by existing tests). |
| |
| * Modules/indexeddb/IDBKeyData.h: |
| (WebCore::IDBKeyDataHashTraits::constructDeletedValue): |
| Construct null value before assigning deletedValue. |
| |
| 2018-02-16 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock/RenderBlockFlow::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182862 |
| <rdar://problem/37595464> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::addChild): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::addChild): Deleted. |
| * rendering/RenderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlock): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlockFlow): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): |
| * rendering/updating/RenderTreeBuilderFormControls.cpp: |
| (WebCore::RenderTreeBuilder::FormControls::findOrCreateParentForChild): |
| * rendering/updating/RenderTreeBuilderMathML.cpp: |
| (WebCore::RenderTreeBuilder::MathML::makeFences): |
| (WebCore::RenderTreeBuilder::MathML::insertChild): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): |
| (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): |
| (WebCore::RenderTreeBuilder::Ruby::rubyBaseSafe): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::insertChild): |
| |
| 2018-02-16 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Add basic support for <input type='date'> using date picker UI |
| https://bugs.webkit.org/show_bug.cgi?id=182847 |
| <rdar://problem/35143111> |
| |
| Reviewed by Tim Horton. |
| |
| Add new localized strings for "month", "day" and "year" as they appear in the date picker. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::textInputModeWriteButtonTitle): |
| (WebCore::textInputModeSpeechButtonTitle): |
| (WebCore::datePickerDayLabelTitle): |
| (WebCore::datePickerMonthLabelTitle): |
| (WebCore::datePickerYearLabelTitle): |
| (WebCore::textInputModeWriteButton): Deleted. |
| (WebCore::textInputModeSpeechButton): Deleted. |
| * platform/LocalizedStrings.h: |
| |
| 2018-02-16 Zan Dobersek <zdobersek@igalia.com> |
| |
| HarfBuzzFace should operate with a FontPlatformData reference |
| https://bugs.webkit.org/show_bug.cgi?id=182863 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Instead of keeping a never-null pointer to FontPlatformData, |
| HarfBuzzFace should operate with a FontPlatformData reference. |
| |
| * platform/graphics/freetype/FontPlatformDataFreeType.cpp: |
| (WebCore::FontPlatformData::harfBuzzFace const): |
| * platform/graphics/harfbuzz/HarfBuzzFace.cpp: |
| (WebCore::HarfBuzzFace::HarfBuzzFace): |
| * platform/graphics/harfbuzz/HarfBuzzFace.h: |
| * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: |
| (WebCore::HarfBuzzFace::createFace): |
| (WebCore::HarfBuzzFace::createFont): |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] parent.Render*::addChild() cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=182842 |
| <rdar://problem/37585524> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderFormControls.cpp: |
| (WebCore::RenderTreeBuilder::FormControls::createInnerRendererIfNeeded): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderMathML.cpp: |
| (WebCore::RenderTreeBuilder::MathML::makeFences): |
| (WebCore::RenderTreeBuilder::MathML::insertChild): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::insertChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| |
| 2018-02-15 Megan Gardner <megan_gardner@apple.com> |
| |
| Support scrolling for non-editable web-selection and start autoscroll when near screen edges |
| https://bugs.webkit.org/show_bug.cgi?id=182815 |
| |
| Reviewed by Tim Horton. |
| |
| Adjust the position we are autoscrolling to so that when we are close to an edge, we will start autoscrolling |
| while we are still inside the view. Autoscrolling still happens when you drag past the edge of a view. |
| |
| No new tests (This is difficult to test in this state, but when we switch assistants, test will also be added). |
| |
| * page/EventHandler.h: |
| * page/ios/EventHandlerIOS.mm: |
| (WebCore::EventHandler::startSelectionAutoscroll): |
| (WebCore::EventHandler::cancelSelectionAutoscroll): |
| (WebCore::autoscrollAdjustmentFactorForScreenBoundaries): |
| (WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll const): |
| (WebCore::EventHandler::startTextAutoscroll): Deleted. |
| (WebCore::EventHandler::cancelTextAutoscroll): Deleted. |
| |
| 2018-02-15 Youenn Fablet <youenn@apple.com> |
| |
| Log the error message when failing to open the database |
| https://bugs.webkit.org/show_bug.cgi?id=182795 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| Print the error message as it does not contain any user private information. |
| |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::openSQLiteDatabase): |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderMenuList::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182840 |
| <rdar://problem/37583638> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::didInsertChild): |
| (RenderMenuList::addChild): Deleted. |
| * rendering/RenderMenuList.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| * rendering/updating/RenderTreeBuilderFormControls.cpp: |
| (WebCore::RenderTreeBuilder::FormControls::findOrCreateParentForChild): |
| (WebCore::RenderTreeBuilder::FormControls::insertChild): |
| (WebCore::RenderTreeBuilder::FormControls::createInnerRendererIfNeeded): Deleted. |
| * rendering/updating/RenderTreeBuilderFormControls.h: |
| |
| 2018-02-15 Darin Adler <darin@apple.com> |
| |
| Web Inspector: get rid of remaining uses of OptOutput<T> |
| https://bugs.webkit.org/show_bug.cgi?id=180607 |
| |
| Reviewed by Brian Burg. |
| |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::buildSourceRangeObject): Take a const Vector& instead of a Vector*. |
| (WebCore::InspectorStyle::buildObjectForStyle const): Pass lineEndings() instead |
| of lineEndings().get(). |
| (WebCore::InspectorStyle::styleWithProperties const): Ditto. |
| (WebCore::InspectorStyleSheet::buildObjectForSelectorList): Ditto. |
| (WebCore::InspectorStyleSheet::lineEndings const): Return a Vector instead of |
| a std::unique_ptr<Vector>. |
| (WebCore::InspectorStyleSheetForInlineStyle::lineEndings const): Ditto. |
| * inspector/InspectorStyleSheet.h: Updated for the above. |
| |
| * inspector/agents/InspectorCSSAgent.h: Removed some bogus const. |
| * inspector/agents/InspectorCanvasAgent.cpp: Ditto. |
| * inspector/agents/InspectorCanvasAgent.h: Ditto. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: Improved type of global strings |
| so we don't waste space with a pointer to the string. |
| (WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint): Removed |
| explicit creation of String, which was wasteful and unnecessary. |
| (WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint): Ditto. |
| (WebCore::InspectorDOMDebuggerAgent::setXHRBreakpoint): Removed bogus const. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.h: Removed bogus const and use |
| final instead of override. |
| * inspector/agents/InspectorPageAgent.cpp: Ditto. |
| * inspector/agents/InspectorPageAgent.h: Ditto. |
| |
| 2018-02-15 Chris Dumez <cdumez@apple.com> |
| |
| Flaky Test: imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html |
| https://bugs.webkit.org/show_bug.cgi?id=182270 |
| <rdar://problem/36904314> |
| |
| Reviewed by Antti Koivisto. |
| |
| No new tests, already covered by existing tests that crash flakily on the bots. |
| |
| * loader/ThreadableLoaderClientWrapper.h: |
| (WebCore::ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper): |
| isolate copy the initiator string as this object can be destroyed on a different thread. This was |
| causing the test to flakily crash as well when destroying ThreadLocalData. |
| |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (scheduledWithCustomRunLoopMode): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): |
| Fix thread safety issue in callFunctionOnMainThread. This function is called from a background thread |
| to get to the main thread. However, it relied on m_handle which would get nullified on the main thread |
| by detachHandle when the ResourceHandle is destroyed. Fix the issue by not relying on m_handle anymore. |
| |
| (-[WebCoreResourceHandleAsOperationQueueDelegate initWithHandle:messageQueue:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]): |
| - Go back to using autorelease() instead of get() for the returned objects to match the code pre-r224522. |
| - Dispatch the protectedSelf variables that were added in r227073 to the main thread to make sure we do |
| not get destroyed on the background thread when protectedSelf is the last strong reference to self. |
| Destroying the WebCoreResourceHandleAsOperationQueueDelegate on the background safe is unsafe due to |
| its m_messageQueue data member which contains lambdas that may capture anything. |
| - Add a Lock to protect against detachHandle getting called on the main thread and nulling out |
| m_handle / m_requestResult / m_cachedResponseResult while the background thread may be accessing |
| them. |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTableRow::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182838 |
| <rdar://problem/37580762> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderTableRow.cpp: |
| (WebCore::RenderTableRow::didInsertTableCell): |
| (WebCore::RenderTableRow::addChild): Deleted. |
| * rendering/RenderTableRow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::insertChildToRenderTableRow): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| |
| 2018-02-15 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure that changing the timing model updates styles synchronously |
| https://bugs.webkit.org/show_bug.cgi?id=182836 |
| |
| Reviewed by Dean Jackson. |
| |
| We did not invalidate the timing model when properties of an effect's timing object changed |
| and even when we did invalidate the timing model, we did not update styles on effect targets |
| synchronously, only scheduling such updates for the next animation frame. |
| |
| In this patch we expose the effect on the timing object such that changing timing properties |
| can notify the effect of a change in the timing model, which can then be forwarded to the |
| animation (which already informs its timeline, if any). |
| |
| Additionally, when an animation's timing model has changed, we now invalidate the effect, which |
| will update styles synchronously. |
| |
| This produces a number of progressions in WPT tests. |
| |
| * animation/AnimationEffectReadOnly.cpp: |
| (WebCore::AnimationEffectReadOnly::AnimationEffectReadOnly): Set the timing object's effect upon |
| effect construction. |
| (WebCore::AnimationEffectReadOnly::~AnimationEffectReadOnly): Set the timing object's effect to |
| null upon effect destruction. |
| (WebCore::AnimationEffectReadOnly::timingDidChange): Notify the animation (if any) that its timing |
| model changed following a change in the timing properties. |
| * animation/AnimationEffectReadOnly.h: Add a new virtual invalidate() method that subclasses can |
| override to implement invalidation behavior when the animation finds out its timing model changed. |
| * animation/AnimationEffectTimingReadOnly.cpp: Notify the effect when a property changes such |
| that it may notify its animation of a timing model change. |
| (WebCore::AnimationEffectTimingReadOnly::propertyDidChange): |
| (WebCore::AnimationEffectTimingReadOnly::setIterationStart): |
| (WebCore::AnimationEffectTimingReadOnly::setIterations): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsDuration): |
| (WebCore::AnimationEffectTimingReadOnly::setEasing): |
| (WebCore::AnimationEffectTimingReadOnly::setDelay): |
| (WebCore::AnimationEffectTimingReadOnly::setEndDelay): |
| (WebCore::AnimationEffectTimingReadOnly::setFill): |
| (WebCore::AnimationEffectTimingReadOnly::setIterationDuration): |
| (WebCore::AnimationEffectTimingReadOnly::setDirection): |
| * animation/AnimationEffectTimingReadOnly.h: |
| (WebCore::AnimationEffectTimingReadOnly::setEffect): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsDelay): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsEndDelay): |
| (WebCore::AnimationEffectTimingReadOnly::setDelay): Deleted. |
| (WebCore::AnimationEffectTimingReadOnly::setEndDelay): Deleted. |
| (WebCore::AnimationEffectTimingReadOnly::setFill): Deleted. |
| (WebCore::AnimationEffectTimingReadOnly::setIterationDuration): Deleted. |
| (WebCore::AnimationEffectTimingReadOnly::setDirection): Deleted. |
| * animation/AnimationTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange() |
| to align it with the new WebAnimation::timingModelDidChange() method. |
| (WebCore::AnimationTimeline::addAnimation): |
| (WebCore::AnimationTimeline::removeAnimation): |
| (WebCore::AnimationTimeline::setCurrentTime): |
| * animation/AnimationTimeline.h: |
| (WebCore::AnimationTimeline::timingModelDidChange): |
| (WebCore::AnimationTimeline::animationTimingModelDidChange): Deleted. |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::timingModelDidChange): |
| (WebCore::DocumentTimeline::updateAnimations): |
| (WebCore::DocumentTimeline::animationTimingModelDidChange): Deleted. |
| * animation/DocumentTimeline.h: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::invalidate): Override the invalidate() method to perform a synchronous |
| style update in order to ensure that timing properties are accounted for right as they change. |
| * animation/KeyframeEffectReadOnly.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::timingModelDidChange): Invalidate the effect and notify the timeline of a timing |
| model change when an animation is notified that its timing model has changed. |
| (WebCore::WebAnimation::setStartTime): |
| * animation/WebAnimation.h: |
| |
| 2018-02-15 Timothy Horton <timothy_horton@apple.com> |
| |
| Fix the build. |
| |
| * platform/ios/KeyEventCodesIOS.h: |
| |
| 2018-02-15 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Make sure WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can ingest older plist versions and not reset the database |
| https://bugs.webkit.org/show_bug.cgi?id=182812 |
| <rdar://problem/37511406> |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests. Tested manually between versions of Safari. |
| |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::decode): |
| Now only expects these fields for model version 11 or higher: |
| - topFrameUniqueRedirectsTo |
| - topFrameUniqueRedirectsFrom |
| - subresourceUniqueRedirectsFrom |
| - timesAccessedAsFirstPartyDueToUserInteraction |
| - timesAccessedAsFirstPartyDueToStorageAccessAPI |
| * loader/ResourceLoadStatistics.h: |
| |
| 2018-02-15 Tim Horton <timothy_horton@apple.com> |
| |
| Stop using EXCLUDED_SOURCE_FILE_NAMES for actual source files in WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=182822 |
| |
| Reviewed by Dan Bernstein. |
| |
| It's much easier to reason about things if xcconfigs don't apply extra |
| constraints to which source files actually build on a per-platform basis. |
| We should use #ifs instead like we usually do. |
| |
| * Configurations/WebCore.xcconfig: |
| * Modules/geolocation/ios/GeolocationPositionIOS.mm: |
| * accessibility/ios/AccessibilityObjectIOS.mm: |
| * accessibility/mac/AXObjectCacheMac.mm: |
| * accessibility/mac/AccessibilityObjectMac.mm: |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.h: |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| * dom/DataTransferMac.mm: |
| * editing/ios/DictationCommandIOS.cpp: |
| * editing/ios/DictationCommandIOS.h: |
| * editing/ios/EditorIOS.mm: |
| * editing/ios/WebContentReaderIOS.mm: |
| * editing/mac/EditorMac.mm: |
| * editing/mac/WebContentReaderMac.mm: |
| * page/ios/EventHandlerIOS.mm: |
| * page/ios/FrameIOS.mm: |
| * page/mac/EventHandlerMac.mm: |
| * page/scrolling/ios/ScrollingCoordinatorIOS.h: |
| * page/scrolling/ios/ScrollingCoordinatorIOS.mm: |
| * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: |
| * platform/ThreadCheck.h: |
| * platform/audio/ios/AudioDestinationIOS.h: |
| * platform/audio/ios/AudioFileReaderIOS.h: |
| * platform/audio/ios/MediaSessionManagerIOS.h: |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.h: |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: |
| * platform/graphics/ios/FontCacheIOS.mm: |
| * platform/graphics/ios/GraphicsContext3DIOS.h: |
| * platform/graphics/ios/IconIOS.mm: |
| * platform/graphics/mac/ColorMac.h: |
| * platform/graphics/mac/ColorMac.mm: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.h: |
| * platform/graphics/mac/IconMac.mm: |
| * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: |
| * platform/ios/CursorIOS.cpp: |
| * platform/ios/DeviceMotionClientIOS.h: |
| * platform/ios/DeviceOrientationClientIOS.h: |
| * platform/ios/EventLoopIOS.mm: |
| * platform/ios/KeyEventCodesIOS.h: |
| * platform/ios/LowPowerModeNotifierIOS.mm: |
| * platform/ios/PasteboardIOS.mm: |
| * platform/ios/PlatformEventFactoryIOS.h: |
| * platform/ios/PlatformEventFactoryIOS.mm: |
| * platform/ios/PlatformPasteboardIOS.mm: |
| * platform/ios/PlatformScreenIOS.mm: |
| * platform/ios/PlatformSpeechSynthesizerIOS.mm: |
| * platform/ios/RemoteCommandListenerIOS.h: |
| * platform/ios/RemoteCommandListenerIOS.mm: |
| * platform/ios/SSLKeyGeneratorIOS.cpp: |
| * platform/ios/ScrollAnimatorIOS.h: |
| * platform/ios/ScrollAnimatorIOS.mm: |
| * platform/ios/ScrollViewIOS.mm: |
| * platform/ios/ScrollbarThemeIOS.h: |
| * platform/ios/ScrollbarThemeIOS.mm: |
| * platform/ios/SystemMemoryIOS.cpp: |
| * platform/ios/ThemeIOS.h: |
| * platform/ios/ThemeIOS.mm: |
| * platform/ios/TileControllerMemoryHandlerIOS.cpp: |
| * platform/ios/TileControllerMemoryHandlerIOS.h: |
| * platform/ios/UserAgentIOS.mm: |
| * platform/ios/ValidationBubbleIOS.mm: |
| * platform/ios/WidgetIOS.mm: |
| * platform/mac/CursorMac.mm: |
| * platform/mac/EventLoopMac.mm: |
| * platform/mac/LocalCurrentGraphicsContext.h: |
| * platform/mac/LocalCurrentGraphicsContext.mm: |
| * platform/mac/NSScrollerImpDetails.h: |
| * platform/mac/NSScrollerImpDetails.mm: |
| * platform/mac/PasteboardMac.mm: |
| * platform/mac/PlatformEventFactoryMac.h: |
| * platform/mac/PlatformEventFactoryMac.mm: |
| * platform/mac/PlatformPasteboardMac.mm: |
| * platform/mac/PlatformScreenMac.mm: |
| * platform/mac/PlatformSpeechSynthesizerMac.mm: |
| * platform/mac/SSLKeyGeneratorMac.mm: |
| * platform/mac/ScrollViewMac.mm: |
| * platform/mac/ScrollbarThemeMac.h: |
| * platform/mac/ScrollbarThemeMac.mm: |
| * platform/mac/ThemeMac.h: |
| * platform/mac/ThemeMac.mm: |
| * platform/mac/ThreadCheck.mm: |
| * platform/mac/UserAgentMac.mm: |
| * platform/mac/WebCoreView.h: |
| * platform/mac/WebCoreView.m: |
| * platform/mac/WidgetMac.mm: |
| * platform/mediastream/ios/CoreAudioCaptureSourceIOS.h: |
| * platform/network/ios/NetworkStateNotifierIOS.mm: |
| * platform/network/ios/WebCoreURLResponseIOS.h: |
| * platform/network/ios/WebCoreURLResponseIOS.mm: |
| * platform/network/mac/NetworkStateNotifierMac.cpp: |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTableSection::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182835 |
| <rdar://problem/37579191> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderTableSection.cpp: |
| (WebCore::RenderTableSection::willInsertTableRow): |
| (WebCore::RenderTableSection::addChild): Deleted. |
| * rendering/RenderTableSection.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): Leftover from r228529. |
| (WebCore::RenderTreeBuilder::insertChildToRenderTable): Deleted. Leftover from r228529. |
| (WebCore::RenderTreeBuilder::insertChildToRenderTableSection): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTable::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182832 |
| <rdar://problem/37576362> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::willInsertTableColumn): |
| (WebCore::RenderTable::willInsertTableSection): |
| (WebCore::RenderTable::addChild): Deleted. |
| * rendering/RenderTable.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| |
| 2018-02-14 Darin Adler <darin@apple.com> |
| |
| Use std::make_unique instead of explicit calls to new and instead of writing create functions |
| https://bugs.webkit.org/show_bug.cgi?id=182821 |
| |
| Reviewed by Anders Carlsson. |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::createLinkPreloadResourceClient): Use std::make_unique insteadof create functions. |
| |
| * loader/LinkPreloadResourceClients.h: Make constructors public, get rid of create functions, |
| make overrides be private and final, get rid of unnecessary public default virtual destructors |
| that the compiler will generate correctly without anything explicit. |
| |
| * platform/encryptedmedia/clearkey/CDMClearKey.cpp: |
| (WebCore::CDMFactoryClearKey::createCDM): Use std::make_unique instead of std::unique_ptr/new. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): Use |
| std::make_unique instead of calling a create function. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): Ditto. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): Ditto. |
| |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h: Made the constructor |
| public and got rid of the create function. |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm: |
| (WebCore::VideoFullscreenLayerManager::create): Deleted. |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const): |
| Use std::make_unique instead of std::unique_ptr/new. |
| |
| 2018-02-15 Andy Estes <aestes@apple.com> |
| |
| Finish unifying Apple Pay and Payment Request sources |
| https://bugs.webkit.org/show_bug.cgi?id=182831 |
| |
| Reviewed by Keith Miller. |
| |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| HarfBuzzFace: rework cache entry reference holding |
| https://bugs.webkit.org/show_bug.cgi?id=182828 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Move the FaceCacheEntry and HarfBuzzFaceCache types into the |
| HarfBuzzFace class as CacheEntry and Cache, respectively. The Cache |
| singleton is also moved there. |
| |
| In the HarfBuzzFace constructor, we now don't increase the CacheEntry |
| reference, but instead just keep a reference to that object through |
| a RefPtr<CacheEntry> object. We don't need to retrieve the hb_face_t |
| object and the glyph cache HashMap in the constructor anymore, we just |
| retrieve them when necessary through that CacheEntry reference. |
| |
| In the destructor, that RefPtr<CacheEntry> object is nulled out before |
| the object in Cache is removed if that's where the final reference is |
| kept. |
| |
| * platform/graphics/harfbuzz/HarfBuzzFace.cpp: |
| (WebCore::HarfBuzzFace::CacheEntry::CacheEntry): |
| (WebCore::HarfBuzzFace::CacheEntry::~CacheEntry): |
| (WebCore::HarfBuzzFace::cache): |
| (WebCore::HarfBuzzFace::HarfBuzzFace): |
| (WebCore::HarfBuzzFace::~HarfBuzzFace): |
| (WebCore::HarfBuzzFace::setScriptForVerticalGlyphSubstitution): |
| (WebCore::FaceCacheEntry::create): Deleted. |
| (WebCore::FaceCacheEntry::~FaceCacheEntry): Deleted. |
| (WebCore::FaceCacheEntry::face): Deleted. |
| (WebCore::FaceCacheEntry::glyphCache): Deleted. |
| (WebCore::FaceCacheEntry::FaceCacheEntry): Deleted. |
| (WebCore::harfBuzzFaceCache): Deleted. |
| * platform/graphics/harfbuzz/HarfBuzzFace.h: |
| (WebCore::HarfBuzzFace::CacheEntry::create): |
| (WebCore::HarfBuzzFace::CacheEntry::face): |
| (WebCore::HarfBuzzFace::CacheEntry::glyphCache): |
| * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: |
| (WebCore::harfBuzzGetGlyph): |
| (WebCore::HarfBuzzFace::createFont): |
| |
| 2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| FontPlatformData::harfBuzzFace() should return a reference |
| https://bugs.webkit.org/show_bug.cgi?id=182825 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Have FontPlatformData::harfBuzzFace() return a reference instead of a |
| pointer, given that the returned HarfBuzzFace object cannot be null. |
| |
| Call-sites of FontPlatformData::harfBuzzFace() are adjusted. |
| OpenTypeMathData constructors are also changed to not rely on |
| preprocessor to correctly position the closing brace. |
| |
| * platform/graphics/FontPlatformData.h: |
| * platform/graphics/freetype/FontPlatformDataFreeType.cpp: |
| (WebCore::FontPlatformData::harfBuzzFace const): |
| * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: |
| (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): |
| * platform/graphics/opentype/OpenTypeMathData.cpp: |
| (WebCore::OpenTypeMathData::OpenTypeMathData): |
| |
| 2018-02-15 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Revisit the whole async model of task dispatching, timeout and aborting |
| https://bugs.webkit.org/show_bug.cgi?id=181946 |
| <rdar://problem/37258262> |
| |
| Reviewed by Chris Dumez. |
| |
| This patch changes the original async model from a work queue to IPC between WebProcess |
| and UIProcess. Since all authenticator operations must be handled in the UIProcess due |
| to sandboxing, this message passing IPC async model then surpasses the original multi |
| threading model. To cooperate that, a CredentialsMessenger class is then created and |
| all task dispatching code is moved thre. |
| |
| As an improvement over existing code, static functions from PublicKeyCredential are |
| moved to AuthenticatorManager. AuthenticatorManager is made as a singleton such that |
| when static functions are called, they could reach the CredentialsMessenger to interact |
| with UIProccess. CredentialsMessenger and AuthenticatorManager are separated so later |
| on when other Credential types are created, they can reuse the same IPC messenger. |
| |
| What's more, a mock CredentialsMessenger is then created to mock behaviors of UIProcess |
| for testing purpose. |
| |
| Covered by existing tests. |
| |
| * DerivedSources.make: |
| * Modules/credentialmanagement/BasicCredential.h: |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::CredentialsContainer): |
| (WebCore::CredentialsContainer::doesHaveSameOriginAsItsAncestors): |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::isCreate): |
| (WebCore::CredentialsContainer::PendingPromise::PendingPromise): Deleted. |
| (WebCore::CredentialsContainer::dispatchTask): Deleted. |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| (WebCore::CredentialsContainer::PendingPromise::create): Deleted. |
| * Modules/credentialmanagement/CredentialsMessenger.cpp: Added. |
| (WebCore::CredentialsMessenger::exceptionReply): |
| (WebCore::CredentialsMessenger::addCreationCompletionHandler): |
| (WebCore::CredentialsMessenger::takeCreationCompletionHandler): |
| (WebCore::CredentialsMessenger::addRequestCompletionHandler): |
| (WebCore::CredentialsMessenger::takeRequestCompletionHandler): |
| (WebCore::CredentialsMessenger::addQueryCompletionHandler): |
| (WebCore::CredentialsMessenger::takeQueryCompletionHandler): |
| (WebCore::getIdFromAttestationObject): |
| * Modules/credentialmanagement/CredentialsMessenger.h: Added. |
| (WebCore::CreationReturnBundle::CreationReturnBundle): |
| (WebCore::AssertionReturnBundle::AssertionReturnBundle): |
| (WebCore::CredentialsMessenger::weakPtrFactory const): |
| * Modules/webauthn/Authenticator.cpp: Removed. |
| * Modules/webauthn/Authenticator.h: Removed. |
| * Modules/webauthn/AuthenticatorManager.cpp: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.cpp. |
| (WebCore::AuthenticatorManagerInternal::produceClientDataJson): |
| (WebCore::AuthenticatorManagerInternal::produceClientDataJsonHash): |
| (WebCore::AuthenticatorManagerInternal::initTimer): |
| (WebCore::AuthenticatorManagerInternal::didTimerFire): |
| (WebCore::AuthenticatorManager::singleton): |
| (WebCore::AuthenticatorManager::setMessenger): |
| (WebCore::AuthenticatorManager::create const): |
| (WebCore::AuthenticatorManager::discoverFromExternalSource const): |
| * Modules/webauthn/AuthenticatorManager.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| * Modules/webauthn/AuthenticatorResponse.h: |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJson): Deleted. |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJsonHash): Deleted. |
| (WebCore::PublicKeyCredentialInternal::getIdFromAttestationObject): Deleted. |
| (WebCore::PublicKeyCredential::collectFromCredentialStore): Deleted. |
| (WebCore::PublicKeyCredential::discoverFromExternalSource): Deleted. |
| (WebCore::PublicKeyCredential::store): Deleted. |
| (WebCore::PublicKeyCredential::create): Deleted. |
| (WebCore::PublicKeyCredential::rawId const): Deleted. |
| (WebCore::PublicKeyCredential::response const): Deleted. |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * testing/Internals.cpp: |
| (WebCore::Internals::Internals): |
| (WebCore::Internals::mockCredentialsMessenger const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * testing/MockCredentialsMessenger.cpp: Added. |
| (WebCore::MockCredentialsMessenger::MockCredentialsMessenger): |
| (WebCore::MockCredentialsMessenger::~MockCredentialsMessenger): |
| (WebCore::MockCredentialsMessenger::setAttestationObject): |
| (WebCore::MockCredentialsMessenger::setAssertionReturnBundle): |
| (WebCore::MockCredentialsMessenger::makeCredential): |
| (WebCore::MockCredentialsMessenger::getAssertion): |
| (WebCore::MockCredentialsMessenger::makeCredentialReply): |
| (WebCore::MockCredentialsMessenger::getAssertionReply): |
| * testing/MockCredentialsMessenger.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| * testing/MockCredentialsMessenger.idl: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| |
| 2018-02-15 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderInline/RenderGrid::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182819 |
| <rdar://problem/37558187> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::addChild): Deleted. |
| * rendering/RenderGrid.h: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::addChild): Deleted. |
| * rendering/RenderInline.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::takeChild): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::insertChild): |
| |
| 2018-02-15 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] REGRESSION: Inline media controls are not disabled while in fullscreen on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=182830 |
| <rdar://problem/37537909> |
| |
| Reviewed by Eric Carlson. |
| |
| The test media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html |
| regressed when fixing webkit.org/b/182668 since we now started only caring about the presence of the "controls" |
| attribute to identify that WebKit media controls should be available. |
| |
| We now have a dedicated _shouldControlsBeAvailable() method which more clearly establishes the conditions under |
| which controls should be available and correctly disables them while in fullscreen on iOS, regardless of the |
| "controls" attribute value. |
| |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype._shouldControlsBeAvailable): |
| (MediaController.prototype._updateControlsAvailability): |
| |
| 2018-02-15 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228495. |
| |
| This caused mulitple perf tests to fail consistently. |
| |
| Reverted changeset: |
| |
| "Resource Load Statistics: Make sure |
| WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can |
| ingest older plist versions and not reset the database" |
| https://bugs.webkit.org/show_bug.cgi?id=182812 |
| https://trac.webkit.org/changeset/228495 |
| |
| 2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| Clean up HarfBuzzFaceCairo |
| https://bugs.webkit.org/show_bug.cgi?id=182824 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Clean up Cairo-specific bits of HarfBuzzFace implementation. |
| |
| HarfBuzzFontData is simplified, removing the constructor and turning the |
| cairo_scaled_font_t member into a RefPtr<>, tying the Cairo object's |
| lifetime to the lifetime of the HarfBuzzFontData instance. |
| |
| HarfBuzz font callbacks have the HarfBuzzFontData casting cleaned up, |
| casting the user data pointer straight into a HarfBuzzFontData reference |
| that's then used in the functions. HarfBuzzFontData member access is |
| also adjusted. |
| |
| HarfBuzzFace::createFace() now references the cairo_scaled_font_t object |
| that is then set as the user data pointer, with the destroy callback |
| that dereferences that object also specified. With hb_face_t being a |
| reference-counted object itself, this ensures the cairo_scaled_font_t |
| object doesn't get destroyed while hb_face_t is still alive. |
| |
| In HarfBuzzFace::createFont(), the hb_font_t creation is cleaned up, |
| with a C++ lambda used as the destroy callback. |
| |
| * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp: |
| (WebCore::harfBuzzGetGlyph): |
| (WebCore::harfBuzzGetGlyphHorizontalAdvance): |
| (WebCore::harfBuzzGetGlyphExtents): |
| (WebCore::harfBuzzCairoGetTable): |
| (WebCore::HarfBuzzFace::createFace): |
| (WebCore::HarfBuzzFace::createFont): |
| (WebCore::HarfBuzzFontData::HarfBuzzFontData): Deleted. |
| (WebCore::destroyHarfBuzzFontData): Deleted. |
| |
| 2018-02-15 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] WebVTT caps changed in GStreamer 1.14 |
| https://bugs.webkit.org/show_bug.cgi?id=182690 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Use |
| text/vtt caps only for GStreamer versions inferior or equal to |
| 1.12. In 1.13 (current git master) the VTT caps format changed to |
| application/x-subtitle-vtt. |
| |
| 2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
| |
| HarfBuzzFace should not be ref-counted |
| https://bugs.webkit.org/show_bug.cgi?id=182823 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The HarfBuzzFace objects shouldn't be copied along in FontPlatformData |
| copy assignment operator, which made it a requirement for that class to |
| be ref-counted. Cairo-based HarfBuzzFace implementation uses the |
| cairo_scaled_font_t object from FontPlatformData internally, but upon |
| FontPlatformData cloning that scaled font object could change, meaning |
| HarfBuzzFace object that's shared with another FontPlatformData object |
| would end up using a different cairo_scaled_font_t object from the one |
| that's been regenerated in the newly-cloned FontPlatformData object. |
| |
| Instead of ref-counting the HarfBuzzFace objects, they should be handled |
| in FontPlatformData through std::unique_ptr<>. In the FontPlatformData |
| copy assignment operator, the copy target's m_harfBuzzFace object is |
| nulled out, allowing the next harfBuzzFace() call to construct an |
| object that properly leverages the cairo_scaled_font_t object that could |
| have changed during cloning. |
| |
| * platform/graphics/FontPlatformData.h: |
| * platform/graphics/freetype/FontPlatformDataFreeType.cpp: |
| (WebCore::FontPlatformData::operator=): |
| (WebCore::FontPlatformData::harfBuzzFace const): |
| * platform/graphics/harfbuzz/HarfBuzzFace.h: |
| (WebCore::HarfBuzzFace::create): Deleted. |
| |
| 2018-02-14 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderMathMLFenced::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182817 |
| <rdar://problem/37556761> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/mathml/RenderMathMLFenced.cpp: |
| (WebCore::RenderMathMLFenced::addChild): Deleted. |
| * rendering/mathml/RenderMathMLFenced.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::insertChildToRenderMathMLFenced): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderMathML.cpp: |
| (WebCore::RenderTreeBuilder::MathML::insertChild): |
| |
| 2018-02-14 Antti Koivisto <antti@apple.com> |
| |
| Do sibling invalidation on mutation |
| https://bugs.webkit.org/show_bug.cgi?id=182809 |
| |
| Reviewed by Zalan Bujtas. |
| |
| We used to invalidate siblings for sibling combinators and nth-pseudo classes during style resolution tree walk. |
| This would consider any element with invalid style a reason to invalidate siblings too. However we now do |
| accurate invalidation on class and attribute changes and this approach ends up invalidating too much. |
| |
| This patch sibling style invalidation to mutation time and removes invalidation code from style resolution tree walk. |
| |
| * dom/Element.cpp: |
| (WebCore::invalidateSiblingsIfNeeded): |
| |
| Helper to invalidate siblings. |
| |
| (WebCore::Element::invalidateStyle): |
| (WebCore::Element::invalidateStyleAndLayerComposition): |
| (WebCore::Element::invalidateStyleForSubtree): |
| (WebCore::Element::invalidateStyleAndRenderersForSubtree): |
| |
| Invalidate siblings if needed based on affectsNextSibling/affectedByPreviousSibling bits. |
| |
| (WebCore::Element::invalidateStyleInternal): |
| (WebCore::Element::invalidateStyleForSubtreeInternal): |
| |
| Add "internal" versions that don't invalidate siblings. These are used by StyleInvalidator for accurate invalidation. |
| |
| * dom/Element.h: |
| * style/StyleInvalidator.cpp: |
| (WebCore::Style::Invalidator::invalidateIfNeeded): |
| (WebCore::Style::Invalidator::invalidateStyle): |
| |
| Use internal invalidation functions. |
| |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::resetStyleForNonRenderedDescendants): |
| (WebCore::Style::TreeResolver::resolveComposedTree): |
| |
| Remove sibling invalidation. |
| |
| * style/StyleTreeResolver.h: |
| |
| 2018-02-14 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Make sure WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can ingest older plist versions and not reset the database |
| https://bugs.webkit.org/show_bug.cgi?id=182812 |
| <rdar://problem/37511406> |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests. Tested manually between versions of Safari. |
| |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::decode): |
| Now only expects these fields for model version 11 or higher: |
| - topFrameUniqueRedirectsTo |
| - topFrameUniqueRedirectsFrom |
| - subresourceUniqueRedirectsFrom |
| - timesAccessedAsFirstPartyDueToUserInteraction |
| - timesAccessedAsFirstPartyDueToStorageAccessAPI |
| * loader/ResourceLoadStatistics.h: |
| |
| 2018-02-14 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [WinCairo] Fix several build warnings under WebCore/platform |
| https://bugs.webkit.org/show_bug.cgi?id=182802 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| Warning C4101 'fileModificationDate': unreferenced local variable |
| Source\WebCore\platform\network\curl\CurlCacheEntry.cpp:279 |
| |
| Warning C4239 nonstandard extension used: 'argument': conversion from 'WTF::String' |
| to 'WTF::String &' |
| Source\WebCore\platform\text\win\LocaleWin.cpp:75 |
| Source\WebCore\platform\text\win\LocaleWin.cpp:77 |
| |
| Warning C4838 conversion from 'UINT' to 'CLIPFORMAT' requires a narrowing conversion |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:170 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:325 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:332 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:351 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:358 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:366 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:373 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:380 |
| Source\WebCore\platform\win\ClipboardUtilitiesWin.cpp:387 |
| |
| * platform/network/curl/CurlCacheEntry.cpp: |
| (WebCore::CurlCacheEntry::parseResponseHeaders): |
| * platform/text/win/LocaleWin.cpp: |
| (WebCore::LCIDFromLocaleInternal): |
| * platform/win/ClipboardUtilitiesWin.cpp: |
| (WebCore::registerClipboardFormat): |
| (WebCore::texthtmlFormat): |
| (WebCore::urlWFormat): |
| (WebCore::urlFormat): |
| (WebCore::filenameWFormat): |
| (WebCore::filenameFormat): |
| (WebCore::htmlFormat): |
| (WebCore::smartPasteFormat): |
| (WebCore::fileDescriptorFormat): |
| (WebCore::fileContentFormatZero): |
| |
| 2018-02-14 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderSVG*::addChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182811 |
| <rdar://problem/37549714> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/svg/RenderSVGContainer.cpp: |
| (WebCore::RenderSVGContainer::addChild): Deleted. |
| * rendering/svg/RenderSVGContainer.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::addChild): Deleted. |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::addChild): Deleted. |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::addChild): Deleted. |
| * rendering/svg/RenderSVGText.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChild): |
| (WebCore::RenderTreeBuilder::insertChildToSVGContainer): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToSVGInline): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToSVGRoot): Deleted. |
| (WebCore::RenderTreeBuilder::insertChildToSVGText): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-14 Daniel Bates <dabates@apple.com> |
| |
| Disallow cross-origin subresources from asking for credentials |
| https://bugs.webkit.org/show_bug.cgi?id=182579 |
| <rdar://problem/36162271> |
| |
| Reviewed by Andy Estes. |
| |
| Prompts for credentials to load cross-origin subresources are typically seen as unexpected |
| by a person that navigates to- or interacts with- a web page. The cross-origin and implicit |
| loading nature of these subresources makes asking for credentials questionable because they |
| are not being served by the same origin of the page a person explicitly loaded and are not |
| guaranteed to correspond to an explicit user interaction other than the initial load of the |
| page. We know that subresources that ask for credentials can be abused as part of a phishing |
| attack. It seems reasonable to disallow cross-origin subresources from asking for credentials |
| due to their questionable nature and the risk for abuse. This will also make the behavior |
| of WebKit match the behavior of Chrome. |
| |
| Tests: http/tests/media/video-auth-with-allowCrossOriginSubresourcesToAskForCredentials.html |
| http/tests/security/basic-auth-subresource.html |
| http/tests/security/mixedContent/insecure-basic-auth-image-allowCrossOriginSubresourcesToAskForCredentials.https.html |
| http/tests/security/mixedContent/insecure-image-redirects-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.html |
| http/tests/security/mixedContent/secure-redirect-to-insecure-redirect-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html |
| http/tests/security/mixedContent/secure-redirect-to-secure-redirect-to-basic-auth-insecure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html |
| http/tests/security/mixedContent/secure-redirect-to-secure-redirect-to-basic-auth-secure-image-allowCrossOriginSubresourcesToAskForCredentials.https.html |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::isSubresourceLoader const): Formerly non-const. |
| (WebCore::ResourceLoader::shouldAllowResourceToAskForCredentials const): Added. |
| (WebCore::ResourceLoader::didBlockAuthenticationChallenge): Emit Web Inspector console message if |
| the authentication challenge was blocked because the request is cross origin. |
| (WebCore::ResourceLoader::isAllowedToAskUserForCredentials const): Disallow a cross-origin |
| request from prompting for credentials. |
| (WebCore::ResourceLoader::isSubresourceLoader): Deleted; made const. |
| * loader/ResourceLoader.h: |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::SubresourceLoader): Update ResourceLoader state so that block cross-origin |
| subresources from prompting for credentials, if applicable. |
| (WebCore::SubresourceLoader::isSubresourceLoader const): Formerly non-const. |
| (WebCore::SubresourceLoader::isSubresourceLoader): Deleted; made const. |
| * loader/SubresourceLoader.h: |
| * page/Settings.yaml: Add setting allowCrossOriginSubresourcesToAskForCredentials (defaults: false - |
| do not allow cross origin subresources to ask for credentials). |
| |
| 2018-02-14 Don Olmstead <don.olmstead@sony.com> |
| |
| WebCore headers should not include config.h or PlatformExportMacros.h |
| https://bugs.webkit.org/show_bug.cgi?id=182799 |
| |
| Reviewed by Darin Adler. |
| |
| No new tests. No change in behavior. |
| |
| * Modules/speech/SpeechSynthesis.h: |
| * bindings/js/JSDOMGlobalObject.h: |
| * contentextensions/ContentExtensionError.h: |
| * contentextensions/DFA.h: |
| * dom/ContextDestructionObserver.h: |
| * dom/DeviceOrientationClient.h: |
| * dom/DeviceOrientationData.h: |
| * editing/cocoa/HTMLConverter.h: |
| * loader/FrameLoaderStateMachine.h: |
| * loader/cache/CachedResourceHandle.h: |
| * page/FrameDestructionObserver.h: |
| * page/RuntimeEnabledFeatures.h: |
| * platform/URL.h: |
| * platform/audio/AudioHardwareListener.h: |
| * platform/audio/AudioSession.h: |
| * platform/graphics/Color.h: |
| * platform/graphics/IntSize.h: |
| * platform/graphics/transforms/AffineTransform.h: |
| * platform/graphics/win/LocalWindowsContext.h: |
| * platform/network/CacheValidation.h: |
| * platform/network/CredentialBase.h: |
| * platform/network/ResourceHandleClient.h: |
| * platform/network/cf/CertificateInfo.h: |
| |
| 2018-02-12 Ryosuke Niwa <rniwa@webkit.org> |
| |
| REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails |
| https://bugs.webkit.org/show_bug.cgi?id=182564 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Unfortunately, r228352 was inadaquate to fix copying & pasting of a list item from Microsoft Word into TinyMCE |
| in older verions of TinyMCE. This patch amends the approach taken by r228352 to make it work across the board |
| as well as unbreak GMail. |
| |
| Turns out older versions of TinyMCE can't handle list items when computed styles are added as inline style |
| declarations by WebKit. To make this work, avoid adding any computed styles as inline styles within mso-list |
| conditionals as well as any p elements whose style attribute contains "mso-list" property. We would instead |
| preserve these styles by keeping Microsoft Word's CSS style rules in addition to special @list rules. |
| |
| In addition, not keeping the style element of Microsoft Word in a head element as done in r228352 causes some |
| versions of TinyMCE to treat it as regular text, and inserting a bunch of @list rules as user visible text. |
| To work around this problem, we serialize the style rules as a comment (<!-- ~ -->) within a head element. |
| |
| Furthermore, when Microsoft Word is in the compatibility mode, it does not generate xmlns:o as the first xmlns |
| declaration. Generalized the code to detect Microsoft Word's HTML declaration by looking for xmlns:o and xmlns:w |
| xmls declarations. |
| |
| Finally, it turns out that Gmail has its own handling of list items copy & pasted from Microsoft Word, and also |
| needs this quirks but in the pasted HTML, not the one exposed in getData. As such, this patch also enables the |
| MSO list quirks in the pasted content as well as the one exposed in getData. |
| |
| Tests: PasteHTML.PreservesMSOList |
| PasteHTML.PreservesMSOListInCompatibilityMode |
| PasteHTML.StripsMSOListWhenMissingMSOHTMLElement |
| PasteWebArchive.PreservesMSOList |
| PasteWebArchive.PreservesMSOListInCompatibilityMode |
| PasteWebArchive.StripsMSOListWhenMissingMSOHTMLElement |
| |
| * editing/HTMLInterchange.h: |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::removeHeadContents): Don't remove the special style element needed for the MSO list quirks since we |
| don't keep the computed style as inline styles in this case. |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readWebArchive): Enable the quirks in the pasted content as well as opposed to |
| just in DataTransfer API exposed to the JavaScript. |
| (WebCore::WebContentReader::readHTML): Ditto. |
| * editing/markup.cpp: |
| (WebCore::shouldPreserveMSOLists): Added. Generalized the logic to detect a Microsoft Word document. |
| more xmlns declarations. |
| (WebCore::StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement): Added. |
| (WebCore::StyledMarkupAccumulator::appendElement): Don't generate the second style element here for elements |
| with most-list properties. Instead, avoid overriding inline styles with computed styles altogether. |
| (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Include the style rules as well as list rules |
| and wrap the "style" element in a "head" element to make it compatible with older versions of TinyMCE. |
| |
| 2018-02-14 Dean Jackson <dino@apple.com> |
| |
| CrashTracer: com.apple.WebKit.WebContent at com.apple.WebCore: WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot + 618 |
| https://bugs.webkit.org/show_bug.cgi?id=182798 |
| <rdar://problem/23337253> |
| |
| Reviewed by Eric Carlson. |
| |
| Speculative fix for a crash in HTMLPlugInImageElement::didAddUserAgentShadowRoot. |
| The guess is that the m_swapRendererTimer is set, and the display state changes to |
| something that does not require a shadow root, but before the timer fires. |
| Fix this by ensuring that the timer is reset on every display state change. |
| |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::HTMLPlugInElement::setDisplayState): Guard for sets that wouldn't |
| actually change value, and make sure we always reset the timer. |
| |
| 2018-02-14 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Don't use arrays as values for localisable strings |
| https://bugs.webkit.org/show_bug.cgi?id=182791 |
| <rdar://problem/36007262> |
| |
| Reviewed by Dean Jackson. |
| |
| Localization tools expect localizable strings to be specified as key-value pairs where both the key and the pair |
| are plain strings. For the skip buttons, we used an array value to specify a replacement string. We now perform |
| this task in code with a centralized SkipSeconds constant defining the skip amount. |
| |
| * English.lproj/modern-media-controls-localized-strings.js: |
| * Modules/modern-media-controls/controls/icon-service.js: |
| * Modules/modern-media-controls/main.js: |
| (UIString): |
| * Modules/modern-media-controls/media/skip-back-support.js: |
| (SkipBackSupport.prototype.buttonWasPressed): |
| * Modules/modern-media-controls/media/skip-forward-support.js: |
| (SkipForwardSupport.prototype.buttonWasPressed): |
| |
| 2018-02-14 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r228444. |
| |
| Introduced API and Layout test failures. |
| |
| Reverted changeset: |
| |
| "[WebAuthN] Revisit the whole async model of task dispatching, |
| timeout and aborting" |
| https://bugs.webkit.org/show_bug.cgi?id=181946 |
| https://trac.webkit.org/changeset/228444 |
| |
| 2018-02-14 Brent Fulgham <bfulgham@apple.com> |
| |
| Confirm proper thread in UserGestureIndicator constructor |
| https://bugs.webkit.org/show_bug.cgi?id=175980 |
| |
| Reviewed by Daniel Bates. |
| |
| Document is a main-thread object. If we enter the UserGestureIndicator constructor |
| on a non-main thread, we should ASSERT, not return silently. |
| |
| * dom/UserGestureIndicator.cpp: |
| (WebCore::UserGestureIndicator::UserGestureIndicator): |
| |
| 2018-02-14 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Remove redundant RenderTreeBuilder methods |
| https://bugs.webkit.org/show_bug.cgi?id=182770 |
| <rdar://problem/37525627> |
| |
| Reviewed by Daniel Bates. |
| |
| No change in functionality. |
| |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::dropAnonymousBoxChild): Deleted. |
| (WebCore::RenderTreeBuilder::moveRubyChildren): Deleted. |
| (WebCore::RenderTreeBuilder::resolveMovedChildForMultiColumnFlow): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChild): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| |
| 2018-02-14 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182762 |
| <rdar://problem/37523756> |
| |
| Reviewed by Daniel Bates. |
| |
| This patch removes the remaining takeChild() related mutation logic from the renderers. |
| |
| No change in functionality. |
| |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::moveChildTo): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::takeChild): Deleted. |
| (WebCore::RenderElement::takeChildInternal): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/RenderObject.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderElement): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::removeLeftoverAnonymousBlock): |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::splitFlow): |
| (WebCore::RenderTreeBuilder::Inline::splitInlines): |
| (WebCore::RenderTreeBuilder::Inline::childBecameNonInline): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::takeChild): Leftover from the previous patch. |
| |
| 2018-02-13 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION(r228313): Membuster | macOS | All Devices | 1.5 MB |
| https://bugs.webkit.org/show_bug.cgi?id=182744 |
| <rdar://problem/37463770> |
| |
| Reviewed by Zalan Bujtas. |
| |
| We need to respect low memory notifications explicitly now that the compiled selectors are not part of RuleData. |
| |
| * css/StyleRule.cpp: |
| (WebCore::StyleRule::StyleRule): |
| * css/StyleRule.h: |
| |
| Switch to std::unique_ptr<[]> from Vector to avoid unnecessary bloat. |
| |
| * css/StyleSheetContents.cpp: |
| (WebCore::traverseRulesInVector): |
| (WebCore::StyleSheetContents::traverseRules const): |
| |
| Add a rule traversal function, similar to the existing traverseSubresources. |
| |
| (WebCore::StyleSheetContents::traverseSubresources const): |
| |
| Use traverseRules to implement traverseSubresources. |
| |
| (WebCore::traverseSubresourcesInRules): Deleted. |
| * css/StyleSheetContents.h: |
| * page/MemoryRelease.cpp: |
| (WebCore::releaseCriticalMemory): |
| * style/StyleScope.cpp: |
| (WebCore::Style::Scope::releaseMemory): |
| |
| Release memory for compiled selectors on memory notification. |
| |
| * style/StyleScope.h: |
| |
| 2018-02-13 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r228431. |
| https://bugs.webkit.org/show_bug.cgi?id=182766 |
| |
| Regressed CMake build stability (Requested by dolmstead on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "[CMake] Make WebCore headers copies" |
| https://bugs.webkit.org/show_bug.cgi?id=182512 |
| https://trac.webkit.org/changeset/228431 |
| |
| 2018-02-13 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r228437, r228439, and r228440. |
| https://bugs.webkit.org/show_bug.cgi?id=182756 |
| |
| Introduced LayoutTest failures (Requested by ryanhadd_ on |
| #webkit). |
| |
| Reverted changesets: |
| |
| "[Web Animations] Make KeyframeEffect target nullable and |
| read-write" |
| https://bugs.webkit.org/show_bug.cgi?id=182741 |
| https://trac.webkit.org/changeset/228437 |
| |
| "Unreviewed attempt to fix build after r228437." |
| https://trac.webkit.org/changeset/228439 |
| |
| "[Web Animations] Make KeyframeEffect target nullable and |
| read-write" |
| https://bugs.webkit.org/show_bug.cgi?id=182741 |
| https://trac.webkit.org/changeset/228440 |
| |
| 2018-02-13 Antoine Quint <graouts@apple.com> |
| |
| Removing the controls attribute from a <video> element does not tear down the controls shadow DOM nor cancel event listeners. |
| https://bugs.webkit.org/show_bug.cgi?id=182668 |
| <rdar://problem/33793004> |
| |
| Reviewed by Jer Noble. |
| |
| When controls were turned off for inline media players, we would remove all media controls elements from the shadow root, |
| but we would nevertheless continue to listen to media events and, as a result, update properties of the media controls |
| which would lead to requestAnimationFrame() calls that would update the detached DOM nodes. |
| |
| We now only listent to media events if controls are turned on. |
| |
| * Modules/modern-media-controls/media/controls-visibility-support.js: |
| (ControlsVisibilitySupport.prototype.enable): Remove the mutation observer from ControlsVisibilitySupport since observing |
| changes to the controls attribute is now performed directly in MediaController. We need to make sure that we update the |
| controls however since fadesWhileIdle is turned off in the disable() call to ensure that the auto-hide behavior is disabled |
| as well. |
| (ControlsVisibilitySupport.prototype.disable): Disable the auto-hide controller as well. |
| (ControlsVisibilitySupport.prototype._updateControls): Remove code that has now been moved into MediaController._updateControlsAvailability(). |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController): Listen to the "play" event on the media so that we call _updateControlsAvailability() in this situation to account for |
| shouldForceControlsDisplay on MediaControlsHost. We also register for a mutation observer to track when the controls attribute availability |
| changes in which case we want to call _updateControlsAvailability() as well. |
| (MediaController.prototype.handleEvent): Call _updateControlsAvailability() instead of _updateiOSFullscreenProperties() which has been renamed |
| and expanded. |
| (MediaController.prototype._updateControlsIfNeeded): Call _updateControlsAvailability() after controls have been updated. |
| (MediaController.prototype._updateControlsAvailability): We now disable supporting media controller objects when we know that controls should |
| be hidden in all cases except when in fullscreen on macOS. |
| (MediaController.prototype._updateiOSFullscreenProperties): Deleted. |
| * Modules/modern-media-controls/media/placard-support.js: |
| (PlacardSupport.prototype.disable): Only allow the media events required to track when to show placards when in fullscreen since inline media |
| players need to show the AirPlay and picture-in-picture placards even when controls are disabled. |
| |
| 2018-02-13 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Revisit the whole async model of task dispatching, timeout and aborting |
| https://bugs.webkit.org/show_bug.cgi?id=181946 |
| <rdar://problem/37258262> |
| |
| Reviewed by Chris Dumez. |
| |
| This patch changes the original async model from a work queue to IPC between WebProcess |
| and UIProcess. Since all authenticator operations must be handled in the UIProcess due |
| to sandboxing, this message passing IPC async model then surpasses the original multi |
| threading model. To cooperate that, a CredentialsMessenger class is then created and |
| all task dispatching code is moved thre. |
| |
| As an improvement over existing code, static functions from PublicKeyCredential are |
| moved to AuthenticatorManager. AuthenticatorManager is made as a singleton such that |
| when static functions are called, they could reach the CredentialsMessenger to interact |
| with UIProccess. CredentialsMessenger and AuthenticatorManager are separated so later |
| on when other Credential types are created, they can reuse the same IPC messenger. |
| |
| What's more, a mock CredentialsMessenger is then created to mock behaviors of UIProcess |
| for testing purpose. |
| |
| Covered by existing tests. |
| |
| * DerivedSources.make: |
| * Modules/credentialmanagement/BasicCredential.h: |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::CredentialsContainer): |
| (WebCore::CredentialsContainer::doesHaveSameOriginAsItsAncestors): |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::isCreate): |
| (WebCore::CredentialsContainer::PendingPromise::PendingPromise): Deleted. |
| (WebCore::CredentialsContainer::dispatchTask): Deleted. |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| (WebCore::CredentialsContainer::PendingPromise::create): Deleted. |
| * Modules/credentialmanagement/CredentialsMessenger.cpp: Added. |
| (WebCore::CredentialsMessenger::exceptionReply): |
| (WebCore::CredentialsMessenger::addCreationCompletionHandler): |
| (WebCore::CredentialsMessenger::takeCreationCompletionHandler): |
| (WebCore::CredentialsMessenger::addRequestCompletionHandler): |
| (WebCore::CredentialsMessenger::takeRequestCompletionHandler): |
| (WebCore::CredentialsMessenger::addQueryCompletionHandler): |
| (WebCore::CredentialsMessenger::takeQueryCompletionHandler): |
| (WebCore::getIdFromAttestationObject): |
| * Modules/credentialmanagement/CredentialsMessenger.h: Added. |
| (WebCore::CreationReturnBundle::CreationReturnBundle): |
| (WebCore::AssertionReturnBundle::AssertionReturnBundle): |
| (WebCore::CredentialsMessenger::weakPtrFactory const): |
| * Modules/webauthn/Authenticator.cpp: Removed. |
| * Modules/webauthn/Authenticator.h: Removed. |
| * Modules/webauthn/AuthenticatorManager.cpp: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.cpp. |
| (WebCore::AuthenticatorManagerInternal::produceClientDataJson): |
| (WebCore::AuthenticatorManagerInternal::produceClientDataJsonHash): |
| (WebCore::AuthenticatorManagerInternal::initTimer): |
| (WebCore::AuthenticatorManagerInternal::didTimerFire): |
| (WebCore::AuthenticatorManager::singleton): |
| (WebCore::AuthenticatorManager::setMessenger): |
| (WebCore::AuthenticatorManager::create const): |
| (WebCore::AuthenticatorManager::discoverFromExternalSource const): |
| * Modules/webauthn/AuthenticatorManager.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| * Modules/webauthn/AuthenticatorResponse.h: |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJson): Deleted. |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJsonHash): Deleted. |
| (WebCore::PublicKeyCredentialInternal::getIdFromAttestationObject): Deleted. |
| (WebCore::PublicKeyCredential::collectFromCredentialStore): Deleted. |
| (WebCore::PublicKeyCredential::discoverFromExternalSource): Deleted. |
| (WebCore::PublicKeyCredential::store): Deleted. |
| (WebCore::PublicKeyCredential::create): Deleted. |
| (WebCore::PublicKeyCredential::rawId const): Deleted. |
| (WebCore::PublicKeyCredential::response const): Deleted. |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * testing/Internals.cpp: |
| (WebCore::Internals::Internals): |
| (WebCore::Internals::mockCredentialsMessenger const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * testing/MockCredentialsMessenger.cpp: Added. |
| (WebCore::MockCredentialsMessenger::setAttestationObject): |
| (WebCore::MockCredentialsMessenger::setAssertionReturnBundle): |
| (WebCore::MockCredentialsMessenger::makeCredential): |
| (WebCore::MockCredentialsMessenger::getAssertion): |
| (WebCore::MockCredentialsMessenger::makeCredentialReply): |
| (WebCore::MockCredentialsMessenger::getAssertionReply): |
| * testing/MockCredentialsMessenger.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| * testing/MockCredentialsMessenger.idl: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h. |
| |
| 2018-02-13 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182746 |
| <rdar://problem/37512871> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::takeChild): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderMenuList): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderButton): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderGrid): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderBlock): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| |
| 2018-02-13 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Make KeyframeEffect target nullable and read-write |
| https://bugs.webkit.org/show_bug.cgi?id=182741 |
| |
| Additional unreviewed attempt to fix build after r228437. |
| |
| * dom/Element.h: |
| |
| 2018-02-13 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix build after r228437. |
| |
| * dom/Element.h: |
| |
| 2018-02-13 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Make KeyframeEffect target nullable and read-write |
| https://bugs.webkit.org/show_bug.cgi?id=182741 |
| |
| Reviewed by Dean Jackson. |
| |
| We used to completely disregard null targets, for instance not parsing keyframes, but targets |
| can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL |
| for KeyframeEffect to mark the target property as read-write and update the implementation |
| to correctly handle null targets by creating a StyleResolver based on the ScriptExecutionContext's |
| document's document element (the <html> element in practice) and not the target itself, since it |
| can be null. |
| |
| This revealed a few issues in our implementation by allowing more WPT tests to run. So we also |
| ensure that: |
| |
| - we don't crash when parsing font-related properties by calling update() on the generated |
| RenderStyle's FontCascade when parsing keyframes. |
| |
| - CSS properties are provided as camel-case and not as hyphenated form |
| |
| - values provided in keyframes dictionaries are only read for valid properties |
| |
| - styles for effect targets are invalidated as soon as the timing model for that animation |
| is changed |
| |
| We also rename AnimationTimeline::animationTimingModelDidChange() to AnimationTimeline::timingModelDidChange() |
| since the previous name didn't add useful information and we're adding a new WebAnimation::timingModelDidChange() |
| method, so having the two methods have a similar name made more sense. |
| |
| * animation/Animatable.idl: Call animate() with a ScriptExecutionContext rather than a ScriptState |
| so that the ScriptExecutionContext can be passed to the KeyframeEffectReadOnly constructor. |
| * animation/AnimationEffectReadOnly.h: Add a new invalidate() method, designed to be subclassed, that |
| is called when the timing model for this effect or owning animation has changed. |
| * animation/AnimationTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange(). |
| (WebCore::AnimationTimeline::addAnimation): |
| (WebCore::AnimationTimeline::removeAnimation): |
| (WebCore::AnimationTimeline::setCurrentTime): |
| * animation/AnimationTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange(). |
| (WebCore::AnimationTimeline::timingModelDidChange): |
| (WebCore::AnimationTimeline::animationTimingModelDidChange): Deleted. |
| * animation/DocumentTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange(). |
| (WebCore::DocumentTimeline::timingModelDidChange): |
| (WebCore::DocumentTimeline::updateAnimations): |
| (WebCore::DocumentTimeline::animationTimingModelDidChange): Deleted. |
| * animation/DocumentTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange(). |
| * animation/KeyframeEffect.cpp: Expect a ScriptExecutionContext rather than a ScriptState. |
| (WebCore::KeyframeEffect::create): |
| (WebCore::KeyframeEffect::setKeyframes): |
| * animation/KeyframeEffect.h: Expect a ScriptExecutionContext rather than a ScriptState. |
| * animation/KeyframeEffect.idl: Expect a ScriptExecutionContext rather than a ScriptState and make the |
| target property read-write. |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName |
| so that it can call that function. We also check that we reject CSS properties that are not provided in |
| camel-case form (eg. "font-size" vs. "fontSize"). |
| (WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name |
| maps to a valid CSS property. |
| (WebCore::KeyframeEffectReadOnly::create): Expect a ScriptExecutionContext rather than a ScriptState. |
| (WebCore::KeyframeEffectReadOnly::processKeyframes): Expect a ScriptExecutionContext rather than a ScriptState |
| and use the context's document to get an HTML element to create a StyleResolver. We also call update() on the |
| generated RenderStyle's FontCascade since otherwise we would hit an ASSERT in FontCascade when parsing font-related |
| CSS properties. |
| (WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and invalidate |
| the style of the new target and the old targets, if any. |
| (WebCore::KeyframeEffectReadOnly::invalidate): Invalidate the target's style. This method is called by setTarget() |
| and WebAnimation::timingModelDidChange(). |
| * animation/KeyframeEffectReadOnly.h: Expect a ScriptExecutionContext rather than a ScriptState. |
| * animation/KeyframeEffectReadOnly.idl: Expect a ScriptExecutionContext rather than a ScriptState. |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::timingModelDidChange): We add this new method such that any place in WebAnimation where we |
| know the animation's timing model has changed we can invalidate the associated effect, if any, as well as notify |
| the timeline, if any. We used to only notify the timeline and, as a result, only invalidate the associated effect |
| in the next display monitor refresh. |
| (WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget() to inform |
| the animation of the previous effect target and the new one upon a target change. This allows us to forward this information |
| onto the timeline so that we correctly add or remove the targets from the list of animated elements. |
| (WebCore::WebAnimation::setStartTime): |
| * animation/WebAnimation.h: Expose the new effectTargetDidChange() and timingModelDidChange() methods. |
| * dom/Element.cpp: Expect a ScriptExecutionContext rather than a ScriptState. |
| (WebCore::Element::animate): |
| * dom/Element.h: Expect a ScriptExecutionContext rather than a ScriptState. |
| |
| 2018-02-13 Antti Koivisto <antti@apple.com> |
| |
| Crash when breakpoint hit in unload handler |
| https://bugs.webkit.org/show_bug.cgi?id=169855 |
| <rdar://problem/28683567> |
| |
| Reviewed by Daniel Bates. |
| |
| Test: inspector/debugger/reload-paused.html |
| |
| CachedRawResource::updateBuffer may generate unload event in client notify callback. If Inspector was |
| paused, this even would spawn a nested runloop. CachedRawResource::finishLoading would get called in |
| the nested loop, confusing the DocumentLoader state machine and resulting in crashes later. |
| |
| * loader/cache/CachedRawResource.cpp: |
| (WebCore::CachedRawResource::updateBuffer): |
| |
| - Set a bit when entering the client callback. |
| - Ensure we don't re-enter updateBuffer. |
| - If finishLoading got delayed during client callback, do it at the end. |
| |
| (WebCore::CachedRawResource::finishLoading): |
| |
| If we are in updateBuffer client callback, save the buffer and bail out. |
| |
| * loader/cache/CachedRawResource.h: |
| |
| 2018-02-13 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlockFlow::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182739 |
| <rdar://problem/37506542> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::takeChild): Deleted. |
| * rendering/RenderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::multiColumnRelativeWillBeRemoved): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| |
| 2018-02-13 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Make WebCore headers copies |
| https://bugs.webkit.org/show_bug.cgi?id=182512 |
| |
| Reviewed by Keith Miller. |
| |
| No new tests. No change in behavior. |
| |
| * CMakeLists.txt: |
| * PlatformAppleWin.cmake: |
| * PlatformGTK.cmake: |
| * PlatformMac.cmake: |
| * PlatformWPE.cmake: |
| * PlatformWin.cmake: |
| * PlatformWinCairo.cmake: |
| * platform/Cairo.cmake: |
| * platform/Curl.cmake: |
| * platform/FreeType.cmake: |
| * platform/GStreamer.cmake: |
| * platform/ImageDecoders.cmake: |
| * platform/TextureMapper.cmake: |
| * platform/graphics/win/LocalWindowsContext.h: |
| |
| 2018-02-13 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r228299): Broke reader mode in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=182697 |
| <rdar://problem/37399012> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Rework the fix for r228299 to be more targeted. I moved the policy check |
| cencelation from FrameLoader::stopLoading() to NavigationScheduler::schedule() |
| when a pending load is cancelled by another load. I have verified that the |
| sites fixed by r228299 still work with this more limited change. However, |
| reader mode is now working again. |
| |
| The issue seems to be that we tell CFNetwork to continue with the load after |
| receiving the response, even if the client has not responded to the |
| decidePolicyForNavigationResponse delegate yet. As a result, CFNetwork sends |
| us the resource data and we may commit the provisional load before receiving |
| the policy response from the client. When the provisional load is committed, |
| we call FrameLoader::stopLoading() which after r228299 cancelled pending |
| policy checks. Because we did not wait for the policy check response to |
| commit the load, we would cancel it which would make the load fail. |
| |
| The real fix here would be to make not tell CFNetwork to continue until after |
| we've received the policy delegate response. However, this is a larger and |
| riskier change at this point. I will follow-up on this issue. |
| |
| Covered by new API test. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::stopLoading): |
| * loader/NavigationScheduler.cpp: |
| (WebCore::NavigationScheduler::schedule): |
| |
| 2018-02-13 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderSVG*::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182736 |
| <rdar://problem/37503107> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/svg/RenderSVGContainer.cpp: |
| (WebCore::RenderSVGContainer::takeChild): Deleted. |
| * rendering/svg/RenderSVGContainer.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::takeChild): Deleted. |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::takeChild): Deleted. |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::takeChild): Deleted. |
| * rendering/svg/RenderSVGText.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: |
| (WebCore::RenderTreeBuilder::SVG::takeChild): |
| * rendering/updating/RenderTreeBuilderSVG.h: |
| |
| 2018-02-13 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderGrid::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182734 |
| <rdar://problem/37500876> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::takeChild): Deleted. |
| * rendering/RenderGrid.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChildFromRenderGrid): |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-13 Nan Wang <n_wang@apple.com> |
| |
| AX: Remove AccessibleNode class |
| https://bugs.webkit.org/show_bug.cgi?id=182724 |
| <rdar://problem/37486024> |
| |
| Reviewed by Chris Fleizach. |
| |
| Removed all the AccessibleNode related code since AOM has |
| an alternate direction now. |
| |
| No new tests. Made sure existing tests don't break. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::findModalNodes): |
| (WebCore::nodeHasRole): |
| (WebCore::AXObjectCache::handleLiveRegionCreated): |
| (WebCore::AXObjectCache::handleMenuItemSelected): |
| (WebCore::AXObjectCache::handleModalChange): |
| (WebCore::isNodeAriaVisible): |
| * accessibility/AccessibilityARIAGrid.cpp: |
| (WebCore::AccessibilityARIAGrid::isMultiSelectable const): |
| * accessibility/AccessibilityARIAGridCell.cpp: |
| (WebCore::AccessibilityARIAGridCell::readOnlyValue const): |
| * accessibility/AccessibilityAllInOne.cpp: |
| * accessibility/AccessibilityImageMapLink.cpp: |
| (WebCore::AccessibilityImageMapLink::roleValue const): |
| (WebCore::AccessibilityImageMapLink::accessibilityDescription const): |
| * accessibility/AccessibilityListBoxOption.cpp: |
| (WebCore::AccessibilityListBoxOption::isEnabled const): |
| (WebCore::AccessibilityListBoxOption::stringValue const): |
| * accessibility/AccessibilityNodeObject.cpp: |
| (WebCore::AccessibilityNodeObject::isEnabled const): |
| (WebCore::AccessibilityNodeObject::isPressed const): |
| (WebCore::AccessibilityNodeObject::isChecked const): |
| (WebCore::AccessibilityNodeObject::isMultiSelectable const): |
| (WebCore::AccessibilityNodeObject::isRequired const): |
| (WebCore::AccessibilityNodeObject::headingLevel const): |
| (WebCore::AccessibilityNodeObject::valueDescription const): |
| (WebCore::AccessibilityNodeObject::valueForRange const): |
| (WebCore::AccessibilityNodeObject::maxValueForRange const): |
| (WebCore::AccessibilityNodeObject::minValueForRange const): |
| (WebCore::AccessibilityNodeObject::ariaAccessibilityDescription const): |
| (WebCore::siblingWithAriaRole): |
| (WebCore::AccessibilityNodeObject::textForLabelElement const): |
| (WebCore::AccessibilityNodeObject::alternativeText const): |
| (WebCore::AccessibilityNodeObject::alternativeTextForWebArea const): |
| (WebCore::AccessibilityNodeObject::hierarchicalLevel const): |
| (WebCore::shouldUseAccessibilityObjectInnerText): |
| (WebCore::AccessibilityNodeObject::stringValue const): |
| (WebCore::accessibleNameForNode): |
| (WebCore::AccessibilityNodeObject::determineAriaRoleAttribute const): |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::readOnlyValue const): |
| (WebCore::AccessibilityObject::supportsAutoComplete const): |
| (WebCore::AccessibilityObject::autoCompleteValue const): |
| (WebCore::AccessibilityObject::ariaIsMultiline const): |
| (WebCore::AccessibilityObject::invalidStatus const): |
| (WebCore::AccessibilityObject::supportsCurrent const): |
| (WebCore::AccessibilityObject::currentState const): |
| (WebCore::AccessibilityObject::roleDescription const): |
| (WebCore::AccessibilityObject::keyShortcutsValue const): |
| (WebCore::AccessibilityObject::placeholderValue const): |
| (WebCore::AccessibilityObject::supportsARIAAttributes const): |
| (WebCore::AccessibilityObject::sortDirection const): |
| (WebCore::AccessibilityObject::supportsHasPopup const): |
| (WebCore::AccessibilityObject::hasPopupValue const): |
| (WebCore::AccessibilityObject::supportsSetSize const): |
| (WebCore::AccessibilityObject::supportsPosInSet const): |
| (WebCore::AccessibilityObject::setSize const): |
| (WebCore::AccessibilityObject::posInSet const): |
| (WebCore::AccessibilityObject::supportsPressed const): |
| (WebCore::AccessibilityObject::supportsExpanded const): |
| (WebCore::AccessibilityObject::isExpanded const): |
| (WebCore::AccessibilityObject::checkboxOrRadioValue const): |
| (WebCore::AccessibilityObject::pressedIsPresent const): |
| (WebCore::AccessibilityObject::isAXHidden const): |
| (WebCore::AccessibilityObject::ariaActiveDescendantReferencingElements const): |
| (WebCore::AccessibilityObject::ariaDetailsElements const): |
| (WebCore::AccessibilityObject::ariaDetailsReferencingElements const): |
| (WebCore::AccessibilityObject::ariaErrorMessageElements const): |
| (WebCore::AccessibilityObject::ariaErrorMessageReferencingElements const): |
| (WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild): |
| (WebCore::AccessibilityObject::hasProperty const): Deleted. |
| (WebCore::AccessibilityObject::stringValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::boolValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::intValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::unsignedValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::doubleValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::elementValueForProperty const): Deleted. |
| (WebCore::AccessibilityObject::elementsFromProperty const): Deleted. |
| (WebCore::AccessibilityObject::elementsReferencedByProperty const): Deleted. |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::stringValue const): |
| (WebCore::AccessibilityRenderObject::exposesTitleUIElement const): |
| (WebCore::AccessibilityRenderObject::defaultObjectInclusion const): |
| (WebCore::AccessibilityRenderObject::isSelected const): |
| (WebCore::AccessibilityRenderObject::activeDescendant const): |
| (WebCore::AccessibilityRenderObject::determineAccessibilityRole): |
| (WebCore::AccessibilityRenderObject::orientation const): |
| (WebCore::AccessibilityRenderObject::canSetExpandedAttribute const): |
| (WebCore::AccessibilityRenderObject::liveRegionStatus const): |
| (WebCore::AccessibilityRenderObject::liveRegionRelevant const): |
| (WebCore::AccessibilityRenderObject::liveRegionAtomic const): |
| (WebCore::AccessibilityRenderObject::isBusy const): |
| * accessibility/AccessibilityTable.cpp: |
| (WebCore::AccessibilityTable::isDataTable const): |
| (WebCore::AccessibilityTable::axColumnCount const): |
| (WebCore::AccessibilityTable::axRowCount const): |
| * accessibility/AccessibilityTableCell.cpp: |
| (WebCore::AccessibilityTableCell::axColumnIndex const): |
| (WebCore::AccessibilityTableCell::axRowIndex const): |
| (WebCore::AccessibilityTableCell::axColumnSpan const): |
| (WebCore::AccessibilityTableCell::axRowSpan const): |
| * accessibility/AccessibilityTableRow.cpp: |
| (WebCore::AccessibilityTableRow::axColumnIndex const): |
| (WebCore::AccessibilityTableRow::axRowIndex const): |
| * accessibility/AccessibleNode.cpp: Removed. |
| * accessibility/AccessibleNode.h: Removed. |
| * accessibility/AccessibleNode.idl: Removed. |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| * bindings/js/WebCoreBuiltinNames.h: |
| * dom/Element.cpp: |
| (WebCore::Element::canContainRangeEndPoint const): |
| (WebCore::Element::accessibleNode): Deleted. |
| (WebCore::Element::existingAccessibleNode const): Deleted. |
| * dom/Element.h: |
| * dom/Element.idl: |
| * dom/ElementRareData.cpp: |
| * dom/ElementRareData.h: |
| (WebCore::ElementRareData::accessibleNode const): Deleted. |
| (WebCore::ElementRareData::setAccessibleNode): Deleted. |
| * editing/TextIterator.cpp: |
| (WebCore::isRendererReplacedElement): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::itemAccessibilityText const): |
| |
| 2018-02-13 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderButton::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182732 |
| <rdar://problem/37500564> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change of functionality. |
| |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setInnerRenderer): |
| (WebCore::RenderButton::takeChild): Deleted. |
| * rendering/RenderButton.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChildFromRenderButton): |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-13 Alicia Boya García <aboya@igalia.com> |
| |
| [Gstreamer][MSE] Add string representation for GStreamerMediaSample |
| https://bugs.webkit.org/show_bug.cgi?id=180262 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * platform/graphics/gstreamer/mse/GStreamerMediaSample.cpp: |
| (WebCore::GStreamerMediaSample::offsetTimestampsBy): |
| * platform/graphics/gstreamer/mse/GStreamerMediaSample.h: |
| |
| 2018-02-12 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: defer focusedUIElement notifications |
| https://bugs.webkit.org/show_bug.cgi?id=182643 |
| <rdar://problem/37394310> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Deferring focus changes for accessibility has a number of benefits. |
| 1) Reduces the chance of calling into layout during layout. |
| 2) Coalesces multiple focus notifications that would be needlessly sent. |
| 3) Improves performance by not calling out to the accessibility notification machinery during layout. |
| |
| In this patch, I also started making more AXObjectCache calls private. This will reduce the chance that clients |
| will call into AXObjectCache during unexpected times. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::deferFocusedUIElementChangeIfNeeded): |
| (WebCore::conditionallyAddNodeToFilterList): |
| (WebCore::filterVectorPairForRemoval): |
| (WebCore::filterMapForRemoval): |
| (WebCore::filterListForRemoval): |
| (WebCore::AXObjectCache::prepareForDocumentDestruction): |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| * accessibility/AXObjectCache.h: |
| * dom/Document.cpp: |
| (WebCore::Document::setFocusedElement): |
| |
| 2018-02-12 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Classify resources as prevalent based on redirects to other prevalent resources |
| https://bugs.webkit.org/show_bug.cgi?id=182664 |
| <rdar://problem/37372572> |
| |
| Reviewed by Brent Fulgham. |
| |
| Tests: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion.html |
| http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html |
| http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to.html |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::logFrameNavigation): |
| We now collect statistics on top frame navigational redirects too, both to and from. |
| (WebCore::ResourceLoadObserver::logSubresourceLoading): |
| We now collect statistics on redirects from in addition to the existing redirects to. |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::encode const): |
| (WebCore::ResourceLoadStatistics::decode): |
| (WebCore::ResourceLoadStatistics::toString const): |
| (WebCore::ResourceLoadStatistics::merge): |
| * loader/ResourceLoadStatistics.h: |
| Three new fields: |
| - topFrameUniqueRedirectsTo |
| - topFrameUniqueRedirectsFrom |
| - subresourceUniqueRedirectsFrom |
| |
| 2018-02-12 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderMenuList::takeChild() to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182715 |
| <rdar://problem/37477050> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::takeChild): Deleted. |
| * rendering/RenderMenuList.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderMenuList): |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-12 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unify UserAgent into WebCore/platform. |
| https://bugs.webkit.org/show_bug.cgi?id=182716 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No change in functionality. |
| |
| * SourcesCocoa.txt: |
| * SourcesIOS.txt: |
| * SourcesMac.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * page/cocoa/UserAgent.h: Removed. |
| * platform/UserAgent.h: |
| * platform/cocoa/UserAgentCocoa.mm: Renamed from Source/WebCore/page/cocoa/UserAgent.mm. |
| * platform/ios/UserAgentIOS.mm: Renamed from Source/WebCore/page/ios/UserAgentIOS.mm. |
| * platform/mac/UserAgentMac.mm: Renamed from Source/WebCore/page/mac/UserAgentMac.mm. |
| |
| 2018-02-12 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Support the copy constructors for KeyframeEffectReadOnly and KeyframeEffect |
| https://bugs.webkit.org/show_bug.cgi?id=182712 |
| |
| Reviewed by Dean Jackson. |
| |
| We now support the variants for the KeyframeEffectReadOnly and KeyframeEffect constructors where |
| another KeyframeEffectReadOnly is provided as a source. All timing, keyframe and target properties |
| of that source are copied on the newly-constructed KeyframeEffect. |
| |
| To support copying properties, we add new copyPropertiesFromSource() methods to |
| AnimationEffectTimingReadOnly and KeyframeEffectReadOnly to encapsulate copying various |
| member variables in the relevant classes. Copying properties of the backing KeyframeList |
| is performed in KeyframeEffectReadOnly::copyPropertiesFromSource() via public KeyframeList |
| methods. |
| |
| * animation/AnimationEffectTimingReadOnly.cpp: |
| (WebCore::AnimationEffectTimingReadOnly::copyPropertiesFromSource): |
| * animation/AnimationEffectTimingReadOnly.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::create): |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffect.idl: |
| * animation/KeyframeEffectOptions.idl: |
| * animation/KeyframeEffectReadOnly.cpp: |
| (WebCore::KeyframeEffectReadOnly::create): |
| (WebCore::KeyframeEffectReadOnly::copyPropertiesFromSource): |
| * animation/KeyframeEffectReadOnly.h: |
| * animation/KeyframeEffectReadOnly.idl: |
| |
| 2018-02-12 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Introduce RenderTreebuilder::takeChild |
| https://bugs.webkit.org/show_bug.cgi?id=182707 |
| <rdar://problem/37473433> |
| |
| Reviewed by Antti Koivisto. |
| |
| All takeChild calls should go through RenderTreeBuilder::takeChild from now on. |
| This patch also moves the Ruby related takeChild calls to RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::takeChild): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::removeAndDestroyChild): |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::wrapExistingRenderer): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::takeChild): |
| * rendering/RenderRuby.cpp: |
| (WebCore::RenderRubyAsInline::takeChild): Deleted. |
| (WebCore::RenderRubyAsBlock::takeChild): Deleted. |
| * rendering/RenderRuby.h: |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): Deleted. |
| * rendering/RenderRubyRun.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChild): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsInline): Deleted. |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsBlock): Deleted. |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyRun): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| |
| 2018-02-12 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock::dropAnonymousBoxChild to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182704 |
| <rdar://problem/37469469> |
| |
| Reviewed by Antti Koivisto. |
| |
| All the callsites are now in RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::dropAnonymousBoxChild): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded): |
| (WebCore::RenderTreeBuilder::dropAnonymousBoxChild): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| (WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild): |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| |
| 2018-02-12 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228376. |
| |
| This caused accessibility/mac/selection-notification-focus- |
| change.html to become flaky on macOS. |
| |
| Reverted changeset: |
| |
| "AX: defer focusedUIElement notifications" |
| https://bugs.webkit.org/show_bug.cgi?id=182643 |
| https://trac.webkit.org/changeset/228376 |
| |
| 2018-02-12 Ryan Haddad <ryanhaddad@apple.com> |
| |
| [iOS] media tests failing ASSERT_NOT_REACHED() in WebCore::VideoFullscreenInterfaceAVKit::cleanupFullscreen() |
| https://bugs.webkit.org/show_bug.cgi?id=182527 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Temporarily remove an assertion from VideoFullscreenInterfaceAVKit to stop tests from crashing on iOS |
| while the root cause is being investigated. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::exitFullscreenHandler): |
| |
| 2018-02-12 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Remove redundant RenderTreeBuilder instance |
| https://bugs.webkit.org/show_bug.cgi?id=182700 |
| <rdar://problem/37463958> |
| |
| Reviewed by Antti Koivisto. |
| |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::willBeDestroyed): |
| |
| 2018-02-12 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: defer focusedUIElement notifications |
| https://bugs.webkit.org/show_bug.cgi?id=182643 |
| <rdar://problem/37394310> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Deferring focus changes for accessibility has a number of benefits. |
| 1) Reduces the chance of calling into layout during layout. |
| 2) Coalesces multiple focus notifications that would be needlessly sent. |
| 3) Improves performance by not calling out to the accessibility notification machinery during layout. |
| |
| In this patch, I also started making more AXObjectCache calls private. This will reduce the chance that clients |
| will call into AXObjectCache during unexpected times. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::deferFocusedUIElementChangeIfNeeded): |
| (WebCore::conditionallyAddNodeToFilterList): |
| (WebCore::filterVectorPairForRemoval): |
| (WebCore::filterMapForRemoval): |
| (WebCore::filterListForRemoval): |
| (WebCore::AXObjectCache::prepareForDocumentDestruction): |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| * accessibility/AXObjectCache.h: |
| * dom/Document.cpp: |
| (WebCore::Document::setFocusedElement): |
| |
| 2018-02-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> |
| |
| [GTK] Scrolling sometimes jumps around |
| https://bugs.webkit.org/show_bug.cgi?id=178519 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/gtk/ScrollAnimatorGtk.cpp: |
| (WebCore::ScrollAnimatorGtk::computeVelocity): use -1 as the multiplier for the accumulated deltas, |
| since all we need is to make them negative. Multiplying by -1000 leads to very high velocities being |
| returned, causing the viewport to scroll to the end of the page. |
| |
| 2018-02-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Remove an unused static variable in DeprecatedGlobalSettings.h |
| https://bugs.webkit.org/show_bug.cgi?id=182672 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| After r227282, this flag is no longer used anywhere. No change in behavior. |
| |
| * page/DeprecatedGlobalSettings.h: |
| |
| 2018-02-10 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock::takeChild mutation to a RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182662 |
| <rdar://problem/37408571> |
| |
| Reviewed by Simon Fraser. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::takeChild): |
| (WebCore::canDropAnonymousBlock): Deleted. |
| (WebCore::canMergeContiguousAnonymousBlocks): Deleted. |
| * rendering/RenderBlock.h: |
| (WebCore::RenderBlock::moveAllChildrenIncludingFloatsTo): |
| * rendering/RenderBlockFlow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takenChildFromRenderBlock): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::canDropAnonymousBlock): |
| (WebCore::canMergeContiguousAnonymousBlocks): |
| (WebCore::RenderTreeBuilder::Block::takeChild): |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| |
| 2018-02-08 Ryosuke Niwa <rniwa@webkit.org> |
| |
| REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails |
| https://bugs.webkit.org/show_bug.cgi?id=182564 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Turns out that Microsoft Word generates p and span elements with special styles instead of standard |
| ul and ol elements when copying a list items, and TinyMCE has a specialized code path to process |
| this proprietary format of Microsoft Word. The regression was caused by WebKit's sanitization code |
| stripping away these non-standard CSS rules and inline styles. |
| |
| To preseve pre-r223440 behavior in TinyMCE, we preserve the following in a HTML markup: |
| |
| 1. The "html" element at the beginning with xmlns content attributes |
| 2. @list rules in a style element starting with "/* List Definitions */" comment |
| 3. inline style content attribute with "mso-list" property |
| 4. comments conditional sections with "[if !supportLists]" and "[endif]" |
| |
| (1) is needed for TinyMCE to trigger the specialized code path for Microsoft Word. (2) contains |
| the information about the structure of list items. (3) is needed to associate each p element with |
| a rule in (2). (4) is needed to strip away the content generated as list markers (e.g. dots). |
| |
| We enable this "MSO list quirks" when the content comes from a non-WebKit client or a WebKit client |
| that doesn't enable custom pasteboard data (detected by the content origin being null), and the HTML |
| markup starts with a specific sequence of characters generated by Microsoft Word. |
| |
| Test: http/tests/security/clipboard/copy-paste-html-across-origin-strips-mso-list.html |
| PasteHTML.PreservesMSOList |
| PasteHTML.StripsMSOListWhenMissingMSOHTMLElement |
| PasteWebArchive.PreservesMSOList |
| PasteWebArchive.StripsMSOListWhenMissingMSOHTMLElement |
| |
| * editing/MarkupAccumulator.cpp: |
| (WebCore::MarkupAccumulator::appendTextSubstring): Added. |
| * editing/MarkupAccumulator.h: |
| * editing/WebContentReader.cpp: |
| (WebCore::FrameWebContentReader::msoListQuirksForMarkup const): Added. Enables the MSO list quirks |
| if the content origin is null. The content origin specifies the pasteboard content's origin if it's |
| copied in WebKit with custom pasteboard data types enabled. In all other applications, it would be |
| set to null. |
| * editing/WebContentReader.h: |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::markupForFragmentInDocument): Moved to markup.cpp as sanitizedMarkupForFragmentInDocument. |
| (WebCore::sanitizeMarkupWithArchive): |
| (WebCore::WebContentReader::readWebArchive): Always disables MSO list quirks since this code path is |
| only used by WebKit's native code to paste content. |
| (WebCore::WebContentMarkupReader::readWebArchive): Calls msoListQuirksForMarkup since this is the code |
| path used by DataTransfer. |
| (WebCore::WebContentReader::readHTML): Always disables MSO list quirks since this code path is only |
| used by WebKit's native code to paste content. |
| (WebCore::WebContentMarkupReader::readHTML): Calls msoListQuirksForMarkup since this is the code path |
| used by DataTransfer. |
| * editing/markup.cpp: |
| (WebCore::sanitizeMarkup): Use sanitizedMarkupForFragmentInDocument to share code. |
| (WebCore::MSOListMode): Added. Set to Preserve if the sanitized markup is the one generated by |
| Microsoft Word, and MSO list quirks should actually kick in. This is unlike MSOListQuirks, which is |
| set to Enable whenever the content COULD be the one generated by Microsoft Word. |
| (WebCore::StyledMarkupAccumulator): Added a special MSO list preservation mode enabled by MSOListMode. |
| (WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator): |
| (WebCore::StyledMarkupAccumulator::appendElement): Preseve (3). Unfortunately, TinyMCE only recognizes |
| mso-list and related properties only if they appear on their own. But we also need to preserve |
| the inline style generated using the computed style since we would lose the inline styles of the text |
| otherwise (e.g. red text and bold font). To workaround this, we generate two style content attributes, |
| one containing computed styles and another one containing mso-list. Luckily, the HTML parsing algorithm |
| dictates that the first attribute always wins when more than one attributes of the same name appears, |
| so we place the computed style's style attribute first so that the pasted content in non-TinyMCE |
| environment will continue to work. |
| (WebCore::StyledMarkupAccumulator::traverseNodesForSerialization): |
| (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Added. Generates special markup for |
| the conditional statements and the special style element with @list rules. |
| (WebCore::createMarkupInternal): |
| (WebCore::createMarkup): |
| (WebCore::sanitizedMarkupForFragmentInDocument): Moved from WebContentReaderCocoa.mm. If MSOListQuirks |
| is set to Enable, and the markup starts with a specific sequence of characters, generate the markup |
| with the newly added quirks code in StyledMarkupAccumulator, and wrap it in a special "html" element |
| TinyMCE recognizes. |
| * editing/markup.h: |
| (WebCore::MSOListQuirks): Added. Set to CheckIfNeeded if the content COULD require MSO list quirks. |
| |
| 2018-02-09 Dean Jackson <dino@apple.com> |
| |
| ImageBitmapRenderingContext should be Runtime guarded |
| https://bugs.webkit.org/show_bug.cgi?id=182665 |
| <rdar://problem/37411410> |
| |
| Reviewed by Sam Weinig. |
| |
| Add a flag to ensure the ImageBitmapRenderingContext interface is only |
| visible when the runtime feature is enabled. |
| |
| * bindings/js/WebCoreBuiltinNames.h: |
| * html/canvas/ImageBitmapRenderingContext.idl: |
| |
| 2018-02-09 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Make PAL headers copies |
| https://bugs.webkit.org/show_bug.cgi?id=182645 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * CMakeLists.txt: |
| |
| 2018-02-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderRubyRun::takeChild mutation to a RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182655 |
| <rdar://problem/37406801> |
| |
| Reviewed by Simon Fraser. |
| |
| No change in functionality. |
| |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyRun): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| |
| 2018-02-09 Andy Estes <aestes@apple.com> |
| |
| [Payment Request] Apple Pay sheet does not dismiss when calling complete() with result "unknown" or "fail" |
| https://bugs.webkit.org/show_bug.cgi?id=182658 |
| <rdar://problem/37293917> |
| |
| Reviewed by Brady Eidson. |
| |
| When PaymentResponse::complete() is called with a result of "unknown" or "fail", we should |
| treat this as a fatal error and dismiss the Apple Pay sheet. However, we were adding an |
| error with code "unknown" to the authorization result, which PassKit interprets as a |
| non-fatal error. Instead, we should not set any errors and just use a status code of |
| PaymentAuthorizationStatus::Failure, which PassKit interprets as a fatal error, dismissing |
| the sheet. |
| |
| No test possible. |
| |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: |
| (WebCore::ApplePayPaymentHandler::complete): |
| |
| 2018-02-09 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Pasting from Excel no longer provides text/html data |
| https://bugs.webkit.org/show_bug.cgi?id=182636 |
| <rdar://problem/37087060> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| After r222656, we treat images on the pasteboard as files. However, we also have an existing policy which hides |
| text data ("text/uri-list", "text/html", "text/plain") from the page when files are present on the pasteboard. |
| When copying a table, Microsoft Excel writes a rendering of the table to the pasteboard as an image. This means |
| that we'll hide other data types (importantly, 'text/html') upon pasting, even though important clients (such as |
| Google Docs and Confluence) depend on the 'text/html' data in order to correctly handle the paste (rather than |
| paste as an image of a table). |
| |
| To fix this, we add an exception to the DataTransfer.getData codepath when the pasteboard contains files. |
| Instead of always returning the empty string for text/html, we still allow pasteboard access, but only read |
| from a limited set of rich text types, i.e. web archive, RTF(D), and HTML markup. Importantly, this prevents |
| us from exposing any file paths that appear as plain text or URLs on the pasteboard. Just as in the regular |
| codepath for getData(), if the pasteboard data comes from the same origin, we allow unsanitized access; |
| otherwise, we use WebContentMarkupReader to extract markup from the pasteboard. |
| |
| Tests: PasteMixedContent.ImageFileAndPlainText |
| PasteMixedContent.ImageFileAndWebArchive |
| PasteMixedContent.ImageFileAndHTML |
| PasteMixedContent.ImageFileAndRTF |
| PasteMixedContent.ImageFileAndURL |
| PasteMixedContent.ImageFileWithHTMLAndURL |
| DataInteractionTests.DataTransferGetDataWhenDroppingImageAndMarkup |
| |
| Also rebaselined some layout tests, which cover changes in behavior when dropping on macOS and pasting on iOS. |
| |
| * dom/DataTransfer.cpp: |
| (WebCore::DataTransfer::getDataForItem const): |
| |
| Augment the codepath handling the case where the pasteboard contains files, such that we allow reading |
| "text/html", but only from rich text types. |
| |
| (WebCore::DataTransfer::readStringFromPasteboard const): |
| |
| Factor out logic for reading from the pasteboard into a private helper. This is called in two places from |
| getDataForItem: in the normal (existing) path, and in the case where we allow 'text/html' to be read despite |
| files appearing in the pasteboard. |
| |
| One important difference here is that this helper now takes a WebContentReadingPolicy, whose purpose is to |
| prevent reading from non-rich-text types when files appear in the pasteboard. |
| |
| Another tweak here is that we now use `lowercaseType` instead of the original (unadjusted) `type` when reading |
| from the pasteboard. This doesn't seem to be intended in the first place. |
| |
| (WebCore::DataTransfer::types const): |
| |
| Tweak the implementation of DataTransfer.types() in the case where files exist on the pasteboard, such that we |
| also add "text/html" if it is present in the list of DOM-safe types. |
| |
| * dom/DataTransfer.h: |
| * platform/Pasteboard.h: |
| |
| Introduce WebContentReadingPolicy, which indicates whether or not we should limit web content reading from the |
| pasteboard to only rich text types upon paste or drop. Normally, we allow all types to be read as web content |
| (::AnyType), but when files appear on the pasteboard, we force OnlyRichTextTypes to ensure that no other types |
| can unintentionally be read back as web content. |
| |
| * platform/StaticPasteboard.h: |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::read): |
| * platform/ios/PasteboardIOS.mm: |
| |
| Teach Pasteboard (on iOS) to respect WebContentReadingPolicy. |
| |
| (WebCore::isTypeAllowedByReadingPolicy): |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::readRespectingUTIFidelities): |
| * platform/mac/PasteboardMac.mm: |
| |
| Teach Pasteboard (on macOS) to respect WebContentReadingPolicy. |
| |
| (WebCore::Pasteboard::read): |
| * platform/win/PasteboardWin.cpp: |
| (WebCore::Pasteboard::read): |
| * platform/wpe/PasteboardWPE.cpp: |
| (WebCore::Pasteboard::read): |
| |
| Adjust non-Cocoa Pasteboard implementations for an interface change. |
| |
| 2018-02-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderRubyAsInline/AsBlock::takeChild mutation to a RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182651 |
| <rdar://problem/37405042> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality. |
| |
| * rendering/RenderRuby.cpp: |
| (WebCore::RenderRubyAsInline::takeChild): |
| (WebCore::RenderRubyAsBlock::takeChild): |
| (WebCore::isAnonymousRubyInlineBlock): Deleted. |
| (WebCore::isRubyChildForNormalRemoval): Deleted. |
| (WebCore::findRubyRunParent): Deleted. |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsInline): |
| (WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsBlock): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::findRubyRunParent): |
| (WebCore::RenderTreeBuilder::Ruby::takeChild): |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| |
| 2018-02-09 Per Arne Vollan <pvollan@apple.com> |
| |
| Assert that NSApp is not running in the WebProcess. |
| https://bugs.webkit.org/show_bug.cgi?id=182553 |
| |
| Reviewed by Simon Fraser. |
| |
| In WebCore, there are a few places where NSApp is referenced. Since the WebContent process |
| is no longer using the NSApplication run loop, and NSApp is no longer guaranteed to be |
| valid, we should make sure that the NSApp is not referenced by the WebContent process or |
| the Network process, by asserting that the NSApplication event loop is running when NSApp |
| is referenced. It is still ok for the UIProcess to reference NSApp. Adding these assert |
| will help catch NSApp references when the NSApplication run loop is not used. |
| |
| Also, do not post a fake mouse event in PasteBoard::setDragImage when the NSApplication |
| run loop is not running, since this is only relevant in WK1. |
| |
| No new tests, covered by existing tests. |
| |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::lastEventIsMouseUp): |
| (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::setDragImage): |
| |
| 2018-02-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Introduce RenderTreeBuilder to willBeDestoryed/removeFromParentAndDestroy |
| https://bugs.webkit.org/show_bug.cgi?id=182635 |
| <rdar://problem/37377489> |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch helps finding callsites where we don't have a RenderTreeBuilder instance. |
| |
| No change in functionality. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setFullScreenRenderer): |
| * dom/Document.h: |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::willBeDestroyed): |
| (WebCore::RenderBlock::takeChild): |
| * rendering/RenderBlock.h: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::willBeDestroyed): |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::willBeDestroyed): |
| * rendering/RenderBox.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::willBeDestroyed): |
| (WebCore::RenderBoxModelObject::removeAndDestroyAllContinuations): |
| * rendering/RenderBoxModelObject.h: |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setText): |
| * rendering/RenderCounter.cpp: |
| (WebCore::RenderCounter::willBeDestroyed): |
| * rendering/RenderCounter.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::willBeDestroyed): |
| * rendering/RenderElement.h: |
| * rendering/RenderEmbeddedObject.cpp: |
| (WebCore::RenderEmbeddedObject::willBeDestroyed): |
| * rendering/RenderEmbeddedObject.h: |
| * rendering/RenderFragmentedFlow.cpp: |
| (WebCore::RenderFragmentedFlow::willBeDestroyed): |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::willBeDestroyed): |
| (WebCore::RenderFullScreen::wrapNewRenderer): |
| (WebCore::RenderFullScreen::wrapExistingRenderer): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| * rendering/RenderFullScreen.h: |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::willBeDestroyed): |
| * rendering/RenderImage.h: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::willBeDestroyed): |
| * rendering/RenderInline.h: |
| * rendering/RenderLayerModelObject.cpp: |
| (WebCore::RenderLayerModelObject::willBeDestroyed): |
| * rendering/RenderLayerModelObject.h: |
| * rendering/RenderListBox.cpp: |
| (WebCore::RenderListBox::willBeDestroyed): |
| * rendering/RenderListBox.h: |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::willBeDestroyed): |
| * rendering/RenderListItem.h: |
| * rendering/RenderListMarker.cpp: |
| (WebCore::RenderListMarker::willBeDestroyed): |
| * rendering/RenderListMarker.h: |
| * rendering/RenderMenuList.cpp: |
| (WebCore::RenderMenuList::willBeDestroyed): |
| * rendering/RenderMenuList.h: |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::handleSpannerRemoval): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::removeFromParentAndDestroy): |
| (WebCore::RenderObject::willBeDestroyed): |
| (WebCore::RenderObject::destroy): |
| * rendering/RenderObject.h: |
| * rendering/RenderReplaced.cpp: |
| (WebCore::RenderReplaced::willBeDestroyed): |
| * rendering/RenderReplaced.h: |
| * rendering/RenderRuby.cpp: |
| (WebCore::RenderRubyAsInline::takeChild): |
| (WebCore::RenderRubyAsBlock::takeChild): |
| * rendering/RenderSearchField.cpp: |
| (WebCore::RenderSearchField::willBeDestroyed): |
| * rendering/RenderSearchField.h: |
| * rendering/RenderSnapshottedPlugIn.cpp: |
| (WebCore::RenderSnapshottedPlugIn::willBeDestroyed): |
| * rendering/RenderSnapshottedPlugIn.h: |
| * rendering/RenderText.cpp: |
| (WebCore::RenderText::willBeDestroyed): |
| * rendering/RenderText.h: |
| * rendering/RenderTextControlMultiLine.cpp: |
| (WebCore::RenderTextControlMultiLine::willBeDestroyed): |
| * rendering/RenderTextControlMultiLine.h: |
| * rendering/RenderTextFragment.cpp: |
| (WebCore::RenderTextFragment::willBeDestroyed): |
| (WebCore::RenderTextFragment::setText): |
| * rendering/RenderTextFragment.h: |
| * rendering/RenderVideo.cpp: |
| (WebCore::RenderVideo::willBeDestroyed): |
| * rendering/RenderVideo.h: |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::willBeDestroyed): |
| * rendering/RenderView.h: |
| * rendering/RenderWidget.cpp: |
| (WebCore::RenderWidget::willBeDestroyed): |
| * rendering/RenderWidget.h: |
| * rendering/svg/RenderSVGBlock.cpp: |
| (WebCore::RenderSVGBlock::willBeDestroyed): |
| * rendering/svg/RenderSVGBlock.h: |
| * rendering/svg/RenderSVGImage.cpp: |
| (WebCore::RenderSVGImage::willBeDestroyed): |
| * rendering/svg/RenderSVGImage.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::willBeDestroyed): |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGModelObject.cpp: |
| (WebCore::RenderSVGModelObject::willBeDestroyed): |
| * rendering/svg/RenderSVGModelObject.h: |
| * rendering/svg/RenderSVGResourceContainer.cpp: |
| (WebCore::RenderSVGResourceContainer::willBeDestroyed): |
| * rendering/svg/RenderSVGResourceContainer.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::willBeDestroyed): |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::willBeDestroyed): |
| * rendering/svg/RenderSVGText.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| |
| 2018-02-09 Brent Fulgham <bfulgham@apple.com> |
| |
| [macOS, iOS] Expose OS marketing version in UserAgent |
| https://bugs.webkit.org/show_bug.cgi?id=182629 |
| <rdar://problem/37370975> |
| |
| Reviewed by Daniel Bates. |
| |
| Revert back to dynamically reading the operating system marketing version |
| rather than using a hard-coded version. |
| |
| * page/cocoa/UserAgent.mm: |
| (WebCore::systemMarketingVersionForUserAgentString): |
| |
| 2018-02-08 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Refactor AnimationEffect and KeyframeEffect into AnimationEffectReadOnly, KeyframeEffectReadOnly and KeyframeEffect |
| https://bugs.webkit.org/show_bug.cgi?id=182608 |
| |
| Reviewed by Dean Jackson. |
| |
| Currently, we have an AnimationEffect class with read-write members and a KeyframeEffect subclass with read-write |
| members. The spec has an AnimationEffectReadOnly class, with read-only members, a KeyframeEffectReadOnly subclass, |
| with read-only members, and then the KeyframeEffect subclass (of KeyframeEffectReadOnly) with read-write members. |
| |
| Likewise, currently we have an AnimationEffectTiming class with read-write members. While the spec has this class |
| as well, it also specifies a read-only AnimationEffectTimingReadOnly superclass. |
| |
| In this patch we refactor the code to match the spec, which gives us a big boost in our WPT pass rate. The vast |
| majority of the code is just copied from one class to another verbatim. The limited actual code changes, all related |
| to the new subclassing, are: |
| |
| - AnimationEffectTimingReadOnly is not actually read-only as far as WebCore is concerned, it actually exposes setters |
| for all of its properties, but the IDL for this class specifies all properties as read-only, so we match the spec. The |
| reason for this is that it is necessary to be able to set members of an AnimationEffectTimingReadOnly object based on |
| a Variant<double, KeyframeEffectOptions> provided to Element.animate() or the KeyframeEffectReadOnly and KeyframeEffect |
| constructors, and the logic to handle properties in such dictionaries is the same as the logic required to set individual |
| members in AnimationEffectTiming. So in essence, the sole role of AnimationTimingEffect is to provide an IDL interface |
| with read-write members, but the parent class is itself read-write as far as WebCore is concerned. |
| |
| - AnimationEffectTimingReadOnly exposes a new setProperties() method which takes in a nullable Variant<double, KeyframeEffectOptions> |
| so that code that was previously specific to KeyframeEffect can be factored into this method and both the constructors of |
| KeyframeEffectReadOnly and KeyframeEffect can make use of it without code duplication. |
| |
| - The AnimationEffectReadOnly constructor now takes an AnimationEffectTimingReadOnly as input since that class and |
| KeyframeEffectReadOnly expose an AnimationEffectTimingReadOnly object, while KeyframeEffect exposes an |
| AnimationEffectTiming read-write object. This allows the KeyframeEffect constructor to provide the right object type. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/AnimationEffectReadOnly.cpp: Renamed from Source/WebCore/animation/AnimationEffect.cpp. |
| (WebCore::AnimationEffectReadOnly::AnimationEffectReadOnly): |
| (WebCore::AnimationEffectReadOnly::localTime const): |
| (WebCore::AnimationEffectReadOnly::phase const): |
| (WebCore::AnimationEffectReadOnly::activeTime const): |
| (WebCore::AnimationEffectReadOnly::overallProgress const): |
| (WebCore::AnimationEffectReadOnly::simpleIterationProgress const): |
| (WebCore::AnimationEffectReadOnly::currentIteration const): |
| (WebCore::AnimationEffectReadOnly::currentDirection const): |
| (WebCore::AnimationEffectReadOnly::directedProgress const): |
| (WebCore::AnimationEffectReadOnly::transformedProgress const): |
| (WebCore::AnimationEffectReadOnly::iterationProgress const): |
| (WebCore::AnimationEffectReadOnly::getComputedTiming): |
| * animation/AnimationEffectReadOnly.h: Renamed from Source/WebCore/animation/AnimationEffect.h. |
| (WebCore::AnimationEffectReadOnly::isKeyframeEffectReadOnly const): |
| (WebCore::AnimationEffectReadOnly::timing const): |
| * animation/AnimationEffectReadOnly.idl: Copied from Source/WebCore/animation/AnimationEffect.idl. |
| * animation/AnimationEffectTiming.cpp: |
| (WebCore::AnimationEffectTiming::AnimationEffectTiming): |
| (WebCore::AnimationEffectTiming::setIterationStart): Deleted. |
| (WebCore::AnimationEffectTiming::setIterations): Deleted. |
| (WebCore::AnimationEffectTiming::bindingsDuration const): Deleted. |
| (WebCore::AnimationEffectTiming::setBindingsDuration): Deleted. |
| (WebCore::AnimationEffectTiming::endTime const): Deleted. |
| (WebCore::AnimationEffectTiming::activeDuration const): Deleted. |
| (WebCore::AnimationEffectTiming::setEasing): Deleted. |
| * animation/AnimationEffectTiming.h: |
| (): Deleted. |
| * animation/AnimationEffectTiming.idl: |
| * animation/AnimationEffectTimingReadOnly.cpp: Copied from Source/WebCore/animation/AnimationEffectTiming.cpp. |
| (WebCore::AnimationEffectTimingReadOnly::create): |
| (WebCore::AnimationEffectTimingReadOnly::AnimationEffectTimingReadOnly): |
| (WebCore::AnimationEffectTimingReadOnly::~AnimationEffectTimingReadOnly): |
| (WebCore::AnimationEffectTimingReadOnly::setProperties): |
| (WebCore::AnimationEffectTimingReadOnly::setIterationStart): |
| (WebCore::AnimationEffectTimingReadOnly::setIterations): |
| (WebCore::AnimationEffectTimingReadOnly::bindingsDuration const): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsDuration): |
| (WebCore::AnimationEffectTimingReadOnly::setEasing): |
| (WebCore::AnimationEffectTimingReadOnly::endTime const): |
| (WebCore::AnimationEffectTimingReadOnly::activeDuration const): |
| * animation/AnimationEffectTimingReadOnly.h: Copied from Source/WebCore/animation/AnimationEffectTiming.h. |
| (WebCore::AnimationEffectTimingReadOnly::isAnimationEffectTiming const): |
| (WebCore::AnimationEffectTimingReadOnly::bindingsDelay const): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsDelay): |
| (WebCore::AnimationEffectTimingReadOnly::bindingsEndDelay const): |
| (WebCore::AnimationEffectTimingReadOnly::setBindingsEndDelay): |
| (WebCore::AnimationEffectTimingReadOnly::delay const): |
| (WebCore::AnimationEffectTimingReadOnly::setDelay): |
| (WebCore::AnimationEffectTimingReadOnly::endDelay const): |
| (WebCore::AnimationEffectTimingReadOnly::setEndDelay): |
| (WebCore::AnimationEffectTimingReadOnly::fill const): |
| (WebCore::AnimationEffectTimingReadOnly::setFill): |
| (WebCore::AnimationEffectTimingReadOnly::iterationStart const): |
| (WebCore::AnimationEffectTimingReadOnly::iterations const): |
| (WebCore::AnimationEffectTimingReadOnly::iterationDuration const): |
| (WebCore::AnimationEffectTimingReadOnly::setIterationDuration): |
| (WebCore::AnimationEffectTimingReadOnly::direction const): |
| (WebCore::AnimationEffectTimingReadOnly::setDirection): |
| (WebCore::AnimationEffectTimingReadOnly::easing const): |
| (WebCore::AnimationEffectTimingReadOnly::timingFunction const): |
| (WebCore::AnimationEffectTimingReadOnly::classType const): |
| * animation/AnimationEffectTimingReadOnly.idl: Renamed from Source/WebCore/animation/AnimationEffect.idl. |
| * animation/AnimationTimeline.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::create): |
| (WebCore::KeyframeEffect::KeyframeEffect): |
| (WebCore::IDLAttributeNameToAnimationPropertyName): Deleted. |
| (WebCore::CSSPropertyIDToIDLAttributeName): Deleted. |
| (WebCore::computeMissingKeyframeOffsets): Deleted. |
| (WebCore::processIterableKeyframes): Deleted. |
| (WebCore::processKeyframeLikeObject): Deleted. |
| (WebCore::processPropertyIndexedKeyframes): Deleted. |
| (WebCore::KeyframeEffect::getKeyframes): Deleted. |
| (WebCore::KeyframeEffect::processKeyframes): Deleted. |
| (WebCore::KeyframeEffect::computeStackingContextImpact): Deleted. |
| (WebCore::KeyframeEffect::apply): Deleted. |
| (WebCore::KeyframeEffect::shouldRunAccelerated): Deleted. |
| (WebCore::KeyframeEffect::getAnimatedStyle): Deleted. |
| (WebCore::KeyframeEffect::setAnimatedPropertiesInStyle): Deleted. |
| (WebCore::KeyframeEffect::startOrStopAccelerated): Deleted. |
| (WebCore::KeyframeEffect::renderer const): Deleted. |
| (WebCore::KeyframeEffect::currentStyle const): Deleted. |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffect.idl: |
| * animation/KeyframeEffectReadOnly.cpp: Copied from Source/WebCore/animation/KeyframeEffect.cpp. |
| (WebCore::IDLAttributeNameToAnimationPropertyName): |
| (WebCore::CSSPropertyIDToIDLAttributeName): |
| (WebCore::computeMissingKeyframeOffsets): |
| (WebCore::processIterableKeyframes): |
| (WebCore::processKeyframeLikeObject): |
| (WebCore::processPropertyIndexedKeyframes): |
| (WebCore::KeyframeEffectReadOnly::create): |
| (WebCore::KeyframeEffectReadOnly::KeyframeEffectReadOnly): |
| (WebCore::KeyframeEffectReadOnly::getKeyframes): |
| (WebCore::KeyframeEffectReadOnly::processKeyframes): |
| (WebCore::KeyframeEffectReadOnly::computeStackingContextImpact): |
| (WebCore::KeyframeEffectReadOnly::apply): |
| (WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): |
| (WebCore::KeyframeEffectReadOnly::getAnimatedStyle): |
| (WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): |
| (WebCore::KeyframeEffectReadOnly::startOrStopAccelerated): |
| (WebCore::KeyframeEffectReadOnly::renderer const): |
| (WebCore::KeyframeEffectReadOnly::currentStyle const): |
| * animation/KeyframeEffectReadOnly.h: Copied from Source/WebCore/animation/KeyframeEffect.h. |
| (WebCore::KeyframeEffectReadOnly::~KeyframeEffectReadOnly): |
| (WebCore::KeyframeEffectReadOnly::target const): |
| (WebCore::KeyframeEffectReadOnly::iterationComposite const): |
| (WebCore::KeyframeEffectReadOnly::composite const): |
| (WebCore::KeyframeEffectReadOnly::isRunningAccelerated const): |
| * animation/KeyframeEffectReadOnly.idl: Copied from Source/WebCore/animation/KeyframeEffect.idl. |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::create): |
| (WebCore::WebAnimation::setEffect): |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| * bindings/js/JSAnimationEffectReadOnlyCustom.cpp: Copied from Source/WebCore/bindings/js/JSAnimationEffectCustom.cpp. |
| (WebCore::toJSNewlyCreated): |
| (WebCore::toJS): |
| * bindings/js/JSAnimationEffectTimingReadOnlyCustom.cpp: Renamed from Source/WebCore/bindings/js/JSAnimationEffectCustom.cpp. |
| (WebCore::toJSNewlyCreated): |
| (WebCore::toJS): |
| * bindings/js/JSCustomEventCustom.cpp: |
| (WebCore::JSCustomEvent::detail const): Fix an error introduced in webkit.org/b/179591. |
| * bindings/js/JSWebAnimationCustom.cpp: |
| (WebCore::constructJSWebAnimation): |
| * bindings/js/WebCoreBuiltinNames.h: |
| |
| 2018-02-09 Andy Estes <aestes@apple.com> |
| |
| [Payment Request] Crash in PaymentRequest::canMakePayment() when Apple Pay payment method data is missing required fields |
| https://bugs.webkit.org/show_bug.cgi?id=182631 |
| |
| Reviewed by Mark Lam. |
| |
| PaymentRequest::canMakePayment() needs to parse each payment method's serialized data to |
| determine if it is a supported payment method. If parsing fails by raising an exception, we |
| intend to skip over that payment method and try the next one. If all payment method data |
| fail to parse, we resolve the returned promise with false. At no point do we intend to |
| propagate the parsing exception up to the calling script, however. |
| |
| Even though we intend to swallow any exceptions from parsing, we failed to clear the |
| JavaScript VM's exception state. The next time WebCore tries to execute JavaScript, a |
| release assertion is raised due to seeing an unexpected exception in the VM. |
| |
| Fix this by using a CatchScope in PaymentRequest::canMakePayment(), and calling |
| CatchScope::clearException() in the places we intend to swallow exceptions. |
| |
| Added a test case to http/tests/paymentrequest/payment-request-canmakepayment-method.https.html. |
| |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::PaymentRequest::canMakePayment): |
| |
| 2018-02-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move multicolumn descendant/sibling removal logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182628 |
| <rdar://problem/37369528> |
| |
| Reviewed by Antti Koivisto. |
| |
| No change in functionality |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::takeChild): |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::handleSpannerRemoval): Deleted. |
| (WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved): Deleted. |
| * rendering/RenderMultiColumnFlow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::multiColumnRelativeWillBeRemoved): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::handleSpannerRemoval): |
| (WebCore::RenderTreeBuilder::MultiColumn::multiColumnRelativeWillBeRemoved): |
| * rendering/updating/RenderTreeBuilderMultiColumn.h: |
| |
| 2018-02-09 Youenn Fablet <youenn@apple.com> |
| |
| Add support for cache storage of blob response |
| https://bugs.webkit.org/show_bug.cgi?id=182637 |
| |
| Reviewed by Brady Eidson. |
| |
| Covered by updated WPT test. |
| When putting a blob response in cache, create a readable stream to easily get the body. |
| Make clear that caching form data is not supported. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::put): |
| * Modules/fetch/FetchBody.h: |
| (WebCore::FetchBody::isBlob const): |
| (WebCore::FetchBody::isFormData const): |
| * Modules/fetch/FetchResponse.h: |
| |
| 2018-02-09 Youenn Fablet <youenn@apple.com> |
| |
| Make CoreAudioCaptureSource error logging be release logging |
| https://bugs.webkit.org/show_bug.cgi?id=182614 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| |
| * platform/mediastream/mac/CoreAudioCaptureSource.cpp: |
| (WebCore::CoreAudioSharedUnit::addEchoCancellationSource): |
| (WebCore::CoreAudioSharedUnit::setupAudioUnit): |
| (WebCore::CoreAudioSharedUnit::configureMicrophoneProc): |
| (WebCore::CoreAudioSharedUnit::configureSpeakerProc): |
| (WebCore::CoreAudioSharedUnit::checkTimestamps): |
| (WebCore::CoreAudioSharedUnit::provideSpeakerData): |
| (WebCore::CoreAudioSharedUnit::processMicrophoneSamples): |
| (WebCore::CoreAudioSharedUnit::cleanupAudioUnit): |
| (WebCore::CoreAudioSharedUnit::reconfigureAudioUnit): |
| (WebCore::CoreAudioSharedUnit::startInternal): |
| (WebCore::CoreAudioSharedUnit::verifyIsCapturing): |
| (WebCore::CoreAudioSharedUnit::stopInternal): |
| (WebCore::CoreAudioSharedUnit::defaultInputDevice): |
| |
| 2018-02-09 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Add a way to check if a host is an IP address |
| https://bugs.webkit.org/show_bug.cgi?id=182427 |
| |
| Reviewed by Alex Christensen. |
| |
| There are several places where this is needed. We currently just assume that any host ending in a digit is an IP |
| address, except in PublicSuffix where platform specific code is used. This patch adds URL::hostIsIPAddress() |
| platform specific implementations, falling back to current assumption if there isn't an implementation for the |
| platform. |
| |
| * page/OriginAccessEntry.cpp: |
| (WebCore::OriginAccessEntry::OriginAccessEntry): Use URL::hostIsIPAddress(). |
| * platform/URL.cpp: |
| (WebCore::URL::hostIsIPAddress): Fallback implementation. |
| * platform/URL.h: |
| * platform/mac/PublicSuffixMac.mm: |
| (WebCore::topPrivatelyControlledDomain): Use URL::hostIsIPAddress(). |
| * platform/mac/URLMac.mm: |
| (WebCore::URL::hostIsIPAddress): Move implementation from PublicSuffixMac.mm. |
| * platform/network/curl/CookieUtil.cpp: |
| (WebCore::CookieUtil::isIPAddress): Use URL::hostIsIPAddress(). |
| * platform/soup/URLSoup.cpp: |
| (WebCore::URL::hostIsIPAddress): Use g_hostname_is_ip_address(). |
| |
| 2018-02-08 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer][WebAudio] Winamp2-js woes |
| https://bugs.webkit.org/show_bug.cgi?id=182612 |
| |
| Reviewed by Xabier Rodriguez Calvar and Carlos Alberto Lopez Perez. |
| |
| Test: webaudio/silence-after-playback.html |
| |
| * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp: |
| (WebCore::copyGStreamerBuffersToAudioChannel): Clear the bus if |
| the adapter can't provide enough data. This prevents a nasty noise |
| after playing songs in Winamp. |
| (WebCore::AudioSourceProviderGStreamer::setClient): No need to set |
| the client more than once, this fixes runtime warnings. |
| |
| 2018-02-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move multicolumn spanner mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182627 |
| <rdar://problem/37367284> |
| |
| Reviewed by Antti Koivisto. |
| |
| Move spanner triggered mutation logic to RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::isColumnSpanningDescendant const): |
| (WebCore::findSetRendering): Deleted. |
| (WebCore::isValidColumnSpanner): Deleted. |
| (WebCore::spannerPlacehoderCandidate): Deleted. |
| (WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant): Deleted. |
| (WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted): Deleted. |
| * rendering/RenderMultiColumnFlow.h: |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::insertedIntoTree): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::multiColumnDescendantInserted): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::findSetRendering): |
| (WebCore::spannerPlacehoderCandidate): |
| (WebCore::isValidColumnSpanner): |
| (WebCore::RenderTreeBuilder::MultiColumn::multiColumnDescendantInserted): |
| (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant): |
| * rendering/updating/RenderTreeBuilderMultiColumn.h: |
| |
| 2018-02-09 Javier Fernandez <jfernandez@igalia.com> |
| |
| [css-align] Implement the new behavior of 'legacy' for justify-items |
| https://bugs.webkit.org/show_bug.cgi?id=172712 |
| |
| Reviewed by Antti Koivisto. |
| |
| The syntax of the 'justify-items' property accepts a new 'legacy' value, |
| replacing the 'auto' value which is now parsed as invalid. |
| |
| https://github.com/w3c/csswg-drafts/issues/1318 |
| |
| This change affects also to the 'place-items' shorthand, which doesn't |
| accept 'auto' and, for the time being, neither 'legacy'. |
| |
| Since the new value 'legacy' is also the default value, I don't expect |
| this change to break content of sites currently using the 'justify-items' |
| property. |
| |
| No new tests, rebaselined existing test. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::valueForItemPositionWithOverflowAlignment): |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSPrimitiveValueMappings.h: |
| (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): |
| (WebCore::CSSPrimitiveValue::operator ItemPosition const): |
| * css/CSSProperties.json: |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::adjustRenderStyle): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::isAuto): |
| (WebCore::isNormalOrStretch): |
| (WebCore::consumeSelfPositionOverflowPosition): |
| (WebCore::consumeJustifyItems): |
| (WebCore::consumeSimplifiedDefaultPosition): |
| (WebCore::consumeSimplifiedSelfPosition): |
| (WebCore::CSSPropertyParser::consumePlaceItemsShorthand): |
| (WebCore::CSSPropertyParser::consumePlaceSelfShorthand): |
| * rendering/RenderFlexibleBox.cpp: |
| (WebCore::alignmentOffset): |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::columnAxisPositionForChild const): |
| (WebCore::RenderGrid::rowAxisPositionForChild const): |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::resolvedSelfAlignment): |
| (WebCore::RenderStyle::resolvedJustifyItems const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::initialJustifyItems): |
| * rendering/style/RenderStyleConstants.h: |
| * rendering/style/StyleRareNonInheritedData.cpp: |
| (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): |
| |
| 2018-02-09 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [EME][GStreamer] Add support for encrypted caps in GStreamerUtilities |
| https://bugs.webkit.org/show_bug.cgi?id=181990 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Add the support of encrypted caps in GStreamerUtilities. |
| Refactor the manner that the caps are handled, such as how to extract the resolution |
| from the video caps or how to check if the caps are encrypted. |
| |
| The attachTrack function in PlaybackPipeline doesn't need the "structure" parameter, |
| it is already included in the "caps" parameter. |
| |
| Replace the "mediaType" parameter by the "caps" parameter in reattachTrack function, |
| it allows to use the new functions that handle the caps in GStreamerUtilities. |
| |
| Tests: |
| media/encrypted-media/clearKey/clearKey-cenc-audio-playback-mse.html |
| media/encrypted-media/clearKey/clearKey-cenc-video-playback-mse.html |
| |
| * platform/graphics/gstreamer/GStreamerUtilities.cpp: |
| (WebCore::getVideoSizeAndFormatFromCaps): Add the support of video encrypted caps. |
| (WebCore::getVideoResolutionFromCaps): |
| (WebCore::capsMediaType): |
| (WebCore::doCapsHaveType): |
| (WebCore::areEncryptedCaps): Add a new functions in order to handle the caps properly. |
| * platform/graphics/gstreamer/GStreamerUtilities.h: |
| * platform/graphics/gstreamer/mse/AppendPipeline.cpp: |
| (WebCore::AppendPipeline::parseDemuxerSrcPadCaps): |
| * platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp: |
| (WebCore::GStreamerMediaDescription::codec const): |
| (WebCore::GStreamerMediaDescription::isVideo const): |
| (WebCore::GStreamerMediaDescription::isAudio const): |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected): |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| (WebCore::PlaybackPipeline::attachTrack): |
| (WebCore::PlaybackPipeline::reattachTrack): |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.h: |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp: |
| (webKitMediaSrcUpdatePresentationSize): Refactor some parts by using the new added functions. |
| |
| 2018-02-09 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Layout test fast/replaced/border-radius-clip.html crashes with GStreamer-CRITICAL **: gst_segment_to_stream_time: assertion 'segment->format == format' failed in gst_segment_to_stream_time() |
| https://bugs.webkit.org/show_bug.cgi?id=176802 |
| |
| Reviewed by Xabier Rodriguez Calvar. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::load): Prevent the player from loading animated gifs. |
| |
| 2018-02-09 Antti Koivisto <antti@apple.com> |
| |
| Move compiled selectors to StyleRule |
| https://bugs.webkit.org/show_bug.cgi?id=182602 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Currently they are owned by RuleData. Several RuleData objects can refer to the same StyleRule, requiring recompilation. |
| Compiled selectors are context-independent so they can be shared between all clients. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * css/CSSSelectorList.cpp: |
| (WebCore::CSSSelectorList::listSize const): |
| |
| Compute the number of complex selectors on the list. |
| |
| * css/CSSSelectorList.h: |
| * css/DocumentRuleSets.cpp: |
| (WebCore::makeRuleSet): |
| (WebCore::DocumentRuleSets::classInvalidationRuleSets const): |
| |
| Pass around list index along with the selector index (compiled selectors are found by list index). |
| |
| * css/ElementRuleCollector.cpp: |
| (WebCore::ElementRuleCollector::ruleMatches): |
| * css/RuleSet.cpp: |
| (WebCore::RuleData::RuleData): |
| * css/RuleSet.h: |
| (WebCore::RuleData::compilationStatus const): Deleted. |
| (WebCore::RuleData::compiledSelectorCodeRef const): Deleted. |
| (WebCore::RuleData::setCompiledSelector const): Deleted. |
| (WebCore::RuleData::~RuleData): Deleted. |
| (WebCore::RuleData::compiledSelectorUsed const): Deleted. |
| * css/StyleRule.cpp: |
| (WebCore::StyleRule::StyleRule): |
| * css/StyleRule.h: |
| |
| Add CompiledSelector member. |
| |
| * cssjit/CompiledSelector.h: Added. |
| |
| Move to a header of its own to keeps dependencies simple. |
| |
| (WebCore::SelectorCompilationStatus::SelectorCompilationStatus): |
| (WebCore::SelectorCompilationStatus::operator Status const): |
| * cssjit/SelectorCompiler.h: |
| (): Deleted. |
| (WebCore::SelectorCompilationStatus::SelectorCompilationStatus): Deleted. |
| (WebCore::SelectorCompilationStatus::operator Status const): Deleted. |
| |
| 2018-02-08 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Always expose "composite" in output of getKeyframes() |
| https://bugs.webkit.org/show_bug.cgi?id=182600 |
| |
| Reviewed by Dean Jackson. |
| |
| The Web Animations spec has changed and whereas the output of getKeyframes() would not feature the "composite" property |
| for "null" values, it now lists "composite" in all cases. |
| |
| To support this, we needed to fix an issue in the code generator such that a "null" default value for an optional enum |
| type was supported. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::getKeyframes): |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffect.idl: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateDefaultValue): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::convertDictionary<TestObj::Dictionary>): |
| (WebCore::convertDictionaryToJS): |
| * bindings/scripts/test/TestObj.idl: |
| |
| 2018-02-08 Youenn Fablet <youenn@apple.com> |
| |
| CoreAudioCaptureSourceIOSListener should be a WebProcess singleton |
| https://bugs.webkit.org/show_bug.cgi?id=182606 |
| <rdar://problem/37355283> |
| |
| Reviewed by Eric Carlson. |
| |
| Not testable right now as this relies on iOS specific Core Audio stack. |
| Efforts should be made to somehow mock that part and mock interruptions. |
| |
| Made CoreAudioCaptureSourceFactoryIOS responsible to receive iOS interruption messages. |
| Before the patch, individual capture sources were receiving these messages. |
| When there is only one capture source per process this is fine but with more capture sources, |
| this is messing up things as they all share the same shared unit and we would try to interrupt it or resume it several times. |
| |
| Also, if we are suspended and there is no more capture source, the shared unit will remain suspended indefinitely, as we will |
| not process the interruption messages. |
| With the patch, we always process the messages. |
| We still go through the active source as done now to limit the changes. |
| In case of no source, we go to the shared unit. |
| In the future, we should directly go to the shared unit and clients of the shared unit should see their state being updated. |
| |
| As a way to prevent staying suspended on iOS, we unsuspend ourselves in CoreAudioCaptureSource constructor. |
| This is fine as this constructor is only called when getUserMedia grants access to the camera which always goes to the UIProcess. |
| And the UIProcess is only processing getUserMedia calls if the WebProcess is foregrounded. |
| |
| * platform/mediastream/ios/CoreAudioCaptureSourceIOS.h: |
| * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm: |
| (-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]): |
| (WebCore::CoreAudioCaptureSourceFactoryIOS::CoreAudioCaptureSourceFactoryIOS): |
| (WebCore::CoreAudioCaptureSourceFactoryIOS::~CoreAudioCaptureSourceFactoryIOS): |
| (WebCore::CoreAudioCaptureSourceFactory::singleton): |
| * platform/mediastream/mac/CoreAudioCaptureSource.cpp: |
| (WebCore::CoreAudioCaptureSourceFactory::singleton): |
| (WebCore::CoreAudioCaptureSource::create): |
| (WebCore::CoreAudioCaptureSourceFactory::beginInterruption): |
| (WebCore::CoreAudioCaptureSourceFactory::endInterruption): |
| (WebCore::CoreAudioCaptureSourceFactory::scheduleReconfiguration): |
| (WebCore::CoreAudioCaptureSource::factory): |
| (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): |
| (WebCore::CoreAudioCaptureSource::~CoreAudioCaptureSource): |
| (WebCore::CoreAudioCaptureSource::startProducingData): |
| (WebCore::CoreAudioCaptureSource::scheduleReconfiguration): |
| (WebCore::CoreAudioCaptureSource::beginInterruption): |
| (WebCore::CoreAudioCaptureSource::endInterruption): |
| * platform/mediastream/mac/CoreAudioCaptureSource.h: |
| (WebCore::CoreAudioCaptureSourceFactory::setCoreAudioActiveSource): |
| (WebCore::CoreAudioCaptureSourceFactory::unsetCoreAudioActiveSource): |
| (WebCore::CoreAudioCaptureSourceFactory::coreAudioActiveSource): |
| |
| 2018-02-08 Chris Dumez <cdumez@apple.com> |
| |
| There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld |
| https://bugs.webkit.org/show_bug.cgi?id=182524 |
| <rdar://problem/9057327> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add new flag on DOMWrapperWorld indicating if the [OverrideBuiltins] behavior should |
| be enabled in this world or not. The behavior is enabled by default for Web-compatibility. |
| This flag is queried in accessVisibleNamedProperty() when doing the named property |
| lookup. |
| |
| Covered by new API test. |
| |
| * bindings/js/DOMWrapperWorld.h: |
| (WebCore::DOMWrapperWorld::disableOverrideBuiltinsBehavior): |
| (WebCore::DOMWrapperWorld::shouldDisableOverrideBuiltinsBehavior const): |
| * bindings/js/JSDOMAbstractOperations.h: |
| (WebCore::accessVisibleNamedProperty): |
| |
| 2018-02-08 Per Arne Vollan <pvollan@apple.com> |
| |
| Move WebVideoFullscreenController from WebCore to WebKitLegacy. |
| https://bugs.webkit.org/show_bug.cgi?id=182615 |
| |
| Reviewed by Eric Carlson. |
| |
| It is only used by WK1. Also there are a few references to NSApp in WebVideoFullscreenController.mm. |
| Ideally, we should not reference NSApp in WebCore. |
| |
| No new tests. No change in behavior. |
| |
| * SourcesMac.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * html/HTMLMediaElement.h: |
| * platform/mac/WebVideoFullscreenController.h: Removed. |
| * platform/mac/WebVideoFullscreenController.mm: Removed. |
| * platform/mac/WebVideoFullscreenHUDWindowController.h: Removed. |
| * platform/mac/WebVideoFullscreenHUDWindowController.mm: Removed. |
| * platform/mac/WebWindowAnimation.h: Removed. |
| * platform/mac/WebWindowAnimation.mm: Removed. |
| |
| 2018-02-08 Chris Dumez <cdumez@apple.com> |
| |
| Form submission after navigation fails when decidePolicyForNavigationAction is async |
| https://bugs.webkit.org/show_bug.cgi?id=182412 |
| <rdar://problem/35181099> |
| |
| Reviewed by Alex Christensen. |
| |
| When the form is submitted and schedules the load in an iframe that is already loading, |
| FrameLoader::stopLoading() is called as expected. However, because policy checks can |
| now be asynchronous, stopLoading() also needs to stop pending policy checks. Otherwise, |
| continueLoadAfterNavigationPolicy() gets called for a cancelled load and we're in trouble |
| because the FrameLoader was reused for another load since then. |
| |
| Test: http/tests/navigation/sync-form-submit-iframe.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::stopLoading): |
| |
| 2018-02-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Do not use RenderTreeBuilder::current() in RenderRubyRun::takeChild |
| https://bugs.webkit.org/show_bug.cgi?id=182607 |
| <rdar://problem/37355944> |
| |
| Reviewed by Sam Weinig. |
| |
| No change in functionality. |
| |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): |
| |
| 2018-02-08 Antti Koivisto <antti@apple.com> |
| |
| Use invalidation rulesets for attribute selectors |
| https://bugs.webkit.org/show_bug.cgi?id=182569 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Attribute change style invalidation should use invalidation rulesets, similarly how class change invalidation already does. |
| We'll invalidate fewer unnecessary elements immediately and enable more significant future gains. |
| |
| * css/DocumentRuleSets.cpp: |
| (WebCore::DocumentRuleSets::collectFeatures const): |
| (WebCore::DocumentRuleSets::classInvalidationRuleSets const): |
| (WebCore::DocumentRuleSets::attributeInvalidationRuleSets const): |
| |
| Make and cache invalidation RuleSets for an attribute. |
| |
| (WebCore::DocumentRuleSets::ancestorAttributeRulesForHTML const): Deleted. |
| * css/DocumentRuleSets.h: |
| * css/RuleFeature.cpp: |
| (WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector): |
| |
| Collect attribute selectors along with match elements. |
| |
| (WebCore::RuleFeatureSet::collectFeatures): |
| (WebCore::RuleFeatureSet::add): |
| (WebCore::RuleFeatureSet::registerContentAttribute): |
| |
| Separate hash to deal with invalidation of content:attr(foo) special case. |
| |
| (WebCore::RuleFeatureSet::clear): |
| (WebCore::RuleFeatureSet::shrinkToFit): |
| (WebCore::makeAttributeSelectorKey): Deleted. |
| * css/RuleFeature.h: |
| (WebCore::RuleFeature::RuleFeature): |
| * css/StyleBuilderCustom.h: |
| (WebCore::StyleBuilderCustom::applyValueContent): |
| (WebCore::StyleBuilderCustom::applyValueAlt): |
| |
| Use registerContentAttribute() |
| |
| * html/HTMLEmbedElement.cpp: |
| (WebCore::hasTypeOrSrc): |
| (WebCore::HTMLEmbedElement::parseAttribute): |
| |
| Invalidate style if both type and src attributes go missing as this changes result of rendererIsNeeded(). |
| This was previously relying on any attribute change invalidating style. |
| |
| (WebCore::HTMLEmbedElement::rendererIsNeeded): |
| * style/AttributeChangeInvalidation.cpp: |
| (WebCore::Style::AttributeChangeInvalidation::invalidateStyle): |
| |
| Collect the invalidation rulesets for this attribute change. |
| Also check if any attribute selector actually changes state, unlike with classes attribute changes may |
| often not lead to a selector becoming non-matching. |
| |
| (WebCore::Style::AttributeChangeInvalidation::invalidateStyleWithRuleSets): |
| (WebCore::Style::AttributeChangeInvalidation::invalidateDescendants): Deleted. |
| * style/AttributeChangeInvalidation.h: |
| (WebCore::Style::AttributeChangeInvalidation::AttributeChangeInvalidation): |
| (WebCore::Style::AttributeChangeInvalidation::~AttributeChangeInvalidation): |
| * style/ClassChangeInvalidation.cpp: |
| (WebCore::Style::ClassChangeInvalidation::computeInvalidation): |
| |
| Should not bail on shadow tree invalidation as we may also need to invalidate siblings. |
| |
| 2018-02-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Introduce RenderTreeBuilder to moveChild(ren)To() functions |
| https://bugs.webkit.org/show_bug.cgi?id=182596 |
| <rdar://problem/37340553> |
| |
| Reviewed by Sam Weinig. |
| |
| This is in preparation for moving mutation code out of moveChildTo/moveChildrenTo. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::dropAnonymousBoxChild): |
| (WebCore::RenderBlock::takeChild): |
| * rendering/RenderBlock.h: |
| (WebCore::RenderBlock::moveAllChildrenIncludingFloatsTo): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::styleDidChange): |
| (WebCore::RenderBlockFlow::moveAllChildrenIncludingFloatsTo): |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::moveChildTo): |
| (WebCore::RenderBoxModelObject::moveChildrenTo): |
| * rendering/RenderBoxModelObject.h: |
| (WebCore::RenderBoxModelObject::moveChildTo): |
| (WebCore::RenderBoxModelObject::moveAllChildrenTo): |
| (WebCore::RenderBoxModelObject::moveChildrenTo): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleDidChange): |
| (WebCore::RenderElement::removeAnonymousWrappersForInlinesIfNecessary): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::makeChildrenNonInline): |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| (WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded): |
| (WebCore::RenderTreeBuilder::childFlowStateChangesAndNoLongerAffectsParentBlock): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| |
| 2018-02-08 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228261. |
| |
| This broke an internal build |
| |
| Reverted changeset: |
| |
| "Add a way to check if a host is an IP address" |
| https://bugs.webkit.org/show_bug.cgi?id=182427 |
| https://trac.webkit.org/changeset/228261 |
| |
| 2018-02-08 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] WebKit improperly handles missing GStreamer elements |
| https://bugs.webkit.org/show_bug.cgi?id=171205 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Add a |
| test checking the videoflip element was correctly created. It |
| might not be available on some exotic distros such as Gentoo. |
| |
| 2018-02-08 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Defer attribute computation until needed. |
| https://bugs.webkit.org/show_bug.cgi?id=182386 |
| <rdar://problem/37115277> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Accessibility is doing too much work when handling attribute changes. Here's how we can improve this: |
| 1) Defer attribute changes while the tree is dirty (and coalesce them). |
| 2) Don't create AXObjects when an attribute changes unnecessarily. If no client has requested an ax object, it's likely no work needs to be done |
| (with the exception of a few attributes like aria-modal) |
| 3) Stop calculating the entire accessible ARIA label when trying to decide if an element should be ignored. That's generally wasteful and the |
| consequence of including more AX elements in the tree is very minimal. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::rendererNeedsDeferredUpdate): |
| (WebCore::nodeAndRendererAreValid): |
| (WebCore::AXObjectCache::remove): |
| (WebCore::AXObjectCache::handleAriaExpandedChange): |
| (WebCore::AXObjectCache::handleAriaRoleChanged): |
| (WebCore::AXObjectCache::deferAttributeChangeIfNeeded): |
| (WebCore::AXObjectCache::shouldProcessAttributeChange): |
| (WebCore::AXObjectCache::handleAttributeChange): |
| (WebCore::AXObjectCache::prepareForDocumentDestruction): |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| (WebCore::AXObjectCache::deferRecomputeIsIgnoredIfNeeded): |
| (WebCore::AXObjectCache::deferRecomputeIsIgnored): |
| (WebCore::AXObjectCache::deferTextChangedIfNeeded): |
| (WebCore::AXObjectCache::deferSelectedChildrenChangedIfNeeded): |
| (WebCore::AXObjectCache::handleAttributeChanged): Deleted. |
| * accessibility/AXObjectCache.h: |
| (WebCore::AXObjectCache::deferAttributeChangeIfNeeded): |
| (WebCore::AXObjectCache::handleAttributeChanged): Deleted. |
| * accessibility/AccessibilityNodeObject.cpp: |
| (WebCore::AccessibilityNodeObject::hasAttributesRequiredForInclusion const): |
| * accessibility/AccessibleNode.cpp: |
| (WebCore::AccessibleNode::notifyAttributeChanged): |
| * dom/Element.cpp: |
| (WebCore::Element::attributeChanged): |
| |
| 2018-02-08 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, tiny partial rollout of r228260 as it caused some worker failures |
| |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::toJSDOMGlobalObject): |
| * bindings/js/JSDOMGlobalObject.h: |
| * bindings/js/JSErrorHandler.cpp: |
| (WebCore::JSErrorHandler::handleEvent): |
| * bindings/js/JSEventListener.cpp: |
| (WebCore::toJSDOMGlobalObject): Deleted. |
| |
| 2018-02-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement::removeAnonymousWrappersForInlinesIfNecessary to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182582 |
| <rdar://problem/37327890> |
| |
| Reviewed by Antti Koivisto. |
| |
| Tree mutation -> RenderTreeBuilder. |
| |
| No change in functionality |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleDidChange): |
| (WebCore::RenderElement::removeAnonymousWrappersForInlinesIfNecessary): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::removeAnonymousWrappersForInlinesIfNecessary): |
| (WebCore::RenderTreeBuilder::childFlowStateChangesAndNoLongerAffectsParentBlock): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilder.h: |
| |
| 2018-02-08 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] LayoutTest webaudio/silent-audio-interrupted-in-background.html makes its subsequent test flaky crash |
| https://bugs.webkit.org/show_bug.cgi?id=173916 |
| |
| Reviewed by Xabier Rodriguez Calvar. |
| |
| This patch fixes two crashes and a runtime warning: |
| |
| - The provider client configuration should be done from the main |
| thread but the no-more-pads signal of deinterleave was fired from |
| a non-main thread. |
| |
| - The deinterleave pad-removed signal can be fired for a not fully |
| configured pipeline if the audio context is interrupted. So the |
| peer quark of the removed pad needs to be checked, it might be a |
| null pointer. |
| |
| - The provider connects to the deinterleave signals only when a |
| client is provided, so the signal disconnection needs to check |
| that to avoid runtime warnings. |
| |
| * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp: |
| (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer): |
| Create a main thread notifier. |
| (WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): |
| Invalidate notifier and check a client was set before |
| disconnecting from deinterleave signals. |
| (WebCore::AudioSourceProviderGStreamer::handleRemovedDeinterleavePad): |
| Check validity of the pad peer. |
| (WebCore::AudioSourceProviderGStreamer::deinterleavePadsConfigured): |
| Set client from main thread. |
| * platform/audio/gstreamer/AudioSourceProviderGStreamer.h: |
| |
| 2018-02-08 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer][WebAudio] No need for version check in each loop iteration |
| https://bugs.webkit.org/show_bug.cgi?id=182577 |
| |
| Reviewed by Xabier Rodriguez Calvar. |
| |
| * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp: |
| (webkit_web_audio_src_init): Detect version once only, when creating the element. |
| (webKitWebAudioSrcLoop): Use boolean variable instead of checking the version every time. |
| |
| 2018-02-08 Frederic Wang <fwang@igalia.com> |
| |
| Add scrolling node types to distinguish main frames and subframes. |
| https://bugs.webkit.org/show_bug.cgi?id=182533 |
| |
| Reviewed by Simon Fraser. |
| |
| This patch splits FrameScrollingNode type into two types: MainFrameScrollingNode and |
| SubframeScrollingNode. This is needed because new places in the code are likely to |
| distinguish them e.g. in ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll |
| or when iOS frame scrolling is introduced (see bug 173833). |
| |
| No new tests, behavior unchanged. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView): This is only called |
| for main frames, so pass MainFrameScrollingNode. |
| * page/scrolling/ScrollingCoordinator.cpp: |
| (WebCore::operator<<): Distinguish subframe and main frame when dumping. |
| * page/scrolling/ScrollingCoordinator.h: Split FrameScrollingNode into two cases. |
| * page/scrolling/ScrollingStateFrameScrollingNode.cpp: Add node type to constructor and |
| ASSERT it remains of type FrameScrollingNode. |
| (WebCore::ScrollingStateFrameScrollingNode::create): |
| (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode): |
| * page/scrolling/ScrollingStateFrameScrollingNode.h: Add node type to constructor. |
| * page/scrolling/ScrollingStateNode.h: |
| (WebCore::ScrollingStateNode::isFrameScrollingNode const): Includes the two cases. |
| * page/scrolling/ScrollingStateTree.cpp: |
| (WebCore::ScrollingStateTree::createNode): Split FrameScrollingNode into two cases and pass |
| the node type. |
| (WebCore::ScrollingStateTree::attachNode): The first case only happens for main frames while |
| the second case only happens with subframes. Use the appriate node type. |
| * page/scrolling/ScrollingTreeFrameScrollingNode.cpp: Add node type to constructor and |
| ASSERT it remains of type FrameScrollingNode. |
| (WebCore::ScrollingTreeFrameScrollingNode::ScrollingTreeFrameScrollingNode): |
| * page/scrolling/ScrollingTreeFrameScrollingNode.h: Add node type to constructor. |
| * page/scrolling/ScrollingTreeNode.h: Includes the two cases. |
| (WebCore::ScrollingTreeNode::isFrameScrollingNode const): |
| * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Add node type to constructor. |
| * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Ditto. |
| (WebCore::ScrollingTreeFrameScrollingNodeIOS::create): |
| (WebCore::ScrollingTreeFrameScrollingNodeIOS::ScrollingTreeFrameScrollingNodeIOS): |
| * page/scrolling/ios/ScrollingTreeIOS.cpp: Split FrameScrollingNode into two cases. |
| (WebCore::ScrollingTreeIOS::createScrollingTreeNode): |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: Add node type to constructor. |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: Ditto. |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::create): |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac): |
| * page/scrolling/mac/ScrollingTreeMac.cpp: Split FrameScrollingNode into two cases. |
| (ScrollingTreeMac::createScrollingTreeNode): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers): Distinguish the cases of |
| main frames and subframes. |
| (WebCore::scrollCoordinationRoleForNodeType): Split FrameScrollingNode into two cases. |
| (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame): Distinguish the cases |
| of main frames and subframes. |
| (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer): Split FrameScrollingNode into |
| two cases. |
| |
| 2018-02-07 Darin Adler <darin@apple.com> |
| |
| Try to fix ErrorEvent tests seen failing on buildbot after fix for bug 179591. |
| |
| * bindings/js/JSErrorHandler.cpp: |
| (WebCore::JSErrorHandler::handleEvent): Add back line of code accidentally removed. |
| |
| 2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Add a way to check if a host is an IP address |
| https://bugs.webkit.org/show_bug.cgi?id=182427 |
| |
| Reviewed by Alex Christensen. |
| |
| There are several places where this is needed. We currently just assume that any host ending in a digit is an IP |
| address, except in PublicSuffix where platform specific code is used. This patch adds URL::hostIsIPAddress() |
| platform specific implementations, falling back to current assumption if there isn't an implementation for the |
| platform. |
| |
| * page/OriginAccessEntry.cpp: |
| (WebCore::OriginAccessEntry::OriginAccessEntry): Use URL::hostIsIPAddress(). |
| * platform/URL.cpp: |
| (WebCore::URL::hostIsIPAddress): Fallback implementation. |
| * platform/URL.h: |
| * platform/mac/PublicSuffixMac.mm: |
| (WebCore::topPrivatelyControlledDomain): Use URL::hostIsIPAddress(). |
| * platform/mac/URLMac.mm: |
| (WebCore::URL::hostIsIPAddress): Move implementation from PublicSuffixMac.mm. |
| * platform/network/curl/CookieUtil.cpp: |
| (WebCore::CookieUtil::isIPAddress): Use URL::hostIsIPAddress(). |
| * platform/soup/URLSoup.cpp: |
| (WebCore::URL::hostIsIPAddress): Use g_hostname_is_ip_address(). |
| |
| 2018-01-13 Darin Adler <darin@apple.com> |
| |
| Event improvements |
| https://bugs.webkit.org/show_bug.cgi?id=179591 |
| |
| Reviewed by Chris Dumez. |
| |
| - removed all use of Deprecated::ScriptValue |
| |
| - fixed uses of JSC::Strong that can lead to reference cycles in CustomEvent, |
| MessageEvent, and PopStateEvent, refactoring to share more code |
| |
| - removed incorrect use of CachedAttribute on attributes that can change values |
| (should have fixed a bug; can we find a way to test this?) |
| |
| - did a more thorough job of clearing state from events, including clearing |
| certain things before dispatching, and clearing more in initKeyboardEvent |
| (may have fixed some obscure low-severity bugs; can we find a way to test this?) |
| |
| - removed "dummy" keyboard events |
| |
| - reworked code that omits details from error events for security reasons; |
| old approach was "sanitizing" the error by removing the details if not |
| allowed, new approach is adding the details only if allowed |
| |
| * Modules/encryptedmedia/NavigatorEME.h: Added forward declaration needed |
| to compile. |
| |
| * Modules/indexeddb/IDBCursor.h: Added comment about incorrect use of JSC::Strong. |
| * Modules/indexeddb/IDBRequest.h: Ditto. |
| * Modules/paymentrequest/PaymentResponse.h: Ditto. |
| |
| * WebCore.xcodeproj/project.pbxproj: Added JSValueInWrappedObject.h. |
| |
| * bindings/js/CommonVM.cpp: |
| (WebCore::commonVMSlow): Use VM::create instead of VM::createLeaked. Also use |
| local variable instead of the global. |
| |
| * bindings/js/DOMWrapperWorld.h: Put the inline bodies of the currentWorld and |
| worldForDOMObject functions separate from the declarations; long term goal is |
| that the declarations serve as documentation, and are not interspersed with the |
| implementations. Changed currentWorld to take a reference instead of a pointer |
| to ExecState. Added isWorldCompatible function. |
| |
| * bindings/js/JSCustomElementInterface.cpp: |
| (WebCore::JSCustomElementInterface::upgradeElement): Use toJSDOMWindow instead |
| of toJSDOMGlobalObject and added check for null. |
| (WebCore::JSCustomElementInterface::invokeCallback): Ditto. |
| |
| * bindings/js/JSCustomEventCustom.cpp: |
| (WebCore::JSCustomEvent::detail const): Use cachedPropertyValue. |
| (WebCore::JSCustomEvent::visitAdditionalChildren): Added. Needed now that we are |
| using JSValueInWrappedObject instead of JSC::Strong. |
| |
| * bindings/js/JSDOMConvertEventListener.h: |
| (WebCore::Converter<IDLEventListener<T>>::convert): Pass a reference. |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::toJSDOMGlobalObject): Ditto. |
| |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::JSDOMGlobalObject::JSDOMGlobalObject): Moved initialization to nullptr |
| to the header. |
| (WebCore::toJSDOMGlobalObject): Deleted. |
| * bindings/js/JSDOMGlobalObject.h: Updated for the above. |
| |
| * bindings/js/JSDOMWindowBase.h: Updated includes. Added "DOMWindow.h" but also |
| expanded the deprecated "JSDOMBinding.h" into all the things it includes. |
| |
| * bindings/js/JSDOMWindowProxy.cpp: |
| (WebCore::JSDOMWindowProxy::finishCreation): Tweak argument type to match usage. |
| (WebCore::JSDOMWindowProxy::create): Moved here from header, rolled in the code |
| that creates the structure. |
| (WebCore::JSDOMWindowProxy::setWindow): Take a reference instead of a pointer |
| or a RefPtr&&. |
| (WebCore::JSDOMWindowProxy::toWrapped): Use ? : instead of if. |
| (WebCore::toJS): Pass a reference. |
| * bindings/js/JSDOMWindowProxy.h: Updated for abvoe changes. |
| |
| * bindings/js/JSDOMWrapper.cpp: |
| (WebCore::cloneAcrossWorlds): Added. |
| * bindings/js/JSDOMWrapper.h: Ditto. |
| |
| * bindings/js/JSErrorHandler.cpp: |
| (WebCore::JSErrorHandler::JSErrorHandler): Changed to take a reference. |
| Marked inline. |
| (WebCore::JSErrorHandler::create): Moved here from header. No longer inline, but |
| the constructor is now inline, so same number of levels of function calls, and |
| less code compiled at the call site and less to compile in the header. |
| (WebCore::JSErrorHandler::handleEvent): Use toJSDOMWindow instead |
| of toJSDOMGlobalObject. |
| * bindings/js/JSErrorHandler.h: Ditto. Also made createJSErrorHandler take |
| references instead of pointers. |
| |
| * bindings/js/JSEventListener.cpp: |
| (WebCore::JSEventListener::create): Moved here from the header. |
| (WebCore::createEventListenerForEventHandlerAttribute): Updated for change to |
| currentWorld. |
| (WebCore::toJSDOMGlobalObject): Moved here from JSDOMGlobalObject.cpp because |
| this is the only place this function is used now. Also, this was one of four |
| different overrides and so it was good to delete the other three. Also updated |
| to take a reference rather than a "must not be null" pointer. |
| (WebCore::JSEventListener::handleEvent): Coding style tweaks. |
| (WebCore::JSEventListener::virtualisAttribute const): Deleted. Now isAttribute |
| is virtual and uses final as needed to remain inline-able and efficient. |
| (WebCore::JSEventListener::operator== const): Use is<> and downcast<> instead |
| of JSEventListener::cast. |
| (WebCore::eventHandlerAttribute): Updated for change to currentWorld. |
| (WebCore::setEventHandlerAttribute): Ditto. |
| (WebCore::setWindowEventHandlerAttribute): Ditto. |
| (WebCore::setDocumentEventHandlerAttribute): Ditto. |
| |
| * bindings/js/JSEventListener.h: Moved create functions into the cpp file. |
| Removed the cast function, since callers can use is<> and downcast<> instead. |
| Use final rather than override and made isAttribute override the virtual |
| function in the base class, eliminating virtualIsAttribute. |
| |
| * bindings/js/JSExtendableMessageEventCustom.cpp: |
| (WebCore::JSExtendableMessageEvent::data const): Use isWorldCompatible. |
| Still need to return here and fix the reference cycle for this class. |
| |
| * bindings/js/JSLazyEventListener.cpp: |
| (WebCore::eventParameterName): Moved up so it can be used by the constructor. |
| (WebCore::convertZeroToOne): Added, so that the constructor can fix up text |
| positions passed in to it as part of initializing a data member. |
| (WebCore::JSLazyEventListener::JSLazyEventListener): Changed to take |
| a CreationArguments object instead of lots of separate arguments. |
| (WebCore::JSLazyEventListener::initializeJSFunction const): Removed unneeded |
| checks of m_code and m_eventParameterName, both guaranteed not to be null |
| by the constructor. Tweaked coding style a bit. |
| (WebCore::JSLazyEventListener::create): Pass CreationArguments object. |
| * bindings/js/JSLazyEventListener.h: Updated for above changes. Changed the |
| m_eventParameterName to be a reference since it's always a global string |
| that is never destroyed. |
| |
| * bindings/js/JSMessageEventCustom.cpp: |
| (WebCore::JSMessageEvent::data const): Use cachedPropertyValue and also |
| updated for the new version of MessageEvent that uses a Variant instead |
| of a type plus separate functions for each type. |
| (WebCore::JSMessageEvent::visitAdditionalChildren): Added. Needed now that we are |
| using JSValueInWrappedObject instead of JSC::Strong. |
| |
| * bindings/js/JSPopStateEventCustom.cpp: |
| (WebCore::JSPopStateEvent::state const): Use isWorldCompatible and also updated |
| to use JSValueInWrappedObject instead of JSC::Strong. Would be nice to share more |
| code with CustomEvent and MessageEvent, but at the moment they are subtly different. |
| Changed cacheState from a function to a lambda. |
| (WebCore::JSPopStateEvent::visitAdditionalChildren): Added. Needed now that we are |
| using JSValueInWrappedObject instead of JSC::Strong. |
| |
| * bindings/js/JSValueInWrappedObject.h: Added. |
| |
| * bindings/js/ScriptCachedFrameData.cpp: |
| (WebCore::ScriptCachedFrameData::restore): Updated for changes to JSDOMWindowProxy. |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::createWindowProxy): Ditto. |
| (WebCore::ScriptController::setDOMWindowForWindowProxy): Ditto. |
| |
| * bindings/js/WorkerScriptController.cpp: Removed include of ScriptValue.h. |
| (WebCore::WorkerScriptController::evaluate): Reworked to use the new |
| canIncludeErrorDetails instead of sanitizeScriptError. Added a FIXME about the |
| strange handling of the error message out argument. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateRuntimeEnableConditionalString): Pass a reference to worldForDOMObject. |
| (GenerateImplementation): Removed an incorrect comment about a removed error |
| check that is truly unneeded. |
| (GenerateAttributeGetterBodyDefinition): Pass a reference to worldForDOMObject. |
| (GenerateAttributeSetterBodyDefinition): Pass references to createJSErrorHandler |
| and worldForDOMObject. |
| (GenerateCallWith): Pass a reference to worldForDOMObject. |
| |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: Updated for above changes. |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: Ditto. |
| * bindings/scripts/test/JS/JSTestObj.cpp: Ditto. |
| |
| * dom/CustomEvent.cpp: |
| (WebCore::CustomEvent::CustomEvent): Marked inline. Removed now unneeded |
| ExecState argument. |
| (WebCore::CustomEvent::create): Moved here from header. No longer inline, but |
| the constructor is now inline, so same number of levels of function calls, and |
| less code compiled at the call site and less to compile in the header. |
| (WebCore::CustomEvent::initCustomEvent): Updated to use JSValueInWrappedObject. |
| (WebCore::CustomEvent::trySerializeDetail): Deleted. Now handled by bindings. |
| * dom/CustomEvent.h: Updated for the above. |
| * dom/CustomEvent.idl: Added JSCustomMarkFunction and removed |
| CallWith=ScriptState. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::shouldBypassMainWorldContentSecurityPolicy const): |
| Updated to pass reference to currentWorld but also rewrote to be more direct. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::isKeyboardFocusable const): Take a pointer instead of a |
| reference to the keyboard event. This function can be called with no event; |
| before this patch we were using a "dummy event". |
| * dom/Element.h: Ditto. |
| |
| * dom/ErrorEvent.cpp: |
| (WebCore::ErrorEvent::error): Use isWorldCompatible. |
| |
| * dom/Event.cpp: |
| (WebCore::Event::create): Moved here from header. |
| (WebCore::Event::createForBindings): Ditto. |
| (WebCore::Event::initEvent): Updated to use the name m_canceled instead of |
| the name m_defaultPrevented. |
| (WebCore::Event::resetBeforeDispatch): Added. Clears m_defaultHandled so |
| a value left over from a previous dispatch doesn't affect the next dispatch. |
| |
| * dom/Event.h: Renamed m_defaultPrevented to m_canceled to match specification |
| terminology and be slightly clearer. Added resetBeforeDispatch. Removed the |
| setDefaultPrevented function. |
| |
| * dom/EventDispatcher.cpp: |
| (WebCore::EventDispatcher::dispatchEvent): Added call to resetBeforeDispatch. |
| |
| * dom/EventListener.h: Made isAttribute virtual and got rid of virtualIsAttribute, |
| which was an alternative to using "final" before we had that in the language. |
| |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::dispatchEvent): Added call to resetBeforeDispatch. |
| |
| * dom/KeyboardEvent.cpp: |
| (WebCore::KeyboardEvent::KeyboardEvent): Removed unneeded code that initializes |
| m_handledByInputMethod to false; we do that in the class definition now. |
| (WebCore::KeyboardEvent::create): Moved here from header. |
| (WebCore::KeyboardEvent::createForBindings): Ditto. |
| (WebCore::KeyboardEvent::initKeyboardEvent): Added code to reset m_charCode, |
| m_isComposing, m_keyCode, m_repeat, m_underlyingPlatformEvent, m_which, m_code, |
| and m_key. These are needed now that we can reuse an existing event; we don't |
| want them getting out of sync with the other data members. |
| (WebCore::KeyboardEvent::keyCode const): Updated for name change from m_keyEvent |
| to m_underlyingPlatformEvent. |
| (WebCore::KeyboardEvent::charCode const): Ditto. |
| (WebCore::findKeyboardEvent): Deleted. Was unused. |
| * dom/KeyboardEvent.h: Updated for the above. Removed KeyboardEvent::createForDummy. |
| |
| * dom/MessageEvent.cpp: |
| (WebCore::MessageEvent::MessageEvent): Removed unnneded ExecState argument. |
| Simplified since m_data is now a Variant. |
| (WebCore::MessageEvent::create): More of the same. |
| (WebCore::MessageEvent::initMessageEvent): Ditto. |
| (WebCore::MessageEvent::trySerializeData): Deleted. |
| (WebCore::MessageEvent::data const): Deleted. |
| * dom/MessageEvent.h: Use a Variant. |
| * dom/MessageEvent.idl: Added JSCustomMarkFunction and removed |
| CallWith=ScriptState and CachedAttribute. |
| |
| * dom/MouseEvent.h: Removed obsolete comment. |
| * dom/MouseEvent.idl: Wrap line differently. |
| |
| * dom/PopStateEvent.cpp: |
| (WebCore::PopStateEvent::PopStateEvent): Removed unneeded ExecState argument. |
| Updated to use JSValueInWrappedObject. |
| (WebCore::PopStateEvent::create): Ditto. |
| (WebCore::PopStateEvent::trySerializeState): Ditto. |
| * dom/PopStateEvent.h: Ditto. |
| * dom/PopStateEvent.idl: Use JSCustomMarkFunction, and don't use |
| ConstructorCallWith=ScriptState. |
| |
| * dom/ScriptExecutionContext.cpp: |
| (WebCore::ScriptExecutionContext::sanitizeScriptError): Deleted. |
| (WebCore::ScriptExecutionContext::canIncludeErrorDetails): Added. |
| (WebCore::ScriptExecutionContext::dispatchErrorEvent): Clarify by |
| using canIncludeErrorDetails instead of sanitizeScriptError. |
| * dom/ScriptExecutionContext.h: Ditto. |
| |
| * dom/WheelEvent.cpp: |
| (WebCore::WheelEvent::WheelEvent): Updated for name change and also to |
| eliminate m_initializedWithPlatformWheelEvent. |
| (WebCore::WheelEvent::create): Moved here from header. |
| (WebCore::WheelEvent::createForBindings): Ditto. |
| (WebCore::WheelEvent::initWebKitWheelEvent): Renamed from initWheelEvent. |
| * dom/WheelEvent.h: Renamed initWheelEvent to initWebKitWheelEvent since |
| there is no standard init function for wheel events and we have this only |
| for backward compatibility. Got rid of the separate boolean |
| m_initializedWithPlatformWheelEvent and instead made the renamed |
| m_wheelEvent, m_underlyingPlatformEvent, optional for when there is no |
| underlying platform event. |
| |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::isKeyboardFocusable const): Take a |
| pointer to the event so we can handle the case where there is no event. |
| * html/BaseDateAndTimeInputType.h: Ditto. |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLAnchorElement.h: Ditto. |
| * html/HTMLAreaElement.cpp: |
| (WebCore::HTMLAreaElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLAreaElement.h: Ditto. |
| * html/HTMLDocument.cpp: Added include of "DOMWindow.h". |
| * html/HTMLFormControlElement.cpp: |
| (WebCore::HTMLFormControlElement::isKeyboardFocusable const): Take |
| pointer to the event. |
| * html/HTMLFormControlElement.h: Ditto. |
| * html/HTMLFrameOwnerElement.cpp: |
| (WebCore::HTMLFrameOwnerElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLFrameOwnerElement.h: Ditto. |
| * html/HTMLIFrameElement.h: Ditto. |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::isKeyboardFocusable const): Ditto. |
| (WebCore::HTMLInputElement::isTextFormControlKeyboardFocusable const): Ditto. |
| * html/HTMLInputElement.h: Ditto. |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::HTMLPlugInElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLPlugInElement.h: Ditto. |
| * html/HTMLSelectElement.cpp: |
| (WebCore::HTMLSelectElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLSelectElement.h: Ditto. |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::isKeyboardFocusable const): Ditto. |
| * html/HTMLTextAreaElement.h: Ditto. |
| * html/InputType.cpp: |
| (WebCore::InputType::isKeyboardFocusable const): Ditto. |
| * html/InputType.h: Ditto. |
| * html/RadioInputType.cpp: |
| (WebCore::RadioInputType::isKeyboardFocusable const): Ditto. |
| * html/RadioInputType.h: Ditto. |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::isKeyboardFocusable const): Ditto. |
| * html/TextFieldInputType.h: Ditto. |
| |
| * inspector/CommandLineAPIHost.cpp: |
| (WebCore::listenerEntriesFromListenerInfo): Pass reference to currentWorld. |
| Use is<> and downcast<> instead of JSEventListener::cast. |
| * inspector/PageScriptDebugServer.cpp: |
| (WebCore::PageScriptDebugServer::isContentScript const): Pass reference to |
| currentWorld. |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::buildObjectForEventListener): |
| Use is<> and downcast<> instead of JSEventListener::cast. |
| |
| * mathml/MathMLElement.cpp: |
| (WebCore::MathMLElement::isKeyboardFocusable const): Take a |
| pointer to the event so we can handle the case where there is no event. |
| * mathml/MathMLElement.h: Ditto. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::dispatchEvent): Added call to resetBeforeDispatch. |
| All event dispatching paths now need to do this; there are 3. |
| |
| * page/EventHandler.cpp: |
| (WebCore::handleWheelEventInAppropriateEnclosingBox): Use the new |
| underlyingPlatformEvent function, less confusing than calling a function |
| named wheelEvent() on an object of type WheelEvent. Also, it returns |
| a const& to std::optional instead of a pointer, so updated for that. |
| (WebCore::EventHandler::defaultWheelEventHandler): Ditto. |
| (WebCore::EventHandler::internalKeyEvent): Use preventDefault instead |
| of setDefaultPrevented(true). |
| (WebCore::EventHandler::tabsToLinks const): Take a pointer. |
| (WebCore::EventHandler::defaultArrowEventHandler): Pass a pointer. |
| (WebCore::EventHandler::defaultTabEventHandler): Ditto. |
| * page/EventHandler.h: Updated for the above. |
| |
| * page/EventSource.cpp: |
| (WebCore::EventSource::dispatchMessageEvent): Pass a reference rather |
| than a pointer when creating a message event. |
| |
| * page/FocusController.cpp: |
| (WebCore::isFocusableElementOrScopeOwner): Use a pointer instead of reference |
| for keyboard event. |
| (WebCore::isNonFocusableScopeOwner): Ditto. |
| (WebCore::isFocusableScopeOwner): Ditto. |
| (WebCore::shadowAdjustedTabIndex): Ditto. |
| (WebCore::FocusController::findFocusableElementDescendingIntoSubframes): |
| Renamed to use simpler terminology than "descending down into frame document". |
| Changed to take a pointer instead of reference. |
| (WebCore::FocusController::setInitialFocus): Pass nullptr instead of |
| using KeyboardEvent::createForDummy. |
| (WebCore::FocusController::advanceFocus): Pointer instead of reference. |
| (WebCore::FocusController::advanceFocusInDocumentOrder): Ditto. |
| (WebCore::FocusController::findFocusableElementAcrossFocusScope): Ditto. |
| (WebCore::FocusController::findFocusableElementWithinScope): Ditto. |
| (WebCore::FocusController::nextFocusableElementWithinScope): Ditto. |
| (WebCore::FocusController::previousFocusableElementWithinScope): Ditto. |
| (WebCore::FocusController::findFocusableElementOrScopeOwner): Ditto. |
| (WebCore::FocusController::findElementWithExactTabIndex): Ditto. |
| (WebCore::nextElementWithGreaterTabIndex): Ditto. |
| (WebCore::previousElementWithLowerTabIndex): Ditto. |
| (WebCore::FocusController::nextFocusableElement): Ditto. |
| (WebCore::FocusController::previousFocusableElement): Ditto. |
| (WebCore::FocusController::nextFocusableElementOrScopeOwner): Ditto. |
| (WebCore::FocusController::previousFocusableElementOrScopeOwner): Ditto. |
| (WebCore::FocusController::findFocusCandidateInContainer): Ditto. |
| (WebCore::FocusController::advanceFocusDirectionallyInContainer): Ditto. |
| (WebCore::FocusController::advanceFocusDirectionally): Ditto. |
| * page/FocusController.h: Updated for the above. |
| |
| * page/PageConsoleClient.cpp: |
| (WebCore::objectArgumentAt): Added. Helper to make functions below simpler. |
| (WebCore::canvasRenderingContext): Factored out logic to get the context |
| from either a canvas or a canvas rendering context from the functions below. |
| Also updated to not use ScriptValue and to use auto quite a bit more. |
| (WebCore::PageConsoleClient::record): Updated to use the functions above. |
| (WebCore::PageConsoleClient::recordEnd): Ditto. |
| |
| * page/ios/EventHandlerIOS.mm: |
| (WebCore::EventHandler::tabsToAllFormControls const): Take a pointer |
| instead of a reference. |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::EventHandler::tabsToAllFormControls const): Ditto. |
| * page/win/EventHandlerWin.cpp: |
| (WebCore::EventHandler::tabsToAllFormControls const): Ditto. |
| * platform/glib/EventHandlerGLib.cpp: |
| (WebCore::EventHandler::tabsToAllFormControls const): Ditto. |
| * svg/SVGAElement.cpp: |
| (WebCore::SVGAElement::isKeyboardFocusable const): Ditto. |
| * svg/SVGAElement.h: Ditto. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::isFromCurrentWorld const): Use isWorldCompatible. |
| |
| 2018-02-07 Andy Estes <aestes@apple.com> |
| |
| ASSERTION FAILED: vm->currentThreadIsHoldingAPILock() seen with http/tests/paymentrequest/payment-request-show-method.https.html |
| https://bugs.webkit.org/show_bug.cgi?id=182591 |
| |
| Reviewed by Youenn Fablet. |
| |
| Fixes assertion failures in http/tests/paymentrequest/payment-request-show-method.https.html. |
| |
| DOMPromise::whenSettled() calls the JSC API without first aquiring the API lock, and |
| r228195 added a call to whenSettled() where the lock is not guaranteed to be already |
| acquired. |
| |
| Fix this by creating a JSLockHolder in DOMPromise::whenSettled(). |
| |
| * bindings/js/JSDOMPromise.cpp: |
| (WebCore::DOMPromise::whenSettled): |
| |
| 2018-02-07 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r228243. |
| |
| Introduced an assertion failure with API test |
| FullscreenZoomInitialFrame.WebKit |
| |
| Reverted changeset: |
| |
| "Assert that NSApp is not running in the WebProcess." |
| https://bugs.webkit.org/show_bug.cgi?id=182553 |
| https://trac.webkit.org/changeset/228243 |
| |
| 2018-02-07 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Cookie Database has some warnings when compiled in clang |
| https://bugs.webkit.org/show_bug.cgi?id=182583 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests, no change in behavior. |
| |
| Fixing unused-parameter, missing-field-initializers, reorder, and pragma-once-outside-header warnings. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/curl/CookieJarCurlDatabase.cpp: |
| * platform/network/curl/CookieJarDB.cpp: |
| * platform/network/curl/NetworkStorageSessionCurl.cpp: |
| |
| 2018-02-07 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Remove unused CSSParserContext in CSSParser::parseInlineStyleDeclaration |
| https://bugs.webkit.org/show_bug.cgi?id=182587 |
| |
| Reviewed by Simon Fraser. |
| |
| Removed the code. There is no need to create an unused CSSParserContext in CSSParser. |
| |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParser::parseInlineStyleDeclaration): |
| * css/parser/CSSParser.h: |
| * css/parser/CSSParserImpl.cpp: |
| (WebCore::CSSParserImpl::parseInlineStyleDeclaration): |
| * css/parser/CSSParserImpl.h: |
| |
| 2018-02-07 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Add missing #if ENABLE(VIDEO_TRACK) after r228201. |
| https://bugs.webkit.org/show_bug.cgi?id=182585 |
| |
| Reviewed by Chris Dumez. |
| |
| * loader/LinkPreloadResourceClients.h: |
| |
| 2018-02-07 Per Arne Vollan <pvollan@apple.com> |
| |
| Assert that NSApp is not running in the WebProcess. |
| https://bugs.webkit.org/show_bug.cgi?id=182553 |
| <rdar://problem/37316144> |
| |
| Reviewed by Simon Fraser. |
| |
| In WebCore, there are a few places where NSApp is referenced. Since the WebContent process |
| is no longer using the NSApplication run loop, and NSApp is no longer guaranteed to be |
| valid, we should make sure that the NSApp is not referenced by the WebContent process or |
| the Network process, by asserting that the NSApplication event loop is running when NSApp |
| is referenced. It is still ok for the UIProcess to reference NSApp. Adding these assert |
| will help catch references to NSApp when the NSApplication run loop is not used. |
| Also, do not post a fake mouse event in PasteBoard::setDragImage when the NSApplication |
| run loop is not running, since this is only relevant in WK1. |
| |
| No new tests, covered by existing tests. |
| |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::lastEventIsMouseUp): |
| (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::setDragImage): |
| * platform/mac/WebVideoFullscreenController.mm: |
| (-[WebVideoFullscreenController windowDidLoad]): |
| (-[WebVideoFullscreenController updateMenuAndDockForFullscreen]): |
| * platform/mac/WebWindowAnimation.mm: |
| (WebCore::WebWindowAnimationDurationFromDuration): |
| |
| 2018-02-07 Youenn Fablet <youenn@apple.com> |
| |
| ASSERTION FAILED: m_timeOrigin in Performance::Performance() |
| https://bugs.webkit.org/show_bug.cgi?id=182558 |
| <rdar://problem/37297551> |
| |
| Reviewed by Chris Dumez. |
| |
| Test: http/wpt/fetch/cors-preflight-star.any.serviceworker.html |
| |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::startPreflight): |
| |
| 2018-02-07 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION(r226396): File paths are inserted when dropping image files |
| https://bugs.webkit.org/show_bug.cgi?id=182557 |
| <rdar://problem/37294120> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Reverts unintended changes in <http://trac.webkit.org/r226396>. Before r226396, WebContentReader::readFilenames |
| (a helper function in macOS-specific code) contained logic to create and insert attachment elements if |
| ENABLE(ATTACHMENT_ELEMENT); otherwise, it would fall back to inserting the visible URL as a text node. Since we |
| enable the attachment element on all Cocoa platforms via xcconfig files, this was effectively dead code. |
| |
| However, when r226396 (which moved this out from macOS to Cocoa platform code) refactored this helper function, |
| it also moved this chunk of code out of the !ENABLE(ATTACHMENT) conditional and into a PLATFORM(MAC) guard, |
| which means that we now fall back to inserting file paths as text when attachment elements are disabled. To fix |
| this, we simply remove the (previously) dead code. |
| |
| A more subtle difference is that we no longer always return true from WebContentReader::readFilePaths. This |
| means that when we drop files, we no longer skip over the early return in documentFragmentFromDragData when |
| we've made a fragment, so we read the file path as a URL. To address this, we just restore the pre-macOS 10.13.4 |
| behavior of initializing the document fragment. |
| |
| Test: modified editing/pasteboard/drag-files-to-editable-element-as-URLs.html. |
| |
| * editing/WebContentReader.cpp: |
| (WebCore::WebContentReader::ensureFragment): Deleted. |
| |
| Remove this helper, as it was only used in WebContentReader::readFilePaths. |
| |
| * editing/WebContentReader.h: |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readFilePaths): |
| |
| 2018-02-07 John Wilander <wilander@apple.com> |
| |
| Restrict Referer to just the origin for third parties in private mode and third parties ITP blocks cookies for in regular mode |
| https://bugs.webkit.org/show_bug.cgi?id=182559 |
| <rdar://problem/36990337> |
| |
| Reviewed by Andy Estes. |
| |
| Tests: http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects.html |
| http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests.html |
| http/tests/security/strip-referrer-to-origin-for-third-party-redirects-in-private-mode.html |
| http/tests/security/strip-referrer-to-origin-for-third-party-requests-in-private-mode.html |
| |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::referrerToOriginString): |
| Now exposed within WebCore. This is to make sure we create a proper referrer |
| string in WebCore::ResourceRequestBase::setExistingHTTPReferrerToOriginString(). |
| (WebCore::referrerToOriginString): Deleted. |
| Used to be internal. |
| * page/SecurityPolicy.h: |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setExistingHTTPReferrerToOriginString): |
| New, exported function used in WebKit. Note that this function does not |
| set the referrer if the request has none since before. |
| * platform/network/ResourceRequestBase.h: |
| |
| |
| 2018-02-07 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Remove RenderElement::destroyLeftoverChildren. |
| https://bugs.webkit.org/show_bug.cgi?id=182518 |
| <rdar://problem/37256035> |
| |
| Reviewed by Antti Koivisto. |
| |
| Remove leftover children before we call takeChild() on the parent (as opposed to when |
| we finally call destroy() on the parent). |
| This patch also explicitly destroys the top level pagination renderers. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::removeAndDestroyChild): |
| (WebCore::RenderElement::destroyLeftoverChildren): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::destroy): |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| (WebCore::RenderTreeUpdater::tearDownLeftoverPaginationRenderersIfNeeded): |
| * rendering/updating/RenderTreeUpdater.h: |
| |
| 2018-02-07 Daniel Bates <dabates@apple.com> |
| |
| Log error when authentication challenge is blocked due to an insecure request |
| https://bugs.webkit.org/show_bug.cgi?id=182358 |
| |
| Reviewed by Andy Estes. |
| |
| Emit an error message to Web Inspector console that explains why an authentication |
| challenge was blocked so that a developer can fix up their site. |
| |
| Tests: http/tests/security/mixedContent/insecure-basic-auth-image.https.html |
| http/tests/security/mixedContent/secure-page-navigates-to-basic-auth-insecure-page.https.html |
| http/tests/security/mixedContent/secure-page-navigates-to-basic-auth-secure-page-via-insecure-redirect.https.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::receivedFirstData): Log to the console an error message |
| if the document we are loading was forbidden from prompting for credentials. |
| Also removed duplicate assertion to ensure document is non-null and update |
| call to LinkLoader::loadLinksFromHeader() to use local variable to access |
| the document we are loading instead of asking the frame for it, again. |
| (WebCore::FrameLoader::reportAuthenticationChallengeBlocked): Added. |
| * loader/FrameLoader.h: |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::init): |
| (WebCore::ResourceLoader::willSendRequestInternal): |
| Track the decision to forbid asking for credentials due to Fetch spec. requirements (m_canAskClientForCredentials) |
| independently from the decision to forbid them due to making an insecure request (m_wasInsecureRequestSeen) |
| so that we know the reason why we blocked asking for credentials when we receive an authentication challenge. |
| |
| (WebCore::ResourceLoader::didBlockAuthenticationChallenge): Added. |
| (WebCore::ResourceLoader::isAllowedToAskUserForCredentials const): Modified code now that we track |
| whether we have seen an insecure request so far independently from decision to forbid prompting for |
| credentials due to a Fetch spec. requirement. |
| |
| (WebCore::ResourceLoader::didReceiveAuthenticationChallenge): |
| Store a bit whether we have seen an insecure request when loading the resource so far. Disallow |
| asking for credentials if we have seen an insecure request so far. Once we receive a response |
| |
| * loader/ResourceLoader.h: |
| (WebCore::ResourceLoader::wasAuthenticationChallengeBlocked const): Added. |
| (WebCore::ResourceLoader::wasInsecureRequestSeen const): Added. |
| |
| 2018-02-06 Matt Lewis <jlewis3@apple.com> |
| |
| Removed the assertions from VideoFullscreenInterfaceAVKit.mm temporarily to stop the resulting crashes during debugging. |
| https://bugs.webkit.org/show_bug.cgi?id=182527 |
| |
| Unreviewed build fix. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::exitFullscreen): |
| (VideoFullscreenInterfaceAVKit::cleanupFullscreen): |
| |
| 2018-02-07 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock::removeLeftoverAnonymousBlock to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182510 |
| <rdar://problem/37250037> |
| |
| Reviewed by Antti Koivisto. |
| |
| Do not reinvent subtree reparenting. |
| |
| Covered by existing tests. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::removeLeftoverAnonymousBlock): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::moveAllChildrenToInternal): |
| * rendering/RenderBoxModelObject.h: |
| * rendering/RenderButton.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::detachRendererInternal): |
| (WebCore::RenderElement::attachRendererInternal): |
| (WebCore::RenderElement::insertChildInternal): |
| (WebCore::RenderElement::takeChildInternal): |
| * rendering/RenderElement.h: |
| * rendering/RenderRuby.h: |
| * rendering/RenderRubyRun.h: |
| * rendering/RenderTextControl.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::Block::childBecameNonInline): |
| (WebCore::RenderTreeBuilder::Block::removeLeftoverAnonymousBlock): |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| |
| 2018-02-06 Don Olmstead <don.olmstead@sony.com> |
| |
| Remove WebCore/ForwardingHeaders directory |
| https://bugs.webkit.org/show_bug.cgi?id=182347 |
| |
| Reviewed by Keith Miller. |
| |
| No new tests. No change in behavior. |
| |
| * CMakeLists.txt: |
| * ForwardingHeaders/bindings/ScriptFunctionCall.h: Removed. |
| * ForwardingHeaders/bindings/ScriptObject.h: Removed. |
| * ForwardingHeaders/bindings/ScriptValue.h: Removed. |
| * ForwardingHeaders/builtins/BuiltinNames.h: Removed. |
| * ForwardingHeaders/builtins/BuiltinUtils.h: Removed. |
| * ForwardingHeaders/builtins/JSCBuiltins.h: Removed. |
| * ForwardingHeaders/bytecode/CodeBlock.h: Removed. |
| * ForwardingHeaders/bytecode/SpeculatedType.h: Removed. |
| * ForwardingHeaders/bytecode/UnlinkedFunctionExecutable.h: Removed. |
| * ForwardingHeaders/debugger/Debugger.h: Removed. |
| * ForwardingHeaders/domjit/DOMJITAbstractHeap.h: Removed. |
| * ForwardingHeaders/domjit/DOMJITEffect.h: Removed. |
| * ForwardingHeaders/domjit/DOMJITGetterSetter.h: Removed. |
| * ForwardingHeaders/domjit/DOMJITHeapRange.h: Removed. |
| * ForwardingHeaders/domjit/DOMJITSignature.h: Removed. |
| * ForwardingHeaders/heap/BlockDirectoryInlines.h: Removed. |
| * ForwardingHeaders/heap/DeleteAllCodeEffort.h: Removed. |
| * ForwardingHeaders/heap/FastMallocAlignedMemoryAllocator.h: Removed. |
| * ForwardingHeaders/heap/GCActivityCallback.h: Removed. |
| * ForwardingHeaders/heap/GCFinalizationCallback.h: Removed. |
| * ForwardingHeaders/heap/HandleTypes.h: Removed. |
| * ForwardingHeaders/heap/Heap.h: Removed. |
| * ForwardingHeaders/heap/HeapInlines.h: Removed. |
| * ForwardingHeaders/heap/HeapObserver.h: Removed. |
| * ForwardingHeaders/heap/IncrementalSweeper.h: Removed. |
| * ForwardingHeaders/heap/LockDuringMarking.h: Removed. |
| * ForwardingHeaders/heap/MachineStackMarker.h: Removed. |
| * ForwardingHeaders/heap/MarkedBlockInlines.h: Removed. |
| * ForwardingHeaders/heap/MarkingConstraint.h: Removed. |
| * ForwardingHeaders/heap/RunningScope.h: Removed. |
| * ForwardingHeaders/heap/SimpleMarkingConstraint.h: Removed. |
| * ForwardingHeaders/heap/SlotVisitor.h: Removed. |
| * ForwardingHeaders/heap/SlotVisitorInlines.h: Removed. |
| * ForwardingHeaders/heap/Strong.h: Removed. |
| * ForwardingHeaders/heap/StrongInlines.h: Removed. |
| * ForwardingHeaders/heap/SubspaceInlines.h: Removed. |
| * ForwardingHeaders/heap/ThreadLocalCache.h: Removed. |
| * ForwardingHeaders/heap/Weak.h: Removed. |
| * ForwardingHeaders/heap/WeakInlines.h: Removed. |
| * ForwardingHeaders/inspector/ConsoleMessage.h: Removed. |
| * ForwardingHeaders/inspector/ContentSearchUtilities.h: Removed. |
| * ForwardingHeaders/inspector/IdentifiersFactory.h: Removed. |
| * ForwardingHeaders/inspector/InjectedScript.h: Removed. |
| * ForwardingHeaders/inspector/InjectedScriptBase.h: Removed. |
| * ForwardingHeaders/inspector/InjectedScriptHost.h: Removed. |
| * ForwardingHeaders/inspector/InjectedScriptManager.h: Removed. |
| * ForwardingHeaders/inspector/InjectedScriptModule.h: Removed. |
| * ForwardingHeaders/inspector/InspectorAgentBase.h: Removed. |
| * ForwardingHeaders/inspector/InspectorAgentRegistry.h: Removed. |
| * ForwardingHeaders/inspector/InspectorBackendDispatcher.h: Removed. |
| * ForwardingHeaders/inspector/InspectorBackendDispatchers.h: Removed. |
| * ForwardingHeaders/inspector/InspectorEnvironment.h: Removed. |
| * ForwardingHeaders/inspector/InspectorFrontendChannel.h: Removed. |
| * ForwardingHeaders/inspector/InspectorFrontendDispatchers.h: Removed. |
| * ForwardingHeaders/inspector/InspectorFrontendRouter.h: Removed. |
| * ForwardingHeaders/inspector/InspectorProtocolObjects.h: Removed. |
| * ForwardingHeaders/inspector/InspectorProtocolTypes.h: Removed. |
| * ForwardingHeaders/inspector/PerGlobalObjectWrapperWorld.h: Removed. |
| * ForwardingHeaders/inspector/ScriptArguments.h: Removed. |
| * ForwardingHeaders/inspector/ScriptBreakpoint.h: Removed. |
| * ForwardingHeaders/inspector/ScriptCallFrame.h: Removed. |
| * ForwardingHeaders/inspector/ScriptCallStack.h: Removed. |
| * ForwardingHeaders/inspector/ScriptCallStackFactory.h: Removed. |
| * ForwardingHeaders/inspector/ScriptDebugListener.h: Removed. |
| * ForwardingHeaders/inspector/ScriptDebugServer.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorAgent.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorConsoleAgent.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorDebuggerAgent.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorHeapAgent.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorRuntimeAgent.h: Removed. |
| * ForwardingHeaders/inspector/agents/InspectorScriptProfilerAgent.h: Removed. |
| * ForwardingHeaders/interpreter/CallFrame.h: Removed. |
| * ForwardingHeaders/interpreter/FrameTracers.h: Removed. |
| * ForwardingHeaders/interpreter/ShadowChicken.h: Removed. |
| * ForwardingHeaders/interpreter/StackVisitor.h: Removed. |
| * ForwardingHeaders/jit/JITCode.h: Removed. |
| * ForwardingHeaders/jit/JITMathICForwards.h: Removed. |
| * ForwardingHeaders/jit/Snippet.h: Removed. |
| * ForwardingHeaders/jit/SnippetParams.h: Removed. |
| * ForwardingHeaders/jit/SpillRegistersMode.h: Removed. |
| * ForwardingHeaders/masm/X86Assembler.h: Removed. |
| * ForwardingHeaders/parser/ParserError.h: Removed. |
| * ForwardingHeaders/parser/SourceCode.h: Removed. |
| * ForwardingHeaders/parser/SourceProvider.h: Removed. |
| * ForwardingHeaders/parser/SourceProviderCache.h: Removed. |
| * ForwardingHeaders/profiler/ProfilerDatabase.h: Removed. |
| * ForwardingHeaders/runtime/ArgList.h: Removed. |
| * ForwardingHeaders/runtime/ArrayBuffer.h: Removed. |
| * ForwardingHeaders/runtime/ArrayBufferView.h: Removed. |
| * ForwardingHeaders/runtime/ArrayPrototype.h: Removed. |
| * ForwardingHeaders/runtime/AuxiliaryBarrierInlines.h: Removed. |
| * ForwardingHeaders/runtime/BooleanObject.h: Removed. |
| * ForwardingHeaders/runtime/CallData.h: Removed. |
| * ForwardingHeaders/runtime/CatchScope.h: Removed. |
| * ForwardingHeaders/runtime/CommonIdentifiers.h: Removed. |
| * ForwardingHeaders/runtime/Completion.h: Removed. |
| * ForwardingHeaders/runtime/ConfigFile.h: Removed. |
| * ForwardingHeaders/runtime/ConsoleClient.h: Removed. |
| * ForwardingHeaders/runtime/ConsoleTypes.h: Removed. |
| * ForwardingHeaders/runtime/ConstructAbility.h: Removed. |
| * ForwardingHeaders/runtime/ConstructData.h: Removed. |
| * ForwardingHeaders/runtime/DataView.h: Removed. |
| * ForwardingHeaders/runtime/DateInstance.h: Removed. |
| * ForwardingHeaders/runtime/Error.h: Removed. |
| * ForwardingHeaders/runtime/ErrorHandlingScope.h: Removed. |
| * ForwardingHeaders/runtime/ErrorInstance.h: Removed. |
| * ForwardingHeaders/runtime/ErrorPrototype.h: Removed. |
| * ForwardingHeaders/runtime/Exception.h: Removed. |
| * ForwardingHeaders/runtime/ExceptionHelpers.h: Removed. |
| * ForwardingHeaders/runtime/Float32Array.h: Removed. |
| * ForwardingHeaders/runtime/Float64Array.h: Removed. |
| * ForwardingHeaders/runtime/FunctionConstructor.h: Removed. |
| * ForwardingHeaders/runtime/FunctionExecutable.h: Removed. |
| * ForwardingHeaders/runtime/FunctionPrototype.h: Removed. |
| * ForwardingHeaders/runtime/HashMapImpl.h: Removed. |
| * ForwardingHeaders/runtime/Identifier.h: Removed. |
| * ForwardingHeaders/runtime/IdentifierInlines.h: Removed. |
| * ForwardingHeaders/runtime/InitializeThreading.h: Removed. |
| * ForwardingHeaders/runtime/Int16Array.h: Removed. |
| * ForwardingHeaders/runtime/Int32Array.h: Removed. |
| * ForwardingHeaders/runtime/Int8Array.h: Removed. |
| * ForwardingHeaders/runtime/InternalFunction.h: Removed. |
| * ForwardingHeaders/runtime/Intrinsic.h: Removed. |
| * ForwardingHeaders/runtime/IterationKind.h: Removed. |
| * ForwardingHeaders/runtime/IteratorOperations.h: Removed. |
| * ForwardingHeaders/runtime/IteratorPrototype.h: Removed. |
| * ForwardingHeaders/runtime/JSAPIValueWrapper.h: Removed. |
| * ForwardingHeaders/runtime/JSArray.h: Removed. |
| * ForwardingHeaders/runtime/JSArrayBuffer.h: Removed. |
| * ForwardingHeaders/runtime/JSArrayBufferView.h: Removed. |
| * ForwardingHeaders/runtime/JSCInlines.h: Removed. |
| * ForwardingHeaders/runtime/JSCJSValue.h: Removed. |
| * ForwardingHeaders/runtime/JSCJSValueInlines.h: Removed. |
| * ForwardingHeaders/runtime/JSCallee.h: Removed. |
| * ForwardingHeaders/runtime/JSCell.h: Removed. |
| * ForwardingHeaders/runtime/JSCellInlines.h: Removed. |
| * ForwardingHeaders/runtime/JSDataView.h: Removed. |
| * ForwardingHeaders/runtime/JSDestructibleObject.h: Removed. |
| * ForwardingHeaders/runtime/JSDestructibleObjectHeapCellType.h: Removed. |
| * ForwardingHeaders/runtime/JSExportMacros.h: Removed. |
| * ForwardingHeaders/runtime/JSFunction.h: Removed. |
| * ForwardingHeaders/runtime/JSGlobalObject.h: Removed. |
| * ForwardingHeaders/runtime/JSGlobalObjectInlines.h: Removed. |
| * ForwardingHeaders/runtime/JSInternalPromise.h: Removed. |
| * ForwardingHeaders/runtime/JSInternalPromiseDeferred.h: Removed. |
| * ForwardingHeaders/runtime/JSLock.h: Removed. |
| * ForwardingHeaders/runtime/JSMap.h: Removed. |
| * ForwardingHeaders/runtime/JSMapIterator.h: Removed. |
| * ForwardingHeaders/runtime/JSModuleLoader.h: Removed. |
| * ForwardingHeaders/runtime/JSModuleRecord.h: Removed. |
| * ForwardingHeaders/runtime/JSNativeStdFunction.h: Removed. |
| * ForwardingHeaders/runtime/JSONObject.h: Removed. |
| * ForwardingHeaders/runtime/JSObject.h: Removed. |
| * ForwardingHeaders/runtime/JSObjectInlines.h: Removed. |
| * ForwardingHeaders/runtime/JSPromise.h: Removed. |
| * ForwardingHeaders/runtime/JSPromiseConstructor.h: Removed. |
| * ForwardingHeaders/runtime/JSPromiseDeferred.h: Removed. |
| * ForwardingHeaders/runtime/JSProxy.h: Removed. |
| * ForwardingHeaders/runtime/JSRunLoopTimer.h: Removed. |
| * ForwardingHeaders/runtime/JSScriptFetchParameters.h: Removed. |
| * ForwardingHeaders/runtime/JSScriptFetcher.h: Removed. |
| * ForwardingHeaders/runtime/JSSegmentedVariableObjectHeapCellType.h: Removed. |
| * ForwardingHeaders/runtime/JSSet.h: Removed. |
| * ForwardingHeaders/runtime/JSSetIterator.h: Removed. |
| * ForwardingHeaders/runtime/JSSourceCode.h: Removed. |
| * ForwardingHeaders/runtime/JSString.h: Removed. |
| * ForwardingHeaders/runtime/JSTypedArrays.h: Removed. |
| * ForwardingHeaders/runtime/JSWithScope.h: Removed. |
| * ForwardingHeaders/runtime/Lookup.h: Removed. |
| * ForwardingHeaders/runtime/MapBase.h: Removed. |
| * ForwardingHeaders/runtime/MapData.h: Removed. |
| * ForwardingHeaders/runtime/MapDataInlines.h: Removed. |
| * ForwardingHeaders/runtime/MatchResult.h: Removed. |
| * ForwardingHeaders/runtime/Microtask.h: Removed. |
| * ForwardingHeaders/runtime/ObjectConstructor.h: Removed. |
| * ForwardingHeaders/runtime/ObjectPrototype.h: Removed. |
| * ForwardingHeaders/runtime/Operations.h: Removed. |
| * ForwardingHeaders/runtime/PrivateName.h: Removed. |
| * ForwardingHeaders/runtime/PromiseDeferredTimer.h: Removed. |
| * ForwardingHeaders/runtime/PropertyNameArray.h: Removed. |
| * ForwardingHeaders/runtime/Protect.h: Removed. |
| * ForwardingHeaders/runtime/RegExp.h: Removed. |
| * ForwardingHeaders/runtime/RegExpObject.h: Removed. |
| * ForwardingHeaders/runtime/RuntimeFlags.h: Removed. |
| * ForwardingHeaders/runtime/SamplingProfiler.h: Removed. |
| * ForwardingHeaders/runtime/ScriptFetchParameters.h: Removed. |
| * ForwardingHeaders/runtime/ScriptFetcher.h: Removed. |
| * ForwardingHeaders/runtime/StringObject.h: Removed. |
| * ForwardingHeaders/runtime/StringPrototype.h: Removed. |
| * ForwardingHeaders/runtime/Structure.h: Removed. |
| * ForwardingHeaders/runtime/StructureChain.h: Removed. |
| * ForwardingHeaders/runtime/StructureInlines.h: Removed. |
| * ForwardingHeaders/runtime/Symbol.h: Removed. |
| * ForwardingHeaders/runtime/SymbolTable.h: Removed. |
| * ForwardingHeaders/runtime/ThrowScope.h: Removed. |
| * ForwardingHeaders/runtime/TypedArrayController.h: Removed. |
| * ForwardingHeaders/runtime/TypedArrayInlines.h: Removed. |
| * ForwardingHeaders/runtime/TypedArrays.h: Removed. |
| * ForwardingHeaders/runtime/Uint16Array.h: Removed. |
| * ForwardingHeaders/runtime/Uint32Array.h: Removed. |
| * ForwardingHeaders/runtime/Uint8Array.h: Removed. |
| * ForwardingHeaders/runtime/Uint8ClampedArray.h: Removed. |
| * ForwardingHeaders/runtime/VM.h: Removed. |
| * ForwardingHeaders/runtime/VMEntryScope.h: Removed. |
| * ForwardingHeaders/runtime/Watchdog.h: Removed. |
| * ForwardingHeaders/runtime/WeakGCMap.h: Removed. |
| * ForwardingHeaders/runtime/WeakGCMapInlines.h: Removed. |
| * ForwardingHeaders/runtime/WriteBarrier.h: Removed. |
| * ForwardingHeaders/wasm/WasmModule.h: Removed. |
| * ForwardingHeaders/wasm/js/JSWebAssemblyModule.h: Removed. |
| * ForwardingHeaders/yarr/RegularExpression.h: Removed. |
| * ForwardingHeaders/yarr/Yarr.h: Removed. |
| * ForwardingHeaders/yarr/YarrInterpreter.h: Removed. |
| * ForwardingHeaders/yarr/YarrJIT.h: Removed. |
| * ForwardingHeaders/yarr/YarrPattern.h: Removed. |
| * Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm: |
| * Modules/encryptedmedia/MediaKeyMessageEvent.h: |
| * Modules/encryptedmedia/MediaKeyMessageEventInit.h: |
| * Modules/encryptedmedia/MediaKeyStatusMap.h: |
| * Modules/encryptedmedia/legacy/LegacyCDM.h: |
| * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeySession.h: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeys.h: |
| * Modules/fetch/FetchBody.cpp: |
| * Modules/fetch/FetchRequestInit.h: |
| * Modules/fetch/FetchResponse.h: |
| * Modules/indexeddb/IDBCursor.cpp: |
| * Modules/indexeddb/IDBCursor.h: |
| * Modules/indexeddb/IDBCursorWithValue.cpp: |
| * Modules/indexeddb/IDBDatabase.cpp: |
| * Modules/indexeddb/IDBIndex.cpp: |
| * Modules/indexeddb/IDBKey.cpp: |
| * Modules/indexeddb/IDBKeyRange.cpp: |
| * Modules/indexeddb/IDBObjectStore.cpp: |
| * Modules/indexeddb/IDBRequest.cpp: |
| * Modules/indexeddb/IDBRequest.h: |
| * Modules/indexeddb/client/TransactionOperation.cpp: |
| * Modules/indexeddb/server/MemoryObjectStore.cpp: |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: |
| * Modules/mediacontrols/MediaControlsHost.cpp: |
| * Modules/mediasource/SourceBuffer.cpp: |
| * Modules/mediastream/RTCDataChannel.cpp: |
| * Modules/plugins/QuickTimePluginReplacement.mm: |
| * Modules/webaudio/AsyncAudioDecoder.cpp: |
| * Modules/webaudio/AudioBuffer.cpp: |
| * Modules/webaudio/AudioBuffer.h: |
| * Modules/webaudio/AudioContext.cpp: |
| * Modules/webaudio/AudioContext.h: |
| * Modules/webaudio/AudioParam.h: |
| * Modules/webaudio/AudioParamTimeline.h: |
| * Modules/webaudio/PeriodicWave.h: |
| * Modules/webaudio/RealtimeAnalyser.cpp: |
| * Modules/webaudio/RealtimeAnalyser.h: |
| * Modules/webaudio/ScriptProcessorNode.cpp: |
| * Modules/webaudio/WaveShaperProcessor.h: |
| * Modules/webauthn/AuthenticatorResponse.h: |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Modules/websockets/WebSocket.cpp: |
| * Modules/websockets/WebSocketChannel.cpp: |
| * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: |
| * Modules/webvr/VREyeParameters.h: |
| * Modules/webvr/VRFrameData.h: |
| * Modules/webvr/VRPose.h: |
| * Modules/webvr/VRStageParameters.h: |
| * PlatformWin.cmake: |
| * bindings/IDLTypes.h: |
| * bindings/js/BufferSource.h: |
| * bindings/js/CachedScriptFetcher.h: |
| * bindings/js/CachedScriptSourceProvider.h: |
| * bindings/js/CallTracerTypes.h: |
| * bindings/js/CommonVM.cpp: |
| * bindings/js/DOMGCOutputConstraint.cpp: |
| * bindings/js/DOMGCOutputConstraint.h: |
| * bindings/js/GCController.cpp: |
| * bindings/js/GCController.h: |
| * bindings/js/IDBBindingUtilities.cpp: |
| * bindings/js/JSCallbackData.cpp: |
| * bindings/js/JSCallbackData.h: |
| * bindings/js/JSCustomElementInterface.cpp: |
| * bindings/js/JSCustomElementInterface.h: |
| * bindings/js/JSCustomEventCustom.cpp: |
| * bindings/js/JSCustomXPathNSResolver.cpp: |
| * bindings/js/JSCustomXPathNSResolver.h: |
| * bindings/js/JSDOMBinding.h: |
| * bindings/js/JSDOMBuiltinConstructorBase.cpp: |
| * bindings/js/JSDOMConstructorBase.cpp: |
| * bindings/js/JSDOMConvertBase.h: |
| * bindings/js/JSDOMConvertBufferSource.h: |
| * bindings/js/JSDOMConvertDate.cpp: |
| * bindings/js/JSDOMConvertInterface.h: |
| * bindings/js/JSDOMConvertJSON.h: |
| * bindings/js/JSDOMConvertNumbers.cpp: |
| * bindings/js/JSDOMConvertNumbers.h: |
| * bindings/js/JSDOMConvertObject.h: |
| * bindings/js/JSDOMConvertRecord.h: |
| * bindings/js/JSDOMConvertSequences.h: |
| * bindings/js/JSDOMConvertStrings.cpp: |
| * bindings/js/JSDOMConvertUnion.h: |
| * bindings/js/JSDOMExceptionHandling.cpp: |
| * bindings/js/JSDOMExceptionHandling.h: |
| * bindings/js/JSDOMGlobalObject.cpp: |
| * bindings/js/JSDOMGlobalObject.h: |
| * bindings/js/JSDOMGlobalObjectTask.cpp: |
| * bindings/js/JSDOMGuardedObject.h: |
| * bindings/js/JSDOMIterator.cpp: |
| * bindings/js/JSDOMIterator.h: |
| * bindings/js/JSDOMMapLike.cpp: |
| * bindings/js/JSDOMMapLike.h: |
| * bindings/js/JSDOMPromise.cpp: |
| * bindings/js/JSDOMPromise.h: |
| * bindings/js/JSDOMPromiseDeferred.cpp: |
| * bindings/js/JSDOMPromiseDeferred.h: |
| * bindings/js/JSDOMWindowBase.cpp: |
| * bindings/js/JSDOMWindowCustom.cpp: |
| * bindings/js/JSDOMWindowProxy.cpp: |
| * bindings/js/JSDOMWindowProxy.h: |
| * bindings/js/JSDOMWrapper.cpp: |
| * bindings/js/JSDOMWrapper.h: |
| * bindings/js/JSDOMWrapperCache.cpp: |
| * bindings/js/JSDOMWrapperCache.h: |
| * bindings/js/JSDynamicDowncast.h: |
| * bindings/js/JSErrorHandler.cpp: |
| * bindings/js/JSEventCustom.cpp: |
| * bindings/js/JSEventListener.cpp: |
| * bindings/js/JSEventListener.h: |
| * bindings/js/JSHTMLElementCustom.cpp: |
| * bindings/js/JSHistoryCustom.cpp: |
| * bindings/js/JSIDBCursorWithValueCustom.cpp: |
| * bindings/js/JSIDBIndexCustom.cpp: |
| * bindings/js/JSImageDataCustom.cpp: |
| * bindings/js/JSLazyEventListener.cpp: |
| * bindings/js/JSLocationCustom.cpp: |
| * bindings/js/JSMainThreadExecState.h: |
| * bindings/js/JSMainThreadExecStateInstrumentation.h: |
| * bindings/js/JSMessageChannelCustom.cpp: |
| * bindings/js/JSMessageEventCustom.cpp: |
| * bindings/js/JSNodeIteratorCustom.cpp: |
| * bindings/js/JSPopStateEventCustom.cpp: |
| * bindings/js/JSReadableStreamPrivateConstructors.cpp: |
| * bindings/js/JSTreeWalkerCustom.cpp: |
| * bindings/js/JSWebGL2RenderingContextCustom.cpp: |
| * bindings/js/JSWorkerGlobalScopeBase.cpp: |
| * bindings/js/ReadableStreamDefaultController.cpp: |
| * bindings/js/ReadableStreamDefaultController.h: |
| * bindings/js/ScheduledAction.cpp: |
| * bindings/js/ScheduledAction.h: |
| * bindings/js/ScriptCachedFrameData.cpp: |
| * bindings/js/ScriptCachedFrameData.h: |
| * bindings/js/ScriptController.cpp: |
| * bindings/js/ScriptController.h: |
| * bindings/js/ScriptControllerMac.mm: |
| * bindings/js/ScriptModuleLoader.cpp: |
| * bindings/js/ScriptModuleLoader.h: |
| * bindings/js/ScriptSourceCode.h: |
| * bindings/js/ScriptState.cpp: |
| * bindings/js/ScriptWrappable.h: |
| * bindings/js/ScriptWrappableInlines.h: |
| * bindings/js/SerializedScriptValue.cpp: |
| * bindings/js/SerializedScriptValue.h: |
| * bindings/js/StructuredClone.cpp: |
| * bindings/js/WebCoreBuiltinNames.h: |
| * bindings/js/WebCoreJSClientData.cpp: |
| * bindings/js/WebCoreTypedArrayController.cpp: |
| * bindings/js/WebCoreTypedArrayController.h: |
| * bindings/js/WorkerScriptController.cpp: |
| * bindings/js/WorkerScriptController.h: |
| * bridge/NP_jsobject.cpp: |
| * bridge/c/CRuntimeObject.cpp: |
| * bridge/c/c_class.cpp: |
| * bridge/c/c_instance.cpp: |
| * bridge/c/c_runtime.cpp: |
| * bridge/c/c_utility.cpp: |
| * bridge/c/c_utility.h: |
| * bridge/jsc/BridgeJSC.cpp: |
| * bridge/jsc/BridgeJSC.h: |
| * bridge/npruntime.cpp: |
| * bridge/objc/ObjCRuntimeObject.mm: |
| * bridge/objc/WebScriptObject.mm: |
| * bridge/objc/WebScriptObjectPrivate.h: |
| * bridge/objc/objc_instance.mm: |
| * bridge/objc/objc_runtime.h: |
| * bridge/objc/objc_runtime.mm: |
| * bridge/objc/objc_utility.h: |
| * bridge/objc/objc_utility.mm: |
| * bridge/runtime_array.cpp: |
| * bridge/runtime_array.h: |
| * bridge/runtime_method.cpp: |
| * bridge/runtime_method.h: |
| * bridge/runtime_object.cpp: |
| * bridge/runtime_object.h: |
| * bridge/runtime_root.cpp: |
| * bridge/runtime_root.h: |
| * crypto/SubtleCrypto.cpp: |
| * crypto/SubtleCrypto.h: |
| * crypto/gcrypt/CryptoKeyRSAGCrypt.cpp: |
| * crypto/keys/CryptoRsaKeyAlgorithm.h: |
| * crypto/mac/CryptoKeyRSAMac.cpp: |
| * crypto/parameters/CryptoAlgorithmEcdsaParams.h: |
| * crypto/parameters/CryptoAlgorithmHkdfParams.h: |
| * crypto/parameters/CryptoAlgorithmHmacKeyParams.h: |
| * crypto/parameters/CryptoAlgorithmPbkdf2Params.h: |
| * crypto/parameters/CryptoAlgorithmRsaHashedImportParams.h: |
| * crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h: |
| * crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h: |
| * css/CSSFontFaceSource.h: |
| * css/DOMMatrixReadOnly.cpp: |
| * css/DOMMatrixReadOnly.h: |
| * css/FontFace.cpp: |
| * dom/CustomElementReactionQueue.cpp: |
| * dom/CustomElementRegistry.cpp: |
| * dom/CustomEvent.cpp: |
| * dom/CustomEvent.h: |
| * dom/Document.cpp: |
| * dom/Document.h: |
| * dom/ErrorEvent.cpp: |
| * dom/ErrorEvent.h: |
| * dom/LoadableScript.h: |
| * dom/MessageEvent.cpp: |
| * dom/MessageEvent.h: |
| * dom/ModuleFetchParameters.h: |
| * dom/PopStateEvent.cpp: |
| * dom/PopStateEvent.h: |
| * dom/PromiseRejectionEvent.cpp: |
| * dom/PromiseRejectionEvent.h: |
| * dom/RejectedPromiseTracker.cpp: |
| * dom/RejectedPromiseTracker.h: |
| * dom/ScriptExecutionContext.cpp: |
| * dom/ScriptExecutionContext.h: |
| * dom/TextEncoder.cpp: |
| * dom/TextEncoder.h: |
| * domjit/DOMJITHelpers.h: |
| * domjit/DOMJITIDLTypeFilter.h: |
| * domjit/JSDocumentDOMJIT.cpp: |
| * domjit/JSNodeDOMJIT.cpp: |
| * fileapi/BlobBuilder.cpp: |
| * fileapi/FileReader.cpp: |
| * fileapi/FileReaderLoader.cpp: |
| * fileapi/FileReaderSync.cpp: |
| * html/BaseTextInputType.cpp: |
| * html/EmailInputType.cpp: |
| * html/HTMLAllCollection.cpp: |
| * html/HTMLCanvasElement.cpp: |
| * html/HTMLImageLoader.cpp: |
| * html/HTMLMediaElement.cpp: |
| * html/HTMLPlugInImageElement.cpp: |
| * html/ImageData.cpp: |
| * html/ImageData.h: |
| * html/MediaEncryptedEventInit.h: |
| * html/WebKitMediaKeyError.h: |
| * html/canvas/WebGLAny.h: |
| * html/canvas/WebGLRenderingContext.cpp: |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| * html/canvas/WebGLRenderingContextBase.h: |
| * html/canvas/WebGPUBuffer.cpp: |
| * html/canvas/WebGPURenderingContext.cpp: |
| * html/canvas/WebGPURenderingContext.h: |
| * html/track/DataCue.cpp: |
| * html/track/DataCue.h: |
| * inspector/CommandLineAPIHost.cpp: |
| * inspector/CommandLineAPIHost.h: |
| * inspector/CommandLineAPIModule.cpp: |
| * inspector/CommandLineAPIModule.h: |
| * inspector/InspectorCanvas.cpp: |
| * inspector/InspectorCanvas.h: |
| * inspector/InspectorClient.cpp: |
| * inspector/InspectorController.cpp: |
| * inspector/InspectorController.h: |
| * inspector/InspectorDatabaseResource.h: |
| * inspector/InspectorFrontendClientLocal.cpp: |
| * inspector/InspectorFrontendHost.cpp: |
| * inspector/InspectorInstrumentation.cpp: |
| * inspector/InspectorInstrumentation.h: |
| * inspector/InspectorOverlay.cpp: |
| * inspector/InspectorOverlay.h: |
| * inspector/InspectorShaderProgram.cpp: |
| * inspector/InspectorShaderProgram.h: |
| * inspector/InspectorStyleSheet.cpp: |
| * inspector/InspectorStyleSheet.h: |
| * inspector/InspectorWebAgentBase.h: |
| * inspector/InstrumentingAgents.h: |
| * inspector/PageScriptDebugServer.cpp: |
| * inspector/PageScriptDebugServer.h: |
| * inspector/TimelineRecordFactory.cpp: |
| * inspector/WebInjectedScriptHost.h: |
| * inspector/WebInjectedScriptManager.h: |
| * inspector/WorkerInspectorController.cpp: |
| * inspector/WorkerInspectorController.h: |
| * inspector/WorkerScriptDebugServer.cpp: |
| * inspector/WorkerScriptDebugServer.h: |
| * inspector/WorkerToPageFrontendChannel.h: |
| * inspector/agents/InspectorApplicationCacheAgent.h: |
| * inspector/agents/InspectorCSSAgent.cpp: |
| * inspector/agents/InspectorCSSAgent.h: |
| * inspector/agents/InspectorCanvasAgent.cpp: |
| * inspector/agents/InspectorCanvasAgent.h: |
| * inspector/agents/InspectorDOMAgent.cpp: |
| * inspector/agents/InspectorDOMAgent.h: |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: |
| * inspector/agents/InspectorDOMDebuggerAgent.h: |
| * inspector/agents/InspectorDOMStorageAgent.cpp: |
| * inspector/agents/InspectorDOMStorageAgent.h: |
| * inspector/agents/InspectorDatabaseAgent.cpp: |
| * inspector/agents/InspectorDatabaseAgent.h: |
| * inspector/agents/InspectorIndexedDBAgent.cpp: |
| * inspector/agents/InspectorIndexedDBAgent.h: |
| * inspector/agents/InspectorLayerTreeAgent.cpp: |
| * inspector/agents/InspectorLayerTreeAgent.h: |
| * inspector/agents/InspectorMemoryAgent.cpp: |
| * inspector/agents/InspectorMemoryAgent.h: |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| * inspector/agents/InspectorNetworkAgent.h: |
| * inspector/agents/InspectorPageAgent.cpp: |
| * inspector/agents/InspectorPageAgent.h: |
| * inspector/agents/InspectorTimelineAgent.cpp: |
| * inspector/agents/InspectorTimelineAgent.h: |
| * inspector/agents/InspectorWorkerAgent.h: |
| * inspector/agents/WebConsoleAgent.cpp: |
| * inspector/agents/WebConsoleAgent.h: |
| * inspector/agents/WebDebuggerAgent.h: |
| * inspector/agents/WebHeapAgent.h: |
| * inspector/agents/page/PageDebuggerAgent.cpp: |
| * inspector/agents/page/PageRuntimeAgent.cpp: |
| * inspector/agents/page/PageRuntimeAgent.h: |
| * inspector/agents/worker/ServiceWorkerAgent.h: |
| * inspector/agents/worker/WorkerDebuggerAgent.cpp: |
| * inspector/agents/worker/WorkerRuntimeAgent.cpp: |
| * inspector/agents/worker/WorkerRuntimeAgent.h: |
| * loader/EmptyClients.cpp: |
| * page/CaptionUserPreferences.cpp: |
| * page/Chrome.cpp: |
| * page/ChromeClient.h: |
| * page/Crypto.cpp: |
| * page/DOMWindow.cpp: |
| * page/DOMWindow.h: |
| * page/Frame.cpp: |
| * page/OriginThreadLocalCache.h: |
| * page/PageConsoleClient.cpp: |
| * page/PageConsoleClient.h: |
| * page/PageDebuggable.cpp: |
| * page/PageGroup.cpp: |
| * page/SettingsBase.h: |
| * page/UserContentController.cpp: |
| * page/cocoa/ResourceUsageThreadCocoa.mm: |
| * page/csp/ContentSecurityPolicy.cpp: |
| * page/ios/FrameIOS.mm: |
| * page/linux/ResourceUsageOverlayLinux.cpp: |
| * page/linux/ResourceUsageThreadLinux.cpp: |
| * platform/MediaSample.h: |
| * platform/SerializedPlatformRepresentation.h: |
| * platform/SharedBuffer.h: |
| * platform/audio/mac/CARingBuffer.h: |
| * platform/cocoa/SharedBufferCocoa.mm: |
| * platform/graphics/ImageBuffer.h: |
| * platform/graphics/LegacyCDMSession.h: |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: |
| * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: |
| * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp: |
| * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: |
| * platform/graphics/avfoundation/MediaSampleAVFObjC.h: |
| * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: |
| * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: |
| * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm: |
| * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| * platform/graphics/cg/ImageBufferDataCG.cpp: |
| * platform/graphics/cg/ImageBufferDataCG.h: |
| * platform/graphics/cocoa/GPUDeviceMetal.mm: |
| * platform/graphics/filters/FEBlend.cpp: |
| * platform/graphics/filters/FEColorMatrix.cpp: |
| * platform/graphics/filters/FEComponentTransfer.cpp: |
| * platform/graphics/filters/FEComposite.cpp: |
| * platform/graphics/filters/FEConvolveMatrix.cpp: |
| * platform/graphics/filters/FEDisplacementMap.cpp: |
| * platform/graphics/filters/FEDropShadow.cpp: |
| * platform/graphics/filters/FEGaussianBlur.cpp: |
| * platform/graphics/filters/FELighting.h: |
| * platform/graphics/filters/FEMorphology.cpp: |
| * platform/graphics/filters/FETurbulence.cpp: |
| * platform/graphics/filters/FilterEffect.cpp: |
| * platform/graphics/filters/FilterEffect.h: |
| * platform/graphics/gpu/GPUBuffer.h: |
| * platform/graphics/gpu/GPUDevice.h: |
| * platform/graphics/iso/ISOBox.cpp: |
| * platform/graphics/iso/ISOOriginalFormatBox.cpp: |
| * platform/graphics/iso/ISOProtectionSchemeInfoBox.cpp: |
| * platform/graphics/iso/ISOSchemeInformationBox.cpp: |
| * platform/graphics/iso/ISOSchemeTypeBox.cpp: |
| * platform/graphics/iso/ISOTrackEncryptionBox.cpp: |
| * platform/graphics/iso/ISOVTTCue.cpp: |
| * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: |
| * platform/graphics/win/ImageBufferDataDirect2D.cpp: |
| * platform/graphics/win/ImageBufferDataDirect2D.h: |
| * platform/ios/wak/WebCoreThread.mm: |
| * platform/mac/SerializedPlatformRepresentationMac.mm: |
| * platform/mac/StringUtilities.mm: |
| * platform/mock/mediasource/MockBox.cpp: |
| * platform/mock/mediasource/MockSourceBufferPrivate.cpp: |
| * svg/graphics/SVGImage.cpp: |
| * testing/GCObservation.cpp: |
| * testing/GCObservation.h: |
| * testing/Internals.cpp: |
| * testing/Internals.h: |
| * testing/LegacyMockCDM.cpp: |
| * testing/MockCDMFactory.cpp: |
| * testing/js/WebCoreTestSupport.cpp: |
| * workers/Worker.cpp: |
| * workers/Worker.h: |
| * workers/WorkerConsoleClient.cpp: |
| * workers/WorkerConsoleClient.h: |
| * workers/WorkerGlobalScope.cpp: |
| * workers/WorkerGlobalScope.h: |
| * workers/WorkerGlobalScopeProxy.h: |
| * workers/WorkerInspectorProxy.cpp: |
| * workers/WorkerMessagingProxy.cpp: |
| * workers/WorkerThread.h: |
| * workers/service/ExtendableEvent.cpp: |
| * workers/service/ServiceWorker.cpp: |
| * workers/service/ServiceWorker.h: |
| * workers/service/ServiceWorkerClient.h: |
| * workers/service/context/ServiceWorkerInspectorProxy.cpp: |
| * workers/service/context/ServiceWorkerThread.cpp: |
| * xml/XMLHttpRequest.cpp: |
| |
| 2018-02-06 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Rendering SVG images with same size as WebGL texture doesn't work correctly |
| https://bugs.webkit.org/show_bug.cgi?id=182367 |
| |
| Reviewed by Dean Jackson. |
| |
| If am image buffer is created for a webgl texture and then it is reused |
| for another texture, it has to be cleared before drawing. |
| |
| Test: webgl/webgl-texture-image-buffer-reuse.html |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): |
| |
| 2018-02-06 Youenn Fablet <youenn@apple.com> |
| |
| Use downcast in createLinkPreloadResourceClient |
| https://bugs.webkit.org/show_bug.cgi?id=182488 |
| |
| Reviewed by Antti Koivisto. |
| |
| No observable change of behavior. |
| Add a new link preloader client for text track. |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::createLinkPreloadResourceClient): |
| * loader/LinkPreloadResourceClients.h: |
| |
| 2018-02-06 Youenn Fablet <youenn@apple.com> |
| |
| imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https.html is flaky |
| https://bugs.webkit.org/show_bug.cgi?id=182541 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by test being no longer flaky. |
| In case of loading error when getting the response body, we were only reporting |
| the error if there was a callback set or a ReadableStream already created. |
| Otherwise, we were just stopping loading and if creating a ReadableStream, we were just returning an empty body. |
| |
| FetchBodyOwner now stores a loading error. |
| In case a readable stream is created, it will error it if there is a loading error. |
| If there is not and the loading failed later on, the stream will be errored using the current code path. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::put): |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::clone): |
| (WebCore::FetchResponse::BodyLoader::didFail): |
| * Modules/fetch/FetchResponse.h: |
| * workers/service/context/ServiceWorkerFetch.cpp: |
| (WebCore::ServiceWorkerFetch::processResponse): |
| |
| 2018-02-06 Andy Estes <aestes@apple.com> |
| |
| [Payment Request] show() should take an optional PaymentDetailsUpdate promise |
| https://bugs.webkit.org/show_bug.cgi?id=182538 |
| <rdar://problem/36754552> |
| |
| Reviewed by Tim Horton. |
| |
| Taught show() to take an optional promise for a PaymentDetailsUpdate. |
| |
| Added test cases to http/tests/paymentrequest/payment-request-show-method.https.html. |
| |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: |
| (WebCore::ApplePayPaymentHandler::detailsUpdated): |
| |
| Changed to take a PaymentRequest::UpdateReason instead of a eventType string. |
| |
| (WebCore::ApplePayPaymentHandler::shippingAddressUpdated): |
| (WebCore::ApplePayPaymentHandler::shippingOptionUpdated): |
| (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): |
| (WebCore::ApplePayPaymentHandler::didAuthorizePayment): |
| (WebCore::ApplePayPaymentHandler::didSelectShippingMethod): |
| (WebCore::ApplePayPaymentHandler::didSelectShippingContact): |
| (WebCore::ApplePayPaymentHandler::didSelectPaymentMethod): |
| |
| Asserted that only one of the PaymentSession delegates is executing at a time. |
| |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: |
| * Modules/paymentrequest/PaymentHandler.h: |
| |
| Changed detailsUpdated to take a PaymentRequest::UpdateReason instead of a eventType string. |
| |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::PaymentRequest::show): |
| |
| If there is a details promise, call updateWith() with UpdateReason::ShowDetailsResolved. |
| |
| (WebCore::PaymentRequest::shippingAddressChanged): |
| (WebCore::PaymentRequest::shippingOptionChanged): |
| (WebCore::PaymentRequest::paymentMethodChanged): |
| |
| Used whenDetailsSettled() to ensure that update events do not start before the show() |
| details promise settles. |
| |
| (WebCore::PaymentRequest::updateWith): |
| (WebCore::PaymentRequest::settleDetailsPromise): |
| |
| Changed to use a PaymentRequest::UpdateReason instead of a eventType string. |
| |
| (WebCore::PaymentRequest::whenDetailsSettled): |
| |
| If there is a details promise, wait for it to settle before executing the callback. |
| |
| * Modules/paymentrequest/PaymentRequest.h: |
| |
| Defined enum class UpdateReason. |
| |
| * Modules/paymentrequest/PaymentRequest.idl: |
| |
| Updated show() to take an optional Promise<PaymentDetailsUpdate>. |
| |
| * Modules/paymentrequest/PaymentRequestUpdateEvent.cpp: |
| (WebCore::PaymentRequestUpdateEvent::updateWith): |
| |
| Map the event type to a PaymentRequest::UpdateReason. |
| |
| 2018-02-06 Dean Jackson <dino@apple.com> |
| |
| REGRESSION: WebGL no longer producing a transparent canvas on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=182550 |
| <rdar://problem/37234491> |
| |
| Reviewed by Eric Carlson. |
| |
| Due to some weirdness GL_RGBA8 is sometimes different between iOS and |
| other platforms. Only tell the WebGLLayer that it is opaque when it really |
| is not transparent. |
| |
| Covered by existing test: fast/canvas/webgl/context-attributes-alpha |
| |
| * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: |
| (WebCore::GraphicsContext3D::setRenderbufferStorageFromDrawable): Look at the context |
| attributes to decide if we should use an opaque layer. |
| * platform/graphics/cocoa/WebGLLayer.mm: Ditto. |
| (-[WebGLLayer initWithGraphicsContext3D:]): |
| |
| 2018-02-06 Andy Estes <aestes@apple.com> |
| |
| [WebIDL] Support optional Promise arguments |
| https://bugs.webkit.org/show_bug.cgi?id=182399 |
| <rdar://problem/36754552> |
| |
| Reviewed by Sam Weinig and Chris Dumez. |
| |
| Previously, declaring a Promise argument as optional would result in a native type of |
| std::optional<RefPtr<DOMPromise>>. This is wasteful, since RefPtr can represent an optional |
| argument by storing nullptr. Further, PassArgumentExpression() assumed Promises were never |
| optional and tried to pass the argument as a Ref by calling RefPtr::releaseNonNull(). |
| |
| This patch removes the std::optional wrapper around optional Promises and simply passes the |
| promise as a RefPtr to native code. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (PassArgumentExpression): |
| (GenerateParametersCheck): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromiseBody): |
| (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromise): |
| * bindings/scripts/test/TestObj.idl: |
| |
| 2018-02-06 Youenn Fablet <youenn@apple.com> |
| |
| HasServiceWorkerRegistration bit should be sent when creating a new page |
| https://bugs.webkit.org/show_bug.cgi?id=182410 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by new API test. |
| |
| Changed the default value of service workers being registered to false. |
| Every page created in the process will be responsible to change the value to true, |
| at which time the value will be kept to true for the lifetime of the process. |
| |
| * workers/service/ServiceWorkerProvider.h: |
| |
| 2018-02-06 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Add missing #if ENABLE(VIDEO) after r228092. |
| https://bugs.webkit.org/show_bug.cgi?id=182539 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * html/ImageBitmap.cpp: |
| |
| 2018-02-06 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Test at media/modern-media-controls/tracks-panel/tracks-panel-controls-bar-remains-visible-after-clicking-over-it.html fails |
| https://bugs.webkit.org/show_bug.cgi?id=182425 |
| |
| Reviewed by Dean Jackson. |
| |
| This test failed because the controls bar would not hit test at the moment we synthesized a mousemove over the controls bar as the first step towards |
| synthesizing a click on the controls bar to dismiss the tracks panel. Indeed, it would have "pointer-events" set to "none" until the tracks panel was |
| dismissed, which would only happen after the click event had been propagated. All we need to do is to ensure that none of the controls within the controls |
| bar get activated as a result of clicking over them when the tracks panel is visible, so we instead set "pointer-events" to "none" on all children of a |
| controls bar rather than the controls bar itself, which can thus still hit test. |
| |
| * Modules/modern-media-controls/controls/media-controls.css: |
| (.media-controls.shows-tracks-panel > .controls-bar > *,): |
| (.media-controls.shows-tracks-panel > .controls-bar,): Deleted. |
| |
| 2018-02-06 Chris Dumez <cdumez@apple.com> |
| |
| Service workers registrations are saved to disk before the install / activation succeeds |
| https://bugs.webkit.org/show_bug.cgi?id=182535 |
| <rdar://problem/36591485> |
| |
| Reviewed by Youenn Fablet. |
| |
| Service workers registrations are saved to disk before the install / activation succeeds. |
| This means if the browser exits before the install / activation succeeds, we may restore |
| from disk a registration with an “active” worker which may have never been installed / |
| activated. |
| |
| To address the issue, we now delay saving the registration to disk until after the service |
| worker has been activated. |
| |
| No new tests, restoration from disk is covered by API tests that still pass. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::didFinishActivation): |
| (WebCore::SWServer::installContextData): |
| |
| 2018-02-06 Ms2ger <Ms2ger@igalia.com> |
| |
| Initialize ImageBitmap::m_bitmapData in the constructor. |
| https://bugs.webkit.org/show_bug.cgi?id=182487 |
| |
| Reviewed by Sam Weinig. |
| |
| This removes the span of time where an ImageBitmap object would exist |
| with a null m_bitmapData during its construction. |
| |
| No new tests: no behavior changes. |
| |
| * html/ImageBitmap.cpp: |
| (WebCore::ImageBitmap::create): update signature |
| (WebCore::ImageBitmap::createPromise): update callers |
| (WebCore::ImageBitmap::ImageBitmap): update signature |
| * html/ImageBitmap.h: update signatures |
| |
| 2018-02-05 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assertion in inlineVideoFrame |
| https://bugs.webkit.org/show_bug.cgi?id=182513 |
| <rdar://problem/37159363> |
| |
| Reviewed by Zalan Bujtas. |
| |
| The bug was caused by the fact it's not always safe to invoke updateLayout even when isSafeToUpdateStyleOrLayout |
| on a document of a flattened frame on iOS. isSafeToUpdateStyleOrLayout returns true when the frame view is in |
| the frame-flattening mode to avoid hitting a release asssertion in updateLayout of the frame. However, it's still |
| not safe to invoke updateLayout on a parent frame in this case. |
| |
| As a result, inlineVideoFrame (in Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm) invokes updateLayout |
| even when the top-level document is not safe to update when the video element is in a frame-flattened document. |
| |
| Fixed this bug by explicitly checking that we still have a live render tree and document hasn't been stopped. |
| Also replaced other uses of isSafeToUpdateStyleOrLayout by more explicit checks. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::updateBackingStore): Made the early exit condition added in r227006 more explicit. |
| Namely, InspectorDOMAgent::pseudoElementCreated is invoked during style recalc. |
| * dom/Document.cpp: |
| (WebCore::isSafeToUpdateStyleOrLayout): Made this local to the file. |
| (WebCore::Document::updateStyleIfNeeded): |
| (WebCore::Document::updateLayout): |
| * dom/Document.h: |
| * html/MediaElementSession.cpp: |
| (WebCore::isMainContentForPurposesOfAutoplay): Made the early exit condition added in r227529 more explicit. Don't |
| update the layout when the render tree had been destroyed or the active DOM objects had been stopped. |
| |
| 2018-02-05 Youenn Fablet <youenn@apple.com> |
| |
| Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html |
| https://bugs.webkit.org/show_bug.cgi?id=182422 |
| <rdar://problem/37182665> |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by test no longer crashing in Debug mode. |
| Make sure completionHandler is called on the main thread. |
| |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]): |
| |
| 2018-02-05 Filip Pizlo <fpizlo@apple.com> |
| |
| Global objects should be able to use TLCs to allocate from different blocks from each other |
| https://bugs.webkit.org/show_bug.cgi?id=182227 |
| |
| Reviewed by Daniel Bates and Chris Dumez. |
| |
| No new tests because no change in behavior. |
| |
| Adopt JSC TLC API to put distance between objects from different security origins. WebCore has |
| a subclass of ThreadLocalCache that supports hash-consing based on the relevant origin data |
| using the existing SecurityOriginHash. It's Document's job to initiate this, but all of the |
| logic is in WebCore::OriginThreadLocalCache. |
| |
| Workers don't opt into this. They just get the VM's default TLC all the time. |
| |
| * ForwardingHeaders/heap/ThreadLocalCache.h: Added. |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSDOMGlobalObject.cpp: |
| (WebCore::JSDOMGlobalObject::JSDOMGlobalObject): |
| * bindings/js/JSDOMGlobalObject.h: |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::JSDOMWindowBase::JSDOMWindowBase): |
| * dom/Document.cpp: |
| (WebCore::Document::initSecurityContext): |
| (WebCore::Document::threadLocalCache): |
| * dom/Document.h: |
| * page/OriginThreadLocalCache.cpp: Added. |
| (WebCore::threadLocalCacheMap): |
| (WebCore::OriginThreadLocalCache::create): |
| (WebCore::OriginThreadLocalCache::~OriginThreadLocalCache): |
| (WebCore::OriginThreadLocalCache::OriginThreadLocalCache): |
| * page/OriginThreadLocalCache.h: Added. |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::passesFileCheck const): |
| (WebCore::SecurityOrigin::setEnforcesFilePathSeparation): |
| (WebCore::SecurityOrigin::toString const): |
| (WebCore::SecurityOrigin::enforceFilePathSeparation): Deleted. |
| * page/SecurityOrigin.h: |
| (WebCore::SecurityOrigin::enforcesFilePathSeparation const): |
| |
| 2018-02-05 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Release assert failed under NetworkStateNotifier::singleton. |
| https://bugs.webkit.org/show_bug.cgi?id=182516 |
| |
| Reviewed by Brent Fulgham. |
| |
| The callback NetworkStateNotifier::addressChangeCallback will always be called on a |
| worker thread on Windows. Since the method NetworkStateNotifier::singleton() is |
| called by NetworkStateNotifier::addressChangeCallback, but has to be called on the |
| on the main thread, the call has to be moved there. |
| |
| No new tests. I have not been able to reproduce the crash. |
| |
| * platform/network/win/NetworkStateNotifierWin.cpp: |
| (WebCore::NetworkStateNotifier::addressChangeCallback): |
| |
| 2018-02-05 Don Olmstead <don.olmstead@sony.com> |
| |
| Abstract heap generator should include JavaScriptCore headers directly |
| https://bugs.webkit.org/show_bug.cgi?id=182501 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * domjit/generate-abstract-heap.rb: |
| |
| 2018-02-05 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Extra zoom mode] Implement number pad UI when editing `tel` and `number` inputs |
| https://bugs.webkit.org/show_bug.cgi?id=182472 |
| <rdar://problem/35143057> |
| |
| Reviewed by Tim Horton. |
| |
| Adds a localized string for the "Done" button text in extra zoomed form controls. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::formControlDoneButtonTitle): |
| * platform/LocalizedStrings.h: |
| |
| 2018-02-05 John Wilander <wilander@apple.com> |
| |
| Build fix for r228115, simple naming issue succeeded —> success. |
| https://bugs.webkit.org/show_bug.cgi?id=182507 |
| <rdar://problem/37248566> |
| |
| Reviewed by Eric Carlson. |
| |
| No new tests. Build fix. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::enterFullscreenHandler): |
| succeeded —> success |
| |
| 2018-02-05 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228086. |
| |
| This introduced a failure with API test |
| URLTest.HostIsIPAddress. |
| |
| Reverted changeset: |
| |
| "Add a way to check if a host is an IP address" |
| https://bugs.webkit.org/show_bug.cgi?id=182427 |
| https://trac.webkit.org/changeset/228086 |
| |
| 2018-02-05 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r228103. |
| |
| This caused multiple tests to crash. |
| |
| Reverted changeset: |
| |
| "Use downcast in createLinkPreloadResourceClient" |
| https://bugs.webkit.org/show_bug.cgi?id=182488 |
| https://trac.webkit.org/changeset/228103 |
| |
| 2018-02-05 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] VideoFullscreenInterfaceAVKit should not ignore errors |
| https://bugs.webkit.org/show_bug.cgi?id=182497 |
| <rdar://problem/36986898> |
| |
| Reviewed by Jer Noble. |
| |
| Always call layoutIfNeeded before calling -[AVPlayerViewController enterFullScreenAnimated:completionHandler] |
| or -[AVPlayerViewController exitFullScreenAnimated:completionHandler] because they both fail |
| if the view needs layout. Also don't ignore errors returned by those calls. |
| |
| No new tests, the failure is non deterministic and I was not able to reproduce in a test. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::applicationDidBecomeActive): |
| (VideoFullscreenInterfaceAVKit::enterFullscreenStandard): |
| (VideoFullscreenInterfaceAVKit::exitFullscreen): |
| (VideoFullscreenInterfaceAVKit::cleanupFullscreen): |
| (VideoFullscreenInterfaceAVKit::didStartPictureInPicture): |
| (VideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler): |
| (VideoFullscreenInterfaceAVKit::doEnterFullscreen): |
| (VideoFullscreenInterfaceAVKit::exitFullscreenHandler): |
| (VideoFullscreenInterfaceAVKit::enterFullscreenHandler): |
| |
| 2018-02-05 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r222795): Nike app "Refused to set unsafe header" when adding and viewing cart |
| https://bugs.webkit.org/show_bug.cgi?id=182491 |
| <rdar://problem/36533447> |
| |
| Reviewed by Brent Fulgham. |
| |
| Exempt Nike from the XHR header restrictions in r222795. |
| |
| Following r222795 only Dashboard widgets are allowed to set arbitrary XHR headers. |
| However Nike also depends on such functionality. |
| |
| * platform/RuntimeApplicationChecks.h: |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::IOSApplication::isNike): |
| |
| 2018-02-02 Brent Fulgham <bfulgham@apple.com> |
| |
| Improve NetworkResourceLoader logging so it can be used for 'setCookiesFromDOM' |
| https://bugs.webkit.org/show_bug.cgi?id=182455 |
| <rdar://problem/36626601> |
| |
| Reviewed by Chris Dumez. |
| |
| After this refactoring, a convenience method I added in r227860 is no longer needed. |
| This patch removes this dead code. |
| |
| * platform/network/NetworkStorageSession.h: Export 'cookieStoragePartition' so it can |
| be used in WebKit. |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::hasStorageAccessForFrame): Deleted unused method. |
| |
| 2018-02-05 Antti Koivisto <antti@apple.com> |
| |
| Make ASSERT_WITH_SECURITY_IMPLICATION in CachedResourceClientWalker::next a release assert |
| https://bugs.webkit.org/show_bug.cgi?id=182492 |
| |
| Reviewed by Youenn Fablet. |
| |
| * loader/cache/CachedResourceClientWalker.h: |
| (WebCore::CachedResourceClientWalker::next): |
| |
| 2018-02-05 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Add testRunner.getAllStorageAccessEntries() to make testing easier and more explicit |
| https://bugs.webkit.org/show_bug.cgi?id=181601 |
| <rdar://problem/36475837> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. Existing test updated. |
| |
| http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html |
| was found to be flaky. With the testRunner.hasStorageAccessEntry() getter |
| it's possible to check access even if a frame doesn't respond timely to |
| postMessage after detach and attach. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::getAllStorageAccessEntries const): |
| |
| 2018-02-05 Youenn Fablet <youenn@apple.com> |
| |
| Use downcast in createLinkPreloadResourceClient |
| https://bugs.webkit.org/show_bug.cgi?id=182488 |
| |
| Reviewed by Antti Koivisto. |
| |
| No observable change of behavior. |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::createLinkPreloadResourceClient): |
| |
| 2018-02-05 Chris Dumez <cdumez@apple.com> |
| |
| Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https.html is flaky |
| https://bugs.webkit.org/show_bug.cgi?id=181166 |
| <rdar://problem/37169508> |
| |
| Reviewed by Youenn Fablet. |
| |
| I found out that this test was flakily timing out because our jobQueues would sometimes get stuck |
| when their current job's connection or service worker (when scheduled by a service worker) would |
| go away before the job is complete. |
| |
| This patch makes our job queues operation more robust by: |
| 1. Cancelling all jobs from a given connection when a SWServerConnection goes away |
| 2. Cancelling all jobs from a given service worker when a service worker gets terminated |
| |
| We also make sure service workers created by a job get properly terminated when a job |
| is canceled to avoid leaving service workers in limbo. |
| |
| No new tests, unskipped existing flaky test. |
| |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::removeRegistration): |
| (WebCore::ServiceWorkerContainer::updateRegistration): |
| * workers/service/ServiceWorkerJobData.cpp: |
| (WebCore::ServiceWorkerJobData::ServiceWorkerJobData): |
| (WebCore::ServiceWorkerJobData::isolatedCopy const): |
| * workers/service/ServiceWorkerJobData.h: |
| (WebCore::ServiceWorkerJobData::encode const): |
| (WebCore::ServiceWorkerJobData::decode): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::startScriptFetch): |
| (WebCore::SWServer::scriptContextFailedToStart): |
| (WebCore::SWServer::scriptContextStarted): |
| (WebCore::SWServer::terminatePreinstallationWorker): |
| (WebCore::SWServer::installContextData): |
| (WebCore::SWServer::workerContextTerminated): |
| (WebCore::SWServer::unregisterConnection): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerJobQueue.cpp: |
| (WebCore::SWServerJobQueue::removeAllJobsMatching): |
| (WebCore::SWServerJobQueue::cancelJobsFromConnection): |
| (WebCore::SWServerJobQueue::cancelJobsFromServiceWorker): |
| * workers/service/server/SWServerJobQueue.h: |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::setPreInstallationWorker): |
| |
| 2018-02-05 Antti Koivisto <antti@apple.com> |
| |
| Crash on sfgate.com because mismatching link preload types |
| https://bugs.webkit.org/show_bug.cgi?id=182483 |
| <rdar://problem/37065331> |
| |
| Reviewed by Daniel Bates. |
| |
| Preloading the same URL with different 'as' types causes some confusion. |
| |
| Test: http/tests/preload/link-preload-type-mismatch.html |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::createLinkPreloadResourceClient): |
| |
| Ensure we use the actual resource type when creating the client. |
| |
| (WebCore::LinkLoader::preloadIfNeeded): |
| |
| Don't construct client if the types don't match. This can happen if there is an existing |
| preload for the same resource with different type. |
| |
| 2018-02-05 Manuel Rego Casasnovas <rego@igalia.com> |
| |
| [css-grid] Rename gutter properties to remove "grid-" prefix |
| https://bugs.webkit.org/show_bug.cgi?id=180290 |
| |
| Reviewed by Javier Fernandez. |
| |
| This patch applies the resoultion of the CSS WG to unprefix |
| the CSS Grid Layout gutter properties: |
| https://github.com/w3c/csswg-drafts/issues/1696 |
| |
| column-gap already existed before, as it's part of Multicol. |
| The patch adds the new properties row-gap and gap, and keep the legacy ones |
| as aliases: |
| - grid-column-gap => column-gap |
| - grid-row-gap => row-gap |
| - grid-gap => gap |
| |
| As column-gap was already animatable, this change takes advantage |
| to make animatable row-gap too. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-align/gaps/ |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSProperties.json: |
| * css/StyleProperties.cpp: |
| * css/parser/CSSParserFastPaths.cpp: |
| (WebCore::isSimpleLengthPropertyID): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| (WebCore::CSSPropertyParser::parseShorthand): |
| * page/animation/CSSPropertyAnimation.cpp: |
| (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::availableSpaceForGutters const): |
| (WebCore::RenderGrid::gridGap const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::gridAutoRows const): |
| (WebCore::RenderStyle::columnGap const): |
| (WebCore::RenderStyle::rowGap const): |
| (WebCore::RenderStyle::setGridItemRowEnd): |
| (WebCore::RenderStyle::setColumnGap): |
| (WebCore::RenderStyle::setRowGap): |
| (WebCore::RenderStyle::initialRowGap): |
| * rendering/style/StyleGridData.cpp: |
| (WebCore::StyleGridData::StyleGridData): |
| * rendering/style/StyleGridData.h: |
| (WebCore::StyleGridData::operator== const): |
| * rendering/style/StyleMultiColData.cpp: |
| (WebCore::StyleMultiColData::StyleMultiColData): |
| (WebCore::StyleMultiColData::operator== const): |
| * rendering/style/StyleMultiColData.h: |
| * rendering/style/StyleRareNonInheritedData.cpp: |
| (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): |
| (WebCore::StyleRareNonInheritedData::operator== const): |
| * rendering/style/StyleRareNonInheritedData.h: |
| |
| 2018-02-05 Ms2ger <Ms2ger@igalia.com> |
| |
| Implement createImageBitmap(HTMLVideoElement) |
| https://bugs.webkit.org/show_bug.cgi?id=182388 |
| |
| Reviewed by Žan Doberšek. |
| |
| The implementation is inspired by CanvasRenderingContext2DBase::drawImage(). |
| |
| Tests: |
| |
| - web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html |
| - web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html |
| |
| |
| * html/ImageBitmap.cpp: |
| (WebCore::taintsOrigin): Add function to help with the implementation. |
| (WebCore::ImageBitmap::createPromise): Fill in implementation. |
| |
| 2018-02-05 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed, rolling out r228085. |
| |
| Pixel data stride is imposed by OpenGL and shouldn't be |
| adjusted for Cairo |
| |
| Reverted changeset: |
| |
| "[Cairo] Correctly calculate stride in |
| GraphicsContext3D::paintToCanvas()" |
| https://bugs.webkit.org/show_bug.cgi?id=182466 |
| https://trac.webkit.org/changeset/228085 |
| |
| 2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets must use system proxy settings |
| https://bugs.webkit.org/show_bug.cgi?id=126384 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Use soup_session_connect_async() when available to create the WebSockets connection instead of GSocketClient |
| directly. |
| |
| * platform/network/soup/SocketStreamHandleImpl.h: |
| * platform/network/soup/SocketStreamHandleImplSoup.cpp: |
| (WebCore::wssSocketClientEventCallback): |
| (WebCore::SocketStreamHandleImpl::create): |
| (WebCore::SocketStreamHandleImpl::connected): |
| (WebCore::SocketStreamHandleImpl::connectedCallback): |
| (WebCore::SocketStreamHandleImpl::platformClose): |
| |
| 2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Add a way to check if a host is an IP address |
| https://bugs.webkit.org/show_bug.cgi?id=182427 |
| |
| Reviewed by Alex Christensen. |
| |
| There are several places where this is needed. We currently just assume that any host ending in a digit is an IP |
| address, except in PublicSuffix where platform specific code is used. This patch adds URL::hostIsIPAddress() |
| platform specific implementations, falling back to current assumption if there isn't an implementation for the |
| platform. |
| |
| * page/OriginAccessEntry.cpp: |
| (WebCore::OriginAccessEntry::OriginAccessEntry): Use URL::hostIsIPAddress(). |
| * platform/URL.cpp: |
| (WebCore::URL::hostIsIPAddress): Fallback implementation. |
| * platform/URL.h: |
| * platform/mac/PublicSuffixMac.mm: |
| (WebCore::topPrivatelyControlledDomain): Use URL::hostIsIPAddress(). |
| * platform/mac/URLMac.mm: |
| (WebCore::URL::hostIsIPAddress): Move implementation from PublicSuffixMac.mm. |
| * platform/network/curl/CookieUtil.cpp: |
| (WebCore::CookieUtil::isIPAddress): Use URL::hostIsIPAddress(). |
| * platform/soup/URLSoup.cpp: |
| (WebCore::URL::hostIsIPAddress): Use g_hostname_is_ip_address(). |
| |
| 2018-02-04 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Correctly calculate stride in GraphicsContext3D::paintToCanvas() |
| https://bugs.webkit.org/show_bug.cgi?id=182466 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/graphics/cairo/GraphicsContext3DCairo.cpp: |
| (WebCore::GraphicsContext3D::paintToCanvas): |
| Use cairo_format_stride_for_width() to obtain stride that Cairo thinks |
| is appropriate for the given width, taking into account internal |
| alignment requirements. |
| |
| 2018-02-04 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Split TexMap functionality out of GraphicsContext3DCairo |
| https://bugs.webkit.org/show_bug.cgi?id=182465 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Take the Non-Cairo GraphicsContext3D functionality that's stashed in |
| GraphicsContext3DCairo and move it into the GraphicsContext3DTextureMapper |
| file. |
| |
| In GraphicsContext3DCairo.cpp, only the Cairo-specific GraphicsContext3D |
| functionality remains, specifically ImageExtractor and paintToCanvas(). |
| |
| Everything else is moved into GraphicsContext3DTextureMapper.cpp. This |
| filename and its location under platform/graphics/texmap/ was chosen |
| since all the ports using this file (GTK, WPE, WinCairo) are also using |
| the TextureMapper module. Various #if-guards are simplified in the |
| moved-over code to reflect this. |
| |
| GraphicsContext3DCairo.cpp now better reflects GraphicsContext3DCG.cpp, |
| with both implementing functionality specific to a 2D painting library, |
| whereas GraphicsContext3DTextureMapper.cpp reflects |
| GraphicsContext3DCocoa.cpp in covering functionality needed to integrate |
| the GraphicsContext3D output into the platform-specific composition |
| system. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/TextureMapper.cmake: |
| * platform/graphics/cairo/GraphicsContext3DCairo.cpp: |
| (WebCore::activeContexts): Deleted. |
| (WebCore::GraphicsContext3D::create): Deleted. |
| (WebCore::GraphicsContext3D::GraphicsContext3D): Deleted. |
| (WebCore::GraphicsContext3D::~GraphicsContext3D): Deleted. |
| (WebCore::GraphicsContext3D::setContextLostCallback): Deleted. |
| (WebCore::GraphicsContext3D::setErrorMessageCallback): Deleted. |
| (WebCore::GraphicsContext3D::makeContextCurrent): Deleted. |
| (WebCore::GraphicsContext3D::checkGPUStatus): Deleted. |
| (WebCore::GraphicsContext3D::platformGraphicsContext3D): Deleted. |
| (WebCore::GraphicsContext3D::platformTexture const): Deleted. |
| (WebCore::GraphicsContext3D::isGLES2Compliant const): Deleted. |
| (WebCore::GraphicsContext3D::platformLayer const): Deleted. |
| (WebCore::GraphicsContext3D::getExtensions): Deleted. |
| * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: Copied from Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp. |
| (WebCore::activeContexts): |
| (WebCore::GraphicsContext3D::create): |
| (WebCore::GraphicsContext3D::GraphicsContext3D): |
| (WebCore::GraphicsContext3D::~GraphicsContext3D): |
| (WebCore::GraphicsContext3D::setContextLostCallback): |
| (WebCore::GraphicsContext3D::setErrorMessageCallback): |
| (WebCore::GraphicsContext3D::makeContextCurrent): |
| (WebCore::GraphicsContext3D::checkGPUStatus): |
| (WebCore::GraphicsContext3D::platformGraphicsContext3D): |
| (WebCore::GraphicsContext3D::platformTexture const): |
| (WebCore::GraphicsContext3D::isGLES2Compliant const): |
| (WebCore::GraphicsContext3D::platformLayer const): |
| (WebCore::GraphicsContext3D::getExtensions): |
| |
| 2018-02-04 Zan Dobersek <zdobersek@igalia.com> |
| |
| Simplify GraphicsContext3D::paintToCanvas() |
| https://bugs.webkit.org/show_bug.cgi?id=182459 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Cairo-specific paintToCanvas() method is dropped in favor of the more |
| common one that operates on a GraphicsContext object. The platform |
| context object is then retrieved inside the Cairo-speficic |
| paintToCanvas() implementation, and not at the call site in |
| GraphicsContext3D::paintRenderingResultsToCanvas(). |
| |
| GraphicsContext3D::paintToCanvas() is also modified so that the image |
| and canvas sizes are passed through IntSize objects, and not through |
| a width-and-height pair of integer values. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/cairo/GraphicsContext3DCairo.cpp: |
| (WebCore::GraphicsContext3D::paintToCanvas): |
| * platform/graphics/cg/GraphicsContext3DCG.cpp: |
| (WebCore::GraphicsContext3D::paintToCanvas): |
| * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: |
| (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): |
| |
| 2018-02-03 Alexey Proskuryakov <ap@apple.com> |
| |
| Tweak availability macros for CAN_DISALLOW_USER_INSTALLED_FONTS |
| |
| Rubber-stamped by Maciej Stachowiak. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| |
| 2018-02-02 Daniel Bates <dabates@apple.com> |
| |
| Clean up FrameLoader::receivedFirstData() |
| https://bugs.webkit.org/show_bug.cgi?id=182361 |
| |
| Reviewed by Andy Estes. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::receivedFirstData): |
| |
| 2018-02-02 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Test fix after r227995 |
| https://bugs.webkit.org/show_bug.cgi?id=180951 |
| |
| Unreviewed. |
| |
| Webfonts shouldn't be run through CTFontDescriptorCreateMatchingFontDescriptor(). |
| Also, unify macOS's and iOS's implementation of FontCache::lastResortFallbackFont(). |
| |
| Covered by existing tests. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontDatabase::collectionForFamily): |
| (WebCore::FontDatabase::fontForPostScriptName): |
| (WebCore::addAttributesForInstalledFonts): |
| (WebCore::addAttributesForWebFonts): |
| (WebCore::installedFontMandatoryAttributes): |
| (WebCore::FontCache::lastResortFallbackFont): |
| (WebCore::addAttributesForUserInstalledFonts): Deleted. |
| (WebCore::mandatoryAttributesForUserInstalledFonts): Deleted. |
| * platform/graphics/cocoa/FontCacheCoreText.h: |
| * platform/graphics/ios/FontCacheIOS.mm: |
| (WebCore::FontCache::lastResortFallbackFont): Deleted. |
| * platform/graphics/mac/FontCacheMac.mm: |
| (WebCore::FontCache::lastResortFallbackFont): Deleted. |
| * platform/graphics/mac/FontCustomPlatformData.cpp: |
| (WebCore::FontCustomPlatformData::fontPlatformData): |
| |
| 2018-02-02 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| Fix build error after r 227457 with VIDEO and WEB_AUDIO disabled |
| https://bugs.webkit.org/show_bug.cgi?id=182395 |
| |
| Reviewed by Eric Carlson |
| |
| * platform/audio/PlatformMediaSessionManager.cpp: |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): |
| |
| 2018-02-02 Don Olmstead <don.olmstead@sony.com> |
| |
| Remove WebCore/ForwardingHeaders directory |
| https://bugs.webkit.org/show_bug.cgi?id=182347 |
| |
| Reviewed by Alex Christensen. |
| |
| Baseline tests updated. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (AddToIncludesForIDLType): |
| (GenerateEnumerationImplementationContent): |
| (GenerateDictionaryImplementationContent): |
| (GenerateHeader): |
| (GenerateOverloadDispatcher): |
| (addUnscopableProperties): |
| (GenerateImplementation): |
| (GenerateOperationDefinition): |
| (GenerateSerializerDefinition): |
| (GenerateConstructorHelperMethods): |
| * bindings/scripts/test/JS/JSInterfaceName.cpp: |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| * bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp: |
| * bindings/scripts/test/JS/JSTestCallbackFunctionWithThisObject.cpp: |
| * bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp: |
| * bindings/scripts/test/JS/JSTestCallbackInterface.cpp: |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: |
| * bindings/scripts/test/JS/JSTestDOMJIT.cpp: |
| * bindings/scripts/test/JS/JSTestDOMJIT.h: |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| * bindings/scripts/test/JS/JSTestException.cpp: |
| * bindings/scripts/test/JS/JSTestException.h: |
| * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestInterface.cpp: |
| * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: |
| * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| * bindings/scripts/test/JS/JSTestObj.h: |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| * bindings/scripts/test/JS/JSTestPluginInterface.h: |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| * bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp: |
| * bindings/scripts/test/JS/JSTestStandaloneEnumeration.cpp: |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| * dom/make_event_factory.pl: |
| (generateImplementation): |
| |
| 2018-02-02 David Quesada <david_quesada@apple.com> |
| |
| WebAppManifest scope should default to the containing directory of start_url if 'scope' is not specified |
| https://bugs.webkit.org/show_bug.cgi?id=182363 |
| rdar://problem/37093498 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| If an app manifest doesn't specify a scope, we should default to the "parent directory" of |
| the start URL, rather than leaving the app unbounded. This is more reasonable than using the |
| entire internet as the app scope. |
| |
| No new tests, updates to the existing tests verify the new behavior. |
| |
| * Modules/applicationmanifest/ApplicationManifestParser.cpp: |
| (WebCore::ApplicationManifestParser::parseScope): |
| |
| 2018-02-02 Youenn Fablet <youenn@apple.com> |
| |
| Clearing all service worker registrations should wait for importing service worker registration to finish |
| https://bugs.webkit.org/show_bug.cgi?id=182407 |
| <rdar://problem/37167523> |
| |
| Reviewed by Chris Dumez. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::clear): ensure completion handler is called on early exit case. |
| |
| 2018-02-02 Youenn Fablet <youenn@apple.com> |
| |
| Clearing all service worker registrations should wait for importing service worker registration to finish |
| https://bugs.webkit.org/show_bug.cgi?id=182407 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by existing tests and the service worker API test being no longer flaky. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::registrationStoreImportComplete): |
| (WebCore::SWServer::clearAll): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::getOriginsWithRegistrations): |
| * workers/service/server/SWServer.h: |
| |
| 2018-02-02 Chris Dumez <cdumez@apple.com> |
| |
| Clearing a registration should null out its workers before setting their state to "redundant" |
| https://bugs.webkit.org/show_bug.cgi?id=182418 |
| <rdar://problem/37142874> |
| |
| Reviewed by Youenn Fablet. |
| |
| Clearing a registration should null out its workers before setting their state to "redundant". |
| This seems to match Firefox and Chrome. |
| |
| No new tests, rebaselined existing test. |
| |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::clear): |
| (WebCore::clearRegistrationWorker): Deleted. |
| |
| 2018-02-02 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Turn media/modern-media-controls/tracks-panel and media/modern-media-controls/tracks-support back on |
| https://bugs.webkit.org/show_bug.cgi?id=182426 |
| |
| Reviewed by Dean Jackson. |
| |
| Ensure that the tracks panel isn't dismissed by updating the layout. |
| |
| * Modules/modern-media-controls/controls/inline-media-controls.js: |
| (InlineMediaControls.prototype.layout): |
| |
| 2018-02-02 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r227964. |
| https://bugs.webkit.org/show_bug.cgi?id=182423 |
| |
| It broke several unit tests (Requested by KaL on #webkit). |
| |
| Reverted changeset: |
| |
| "[SOUP] Ensure domain is valid when converting a WebCore |
| Cookie to Soup" |
| https://bugs.webkit.org/show_bug.cgi?id=182328 |
| https://trac.webkit.org/changeset/227964 |
| |
| 2018-02-01 Chris Dumez <cdumez@apple.com> |
| |
| When SW install fails, null out registration.installing before setting worker state to "redundant" |
| https://bugs.webkit.org/show_bug.cgi?id=182416 |
| <rdar://problem/37141997> |
| |
| Reviewed by Youenn Fablet. |
| |
| When SW install fails, null out registration.installing before setting worker state to "redundant". |
| This does not match the spec but this is what Firefox and Chrome do. This is also what the |
| web-platform-tests expect. |
| |
| Test: http/tests/workers/service/install-fails.html |
| |
| * workers/service/server/SWServerJobQueue.cpp: |
| (WebCore::SWServerJobQueue::didFinishInstall): |
| |
| 2018-02-01 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Test fix after r227848. |
| https://bugs.webkit.org/show_bug.cgi?id=180951 |
| |
| Unreviewed. |
| |
| Using kCTFontNameAttribute on an in-memory font causes CTFontDescriptorCreateMatchingFontDescriptor() |
| to return nullptr. Luckily, we weren't using that attribute anyway. |
| |
| Covered by existing tests. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::mandatoryAttributesForUserInstalledFonts): |
| |
| 2018-02-01 Youenn Fablet <youenn@apple.com> |
| |
| Delay service worker process creation until actually needed by SWServer |
| https://bugs.webkit.org/show_bug.cgi?id=182301 |
| |
| Reviewed by Chris Dumez. |
| |
| Rename SWServer::Connection::scheduleJobInServer to scheduleJob. |
| Add sessionID getter from an SWServer. |
| |
| * workers/service/server/SWServer.h: |
| (WebCore::SWServer::sessionID const): |
| |
| 2018-02-01 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| REGRESSION(r227594) [WinCairo] NULL pointer crash in GraphicsContext::getWindowsContext |
| https://bugs.webkit.org/show_bug.cgi?id=182282 |
| |
| Reviewed by Žan Doberšek. |
| |
| ImageBufferCairo has been changed to use GraphicsContextImplCairo |
| in r227594. But, GraphicsContext::getWindowsContext doesn't care |
| the case of using GraphicsContextImpl and crashes due to null |
| dereference of GraphicsContext::m_data. |
| |
| GraphicsContext::getWindowsContext should create a HDC in that case. |
| |
| Remove the argument mayCreateBitmap because it is always |
| true at the moment. |
| |
| No new tests (Covered by the existing tests) |
| |
| * platform/graphics/GraphicsContext.h: |
| Removed a argument mayCreateBitmap of getWindowsContext and releaseWindowsContext. |
| * platform/graphics/win/GraphicsContextCGWin.cpp: |
| (WebCore::GraphicsContext::releaseWindowsContext): Ditto. |
| * platform/graphics/win/GraphicsContextCairoWin.cpp: |
| (WebCore::GraphicsContext::releaseWindowsContext): Ditto. |
| * platform/graphics/win/GraphicsContextDirect2D.cpp: |
| (WebCore::GraphicsContext::releaseWindowsContext): Ditto. |
| * platform/graphics/win/GraphicsContextWin.cpp: |
| (WebCore::GraphicsContext::getWindowsContext): |
| Create a HDC if m_impl is null. Removed a argument mayCreateBitmap. |
| * platform/graphics/win/LocalWindowsContext.h: |
| (WebCore::LocalWindowsContext::LocalWindowsContext): |
| Removed m_mayCreateBitmap. |
| (WebCore::LocalWindowsContext::~LocalWindowsContext): Ditto. |
| |
| 2018-02-01 Christopher Reid <chris.reid@sony.com> |
| |
| [Curl] Use SQLite database in cookie jar implementation for Curl port |
| https://bugs.webkit.org/show_bug.cgi?id=174942 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests, Set-Cookie is already tested in Layout tests. |
| |
| Adding an initial SQLite CookieJar implementation to the curl network layer. |
| WebCore will now parse and handle both HTTP and DOM cookies instead of using libcurl. |
| This currently supports cookie storage and retrieval. |
| Cookie deletion is not yet implemented. |
| |
| * platform/Curl.cmake: |
| * platform/network/NetworkStorageSession.h: Added cookieDB storage in curl. |
| * platform/network/curl/CookieJarCurl.cpp: Removed the old curl cookie handling. |
| * platform/network/curl/CookieJarCurl.h: |
| * platform/network/curl/CookieJarCurlDatabase.cpp: Added. |
| * platform/network/curl/CookieJarCurlDatabase.h: Added. |
| * platform/network/curl/CookieJarDB.cpp: Added. |
| * platform/network/curl/CookieJarDB.h: Added. |
| * platform/network/curl/CookieUtil.cpp: Added. |
| * platform/network/curl/CookieUtil.h: Added. |
| * platform/network/curl/CurlContext.cpp: Removed the old curl cookie handling. |
| * platform/network/curl/CurlContext.h: |
| * platform/network/curl/CurlRequest.cpp: Added handlers for HTTP response cookies. |
| * platform/network/curl/NetworkStorageSessionCurl.cpp: |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: |
| |
| 2018-02-01 Chris Dumez <cdumez@apple.com> |
| |
| Add missing RETURN_IF_EXCEPTION() after object->get() calls in convertDictionary<>() |
| https://bugs.webkit.org/show_bug.cgi?id=182392 |
| <rdar://problem/37119215> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add missing RETURN_IF_EXCEPTION() after object->get() calls in convertDictionary<>(), |
| given that getting the property from the object can throw an exception. |
| |
| No new tests, rebaselined existing test. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateDictionaryImplementationContent): |
| * bindings/scripts/test/JS/JSTestCallbackInterface.cpp: |
| (WebCore::convertDictionary<TestCallbackInterface::Dictionary>): |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| (WebCore::convertDictionary<TestEventConstructor::Init>): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::convertDictionary<TestObj::Dictionary>): |
| (WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>): |
| (WebCore::convertDictionary<TestObj::DictionaryThatShouldTolerateNull>): |
| (WebCore::convertDictionary<AlternateDictionaryName>): |
| (WebCore::convertDictionary<TestObj::ParentDictionary>): |
| (WebCore::convertDictionary<TestObj::ChildDictionary>): |
| (WebCore::convertDictionary<TestObj::ConditionalDictionaryA>): |
| (WebCore::convertDictionary<TestObj::ConditionalDictionaryB>): |
| (WebCore::convertDictionary<TestObj::ConditionalDictionaryC>): |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| (WebCore::convertDictionary<TestPromiseRejectionEvent::Init>): |
| * bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp: |
| (WebCore::convertDictionary<DictionaryImplName>): |
| |
| 2018-02-01 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Some test cases in accessibility/mac/selection-notification-focus-change.html fail |
| https://bugs.webkit.org/show_bug.cgi?id=182212 |
| <rdar://problem/36937147> |
| |
| Reviewed by Antti Koivisto and Wenson Hsieh. |
| |
| The failure was caused by the async update of the selection appearance not preserving selection reveal intent. |
| Fixed the bug by storing the intent in a member variable and using it later. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::focus): Removed an unnecessary synchronous layout update. |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::setNeedsSelectionUpdate): Use the default intent to preserve the old behavior. |
| (WebCore::FrameSelection::respondToNodeModification): Ditto. |
| (WebCore::FrameSelection::setSelection): Save the selection reveal intent. |
| (WebCore::FrameSelection::updateAppearanceAfterLayoutOrStyleChange): Use the saved intent. |
| * editing/FrameSelection.h: |
| * page/FocusController.cpp: |
| (WebCore::FocusController::advanceFocusDirectionally): Always update the layout before invoking |
| nodeRectInAbsoluteCoordinates. |
| |
| 2018-02-01 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderRubyRun::rubyBaseSafe to RenderTreeBuilder::Ruby |
| https://bugs.webkit.org/show_bug.cgi?id=182306 |
| <rdar://problem/37041440> |
| |
| Reviewed by Darin Adler. |
| |
| Addressing post-review comment. |
| |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): |
| (WebCore::RenderTreeBuilder::Ruby::rubyBaseSafe): |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| |
| 2018-02-01 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Introduce RenderTreeBuilder to takeChild() |
| https://bugs.webkit.org/show_bug.cgi?id=182373 |
| <rdar://problem/37101484> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is in preparation for moving mutation code out of takeChild. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::takeChild): |
| * rendering/RenderBlock.h: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::takeChild): |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::takeChild): |
| * rendering/RenderButton.h: |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::takeChild): |
| (WebCore::RenderElement::removeAndDestroyChild): |
| (WebCore::RenderElement::destroyLeftoverChildren): |
| * rendering/RenderElement.h: |
| * rendering/RenderFullScreen.cpp: |
| (WebCore::RenderFullScreen::wrapExistingRenderer): |
| (WebCore::RenderFullScreen::unwrapRenderer): |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::takeChild): |
| * rendering/RenderGrid.h: |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::takeChild): |
| * rendering/RenderMenuList.h: |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::removeFromParentAndDestroy): |
| * rendering/RenderRuby.cpp: |
| (WebCore::RenderRubyAsInline::takeChild): |
| (WebCore::RenderRubyAsBlock::takeChild): |
| * rendering/RenderRuby.h: |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): |
| * rendering/RenderRubyRun.h: |
| * rendering/RenderTableRow.cpp: |
| (WebCore::RenderTableRow::collapseAndDestroyAnonymousSiblingRows): Deleted. |
| * rendering/RenderTableRow.h: |
| * rendering/svg/RenderSVGContainer.cpp: |
| (WebCore::RenderSVGContainer::takeChild): |
| * rendering/svg/RenderSVGContainer.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::takeChild): |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::takeChild): |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::takeChild): |
| * rendering/svg/RenderSVGText.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::collapseAndDestroyAnonymousSiblingRows): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| * rendering/updating/RenderTreeBuilderList.cpp: |
| (WebCore::RenderTreeBuilder::List::updateItemMarker): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| (WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): |
| |
| 2018-02-01 Dean Jackson <dino@apple.com> |
| |
| REGRESSION (r219342): Scaled HTML widget is not responding to a clicks outside the body |
| https://bugs.webkit.org/show_bug.cgi?id=182394 |
| <rdar://problem/34840816> |
| |
| Reviewed by Simon Fraser. |
| |
| If a scale < 1 is applied to the page, then the visual viewport will be bigger |
| than the layout viewport. Our hit testing code would then ignore any hits |
| that were outside the layout viewport. |
| |
| The fix is to only apply a hit testing clip if the page is scaling up, not down. |
| |
| Update the existing fast/dom/elementFromPoint-scaled-scrolled.html test. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::layoutViewportToAbsoluteRect const): Deleted. This helper is |
| no longer used, and it would have probably been more confusing to have it accept |
| a flag to ignore the scale if it is less than 1. |
| * page/FrameView.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::hitTest): No need to take the layout rect, remove the origin, |
| and pass it to a helper that added the origin back. The only thing the helper was |
| doing for us was applying a scale factor, which we only want to do if it was |
| scaling up. |
| |
| 2018-02-01 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Structured cloning a Symbol should throw |
| https://bugs.webkit.org/show_bug.cgi?id=182380 |
| |
| Reviewed by Darin Adler. |
| |
| Test: js/dom/post-message-symbol.html |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| Structured cloning should throw "DataCloneError" DOMException if it finds Symbol. |
| Remove unused `isNumber()` case. It is done in dumpImmediate. |
| (WebCore::CloneSerializer::serializeUndefined): Deleted. |
| (WebCore::CloneSerializer::serializeBoolean): Deleted. |
| (WebCore::CloneSerializer::serializeNumber): Deleted. |
| Remove unused functions. |
| |
| 2018-02-01 Chris Dumez <cdumez@apple.com> |
| |
| We no longer need to queue service worker jobs until the connection to the service worker process has been established |
| https://bugs.webkit.org/show_bug.cgi?id=182375 |
| |
| Reviewed by Youenn Fablet. |
| |
| We no longer need to queue service worker jobs until the connection to the service worker process |
| has been established. We initially did this to work around the fact that registrations restored |
| from disk would not have an active worker until the service worker process had been established. |
| However, this issue has been fixed in r227696. |
| |
| This is basically a revert of r227220, which is no longer needed after r227696. |
| |
| No new tests, initial fix was covered by an API test that still passes. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::clearAll): |
| (WebCore::SWServer::clear): |
| (WebCore::SWServer::scheduleJob): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| * workers/service/server/SWServer.h: |
| |
| 2018-02-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Shift + mouse scroll should scroll horizontally |
| https://bugs.webkit.org/show_bug.cgi?id=181629 |
| |
| Reviewed by Michael Catanzaro. |
| |
| We currently turn vertical scroll into horizontal when scrolling over the horizontal scrollbar. When Shift key is |
| pressed, we still want to scroll in the scrollbar direction when scrolling over a scrollbar, so we need to swap |
| directions in both scrollbars depending on whther the Shift key is pressed or not. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::shouldSwapScrollDirection const): Renamed. |
| (WebCore::EventHandler::handleWheelEvent): Use the new name. |
| (WebCore::EventHandler::shouldTurnVerticalTicksIntoHorizontal const): Deleted. |
| * page/EventHandler.h: |
| * platform/PlatformWheelEvent.h: |
| (WebCore::PlatformWheelEvent::copySwappingDirection const): Swap the direction of the event. |
| (WebCore::PlatformWheelEvent::copyTurningVerticalTicksIntoHorizontalTicks const): Deleted. |
| * platform/glib/EventHandlerGLib.cpp: |
| (WebCore::EventHandler::shouldSwapScrollDirection const): Take into account whether the Shift key is present. |
| (WebCore::EventHandler::shouldTurnVerticalTicksIntoHorizontal const): Deleted. |
| |
| 2018-02-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Problem with Washington Post images |
| https://bugs.webkit.org/show_bug.cgi?id=181421 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| This is because Washington Post is using the user agent to decide the image formats it serves. In the case of |
| chromium the images are served as webp, for firefox jpeg is used and in our case it's assuming we are safari and |
| it's providing jp2 images that we don't support. Add a user agent quirk to pretend to be chromium for |
| washingtonpost.com. |
| |
| * platform/UserAgentQuirks.cpp: |
| (WebCore::urlRequiresChromeBrowser): |
| |
| 2018-02-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Ensure domain is valid when converting a WebCore Cookie to Soup |
| https://bugs.webkit.org/show_bug.cgi?id=182328 |
| |
| Reviewed by Michael Catanzaro. |
| |
| soup_cookie_parse() adds the initial '.' to the domain if missing before creating the SoupCookie, but |
| soup_cookie_new() allows for domain to be a hostname that needs to match exactly. When converting a WebCore |
| Cookie into a SoupCookie we always want the domain to be considered as such and not as a hostname, so we need to |
| prepend the '.' if missing. |
| |
| Fixes: imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_domain_cookie |
| |
| * platform/network/soup/CookieSoup.cpp: |
| (WebCore::Cookie::toSoupCookie const): |
| |
| 2018-02-01 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTableRow::collapseAndDestroyAnonymousSiblingRows to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182374 |
| <rdar://problem/37102005> |
| |
| Reviewed by Antti Koivisto. |
| |
| It's only called from RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderTableRow.cpp: |
| (WebCore::RenderTableRow::collapseAndDestroyAnonymousSiblingRows): Deleted. |
| * rendering/RenderTableRow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows): |
| * rendering/updating/RenderTreeBuilderTable.h: |
| |
| 2018-02-01 Chris Dumez <cdumez@apple.com> |
| |
| Queue a microtask when a waitUntil() promise is settled |
| https://bugs.webkit.org/show_bug.cgi?id=182372 |
| <rdar://problem/37101019> |
| |
| Reviewed by Mark Lam. |
| |
| Queue a microtask when a waitUntil() promise is settled, as per: |
| - https://w3c.github.io/ServiceWorker/#dom-extendableevent-waituntil (step 5) |
| |
| Otherwise, we decrement m_pendingPromiseCount too quickly and it may cause |
| following calls to waitUntil() to throw when they shouldn't. |
| |
| No new tests, rebaselined existing test. |
| |
| * workers/service/ExtendableEvent.cpp: |
| (WebCore::ExtendableEvent::addExtendLifetimePromise): |
| |
| 2018-02-01 Antti Koivisto <antti@apple.com> |
| |
| Invalidate style for sibling combinators accurately on class change |
| https://bugs.webkit.org/show_bug.cgi?id=182336 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Use Style::Invalidator to invalidate only those elements that may be affected by a class |
| change for sibling combinators and nth pseudo classes. |
| |
| * css/RuleFeature.cpp: |
| |
| Add new AllSiblings MatchElement to use for nth pseudo classes with subselectors. |
| |
| (WebCore::isSiblingOrSubject): |
| |
| Add a helper. |
| |
| (WebCore::RuleFeatureSet::computeNextMatchElement): |
| (WebCore::RuleFeatureSet::computeSubSelectorMatchElement): |
| |
| Compute and propage MatchElement::AllSiblings. |
| |
| * css/RuleFeature.h: |
| * dom/Node.cpp: |
| (WebCore::Node::updateAncestorsForStyleRecalc): |
| |
| Don't need to test for childrenAffectedByPropertyBasedBackwardPositionalRules anymore (an oddly named bit for nth pseudo classes). |
| |
| * style/StyleInvalidator.cpp: |
| (WebCore::Style::Invalidator::invalidateStyleWithMatchElement): |
| |
| Invalidate only the potentially affected elements. |
| The old code would just unconditionally invalidate the current element. This would propagate to descedants of siblings via |
| affectedByPreviousSibling bits. That mechanism can be removed when everything has been switched to accurate invalidation. |
| |
| 2018-01-31 Simon Fraser <simon.fraser@apple.com> |
| |
| Use different debug red colors for different contexts |
| https://bugs.webkit.org/show_bug.cgi?id=182362 |
| |
| Reviewed by Tim Horton. |
| |
| Pure red is used elsehwere in the system as a debug color indicator, so use different |
| shades of red for WebKit in the two places where we paint a reddish wash in debug builds, |
| so they are identifiable. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::paintContents): |
| |
| 2018-01-31 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Make JavaScriptCore headers copies |
| https://bugs.webkit.org/show_bug.cgi?id=182303 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * CMakeLists.txt: |
| * PlatformMac.cmake: |
| * PlatformWPE.cmake: |
| * PlatformWin.cmake: |
| * PlatformWinCairo.cmake: |
| |
| 2018-01-31 Per Arne Vollan <pvollan@apple.com> |
| |
| Layout Test fast/events/beforeunload-dom-manipulation-crash.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=181204 |
| <rdar://problem/36256274> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| When a frame element is moved in the DOM tree during the execution of a beforeunload handler, |
| the frame will be detached when removed from its previous position in the DOM tree. When being |
| detached, an attempt will also be made to stop the load by calling FrameLoader::stopAllLoaders(). |
| However, this method will return early when executed in a beforeunload handler, since navigation |
| is not allowed then. The end result is a detached frame which will continue to load, and hitting |
| asserts in DocumentLoader::dataReceived(), and DocumentLoader::notifyFinished(). It should be |
| possible to stop a frame load, even when executing a beforeunload handler. |
| |
| No new tests. Covered by the existing test fast/events/beforeunload-dom-manipulation-crash.html. |
| |
| * history/PageCache.cpp: |
| (WebCore::PageCache::addIfCacheable): Fix a failing API test by allowing scripts to be executed |
| under the PageCache::prune method. |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::isStopLoadingAllowed const): |
| (WebCore::FrameLoader::stopAllLoaders): |
| * loader/FrameLoader.h: |
| * svg/graphics/SVGImage.cpp: |
| (WebCore::SVGImage::~SVGImage): Disable scripts disallowed assertions in this scope, since it is |
| safe in this context. |
| |
| 2018-01-31 Javier Fernandez <jfernandez@igalia.com> |
| |
| inline-block baseline not computed correctly for vertical-lr |
| https://bugs.webkit.org/show_bug.cgi?id=170176 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| When computing the baseline position of inline-block elements we use the |
| InlineFlow logicalTop and the FontMetrics ascent. The issue comes from |
| the fact that these units are incompatible. The logicalTop of a |
| vertical-lr element is offset to the left edge, while the ascent is the |
| distance from the right edge. |
| |
| We need to either use logical value for the FontMetrics ascent so we can |
| compute the correctly the baselines of vertical-lr elements, or just using |
| the logicalBottom for these cases. |
| |
| The approach based on a logicalAscent API for FontMetrics would require |
| a lot of work because inline-block logic assumes everything is vertical-rl |
| and at some point, flips the elements along the block-axis in case of |
| vertical-lr mode. |
| |
| While it'd be desirable to get rid of this flipping logic, this patch tries |
| first the simpler approach of using logicalBottom, which aligns with the |
| currently implemented logic. |
| |
| Tests: fast/inline-block/baseline-vertical-01.html |
| fast/inline-block/baseline-vertical-02.html |
| fast/inline-block/baseline-vertical-03.html |
| fast/inline-block/baseline-vertical-04.html |
| fast/inline-block/baseline-vertical-05.html |
| fast/inline-block/baseline-vertical-06.html |
| fast/inline-block/baseline-vertical-07.html |
| fast/inline-block/baseline-vertical-08.html |
| |
| * rendering/InlineFlowBox.cpp: |
| (WebCore::InlineFlowBox::placeBoxesInBlockDirection): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::inlineBlockBaseline const): |
| |
| 2018-01-31 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| BitmapImage::drawPattern() may not draw a complete frame even after all the data is received |
| https://bugs.webkit.org/show_bug.cgi?id=182277 |
| |
| Reviewed by Simon Fraser. |
| |
| BitmapImage::drawPattern() needs to destroy the incomplete decoded frame |
| before trying to draw it as a pattern. |
| |
| Test: http/tests/images/draw-pattern-slow-load-large-image.html |
| |
| * loader/cache/CachedImage.cpp: |
| (WebCore::CachedImage::updateBufferInternal): We need to disable CachedImage |
| data buffering for testing. This simulates slow network where intervals |
| between data chunks can last for seconds. |
| * loader/cache/CachedImage.h: |
| * platform/graphics/BitmapImage.cpp: |
| (WebCore::BitmapImage::drawPattern): Destroy the incomplete decoded frame |
| before drawing this frame as a pattern. We do not destroy incomplete decoded |
| frame once new data is received because it may be drawn by async image |
| drawing while waiting for the newer frame to finish decoding. |
| * testing/Internals.cpp: |
| (WebCore::Internals::setForceUpdateImageDataEnabledForTesting): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Add a release assertion to ensure timers are deleted in the right thread |
| https://bugs.webkit.org/show_bug.cgi?id=182351 |
| |
| Reviewed by David Kilzer. |
| |
| Added a relese assertion in ~TimerBase that the current thread is the one in which the timer was created. |
| |
| We use canAccessThreadLocalDataForThread for this purpose since the condition is more complicated |
| when WebThread is being used. |
| |
| * platform/Timer.cpp: |
| (WebCore::TimerBase::~TimerBase): Added the assertion. |
| * platform/Timer.h: |
| (WebCore::TimerBase::m_thread): Always store the current thread in a timer. |
| |
| 2018-01-31 Youenn Fablet <youenn@apple.com> |
| |
| Change SWServer::claim to set the iterator value as soon as possible |
| https://bugs.webkit.org/show_bug.cgi?id=182337 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior, this is a "let's go safe way" fix. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::claim): |
| |
| 2018-01-31 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderObject::removeFromParentAndDestroyCleaningUpAnonymousWrappers to RenderTreeBuilder. |
| https://bugs.webkit.org/show_bug.cgi?id=182348 |
| <rdar://problem/37082837> |
| |
| Reviewed by Antti Koivisto. |
| |
| All the callsites are in the RenderTreeUpdater by now. |
| |
| No change in functionality. |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::isAnonymousAndSafeToDelete): Deleted. |
| (WebCore::findDestroyRootIncludingAnonymous): Deleted. |
| (WebCore::RenderObject::removeFromParentAndDestroyCleaningUpAnonymousWrappers): Deleted. |
| * rendering/RenderObject.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::isAnonymousAndSafeToDelete): |
| (WebCore::findDestroyRootIncludingAnonymous): |
| (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| (WebCore::RenderTreeUpdater::tearDownTextRenderer): |
| |
| 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk |
| https://bugs.webkit.org/show_bug.cgi?id=182319 |
| <rdar://problem/36904312> |
| |
| Reviewed by Chris Dumez. |
| |
| The crash was caused by a wrong release assertion. Handle author scripts shrinking the resource timing buffer |
| while resourcetimingbufferfull event is being dispatched. |
| |
| Also fixed a bug that a superflous resourcetimingbufferfull event will be fired when new resource timing entries |
| are queued while resourcetimingbufferfull event is being dispatched. |
| |
| Test: http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry.html |
| http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html |
| |
| * page/Performance.cpp: |
| (WebCore::Performance::resourceTimingBufferFullTimerFired): |
| |
| 2018-01-31 Youenn Fablet <youenn@apple.com> |
| |
| com.apple.WebKit.Storage crashing at com.apple.WebCore: WebCore::SWServerRegistration::removeClientUsingRegistration |
| https://bugs.webkit.org/show_bug.cgi?id=182316 |
| <rdar://problem/37025976> |
| |
| Reviewed by Chris Dumez. |
| |
| SWServer.m_clientToControllingWorker and SWServerRegistration.m_clientsUsingRegistration might currently get out of sync. |
| This is a defensive fix to ensure storage process will not crash in Release. |
| We keep the ASSERT as this probably means there is an abnormal situation that other patches might fix. |
| |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::removeClientUsingRegistration): |
| |
| 2018-01-31 Antoine Quint <graouts@apple.com> |
| |
| [Modern Media Controls] Turn media/modern-media-controls/start-support tests back on |
| https://bugs.webkit.org/show_bug.cgi?id=182297 |
| |
| Reviewed by Jon Lee and Eric Carlson. |
| |
| We identified one cause of flakiness when turning those tests back on and fix it in this patch. There would be |
| cases where the play/pause button would never actually become visible because we would first set it as one of |
| the buttons in the left container in the bottom controls bar before we would identify that we should show the |
| prominent play/pause button, and then once we did, we would add it as a child to the InlineMediaControls. But, |
| because the actual layout of the ButtonsContainer would happen in a rAF due to being a layout() method, we would |
| remove the play/pause button from the InlineMediaControls and set it as a child of the left container even |
| though it wasn't visible. |
| |
| Performing the layout of a ButtonsContainer should really happen immediately when we set the buttons, so in this |
| patch we remove the "buttons" property and clients of ButtonsContainer can simply add or remove children which |
| will be laid out in a row. To support this, we've added two notification methods to LayoutNode, one that indicates |
| when children have changed, didChangeChildren(), which we override in ButtonsContainer to perform a synchronous |
| layout. The other method is willRemoveChild() which we also override in ButtonsContainer, this time to reset |
| the "x" and "visible" properties which we set while performing layout. |
| |
| This fixes flakiness for media/modern-media-controls/start-support/start-support-click-to-start.html, and maybe |
| other modern-media-controls tests that could have been affected by this unexpected behavior. |
| |
| * Modules/modern-media-controls/controls/buttons-container.js: |
| (ButtonsContainer.prototype.willRemoveChild): |
| (ButtonsContainer.prototype.didChangeChildren): |
| (ButtonsContainer.prototype.layout): |
| (ButtonsContainer.prototype.get buttons): Deleted. |
| (ButtonsContainer.prototype.set buttons): Deleted. |
| * Modules/modern-media-controls/controls/inline-media-controls.js: |
| (InlineMediaControls.prototype.layout): |
| (InlineMediaControls.prototype._updateBottomControlsBarLabel): |
| (InlineMediaControls.prototype._addTopRightBarWithMuteButtonToChildren): |
| (InlineMediaControls): |
| * Modules/modern-media-controls/controls/layout-node.js: |
| (LayoutNode.prototype.set children): |
| (LayoutNode.prototype.addChild): |
| (LayoutNode.prototype.removeChild): |
| (LayoutNode.prototype.willRemoveChild): |
| (LayoutNode.prototype.didChangeChildren): |
| * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js: |
| (MacOSFullscreenMediaControls.prototype.layout): |
| * Modules/modern-media-controls/media/media-controller.js: Drive-by fix to correctly set the value passed as |
| data-auto-hide-delay on a <video> element. |
| |
| 2018-01-31 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderMultiColumnFlow::resolveMovedChild to RenderTreeBuilder. |
| https://bugs.webkit.org/show_bug.cgi?id=182315 |
| <rdar://problem/37048160> |
| |
| Reviewed by Antti Koivisto. |
| |
| resolveMovedChild() is only called from RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::resolveMovedChild const): Deleted. |
| * rendering/RenderMultiColumnFlow.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::resolveMovedChildForMultiColumnFlow): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChild): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::resolveMovedChild): |
| * rendering/updating/RenderTreeBuilderMultiColumn.h: |
| |
| 2018-01-31 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Silent WebAudio buffers support |
| https://bugs.webkit.org/show_bug.cgi?id=143869 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp: |
| (webKitWebAudioSrcLoop): Flag silent buffers as GAP buffers. This |
| enables downstream elements to optimize the buffer processing. |
| |
| 2018-01-31 Xabier Rodriguez Calvar <calvaris@igalia.com> |
| |
| [EME] Fix NavigatorEME::tryNextSupportedConfiguration typo |
| https://bugs.webkit.org/show_bug.cgi?id=182324 |
| |
| Reviewed by Žan Doberšek. |
| |
| * Modules/encryptedmedia/NavigatorEME.cpp: |
| (WebCore::tryNextSupportedConfiguration): Fix |
| candidateCofiguration typo. |
| |
| 2018-01-30 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [WinCairo] syntheticBoldOffset makes a font with embedded bitmap fonts shown as double strike in HiDPI |
| https://bugs.webkit.org/show_bug.cgi?id=182093 |
| |
| Reviewed by Alex Christensen. |
| |
| WebKit draws texts doubly by shifting 1px for fonts without bold |
| fonts but bold font is desired. This synthetic bold method draws |
| fonts with embedded bitmap fonts look like double strike in HiDPI. |
| |
| No new tests (Covered by the existing tests). |
| |
| * platform/graphics/win/FontCacheWin.cpp: |
| (WebCore::createGDIFont): Overwrite lfWeight if the desired weight |
| is bold and matched font weight is't bold and in WinCairo port. |
| Fix wrong indentation. |
| |
| 2018-01-30 Youenn Fablet <youenn@apple.com> and Oleksandr Skachkov <gskachkov@gmail.com> |
| |
| FetchResponse should support ConsumeData callback on chunk data is received |
| https://bugs.webkit.org/show_bug.cgi?id=181600 |
| <rdar://problem/36932547> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-body-loaded-in-chunk.https.html |
| |
| Apply same read-by-chunk strategy for body coming from network as for body coming from ReadableStream. |
| Refactor to have one consumeBodyReceivedByChunk method for both cases. |
| This allows streaming data from a service worker to WebProcess as would be done by NetworkProcess. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::addAll): |
| (WebCore::DOMCache::put): |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::BodyLoader::didSucceed): |
| (WebCore::FetchResponse::BodyLoader::didReceiveData): |
| (WebCore::FetchResponse::BodyLoader::consumeDataByChunk): |
| (WebCore::FetchResponse::consumeBody): |
| (WebCore::FetchResponse::consumeBodyReceivedByChunk): |
| * Modules/fetch/FetchResponse.h: |
| * workers/service/context/ServiceWorkerFetch.cpp: |
| (WebCore::ServiceWorkerFetch::processResponse): |
| |
| 2018-01-30 Don Olmstead <don.olmstead@sony.com> |
| |
| JSExports.h should be included as <JavaScriptCore/JSExportMacros.h> |
| https://bugs.webkit.org/show_bug.cgi?id=182312 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No new tests. No change in behavior. |
| |
| * config.h: |
| |
| 2018-01-30 Chris Nardi <cnardi@chromium.org> |
| |
| Use double-quotes when serializing font-feature-settings |
| https://bugs.webkit.org/show_bug.cgi?id=182201 |
| |
| According to the CSSOM spec, all strings should be serialized with double-quotes. The feature |
| tag value was previously serialized with single-quotes; change this to double-quotes to match |
| the spec and non-WebKit browsers. |
| |
| Reviewed by Myles C. Maxfield. |
| |
| Updated css3/font-feature-settings-parsing.html, fast/css/inherited-properties-rare-text.html, |
| and fast/text/font-face-javascript.html. |
| |
| * css/CSSFontFeatureValue.cpp: |
| (WebCore::CSSFontFeatureValue::customCSSText const): |
| |
| 2018-01-30 Brent Fulgham <bfulgham@apple.com> |
| |
| Add telemetry to track storage access API adoption |
| https://bugs.webkit.org/show_bug.cgi?id=182197 |
| <rdar://problem/35803309> |
| |
| Reviewed by Chris Dumez. |
| |
| Part 2: Add telemetry for the Storage Access API case |
| |
| Adds a new convenience method to identify origin/page/frame combinations that |
| have been granted access to the Storage Access API. This is used for debug |
| logging in the NetworkProcess. It is not used in production builds. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::hasStorageAccessForFrame const): Added. |
| |
| 2018-01-30 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assert in updateLayout() via AXObjectCache::childrenChanged |
| https://bugs.webkit.org/show_bug.cgi?id=182279 |
| <rdar://problem/36994456> |
| |
| Reviewed by Antti Koivisto. |
| |
| Disable the assertion in Document::updateLayout and Document::updateStyle* in this particular circumstance as fixing it |
| would require a large architectural refactoring of the accessibility code. |
| |
| Test: accessibility/accessibility-object-update-during-style-resolution-crash.html |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::childrenChanged): Disabled the release assertion here. |
| * dom/Document.cpp: |
| (WebCore::Document::isSafeToUpdateStyleOrLayout const): Check LayoutAssertionDisableScope::shouldDisable. |
| * dom/ScriptDisallowedScope.h: |
| (WebCore::ScriptDisallowedScope::LayoutAssertionDisableScope): Added. |
| (WebCore::ScriptDisallowedScope::LayoutAssertionDisableScope::LayoutAssertionDisableScope): Added. |
| (WebCore::ScriptDisallowedScope::LayoutAssertionDisableScope::~LayoutAssertionDisableScope): Added. |
| (WebCore::ScriptDisallowedScope::LayoutAssertionDisableScope::shouldDisable): Added. |
| * page/LayoutContext.cpp: |
| (WebCore::LayoutContext::layout): Check LayoutAssertionDisableScope::shouldDisable. |
| |
| 2018-01-30 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderRubyRun::rubyBaseSafe to RenderTreeBuilder::Ruby |
| https://bugs.webkit.org/show_bug.cgi?id=182306 |
| <rdar://problem/37041440> |
| |
| Reviewed by Antti Koivisto. |
| |
| With all the ruby mutation code moving, only RenderTreeBuilder calls RenderRubyRun::rubyBaseSafe. |
| |
| No change in functionality. |
| |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::rubyText const): |
| (WebCore::RenderRubyRun::rubyBase const): |
| (WebCore::RenderRubyRun::firstLineBlock const): |
| (WebCore::RenderRubyRun::takeChild): |
| (WebCore::RenderRubyRun::rubyBaseSafe): Deleted. |
| * rendering/RenderRubyRun.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): |
| (WebCore::RenderTreeBuilder::Ruby::rubyBaseSafe): |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| |
| 2018-01-30 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Unified sources for FEMorphology.cpp seems to break the windows build. |
| https://bugs.webkit.org/show_bug.cgi?id=178847 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Fix a compilation error. |
| platform/graphics/filters/SpotLightSource.cpp(45): error C2027: use of undefined type 'WebCore::FilterEffect' |
| |
| No new tests (No behavior change) |
| |
| * Sources.txt: Removed @no-unify for FEMorphology.cpp. |
| * platform/graphics/filters/SpotLightSource.cpp: Added #include "FilterEffect.h". |
| |
| 2018-01-30 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Test fix after r227776 |
| https://bugs.webkit.org/show_bug.cgi?id=180951 |
| |
| Unreviewed. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::mandatoryAttributesForUserInstalledFonts): |
| |
| 2018-01-30 Dean Jackson <dino@apple.com> |
| |
| CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::Document::updateStyleIfNeeded |
| https://bugs.webkit.org/show_bug.cgi?id=182299 |
| <rdar://problem/36853088> |
| |
| Removing a misleading comment based on Zalan Bujtas's feedback. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded): |
| |
| 2018-01-30 Dean Jackson <dino@apple.com> |
| |
| CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::Document::updateStyleIfNeeded |
| https://bugs.webkit.org/show_bug.cgi?id=182299 |
| <rdar://problem/36853088> |
| |
| Reviewed by Simon Fraser. |
| |
| Mostly speculative fix for the case where a scrollTo moves an |
| animated SVG image into view, causing its animation to restart during |
| a paint operation. This was causing a release ASSERT, so we now defer |
| the resumption of the animation into a timer. |
| |
| Test: svg/animated-svgImage-scroll.html |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded): Enqueue the |
| animation if it is an SVGImage. |
| * svg/graphics/SVGImage.cpp: Add a timer to enqueue animation starts. |
| (WebCore::SVGImage::SVGImage): |
| (WebCore::SVGImage::startAnimationTimerFired): |
| (WebCore::SVGImage::enqueueStartAnimation): |
| (WebCore::SVGImage::stopAnimation): |
| * svg/graphics/SVGImage.h: |
| |
| 2018-01-30 Chris Dumez <cdumez@apple.com> |
| |
| Service worker registration soft updates happen too frequently |
| https://bugs.webkit.org/show_bug.cgi?id=182296 |
| <rdar://problem/37031862> |
| |
| Reviewed by Youenn Fablet. |
| |
| Move code that updates the registration's last update check time from after |
| the script bytecheck to before, as per: |
| - https://w3c.github.io/ServiceWorker/#update (step 7.19) |
| |
| This way, the last update check time gets updated even if the newly fetched |
| script is identical to the previous one, which is the common case. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::updateWorker): |
| * workers/service/server/SWServerJobQueue.cpp: |
| (WebCore::SWServerJobQueue::scriptFetchFinished): |
| |
| 2018-01-30 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move childBecameNonInline to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=182265 |
| <rdar://problem/37004459> |
| |
| Reviewed by Antti Koivisto. |
| |
| Move the mutation code that wraps/unwraps a child element when its flow state changes |
| from(to) in-flow to(from) floating/out-of-flow. |
| |
| No change in functionality. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::childBecameNonInline): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/RenderBoxModelObject.h: |
| (WebCore::RenderBoxModelObject::childBecameNonInline): Deleted. |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleDidChange): |
| (WebCore::RenderElement::handleDynamicFloatPositionChange): Deleted. |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::childBecameNonInline): Deleted. |
| * rendering/RenderInline.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock): |
| (WebCore::RenderTreeBuilder::splitFlow): Deleted. |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::childBecameNonInline): |
| * rendering/updating/RenderTreeBuilderBlock.h: |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::childBecameNonInline): |
| * rendering/updating/RenderTreeBuilderInline.h: |
| |
| 2018-01-30 Brent Fulgham <bfulgham@apple.com> |
| |
| Add telemetry to track storage access API adoption |
| https://bugs.webkit.org/show_bug.cgi?id=182197 |
| <rdar://problem/35803309> |
| |
| Reviewed by Chris Dumez. |
| |
| Partial roll-out of r227755. |
| |
| The original patch assumed the WebContent process kept track of user interaction. This is |
| only tracked in the UIProcess, so we can get rid of some of the logging code adding in |
| r227755. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::logFrameNavigation): |
| (WebCore::ResourceLoadObserver::logSubresourceLoading): |
| (WebCore::ResourceLoadObserver::setTimeToLivePartitionFree): Deleted. |
| (WebCore::ResourceLoadObserver::wasAccessedWithinInteractionWindow const): Deleted. |
| * loader/ResourceLoadObserver.h: |
| |
| 2018-01-30 Chris Dumez <cdumez@apple.com> |
| |
| Make sure we never create a WebSWClientConnection with an invalid sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=182276 |
| <rdar://problem/36582633> |
| |
| Reviewed by Alex Christensen. |
| |
| Make sure we never create a WebSWClientConnection with an invalid sessionID as this |
| could corrupt our hash tables. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::privateBrowsingStateDidChange): |
| * workers/service/ServiceWorker.cpp: |
| (WebCore::ServiceWorker::postMessage): |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::ready): |
| (WebCore::ServiceWorkerContainer::getRegistration): |
| (WebCore::ServiceWorkerContainer::didFinishGetRegistrationRequest): |
| (WebCore::ServiceWorkerContainer::getRegistrations): |
| (WebCore::ServiceWorkerContainer::didFinishGetRegistrationsRequest): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration): |
| (WebCore::ServiceWorkerContainer::ensureSWClientConnection): |
| |
| 2018-01-30 Antti Koivisto <antti@apple.com> |
| |
| Avoid traversing too much when doing class change invalidation |
| https://bugs.webkit.org/show_bug.cgi?id=181604 |
| |
| Reviewed by Zalan Bujtas. |
| |
| We are now collecting information about which part of the tree a change in class can potentially affect. |
| Use the information to traverse only the required elements in Style::Invalidator. |
| |
| The same mechanism can be later used for attribute and id change invalidation. |
| |
| * css/DocumentRuleSets.cpp: |
| (WebCore::DocumentRuleSets::collectFeatures const): |
| (WebCore::DocumentRuleSets::classInvalidationRuleSets const): |
| (WebCore::DocumentRuleSets::subjectClassRules const): Deleted. |
| (WebCore::DocumentRuleSets::ancestorClassRules const): Deleted. |
| |
| Remove separate subject and ancestor invalidation RuleSets. Instead collect all invalidation rulesets |
| to a vector along with their MatchElements. |
| |
| * css/DocumentRuleSets.h: |
| * css/RuleFeature.cpp: |
| (WebCore::RuleFeatureSet::computeNextMatchElement): |
| (WebCore::RuleFeatureSet::computeSubSelectorMatchElement): |
| (WebCore::RuleFeatureSet::collectFeatures): |
| |
| Similarly collect all class invalidation RuleFeatures to a general HashMap along with the MatchElement. |
| |
| (WebCore::RuleFeatureSet::add): |
| (WebCore::RuleFeatureSet::clear): |
| (WebCore::RuleFeatureSet::shrinkToFit): |
| * css/RuleFeature.h: |
| (WebCore::RuleFeature::RuleFeature): |
| * style/ClassChangeInvalidation.cpp: |
| (WebCore::Style::ClassChangeInvalidation::computeInvalidation): |
| |
| Find out InvalidationRuleSets to use. |
| |
| (WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets): |
| |
| Pass them to Style::Invalidator. |
| |
| * style/ClassChangeInvalidation.h: |
| * style/StyleInvalidator.cpp: |
| (WebCore::Style::Invalidator::invalidateStyleForTree): |
| (WebCore::Style::Invalidator::invalidateStyleForDescendants): |
| (WebCore::Style::Invalidator::invalidateStyleWithMatchElement): |
| |
| Traverse only the part of the tree needed by the given MatchElement. |
| |
| * style/StyleInvalidator.h: |
| * style/StyleSharingResolver.cpp: |
| (WebCore::Style::SharingResolver::classNamesAffectedByRules const): |
| |
| 2018-01-30 Javier Fernandez <jfernandez@igalia.com> |
| |
| [css-align] The 'baseline' value must be invalid for the 'justify-content' property |
| https://bugs.webkit.org/show_bug.cgi?id=181794 |
| |
| Reviewed by Antti Koivisto. |
| |
| The CSS WG has resolved that it doesn't make sense to define Baseline |
| Content-Alignment in the inline/main axis. |
| |
| https://github.com/w3c/csswg-drafts/issues/1184 |
| |
| The spec has been updated so that <baseline-postion> is not valid for |
| the 'justify-content' property's syntax. This CL updates our parsing |
| logic to match the new spec, including the parsing logic of the |
| place-content shorthand. |
| |
| Additionally, this CL updates the computed value of the |
| <baseline-position> values to match other browsers. |
| |
| We don't implement support for <baseline-position> values in the |
| Content Distribution properties (align-content and justify-content), |
| so I don't expect this change to break content of sites using the CSS |
| Box Alignment feature. |
| |
| No new tests, just adapt the Web Platform Tests we already have to the new CSS syntax. |
| |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::getBaselineKeyword): |
| (WebCore::consumeBaselineKeyword): |
| (WebCore::consumeContentDistributionOverflowPosition): |
| (WebCore::consumeSelfPositionOverflowPosition): |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| (WebCore::consumeSimplifiedContentPosition): |
| (WebCore::CSSPropertyParser::consumePlaceContentShorthand): |
| (WebCore::consumeSimplifiedItemPosition): |
| |
| 2018-01-30 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [WinCairo] Fix forwarding header conflict of WebKit on WinCairo |
| https://bugs.webkit.org/show_bug.cgi?id=177202 |
| |
| Reviewed by Alex Christensen. |
| |
| * PlatformWin.cmake: |
| |
| 2018-01-30 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| A disallowed user-installed font may be used if its PostScript name is specified |
| https://bugs.webkit.org/show_bug.cgi?id=180951 |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch adds a new CoreText font attribute, kCTFontFallbackOptionAttribute, to the |
| fonts which WebKit creates. It also adds this attribute to web fonts, so that font |
| fallback will happen according to our rules about user-installed fonts. It also marks |
| these font attributes as "mandatory" so CoreText will be guaranteed to follow the |
| policy. |
| |
| Test: fast/text/user-installed-fonts/disable.html |
| |
| * platform/graphics/FontCache.h: |
| (WebCore::FontDescriptionKey::makeFlagsKey): |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontDatabase::collectionForFamily): |
| (WebCore::FontDatabase::fontForPostScriptName): |
| (WebCore::addAttributesForUserInstalledFonts): |
| (WebCore::mandatoryAttributesForUserInstalledFonts): |
| * platform/graphics/mac/FontCustomPlatformData.cpp: |
| (WebCore::FontCustomPlatformData::fontPlatformData): |
| |
| 2018-01-29 Youenn Fablet <youenn@apple.com> |
| |
| Cache API should make sure to resolve caches.open promises in the same order as called |
| https://bugs.webkit.org/show_bug.cgi?id=182193 |
| <rdar://problem/36930363> |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by LayoutTests/http/wpt/cache-storage/cache-open-delete-in-parallel.https.html. |
| |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::doRemove): Removed optimization consisting in removing the cache from DOMCacheStorage object synchronously. |
| This optimization prevents going to the network process to try deleting the cache. |
| |
| 2018-01-29 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Add a compile-time feature flag |
| https://bugs.webkit.org/show_bug.cgi?id=182211 |
| <rdar://problem/36936365> |
| |
| Reviewed by Brent Fulgham. |
| |
| Add a compile-time feature flag for WebAuthN as most of the functionality is platform |
| dependent. |
| |
| No tests. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * Modules/credentialmanagement/BasicCredential.cpp: |
| * Modules/credentialmanagement/BasicCredential.h: |
| * Modules/credentialmanagement/BasicCredential.idl: |
| * Modules/credentialmanagement/CredentialCreationOptions.h: |
| * Modules/credentialmanagement/CredentialCreationOptions.idl: |
| * Modules/credentialmanagement/CredentialRequestOptions.h: |
| * Modules/credentialmanagement/CredentialRequestOptions.idl: |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| * Modules/credentialmanagement/CredentialsContainer.idl: |
| * Modules/credentialmanagement/NavigatorCredentials.cpp: |
| * Modules/credentialmanagement/NavigatorCredentials.h: |
| * Modules/credentialmanagement/NavigatorCredentials.idl: |
| * Modules/webauthn/Authenticator.cpp: |
| * Modules/webauthn/Authenticator.h: |
| * Modules/webauthn/AuthenticatorAssertionResponse.cpp: |
| * Modules/webauthn/AuthenticatorAssertionResponse.h: |
| * Modules/webauthn/AuthenticatorAssertionResponse.idl: |
| * Modules/webauthn/AuthenticatorAttestationResponse.cpp: |
| * Modules/webauthn/AuthenticatorAttestationResponse.h: |
| * Modules/webauthn/AuthenticatorAttestationResponse.idl: |
| * Modules/webauthn/AuthenticatorResponse.cpp: |
| * Modules/webauthn/AuthenticatorResponse.h: |
| * Modules/webauthn/AuthenticatorResponse.idl: |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Modules/webauthn/PublicKeyCredential.idl: |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.idl: |
| * Modules/webauthn/PublicKeyCredentialDescriptor.h: |
| * Modules/webauthn/PublicKeyCredentialDescriptor.idl: |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.h: |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.idl: |
| * Modules/webauthn/PublicKeyCredentialType.h: |
| * Modules/webauthn/PublicKeyCredentialType.idl: |
| * bindings/js/JSAuthenticatorResponseCustom.cpp: |
| * bindings/js/JSBasicCredentialCustom.cpp: |
| |
| 2018-01-29 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Introduce debug mode as experimental feature |
| https://bugs.webkit.org/show_bug.cgi?id=182199 |
| <rdar://problem/36930364> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. This adds an experimental feature. |
| |
| The only changes to default behavior are: |
| - Increased resolution on timestamps which is needed to be able to set shorter |
| timeouts in debug mode. |
| - Only update partitioning and blocking table when needed. This is an optimization |
| which pays off in less XPC with shorter timeouts. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::reduceTimeResolution): |
| (WebCore::ResourceLoadObserver::logFrameNavigation): |
| (WebCore::ResourceLoadObserver::logSubresourceLoading): |
| (WebCore::ResourceLoadObserver::logWebSocketLoading): |
| (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| (WebCore::reduceToHourlyTimeResolution): Deleted. |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setResourceLoadStatisticsDebugMode): |
| (WebCore::RuntimeEnabledFeatures::resourceLoadStatisticsDebugMode const): |
| * page/Settings.yaml: |
| |
| 2018-01-29 Oleksandr Skachkov <gskachkov@gmail.com> |
| |
| FetchResponse should support ConsumeData callback on chunk data is received: handling ReadableStream bodies |
| https://bugs.webkit.org/show_bug.cgi?id=182008 |
| |
| Reviewed by Youenn Fablet. |
| |
| Modify FetchResponse to support ConsumeData callback with |
| handling of ReadableStream by chunks |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::put): |
| * Modules/fetch/FetchBodyConsumer.cpp: |
| (WebCore::FetchBodyConsumer::resolve): |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::consumeBodyFromReadableStream): |
| * Modules/fetch/FetchResponse.h: |
| * Modules/streams/ReadableStreamChunk.h: Added. |
| * Modules/streams/ReadableStreamSink.cpp: |
| (WebCore::ReadableStreamToSharedBufferSink::enqueue): |
| (WebCore::ReadableStreamToSharedBufferSink::close): |
| * Modules/streams/ReadableStreamSink.h: |
| * WebCore.xcodeproj/project.pbxproj: |
| * workers/service/context/ServiceWorkerFetch.cpp: |
| (WebCore::ServiceWorkerFetch::processResponse): |
| |
| 2018-01-29 Andy Estes <aestes@apple.com> |
| |
| [iOS] Restrict synthetic clicks to the origin that handled the underlying touch event |
| https://bugs.webkit.org/show_bug.cgi?id=182252 |
| <rdar://problem/21555881> |
| |
| Reviewed by Tim Horton. |
| |
| Test: http/tests/events/touch/ios/cross-frame-single-tap-same-origin.https.html |
| |
| * dom/Document.h: |
| (WebCore::Document::handlingTouchEvent const): |
| * page/EventHandler.h: |
| (WebCore::EventHandler::touchEventTargetSubframe const): |
| (WebCore::EventHandler::touches const): |
| |
| Exposed some information needed by WebPage::updatePotentialTapSecurityOrigin(). |
| |
| * page/Frame.h: |
| * page/ios/FrameIOS.mm: |
| (WebCore::Frame::betterApproximateNode): |
| (WebCore::Frame::qualifyingNodeAtViewportLocation): |
| |
| Changed NodeQualifier from a function pointer to a WTF::Function. |
| |
| (WebCore::Frame::nodeRespondingToClickEvents): |
| |
| Turned ancestorRespondingToClickEvents() into a lambda that captures originRestriction. In |
| the lambda, if there is an origin restriction, return nullptr if the hit test result's inner |
| Node is not in the restricted origin. |
| |
| (WebCore::Frame::nodeRespondingToScrollWheelEvents): |
| |
| Turned ancestorRespondingToScrollWheelEvents() into a lambda. |
| |
| (WebCore::ancestorRespondingToScrollWheelEvents): |
| |
| Moved to lambda in nodeRespondingToScrollWheelEvents(). |
| |
| (WebCore::ancestorRespondingToClickEvents): |
| |
| Moved to lambda in nodeRespondingToClickEvents(). |
| |
| 2018-01-29 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Trivially cleanup std::optional usage in RenderBlockFlow. |
| https://bugs.webkit.org/show_bug.cgi?id=182142 |
| |
| Reviewed by Antti Koivisto. |
| |
| No new tests, no behavior change. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::firstLineBaseline const): |
| (WebCore::RenderBlockFlow::inlineBlockBaseline const): |
| |
| 2018-01-29 Brent Fulgham <bfulgham@apple.com> |
| |
| Add telemetry to track storage access API adoption |
| https://bugs.webkit.org/show_bug.cgi?id=182197 |
| <rdar://problem/35803309> |
| |
| Reviewed by Chris Dumez. |
| |
| Part 1: Add telemetry for the user interaction case |
| |
| This patch adds telemetry to track how frequently third-party cookies are |
| used in a first party context due to user interaction. This will help |
| understand cases where the new Storage Access API can help, and to help |
| us understand if we have considered relevant use cases in its design. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::setTimeToLivePartitionFree): Let the observer |
| know the first party interaction duration. |
| (WebCore::ResourceLoadObserver::wasAccessedWithinInteractionWindow const): Added. |
| (WebCore::ResourceLoadObserver::logFrameNavigation): Note when a third party |
| resource is accessed as a first party due to user interaction. |
| (WebCore::ResourceLoadObserver::logSubresourceLoading): Ditto. |
| * loader/ResourceLoadObserver.h: |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::ResourceLoadStatistics::encode const): Handle new fields. |
| (WebCore::ResourceLoadStatistics::decode): Ditto. |
| * loader/ResourceLoadStatistics.h: |
| |
| 2018-01-29 Antti Koivisto <antti@apple.com> |
| |
| CalcExpressionBlendLength::evaluate hits stack limit |
| https://bugs.webkit.org/show_bug.cgi?id=182243 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Speculative fix to prevent nesting of CalcExpressionBlendLength. |
| |
| No test, don't know how to make one. |
| |
| * platform/CalculationValue.cpp: |
| (WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength): |
| |
| CalcExpressionBlendLength is only used in Length values of animated style. Normally such styles are not used |
| as input for further blending but there are some paths where this could in principle happen. Repeated |
| application (for each animation frame) could construct CalcExpressionBlendLength expression that blows |
| the stack when evaluated. |
| |
| Speculatively fix by flattening any nesting. |
| |
| * platform/CalculationValue.h: |
| (WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength): Deleted. |
| |
| 2018-01-29 Chris Dumez <cdumez@apple.com> |
| |
| Drop unnecessary "ServiceWorker Task Thread" in SWServer |
| https://bugs.webkit.org/show_bug.cgi?id=182253 |
| |
| Reviewed by Youenn Fablet. |
| |
| Drop unnecessary "ServiceWorker Task Thread" in SWServer. We're spinning a thread for |
| each SWServer that is never used. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::~SWServer): |
| (WebCore::SWServer::SWServer): |
| (WebCore::SWServer::taskThreadEntryPoint): Deleted. |
| (WebCore::SWServer::postTask): Deleted. |
| (WebCore::SWServer::postTaskReply): Deleted. |
| (WebCore::SWServer::handleTaskRepliesOnMainThread): Deleted. |
| * workers/service/server/SWServer.h: |
| |
| 2018-01-29 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r227731. |
| |
| This caused and assertion failure in API tests. |
| |
| Reverted changeset: |
| |
| "Layout Test fast/events/beforeunload-dom-manipulation- |
| crash.html is crashing" |
| https://bugs.webkit.org/show_bug.cgi?id=181204 |
| https://trac.webkit.org/changeset/227731 |
| |
| 2018-01-29 Brady Eidson <beidson@apple.com> |
| |
| Make it possible for apps that use both WK1 and WK2 to use MessagePorts. |
| https://bugs.webkit.org/show_bug.cgi?id=182229 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by existing LayoutTests and a new API test. |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::checkRemotePortForActivity): Don't use the global singleton |
| provider. Instead use the provider that belongs to the owning registry. |
| |
| * dom/messageports/MessagePortChannelProviderImpl.cpp: |
| (WebCore::MessagePortChannelProviderImpl::MessagePortChannelProviderImpl): Pass a reference |
| to *this to the Registry. |
| * dom/messageports/MessagePortChannelProviderImpl.h: |
| |
| * dom/messageports/MessagePortChannelRegistry.cpp: |
| (WebCore::MessagePortChannelRegistry::MessagePortChannelRegistry): Keep a Provider member so |
| MessagePortChannels can get to it instead of relying on the global singleton provider. |
| * dom/messageports/MessagePortChannelRegistry.h: |
| (WebCore::MessagePortChannelRegistry::provider): |
| |
| 2018-01-29 Per Arne Vollan <pvollan@apple.com> |
| |
| Layout Test fast/events/beforeunload-dom-manipulation-crash.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=181204 |
| <rdar://problem/36256274> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| When a frame element is moved in the DOM tree during the execution of a beforeunload handler, |
| the frame will be detached when removed from its previous position in the DOM tree. When being |
| detached, an attempt will also be made to stop the load by calling FrameLoader::stopAllLoaders(). |
| However, this method will return early when executed in a beforeunload handler, since navigation |
| is not allowed then. The end result is a detached frame which will continue to load, and hitting |
| asserts in DocumentLoader::dataReceived(), and DocumentLoader::notifyFinished(). It should be |
| possible to stop a frame load, even when executing a beforeunload handler. |
| |
| No new tests. Covered by the existing test fast/events/beforeunload-dom-manipulation-crash.html. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::isStopLoadingAllowed const): |
| (WebCore::FrameLoader::stopAllLoaders): |
| * loader/FrameLoader.h: |
| |
| 2018-01-29 Miguel Gomez <magomez@igalia.com> |
| |
| [CoordnatedGraphics] A child layer of a semitransparent layer isn't clipped properly |
| https://bugs.webkit.org/show_bug.cgi?id=181080 |
| |
| Reviewed by Žan Doberšek. |
| |
| Check whether the applied clipping area is empty before drawing the children of a TextureMapperLayer. If |
| the area is empty no children will be drawn, so we can avoid drawing them. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintSelfAndChildren): |
| |
| 2018-01-29 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Add GraphicsContextImplCairo::createFactory() helpers |
| https://bugs.webkit.org/show_bug.cgi?id=182238 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Instead of duplicating lambdas that return a newly-created |
| GraphicsContextImplCairo object, provide static createFactory() helpers |
| on that class that produce GraphicsContextImplFactory wrappers which are |
| then invoked in the GraphicsContext constructor. The static functions |
| accept either the PlatformContextCairo reference or the cairo_t pointer, |
| invoking the proper GraphicsContextImplCairo constructor in the returned |
| lambda wrapper. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/cairo/GraphicsContextImplCairo.cpp: |
| (WebCore::GraphicsContextImplCairo::createFactory): |
| * platform/graphics/cairo/GraphicsContextImplCairo.h: |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| (WebCore::ImageBuffer::ImageBuffer): |
| * platform/graphics/cairo/PathCairo.cpp: |
| (WebCore::Path::strokeBoundingRect const): |
| (WebCore::Path::strokeContains const): |
| * platform/graphics/nicosia/NicosiaPaintingContextCairo.cpp: |
| (Nicosia::PaintingContextCairo::PaintingContextCairo): |
| * platform/graphics/win/ImageCairoWin.cpp: |
| (WebCore::BitmapImage::getHBITMAPOfSize): |
| |
| 2018-01-29 Zan Dobersek <zdobersek@igalia.com> |
| |
| Construct GraphicsContext with NonPaintingReasons::NoReason in FrameView::adjustPageHeightDeprecated() |
| https://bugs.webkit.org/show_bug.cgi?id=182235 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Pass the NonPaintingReasons::NoReason value to the GraphicsContext |
| constructor in FrameView::adjustPageHeightDeprecated(). This has the |
| same effect as when passing a null PlatformGraphicsContext to the |
| constructor, which effectively disables any painting through that |
| GraphicsContext, but doesn't have a platform-specific connotation. |
| |
| No new tests -- no change in functionality. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::adjustPageHeightDeprecated): |
| |
| 2018-01-29 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Remove the GraphicsContext(cairo_t*) constructor |
| https://bugs.webkit.org/show_bug.cgi?id=182234 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Instead of using the GraphicsContext(cairo_t*) constructor, leverage the |
| GraphicsContextImplCairo class and work with an existing Cairo context |
| through that GraphicsContextImpl implementation. |
| |
| A new GraphicsContextImplCairo constructor is added, expecting pointer |
| to the cairo_t object. With that, a PlatformContextCairo object is |
| created, with ownership of that object now being handled by the |
| GraphicsContextImplCairo class. |
| |
| Call sites of the GraphicsContext(cairo_t*) constructor are adjusted to |
| instead provide a factory function that returns a fresh |
| GraphicsContextImplCairo object, passing that cairo_t object to its |
| constructor. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/GraphicsContext.h: |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::GraphicsContext): Deleted. |
| * platform/graphics/cairo/GraphicsContextImplCairo.cpp: |
| (WebCore::GraphicsContextImplCairo::GraphicsContextImplCairo): |
| (WebCore::m_private): |
| * platform/graphics/cairo/GraphicsContextImplCairo.h: |
| * platform/graphics/cairo/PathCairo.cpp: |
| (WebCore::Path::strokeBoundingRect const): |
| (WebCore::Path::strokeContains const): |
| * platform/graphics/win/ImageCairoWin.cpp: |
| (WebCore::BitmapImage::getHBITMAPOfSize): |
| |
| 2018-01-28 Minsheng Liu <lambda@liu.ms> |
| |
| Overflow of formulas is hidden for display mathematics |
| https://bugs.webkit.org/show_bug.cgi?id=160547 |
| |
| Reviewed by Frédéric Wang. |
| |
| Previously, <math> with display="block" uses its container's logical width as logical width. |
| However, that behavior will truncate overflowed contents. The patch fixes it by setting |
| the logical width as its content width rather than its container's logical width |
| if the former is wider than the latter. |
| |
| Test: mathml/presentation/display-math-horizontal-overflow.html |
| |
| * rendering/mathml/RenderMathMLRow.cpp: |
| (WebCore::RenderMathMLRow::layoutBlock): |
| |
| 2018-01-26 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Distinguish between an omitted and a null timeline argument to the Animation constructor |
| https://bugs.webkit.org/show_bug.cgi?id=179065 |
| <rdar://problem/36869046> |
| |
| Reviewed by Dean Jackson. |
| |
| The Web Animations specification requires that a missing or undefined "timeline" parameter means that the |
| document's timeline should be used, but a null value should be supported. To support this, we need to provide |
| a custom Animation constructor where we can check on the ExecState whether the second argument passed is |
| undefined, which is true if an explicit "undefined" value is passed or if the argument does not exist. |
| |
| * Sources.txt: Add the new JSWebAnimationCustom.cpp file. |
| * WebCore.xcodeproj/project.pbxproj: Add the new JSWebAnimationCustom.cpp file. |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::create): Add a create() variant that doesn't provide an AnimationTimeline parameter |
| to clearly indicate that the provided Document's timeline should be used. |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| * bindings/js/JSWebAnimationCustom.cpp: Added. |
| (WebCore::constructJSWebAnimation): Provide a custom Animation constructor where we check whether the second |
| argument, the timeline, is undefined. |
| * dom/Element.cpp: |
| (WebCore::Element::animate): Use the new create() variant since passing "nullptr" now means a null timeline. |
| |
| 2018-01-26 Ricky Mondello <rmondello@apple.com> |
| |
| Use the standard -webkit-autofill color on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=182182 |
| |
| Reviewed by Tim Horton. |
| |
| * css/html.css: |
| (input:-webkit-autofill, input:-webkit-autofill-strong-password): |
| |
| 2018-01-26 Dean Jackson <dino@apple.com> |
| |
| REGRESSION (r222961): Clear function not clearing whole screen when antialias is set to false |
| https://bugs.webkit.org/show_bug.cgi?id=179368 |
| <rdar://problem/36111549> |
| |
| Reviewed by Sam Weinig. |
| |
| When we changed from using a CAOpenGLLayer to a regular CALayer, we should |
| have also swapped the "opaque" property to "contentsOpaque". |
| |
| Covered by the existing test: fast/canvas/webgl/context-attributes-alpha.html |
| (when run on some hardware!) |
| |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer initWithGraphicsContext3D:]): |
| |
| 2018-01-26 Mark Lam <mark.lam@apple.com> |
| |
| Add infrastructure for pointer preparation. |
| https://bugs.webkit.org/show_bug.cgi?id=182191 |
| <rdar://problem/36889194> |
| |
| Reviewed by JF Bastien. |
| |
| No new tests because this patch does not introduce any behavior change. |
| |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| * bindings/scripts/test/JS/JSInterfaceName.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactions.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCallTracer.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestDOMJIT.cpp: |
| * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestEventTarget.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestInterface.cpp: |
| * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: |
| * bindings/scripts/test/JS/JSTestIterable.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: |
| * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestNode.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerialization.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: |
| * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: |
| * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifier.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/scripts/test/JS/JSTestTypedefs.cpp: |
| (WebCore::toJSNewlyCreated): |
| |
| 2018-01-26 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSiON (r226492): Crash under Element::absoluteEventBounds() on a SVGPathElement which has not been laid out yet |
| https://bugs.webkit.org/show_bug.cgi?id=182185 |
| rdar://problem/36836262 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Document::absoluteRegionForEventTargets() can fire when layout is dirty, and SVGPathElement's path() can be null if it |
| hasn't been laid out yet. So protect against a null path in getBBox(). |
| |
| Not easily testable because internals.nonFastScrollableRects() forces layout, and the crash depends on the timing of |
| absoluteRegionForEventTargets(). |
| |
| * svg/SVGPathElement.cpp: |
| (WebCore::SVGPathElement::getBBox): |
| |
| 2018-01-26 Chris Dumez <cdumez@apple.com> |
| |
| Offlined content does not work for apps on home screen |
| https://bugs.webkit.org/show_bug.cgi?id=182070 |
| <rdar://problem/36843906> |
| |
| Reviewed by Youenn Fablet. |
| |
| Already registered service workers were unable to intercept the very first |
| load because registration matching was happening after the registration |
| was loaded from disk, but *before* its active worker was populated. |
| |
| We now initialize the registrations' active worker as soon as we load |
| them from disk. We do not necessarily have a SW Context process connection |
| identifier yet at this point so I made it optional on the SWServerWorker. |
| This identifier gets set on the SWServerWorker when the worker is actually |
| launched and gets cleared when the SWServerWorker gets terminated. |
| |
| Covered by new API test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistrationFromStore): |
| (WebCore::SWServer::installContextData): |
| (WebCore::SWServer::terminateWorkerInternal): |
| (WebCore::SWServer::workerContextTerminated): |
| (WebCore::SWServer::fireInstallEvent): |
| (WebCore::SWServer::fireActivateEvent): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::SWServerWorker): |
| * workers/service/server/SWServerWorker.h: |
| (WebCore::SWServerWorker::contextConnectionIdentifier const): |
| (WebCore::SWServerWorker::setContextConnectionIdentifier): |
| |
| 2018-01-26 Chris Nardi <cnardi@chromium.org> |
| |
| Addressing post-review comments after r226614 |
| https://bugs.webkit.org/show_bug.cgi?id=182151 |
| |
| Reviewed by Myles C. Maxfield. |
| |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::sanitizeUserInputValue): |
| * html/TextFieldInputType.cpp: |
| (WebCore::limitLength): |
| * platform/LocalizedStrings.cpp: |
| (WebCore::truncatedStringForLookupMenuItem): |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| |
| 2018-01-26 Antoine Quint <graouts@apple.com> |
| |
| [iOS] prefers-reduced-motion media query is not working |
| https://bugs.webkit.org/show_bug.cgi?id=182169 |
| <rdar://problem/36801631> |
| |
| Reviewed by Dean Jackson. |
| |
| The code that would eventually query UIKit for the system setting was not run since USE(NEW_THEME) is off on iOS. |
| Adding a PLATFORM(IOS) flag here allows the code to run. |
| |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::prefersReducedMotionEvaluate): |
| |
| 2018-01-26 Youenn Fablet <youenn@apple.com> |
| |
| CSP post checks should be done for service worker responses |
| https://bugs.webkit.org/show_bug.cgi?id=182160 |
| |
| Reviewed by Daniel Bates. |
| |
| Covered by updated test. |
| |
| Add security checks when receiving a service worker response. |
| |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didReceiveResponse): |
| * loader/cache/CachedResourceLoader.h: |
| |
| 2018-01-26 Manuel Rego Casasnovas <rego@igalia.com> |
| |
| [css-multicol] Support percentages in column-gap |
| https://bugs.webkit.org/show_bug.cgi?id=182004 |
| |
| Reviewed by Javier Fernandez. |
| |
| This patch adds percentage support to column-gap property. |
| |
| Most of the changes are related to the parsing logic, |
| the column-gap property now accepts both length and percentages, |
| on top of the "normal" initial value. |
| A new utility class GapLength has been added, as it'll be useful |
| to implement row-gap in the future. |
| |
| Apart from that the muticolumn layout code has been modified |
| to resolve the percentage gaps (treating them as zero while computing |
| preferred widths) and resolving them during layout. |
| This doesn't follow the current text on the spec, but there is an |
| ongoing discussion that might cause the text is changed: |
| https://github.com/w3c/csswg-drafts/issues/509#issuecomment-355242101 |
| We could update the implementation once we have a definitive answer |
| from the CSS WG. |
| |
| Test: web-platform-tests/css/css-multicol/multicol-gap-percentage-001.html |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSProperties.json: |
| * css/StyleBuilderConverter.h: |
| (WebCore::StyleBuilderConverter::convertGapLength): |
| * css/StyleBuilderCustom.h: |
| (WebCore::forwardInheritedValue): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeGapLength): |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::applyPaginationToViewport): |
| * page/animation/CSSPropertyAnimation.cpp: |
| (WebCore::blendFunc): |
| (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::columnGap const): |
| * rendering/RenderMultiColumnSet.cpp: |
| (WebCore::RenderMultiColumnSet::columnGap const): |
| * rendering/style/GapLength.cpp: Added. |
| (WebCore::operator<<): |
| * rendering/style/GapLength.h: Added. |
| (WebCore::GapLength::GapLength): |
| (WebCore::GapLength::isNormal const): |
| (WebCore::GapLength::length const): |
| (WebCore::GapLength::operator== const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::columnGap const): |
| (WebCore::RenderStyle::setColumnGap): |
| (WebCore::RenderStyle::initialColumnGap): |
| * rendering/style/StyleMultiColData.cpp: |
| (WebCore::StyleMultiColData::StyleMultiColData): |
| (WebCore::StyleMultiColData::operator== const): |
| * rendering/style/StyleMultiColData.h: |
| * style/StyleResolveForDocument.cpp: |
| (WebCore::Style::resolveForDocument): |
| |
| 2018-01-26 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Remove unused RenderFragmentedFlow::createFragmentedFlowStyle. |
| https://bugs.webkit.org/show_bug.cgi?id=182138 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Has no callers. |
| |
| No new tests, just removes unused code so no behavior change. |
| |
| * rendering/RenderFragmentedFlow.cpp: |
| * rendering/RenderFragmentedFlow.h: |
| |
| 2018-01-26 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Remove useless RenderBlockFlow overrides. |
| https://bugs.webkit.org/show_bug.cgi?id=182139 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| I think these are leftovers from the CSS regions removal, looking at |
| blame. |
| |
| No new tests, no behavior change. |
| |
| * rendering/RenderBlockFlow.cpp: |
| * rendering/RenderBlockFlow.h: |
| |
| 2018-01-25 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Add InspectorShaderProgram to Unified Sources build |
| https://bugs.webkit.org/show_bug.cgi?id=182084 |
| |
| Reviewed by Dan Bernstein. |
| |
| * CMakeLists.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * Sources.txt: |
| Move to Sources.txt always. |
| |
| * inspector/InspectorShaderProgram.cpp: |
| Add ENABLE(WEBGL) guard to contents. |
| |
| 2018-01-25 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Make scrolling to the focused element async |
| https://bugs.webkit.org/show_bug.cgi?id=181575 |
| <rdar://problem/36459767> |
| |
| Reviewed by Simon Fraser. |
| |
| Made the revealing of the focused element asynchronous in Element::focus. Like selection, schedule a timer when |
| a new element is focused, and only scroll to the focused element when the timer fires. If any other scrolling |
| happens meanwhile, we cancel this timer. |
| |
| There are two Web exposed behavioral changes: |
| 1. The scrolling position doesn't change immediately when calling Element::focus. |
| 2. Only the last focused element will be revealed. |
| |
| Both behavioral changes pose its own compatibility risks but we're making a conscious decision here since |
| the scrolling asynchronous has a clear performance benefit. |
| |
| There is one edge case to cosnider: when the history controller restores the scrolling position, canceling the |
| timer results in a focused element in an overflow: hidden element to be never revealed. Expediate revealing of |
| the focused element in this one case instead of canceling. |
| |
| Tests: fast/scrolling/scroll-to-focused-element-asynchronously.html |
| fast/scrolling/scroll-to-focused-element-canceled-by-fragment-navigation.html |
| |
| * dom/Element.cpp: |
| (WebCore::Element::focus): Call updateFocusAppearance on focusAppearanceUpdateTarget to handle HTMLAreaElement |
| which delegates the focus appearance update to its image element. |
| (WebCore::Element::focusAppearanceUpdateTarget): Extracted. Returns "this" element for all but HTMLAreaElement. |
| (WebCore::Element::updateFocusAppearance): Schedule the revealing of the focused element in FrameView instead of |
| synchronously scrolling to the focused element. |
| * dom/Element.h: |
| (WebCore::Element::defaultFocusTextStateChangeIntent): |
| * html/HTMLAreaElement.cpp: |
| (WebCore::HTMLAreaElement::focusAppearanceUpdateTarget): Extracted from updateFocusAppearance. |
| (WebCore::HTMLAreaElement::updateFocusAppearance): Deleted. |
| * html/HTMLAreaElement.h: |
| * loader/HistoryController.cpp: |
| (WebCore::HistoryController::restoreScrollPositionAndViewState): Reveal the focused element |
| prior to restoring the scrolling location of the fragment navigation. This is needed to reveal a focused element |
| inside overflow: hidden element which got focused. |
| * page/FrameView.cpp: |
| (WebCore::FrameView::FrameView): Added a boolean flag and a timer for scrolling to the focused element. |
| (WebCore::FrameView::reset): Stop the timer and clear the flag. |
| (WebCore::FrameView::maintainScrollPositionAtAnchor): Ditto when scrolling to an anchor. |
| (WebCore::FrameView::setScrollPosition): Ditto when some other programatic scroll or the user scrolls the view. |
| (WebCore::FrameView::scheduleScrollToFocusedElement): Added. |
| (WebCore::FrameView::scrollToFocusedElementImmediatelyIfNeeded): Added. |
| (WebCore::FrameView::scrollToFocusedElementTimerFired): Added. |
| (WebCore::FrameView::scrollToAnchor): Stop the timer and clear the flag when scrolling to an achor. |
| (WebCore::FrameView::setWasScrolledByUser): Ditto when the user scrolls. |
| * page/FrameView.h: |
| |
| 2018-01-25 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| REGRESSION(r217236): [iOS] PDFDocumentImage does not update its cached ImageBuffer if it has a sub-rectangle of the image |
| https://bugs.webkit.org/show_bug.cgi?id=182083 |
| |
| Reviewed by Simon Fraser. |
| |
| Test: fast/images/pdf-as-image-dest-rect-change.html |
| |
| Revert the change r217236 back. Fix the issue of throwing out the cached |
| ImageBuffer of the PDF document image when moving its rectangle. |
| |
| * platform/graphics/cg/PDFDocumentImage.cpp: |
| (WebCore::PDFDocumentImage::cacheParametersMatch): Return the if-statement |
| which was deleted in r217236 back but intersect it with dstRect. The context |
| clipping rectangle can be more than the dstRect. |
| (WebCore::PDFDocumentImage::updateCachedImageIfNeeded): |
| -- Remove a wrong optimization which used to work for Mac only if the context |
| interpolation quality is not set to low or none quality. This optimization |
| does not consider the case when srcRect or destRect change after caching |
| the ImageBuffer. Or even if m_cachedImageRect does not include the |
| whole clipping rectangle. |
| -- Move back the call to cacheParametersMatch() before changing the |
| m_cachedImageRect. |
| -- Always intersect the clipping rectangle with the dstRect to ensure we |
| only look at the dirty rectangle inside the image boundary. |
| -- If cacheParametersMatch() returns true, set m_cachedDestinationRect to |
| dstRect and move m_cachedImageRect by the difference between the new |
| and the old dstRects since no re-caching will happen. |
| * platform/graphics/cg/PDFDocumentImage.h: |
| * testing/Internals.cpp: |
| (WebCore::pdfDocumentImageFromImageElement): |
| (WebCore::Internals::pdfDocumentCachingCount): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| Add an internal API which returns the number of drawing the PDF into an |
| ImageBuffer. |
| |
| 2018-01-25 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Remove unnecessary developerExtrasEnabled checks |
| https://bugs.webkit.org/show_bug.cgi?id=182156 |
| |
| Reviewed by Matt Baker. |
| |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl): |
| (WebCore::InspectorInstrumentation::frameDocumentUpdatedImpl): |
| (WebCore::InspectorInstrumentation::didCreateWebSocketImpl): |
| These checks should not be needed. The step above bails if there is |
| no inspector frontend, and there can be no inspector frontend unless |
| developer extras enabled are enabled. |
| |
| 2018-01-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add localizable strings for extra-zoomed form controls |
| https://bugs.webkit.org/show_bug.cgi?id=182080 |
| |
| Reviewed by Tim Horton. |
| |
| Add new localizable strings. Additionally, run `update-webkit-localizable-strings` to re-sort |
| Localizable.strings. |
| |
| * English.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::formControlCancelButtonTitle): |
| (WebCore::formControlHideButtonTitle): |
| (WebCore::formControlGoButtonTitle): |
| (WebCore::formControlSearchButtonTitle): |
| (WebCore::textInputModeWriteButton): |
| (WebCore::textInputModeSpeechButton): |
| * platform/LocalizedStrings.h: |
| |
| 2018-01-25 Chris Dumez <cdumez@apple.com> |
| |
| Access to service workers / Cache API should be disabled in sandboxed frames without allow-same-origin flag |
| https://bugs.webkit.org/show_bug.cgi?id=182140 |
| <rdar://problem/36879952> |
| |
| Reviewed by Youenn Fablet. |
| |
| Throw a SecurityError when accessing navigator.serviceWorker or window.caches inside a sandboxed iframe |
| without the allow-same-origin flag. This behavior is consistent with Chrome. Firefox, however, seems |
| to return these objects but have their API reject promises with a SecurityError instead. |
| |
| No new tests, rebaselined existing tests. |
| |
| * Modules/cache/DOMWindowCaches.cpp: |
| (WebCore::DOMWindowCaches::caches): Deleted. |
| * Modules/cache/DOMWindowCaches.h: |
| * Modules/cache/DOMWindowCaches.idl: |
| * page/NavigatorBase.cpp: |
| * page/NavigatorBase.h: |
| * page/NavigatorServiceWorker.idl: |
| |
| 2018-01-25 Chris Dumez <cdumez@apple.com> |
| |
| Clients.get(id) should only returns clients in the service worker's origin |
| https://bugs.webkit.org/show_bug.cgi?id=182149 |
| <rdar://problem/36882310> |
| |
| Reviewed by Youenn Fablet. |
| |
| When looking for SW clients with a given identifier, only look in the list of |
| clients that have the same origin as the service worker. |
| |
| No new tests, rebaselined existing test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::serviceWorkerClientWithOriginByID const): |
| (WebCore::SWServer::serviceWorkerClientByID const): Deleted. |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::findClientByIdentifier const): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-01-25 Youenn Fablet <youenn@apple.com> |
| |
| WebPluginInfoProvider should handle null host queries |
| https://bugs.webkit.org/show_bug.cgi?id=182112 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| |
| Removed assertion that is not always true, as shown by API tests. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::responseReceived): |
| |
| 2018-01-25 Youenn Fablet <youenn@apple.com> |
| |
| ShapeOutside should use same origin credentials mode |
| https://bugs.webkit.org/show_bug.cgi?id=182141 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| As per https://drafts.csswg.org/css-shapes/#shape-outside-property, ShapeOutside images |
| should be fetched with anonymous cors mode, meaning credentials should be set to same-origin. |
| |
| * style/StylePendingResources.cpp: |
| (WebCore::Style::loadPendingImage): |
| |
| 2018-01-25 John Wilander <wilander@apple.com> |
| |
| Make sure we have a frame as we iterate in ResourceLoadObserver::nonNullOwnerURL() |
| https://bugs.webkit.org/show_bug.cgi?id=182116 |
| <rdar://problem/36210134> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No known repro case, just crash logs. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::nonNullOwnerURL const): |
| |
| 2018-01-25 Jer Noble <jer.noble@apple.com> |
| |
| Move ImageDecoderAVFObjC from using AVSampleBufferGenerator to AVAssetReaderOutput for parsing |
| https://bugs.webkit.org/show_bug.cgi?id=182091 |
| |
| Reviewed by Eric Carlson. |
| |
| No new tests; should be covered by existing tests. |
| |
| AVSampleBufferGenerator is not available on iOS, so in order to enable ImageDecoderAVFObjC there, |
| we must adopt a similar API which is available both on iOS and macOS: AVAssetReaderOutput. Unlike |
| the generator, AVAssetReaderOutput doesn't necessarily generate samples in decode order, so we'll |
| repurpose the SampleMap from EME to hold the decoded samples as well as their generated images. |
| |
| * Modules/mediasource/SampleMap.cpp: |
| * Modules/mediasource/SampleMap.h: |
| (WebCore::SampleMap::size const): |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::isSupportedImageVideoOrSVGMIMEType): |
| * platform/MediaSample.h: |
| (WebCore::MediaSample::hasAlpha const): |
| * platform/graphics/ImageDecoder.cpp: |
| (WebCore::ImageDecoder::create): |
| (WebCore::ImageDecoder::supportsMediaType): |
| * platform/graphics/avfoundation/MediaSampleAVFObjC.h: Make non-final. |
| (WebCore::MediaSampleAVFObjC::sampleBuffer const): |
| (WebCore::MediaSampleAVFObjC::MediaSampleAVFObjC): |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h: |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: |
| (WebCore::ImageDecoderAVFObjCSample::create): |
| (WebCore::ImageDecoderAVFObjCSample::sampleBuffer const): |
| (WebCore::ImageDecoderAVFObjCSample::image const): |
| (WebCore::ImageDecoderAVFObjCSample::setImage): |
| (WebCore::ImageDecoderAVFObjCSample::ImageDecoderAVFObjCSample): |
| (WebCore::ImageDecoderAVFObjCSample::cacheMetadata): |
| (WebCore::toSample): |
| (WebCore::ImageDecoderAVFObjC::readSamples): |
| (WebCore::ImageDecoderAVFObjC::storeSampleBuffer): |
| (WebCore::ImageDecoderAVFObjC::advanceCursor): |
| (WebCore::ImageDecoderAVFObjC::setTrack): |
| (WebCore::ImageDecoderAVFObjC::encodedDataStatus const): |
| (WebCore::ImageDecoderAVFObjC::repetitionCount const): |
| (WebCore::ImageDecoderAVFObjC::frameIsCompleteAtIndex const): |
| (WebCore::ImageDecoderAVFObjC::frameDurationAtIndex const): |
| (WebCore::ImageDecoderAVFObjC::frameHasAlphaAtIndex const): |
| (WebCore::ImageDecoderAVFObjC::createFrameImageAtIndex): |
| (WebCore::ImageDecoderAVFObjC::setData): |
| (WebCore::ImageDecoderAVFObjC::clearFrameBufferCache): |
| (WebCore::ImageDecoderAVFObjC::sampleAtIndex const): |
| (WebCore::ImageDecoderAVFObjC::readSampleMetadata): Deleted. |
| |
| 2018-01-25 Youenn Fablet <youenn@apple.com> |
| |
| DocumentThreadableLoader should ensure service worker is not reused if redirection comes from the network |
| https://bugs.webkit.org/show_bug.cgi?id=182137 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by rebased test. |
| In case redirection does not come from memory cache or service worker, disable service worker interception when following the redirection. |
| |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::redirectReceived): |
| |
| 2018-01-25 Youenn Fablet <youenn@apple.com> |
| |
| DocumentLoader should interrupt ongoing load when getting a redirection from network that matches a service worker |
| https://bugs.webkit.org/show_bug.cgi?id=182115 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased test. |
| |
| In case a navigation load is going to the network process, |
| we need to interrupt it if having a redirection that leads to a new request going to a service worker. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::redirectReceived): |
| |
| 2018-01-25 Chris Dumez <cdumez@apple.com> |
| |
| Registering same scope as the script directory without the last slash should fail |
| https://bugs.webkit.org/show_bug.cgi?id=182122 |
| <rdar://problem/36877167> |
| |
| Reviewed by Youenn Fablet. |
| |
| This aligns our behavior with Firefox and Chrome. |
| |
| No new tests, rebaselined existing test. |
| |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::didReceiveResponse): |
| |
| 2018-01-25 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Expose the reverse() method |
| https://bugs.webkit.org/show_bug.cgi?id=182100 |
| <rdar://problem/36867117> |
| |
| Reviewed by Dean Jackson. |
| |
| We expose and implement the reverse() method on Animation as specified. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setPlaybackRate): |
| (WebCore::WebAnimation::reverse): |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| |
| 2018-01-25 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Account for provided easings when computing progress and resolving keyframe effect values |
| https://bugs.webkit.org/show_bug.cgi?id=182098 |
| <rdar://problem/36866149> |
| |
| Reviewed by Dean Jackson. |
| |
| We now account for the timing functions provided through the "easing" propreties on whole animation effects |
| and individual keyframes. Exposing those exposed shortcomings of our keyframe resolution in general through |
| WPT tests so we now implement the "effect value of a keyframe effect" procedure from the spec to correctly |
| resolve keyframes in KeyframeEffect::setAnimatedPropertiesInStyle(). The tests also showed some shortcomings |
| in our TimingFunction code where our step() function resolution wasn't fully compliant and our cubic-bezier() |
| resolution not accurate enough. We now have microsecond accuracy when resolving cubic-bezier() timing functions |
| and identify cubic-bezier(0, 0, 0, 0), cubic-bezier(0, 0, 1, 1) and cubic-bezier(1, 1, 1, 1) as linear timing |
| functions, as called out by the WPT tests. |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::transformedProgress const): Account for the effect-wide timing function when computing |
| the progress. |
| (WebCore::AnimationEffect::iterationProgress const): Use the transformed progress now that we support this procedure. |
| * animation/AnimationEffect.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::apply): We now use the computed progress from AnimationEffect rather than compute based |
| on the provided time, which we've dropped as an argument. |
| (WebCore::KeyframeEffect::getAnimatedStyle): |
| (WebCore::KeyframeEffect::setAnimatedPropertiesInStyle): Implement the "effect value of a keyframe effect" procedure |
| in full as specified (save for composite operations). |
| (WebCore::KeyframeEffect::applyAtLocalTime): Deleted. |
| * animation/KeyframeEffect.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::resolve): |
| * css/CSSTimingFunctionValue.h: Fix a small error made in a previous patch where we used "int" instead of "unsigned". |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::transformTime const): |
| * platform/animation/TimingFunction.h: |
| |
| 2018-01-25 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Avoid querying the current time multiple time when resolving the play state |
| https://bugs.webkit.org/show_bug.cgi?id=182099 |
| |
| Reviewed by Dean Jackson. |
| |
| No test change since this shouldn't cause any change in behavior. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::playState const): |
| |
| 2018-01-25 Youenn Fablet <youenn@apple.com> |
| |
| Set integrity fetch options for loading scripts and CSS |
| https://bugs.webkit.org/show_bug.cgi?id=182077 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| |
| Set integrity fetch option in script and CSS loading. |
| |
| * bindings/js/CachedModuleScriptLoader.cpp: |
| (WebCore::CachedModuleScriptLoader::load): |
| * bindings/js/CachedScriptFetcher.cpp: |
| (WebCore::CachedScriptFetcher::requestModuleScript const): |
| (WebCore::CachedScriptFetcher::requestScriptWithCache const): |
| * bindings/js/CachedScriptFetcher.h: |
| * dom/LoadableClassicScript.cpp: |
| (WebCore::LoadableClassicScript::load): |
| * dom/ScriptElementCachedScriptFetcher.cpp: |
| (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): |
| * dom/ScriptElementCachedScriptFetcher.h: |
| * html/HTMLLinkElement.cpp: |
| (WebCore::HTMLLinkElement::process): |
| |
| 2018-01-25 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Use GraphicsContextImplCairo in Nicosia::PaintingContextCairo |
| https://bugs.webkit.org/show_bug.cgi?id=182094 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Have Nicosia::PaintingContextCairo create a GraphicsContext object that |
| utilizes a factory function which returns a freshly-allocated |
| GraphicsContextImplCairo through which all the painting is then done. |
| This moves GraphicsLayer painting over to using the GraphicsContextImpl |
| infrastructure. |
| |
| No new tests -- no changes in behavior. |
| |
| * platform/graphics/nicosia/NicosiaPaintingContextCairo.cpp: |
| (Nicosia::PaintingContextCairo::PaintingContextCairo): |
| |
| 2018-01-24 Frederic Wang <fwang@igalia.com> |
| |
| ScrollingStateNode::reconcileLayerPositionForViewportRect is only called on direct children of the root |
| https://bugs.webkit.org/show_bug.cgi?id=179946 |
| |
| Reviewed by Simon Fraser. |
| |
| ScrollingStateNode::reconcileLayerPositionForViewportRect is currently only called on the |
| direct children of root of the scrolling tree. Hence nodes like "position: fixed" will not |
| update their layers after scrolling when they are deeper in the tree. This is already |
| possible on iOS with overflow nodes and will happen with subframes when async scrolling is |
| implemented. This commit fixes that issue by recursively calling the function |
| ScrollingStateNode::reconcileLayerPositionForViewportRect on the scrolling tree. |
| |
| Test: fast/scrolling/ios/reconcile-layer-position-recursive.html |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions): Just call |
| reconcileLayerPositionForViewportRect on the root node. |
| * page/scrolling/ScrollingStateNode.cpp: |
| (WebCore::ScrollingStateNode::reconcileLayerPositionForViewportRect): By default, this |
| function now recursively calls reconcileLayerPositionForViewportRect on the children. |
| * page/scrolling/ScrollingStateNode.h: |
| * page/scrolling/ScrollingStateFixedNode.cpp: |
| (WebCore::ScrollingStateFixedNode::reconcileLayerPositionForViewportRect): Call the function |
| on children. |
| * page/scrolling/ScrollingStateStickyNode.cpp: |
| (WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect): Ditto. |
| |
| 2018-01-24 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Use GraphicsContextImplCairo for ImageBuffer context |
| https://bugs.webkit.org/show_bug.cgi?id=181977 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Enhance the GraphicsContextImpl interface to the point of enabling the |
| Cairo-based implementation to be used for GraphicsContext construction |
| in ImageBufferCairo.cpp. |
| |
| In order to enable GraphicsContextImpl implementations to properly |
| manage PlatformGraphicsContext objects, the hasPlatformContext() and |
| platformContext() methods are added. Cairo implementation returns true |
| in the first method, and returns pointer to the PlatformContextCairo |
| object in the second. The DisplayList::Recorder, due to its recording |
| nature, doesn't manage such an object, so it returns false and nullptr, |
| respectively. |
| |
| GraphicsContextImpl also gains the setCTM(), getCTM(), clipBounds() and |
| roundToDevicePixels() methods, corresponding to the GraphicsContext |
| methods that now invoke these new methods on any existing m_impl object. |
| GraphicsContextImplCairo implementations mimic the existing behavior in |
| the Cairo-specific GraphicsContext methods, but DisplayList::Recorder |
| implementations remain no-op, logging the invocation but doing nothing |
| otherwise. |
| |
| drawImage() and drawTiledImage() methods on the GraphicsContextImpl |
| interface are changed to return the ImageDrawResult value, corresponding |
| to what's been done in the method. In DisplayList::Recorder, the methods |
| return ImageDrawResult::DidRecord, while in GraphicsContextImplCairo the |
| methods return the return result of Image::draw() or Image::drawTiled() |
| call. |
| |
| To make the protected Image::draw() and Image::drawTiled() methods |
| accessible, invocations of those are packed into static drawImageImpl() |
| and drawTiledImageImpl() functions on the GraphicsContextImpl class. |
| This makes it possible to simply declare GraphicsContextImpl class as a |
| friend class of Image, and not every specific GraphicsContextImpl |
| derivation. Implementations of these functions mirror behavior of the |
| drawImage() and drawTiledImage() methods on the GraphicsContext class, |
| when an m_impl object isn't present, constructing a scope-tied |
| InterpolationQualityMaintainer object and invoking the relevant Image |
| method. |
| |
| To make immediate use of the new GraphicsContextImplCairo functionality, |
| the GraphicsContext construction in Cairo-specific ImageBuffer |
| implementation now uses a factory function that returns a new |
| GraphicsContextImplCairo object through which the given |
| PlatformContextCairo is used for painting. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/GraphicsContext.cpp: |
| (WebCore::GraphicsContext::hasPlatformContext const): |
| (WebCore::GraphicsContext::drawImage): |
| (WebCore::GraphicsContext::drawTiledImage): |
| * platform/graphics/GraphicsContext.h: |
| (WebCore::GraphicsContext::hasPlatformContext const): Deleted. |
| * platform/graphics/GraphicsContextImpl.cpp: |
| (WebCore::GraphicsContextImpl::drawImageImpl): |
| (WebCore::GraphicsContextImpl::drawTiledImageImpl): |
| * platform/graphics/GraphicsContextImpl.h: |
| * platform/graphics/Image.h: |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::getCTM const): |
| (WebCore::GraphicsContext::platformContext const): |
| (WebCore::GraphicsContext::clipBounds const): |
| (WebCore::GraphicsContext::roundToDevicePixels): |
| (WebCore::GraphicsContext::setCTM): |
| * platform/graphics/cairo/GraphicsContextImplCairo.cpp: |
| (WebCore::m_private): |
| (WebCore::GraphicsContextImplCairo::~GraphicsContextImplCairo): |
| (WebCore::GraphicsContextImplCairo::hasPlatformContext const): |
| (WebCore::GraphicsContextImplCairo::platformContext const): |
| (WebCore::GraphicsContextImplCairo::updateState): |
| (WebCore::GraphicsContextImplCairo::setLineCap): |
| (WebCore::GraphicsContextImplCairo::setLineDash): |
| (WebCore::GraphicsContextImplCairo::setLineJoin): |
| (WebCore::GraphicsContextImplCairo::setMiterLimit): |
| (WebCore::GraphicsContextImplCairo::fillRect): |
| (WebCore::GraphicsContextImplCairo::fillRoundedRect): |
| (WebCore::GraphicsContextImplCairo::fillRectWithRoundedHole): |
| (WebCore::GraphicsContextImplCairo::fillPath): |
| (WebCore::GraphicsContextImplCairo::fillEllipse): |
| (WebCore::GraphicsContextImplCairo::strokeRect): |
| (WebCore::GraphicsContextImplCairo::strokePath): |
| (WebCore::GraphicsContextImplCairo::strokeEllipse): |
| (WebCore::GraphicsContextImplCairo::clearRect): |
| (WebCore::GraphicsContextImplCairo::drawGlyphs): |
| (WebCore::GraphicsContextImplCairo::drawImage): |
| (WebCore::GraphicsContextImplCairo::drawTiledImage): |
| (WebCore::GraphicsContextImplCairo::drawNativeImage): |
| (WebCore::GraphicsContextImplCairo::drawPattern): |
| (WebCore::GraphicsContextImplCairo::drawRect): |
| (WebCore::GraphicsContextImplCairo::drawLine): |
| (WebCore::GraphicsContextImplCairo::drawLinesForText): |
| (WebCore::GraphicsContextImplCairo::drawLineForDocumentMarker): |
| (WebCore::GraphicsContextImplCairo::drawEllipse): |
| (WebCore::GraphicsContextImplCairo::drawFocusRing): |
| (WebCore::GraphicsContextImplCairo::save): |
| (WebCore::GraphicsContextImplCairo::restore): |
| (WebCore::GraphicsContextImplCairo::translate): |
| (WebCore::GraphicsContextImplCairo::rotate): |
| (WebCore::GraphicsContextImplCairo::scale): |
| (WebCore::GraphicsContextImplCairo::concatCTM): |
| (WebCore::GraphicsContextImplCairo::setCTM): |
| (WebCore::GraphicsContextImplCairo::getCTM): |
| (WebCore::GraphicsContextImplCairo::beginTransparencyLayer): |
| (WebCore::GraphicsContextImplCairo::endTransparencyLayer): |
| (WebCore::GraphicsContextImplCairo::clip): |
| (WebCore::GraphicsContextImplCairo::clipOut): |
| (WebCore::GraphicsContextImplCairo::clipPath): |
| (WebCore::GraphicsContextImplCairo::clipBounds): |
| (WebCore::GraphicsContextImplCairo::roundToDevicePixels): |
| (WebCore::m_platformContext): Deleted. |
| * platform/graphics/cairo/GraphicsContextImplCairo.h: |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| (WebCore::ImageBuffer::ImageBuffer): |
| * platform/graphics/cg/GraphicsContextCG.cpp: |
| (WebCore::GraphicsContext::clipBounds const): |
| (WebCore::GraphicsContext::setCTM): |
| (WebCore::GraphicsContext::getCTM const): |
| (WebCore::GraphicsContext::roundToDevicePixels): |
| * platform/graphics/displaylists/DisplayListRecorder.cpp: |
| (WebCore::DisplayList::Recorder::drawImage): |
| (WebCore::DisplayList::Recorder::drawTiledImage): |
| (WebCore::DisplayList::Recorder::drawNativeImage): |
| (WebCore::DisplayList::Recorder::setCTM): |
| (WebCore::DisplayList::Recorder::getCTM): |
| (WebCore::DisplayList::Recorder::clipBounds): |
| (WebCore::DisplayList::Recorder::roundToDevicePixels): |
| * platform/graphics/displaylists/DisplayListRecorder.h: |
| |
| 2018-01-24 Christopher Reid <chris.reid@sony.com> |
| |
| Linker error in ShareableBitmapCairo.cpp undefined reference to WebCore::Cairo::ShadowState::ShadowState |
| https://bugs.webkit.org/show_bug.cgi?id=182060 |
| |
| Reviewed by Žan Doberšek. |
| |
| No new tests, no change in behavior. |
| |
| Added exports to WebCore::Cairo::ShadowState::ShadowState. |
| |
| * platform/graphics/cairo/CairoOperations.h: |
| |
| 2018-01-24 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Implement didSendData client callback. |
| https://bugs.webkit.org/show_bug.cgi?id=182063 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (covered by existing tests). |
| |
| * platform/network/curl/CurlDownload.h: |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::willSendData): |
| * platform/network/curl/CurlRequestClient.h: |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: |
| (WebCore::ResourceHandleCurlDelegate::curlDidSendData): |
| * platform/network/curl/ResourceHandleCurlDelegate.h: |
| |
| 2018-01-24 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement PublicKeyCredential’s [[DiscoverFromExternalSource]] with a dummy authenticator |
| https://bugs.webkit.org/show_bug.cgi?id=182032 |
| <rdar://problem/36459922> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements PublicKeyCredential's [[DiscoverFromExternalSource]] from |
| https://www.w3.org/TR/webauthn/#getAssertion as of 5 December 2017. In order to |
| do testing, a dummy authenticator is implemented to exercise a failure and a |
| pass path. A number of dependencies need to be resolved later in order to comply |
| with the spec, which are marked by FIXME in the patch and tracked by proper |
| bugs. Those dependencies will be addressed once the first prototype is finshed. |
| |
| Tests: http/tests/webauthn/public-key-credential-get-with-invalid-parameters.https.html |
| http/wpt/credential-management/credentialscontainer-store-basics.https.html |
| http/wpt/webauthn/public-key-credential-get-failure.https.html |
| http/wpt/webauthn/public-key-credential-get-success.https.html |
| |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::isCreate): |
| Fixes some minor issues. |
| * Modules/webauthn/Authenticator.cpp: |
| (WebCore::Authenticator::getAssertion const): |
| * Modules/webauthn/Authenticator.h: |
| (WebCore::Authenticator::AssertionReturnBundle::AssertionReturnBundle): |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredential::collectFromCredentialStore): |
| Changed a parameter type. |
| (WebCore::PublicKeyCredential::discoverFromExternalSource): |
| (WebCore::PublicKeyCredential::create): |
| Improved some comments. |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.h: |
| (): Deleted. |
| * bindings/js/JSAuthenticatorResponseCustom.cpp: |
| (WebCore::toJSNewlyCreated): |
| |
| 2018-01-24 Dean Jackson <dino@apple.com> |
| |
| Move WebGL's colorspace code into IOSurface |
| https://bugs.webkit.org/show_bug.cgi?id=182076 |
| <rdar://problem/36846863> |
| |
| Reviewed by Simon Fraser, with assistance from Tim Horton. |
| |
| Rather than have WebGLLayer talk directly to an IOSurfaceRef, |
| use a helper function on WebCore::IOSurface. |
| |
| No behaviour change. |
| |
| * platform/graphics/cocoa/IOSurface.h: |
| * platform/graphics/cocoa/IOSurface.mm: |
| (WebCore::IOSurface::migrateColorSpaceToProperties): Add new helper. |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): The |
| newly created IOSurfaces call the helper to set up their colorspace. |
| |
| 2018-01-24 Dean Jackson <dino@apple.com> |
| |
| Add a note about not implementing these functions without discussion. |
| <rdar://problem/36666458> |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::clientWaitSync): |
| (WebCore::WebGL2RenderingContext::getSyncParameter): |
| |
| 2018-01-24 Youenn Fablet <youenn@apple.com> |
| |
| Opaque being-loaded responses should clone their body |
| https://bugs.webkit.org/show_bug.cgi?id=182056 |
| |
| Reviewed by Brady Eidson. |
| |
| Test: http/wpt/service-workers/clone-opaque-being-loaded-response.https.html |
| |
| When cloning a being-loaded response, make sure we create a ReadableStream. |
| Before the patch, the readableStream was not created in that case for opaque responses. |
| |
| * Modules/fetch/FetchBodyOwner.cpp: |
| (WebCore::FetchBodyOwner::readableStream): |
| (WebCore::FetchBodyOwner::createReadableStream): |
| * Modules/fetch/FetchBodyOwner.h: |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::clone): |
| |
| 2018-01-24 Chris Dumez <cdumez@apple.com> |
| |
| close() operation should not be exposed inside a ServiceWorkerGlobalScope |
| https://bugs.webkit.org/show_bug.cgi?id=182057 |
| |
| Reviewed by Youenn Fablet. |
| |
| Move close() from WorkerGlobalScope to DedicatedWorkerGlobalScope as per: |
| - https://html.spec.whatwg.org/multipage/workers.html#dedicatedworkerglobalscope |
| |
| This change to the specification was made to avoid exposing this deprecated |
| features to service workers (which are new). |
| |
| No new tests, rebaselined existing test. |
| |
| * workers/DedicatedWorkerGlobalScope.idl: |
| * workers/WorkerGlobalScope.idl: |
| |
| 2018-01-24 David Hyatt <hyatt@apple.com> |
| |
| Implement line clamp for mail. |
| https://bugs.webkit.org/show_bug.cgi?id=180818 |
| |
| Reviewed by Dean Jackson. |
| |
| This patch implements a form of clamping that can clamp lines at both the top |
| and the bottom, and the interior can be replaced with a DOM element (identified |
| by id) that replaces the middle section. |
| |
| The implementation derives from the multicolumn classes, but ultimately the |
| clamp should derive from the fragmentset classes instead (with most of the current |
| multicolumn code moving into base classes). |
| |
| The virtualization of many of the multicolumn functions is something that would happen |
| once we move pages/printing over to this pagination model anyway. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| Add the new clamp classes. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSProperties.json: |
| * css/StyleBuilderCustom.h: |
| (WebCore::StyleBuilderCustom::applyValueWebkitLinesClamp): |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| * css/parser/CSSParserMode.h: |
| (WebCore::CSSParserContextHash::hash): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeLinesClamp): |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| Implement the new CSS property, webkit-lines-clamp. This is only exposed if a preference |
| is set, so it is not exposed to the Web. |
| |
| * page/Settings.yaml: |
| Add a new setting to control allowing access to the new CSS property. |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::willCreateColumns const): |
| Make sure columns are created when lines clamp is set. |
| |
| (WebCore::getHeightForLineCount): |
| (WebCore::RenderBlockFlow::logicalHeightForLineCount): |
| (WebCore::RenderBlockFlow::logicalHeightExcludingLineCount): |
| (WebCore::RenderBlockFlow::layoutExcludedChildren): |
| (WebCore::RenderBlockFlow::heightForLineCount): Deleted. |
| * rendering/RenderBlockFlow.h: |
| Re-use the same clamping logic as the old line clamp code, but modernize it to work |
| with writing modes and to be able to go backwards from the end of the block. |
| |
| * rendering/RenderDeprecatedFlexibleBox.cpp: |
| (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp): |
| The line count method got renamed to have the word "logical" in it, since it now |
| works with vertical writing. |
| |
| * rendering/RenderFragmentContainer.cpp: |
| (WebCore::RenderFragmentContainer::pageLogicalHeightForOffset const): |
| * rendering/RenderFragmentContainer.h: |
| Since line clamp sets have variable page heights, this new method takes the offset |
| as an argument so that it can return the appropriate page for the given offset. |
| This method will eventually be used by printing/page sets as well, since pages |
| can have variable heights. |
| |
| * rendering/RenderFragmentedFlow.cpp: |
| (WebCore::RenderFragmentedFlow::validateFragments): |
| (WebCore::RenderFragmentedFlow::pageLogicalHeightForOffset const): |
| (WebCore::RenderFragmentedFlow::pageRemainingLogicalHeightForOffset const): |
| * rendering/RenderFragmentedFlow.h: |
| Support for variable page heights in a fragment set. |
| |
| * rendering/RenderLinesClampFlow.cpp: Added. |
| (WebCore::RenderLinesClampFlow::RenderLinesClampFlow): |
| (WebCore::RenderLinesClampFlow::renderName const): |
| (WebCore::RenderLinesClampFlow::layout): |
| (WebCore::RenderLinesClampFlow::createMultiColumnSet): |
| (WebCore::RenderLinesClampFlow::isChildAllowedInFragmentedFlow const): |
| (WebCore::RenderLinesClampFlow::layoutFlowExcludedObjects): |
| * rendering/RenderLinesClampFlow.h: Added. |
| * rendering/RenderLinesClampSet.cpp: Added. |
| (WebCore::RenderLinesClampSet::RenderLinesClampSet): |
| (WebCore::RenderLinesClampSet::recalculateColumnHeight): |
| (WebCore::RenderLinesClampSet::computeLogicalHeight const): |
| (WebCore::RenderLinesClampSet::columnCount const): |
| (WebCore::RenderLinesClampSet::columnRectAt const): |
| (WebCore::RenderLinesClampSet::columnIndexAtOffset const): |
| (WebCore::RenderLinesClampSet::pageLogicalTopForOffset const): |
| (WebCore::RenderLinesClampSet::pageLogicalHeightForOffset const): |
| (WebCore::RenderLinesClampSet::fragmentedFlowPortionRectAt const): |
| (WebCore::RenderLinesClampSet::fragmentedFlowPortionOverflowRect): |
| (WebCore::RenderLinesClampSet::customBlockProgressionAdjustmentForColumn const): |
| (WebCore::RenderLinesClampSet::renderName const): |
| * rendering/RenderLinesClampSet.h: Added. |
| The new classes. They subclass all the methods necessary to do multi-pass layout, |
| and to determine the page heights of each section. |
| |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::isColumnSpanningDescendant const): |
| (WebCore::isValidColumnSpanner): |
| (WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant): |
| (WebCore::RenderMultiColumnFlow::createMultiColumnSet): |
| * rendering/RenderMultiColumnFlow.h: |
| * rendering/RenderMultiColumnSet.cpp: |
| (WebCore::RenderMultiColumnSet::collectLayerFragments): |
| (WebCore::RenderMultiColumnSet::columnTranslationForOffset const): |
| * rendering/RenderMultiColumnSet.h: |
| (WebCore::RenderMultiColumnSet::skipLayerFragmentCollectionForColumn const): |
| (WebCore::RenderMultiColumnSet::customBlockProgressionAdjustmentForColumn const): |
| Virtualized methods so that lines clamp can subclass and change behavior. |
| |
| * rendering/RenderObject.h: |
| (WebCore::RenderObject::isRenderLinesClampFlow const): |
| (WebCore::RenderObject::isRenderLinesClampSet const): |
| Add new functions for type checking. |
| |
| * rendering/RenderRubyText.cpp: |
| Include adjustment. |
| |
| * rendering/style/LineClampValue.h: |
| (WebCore::LinesClampValue::LinesClampValue): |
| (WebCore::LinesClampValue::isNone const): |
| (WebCore::LinesClampValue::operator== const): |
| (WebCore::LinesClampValue::operator!= const): |
| (WebCore::LinesClampValue::start const): |
| (WebCore::LinesClampValue::end const): |
| (WebCore::LinesClampValue::center const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::linesClamp const): |
| (WebCore::RenderStyle::hasLinesClamp const): |
| (WebCore::RenderStyle::setLinesClamp): |
| (WebCore::RenderStyle::initialLinesClamp): |
| (WebCore::RenderStyle::hasInlineColumnAxis const): |
| * rendering/style/StyleRareNonInheritedData.cpp: |
| (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): |
| (WebCore::StyleRareNonInheritedData::operator== const): |
| * rendering/style/StyleRareNonInheritedData.h: |
| The front end style implementation of the new property. |
| |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| Make sure to build the correct renderer when lines clamp is set. |
| |
| 2018-01-24 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Allocate CurlSSLVerifier only when it is required. |
| https://bugs.webkit.org/show_bug.cgi?id=182061 |
| |
| CurlSSLVerifier was a member function of CurlRequest. This patch do |
| lazy initialization of it only when actually it is required. |
| Also configuration method is not required by moving those stuff to |
| constructor of SSLVerifier which makes much safer because there's |
| no change to change its behavior from outside. |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::willSetupSslCtx): |
| (WebCore::CurlRequest::didCompleteTransfer): |
| (WebCore::CurlRequest::finalizeTransfer): |
| * platform/network/curl/CurlRequest.h: |
| * platform/network/curl/CurlSSLVerifier.cpp: |
| (WebCore::CurlSSLVerifier::CurlSSLVerifier): |
| (WebCore::CurlSSLVerifier::setSslCtx): Deleted. |
| * platform/network/curl/CurlSSLVerifier.h: |
| (WebCore::CurlSSLVerifier::setCurlHandle): Deleted. |
| (WebCore::CurlSSLVerifier::setHostName): Deleted. |
| |
| 2018-01-24 Antti Koivisto <antti@apple.com> |
| |
| Assertion failure in RenderMultiColumnSet::requiresBalancing() on fast/multicol/spanner-crash-when-adding-summary.html |
| https://bugs.webkit.org/show_bug.cgi?id=179308 |
| <rdar://problem/34592771> |
| |
| Reviewed by Zalan Bujtas. |
| |
| The issue here is that we fail to tear down render tree for a summary element because adding another summary element |
| takes it out of the composed tree. This leaves behind renderers that break some multicolumn assumptions. |
| |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| (WebCore::RenderTreeUpdater::tearDownLeftoverShadowHostChildren): |
| |
| When tearing down renderers go through the real children of the shadow hosts at the end and see if we left any renderers behind. |
| If so, tear them down too. |
| |
| * rendering/updating/RenderTreeUpdater.h: |
| |
| 2018-01-24 Daniel Bates <dabates@apple.com> |
| |
| [CSP] Check policy for targeted windows when navigating to a JavaScript URL |
| https://bugs.webkit.org/show_bug.cgi?id=182018 |
| <rdar://problem/36795781> |
| |
| Reviewed by Brent Fulgham. |
| |
| Move the CSP check to be earlier in the function. |
| |
| Test: http/tests/security/contentSecurityPolicy/window-open-javascript-url-with-target-blocked.html |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::createWindow): |
| |
| 2018-01-24 Chris Dumez <cdumez@apple.com> |
| |
| Add a IPC::SendSyncOption indicating we should not process incoming IPC while waiting for the sync reply |
| https://bugs.webkit.org/show_bug.cgi?id=182021 |
| <rdar://problem/21629943> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add layout testing infrastructure for the new flag. |
| |
| Test: fast/misc/testIncomingSyncIPCMessageWhileWaitingForSyncReply.html |
| |
| * page/ChromeClient.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::testIncomingSyncIPCMessageWhileWaitingForSyncReply): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-01-24 Alex Christensen <achristensen@webkit.org> |
| |
| Remove pre-Sierra-OS-specific code in WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=182026 |
| |
| Reviewed by Tim Horton. |
| |
| * page/cocoa/UserAgent.mm: |
| (WebCore::systemMarketingVersionForUserAgentString): |
| * page/scrolling/mac/ScrollingMomentumCalculatorMac.mm: |
| (WebCore::ScrollingMomentumCalculatorMac::retargetedScrollOffsetDidChange): |
| * platform/cocoa/PasteboardCocoa.mm: |
| (WebCore::bitmapPNGFileType): |
| * platform/graphics/FontPlatformData.cpp: |
| * platform/graphics/FontPlatformData.h: |
| * platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm: |
| (WebCore::VideoFullscreenLayerManager::setVideoFullscreenLayer): |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (layerContentsFormat): |
| (PlatformCALayerCocoa::updateContentsFormat): |
| (PlatformCALayerCocoa::backingStoreBytesPerPixel const): |
| * platform/graphics/cg/GraphicsContextCG.cpp: |
| (WebCore::linearRGBColorSpaceRef): |
| (WebCore::extendedSRGBColorSpaceRef): |
| * platform/graphics/cg/PDFDocumentImage.cpp: |
| (WebCore::PDFDocumentImage::drawPDFPage): |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::getCSSAttribute): |
| (WebCore::capabilitiesForFontDescriptor): |
| (WebCore::findClosestFont): |
| (WebCore::platformFontLookupWithFamily): |
| (WebCore::lookupFallbackFont): |
| (WebCore::fontWeightFromCoreText): Deleted. |
| * platform/graphics/cocoa/FontCocoa.mm: |
| (WebCore::Font::variantCapsSupportsCharacterForSynthesis const): |
| (WebCore::Font::platformWidthForGlyph const): |
| (WebCore::advanceForColorBitmapFont): Deleted. |
| (WebCore::canUseFastGlyphAdvanceGetter): Deleted. |
| * platform/graphics/cocoa/FontPlatformDataCocoa.mm: |
| (WebCore::FontPlatformData::FontPlatformData): |
| (WebCore::FontPlatformData::hash const): |
| (WebCore::FontPlatformData::platformIsEqual const): |
| (WebCore::FontPlatformData::ctFont const): |
| * platform/graphics/cocoa/GraphicsContextCocoa.mm: |
| (WebCore::linearRGBColorSpaceRef): Deleted. |
| * platform/graphics/cocoa/WebCoreDecompressionSession.mm: |
| (WebCore::WebCoreDecompressionSession::setTimebase): |
| * platform/graphics/mac/FontCustomPlatformData.cpp: |
| (WebCore::FontCustomPlatformData::supportsFormat): |
| * platform/mac/PlatformScreenMac.mm: |
| (WebCore::screenSupportsExtendedColor): |
| * platform/mac/ScrollbarThemeMac.mm: |
| (WebCore::ScrollbarThemeMac::didCreateScrollerImp): |
| (WebCore::ScrollbarThemeMac::isLayoutDirectionRTL): |
| * platform/mac/ThemeMac.mm: |
| (WebCore::ThemeMac::userPrefersReducedMotion const): |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): |
| * platform/text/mac/TextBoundaries.mm: |
| (WebCore::findNextWordFromIndex): |
| * rendering/RenderLayerModelObject.cpp: |
| (WebCore::RenderLayerModelObject::shouldPlaceBlockDirectionScrollbarOnLeft const): |
| * testing/Internals.mm: |
| (WebCore::Internals::userPrefersReducedMotion const): |
| |
| 2018-01-24 Alex Christensen <achristensen@webkit.org> |
| |
| Remove WebProcess authentication code |
| https://bugs.webkit.org/show_bug.cgi?id=182020 |
| |
| Reviewed by Brady Eidson. |
| |
| We were keeping it around for pre-NetworkSession media loading, which is gone now. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaPlayerShouldWaitForResponseToAuthenticationChallenge): Deleted. |
| * html/HTMLMediaElement.h: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::didReceiveAuthenticationChallenge): |
| * loader/ResourceLoader.h: |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::shouldWaitForResponseToAuthenticationChallenge): Deleted. |
| * platform/graphics/MediaPlayer.h: |
| (WebCore::MediaPlayerClient::mediaPlayerShouldWaitForResponseToAuthenticationChallenge): Deleted. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForResponseToAuthenticationChallenge:]): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForResponseToAuthenticationChallenge): Deleted. |
| |
| 2018-01-24 Joanmarie Diggs <jdiggs@igalia.com> |
| |
| AX: SVG AAM mapping trumps ARIA role attribute in the case of SVG root |
| https://bugs.webkit.org/show_bug.cgi?id=181994 |
| |
| Reviewed by Chris Fleizach. |
| |
| Only return AccessibilityRole::Group if we have no author-provided |
| ARIA role attribute value. |
| |
| Test: accessibility/svg-element-with-aria-role.html |
| |
| * accessibility/AccessibilitySVGRoot.cpp: |
| (WebCore::AccessibilitySVGRoot::roleValue const): |
| * accessibility/AccessibilitySVGRoot.h: |
| |
| 2018-01-24 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused QTKit preference |
| https://bugs.webkit.org/show_bug.cgi?id=181968 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| They weren't used and didn't do anything. |
| |
| * page/DeprecatedGlobalSettings.cpp: |
| (WebCore::DeprecatedGlobalSettings::setQTKitEnabled): Deleted. |
| * page/DeprecatedGlobalSettings.h: |
| (WebCore::DeprecatedGlobalSettings::isQTKitEnabled): Deleted. |
| |
| 2018-01-24 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Compute the progress and currentIteration properties on getComputedTiming() |
| https://bugs.webkit.org/show_bug.cgi?id=182039 |
| <rdar://problem/36813568> |
| |
| Reviewed by Dean Jackson. |
| |
| Compute the "progress" and "currentIteration" properties on the dictionary returned by getComputedTiming(). |
| To support this we implement several procedures from the specification implemented separately with links |
| and steps copied from the specification. There is one last procedure we don't implement, which is to obtain |
| the transformed time following the application of the provided easing, which will be the next patch. |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::phase const): |
| (WebCore::AnimationEffect::activeTime const): |
| (WebCore::AnimationEffect::overallProgress const): |
| (WebCore::AnimationEffect::simpleIterationProgress const): |
| (WebCore::AnimationEffect::currentIteration const): |
| (WebCore::AnimationEffect::currentDirection const): |
| (WebCore::AnimationEffect::directedProgress const): |
| (WebCore::AnimationEffect::iterationProgress const): |
| (WebCore::AnimationEffect::getComputedTiming): |
| * animation/AnimationEffect.h: |
| |
| 2018-01-24 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r226138): Selecting a line that ends with zero-width joiner (ZWJ) may cause text transformation |
| https://bugs.webkit.org/show_bug.cgi?id=181993 |
| <rdar://problem/36421080> |
| |
| Reviewed by David Hyatt. |
| |
| Re-implement paint optimization that was inadvertently removed in r226138. This optimization |
| works around an issue where selecting the last printable character in a line that is followed |
| followed by a zero-width joiner transforms the selected character. |
| |
| We need to fix <https://bugs.webkit.org/show_bug.cgi?id=181964> to improve the interaction |
| of selection and zero-width joiner characters. For now, re-implement a paint optimization |
| to perform a single paint operation when the style of the non-selected text is identical |
| to the style of the selected text. |
| |
| Test: fast/text/mac/select-character-before-zero-width-joiner.html |
| |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areBackgroundMarkerSubrangeStylesEqual): |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areForegroundMarkerSubrangeStylesEqual): |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::areDecorationMarkerSubrangeStylesEqual): |
| Add helper functions to determine when marker styles are identical. We make use of these |
| equality functions to coalesce adjacent subranges that have the same visual style and |
| hence reduce the number of drawing commands to paint all the subranges in a line. |
| |
| (WebCore::InlineTextBox::paint): Coalesce subranges before painting. |
| |
| (WebCore::InlineTextBox::subdivideAndResolveStyle): Split out the logic to coalesce |
| subranges with the same style into its own function InlineTextBox::coalesceAdjacentSubranges() |
| and kept this function focused on subdivision and style resolution. Manually compute |
| the frontmost subranges so that we can resolve style for each subrange with respect to |
| the correct base style. Formerly we always resolved style with respect the specified |
| base style. Now we resolve style with respect the previous frontmost subrange to ensure |
| styles cascade as expected. This change causes no visual difference now. Once we implement |
| <https://bugs.webkit.org/show_bug.cgi?id=175784> we will be able to test this change |
| with respect to selection of ::spelling-error/::grammar-error pseudo elements. |
| |
| (WebCore::InlineTextBox::coalesceAdjacentSubranges): Extracted logic from InlineTextBox::subdivideAndResolveStyle(). |
| |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::operator== const): Deleted. |
| (WebCore::InlineTextBox::MarkerSubrangeStyle::operator!= const): Deleted. |
| Comparing MarkerSubrangeStyle objects should be performed using the appropriate |
| are*MarkerSubrangeStylesEqual() non-member function. |
| |
| * rendering/InlineTextBox.h: |
| * rendering/MarkerSubrange.cpp: |
| (WebCore::subdivide): Remove overlap strategy FrontmostWithLongestEffectiveRange |
| as this strategy is now implemented by InlineTextBox::subdivideAndResolveStyle() and |
| InlineTextBox::coalesceAdjacentSubranges() that compute the set of frontmost subranges and |
| coalesces adjacent subranges with the same style into the longest effective subrange, |
| respectively. Unlike WebCore::subdivide(), InlineTextBox knows what the base style should |
| be for the subranges and can more aggressively coalesce adjacent subranges of different |
| types that have the same visual style. |
| * rendering/MarkerSubrange.h: |
| |
| 2018-01-24 Youenn Fablet <youenn@apple.com> |
| |
| Fetch response should copy its url from the request if null |
| https://bugs.webkit.org/show_bug.cgi?id=182048 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::responseReceived): Add assertion to check that the response URL is not null. |
| |
| 2018-01-24 Youenn Fablet <youenn@apple.com> |
| |
| Account for memory cache in DocumentThreadableLoader::didReceiveResponse assertion |
| https://bugs.webkit.org/show_bug.cgi?id=182049 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| A response served from Service Worker may be cached in Memory Cache and reused later on. |
| Update DTL assertion to handle that case. |
| |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::didReceiveResponse): |
| |
| 2018-01-24 Eric Carlson <eric.carlson@apple.com> |
| |
| REGRESSION(r227457): Release assert in updateLayout while destructing a media element |
| https://bugs.webkit.org/show_bug.cgi?id=182038 |
| <rdar://problem/36812083> |
| |
| Reviewed by Jer Noble. |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::isMainContentForPurposesOfAutoplay): Early return if element.isSuspended(). |
| * platform/audio/mac/MediaSessionManagerMac.mm: |
| (WebCore::MediaSessionManagerMac::clientCharacteristicsChanged): Call scheduleUpdateNowPlayingInfo |
| instead of updateNowPlayingInfo. |
| |
| 2018-01-24 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Provide a way for VoiceOver to uniquely identify a web session |
| https://bugs.webkit.org/show_bug.cgi?id=181894 |
| |
| Reviewed by Joanmarie Diggs. |
| |
| Add a way for VoiceOver to uniquely track a web page session. |
| |
| Test: accessibility/mac/session-id.html |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| |
| 2018-01-24 Antti Koivisto <antti@apple.com> |
| |
| RenderBlockRareData::m_enclosingFragmentedFlow should be WeakPtr |
| https://bugs.webkit.org/show_bug.cgi?id=182045 |
| <rdar://problem/36334787> |
| |
| Reviewed by Zalan Bujtas. |
| |
| For safety. |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::cachedEnclosingFragmentedFlow const): |
| (WebCore::RenderBlock::updateCachedEnclosingFragmentedFlow const): |
| (WebCore::RenderBlock::locateEnclosingFragmentedFlow const): |
| |
| 2018-01-23 Dean Jackson <dino@apple.com> |
| |
| REGRESSION (r222961?): sRGB images shown in WebGL are over-saturated on a wide gamut monitor |
| https://bugs.webkit.org/show_bug.cgi?id=182033 |
| <rdar://problem/36377780> |
| |
| Reviewed by Antoine Quint. |
| |
| My fix for YouTube360 changed the way we composite WebGL on macOS. Unfortunately it dropped |
| a flag telling the compositor the colorspace of the content should be sRGB. Reinstate this |
| by explicitly setting the colorspace on the IOSurface we use for WebGL back buffers. |
| |
| This *should* be covered by the test in: |
| fast/canvas/webgl/match-page-color-space.html |
| ... however, it shows a problem with our testing infrastructure. As long as it is not |
| testing on a Wide Gamut display, and explicitly setting the color profile, an automated |
| test won't pick up this regression. I could add an Internals helper to query the colorspace |
| of the WebGL content, but that doesn't actually verify the composited result, which is |
| all that matters. |
| |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): |
| |
| 2018-01-24 Ms2ger <Ms2ger@igalia.com> |
| |
| [GTK] Fix some test failures in ATK selection handling. |
| https://bugs.webkit.org/show_bug.cgi?id=168369 |
| <rdar://problem/30534881> |
| |
| Reviewed by Joanmarie Diggs. |
| |
| In r208479, selectionBelongsToObject was changed to return false if the |
| intersectsNode call returns an exception. |
| |
| In particular, this caused accessibility/gtk/text-at-offset-textarea.html |
| to fail. In this test, the selection is situated in the shadow DOM of the |
| textarea, while the node that is checked for intersection is the textarea |
| itself. In line with the standard, intersectsNode returns an exception in |
| this case. |
| |
| This caused webkitAccessibleText{Word, Line, Sentence}ForBoundary to stop |
| returning the expected text in the tested case. Removing this check fixes |
| the test, along with some others. |
| |
| Tests: accessibility/gtk/text-at-offset-textarea.html |
| accessibility/gtk/text-at-offset-textinput.html |
| accessibility/selected-text-range-aria-elements.html |
| accessibility/textarea-selected-text-range.html |
| |
| * accessibility/atk/WebKitAccessibleInterfaceText.cpp: |
| (getSelectionOffsetsForObject): Remove the selectionBelongsToObject() call. |
| |
| 2018-01-18 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebVR] Add OpenVR to the tree and to the build |
| https://bugs.webkit.org/show_bug.cgi?id=177298 |
| |
| Reviewed by Žan Doberšek. |
| |
| Added build dependencies with the OpenVR library. |
| |
| * CMakeLists.txt: |
| |
| 2018-01-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Harden against layout passes triggered when iterating through HTMLFormElement::associatedElements |
| https://bugs.webkit.org/show_bug.cgi?id=182037 |
| <rdar://problem/36747812> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Observe that HTMLFormElement::associatedElements returns a const reference to a Vector of raw |
| FormAssociatedElement pointers. In various call sites that iterate through these associated elements using this |
| function, some require synchronous layout updates per iteration, which can lead to a bad time when combined with |
| the first observation. |
| |
| To address this, we introduce HTMLFormElement::copyAssociatedElementsVector. This returns a new vector |
| containing strong Refs to each associated element. From each call site that may trigger synchronous layout and |
| execute arbitrary script while iterating over associated form elements, we instead use iterate over protected |
| FormAssociatedElements. |
| |
| From each call site that currently doesn't (and shouldn't) require a layout update, we use the old version that |
| returns a list of raw FormAssociatedElement pointers, but add ScriptDisallowedScopes to ensure that we never |
| execute script there in the future. |
| |
| Test: fast/forms/form-data-associated-element-iteration.html |
| |
| * html/DOMFormData.cpp: |
| (WebCore::DOMFormData::DOMFormData): |
| |
| Change to use copyAssociatedElementsVector(). |
| |
| * html/FormController.cpp: |
| (WebCore::recordFormStructure): |
| (WebCore::FormController::restoreControlStateIn): |
| |
| Change to use copyAssociatedElementsVector(). |
| |
| * html/HTMLFieldSetElement.cpp: |
| (WebCore::HTMLFieldSetElement::copyAssociatedElementsVector const): |
| (WebCore:: const): |
| (WebCore::HTMLFieldSetElement::length const): |
| |
| Refactor to use unsafeAssociatedElements(). |
| |
| * html/HTMLFieldSetElement.h: |
| * html/HTMLFormControlsCollection.cpp: |
| (WebCore:: const): |
| (WebCore::HTMLFormControlsCollection::copyFormControlElementsVector const): |
| (WebCore::HTMLFormControlsCollection::customElementAfter const): |
| (WebCore::HTMLFormControlsCollection::updateNamedElementCache const): |
| |
| Refactor these to use unsafeAssociatedElements(). |
| |
| * html/HTMLFormControlsCollection.h: |
| * html/HTMLFormElement.cpp: |
| (WebCore::HTMLFormElement::unsafeAssociatedElements const): |
| (WebCore::HTMLFormElement::copyAssociatedElementsVector const): |
| * html/HTMLFormElement.h: |
| * loader/FormSubmission.cpp: |
| (WebCore::FormSubmission::create): |
| |
| Refactor to use copyAssociatedElementsVector(). |
| |
| 2018-01-23 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Fix wrong redirection with relative url when it happens from |
| different host than original host. |
| https://bugs.webkit.org/show_bug.cgi?id=181873 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/network/curl/CurlDownload.cpp: |
| (WebCore::CurlDownload::willSendRequest): |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: |
| (WebCore::ResourceHandleCurlDelegate::willSendRequest): |
| |
| 2018-01-23 Eric Carlson <eric.carlson@apple.com> |
| |
| Resign NowPlaying status when no media element is eligible |
| https://bugs.webkit.org/show_bug.cgi?id=181914 |
| <rdar://problem/35294116> |
| |
| Reviewed by Jer Noble. |
| |
| Updated API test. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::removedFromAncestor): Call mediaSession->clientCharacteristicsChanged |
| so NowPlaying status will be updated. |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::playbackPermitted const): Return early when the media |
| element has been suspended. |
| (WebCore::MediaElementSession::canShowControlsManager const): Return false when being queried |
| for NowPlaying status in an inactive document or when element has been suspended. |
| (WebCore::isMainContentForPurposesOfAutoplay): Return early if it isn't safe to update |
| style because HitTest can force a layout. |
| (WebCore::MediaElementSession::updateIsMainContent const): Ditto. |
| |
| * platform/audio/PlatformMediaSessionManager.cpp: |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): Implement in for all |
| ports. |
| * platform/audio/PlatformMediaSessionManager.h: |
| (WebCore::PlatformMediaSessionManager::registeredAsNowPlayingApplication const): |
| * platform/audio/ios/MediaSessionManagerIOS.h: |
| * platform/audio/mac/MediaSessionManagerMac.h: |
| * platform/audio/mac/MediaSessionManagerMac.mm: |
| (WebCore::MediaSessionManagerMac::updateNowPlayingInfo): Call MRMediaRemoteSetCanBeNowPlayingApplication |
| whenever status changes. |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): Deleted, implemented |
| in the base class. |
| |
| 2018-01-23 Alex Christensen <achristensen@webkit.org> |
| |
| Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync |
| https://bugs.webkit.org/show_bug.cgi?id=181961 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No change in behavior. |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::didReceiveResponseAsync): |
| * loader/ResourceLoader.h: |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::didReceiveResponseAsync): |
| * loader/appcache/ApplicationCacheGroup.h: |
| * platform/network/BlobResourceHandle.cpp: |
| (WebCore::BlobResourceHandle::notifyResponseOnSuccess): |
| (WebCore::BlobResourceHandle::notifyResponseOnError): |
| (WebCore::BlobResourceHandle::continueDidReceiveResponse): Deleted. |
| * platform/network/BlobResourceHandle.h: |
| * platform/network/PingHandle.h: |
| * platform/network/ResourceHandle.cpp: |
| (WebCore::ResourceHandle::didReceiveResponse): |
| * platform/network/ResourceHandle.h: |
| * platform/network/ResourceHandleClient.h: |
| * platform/network/SynchronousLoaderClient.cpp: |
| (WebCore::SynchronousLoaderClient::didReceiveResponseAsync): |
| * platform/network/SynchronousLoaderClient.h: |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse): Deleted. |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: |
| (WebCore::ResourceHandleCurlDelegate::curlDidReceiveResponse): |
| (WebCore::ResourceHandleCurlDelegate::handleDataURL): |
| (WebCore::ResourceHandleCurlDelegate::continueDidReceiveResponse): Deleted. |
| * platform/network/mac/ResourceHandleMac.mm: |
| (WebCore::ResourceHandle::continueDidReceiveResponse): Deleted. |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate continueDidReceiveResponse]): Deleted. |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| (WebCore::nextMultipartResponsePartCallback): |
| (WebCore::sendRequestCallback): |
| (WebCore::ResourceHandle::continueDidReceiveResponse): Deleted. |
| |
| 2018-01-23 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, rollout r227216 as it seems to be causing deadlocks |
| https://bugs.webkit.org/show_bug.cgi?id=182013 |
| |
| * page/ChromeClient.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::testIncomingSyncIPCMessageWhileWaitingForSyncReply): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-01-23 Ali Juma <ajuma@chromium.org> |
| |
| REGRESSION (r226622): ASSERTION FAILED: !m_frame in WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame() |
| https://bugs.webkit.org/show_bug.cgi?id=181756 |
| |
| Reviewed by Simon Fraser. |
| |
| Don't create a VisualViewport for a suspended DOMWindow. When a DOMWindow is suspended |
| for document suspension, all DOMWindowProperties are disconnected from their frame. |
| Creating a new VisualViewport while in this state means unexpectedly having a DOMWindowProperty |
| that's connected to a frame, and this leads to an assertion failure. |
| |
| Test: http/tests/navigation/https-in-page-cache.html |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::visualViewport const): |
| Don't create a VisualViewport while suspended. |
| * page/FrameView.cpp: |
| (WebCore::FrameView::updateLayoutViewport): |
| Handle null DOMWindow::visualViewport. |
| |
| 2018-01-23 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] CurlRequest must protect its client from disposal while it's on duty. |
| https://bugs.webkit.org/show_bug.cgi?id=181875 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. It's covered by existing tests. |
| |
| * platform/network/curl/CurlDownload.h: |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::callClient): |
| (WebCore::CurlRequest::didReceiveData): |
| (WebCore::CurlRequest::didReceiveDataFromMultipart): |
| (WebCore::CurlRequest::didCompleteTransfer): |
| (WebCore::CurlRequest::invokeDidReceiveResponse): |
| * platform/network/curl/CurlRequest.h: |
| * platform/network/curl/CurlRequestClient.h: |
| * platform/network/curl/ResourceHandleCurlDelegate.h: |
| |
| 2018-01-23 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r227437. |
| https://bugs.webkit.org/show_bug.cgi?id=182011 |
| |
| broke build (Requested by alexchristensen on #webkit). |
| |
| Reverted changeset: |
| |
| "Remove unused QTKit preference" |
| https://bugs.webkit.org/show_bug.cgi?id=181968 |
| https://trac.webkit.org/changeset/227437 |
| |
| 2018-01-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Expose getKeyframes() and parsing of remaining keyframe properties |
| https://bugs.webkit.org/show_bug.cgi?id=181978 |
| |
| Not reviewed. |
| |
| Fix failures for http/wpt/web-animations/interfaces/AnimationEffectTiming/easing.html introduced in the previous patch. |
| Those keyword values are not expected. |
| |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::cssText const): |
| |
| 2018-01-23 Simon Fraser <simon.fraser@apple.com> |
| |
| feMorphology stops applying if either x or y radius is 0 but should not. |
| https://bugs.webkit.org/show_bug.cgi?id=181903 |
| |
| Reviewed by Dean Jackson. |
| |
| feMorphology should allow the radius on one axis to be zero but still apply the effect |
| (it's akin to a blur on just one axis). Also, any negative radius, or zero on both axes |
| should act like a pass-through, rather than outputting transparent blank (this is a spec |
| change from SVG 1.1 to SVG 2). |
| |
| Tests: svg/filters/feMorphology-zero-radius-one-axis-expected.svg |
| svg/filters/feMorphology-zero-radius-one-axis.svg |
| |
| * platform/graphics/filters/FEMorphology.cpp: |
| (WebCore::FEMorphology::platformApplyDegenerate): |
| * platform/graphics/filters/FilterEffect.cpp: |
| (WebCore::FilterEffect::createImageBufferResult): |
| |
| 2018-01-23 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused MediaPlayerSupportsTypeClient |
| https://bugs.webkit.org/show_bug.cgi?id=182003 |
| |
| Reviewed by Sam Weinig. |
| |
| This was used for a QTKit-specific hack I removed in r227372. |
| |
| * Modules/encryptedmedia/CDM.cpp: |
| (WebCore::CDM::getSupportedCapabilitiesForAudioVideoType): |
| * Modules/mediasource/MediaSource.cpp: |
| (WebCore::MediaSource::isTypeSupported): |
| * dom/DOMImplementation.cpp: |
| (WebCore::DOMImplementation::createDocument): |
| (WebCore::DOMImplementationSupportsTypeClient::DOMImplementationSupportsTypeClient): Deleted. |
| (): Deleted. |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::canPlayType const): |
| (WebCore::HTMLMediaElement::selectNextSourceChild): |
| (WebCore::HTMLMediaElement::mediaPlayerNeedsSiteSpecificHacks const): Deleted. |
| (WebCore::HTMLMediaElement::mediaPlayerDocumentHost const): Deleted. |
| * html/HTMLMediaElement.h: |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::supportsType): |
| * platform/graphics/MediaPlayer.h: |
| (WebCore::MediaPlayerSupportsTypeClient::mediaPlayerNeedsSiteSpecificHacks const): Deleted. |
| (WebCore::MediaPlayerSupportsTypeClient::mediaPlayerDocumentHost const): Deleted. |
| |
| 2018-01-23 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused QTKit preference |
| https://bugs.webkit.org/show_bug.cgi?id=181968 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| They weren't used and didn't do anything. |
| |
| * page/DeprecatedGlobalSettings.cpp: |
| (WebCore::DeprecatedGlobalSettings::setQTKitEnabled): Deleted. |
| * page/DeprecatedGlobalSettings.h: |
| (WebCore::DeprecatedGlobalSettings::isQTKitEnabled): Deleted. |
| |
| 2018-01-23 Javier Fernandez <jfernandez@igalia.com> |
| |
| [css-align] 'left' and 'right' should parse as invalid in block/cross-axis alignment |
| https://bugs.webkit.org/show_bug.cgi?id=181792 |
| |
| Reviewed by Antti Koivisto. |
| |
| The CSS WG resolved to remove the 'left' and 'right' values from the |
| block/cross axis alignment properties. |
| |
| https://github.com/w3c/csswg-drafts/issues/1403 |
| |
| This patch changes the CSS parsing logic of all the CSS Box Alignment |
| properties, both block-axis (align-{self, items, content} and |
| inline-axis (justify-{self, items, content}). |
| |
| Additionally, the alignment shorthands (place-{self, items, content}) |
| have been also changed to respect the new syntax. |
| |
| Despite the number of layout tests changed, I don't think this |
| change will break any content in current sites. The CSS values |
| 'left' and 'right' were introduced by the new CSS Box Alignment |
| spec and only implemented by the CSS Grid Layout feature, shipped |
| last year. Additionally, the removed values have no effect on the |
| layout result when they are applied to the block/cross-axis CSS |
| Alignment properties. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-align-content-001.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-align-content-002.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-align-content-003.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-align-content-004.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-align-content-005.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-justify-content-001.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-justify-content-002.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-justify-content-003.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-justify-content-004.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/parse-justify-content-005.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-003.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-005.html |
| imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-006.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/justify-items-legacy-001.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-align-items-001.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-align-items-002.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-align-items-003.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-align-items-004.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-align-items-005.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-002.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-004.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-005.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-006.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-003.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-005.html |
| imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-006.html |
| imported/w3c/web-platform-tests/css/css-align/distribution-values/space-evenly-001.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-align-self-001.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-align-self-002.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-align-self-003.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-align-self-004.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-align-self-005.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-justify-self-001.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-justify-self-002.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-justify-self-003.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-justify-self-004.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/parse-justify-self-005.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-003.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-005.html |
| imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-006.html |
| |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::isLeftOrRightKeyword): |
| (WebCore::isContentPositionKeyword): |
| (WebCore::isContentPositionOrLeftOrRightKeyword): |
| (WebCore::consumeContentDistributionOverflowPosition): |
| (WebCore::isSelfPositionKeyword): |
| (WebCore::isSelfPositionOrLeftOrRightKeyword): |
| (WebCore::consumeSelfPositionOverflowPosition): |
| (WebCore::consumeAlignItems): |
| (WebCore::consumeJustifyItems): |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| (WebCore::consumeSimplifiedContentPosition): |
| (WebCore::CSSPropertyParser::consumePlaceContentShorthand): |
| (WebCore::consumeSimplifiedItemPosition): |
| (WebCore::CSSPropertyParser::consumePlaceItemsShorthand): |
| (WebCore::CSSPropertyParser::consumePlaceSelfShorthand): |
| |
| 2018-01-23 Simon Fraser <simon.fraser@apple.com> |
| |
| Element with position:fixed stops scrolling at the bottom of the page, but is painted in the right place on Chacos.com. |
| https://bugs.webkit.org/show_bug.cgi?id=181741 |
| rdar://problem/36593581 |
| |
| Reviewed by Tim Horton. |
| |
| The #ifdef for iOS was wrong; on iOS, visibleSize() is in content coordinates and matches |
| unscaledDocumentRect, so there's no need to scale it. Doing so computed the wrong unscaledMaximumScrollPosition |
| which broke hit-testing when the document minimum scale was > 1. |
| |
| Test: fast/visual-viewport/ios/min-scale-greater-than-one.html |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::unscaledMaximumScrollPosition const): |
| |
| 2018-01-23 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Expose getKeyframes() and parsing of remaining keyframe properties |
| https://bugs.webkit.org/show_bug.cgi?id=181978 |
| <rdar://problem/36772586> |
| |
| Reviewed by Dean Jackson. |
| |
| We finish our implementation of multiple keyframes by exposing the getKeyframes() method on KeyframeEffect and |
| parsing the remaining properties that can be exposed on keyframes: "easing" and "composite". And since we parse |
| those properties on keyframes, we also parse "easing" on AnimationEffectTiming and "composite" and "iterationComposite" |
| on KeyframeEffect. |
| |
| To support this, we implement a new TimingFunction::createFromCSSText() method which takes in a string that is |
| a value provided directly via the JS API. As its converse, we expose a TimingFunction::cssText() method which |
| provides a string that can be sent back to JS to represent a timing function, using keywords when the timing |
| function matches one and ommitting default values. |
| |
| We now also keep track of the original "offset" value provided through the JS API since that value is required |
| when calling getKeyframes() and distinct from the "computedOffset". These original offsets, composite operations |
| and timing functions are kept as separate Vectors from the KeyframeList since this type does not support exposing |
| those. We may consider improving that in a future patch. |
| |
| Finally, we make some adjustments in the keyframe parsing to comply with the specification and correctly parse |
| all provided timing functions, regardless of the number of keyframes and timing functions provided. |
| |
| Note that this patch is only about parsing, storing and returning provided easing and composite operations but |
| that such values will only be used for the resolution of animation effects in future patches. |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::getComputedTiming): Set the "easing" property on the getComputedTiming() return value |
| now that we expose "easing" on AnimationEffectTiming. |
| * animation/AnimationEffectTiming.cpp: |
| (WebCore::AnimationEffectTiming::AnimationEffectTiming): Create a linear TimingFunction by default. |
| (WebCore::AnimationEffectTiming::setEasing): Parse the "easing" value and propagate an exception for invalid values. |
| * animation/AnimationEffectTiming.h: Expose the new "easing" property and backing TimingFunction. |
| * animation/AnimationEffectTiming.idl: Expose the new "easing" property. |
| * animation/KeyframeEffect.cpp: |
| (WebCore::CSSPropertyIDToIDLAttributeName): Provide a way to convert the name of a CSS property to a string that can |
| be used to generate a JS property name for use by getKeyframes(). |
| (WebCore::computeMissingKeyframeOffsets): Implement the full steps of the spec. |
| (WebCore::processIterableKeyframes): Fix a problematic declaration for the easing variable. |
| (WebCore::processPropertyIndexedKeyframes): Now that ProcessedKeyframe has both an offset and a computedOffset, use |
| computed offsets. We also fix a couple of loops to fix compliance issues revealed by WPT tests. |
| (WebCore::KeyframeEffect::create): Parse the provided "easing" property on the KeyframeEffectOptions object. |
| (WebCore::KeyframeEffect::getKeyframes): Implement the getKeyframes() method as mandated by the spec. |
| (WebCore::KeyframeEffect::processKeyframes): Keep a list of unused easings so these might be parsed as well, and |
| potentially throw exceptions, as mandated by the spec. For valid easings, store their matching TimingFunction in |
| m_timingFunctions, original offset values in m_offsets and CompositeOperation values in m_compositeOperations. |
| * animation/KeyframeEffect.h: Switch the order in which we specify some of the Variant types so that default values |
| are correctly used. |
| * animation/KeyframeEffect.idl: Switch the order in which we specify some of the Variant types so that default values |
| are correctly used. |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::createFromCSSText): |
| (WebCore::TimingFunction::cssText const): |
| * platform/animation/TimingFunction.h: |
| |
| 2018-01-23 Brady Eidson <beidson@apple.com> |
| |
| Allow passing MessagePorts across processes (e.g. ServiceWorkers). |
| https://bugs.webkit.org/show_bug.cgi?id=181178 |
| |
| Reviewed by Andy Estes. |
| |
| Test: http/tests/workers/service/basic-messageport.html |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::MessagePort): |
| (WebCore::MessagePort::~MessagePort): |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::entanglePortWithProcess): |
| * dom/messageports/MessagePortChannel.h: |
| |
| * workers/service/SWClientConnection.cpp: |
| (WebCore::SWClientConnection::postMessageToServiceWorkerClient): |
| * workers/service/SWClientConnection.h: |
| |
| * workers/service/ServiceWorker.cpp: |
| (WebCore::ServiceWorker::postMessage): |
| |
| * workers/service/ServiceWorkerClient.cpp: |
| (WebCore::ServiceWorkerClient::postMessage): |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::postMessageToServiceWorker): |
| * workers/service/context/SWContextManager.h: |
| |
| 2018-01-23 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r227279 and r227373. |
| https://bugs.webkit.org/show_bug.cgi?id=181988 |
| |
| The LayoutTest crash fix introduced an API test failure. |
| (Requested by ryanhaddad on #webkit). |
| |
| Reverted changesets: |
| |
| "Resign NowPlaying status when no media element is eligible" |
| https://bugs.webkit.org/show_bug.cgi?id=181914 |
| https://trac.webkit.org/changeset/227279 |
| |
| "Resign NowPlaying status when no media element is eligible" |
| https://bugs.webkit.org/show_bug.cgi?id=181914 |
| https://trac.webkit.org/changeset/227373 |
| |
| 2018-01-23 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, fix some format specifiers added in r227190 |
| https://bugs.webkit.org/show_bug.cgi?id=181454 |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::takeAllMessagesForPort): |
| |
| 2018-01-23 Ting-Wei Lan <lantw44@gmail.com> |
| |
| [GTK] Add user agent quirk for Microsoft Outlook Web App |
| https://bugs.webkit.org/show_bug.cgi?id=181982 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Microsoft Outlook Web App forces users to switch to the lite version on |
| the login page with our standard user agent on all non-macOS systems. |
| Since it is an application that can be installed by different companies, |
| schools and organizations, it is not possible to fix the issue unless |
| we keep a big list of host names that are known to run it. We check the |
| host name instead of the base domain name here because it is not |
| expected to run all sites under a base domain on this webmail and |
| calendar application. |
| |
| https://mail.ntu.edu.tw is a site that is known to run Microsoft Outlook |
| Web App for several years, and it is not likely to change. When there |
| are other sites found to run it and having the same user agent problem, |
| we can expand the list to include them. |
| |
| * platform/UserAgentQuirks.cpp: |
| (WebCore::urlRequiresMacintoshPlatform): |
| |
| 2018-01-23 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [EME] Add support of multi keys from different sessions in CDMinstanceClearKey |
| https://bugs.webkit.org/show_bug.cgi?id=180083 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Add support of multi keys from different MediaKeySession in CDMInstanceClearKey. |
| |
| Currently the CDMInstanceClearKey manages two "m_keys", one is a WTF::Vector |
| where it stores the list of last added keys, an other which is defined in the |
| ClearKeyState::singleton it is a WTF::HashMap, in this last one, it stores the |
| keys lists of each created session. |
| |
| The method "keys()" of CDMInstanceClearKey returns the first "m_keys" which |
| contains just the list of last keys. |
| |
| The goal of this commit is to return all keys lists of all sessions, thus |
| we remove the "m_keys" which is WTF::Vector and we modify the method |
| "keys()" to return all keys lists, which is stored in "m_keys" WTF::HashMap, |
| in one Vector instead of return just the list of last keys. |
| |
| * platform/encryptedmedia/clearkey/CDMClearKey.cpp: |
| (WebCore::CDMInstanceClearKey::keys const): |
| (WebCore::CDMInstanceClearKey::updateLicense): |
| * platform/encryptedmedia/clearkey/CDMClearKey.h: |
| |
| 2018-01-22 Simon Fraser <simon.fraser@apple.com> |
| |
| Optimize building the non-fast scrollable region with multiple iframes |
| https://bugs.webkit.org/show_bug.cgi?id=181971 |
| |
| Reviewed by Zalan Bujtas. |
| |
| AsyncScrollingCoordinator::frameViewLayoutUpdated() is called every time a subframe lays out. |
| We don't need to eagerly update the non-fast scrollable region at this time; we can just mark |
| it dirty, and rely on the existing scrolling tree commit code to recompute it. |
| |
| On my machine this makes fast/frames/lots-of-objects.html no longer a timeout. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated): |
| |
| 2018-01-22 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement PublicKeyCredential's [[Create]] with a dummy authenticator |
| https://bugs.webkit.org/show_bug.cgi?id=181928 |
| <rdar://problem/36459893> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements PublicKeyCredential's [[Create]] from https://www.w3.org/TR/webauthn/#createCredential |
| as of 5 December 2017. In order to do testing, a dummy authenticator is implemented to exercise a failure |
| and a pass path. A number of dependencies need to be resolved later in order to comply with the spec. |
| Also, the current architecture of handling async WebAuthN operations including dispatching, timeout, and aborting |
| might need a redesign once the underlying authenticator is clear. Since this is our first attempt to implement |
| a prototype, all those limitations, in my opinion, can be marked as non-blocking to accelerate the whole |
| process. Those limitations will then be addressed once the first prototype is finshed. |
| |
| Tests: http/tests/webauthn/public-key-credential-create-with-invalid-parameters.https.html |
| http/tests/webauthn/public-key-credential-same-origin-with-ancestors-2.https.html |
| http/tests/webauthn/public-key-credential-same-origin-with-ancestors.https.html |
| http/wpt/webauthn/idl.https.html |
| http/wpt/webauthn/public-key-credential-create-failure.https.html |
| http/wpt/webauthn/public-key-credential-create-success.https.html |
| |
| * Modules/credentialmanagement/BasicCredential.h: |
| * Modules/credentialmanagement/BasicCredential.idl: |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::PendingPromise::PendingPromise): |
| (WebCore::CredentialsContainer::dispatchTask): |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::isCreate): |
| (WebCore::CredentialsContainer::preventSilentAccess const): |
| (WebCore::CredentialsContainer::preventSilentAccess): Deleted. |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| (WebCore::CredentialsContainer::PendingPromise::create): |
| * Modules/webauthn/Authenticator.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp. |
| (WebCore::Authenticator::singleton): |
| (WebCore::Authenticator::makeCredential const): |
| * Modules/webauthn/Authenticator.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h. |
| * Modules/webauthn/AuthenticatorAssertionResponse.cpp: |
| (WebCore::AuthenticatorAssertionResponse::authenticatorData const): |
| (WebCore::AuthenticatorAssertionResponse::signature const): |
| (WebCore::AuthenticatorAssertionResponse::userHandle const): |
| (WebCore::AuthenticatorAssertionResponse::~AuthenticatorAssertionResponse): Deleted. |
| (WebCore::AuthenticatorAssertionResponse::authenticatorData): Deleted. |
| (WebCore::AuthenticatorAssertionResponse::signature): Deleted. |
| (WebCore::AuthenticatorAssertionResponse::userHandle): Deleted. |
| * Modules/webauthn/AuthenticatorAssertionResponse.h: |
| (WebCore::AuthenticatorAssertionResponse::create): |
| * Modules/webauthn/AuthenticatorAttestationResponse.cpp: |
| (WebCore::AuthenticatorAttestationResponse::attestationObject const): |
| (WebCore::AuthenticatorAttestationResponse::~AuthenticatorAttestationResponse): Deleted. |
| (WebCore::AuthenticatorAttestationResponse::attestationObject): Deleted. |
| * Modules/webauthn/AuthenticatorAttestationResponse.h: |
| (WebCore::AuthenticatorAttestationResponse::create): |
| * Modules/webauthn/AuthenticatorResponse.cpp: |
| (WebCore::AuthenticatorResponse::clientDataJSON const): |
| (WebCore::AuthenticatorResponse::~AuthenticatorResponse): Deleted. |
| (WebCore::AuthenticatorResponse::clientDataJSON): Deleted. |
| * Modules/webauthn/AuthenticatorResponse.h: |
| * Modules/webauthn/AuthenticatorResponse.idl: |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJson): |
| (WebCore::PublicKeyCredentialInternal::produceClientDataJsonHash): |
| (WebCore::PublicKeyCredentialInternal::getIdFromAttestationObject): |
| (WebCore::PublicKeyCredential::PublicKeyCredential): |
| (WebCore::PublicKeyCredential::discoverFromExternalSource): |
| (WebCore::PublicKeyCredential::create): |
| (WebCore::PublicKeyCredential::rawId const): |
| (WebCore::PublicKeyCredential::response const): |
| (WebCore::PublicKeyCredential::getClientExtensionResults const): |
| (WebCore::PublicKeyCredential::rawId): Deleted. |
| (WebCore::PublicKeyCredential::response): Deleted. |
| (WebCore::PublicKeyCredential::getClientExtensionResults): Deleted. |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Modules/webauthn/PublicKeyCredential.idl: |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: |
| (): Deleted. |
| * Modules/webauthn/PublicKeyCredentialDescriptor.h: |
| * Modules/webauthn/PublicKeyCredentialDescriptor.idl: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSAuthenticatorResponseCustom.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp. |
| (WebCore::toJSNewlyCreated): |
| (WebCore::toJS): |
| * bindings/js/JSBasicCredentialCustom.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp. |
| (WebCore::toJSNewlyCreated): |
| (WebCore::toJS): |
| * bindings/js/JSBindingsAllInOne.cpp: |
| |
| 2018-01-22 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] Support font collections |
| https://bugs.webkit.org/show_bug.cgi?id=181826 |
| <rdar://problem/36455137> |
| |
| Reviewed by Dean Jackson. |
| |
| Use the CoreText call CTFontManagerCreateFontDescriptorsFromData() to get all the descriptors inside |
| the collection file. We select which one by using the fragment identifier at the end of the url linking |
| to the remote font. For example, to select the 4th font inside a TTC file, the @font-face block would |
| look like: |
| |
| @font-face { |
| font-family: "MyFont"; |
| src: url("path/to/font.ttc#4"); |
| } |
| |
| Note that these numbers are 1-indexed. |
| |
| The CSS Fonts spec states: |
| > Fragment identifiers are used to indicate which font to load. If a container format lacks a defined |
| > fragment identifier scheme, implementations should use a simple 1-based indexing scheme (e.g. |
| > "font-collection#1" for the first font, "font-collection#2" for the second font). |
| |
| Not only are TTC font collections supported, but WOFF2 font collections are also supported, which is |
| increasingly important web standard. |
| |
| No new tests because I don't have a font collection file with the appropriate license for the |
| WebKit repository. I tested manually. |
| |
| * css/CSSFontFaceSource.cpp: |
| (WebCore::CSSFontFaceSource::load): |
| * loader/cache/CachedFont.cpp: |
| (WebCore::CachedFont::calculateIndex const): |
| (WebCore::CachedFont::ensureCustomFontData): |
| (WebCore::CachedFont::createCustomFontData): |
| * loader/cache/CachedFont.h: |
| * platform/graphics/cairo/FontCustomPlatformData.h: |
| * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: |
| (WebCore::createFontCustomPlatformData): |
| * platform/graphics/mac/FontCustomPlatformData.cpp: |
| (WebCore::createFontCustomPlatformData): |
| * platform/graphics/mac/FontCustomPlatformData.h: |
| * platform/graphics/win/FontCustomPlatformData.cpp: |
| (WebCore::createFontCustomPlatformData): |
| * platform/graphics/win/FontCustomPlatformData.h: |
| * platform/graphics/win/FontCustomPlatformDataCairo.cpp: |
| (WebCore::createFontCustomPlatformData): |
| |
| 2018-01-22 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r227011): fast/frames/hidpi-position-iframe-on-device-pixel.html times out |
| https://bugs.webkit.org/show_bug.cgi?id=181959 |
| |
| Reviewed by Zalan Bujtas. |
| |
| This test creates 300 iframes, which became slow after r227011 because they all became part |
| of the non-fast scrollable region, slowing down ScrollingCoordinator::absoluteEventTrackingRegionsForFrame(). |
| |
| Fix by not adding non-scrollable iframes, and making FrameView::isScrollable() more efficient for frames |
| that have not done layout yet. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::isScrollable): |
| (WebCore::FrameView::addChild): |
| |
| 2018-01-22 Dan Bernstein <mitz@apple.com> |
| |
| Fixed building for macOS 10.12 with the macOS 10.13 SDK after r227156. |
| |
| * Configurations/WebCore.xcconfig: |
| |
| 2018-01-22 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r226981): ASSERTION FAILED: startY >= 0 && endY <= height && startY < endY in WebCore::FEMorphology::platformApplyGeneric |
| https://bugs.webkit.org/show_bug.cgi?id=181836 |
| |
| Reviewed by Tim Horton. |
| |
| All the filters that use ParallelJobs<> has the same type of bug where very wide but not tall |
| filter regions could result in computing an optimalThreadNumber that was greater than the |
| number of rows to process, which resulted in jobs with zero rows to process. |
| |
| Since we split the work by rows, cap the maximum number of threads to height/8 so that each job |
| has at least 8 rows of pixels to process. Add some assertions to detect jobs with zero rows. |
| |
| FEMorphology was also using implicit float -> int conversion to detect integer overflow of radius, |
| so change that to use explicit clamping. |
| |
| Tests: svg/filters/feLighting-parallel-jobs.svg |
| svg/filters/feTurbulence-parallel-jobs-wide.svg |
| |
| * platform/graphics/filters/FELighting.cpp: |
| (WebCore::FELighting::platformApplyGenericPaint): |
| (WebCore::FELighting::platformApplyGeneric): |
| * platform/graphics/filters/FEMorphology.cpp: |
| (WebCore::FEMorphology::platformApplyGeneric): |
| (WebCore::FEMorphology::platformApply): |
| (WebCore::FEMorphology::platformApplyDegenerate): |
| (WebCore::FEMorphology::platformApplySoftware): |
| * platform/graphics/filters/FETurbulence.cpp: |
| (WebCore::FETurbulence::fillRegion const): |
| (WebCore::FETurbulence::platformApplySoftware): |
| |
| 2018-01-22 Eric Carlson <eric.carlson@apple.com> |
| |
| Resign NowPlaying status when no media element is eligible |
| https://bugs.webkit.org/show_bug.cgi?id=181914 |
| <rdar://problem/35294116> |
| |
| Reviewed by Jer Noble. |
| |
| No new tests, these changes prevent existing tests from crashing. |
| |
| * html/HTMLMediaElement.h: |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::playbackPermitted const): Return early when the media |
| element has been suspended. |
| (WebCore::MediaElementSession::canShowControlsManager const): Return false when the |
| media element has been suspended. |
| (WebCore::isMainContentForPurposesOfAutoplay): Return early if it isn't safe to update |
| style because HitTest can force a layout. |
| (WebCore::MediaElementSession::updateIsMainContent const): Ditto. |
| |
| 2018-01-22 Alex Christensen <achristensen@webkit.org> |
| |
| Begin removing QTKit code |
| https://bugs.webkit.org/show_bug.cgi?id=181951 |
| |
| Reviewed by Jer Noble. |
| |
| QTKit was being used on El Capitan and before. |
| |
| * Configurations/WebCore.xcconfig: |
| * SourcesMac.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::buildMediaEnginesVector): |
| (WebCore::MediaPlayer::supportsType): |
| * platform/graphics/mac/MediaPlayerPrivateQTKit.h: Removed. |
| * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: Removed. |
| * platform/graphics/mac/MediaTimeQTKit.h: Removed. |
| * platform/graphics/mac/MediaTimeQTKit.mm: Removed. |
| * platform/mac/WebVideoFullscreenController.mm: |
| (-[WebVideoFullscreenController setVideoElement:]): |
| (-[WebVideoFullscreenController updatePowerAssertions]): |
| |
| 2018-01-22 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Null pointer crash under WebCore::RenderStyle::colorIncludingFallback. |
| https://bugs.webkit.org/show_bug.cgi?id=181801 |
| <rdar://problem/35614900> |
| |
| Reviewed by Brent Fulgham. |
| |
| Do not paint synchronously when popup items have been added or changed while the popup is visible. |
| If new popup items have been added after the popup was shown, a synchronous paint operation will |
| possibly access their style before it is ready, leading to a null pointer crash. The invalidated |
| area will be painted asynchronously. |
| |
| No new tests. To reproduce this crash, it is necessary to open a popup with JavaScript, add new |
| popup items, and then end the test. Opening the popup can be done by sending a mousedown event |
| with the eventsender. However, on Windows the mousedown event is sent synchronously, and will |
| block as long as the popup is open and running the popup event loop. This means no JS can be |
| executed until the popup is closed, causing the test to always time out before new popup items |
| can be added. I have verified the fix with a manual test case. |
| |
| * platform/win/PopupMenuWin.cpp: |
| (WebCore::PopupMenuWin::updateFromElement): |
| |
| 2018-01-22 Chris Dumez <cdumez@apple.com> |
| |
| RELEASE_ASSERT(registration) hit in SWServer::installContextData(const ServiceWorkerContextData&) |
| https://bugs.webkit.org/show_bug.cgi?id=181941 |
| <rdar://problem/36744892> |
| |
| Reviewed by Youenn Fablet. |
| |
| Make sure we clear SWServer::m_pendingContextDatas & SWServer::m_pendingJobs as needed |
| when clearing Website data. Otherwise, we will hit assertion when those gets processed |
| after the connection to the SW process has been established (not to mentioned we failed |
| to clear some in-memory data even though the user asked us to). |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::clearAll): |
| (WebCore::SWServer::clear): |
| |
| 2018-01-22 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Blob conversion and sanitization doesn't work with Microsoft Word for Mac 2011 |
| https://bugs.webkit.org/show_bug.cgi?id=181616 |
| <rdar://problem/36484908> |
| |
| Reviewed by Wenson Hsieh. |
| |
| The bug was caused by WebContentReader::readHTML and WebContentMarkupReader::readHTML not sanitizing plain HTML string |
| as done for web archives even when custom pasteboard data is enabled. Fixed the bug by doing the sanitization. |
| |
| Unfortunately, we can't make file URLs available in this case because WebContent process doesn't have sandbox extensions |
| to access local files referenced by the HTML source in the clipboard, and we can't make WebContent process request for |
| a sandbox extension¸on an arbitrary local file, as it would defeat the whole point of sandboxing. |
| |
| Instead, we strip away all HTML attributes referencing a URL whose scheme is not HTTP, HTTPS, or data when sanitizing |
| text/html from the clipboard to avoid exposing local file paths, which can reveal privacy & security sensitive data |
| such as the user's full name, and the location of private containers of other applications in the system. |
| |
| Tests: PasteHTML.DoesNotSanitizeHTMLWhenCustomPasteboardDataIsDisabled |
| PasteHTML.DoesNotStripFileURLsWhenCustomPasteboardDataIsDisabled |
| PasteHTML.ExposesHTMLTypeInDataTransfer |
| PasteHTML.KeepsHTTPURLs |
| PasteHTML.SanitizesHTML |
| PasteHTML.StripsFileURLs |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readHTML): Fixed the bug by sanitizing the markup, and stripping away file URLs. |
| (WebCore::WebContentMarkupReader::readHTML): Ditto. |
| * editing/markup.cpp: |
| (WebCore::removeSubresourceURLAttributes): Added. |
| (WebCore::sanitizeMarkup): Added. |
| * editing/markup.h: |
| |
| 2018-01-22 Chris Dumez <cdumez@apple.com> |
| |
| Add release logging to help debug issues related to service workers |
| https://bugs.webkit.org/show_bug.cgi?id=181935 |
| <rdar://problem/36735900> |
| |
| Reviewed by Brady Eidson. |
| |
| * workers/service/ServiceWorker.cpp: |
| (WebCore::ServiceWorker::ServiceWorker): |
| (WebCore::ServiceWorker::scheduleTaskToUpdateState): |
| (WebCore::ServiceWorker::postMessage): |
| (WebCore::ServiceWorker::isAlwaysOnLoggingAllowed const): |
| * workers/service/ServiceWorker.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::removeRegistration): |
| (WebCore::ServiceWorkerContainer::updateRegistration): |
| (WebCore::ServiceWorkerContainer::jobFailedWithException): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult): |
| (WebCore::ServiceWorkerContainer::startScriptFetchForJob): |
| (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript): |
| (WebCore::ServiceWorkerContainer::jobFailedLoadingScript): |
| (WebCore::ServiceWorkerContainer::isAlwaysOnLoggingAllowed const): |
| * workers/service/ServiceWorkerContainer.h: |
| * workers/service/ServiceWorkerRegistration.cpp: |
| (WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration): |
| (WebCore::ServiceWorkerRegistration::updateStateFromServer): |
| (WebCore::ServiceWorkerRegistration::scheduleTaskToFireUpdateFoundEvent): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::scriptContextFailedToStart): |
| (WebCore::SWServer::didFinishInstall): |
| (WebCore::SWServer::didFinishActivation): |
| (WebCore::SWServer::terminateWorkerInternal): |
| * workers/service/server/SWServerJobQueue.cpp: |
| (WebCore::SWServerJobQueue::didResolveRegistrationPromise): |
| (WebCore::SWServerJobQueue::runRegisterJob): |
| |
| 2018-01-22 Youenn Fablet <youenn@apple.com> |
| |
| Safari Tech Preview can't use GitHub login at forums.swift.org |
| https://bugs.webkit.org/show_bug.cgi?id=181908 |
| <rdar://problem/36715111> |
| |
| Reviewed by Chris Dumez. |
| |
| Test: http/wpt/service-workers/navigation-redirect.https.html |
| |
| For subresource loads, redirections will not change who is in charge of continuing the load (service worker or network process). |
| For navigation loads, we need to match the registration for every redirection since this is using the Manual redirect mode. |
| This allows starting the load with a service worker and finishing the load with another service worker, which will become the controller. |
| |
| Implement this by wrapping the registration matching of an URL within DocumentLoader::matchRegistration. |
| Use that method in DocumentLoader::redirectReceived. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::matchRegistration): |
| (WebCore::doRegistrationsMatch): |
| (WebCore::DocumentLoader::redirectReceived): |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * loader/DocumentLoader.h: |
| |
| 2018-01-22 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (Safari 11): Buttons inside a fieldset legend cannot be clicked on in Safari 11 |
| https://bugs.webkit.org/show_bug.cgi?id=179666 |
| <rdar://problem/35534292> |
| |
| Reviewed by Zalan Bujtas. |
| |
| The legend element of a fieldset is in the border area, outside the clip rect. |
| With overflow:hidden mouse events won't reach it. |
| |
| Test case by Dhaya Benmessaoud. |
| |
| Test: fast/forms/legend-overflow-hidden-hit-test.html |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::nodeAtPoint): |
| (WebCore::RenderBlock::hitTestExcludedChildrenInBorder): |
| |
| Add a special case to hit testing to handle legend, similarly to what is done for painting. |
| |
| * rendering/RenderBlock.h: |
| |
| 2018-01-22 Joanmarie Diggs <jdiggs@igalia.com> |
| |
| AX: Implement support for Graphics ARIA roles |
| https://bugs.webkit.org/show_bug.cgi?id=181796 |
| |
| Reviewed by Chris Fleizach. |
| |
| Add mappings for the three new roles (graphics-document, graphics-object, |
| and graphics-symbol) as per the Graphics Accessibility API Mappings spec. |
| |
| No new tests; instead, new test cases added to roles-computedRoleString.html |
| and roles-exposed.html. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::initializeRoleMap): |
| (WebCore::AccessibilityObject::computedRoleString const): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/atk/WebKitAccessibleWrapperAtk.cpp: |
| (atkRole): |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (createAccessibilityRoleMap): |
| (-[WebAccessibilityObjectWrapper subrole]): |
| (-[WebAccessibilityObjectWrapper roleDescription]): |
| |
| 2018-01-22 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION(r224535): Can't write reviews in the App Store |
| https://bugs.webkit.org/show_bug.cgi?id=181936 |
| <rdar://problem/36670246> |
| |
| Reviewed by Zalan Bujtas. |
| |
| * page/LayoutContext.cpp: |
| (WebCore::LayoutContext::updateStyleForLayout): |
| |
| r224535 was about media queries but it also removed a seemingly spurious call to SyleScope::didChangeStyleSheetEnvironment |
| from the path that does not involve media queries. |
| Turns out UITextContentView somehow depended on it, so revert this specific change. |
| |
| 2018-01-22 Brady Eidson <beidson@apple.com> |
| |
| In WebKit2, make the MessagePortChannelRegistry live in the UI process. |
| https://bugs.webkit.org/show_bug.cgi?id=181922 |
| |
| Reviewed by Andy Estes. |
| |
| No new tests (Refactor, no behavior change) |
| |
| Add encoder/decoders and EXPORT a whole bunch of stuff. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * dom/MessagePort.h: |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::processForPort): |
| * dom/messageports/MessagePortChannel.h: |
| |
| * dom/messageports/MessagePortChannelProvider.h: |
| * dom/messageports/MessagePortChannelRegistry.h: |
| |
| * dom/messageports/MessageWithMessagePorts.h: |
| (WebCore::MessageWithMessagePorts::encode const): |
| (WebCore::MessageWithMessagePorts::decode): |
| |
| 2018-01-22 Youenn Fablet <youenn@apple.com> |
| |
| Fetch Headers from an Opaque response should be filtered out |
| https://bugs.webkit.org/show_bug.cgi?id=181926 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| |
| Refactor to use the same FetchResponse::create for Cache API and cloning. |
| In this method, ensure that response and headers are filtered correctly according response tainting. |
| Make also sure that synthetic responses do not get filtered (not needed since created by JavaScript). |
| |
| Introduce helper routine to set the header map of a resource response. |
| Use this routine when cloning a synthetic response as in that case, m_internalResponse has no header at all. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::updateRecords): |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::create): |
| (WebCore::FetchResponse::clone): |
| * Modules/fetch/FetchResponse.h: |
| * platform/network/ResourceResponseBase.cpp: |
| (WebCore::ResourceResponseBase::setHTTPHeaderFields): |
| * platform/network/ResourceResponseBase.h: |
| * testing/ServiceWorkerInternals.cpp: |
| (WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse): |
| |
| 2018-01-22 Javier Fernandez <jfernandez@igalia.com> |
| |
| [css-align] 'overflow' keyword must precede the self-position and content-position value |
| https://bugs.webkit.org/show_bug.cgi?id=181793 |
| |
| Reviewed by Antti Koivisto. |
| |
| There were several discussions to avoid ambiguities with the complex |
| values, specially when it comes to define the place-xxx shorthands. |
| |
| One of the sources of problems is the 'overflow-position' keyword. The |
| CSS WG has decided to change the syntax of all the CSS Box Alignment |
| properties so that the 'overflow-position' keyword always precede the |
| 'self-position' or the 'content-position' keywords. |
| |
| https://github.com/w3c/csswg-drafts/issues/1446#event-1125715434 |
| |
| In order to apply this change to the Content Distribution properties' |
| (align-content and justify-content) syntax I had to completely |
| re-implement their parsing function. Thanks to this I addressed also |
| the issue with the content-distribution fallback, which cannot be |
| specified explicitly now. |
| |
| https://github.com/w3c/csswg-drafts/issues/1002#ref-commit-c38cac4 |
| |
| No new tests, just rebaselined the expected results of the test cases affected. |
| |
| Despite the so many layout tests affected by this change, it's |
| unlikely that it might break any content in current web |
| sites. This patch changes the new CSS syntax, obviously backward |
| compatible, defined by the new CSS Box Alignment. The |
| 'overflow-position' keyword is only used by the layout models |
| implementing the new spec, so far only CSS Grid Layout. |
| Considering that CSS Grid has been shipped last year, it's unlikely |
| that many sites are using the new CSS values. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::valueForItemPositionWithOverflowAlignment): |
| (WebCore::valueForContentPositionAndDistributionWithOverflowAlignment): |
| * css/CSSContentDistributionValue.cpp: |
| (WebCore::CSSContentDistributionValue::customCSSText const): |
| * css/StyleBuilderConverter.h: |
| (WebCore::StyleBuilderConverter::convertSelfOrDefaultAlignmentData): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeOverflowPositionKeyword): |
| (WebCore::consumeContentPositionKeyword): |
| (WebCore::consumeContentDistributionOverflowPosition): |
| (WebCore::consumeSelfPositionOverflowPosition): |
| |
| 2018-01-22 Chris Nardi <csnardi1@gmail.com> |
| |
| Parse calc() in CSS media queries |
| https://bugs.webkit.org/show_bug.cgi?id=181716 |
| |
| calc() was previously unsupported inside of media queries. This change |
| adds in support for parsing calc inside of media queries. |
| |
| Reviewed by Antti Koivisto. |
| |
| Tests: Imported web-platform-tests/css/mediaqueries |
| |
| * css/MediaQueryExpression.cpp: |
| (WebCore::featureWithValidIdent): Updated function to take a CSSPrimitiveValue. |
| (WebCore::featureWithValidDensity): Updated function to take a CSSPrimitiveValue instead of a CSSParserToken. |
| (WebCore::featureWithValidPositiveLength): Ditto. |
| (WebCore::featureExpectingPositiveInteger): Ditto. |
| (WebCore::featureWithPositiveInteger): Ditto. |
| (WebCore::featureWithPositiveNumber): Ditto. |
| (WebCore::featureWithZeroOrOne): Ditto. |
| (WebCore::MediaQueryExpression::MediaQueryExpression): Use CSSPropertyParserHelpers for consuming. |
| * css/MediaQueryExpression.h: |
| * css/parser/CSSPropertyParserHelpers.cpp: |
| (WebCore::CSSPropertyParserHelpers::consumeResolution): Added function for use in media query expression parsing. |
| * css/parser/CSSPropertyParserHelpers.h: |
| * css/parser/MediaQueryParser.cpp: |
| (WebCore::MediaQueryParser::readRestrictor): Updated functions to take a CSSParserTokenRange in order to use CSSPropertyParserHelpers. |
| (WebCore::MediaQueryParser::readMediaNot): Ditto. |
| (WebCore::MediaQueryParser::readMediaType): Ditto. |
| (WebCore::MediaQueryParser::readAnd): Ditto. |
| (WebCore::MediaQueryParser::readFeatureStart): Ditto. |
| (WebCore::MediaQueryParser::readFeature): Ditto. |
| (WebCore::MediaQueryParser::readFeatureColon): Ditto. |
| (WebCore::MediaQueryParser::readFeatureValue): Ditto. |
| (WebCore::MediaQueryParser::readFeatureEnd): Ditto. |
| (WebCore::MediaQueryParser::skipUntilComma): Ditto. |
| (WebCore::MediaQueryParser::skipUntilBlockEnd): Ditto. |
| (WebCore::MediaQueryParser::processToken): Ditto. |
| (WebCore::MediaQueryParser::parseInternal): Ditto. |
| (WebCore::MediaQueryData::clear): Removed reference to m_valueList |
| (WebCore::MediaQueryData::addExpression): Use CSSParserTokenRange. |
| (WebCore::MediaQueryData::lastExpressionValid): New helper function. |
| (WebCore::MediaQueryData::removeLastExpression): New helper function. |
| * css/parser/MediaQueryParser.h: |
| |
| 2018-01-22 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Refactor PlatformContextCairo::drawSurfaceToContext() into a Cairo operation |
| https://bugs.webkit.org/show_bug.cgi?id=181930 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Move the PlatformContextCairo::drawSurfaceToContext() code into the |
| Cairo namespace as an operation, renaming it to drawSurface(). Mirroring |
| other operations, the PlatformContextCairo object is now passed through |
| a reference as the first argument to the function, and cairo_t context |
| object is retrieved from that. |
| |
| Call sites of the PlatformContextCairo::drawSurfaceToContext() method |
| are adjusted to now call Cairo::drawSurface() and properly pass the |
| PlatformContextCairo object to the function. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::prepareForStroking): Make this static. |
| (WebCore::Cairo::drawPatternToCairoContext): |
| (WebCore::Cairo::drawNativeImage): |
| (WebCore::Cairo::drawSurface): |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/PlatformContextCairo.cpp: |
| (WebCore::drawPatternToCairoContext): Deleted. |
| (WebCore::PlatformContextCairo::drawSurfaceToContext): Deleted. |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: |
| (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame): |
| |
| 2018-01-22 Manuel Rego Casasnovas <rego@igalia.com> |
| |
| [css-grid] Spanning Grid item has too much space at the bottom / is too high |
| https://bugs.webkit.org/show_bug.cgi?id=181677 |
| |
| Reviewed by Javier Fernandez. |
| |
| In IndefiniteSizeStrategy::findUsedFlexFraction() we were not |
| subtracting the size of the gutters when we call findFrUnitSize(). |
| If an item spans several tracks, we cannot pass the maxContentForChild() |
| directly, we need to subtract the gutters as they are treated |
| as fixed size tracks in the algorithm. |
| |
| The spec text is pretty clear regarding this |
| (https://drafts.csswg.org/css-grid/#algo-find-fr-size): |
| "Let leftover space be the space to fill minus the base sizes |
| of the non-flexible grid tracks." |
| |
| Gutters are treated as fixed-size tracks for the purpose |
| of the track sizing algorithm, so we need to subtract them from the |
| leftover space while finding the size of an "fr". |
| |
| Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html |
| imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::GridTrackSizingAlgorithm::findFrUnitSize const): |
| (WebCore::IndefiniteSizeStrategy::findUsedFlexFraction const): |
| |
| 2018-01-21 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Turning off custom pasteboard data doesn't actually turn it off in WK2 |
| https://bugs.webkit.org/show_bug.cgi?id=181920 |
| <rdar://problem/36686429> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Replaced the global settings for custom pasteboard data by regular runtime enabled flags. |
| |
| * dom/DataTransfer.cpp: |
| (WebCore::DataTransfer::getDataForItem const): |
| (WebCore::DataTransfer::shouldSuppressGetAndSetDataToAvoidExposingFilePaths const): |
| (WebCore::DataTransfer::setDataFromItemList): |
| (WebCore::DataTransfer::types const): |
| (WebCore::DataTransfer::commitToPasteboard): |
| * dom/DataTransferItemList.cpp: |
| (WebCore::shouldExposeTypeInItemList): |
| * editing/Editor.cpp: |
| (WebCore::createDataTransferForClipboardEvent): |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::createFragmentAndAddResources): |
| (WebCore::WebContentReader::readWebArchive): |
| * page/DeprecatedGlobalSettings.cpp: |
| (WebCore::DeprecatedGlobalSettings::defaultCustomPasteboardDataEnabled): Deleted. |
| * page/DeprecatedGlobalSettings.h: |
| (WebCore::DeprecatedGlobalSettings::setCustomPasteboardDataEnabled): Deleted. |
| (WebCore::DeprecatedGlobalSettings::customPasteboardDataEnabled): Deleted. |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setCustomPasteboardDataEnabled): |
| (WebCore::RuntimeEnabledFeatures::customPasteboardDataEnabled const): |
| * testing/InternalSettings.cpp: |
| (WebCore::InternalSettings::Backup::Backup): |
| (WebCore::InternalSettings::Backup::restoreTo): |
| (WebCore::InternalSettings::setCustomPasteboardDataEnabled): |
| |
| 2018-01-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add a new feature flag for EXTRA_ZOOM_MODE and reintroduce AdditionalFeatureDefines.h |
| https://bugs.webkit.org/show_bug.cgi?id=181918 |
| |
| Reviewed by Tim Horton. |
| |
| Add EXTRA_ZOOM_MODE to FeatureDefines.xconfig (off by default). No change in behavior. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-01-19 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assertion in canExecuteScript when executing scripts during page cache restore |
| https://bugs.webkit.org/show_bug.cgi?id=181902 |
| |
| Reviewed by Antti Koivisto. |
| |
| The crash was caused by an erroneous instantiation of ScriptDisallowedScope::InMainThread in CachedPage::restore. |
| It can execute arbitrary scripts since CachedFrame::open can update style, layout, and evaluate media queries. |
| |
| This is fine because there is no way to put this page back into a page cache until the load is commited via |
| FrameLoader::commitProvisionalLoad is invoked later which only happens after CachedPage::restore had exited. |
| |
| Also added a release assert to make sure this condition holds. |
| |
| Tests: fast/history/page-cache-execute-script-during-restore.html |
| fast/history/page-cache-navigate-during-restore.html |
| |
| * history/CachedPage.cpp: |
| (WebCore::CachedPageRestorationScope::CachedPageRestorationScope): Added. |
| (WebCore::CachedPageRestorationScope::~CachedPageRestorationScope): Added. |
| (WebCore::CachedPage::restore): Don't instantiate ScriptDisallowedScope::InMainThread. Set isRestoringCachedPage |
| on the cached pate to release-assert that there won't be any attempt to put this very page back into the cache. |
| * history/PageCache.cpp: |
| (WebCore::canCachePage): Added a release assert to make sure the page which is in the process of being restored |
| from the page cache is not put into the page cache. |
| * page/Page.h: |
| (WebCore::Page::setIsRestoringCachedPage): Added. |
| (WebCore::Page::isRestoringCachedPage const): Added. |
| |
| 2018-01-21 Eric Carlson <eric.carlson@apple.com> |
| |
| Resign NowPlaying status when no media element is eligible |
| https://bugs.webkit.org/show_bug.cgi?id=181914 |
| <rdar://problem/35294116> |
| |
| Reviewed by Jer Noble. |
| |
| Updated API test. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::removedFromAncestor): Call mediaSession->clientCharacteristicsChanged |
| so NowPlaying status will be updated. |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::canShowControlsManager const): Return false when being queried |
| for NowPlaying status in an inactive document. |
| |
| * platform/audio/PlatformMediaSessionManager.cpp: |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): Implement in for all |
| ports. |
| * platform/audio/PlatformMediaSessionManager.h: |
| (WebCore::PlatformMediaSessionManager::registeredAsNowPlayingApplication const): |
| * platform/audio/ios/MediaSessionManagerIOS.h: |
| * platform/audio/mac/MediaSessionManagerMac.h: |
| * platform/audio/mac/MediaSessionManagerMac.mm: |
| (WebCore::MediaSessionManagerMac::updateNowPlayingInfo): Call MRMediaRemoteSetCanBeNowPlayingApplication |
| whenever status changes. |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): Deleted, implemented |
| in the base class. |
| |
| 2018-01-21 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION (macOS 10.13.2): imported/w3c/web-platform-tests/media-source/mediasource-* LayoutTests failing |
| https://bugs.webkit.org/show_bug.cgi?id=181891 |
| |
| Reviewed by Eric Carlson. |
| |
| In macOS 10.13.2, CoreMedia changed the definition of CMSampleBufferGetDuration() to return |
| the presentation duration rather than the decode duration. For media streams where those two |
| durations are identical (or at least, closely similar), this isn't a problem. But the media |
| file used in the WPT tests have an unusual frame cadence: decode durations go {3000, 1, 5999, |
| 1, 5999,...} and presentation durations go {3000, 2999, 3000, 2999}. This caused one check in |
| the "Coded Frame Processing" algorithm to begin failing, where it checks that the delta |
| between the last sample's decode time and the new decode time is no more than 2x as far as |
| the last sample's duration. That's not a problem as long as the "duration" is the "decode |
| duration" and the samples are all adjacent. Once the "duration" is "presentation duration", |
| all the assumptions in the algorithm are invalidated. In the WPT test case, the delta between |
| decode times is 5999, and 2 * the presentation duration is 5998, causing all samples up to |
| the next sync sample to be dropped. |
| |
| To work around this change in behavior, we'll adopt the same technique used by Mozilla's MSE |
| implementation, which was done for similar reasons. Rather than track the "last frame duration", |
| we'll record the "greatest frame duration", and use actual decode timestamps to derive this |
| duration. The "greatest frame duration" field will be reset at the same times as "last frame |
| duration", and will be used only in the part of the algorithm that checks for large decode |
| timestamp gaps. |
| |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::SourceBuffer::TrackBuffer::TrackBuffer): |
| (WebCore::SourceBuffer::resetParserState): |
| (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample): |
| |
| 2018-01-21 Andy Estes <aestes@apple.com> |
| |
| [ios] LayoutTest imported/w3c/web-platform-tests/payment-request/rejects_if_not_active.https.html is crashing in JSC::JSONParse |
| https://bugs.webkit.org/show_bug.cgi?id=177832 |
| <rdar://problem/34805315> |
| |
| Reviewed by Tim Horton. |
| |
| Test: http/tests/paymentrequest/rejects_if_not_active.https.html |
| |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::PaymentRequest::show): Rejected promise if the document is not active. |
| |
| 2018-01-20 Brady Eidson <beidson@apple.com> |
| |
| Make garbage collection of MessagePort objects be asynchronous. |
| https://bugs.webkit.org/show_bug.cgi?id=181910 |
| |
| Reviewed by Andy Estes. |
| |
| No new tests (Covered by existing tests, including GC-specific ones). |
| |
| The basic premise here is as follows: |
| - You can *always* GC a MessagePort that is closed |
| - You can *always* GC a MessagePort that has no onmessage handler, as incoming messages cannot |
| possibly revive it. |
| - You can GC a MessagePort, even if it has a message handler, as long as there are no messages |
| in flight between it and the remote port, and as long as the remote port is "maybe eligible for GC." |
| |
| A MessagePort is considered "maybe eligible for GC" once hasPendingActivity is asked once. |
| |
| A MessagePort loses "maybe eligible for GC" status once it is used for sending or receiving a message. |
| |
| The changes to MessagePort.cpp implement the above with a tiny little bool-driven state machine. |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::postMessage): |
| (WebCore::MessagePort::disentangle): |
| (WebCore::MessagePort::registerLocalActivity): |
| (WebCore::MessagePort::start): |
| (WebCore::MessagePort::close): |
| (WebCore::MessagePort::contextDestroyed): |
| (WebCore::MessagePort::dispatchMessages): |
| (WebCore::MessagePort::hasPendingActivity const): |
| (WebCore::MessagePort::isLocallyReachable const): |
| (WebCore::MessagePort::addEventListener): |
| (WebCore::MessagePort::removeEventListener): |
| * dom/MessagePort.h: |
| |
| - Remove the lock and any background-thread code paths |
| - Add ASSERT(isMainThread())s throughout |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::MessagePortChannel): |
| (WebCore::MessagePortChannel::includesPort): |
| (WebCore::MessagePortChannel::entanglePortWithProcess): |
| (WebCore::MessagePortChannel::disentanglePort): |
| (WebCore::MessagePortChannel::closePort): |
| (WebCore::MessagePortChannel::postMessageToRemote): |
| (WebCore::MessagePortChannel::takeAllMessagesForPort): |
| (WebCore::MessagePortChannel::checkRemotePortForActivity): |
| (WebCore::MessagePortChannel::hasAnyMessagesPendingOrInFlight const): |
| * dom/messageports/MessagePortChannel.h: |
| |
| Add a callback for a MessagePortChannel to go ask the remote MessagePort object about local activity: |
| * dom/messageports/MessagePortChannelProvider.h: |
| * dom/messageports/MessagePortChannelProviderImpl.cpp: |
| (WebCore::MessagePortChannelProviderImpl::checkRemotePortForActivity): |
| (WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): |
| (WebCore::MessagePortChannelProviderImpl::hasMessagesForPorts_temporarySync): Deleted. |
| * dom/messageports/MessagePortChannelProviderImpl.h: |
| |
| - Remove the lock and any background-thread code paths |
| - Add ASSERT(isMainThread())s throughout |
| * dom/messageports/MessagePortChannelRegistry.cpp: |
| (WebCore::MessagePortChannelRegistry::messagePortChannelCreated): |
| (WebCore::MessagePortChannelRegistry::messagePortChannelDestroyed): |
| (WebCore::MessagePortChannelRegistry::didEntangleLocalToRemote): |
| (WebCore::MessagePortChannelRegistry::didDisentangleMessagePort): |
| (WebCore::MessagePortChannelRegistry::didCloseMessagePort): |
| (WebCore::MessagePortChannelRegistry::didPostMessageToRemote): |
| (WebCore::MessagePortChannelRegistry::takeAllMessagesForPort): |
| (WebCore::MessagePortChannelRegistry::checkRemotePortForActivity): |
| (WebCore::MessagePortChannelRegistry::existingChannelContainingPort): |
| (WebCore::MessagePortChannelRegistry::hasMessagesForPorts_temporarySync): Deleted. |
| * dom/messageports/MessagePortChannelRegistry.h: |
| |
| 2018-01-20 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Stop eagerly loading PassKit.framework |
| https://bugs.webkit.org/show_bug.cgi?id=181911 |
| <rdar://problem/36555369> |
| |
| Reviewed by Tim Horton. |
| |
| r226458 and r226123 added code that caused PassKit.framework to be eagerly loaded when |
| initializing a WKWebView. This is costly and should only be done when Apple Pay is first used. |
| |
| To avoid eagerly loading PassKit, this patch does two things: |
| |
| 1. Instead of sending the available payment networks as part of WebPageCreationParameters, |
| PaymentCoordinator asks for them using a syncrhonous message the first time they are needed. |
| 2. Instead of setting the Apple Pay preference to false when PassKit can't be loaded, |
| the following API entry points check for a missing PassKit and return false, or throw |
| exceptions, or reject promises: |
| - ApplePaySession.canMakePayments() |
| - ApplePaySession.canMakePaymentsWithActiveCard() |
| - ApplePaySession.openPaymentSetup() |
| - ApplePaySession.begin() |
| |
| No new tests for (1), which causes no change in behavior. (2) was manually verified by |
| locally moving aside PassKit.framework, but that's not possible to do in an automated test. |
| |
| * Modules/applepay/PaymentCoordinator.cpp: |
| (WebCore::PaymentCoordinator::PaymentCoordinator): |
| (WebCore::PaymentCoordinator::validatedPaymentNetwork const): |
| (WebCore::toHashSet): Deleted. |
| * Modules/applepay/PaymentCoordinator.h: |
| * Modules/applepay/PaymentCoordinatorClient.h: |
| * loader/EmptyClients.cpp: |
| * page/MainFrame.cpp: |
| (WebCore::MainFrame::MainFrame): |
| |
| Removed PaymentCoordinator::m_availablePaymentNetworks and made |
| PaymentCoordinator::validatedPaymentNetwork() call |
| PaymentCoordinatorClient::validatedPaymentNetwork() instead. |
| |
| * page/PageConfiguration.h: |
| |
| Removed availablePaymentNetworks from PageConfiguration. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::Internals): |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::validatedPaymentNetwork): |
| * testing/MockPaymentCoordinator.h: |
| |
| Implemented PaymentCoordinatorClient::validatedPaymentNetwork(). |
| |
| 2018-01-20 Jer Noble <jer.noble@apple.com> |
| |
| Release ASSERT when reloading Vimeo page @ WebCore: WebCore::Document::updateLayout |
| https://bugs.webkit.org/show_bug.cgi?id=181840 |
| <rdar://problem/36186214> |
| |
| Reviewed by Simon Fraser. |
| |
| Test: media/video-fullscreen-reload-crash.html |
| |
| Short circuit play() or pause() operations if the document is suspended or stopped. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::playInternal): |
| (WebCore::HTMLMediaElement::pauseInternal): |
| |
| 2018-01-20 Youenn Fablet <youenn@apple.com> |
| |
| fetch redirect is incompatible with "no-cors" mode |
| https://bugs.webkit.org/show_bug.cgi?id=181866 |
| <rdar://problem/35827140> |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated tests. |
| |
| Return a network error when no-cors mode and redirect mode is manual or error. |
| Update preflight implementation to no longer use manual redirect mode to simulate https://fetch.spec.whatwg.org/#http-network-or-cache-fetch. |
| Instead implement redirectReceived callback to treat any redirect response as the preflight response. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::canRequest): |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::redirectReceived): |
| (WebCore::CrossOriginPreflightChecker::startPreflight): |
| * loader/CrossOriginPreflightChecker.h: |
| |
| 2018-01-19 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] [WK2] Drag location is computed incorrectly when dragging content from subframes |
| https://bugs.webkit.org/show_bug.cgi?id=181896 |
| <rdar://problem/35479043> |
| |
| Reviewed by Tim Horton. |
| |
| In r218837, I packaged most of the information needed to start a drag into DragItem, which is propagated to the client layer |
| via the startDrag codepath. However, this introduced a bug in computing the event position and drag location in window |
| coordinates. Consider the case where we're determining the drag image offset for a dragged element in a subframe: |
| |
| Before the patch, the drag location (which starts out in the subframe's content coordinates) would be converted to root view |
| coordinates, which would then be converted to mainframe content coordinates, which would then be converted to window coordinates |
| using the mainframe's view. After the patch, we carry out the same math until the last step, where we erroneously use the |
| _subframe's_ view to convert to window coordinates from content coordinates. This results in the position of the iframe relative |
| to the mainframe being accounted for twice. |
| |
| To fix this, we simply use the main frame's view to convert from mainframe content coordinates to window coordinates while |
| computing the drag location. As for the event position in window coordinates, this is currently unused by any codepath in WebKit, |
| so we can just remove it altogether. |
| |
| Since this bug only affects drag and drop in the macOS WebKit2 port, there's currently no way to test this. I'll be using |
| <https://bugs.webkit.org/show_bug.cgi?id=181898> to track adding test support for drag and drop on macOS WebKit2. Manually tested |
| dragging in both WebKit1 and WebKit2 on macOS. dragLocationInWindowCoordinates isn't used at all for iOS drag and drop. |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::doSystemDrag): |
| * platform/DragItem.h: |
| (WebCore::DragItem::encode const): |
| (WebCore::DragItem::decode): |
| |
| 2018-01-19 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r227235. |
| |
| The test for this change consistently times out on High |
| Sierra. |
| |
| Reverted changeset: |
| |
| "Support for preconnect Link headers" |
| https://bugs.webkit.org/show_bug.cgi?id=181657 |
| https://trac.webkit.org/changeset/227235 |
| |
| 2018-01-19 Youenn Fablet <youenn@apple.com> |
| |
| Cache storage errors like Quota should trigger console messages |
| https://bugs.webkit.org/show_bug.cgi?id=181879 |
| <rdar://problem/36669048> |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by rebased test. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::retrieveRecords): |
| (WebCore::DOMCache::batchDeleteOperation): |
| (WebCore::DOMCache::batchPutOperation): |
| * Modules/cache/DOMCacheEngine.cpp: |
| (WebCore::DOMCacheEngine::errorToException): |
| (WebCore::DOMCacheEngine::logErrorAndConvertToException): |
| * Modules/cache/DOMCacheEngine.h: |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::retrieveCaches): |
| (WebCore::DOMCacheStorage::doOpen): |
| (WebCore::DOMCacheStorage::doRemove): |
| |
| 2018-01-19 Youenn Fablet <youenn@apple.com> |
| |
| Do not go to the storage process when registering a service worker client if there is no service worker registered |
| https://bugs.webkit.org/show_bug.cgi?id=181740 |
| <rdar://problem/36650400> |
| |
| Reviewed by Chris Dumez. |
| |
| Register a document as service worker client only if there is an existing service worker connection. |
| This allows not creating any connection if no service worker is registered. |
| |
| Add internals API to test whether a service worker connection was created or not. |
| This is used by API tests that cover the changes. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::privateBrowsingStateDidChange): No need to create a service worker connection if client is not registered yet. |
| (WebCore::Document::setServiceWorkerConnection): No need to unregister/register if service worker connection is the same. |
| Similarly, if Document is to be destroyed or suspended, we should not register it. |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::commitData): |
| * testing/Internals.cpp: |
| (WebCore::Internals::hasServiceWorkerConnection): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * workers/service/ServiceWorkerProvider.cpp: |
| (WebCore::ServiceWorkerProvider::registerServiceWorkerClients): |
| * workers/service/ServiceWorkerProvider.h: |
| |
| 2018-01-19 Dean Jackson <dino@apple.com> |
| |
| REGRESSION (r221092): Swipe actions are hard to perform in FastMail app |
| https://bugs.webkit.org/show_bug.cgi?id=181817 |
| <rdar://problem/35274055> |
| |
| Add a setting for controlling whether touch listeners are passive |
| by default on document/window/body. |
| |
| Updated existing test. |
| |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::addEventListener): |
| * page/Settings.yaml: |
| |
| 2018-01-19 Daniel Bates <dabates@apple.com> |
| |
| Update frame-ancestor directive to match Content Security Policy Level 3 |
| https://bugs.webkit.org/show_bug.cgi?id=178891 |
| <rdar://problem/35209458> |
| |
| Reviewed by Alex Christensen. |
| |
| Derived from Blink e667cc2e501fabab3605b838e4ee0d642a9c4a59: |
| <https://chromium.googlesource.com/chromium/src.git/+/e667cc2e501fabab3605b838e4ee0d642a9c4a59> |
| |
| Update frame-ancestor directive to match against the origin of the ancestor document per the |
| Content Security Policy Level 3 spec.: <https://w3c.github.io/webappsec-csp/> (15 January 2018). |
| Specifically this change in behavior was made to CSP 3 in <https://github.com/w3c/webappsec/issues/311>. |
| In earlier versions of the spec, the frame-ancestor directive matched against the URL of the |
| ancestor document. |
| |
| Disregarding allow-same-origin sandboxed iframes, a document with policy "frame-ancestor 'self'" |
| will be blocked from loading in a sandboxed iframe as a result of this change. |
| |
| Tests: http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-allow-same-origin-sandboxed-cross-url-allow.html |
| http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-sandboxed-cross-url-block.html |
| |
| * page/csp/ContentSecurityPolicyDirectiveList.cpp: |
| (WebCore::checkFrameAncestors): |
| |
| 2018-01-19 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Add timeout support to XMLHttpRequest |
| https://bugs.webkit.org/show_bug.cgi?id=181876 |
| |
| Reviewed by Alex Christensen |
| |
| * platform/network/ResourceRequestBase.cpp: |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::CurlHandle::setTimeout): |
| * platform/network/curl/CurlContext.h: |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::setupTransfer): |
| (WebCore::CurlRequest::didCompleteTransfer): |
| * platform/network/curl/ResourceError.h: |
| * platform/network/curl/ResourceErrorCurl.cpp: |
| (WebCore::ResourceError::httpError): |
| |
| 2018-01-19 Yoav Weiss <yoav@yoav.ws> |
| |
| Support for preconnect Link headers |
| https://bugs.webkit.org/show_bug.cgi?id=181657 |
| |
| Reviewed by Darin Adler. |
| |
| Move the preconnect functionality into its own function, and |
| also call this function when Link headers are processed. |
| |
| Test: http/tests/preconnect/link-header-rel-preconnect-http.php |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::loadLinksFromHeader): Call preconnectIfNeeded. |
| (WebCore::LinkLoader::preconnectIfNeeded): Preconnect to a host functionality moved here. |
| (WebCore::LinkLoader::loadLink): Call preconnectIfNeeded. |
| * loader/LinkLoader.h: |
| |
| 2018-01-19 Joseph Pecoraro <pecoraro@apple.com> |
| |
| AppCache: Log a Deprecation warning to the Console when AppCache is used |
| https://bugs.webkit.org/show_bug.cgi?id=181778 |
| |
| Reviewed by Alex Christensen. |
| |
| * html/HTMLHtmlElement.cpp: |
| (WebCore::HTMLHtmlElement::insertedByParser): |
| |
| 2018-01-19 Chris Dumez <cdumez@apple.com> |
| |
| ASSERT(registration || isTerminating()) hit in SWServerWorker::skipWaiting() |
| https://bugs.webkit.org/show_bug.cgi?id=181761 |
| <rdar://problem/36594564> |
| |
| Reviewed by Youenn Fablet. |
| |
| There is a short period of time, early in the registration process where a |
| SWServerWorker object exists for a registration but is not in the registration's |
| installing/waiting/active slots yet. As a result, if a registration is cleared |
| during this period (for e.g. due to the user clearing all website data), that |
| SWServerWorker will not be terminated. We then hit assertion later on when this |
| worker is trying to do things (like call skipWaiting). |
| |
| To address the issue, we now keep a reference this SWServerWorker on the |
| registration, via a new SWServerRegistration::m_preInstallationWorker data member. |
| When the registration is cleared, we now take care of terminating this worker. |
| |
| No new tests, covered by existing tests that crash flakily in debug builds. |
| |
| * workers/WorkerThread.cpp: |
| (WebCore::WorkerThread::stop): |
| if the mutex is locked, then the worker thread is still starting. We spin the |
| runloop and try to stop again later. This avoids the deadlock shown in |
| Bug 181763 as the worker thread may need to interact with the main thread |
| during startup. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::installContextData): |
| * workers/service/server/SWServerJobQueue.cpp: |
| (WebCore::SWServerJobQueue::scriptContextFailedToStart): |
| (WebCore::SWServerJobQueue::install): |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::~SWServerRegistration): |
| (WebCore::SWServerRegistration::setPreInstallationWorker): |
| (WebCore::SWServerRegistration::clear): |
| * workers/service/server/SWServerRegistration.h: |
| (WebCore::SWServerRegistration::preInstallationWorker const): |
| |
| 2018-01-19 Chris Dumez <cdumez@apple.com> |
| |
| Service worker registrations restored from disk may not be reused when the JS calls register() again |
| https://bugs.webkit.org/show_bug.cgi?id=181810 |
| <rdar://problem/36591711> |
| |
| Reviewed by Youenn Fablet. |
| |
| The issue was that when restoring a registration from disk, we would not set its active worker right |
| away. We only set it later in installContextData(). installContextData() is only called after we’ve |
| launched the service worker process and established a connection to it. |
| |
| However, we would start processing jobs (such as registrations) before we’ve established the connection |
| to the service worker process. SWServerJobQueue::runRegisterJob(), in order to reuse an existing |
| registration checks the registration’s active worker has the right script URL. The issue was that when |
| this code would execute, we may not have set the registration’s active service worker yet, in which case, |
| we would update the existing registration instead of reusing it as-is. |
| |
| To address the issue, we now delay the processing of jobs until the connection to the service worker |
| process has been established and we've installed all pending contexts via installContextData(). |
| |
| Changed is covered by new API test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::Connection::scheduleJobInServer): |
| (WebCore::SWServer::scheduleJob): |
| (WebCore::SWServer::serverToContextConnectionCreated): |
| * workers/service/server/SWServer.h: |
| |
| 2018-01-19 James Craig <jcraig@apple.com> |
| |
| AX: when invert colors is on, double-invert image and picture elements in UserAgentStyleSheet |
| https://bugs.webkit.org/show_bug.cgi?id=181281 |
| <rdar://problem/36291776> |
| |
| Reviewed by Simon Fraser. |
| |
| Updated "Smart Invert" to include img and picture element inversion and tests. |
| |
| Tests: accessibility/smart-invert-reference.html |
| accessibility/smart-invert.html |
| |
| * css/html.css: |
| (@media (inverted-colors)): |
| (img:not(picture>img), picture, video): |
| |
| 2018-01-19 Chris Dumez <cdumez@apple.com> |
| |
| The WebContent process should not process incoming IPC while waiting for a sync IPC reply |
| https://bugs.webkit.org/show_bug.cgi?id=181560 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Add internals API for testing purposes. |
| |
| Test: fast/misc/testIncomingSyncIPCMessageWhileWaitingForSyncReply.html |
| |
| * page/ChromeClient.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::testIncomingSyncIPCMessageWhileWaitingForSyncReply): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2018-01-19 Keith Miller <keith_miller@apple.com> |
| |
| HaveInternalSDK includes should be "#include?" |
| https://bugs.webkit.org/show_bug.cgi?id=179670 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Configurations/Base.xcconfig: |
| |
| 2018-01-19 Daniel Bates <dabates@apple.com> |
| |
| Fix misspelling; substitute willDetachRenderer for willDetatchRenderer. |
| |
| * html/HTMLPlugInImageElement.cpp: |
| (WebCore::HTMLPlugInImageElement::willDetachRenderers): |
| * plugins/PluginViewBase.h: |
| (WebCore::PluginViewBase::willDetachRenderer): |
| (WebCore::PluginViewBase::willDetatchRenderer): Deleted. |
| |
| 2018-01-19 Jonathan Bedard <jbedard@apple.com> |
| |
| Unreviewed build fix, remove unused lambda captures. |
| |
| * dom/messageports/MessagePortChannel.cpp: |
| (WebCore::MessagePortChannel::takeAllMessagesForPort): |
| * dom/messageports/MessagePortChannelRegistry.cpp: |
| (WebCore::MessagePortChannelRegistry::messagePortChannelCreated): |
| |
| 2018-01-19 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Expose timing properties (delay, endDelay, fill, iterationStart, iterations, direction) and getComputedTiming() |
| https://bugs.webkit.org/show_bug.cgi?id=181857 |
| <rdar://problem/36660081> |
| |
| Reviewed by Dean Jackson. |
| |
| We start the work to implement the rest of the Web Animations timing and animation model by exposing more properties on |
| AnimationEffectTiming to control delay (delay, endDelay), looping (iterationStart, iterations), fill and direction. |
| Additionally, we expose the getComputedTiming() method on AnimationEffect, although it currently lacks some computed |
| properties that will come in later patch as we implement various processes defined by the spec. We also update the |
| existing duration() method on AnimationEffectTiming to be called iterationDuration() to match the terms used in the |
| specification. |
| |
| Finally, we make all new properties, and update existing ones, that expose a time value go through the new utility |
| function secondsToWebAnimationsAPITime() to guarantee rounded values with microseconds precision, as advised by |
| the Web Animations specification. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::localTime const): |
| (WebCore::AnimationEffect::getComputedTiming): |
| * animation/AnimationEffect.h: |
| * animation/AnimationEffect.idl: |
| * animation/AnimationEffectTiming.cpp: |
| (WebCore::AnimationEffectTiming::AnimationEffectTiming): |
| (WebCore::AnimationEffectTiming::setIterationStart): |
| (WebCore::AnimationEffectTiming::setIterations): |
| (WebCore::AnimationEffectTiming::bindingsDuration const): |
| (WebCore::AnimationEffectTiming::setBindingsDuration): |
| (WebCore::AnimationEffectTiming::endTime const): |
| (WebCore::AnimationEffectTiming::activeDuration const): |
| * animation/AnimationEffectTiming.h: |
| * animation/AnimationEffectTiming.idl: |
| * animation/AnimationPlaybackEvent.cpp: |
| (WebCore::AnimationPlaybackEvent::bindingsCurrentTime const): |
| (WebCore::AnimationPlaybackEvent::bindingsTimelineTime const): |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::bindingsCurrentTime): |
| * animation/ComputedTimingProperties.h: Added. |
| * animation/ComputedTimingProperties.idl: Added. We set nullable double values to a default value of "null" since |
| otherwise setting those properties to a null value would not set the properties in the converted JS dictionary. |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::create): Handle new timing properties passed in the KeyframeEffectOptions dictionary. |
| (WebCore::KeyframeEffect::applyAtLocalTime): |
| (WebCore::KeyframeEffect::getAnimatedStyle): |
| (WebCore::KeyframeEffect::startOrStopAccelerated): |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::bindingsStartTime const): |
| (WebCore::WebAnimation::bindingsCurrentTime const): |
| (WebCore::WebAnimation::effectEndTime const): |
| (WebCore::WebAnimation::timeToNextRequiredTick const): |
| * animation/WebAnimationUtilities.h: Added. |
| (WebCore::secondsToWebAnimationsAPITime): |
| |
| 2018-01-19 Alex Christensen <achristensen@webkit.org> |
| |
| Remove dead networking code |
| https://bugs.webkit.org/show_bug.cgi?id=181813 |
| |
| Reviewed by Tim Horton. |
| |
| CFURLConnection is only used on Windows. |
| |
| * platform/network/cf/ResourceError.h: |
| * platform/network/cf/ResourceRequest.h: |
| (WebCore::ResourceRequest::encodingRequiresPlatformData const): |
| * platform/network/cf/ResourceRequestCFNet.cpp: |
| (WebCore::findCFURLRequestCopyContentDispositionEncodingFallbackArrayFunction): |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): |
| (WebCore::ResourceRequest::doUpdatePlatformHTTPBody): |
| (WebCore::ResourceRequest::doUpdateResourceRequest): |
| (WebCore::ResourceRequest::setStorageSession): |
| * platform/network/cf/ResourceResponse.h: |
| (WebCore::ResourceResponse::ResourceResponse): |
| |
| 2018-01-19 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused WebViewPrivate _allowCookies |
| https://bugs.webkit.org/show_bug.cgi?id=181812 |
| |
| Reviewed by Tim Horton. |
| |
| This SPI was in the original iOS upstreaming and has not been used in many years. |
| |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setDefaultAllowCookies): Deleted. |
| (WebCore::ResourceRequestBase::defaultAllowCookies): Deleted. |
| * platform/network/ResourceRequestBase.h: |
| (WebCore::ResourceRequestBase::ResourceRequestBase): |
| |
| 2018-01-18 Brady Eidson <beidson@apple.com> |
| |
| Make in-process MessagePorts be (mostly) asynchronous |
| https://bugs.webkit.org/show_bug.cgi?id=181454 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (Covered *brutally* by existing tests) |
| |
| Part of making MessagePorts be a thing we can pass across processes is making them work async. |
| |
| The existing "MessagePortChannel" method of abstraction was not cut out for this. |
| This patch gets rid of MessagePortChannel and adds a new MessagePortChannelProvider abstraction. |
| It then gets the new machinery working in-process (with some pieces of out-of-process in place) |
| |
| One synchronous behavior this patch maintains is the hasPendingActivity() check used to support GC. |
| That will (creatively) be made async in the next followup. |
| |
| More generally from MessagePorts, this patch also adds a "MessageWithMessagePorts" object to be used |
| with all forms of postMessage(). Much better. |
| |
| * CMakeLists.txt: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * dom/InProcessMessagePortChannel.cpp: Removed. |
| * dom/InProcessMessagePortChannel.h: Removed. |
| * dom/MessagePortChannel.cpp: Removed. |
| * dom/MessagePortChannel.h: Removed. |
| |
| * dom/MessageChannel.cpp: |
| (WebCore::MessageChannel::create): |
| (WebCore::MessageChannel::MessageChannel): |
| (WebCore::m_port2): Deleted. |
| * dom/MessageChannel.h: |
| (WebCore::MessageChannel::create): Deleted. |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::create): |
| (WebCore::MessagePort::MessagePort): |
| (WebCore::MessagePort::~MessagePort): |
| (WebCore::MessagePort::entangle): |
| (WebCore::MessagePort::postMessage): |
| (WebCore::MessagePort::disentangle): |
| (WebCore::MessagePort::messageAvailable): |
| (WebCore::MessagePort::start): |
| (WebCore::MessagePort::close): |
| (WebCore::MessagePort::contextDestroyed): |
| (WebCore::MessagePort::dispatchMessages): |
| (WebCore::MessagePort::hasPendingActivity const): |
| (WebCore::MessagePort::locallyEntangledPort const): |
| (WebCore::MessagePort::disentanglePorts): |
| (WebCore::MessagePort::entanglePorts): |
| (WebCore::MessagePort::entangleWithRemote): Deleted. |
| * dom/MessagePort.h: |
| |
| * dom/MessagePortIdentifier.h: |
| (WebCore::MessagePortIdentifier::logString const): |
| |
| * dom/ScriptExecutionContext.cpp: |
| (WebCore::ScriptExecutionContext::processMessageWithMessagePortsSoon): |
| (WebCore::ScriptExecutionContext::dispatchMessagePortEvents): |
| (WebCore::ScriptExecutionContext::processMessagePortMessagesSoon): Deleted. |
| * dom/ScriptExecutionContext.h: |
| |
| Add a single object that represents two intertwined ports, tracks their pending |
| messages, tracks which process they're in, etc etc: |
| * dom/messageports/MessagePortChannel.cpp: Added. |
| (WebCore::MessagePortChannel::create): |
| (WebCore::MessagePortChannel::MessagePortChannel): |
| (WebCore::MessagePortChannel::~MessagePortChannel): |
| (WebCore::MessagePortChannel::includesPort): |
| (WebCore::MessagePortChannel::entanglePortWithProcess): |
| (WebCore::MessagePortChannel::disentanglePort): |
| (WebCore::MessagePortChannel::closePort): |
| (WebCore::MessagePortChannel::postMessageToRemote): |
| (WebCore::MessagePortChannel::takeAllMessagesForPort): |
| (WebCore::MessagePortChannel::hasAnyMessagesPendingOrInFlight const): |
| * dom/messageports/MessagePortChannel.h: Added. |
| (WebCore::MessagePortChannel::port1 const): |
| (WebCore::MessagePortChannel::port2 const): |
| (WebCore::MessagePortChannel::logString const): |
| |
| Abstraction for creating and operating on MessagePorts in a potentially cross-process way: |
| * dom/messageports/MessagePortChannelProvider.cpp: Added. |
| (WebCore::MessagePortChannelProvider::singleton): |
| (WebCore::MessagePortChannelProvider::setSharedProvider): |
| * dom/messageports/MessagePortChannelProvider.h: Added. |
| (WebCore::MessagePortChannelProvider::~MessagePortChannelProvider): |
| |
| Adds a concrete implementation of that provider to be used in-process (e.g. WK1): |
| * dom/messageports/MessagePortChannelProviderImpl.cpp: Added. |
| (WebCore::MessagePortChannelProviderImpl::~MessagePortChannelProviderImpl): |
| (WebCore::MessagePortChannelProviderImpl::performActionOnAppropriateThread): |
| (WebCore::MessagePortChannelProviderImpl::createNewMessagePortChannel): |
| (WebCore::MessagePortChannelProviderImpl::entangleLocalPortInThisProcessToRemote): |
| (WebCore::MessagePortChannelProviderImpl::messagePortDisentangled): |
| (WebCore::MessagePortChannelProviderImpl::messagePortClosed): |
| (WebCore::MessagePortChannelProviderImpl::postMessageToRemote): |
| (WebCore::MessagePortChannelProviderImpl::takeAllMessagesForPort): |
| (WebCore::MessagePortChannelProviderImpl::hasMessagesForPorts_temporarySync): |
| * dom/messageports/MessagePortChannelProviderImpl.h: Added. |
| |
| Adds a main thread object to handle the set of all MessagePortChannels that are open. |
| For now it lives in the WebProcess, but for out-of-process it will live in the UIProcess: |
| * dom/messageports/MessagePortChannelRegistry.cpp: Added. |
| (WebCore::MessagePortChannelRegistry::~MessagePortChannelRegistry): |
| (WebCore::MessagePortChannelRegistry::didCreateMessagePortChannel): |
| (WebCore::MessagePortChannelRegistry::messagePortChannelCreated): |
| (WebCore::MessagePortChannelRegistry::messagePortChannelDestroyed): |
| (WebCore::MessagePortChannelRegistry::didEntangleLocalToRemote): |
| (WebCore::MessagePortChannelRegistry::didDisentangleMessagePort): |
| (WebCore::MessagePortChannelRegistry::didCloseMessagePort): |
| (WebCore::MessagePortChannelRegistry::didPostMessageToRemote): |
| (WebCore::MessagePortChannelRegistry::takeAllMessagesForPort): |
| (WebCore::MessagePortChannelRegistry::hasMessagesForPorts_temporarySync): This is named against style |
| and weird on purpose - to call attention to how bad it is and how it's temporary. |
| (WebCore::MessagePortChannelRegistry::existingChannelContainingPort): |
| * dom/messageports/MessagePortChannelRegistry.h: Added. |
| |
| Add an object that represents a "SerializedScriptValue for the message payload and the ports |
| that are being transferred along with that payload". This is used in all forms of postMessage(): |
| * dom/messageports/MessageWithMessagePorts.cpp: Added. |
| * dom/messageports/MessageWithMessagePorts.h: Added. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::PostMessageTimer::PostMessageTimer): |
| (WebCore::PostMessageTimer::event): |
| (WebCore::DOMWindow::postMessage): |
| |
| * platform/Logging.h: |
| |
| * workers/DedicatedWorkerGlobalScope.cpp: |
| (WebCore::DedicatedWorkerGlobalScope::postMessage): |
| |
| * workers/Worker.cpp: |
| (WebCore::Worker::postMessage): |
| |
| * workers/WorkerGlobalScopeProxy.h: |
| |
| * workers/WorkerMessagingProxy.cpp: |
| (WebCore::WorkerMessagingProxy::postMessageToWorkerObject): |
| (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): |
| * workers/WorkerMessagingProxy.h: |
| |
| * workers/WorkerObjectProxy.h: |
| |
| * workers/service/ServiceWorker.cpp: |
| (WebCore::ServiceWorker::postMessage): |
| |
| * workers/service/ServiceWorkerClient.cpp: |
| (WebCore::ServiceWorkerClient::postMessage): |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::postMessageToServiceWorker): |
| |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::fireMessageEvent): |
| (WebCore::ServiceWorkerThread::postMessageToServiceWorker): |
| * workers/service/context/ServiceWorkerThread.h: |
| |
| 2018-01-18 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed build fix, removed unused lambda capture. |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::ServiceWorkerTerminationRequest::ServiceWorkerTerminationRequest): |
| |
| 2018-01-18 Chris Dumez <cdumez@apple.com> |
| |
| We should be able to terminate service workers that are unresponsive |
| https://bugs.webkit.org/show_bug.cgi?id=181563 |
| <rdar://problem/35280031> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: http/tests/workers/service/postmessage-after-terminating-hung-worker.html |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::terminateWorker): |
| Before calling WorkerThread::stop(), set a timer with the given timeout parameter. |
| If the worker thread has not stopped when the timer fires, forcefully exit the |
| service worker process. The StorageProcess will take care of relaunching the |
| service worker process if it exits abruptly. |
| |
| (WebCore::SWContextManager::serviceWorkerFailedToTerminate): |
| Log error message if we failed to terminate a service worker and call exit(). |
| |
| (WebCore::SWContextManager::ServiceWorkerTerminationRequest::ServiceWorkerTerminationRequest): |
| |
| * workers/service/context/SWContextManager.h: |
| |
| 2018-01-18 Youenn Fablet <youenn@apple.com> |
| |
| Do not go to the storage process when loading a main resource if there is no service worker registered |
| https://bugs.webkit.org/show_bug.cgi?id=181395 |
| |
| Reviewed by Chris Dumez. |
| |
| No observable behavior change. |
| Instead of creating a connection to know whether there is a potential service worker, |
| Ask the service worker provider that will use the connection if needed. |
| Otherwise, it will use a default value provided by the UIProcess. |
| |
| Tested by cleaning all service workers and checking the computed value of the default value, |
| then observing whether pages registering service workers work well. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::startLoadingMainResource): |
| * workers/service/ServiceWorkerProvider.cpp: |
| (WebCore::ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin): |
| * workers/service/ServiceWorkerProvider.h: |
| |
| 2018-01-18 Dan Bernstein <mitz@apple.com> |
| |
| [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions |
| https://bugs.webkit.org/show_bug.cgi?id=181803 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/Base.xcconfig: Updated. |
| * Configurations/DebugRelease.xcconfig: Ditto. |
| * Configurations/FeatureDefines.xcconfig: Adopted macOSTargetConditionals helpers. |
| * Configurations/Version.xcconfig: Updated. |
| * Configurations/macOSTargetConditionals.xcconfig: Added. Defines helper build settings |
| useful for defining settings that depend on the target macOS version. |
| |
| 2018-01-18 Chris Dumez <cdumez@apple.com> |
| |
| Service Workers restored from persistent storage have 'redundant' state |
| https://bugs.webkit.org/show_bug.cgi?id=181749 |
| <rdar://problem/36556486> |
| |
| Reviewed by Youenn Fablet. |
| |
| Tested by new API test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::installContextData): |
| Make sure the SWServerWorker's state is set to "activated" after it is assigned to |
| the registrations' active slot. Otherwise, it stays in its default state (redundant). |
| |
| 2018-01-18 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION(r225650): The scores of MotionMark tests Multiply and Leaves dropped by 8% |
| https://bugs.webkit.org/show_bug.cgi?id=181460 |
| <rdar://problem/36379776> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| |
| Don't do the expensive security origin test if the supplied sheet base URL is null. This |
| is true for rules coming from the same document. |
| |
| 2018-01-18 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r223604): Setting :before/after pseudo element on <noscript> asserts |
| https://bugs.webkit.org/show_bug.cgi?id=181795 |
| <rdar://problem/36334524> |
| |
| Reviewed by David Kilzer. |
| |
| <noscript> disallows renderer generation outside CSS mechanisms, however we would still construct |
| PseudoElements for them during style resolution. These were never removed properly because the |
| pseudo element removal was tied to render tree teardown. Without proper removal the associated |
| animations were also not canceled. |
| |
| Test: fast/css-generated-content/noscript-pseudo-anim-crash.html |
| |
| * dom/Element.cpp: |
| (WebCore::Element::removedFromAncestor): |
| |
| Take care to get rid of PseudoElements when the element is removed from the tree. |
| This also cancels any associated animations. |
| |
| 2018-01-18 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Aria-activedescendant not supported |
| https://bugs.webkit.org/show_bug.cgi?id=161734 |
| <rdar://problem/28202679> |
| |
| Reviewed by Joanmarie Diggs. |
| |
| When a combo-box owns/controls a list/listbox/grid/tree, the owned element needs to check the active-descendant of the combobox when |
| checking if it has selected children. |
| The target of the selection change notification should also be the owned element in these cases. |
| |
| Test: accessibility/aria-combobox-controlling-list.html |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::selectedListItem): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::targetElementForActiveDescendant const): |
| (WebCore::AccessibilityRenderObject::handleActiveDescendantChanged): |
| (WebCore::AccessibilityRenderObject::canHaveSelectedChildren const): |
| (WebCore::AccessibilityRenderObject::selectedChildren): |
| * accessibility/AccessibilityRenderObject.h: |
| * accessibility/mac/AXObjectCacheMac.mm: |
| (WebCore::AXObjectCache::postPlatformNotification): |
| |
| 2018-01-17 Per Arne Vollan <pvollan@apple.com> |
| |
| REGRESSION (r224780): Text stroke not applied to video captions. |
| https://bugs.webkit.org/show_bug.cgi?id=181743 |
| <rdar://problem/35874338> |
| |
| Reviewed by Simon Fraser. |
| |
| Tests: media/track/track-css-visible-stroke-expected.html |
| media/track/track-css-visible-stroke.html |
| |
| After r224780, it is no longer possible to mix text stroke styles with webkit |
| legacy text stroke styles. |
| |
| * css/StyleResolver.cpp: |
| (WebCore::isValidCueStyleProperty): |
| * page/CaptionUserPreferencesMediaAF.cpp: |
| (WebCore::CaptionUserPreferencesMediaAF::captionsTextEdgeCSS const): |
| |
| 2018-01-18 Andy Estes <aestes@apple.com> |
| |
| [Payment Request] Support a default shipping address for Apple Pay |
| https://bugs.webkit.org/show_bug.cgi?id=181754 |
| <rdar://problem/36009733> |
| |
| Reviewed by Brady Eidson. |
| |
| Move shippingContact from ApplePayPaymentRequest to ApplePayRequestBase. This allows |
| merchants to specify a default shipping address when using Apple Pay with Payment Request. |
| |
| This also fixes a bug found during testing where |
| +[NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:style:options:] |
| would throw an exception when passed a nil NSPersonNameComponents. |
| |
| Test: http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html |
| |
| * Modules/applepay/ApplePayPaymentRequest.h: |
| * Modules/applepay/ApplePayPaymentRequest.idl: |
| * Modules/applepay/ApplePayRequestBase.cpp: |
| (WebCore::convertAndValidate): |
| * Modules/applepay/ApplePayRequestBase.h: |
| * Modules/applepay/ApplePayRequestBase.idl: |
| * Modules/applepay/ApplePaySession.cpp: |
| (WebCore::convertAndValidate): |
| * Modules/applepay/ApplePaySessionPaymentRequest.h: |
| (WebCore::ApplePaySessionPaymentRequest::version const): |
| (WebCore::ApplePaySessionPaymentRequest::setVersion): |
| * Modules/applepay/cocoa/PaymentContactCocoa.mm: |
| (WebCore::convert): |
| * Modules/applepay/paymentrequest/ApplePayRequest.idl: |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::showPaymentUI): |
| (WebCore::MockPaymentCoordinator::completeMerchantValidation): |
| * testing/MockPaymentCoordinator.h: |
| |
| 2018-01-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Specify -[NSURL _title] for the associated URL when copying an image element |
| https://bugs.webkit.org/show_bug.cgi?id=181783 |
| <rdar://problem/35785445> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Always specify the -[NSURL _title] to be either the title specified in a PasteboardImage's inner PasteboardURL, |
| or if no title is specified, fall back to the user-visible URL string. This is because at least one internal |
| client always tries to use the -_title property to determine the title of a pasted URL, or if none is specified, |
| the -suggestedName. Since we need to set suggestedName to the preferred file name of the copied image and we |
| don't want the suggested name to become the title of the link, we need to explicitly set the link title. |
| |
| In doing so, this patch also fixes a bug wherein we forget to set the _title of the NSURL we're registering to |
| an NSItemProvider. |
| |
| Tests: ActionSheetTests.CopyImageElementWithHREFAndTitle (new) |
| ActionSheetTests.CopyImageElementWithHREF (modified) |
| |
| * platform/ios/PlatformPasteboardIOS.mm: |
| (WebCore::PlatformPasteboard::write): |
| |
| 2018-01-17 Jer Noble <jer.noble@apple.com> |
| |
| WebVTT served via HLS never results in cues |
| https://bugs.webkit.org/show_bug.cgi?id=181773 |
| |
| Reviewed by Eric Carlson. |
| |
| Test: http/tests/media/hls/hls-webvtt-tracks.html |
| |
| Three independant errors conspired to keep in-band WebVTT samples from parsing: |
| |
| - The definition of ISOWebVTTCue::boxTypeName() was incorrect. |
| - ISOWebVTTCue::parse() didn't call it's superclass's parse() method (leading to an incorrect size and offset). |
| - Use String::fromUTF8() rather than String.adopt(StringVector&&). |
| |
| * platform/graphics/iso/ISOVTTCue.cpp: |
| (WebCore::ISOWebVTTCue::parse): |
| * platform/graphics/iso/ISOVTTCue.h: |
| (WebCore::ISOWebVTTCue::boxTypeName): |
| |
| 2018-01-17 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Block cookies for prevalent resources without user interaction |
| https://bugs.webkit.org/show_bug.cgi?id=177394 |
| <rdar://problem/34613960> |
| |
| Reviewed by Alex Christensen. |
| |
| Tests: http/tests/resourceLoadStatistics/add-blocking-to-redirect.html |
| http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html |
| http/tests/resourceLoadStatistics/remove-blocking-in-redirect.html |
| http/tests/resourceLoadStatistics/remove-partitioning-in-redirect.html |
| |
| * platform/network/NetworkStorageSession.h: |
| Now exports NetworkStorageSession::nsCookieStorage(). |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::setPrevalentDomainsToPartitionOrBlockCookies): |
| Fixes the FIXME. |
| |
| 2018-01-17 Dean Jackson <dino@apple.com> |
| |
| Remove linked-on test for Snow Leopard |
| https://bugs.webkit.org/show_bug.cgi?id=181770 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove a very old linked-on-or-after test. |
| |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| |
| 2018-01-17 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r227098. |
| |
| This broke the build. |
| |
| Reverted changeset: |
| |
| "Remove linked-on test for Snow Leopard" |
| https://bugs.webkit.org/show_bug.cgi?id=181770 |
| https://trac.webkit.org/changeset/227098 |
| |
| 2018-01-17 Dean Jackson <dino@apple.com> |
| |
| Remove linked-on test for Snow Leopard |
| https://bugs.webkit.org/show_bug.cgi?id=181770 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove a very old linked-on-or-after test. |
| |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| |
| 2018-01-17 Stephan Szabo <stephan.szabo@sony.com> |
| |
| [Curl] Use ResourceRequest::encodeWithPlatformData() |
| https://bugs.webkit.org/show_bug.cgi?id=181768 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests, assertion hit in downstream port, should be covered by |
| existing tests. |
| |
| * platform/network/curl/ResourceRequest.h: |
| (WebCore::ResourceRequest::encodeWithPlatformData const): |
| (WebCore::ResourceRequest::decodeWithPlatformData): |
| |
| 2018-01-17 Eric Carlson <eric.carlson@apple.com> |
| |
| Use existing RGB colorspace instead of creating a new one |
| https://bugs.webkit.org/show_bug.cgi?id=181765 |
| <rdar://problem/36595753> |
| |
| Reviewed by Dean Jackson. |
| |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: |
| (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Use sRGBColorSpaceRef instead |
| of creating a new static colorspace. |
| |
| 2018-01-17 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r227076. |
| |
| This breaks internal builds |
| |
| Reverted changeset: |
| |
| "Resource Load Statistics: Block cookies for prevalent |
| resources without user interaction" |
| https://bugs.webkit.org/show_bug.cgi?id=177394 |
| https://trac.webkit.org/changeset/227076 |
| |
| 2018-01-17 Ryosuke Niwa <rniwa@webkit.org> |
| |
| input and textarea elements should reveal selection in setSelection when focused |
| https://bugs.webkit.org/show_bug.cgi?id=181715 |
| <rdar://problem/36570546> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Made input and textarea elements reveal selection in FrameSelection::setSelection instead of by directly |
| invoking FrameSelection::revealSelection in their respective updateFocusAppearance to unify code paths. |
| |
| Also added options to reveal selection up to the main frame to SetSelectionOption to be used in iOS. |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::FrameSelection): |
| (WebCore::FrameSelection::moveWithoutValidationTo): Takes SelectionRevealMode as an argument and converts |
| sets appropriate selection options. |
| (WebCore::FrameSelection::setSelection): Reconstruct SelectionRevealMode out of selection option sets. |
| (WebCore::FrameSelection::updateAndRevealSelection): |
| * editing/FrameSelection.h: |
| (WebCore::FrameSelection): Added RevealSelectionUpToMainFrame as a SelectionRevealMode and replaced |
| m_shouldRevealSelection by m_selectionRevealMode. |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::updateFocusAppearance): Pass SelectionRevealMode to HTMLTextFormControlElement's |
| select and restoreCachedSelection instead of directly invoking FrameSelection::revealSelection. |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::updateFocusAppearance): Ditto. |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::select): |
| (WebCore::HTMLTextFormControlElement::setSelectionRange): |
| (WebCore::HTMLTextFormControlElement::restoreCachedSelection): |
| * html/HTMLTextFormControlElement.h: |
| |
| 2018-01-17 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| WEBKIT_FRAMEWORK should not modify file-global include directories |
| https://bugs.webkit.org/show_bug.cgi?id=181656 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| * CMakeLists.txt: |
| * PlatformWPE.cmake: |
| |
| 2018-01-17 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] Try even harder not to static link WTF into libwebkit2gtk |
| https://bugs.webkit.org/show_bug.cgi?id=181751 |
| |
| Reviewed by Alex Christensen. |
| |
| We don't want two copies of WTF. It should only be in libjavascriptcoregtk. |
| |
| * PlatformGTK.cmake: |
| |
| 2018-01-17 Zalan Bujtas <zalan@apple.com> |
| |
| Multicol: RenderMultiColumnFlow should not inherit the flow state |
| https://bugs.webkit.org/show_bug.cgi?id=181762 |
| <rdar://problem/35448565> |
| |
| Reviewed by Simon Fraser. |
| |
| Do not compute the inherited flow state flag for RenderMultiColumnFlow. |
| It is (by definition) always inside a fragmented flow. |
| |
| Test: fast/multicol/crash-when-out-of-flow-positioned-becomes-in-flow.html |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::computedFragmentedFlowState): |
| |
| 2018-01-17 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate Application Cache |
| https://bugs.webkit.org/show_bug.cgi?id=181764 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * features.json: |
| |
| 2018-01-17 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS simulator] API test WKAttachmentTests.InjectedBundleReplaceURLWhenPastingImage is failing |
| https://bugs.webkit.org/show_bug.cgi?id=181758 |
| |
| Reviewed by Tim Horton. |
| |
| This test is failing because Editor::clientReplacementURLForResource expects a MIME type, but on iOS, the type |
| paramter passed into WebContentReader::readImage is a UTI; subsequently, the bundle editing delegate receives |
| a MIME type that's actually a UTI, which is incorrect. To address this, ensure that a MIME type is passed to |
| bundle SPI by converting the type in WebContentReader::readImage to a MIME type. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readImage): |
| |
| 2018-01-17 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r226385?): Crash in com.apple.WebCore: WebCore::MediaQueryEvaluator::evaluate const + 32 |
| https://bugs.webkit.org/show_bug.cgi?id=181742 |
| <rdar://problem/36334726> |
| |
| Reviewed by David Kilzer. |
| |
| Test: fast/media/mediaqueryevaluator-crash.html |
| |
| * css/MediaQueryEvaluator.cpp: |
| (WebCore::MediaQueryEvaluator::MediaQueryEvaluator): |
| |
| Use WeakPtr<Document> instead of a plain Frame pointer. |
| |
| (WebCore::MediaQueryEvaluator::evaluate const): |
| |
| Get the frame via document. |
| |
| * css/MediaQueryEvaluator.h: |
| * dom/Document.cpp: |
| (WebCore::Document::prepareForDestruction): |
| |
| Take care to clear style resolver. |
| |
| 2018-01-17 Youenn Fablet <youenn@apple.com> |
| |
| Put fetch request keepAlive behind a runtime flag |
| https://bugs.webkit.org/show_bug.cgi?id=181592 |
| |
| Reviewed by Chris Dumez. |
| |
| No change of behavior. |
| |
| * Modules/fetch/FetchRequest.idl: |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::fetchAPIKeepAliveEnabled const): |
| (WebCore::RuntimeEnabledFeatures::setFetchAPIKeepAliveEnabled): |
| |
| 2018-01-17 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Use switch when converting from ResourceRequestCachePolicy to platform cache policy. |
| https://bugs.webkit.org/show_bug.cgi?id=181686 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests, covered by existing tests. |
| |
| A switch will make the function easier on the eyes. Also, use the function in places where the ResourceRequestCachePolicy |
| is just casted to a platform cache policy. |
| |
| * platform/network/cf/ResourceRequestCFNet.cpp: |
| (WebCore::toPlatformRequestCachePolicy): |
| |
| 2018-01-17 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Block cookies for prevalent resources without user interaction |
| https://bugs.webkit.org/show_bug.cgi?id=177394 |
| <rdar://problem/34613960> |
| |
| Reviewed by Alex Christensen. |
| |
| Tests: http/tests/resourceLoadStatistics/add-blocking-to-redirect.html |
| http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html |
| http/tests/resourceLoadStatistics/remove-blocking-in-redirect.html |
| http/tests/resourceLoadStatistics/remove-partitioning-in-redirect.html |
| |
| * platform/network/NetworkStorageSession.h: |
| Now exports NetworkStorageSession::nsCookieStorage(). |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::setPrevalentDomainsToPartitionOrBlockCookies): |
| Fixes the FIXME. |
| |
| 2018-01-17 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r222795): Cardiogram never signs in |
| https://bugs.webkit.org/show_bug.cgi?id=181693 |
| <rdar://problem/36286293> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Exempt Cardiogram from the XHR header restrictions in r222795. |
| |
| Following r222795 only Dashboard widgets are allowed to set arbitrary XHR headers. |
| However Cardiogram also depends on such functionality. |
| |
| Test: fast/xmlhttprequest/set-dangerous-headers-from-file-when-setting-enabled.html |
| |
| * page/Settings.yaml: |
| * platform/RuntimeApplicationChecks.h: |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::IOSApplication::isCardiogram): |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::setRequestHeader): |
| |
| 2018-01-17 Daniel Bates <dabates@apple.com> |
| |
| ASSERTION FAILED: !m_completionHandler in PingHandle::~PingHandle() |
| https://bugs.webkit.org/show_bug.cgi?id=181746 |
| <rdar://problem/36586248> |
| |
| Reviewed by Chris Dumez. |
| |
| Call PingHandle::pingLoadComplete() with an error when NSURLConnection queries |
| whether the ping is able to respond to an authentication request. (Pings do not |
| respond to authenticate requests.) It will call the completion handler, nullify |
| the completion handler, and deallocate the PingHandle. Nullifying the completion |
| handler is necessary to avoid the assertion failure in ~PingHandle(). |
| |
| Test: http/tests/misc/before-unload-load-image.html |
| |
| * platform/network/PingHandle.h: |
| |
| 2018-01-17 Daniel Bates <dabates@apple.com> |
| |
| WebCoreResourceHandleAsOperationQueueDelegate/ResourceHandleCFURLConnectionDelegateWithOperationQueue may |
| be deleted in main thread callback |
| https://bugs.webkit.org/show_bug.cgi?id=181747 |
| <rdar://problem/36588120> |
| |
| Reviewed by Alex Christensen. |
| |
| Retain the delegate (e.g. WebCoreResourceHandleAsOperationQueueDelegate) before scheduling |
| a main thread callback and blocking on a semaphore for its reply because the main thread |
| callback can do anything, including deleting the delegate, before the non-main thread |
| has a chance to execute. For instance, a PingHandle will delete itself (and hence delete |
| its resource handle delegate) in most of the code paths invoked by the delegate. |
| |
| * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest): |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse): |
| (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace): |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]): |
| |
| 2018-01-17 Chris Dumez <cdumez@apple.com> |
| |
| 'fetch' event may be sent to a service worker before its state is set to 'activated' |
| https://bugs.webkit.org/show_bug.cgi?id=181698 |
| <rdar://problem/36554856> |
| |
| Reviewed by Youenn Fablet. |
| |
| 'fetch' event may be sent to a service worker before its state is set to 'activated'. |
| When the registration's active worker needs to intercept a load, and its state is 'activating', |
| we queue the request to send the fetch event in SWServerWorker::m_whenActivatedHandlers. |
| Once the SWServerWorker::setState() is called with 'activated' state, we then call the |
| handlers in m_whenActivatedHandlers to make send the fetch event now that the worker is |
| activated. The issue is that even though the worker is activated and its state was set to |
| 'activated' on Storage process side, we had not yet notified the ServiceWorker process |
| of the service worker's new state yet. |
| |
| To address the issue, we now make sure that SWServerWorker::m_whenActivatedHandlers are |
| called *after* we've sent the IPC to the ServiceWorker process to update the worker's |
| state to 'activated'. Also, we now call ServiceWorkerFetch::dispatchFetchEvent() |
| asynchronously in a postTask() as the service worker's state is also updated asynchronously |
| in a postTask. This is as per specification [1], which says to "queue a task" to fire |
| the fetch event. |
| |
| [1] https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm (step 18) |
| |
| No new tests, covered by imported/w3c/web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https.html |
| which hits the new assertion without the fix. |
| |
| * workers/service/context/ServiceWorkerFetch.cpp: |
| (WebCore::ServiceWorkerFetch::dispatchFetchEvent): |
| Add assertions to make sure that we dispatch the fetch event on the right worker and |
| that the worker is in 'activated' state. |
| |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::postFetchTask): |
| Queue a task to fire the fetch event as per: |
| - https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm (step 18) |
| We need to match the specification exactly here or things will happen in the wrong |
| order. In particular, things like "update registration state" and "update worker state" |
| might happen *after* firing the fetch event, even though the IPC for "update registration/worker |
| state" was sent before the "fire fetch event" one, because the code for updating a registration/ |
| worker state already queues a task, as per the specification. |
| |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::updateWorkerState): |
| * workers/service/server/SWServerRegistration.h: |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::setState): |
| Move code to send the IPC to the Service Worker process whenever the service worker's state |
| needs to be updated from SWServerRegistration::updateWorkerState() to SWServerWorker::setState(). |
| This way, we can make sure the IPC is sent *before* we call the m_whenActivatedHandlers handlers, |
| as they may also send IPC to the Service Worker process, and we need to make sure this IPC happens |
| after so that the service worker is in the right state. |
| |
| 2018-01-17 Stephan Szabo <stephan.szabo@sony.com> |
| |
| Page.cpp only sees forward declaration of ApplicationStateChangeListener when ENABLE(VIDEO) is off |
| https://bugs.webkit.org/show_bug.cgi?id=181713 |
| |
| Reviewed by Darin Adler. |
| |
| No new tests (build fix). |
| |
| * page/Page.cpp: Add include for ApplicationStateChangeListener |
| |
| 2018-01-17 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add injected bundle SPI to replace subresource URLs when dropping or pasting rich content |
| https://bugs.webkit.org/show_bug.cgi?id=181637 |
| <rdar://problem/36508471> |
| |
| Reviewed by Tim Horton. |
| |
| Before carrying out blob URL conversion for pasted or dropped rich content, let the editor client replace |
| subresource URLs in WebKit2 by calling out to new injected bundle SPI. See comments below for more detail. |
| |
| Tests: WKAttachmentTests.InjectedBundleReplaceURLsWhenPastingAttributedString |
| WKAttachmentTests.InjectedBundleReplaceURLWhenPastingImage |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::clientReplacementURLForResource): |
| * editing/Editor.h: |
| |
| Add a new helper to call out to the editor client for a URL string to replace a given ArchiveResource. In |
| WebKit2, this calls out to the injected bundle's new `replacementURLForResource` SPI hook. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::shouldReplaceSubresourceURL): |
| (WebCore::replaceRichContentWithAttachments): |
| (WebCore::replaceSubresourceURLsWithURLsFromClient): |
| |
| Add a new static helper to replace subresource URLs in the given DocumentFragment with URLs supplied by the |
| editor client. Additionally builds a list of ArchiveResources that have not been replaced, for use at call sites |
| so that we don't unnecessarily create more Blobs for ArchiveResources that have already been replaced. |
| |
| (WebCore::createFragmentAndAddResources): |
| (WebCore::sanitizeMarkupWithArchive): |
| |
| Tweak web content reading codepaths to first replace subresource URLs with editor-client-supplied URLs. |
| |
| (WebCore::WebContentReader::readImage): |
| (WebCore::shouldConvertToBlob): Deleted. |
| |
| Rename this helper to shouldReplaceSubresourceURL, blob URL replacement is no longer the only scenario in which |
| we replace resource URLs, but in both cases, we still want to ignore `http:`-family and `data:` URLs. |
| |
| * loader/EmptyClients.cpp: |
| * page/EditorClient.h: |
| |
| 2018-01-17 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| [EME][GStreamer] Add the full-sample encryption support in the GStreamer ClearKey decryptor |
| https://bugs.webkit.org/show_bug.cgi?id=180080 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Currently the GStreamer clearKey decryptor doesn't support the full-sample encryption, |
| where the buffer is entirely encrypted, it supports only the sub-sample encryption. |
| |
| Test: media/encrypted-media/clearKey/clearKey-cenc-audio-playback-mse.html |
| |
| * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp: |
| (webKitMediaClearKeyDecryptorDecrypt): |
| |
| 2018-01-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed follow-up to r227051. |
| |
| * platform/graphics/cairo/CairoOperations.h: Fix declaration of the |
| fillRoundedRect() function by removing the bool parameter that's not |
| used at all in the definition. This went unspotted due to the unified |
| source build including the implementation file before fillRoundedRect() |
| usage in GrapihcsContextCairo.cpp, leaving the declaration undefined |
| and instead using the definition directly. |
| |
| 2018-01-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Don't mirror global alpha and image interpolation quality state values in PlatformContextCairo |
| https://bugs.webkit.org/show_bug.cgi?id=181725 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Don't duplicate global alpha and image interpolation quality state |
| values on the PlatformContextCairo. Instead, retrieve them from |
| the managing GraphicsContextState when necessary. |
| |
| For Cairo operations, the FillSource and StrokeSource containers now |
| store the global alpha value, using it during the operation executions. |
| For drawNativeImage(), the global alpha and interpolation quality values |
| are passed through arguments. |
| |
| In PlatformContextCairo, the two values are no longer stored on the |
| internally-managed stack, and the getter-setter pairs for the two values |
| are removed. In drawSurfaceToContext(), the two values are now expected |
| to be passed through the method arguments. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::prepareForFilling): |
| (WebCore::Cairo::prepareForStroking): |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::fillCurrentCairoPath): |
| (WebCore::Cairo::FillSource::FillSource): |
| (WebCore::Cairo::StrokeSource::StrokeSource): |
| (WebCore::Cairo::strokeRect): |
| (WebCore::Cairo::strokePath): |
| (WebCore::Cairo::drawGlyphs): |
| (WebCore::Cairo::drawNativeImage): |
| (WebCore::Cairo::State::setGlobalAlpha): Deleted. |
| (WebCore::Cairo::State::setImageInterpolationQuality): Deleted. |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::drawNativeImage): |
| (WebCore::GraphicsContext::setPlatformAlpha): |
| (WebCore::GraphicsContext::setPlatformImageInterpolationQuality): |
| * platform/graphics/cairo/PlatformContextCairo.cpp: |
| (WebCore::PlatformContextCairo::save): |
| (WebCore::PlatformContextCairo::drawSurfaceToContext): |
| (WebCore::PlatformContextCairo::State::State): Deleted. |
| (WebCore::PlatformContextCairo::setImageInterpolationQuality): Deleted. |
| (WebCore::PlatformContextCairo::imageInterpolationQuality const): Deleted. |
| (WebCore::PlatformContextCairo::globalAlpha const): Deleted. |
| (WebCore::PlatformContextCairo::setGlobalAlpha): Deleted. |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: |
| (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame): |
| |
| 2018-01-17 Philippe Normand <pnormand@igalia.com> |
| |
| REGRESSION(r226973/r226974): Four multimedia tests failing |
| https://bugs.webkit.org/show_bug.cgi?id=181696 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This patch reverts some of the changes of the above revisions so as to fix layout test failures. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Properly |
| prepare stalled event when an error was detected. |
| (WebCore::MediaPlayerPrivateGStreamer::processBufferingStats): Revert to previous version. |
| (WebCore::MediaPlayerPrivateGStreamer::fillTimerFired): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const): |
| Emit progress event also when streaming but not when an error was |
| detected. |
| (WebCore::MediaPlayerPrivateGStreamer::totalBytes const): use isLiveStream like everywhere else. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webkit_web_src_init): Revert to keep-alive FALSE by default. |
| |
| 2018-01-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Move prepareForFilling(), prepareForStroking() code to CairoOperations |
| https://bugs.webkit.org/show_bug.cgi?id=181721 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Move the prepareForFilling() and prepareForStroking() code off of the |
| PlatformContextCairo class and into static functions inside the |
| CairoOperations implementation files. The original methods weren't |
| called from any place other than the Cairo operations, and they only |
| operated with the cairo_t object that's stored in and retrievable from |
| the PlatformContextCairo object. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::reduceSourceByAlpha): |
| (WebCore::Cairo::prepareCairoContextSource): |
| (WebCore::Cairo::clipForPatternFilling): |
| (WebCore::Cairo::prepareForFilling): |
| (WebCore::Cairo::prepareForStroking): |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::fillCurrentCairoPath): |
| (WebCore::Cairo::strokeRect): |
| (WebCore::Cairo::strokePath): |
| (WebCore::Cairo::drawGlyphs): |
| * platform/graphics/cairo/PlatformContextCairo.cpp: |
| (WebCore::reduceSourceByAlpha): Deleted. |
| (WebCore::prepareCairoContextSource): Deleted. |
| (WebCore::PlatformContextCairo::prepareForFilling): Deleted. |
| (WebCore::PlatformContextCairo::prepareForStroking): Deleted. |
| (WebCore::PlatformContextCairo::clipForPatternFilling): Deleted. |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| |
| 2018-01-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Use one-time ShadowBlur objects when performing shadowing |
| https://bugs.webkit.org/show_bug.cgi?id=181720 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Don't maintain a ShadowBlur object in the PlatformContextCairo class. |
| Instead, use temporary ShadowBlur objects whenever shadowing is needed, |
| providing all the shadow state information to it and drawing shadow into |
| the given GraphicsContext object. |
| |
| ShadowBlur constructors are cleaned up. The 'shadows ignored' argument |
| can now also be provided to the variant that accepts explicit shadow |
| attributes, but the argument is false by default. |
| |
| In CairoOperations, the ShadowBlurUsage functionality is rolled into the |
| new ShadowState class. ShadowState parameter is now used for operations |
| that might need to perform shadow painting. Call sites are modified |
| accordingly. |
| |
| Cairo::State::setShadowValues() and Cairo::State::clearShadow() are |
| removed, since the ShadowBlur object that was modified through those is |
| being removed from the PlatformContextCairo class. We still have to flip |
| the Y-axis of the shadow offset in GraphicsContext::setPlatformShadow() |
| when shadows are ignoring transformations. |
| |
| No new tests -- no change in behavior. |
| |
| * platform/graphics/ShadowBlur.cpp: |
| (WebCore::ShadowBlur::ShadowBlur): |
| * platform/graphics/ShadowBlur.h: |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::drawGlyphsShadow): |
| (WebCore::Cairo::ShadowState::ShadowState): |
| (WebCore::Cairo::ShadowState::isVisible const): |
| (WebCore::Cairo::ShadowState::isRequired const): |
| (WebCore::Cairo::fillRect): |
| (WebCore::Cairo::fillRoundedRect): |
| (WebCore::Cairo::fillRectWithRoundedHole): |
| (WebCore::Cairo::fillPath): |
| (WebCore::Cairo::strokeRect): |
| (WebCore::Cairo::strokePath): |
| (WebCore::Cairo::drawGlyphs): |
| (WebCore::Cairo::drawNativeImage): |
| (WebCore::Cairo::State::setShadowValues): Deleted. |
| (WebCore::Cairo::State::clearShadow): Deleted. |
| (WebCore::Cairo::ShadowBlurUsage::ShadowBlurUsage): Deleted. |
| (WebCore::Cairo::ShadowBlurUsage::required const): Deleted. |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/FontCairo.cpp: |
| (WebCore::FontCascade::drawGlyphs): |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::restorePlatformState): |
| (WebCore::GraphicsContext::drawNativeImage): |
| (WebCore::GraphicsContext::fillPath): |
| (WebCore::GraphicsContext::strokePath): |
| (WebCore::GraphicsContext::fillRect): |
| (WebCore::GraphicsContext::setPlatformShadow): |
| (WebCore::GraphicsContext::clearPlatformShadow): |
| (WebCore::GraphicsContext::strokeRect): |
| (WebCore::GraphicsContext::platformFillRoundedRect): |
| (WebCore::GraphicsContext::fillRectWithRoundedHole): |
| * platform/graphics/cairo/PlatformContextCairo.cpp: |
| (WebCore::PlatformContextCairo::drawSurfaceToContext): |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| (WebCore::PlatformContextCairo::shadowBlur): Deleted. |
| * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: |
| (WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame): |
| |
| 2018-01-17 Zan Dobersek <zdobersek@igalia.com> |
| |
| CanvasImageData: createImageData() parameter should not be nullable |
| https://bugs.webkit.org/show_bug.cgi?id=181670 |
| |
| Reviewed by Sam Weinig. |
| |
| createImageData() method on the CanvasImageData interface should not |
| treat the ImageData parameter as nullable, but should instead reject any |
| null values with a TypeError, as demanded by the specification. |
| |
| No new tests -- current tests covering createImageData(null) are updated |
| to properly cover new behavior of throwing a TypeError exception. |
| |
| * html/canvas/CanvasImageData.idl: |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::createImageData const): |
| * html/canvas/CanvasRenderingContext2DBase.h: |
| |
| 2018-01-16 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [CMake] Remove WebCoreDerivedSources library target |
| https://bugs.webkit.org/show_bug.cgi?id=181664 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| After unified source build has been introduced, CMake Visual |
| Studio build suffers complicated unnecessary recompilation issues |
| because Visual Studio invokes scripts twice in both WebCore and |
| WebCoreDerivedSources projects (Bug 181117). |
| |
| WebCoreDerivedSources library has been introduced in r198766 to |
| avoid command line length limit of CMake Ninja build on macOS. |
| Fortunately, unified source build has reduced the number of source |
| files to compile, WebCore doesn't need to be split anymore. |
| |
| No new tests (No behavior change) |
| |
| * CMakeLists.txt: Replaced WebCore_DERIVED_SOURCES with WebCore_SOURCES. Removed WebCoreDerivedSources library target. |
| Do not compile each JavaScript Builtins.cpp files because the unified source WebCoreJSBuiltins.cpp is already included. |
| * PlatformGTK.cmake: Replaced WebCore_DERIVED_SOURCES with WebCore_SOURCES. |
| * PlatformWin.cmake: Ditto. |
| |
| 2018-01-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Can't scroll iframe after toggling it to display:none and back |
| https://bugs.webkit.org/show_bug.cgi?id=181708 |
| rdar://problem/13234778 |
| |
| Reviewed by Tim Horton. |
| |
| Nothing updated the FrameView's set of scrollable areas when a subframe came back from display:none. |
| Mirror the existing virtual removeChild() by making addChild() virtual, and using it to mark |
| the FrameView's scrollable area set as dirty. |
| |
| Test: tiled-drawing/scrolling/non-fast-region/non-fast-scrollable-region-hide-show-iframe.html |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::addChild): |
| * page/FrameView.h: |
| * platform/ScrollView.h: |
| |
| 2018-01-16 Chris Dumez <cdumez@apple.com> |
| |
| SWServerWorker::m_contextConnectionIdentifier may get out of date |
| https://bugs.webkit.org/show_bug.cgi?id=181687 |
| <rdar://problem/36548111> |
| |
| Reviewed by Brady Eidson. |
| |
| SWServerWorker::m_contextConnectionIdentifier may get out of date. This happens when the |
| context process crashes and is relaunched. |
| |
| No new tests, added assertion in terminateWorkerInternal() that hits without this fix. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::runServiceWorker): |
| (WebCore::SWServer::terminateWorkerInternal): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| * workers/service/server/SWServerWorker.h: |
| (WebCore::SWServerWorker::setContextConnectionIdentifier): |
| |
| 2018-01-16 Jer Noble <jer.noble@apple.com> |
| |
| Reset MediaSourcePrivateAVFObjC's m_sourceBufferWithSelectedVideo when the underlying SourceBufferPrivate is removed. |
| https://bugs.webkit.org/show_bug.cgi?id=181707 |
| <rdar://problem/34809474> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: media/media-source/media-source-remove-unload-crash.html |
| |
| * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm: |
| (WebCore::MediaSourcePrivateAVFObjC::removeSourceBuffer): |
| |
| 2018-01-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Implement dummy WebAuthN IDLs |
| https://bugs.webkit.org/show_bug.cgi?id=181627 |
| <rdar://problem/36459864> |
| |
| Reviewed by Alex Christensen. |
| |
| This patch implements dummy WebAuthN IDLs and connect them with Credential Management as well. |
| All implementations in this patch are subject to change when real implementations land. The |
| purpose here on the other hand is to have IDLs, bindings and implementations connected. This |
| patch should handle all IDLs that we need. |
| |
| No tests. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Modules/credentialmanagement/CredentialCreationOptions.h: |
| * Modules/credentialmanagement/CredentialCreationOptions.idl: |
| * Modules/credentialmanagement/CredentialRequestOptions.h: |
| * Modules/credentialmanagement/CredentialRequestOptions.idl: |
| * Modules/webauthn/AuthenticatorAssertionResponse.cpp: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.cpp. |
| (WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse): |
| (WebCore::AuthenticatorAssertionResponse::~AuthenticatorAssertionResponse): |
| (WebCore::AuthenticatorAssertionResponse::authenticatorData): |
| (WebCore::AuthenticatorAssertionResponse::signature): |
| (WebCore::AuthenticatorAssertionResponse::userHandle): |
| * Modules/webauthn/AuthenticatorAssertionResponse.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h. |
| * Modules/webauthn/AuthenticatorAssertionResponse.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Modules/webauthn/AuthenticatorAttestationResponse.cpp: Copied from Source/WebCore/Modules/credentialmanagement/CredentialCreationOptions.h. |
| (WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse): |
| (WebCore::AuthenticatorAttestationResponse::~AuthenticatorAttestationResponse): |
| (WebCore::AuthenticatorAttestationResponse::attestationObject): |
| * Modules/webauthn/AuthenticatorAttestationResponse.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h. |
| * Modules/webauthn/AuthenticatorAttestationResponse.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Modules/webauthn/AuthenticatorResponse.cpp: Copied from Source/WebCore/Modules/credentialmanagement/CredentialCreationOptions.h. |
| (WebCore::AuthenticatorResponse::AuthenticatorResponse): |
| (WebCore::AuthenticatorResponse::~AuthenticatorResponse): |
| (WebCore::AuthenticatorResponse::clientDataJSON): |
| * Modules/webauthn/AuthenticatorResponse.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h. |
| * Modules/webauthn/AuthenticatorResponse.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Modules/webauthn/PublicKeyCredential.cpp: |
| (WebCore::PublicKeyCredential::rawId): |
| (WebCore::PublicKeyCredential::response): |
| (WebCore::PublicKeyCredential::getClientExtensionResults): |
| (WebCore::PublicKeyCredential::isUserVerifyingPlatformAuthenticatorAvailable): |
| * Modules/webauthn/PublicKeyCredential.h: |
| * Modules/webauthn/PublicKeyCredential.idl: |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h. |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.idl: Added. |
| * Modules/webauthn/PublicKeyCredentialDescriptor.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialCreationOptions.h. |
| * Modules/webauthn/PublicKeyCredentialDescriptor.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.h: Copied from Source/WebCore/Modules/credentialmanagement/CredentialCreationOptions.h. |
| * Modules/webauthn/PublicKeyCredentialRequestOptions.idl: Copied from Source/WebCore/Modules/credentialmanagement/CredentialRequestOptions.h. |
| * Modules/webauthn/PublicKeyCredentialType.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Modules/webauthn/PublicKeyCredentialType.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl. |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/WebCoreBuiltinNames.h: |
| |
| 2018-01-16 Zalan Bujtas <zalan@apple.com> |
| |
| AX: Do not trigger layout in updateBackingStore() unless it is safe to do so |
| https://bugs.webkit.org/show_bug.cgi?id=181703 |
| <rdar://problem/36365706> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Document::isSafeToUpdateStyleOrLayout() can tell whether it is safe to run layout. |
| |
| Unable to create test with WebInspector involved. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::updateBackingStore): |
| * dom/Document.cpp: |
| (WebCore::Document::isSafeToUpdateStyleOrLayout const): |
| (WebCore::Document::updateStyleIfNeeded): |
| (WebCore::Document::updateLayout): |
| (WebCore::isSafeToUpdateStyleOrLayout): Deleted. |
| * dom/Document.h: |
| |
| 2018-01-16 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r226962. |
| |
| The LayoutTest added with this change is a flaky timeout. |
| |
| Reverted changeset: |
| |
| "Support for preconnect Link headers" |
| https://bugs.webkit.org/show_bug.cgi?id=181657 |
| https://trac.webkit.org/changeset/226962 |
| |
| 2018-01-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Text looks bad on some CSS spec pages |
| https://bugs.webkit.org/show_bug.cgi?id=181700 |
| rdar://problem/36552107 |
| |
| Reviewed by Tim Horton. |
| |
| When making new tiles in a TileController, we failed to set their "supports antialiased layer text" |
| setting, so tile caches could end up with a mixture of layers that do and do not support |
| antialiased layer text. |
| |
| No tests because the tiled drawing tests don't dump out tiles inside of tile caches. |
| |
| * platform/graphics/ca/TileController.cpp: |
| (WebCore::TileController::createTileLayer): |
| |
| 2018-01-16 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| REGRESSION(r221292): svg/animations/animateTransform-pattern-transform.html crashes with security assertion |
| https://bugs.webkit.org/show_bug.cgi?id=179986 |
| |
| Reviewed by Simon Fraser. |
| |
| This patch reverts all or parts of the following changes-sets |
| <http://trac.webkit.org/changeset/221292> |
| <http://trac.webkit.org/changeset/197967> |
| <http://trac.webkit.org/changeset/196670> |
| |
| A JS statement like this: |
| var item = text.x.animVal.getItem(0); |
| |
| Creates the following C++ objects: |
| SVGAnimatedListPropertyTearOff<SVGLengthListValues> for 'text.x' |
| SVGListPropertyTearOff<SVGLengthListValues> for 'text.x.animVal' |
| SVGPropertyTearOff<SVGLengthValue> for 'text.x.animVal.getItem(0)' |
| |
| If 'item' changes, the attribute 'x' of the element '<text>' will change |
| as well. But this binding works only in one direction. If the attribute |
| 'x' of the element '<text>' changes, e.g.: |
| |
| text.setAttribute('x', '10,20,30'); |
| |
| This will detach 'item' from the element <text> and any further changes |
| in 'item' won't affect the attribute 'x' of element <text>. |
| |
| The one direction binding can only work if this chain of tear-off objects |
| is kept connected. This is implemented by RefCounted back pointers from |
| SVGPropertyTearOff and SVGListPropertyTearOff to SVGAnimatedListPropertyTearOff. |
| |
| The security crashes and the memory leaks are happening because of the |
| raw forward pointers: |
| -- SVGAnimatedListPropertyTearOff maintains raw pointers of type |
| SVGListPropertyTearOff for m_baseVal and m_animVal |
| -- The m_wrappers and m_animatedWrappers of SVGAnimatedListPropertyTearOff |
| are vectors of raw pointer Vector<SVGLength*> |
| |
| To control the life cycle of the raw pointers, SVGListPropertyTearOff and |
| SVGPropertyTearOff call SVGAnimatedListPropertyTearOff::propertyWillBeDeleted() |
| to notify it they are going to be deleted. In propertyWillBeDeleted(), we |
| clear the pointers so they are not used after being freed. This mechanism |
| has been error-prone and we've never got it 100% right. |
| |
| The solution we need to adopt with SVG tear-off objects is the following: |
| -- All the forward pointers should be weak pointers. |
| -- All the back pointers should be ref pointers. |
| |
| This solution may not look intuitive but it solves the bugs and keeps the |
| one direction binding. The forward weak pointers allows the tear-off |
| objects to go aways if no reference from JS exists. The back ref pointers |
| maintains the chain of objects and guarantees the correct binding. |
| |
| * svg/SVGPathSegList.h: |
| * svg/SVGTransformList.h: |
| * svg/properties/SVGAnimatedListPropertyTearOff.h: |
| (WebCore::SVGAnimatedListPropertyTearOff::baseVal): |
| (WebCore::SVGAnimatedListPropertyTearOff::animVal): |
| * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: |
| * svg/properties/SVGAnimatedProperty.h: |
| (WebCore::SVGAnimatedProperty::isAnimatedListTearOff const): |
| (WebCore::SVGAnimatedProperty::propertyWillBeDeleted): Deleted. |
| * svg/properties/SVGAnimatedPropertyTearOff.h: |
| * svg/properties/SVGAnimatedTransformListPropertyTearOff.h: |
| * svg/properties/SVGListProperty.h: |
| (WebCore::SVGListProperty::initializeValuesAndWrappers): |
| (WebCore::SVGListProperty::getItemValuesAndWrappers): |
| (WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers): |
| (WebCore::SVGListProperty::replaceItemValuesAndWrappers): |
| (WebCore::SVGListProperty::removeItemValuesAndWrappers): |
| (WebCore::SVGListProperty::appendItemValuesAndWrappers): |
| (WebCore::SVGListProperty::createWeakPtr const): |
| * svg/properties/SVGListPropertyTearOff.h: |
| (WebCore::SVGListPropertyTearOff::removeItemFromList): |
| (WebCore::SVGListPropertyTearOff::~SVGListPropertyTearOff): Deleted. |
| * svg/properties/SVGPropertyTearOff.h: |
| (WebCore::SVGPropertyTearOff::createWeakPtr const): |
| (WebCore::SVGPropertyTearOff::~SVGPropertyTearOff): |
| |
| 2018-01-16 Eric Carlson <eric.carlson@apple.com> |
| |
| AVSampleBufferDisplayLayer should be flushed when application activates |
| https://bugs.webkit.org/show_bug.cgi?id=181623 |
| <rdar://problem/36487738> |
| |
| Reviewed by Darin Adler. |
| |
| No new tests, I wasn't able to reproduce it in a test. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * dom/Document.cpp: |
| (WebCore::Document::addApplicationStateChangeListener): New. |
| (WebCore::Document::removeApplicationStateChangeListener): Ditto. |
| (WebCore::Document::forEachApplicationStateChangeListener): Ditto. |
| * dom/Document.h: |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::registerWithDocument): Register for application state changes. |
| (WebCore::HTMLMediaElement::unregisterWithDocument): Unregister. |
| (WebCore::HTMLMediaElement::applicationWillResignActive): Pass through to the player. |
| (WebCore::HTMLMediaElement::applicationDidBecomeActive): Ditto. |
| * html/HTMLMediaElement.h: |
| |
| * page/ApplicationStateChangeListener.h: Added. |
| (WebCore::ApplicationStateChangeListener::applicationWillResignActive): |
| (WebCore::ApplicationStateChangeListener::applicationDidBecomeActive): |
| * page/Page.cpp: |
| (WebCore::Page::forEachDocument): |
| (WebCore::Page::applicationWillResignActive): |
| (WebCore::Page::applicationDidEnterBackground): |
| (WebCore::Page::applicationWillEnterForeground): |
| (WebCore::Page::applicationDidBecomeActive): |
| * page/Page.h: |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::applicationWillResignActive): |
| (WebCore::MediaPlayer::applicationDidBecomeActive): |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::applicationWillResignActive): |
| (WebCore::MediaPlayerPrivateInterface::applicationDidBecomeActive): |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): Switch |
| to release logging. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueCorrectedVideoSample): Split out of enqueueVideoSample. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample): Move code that updates |
| the display later to enqueueCorrectedVideoSample. Rearrange logic to the image painter sample |
| buffer has the correct timestamp. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::layerErrorDidChange): Switch to release logging. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::layerStatusDidChange): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::applicationDidBecomeActive): f the display |
| layer is in the "failed" state, flush the renderer and update the display mode. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers): Switch to release logging. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::cancelLoad): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::prepareToPlay): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayMode): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::pause): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVolume): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setMuted): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateReadyState) Ditto.: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::logChannel const): Ditto. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateSampleTimes): Deleted. |
| |
| 2018-01-16 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| PAL should link to JavaScriptCore rather than WTF |
| https://bugs.webkit.org/show_bug.cgi?id=181683 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| Do not link directly to JavaScriptCore. Get it via PAL. |
| |
| * CMakeLists.txt: |
| |
| 2018-01-16 Zach Li <zachli@apple.com> |
| |
| Add pop-up policy support in website policies. |
| https://bugs.webkit.org/show_bug.cgi?id=181544. |
| rdar://problem/30521400. |
| |
| Reviewed by Alex Christensen. |
| |
| * loader/DocumentLoader.h: |
| Introduce pop-up policy getter and setter. Initialize |
| the policy as Default. |
| (WebCore::DocumentLoader::popUpPolicy const): |
| (WebCore::DocumentLoader::setPopUpPolicy): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::allowPopUp): |
| Pop-up policy specified on a per-page basis holds |
| precedence over the global policy. If no pop-up policy |
| is specified during navigation, global policy is used. |
| |
| 2018-01-16 Jer Noble <jer.noble@apple.com> |
| |
| Crash playing audio-only HLS stream via hls.js (MSE) |
| https://bugs.webkit.org/show_bug.cgi?id=181691 |
| <rdar://problem/32967295> |
| |
| Reviewed by Eric Carlson. |
| |
| Add a weak-link check to the block called by -[AVSampleBufferDisplayLayer requestMediaDataWhenReadyOnQueue:usingBlock:]. |
| |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled): |
| (WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples): |
| (WebCore::SourceBufferPrivateAVFObjC::setVideoLayer): |
| |
| 2018-01-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Rename applyHorizontalScale/applyVerticalScale in SVG filters, and related cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=181684 |
| |
| Reviewed by Alex Christensen. |
| |
| Rename the confusing applyHorizontalScale/applyVerticalScale to scaledByFilterResolution(), |
| and have it take and return a FloatSize. Change callers to do math in terms of FloatSizes. |
| |
| Add inflate(size) to each of the rect classes. |
| |
| * platform/graphics/FloatRect.h: |
| (WebCore::FloatRect::inflate): |
| * platform/graphics/IntRect.h: |
| (WebCore::IntRect::inflate): |
| * platform/graphics/LayoutRect.h: |
| (WebCore::LayoutRect::inflate): |
| * platform/graphics/filters/FEDisplacementMap.cpp: |
| (WebCore::FEDisplacementMap::platformApplySoftware): |
| * platform/graphics/filters/FEDropShadow.cpp: |
| (WebCore::FEDropShadow::determineAbsolutePaintRect): |
| (WebCore::FEDropShadow::platformApplySoftware): |
| * platform/graphics/filters/FEGaussianBlur.cpp: |
| (WebCore::FEGaussianBlur::calculateUnscaledKernelSize): |
| (WebCore::FEGaussianBlur::calculateKernelSize): |
| (WebCore::FEGaussianBlur::determineAbsolutePaintRect): |
| (WebCore::FEGaussianBlur::platformApplySoftware): |
| * platform/graphics/filters/FEGaussianBlur.h: |
| * platform/graphics/filters/FEMorphology.cpp: |
| (WebCore::FEMorphology::determineAbsolutePaintRect): |
| (WebCore::FEMorphology::platformApplySoftware): |
| * platform/graphics/filters/FEOffset.cpp: |
| (WebCore::FEOffset::determineAbsolutePaintRect): |
| (WebCore::FEOffset::platformApplySoftware): |
| * platform/graphics/filters/Filter.h: |
| (WebCore::Filter::setSourceImage): |
| (WebCore::Filter::scaledByFilterResolution const): |
| (WebCore::Filter::applyHorizontalScale const): Deleted. |
| (WebCore::Filter::applyVerticalScale const): Deleted. |
| * platform/graphics/filters/FilterOperations.cpp: |
| (WebCore::outsetSizeForBlur): |
| * rendering/FilterEffectRenderer.h: |
| * svg/graphics/filters/SVGFilter.cpp: |
| (WebCore::SVGFilter::scaledByFilterResolution const): |
| (WebCore::SVGFilter::applyHorizontalScale const): Deleted. |
| (WebCore::SVGFilter::applyVerticalScale const): Deleted. |
| * svg/graphics/filters/SVGFilter.h: |
| |
| 2018-01-16 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [CMake][Mac] Fix the build errors |
| https://bugs.webkit.org/show_bug.cgi?id=181665 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (No behavior change) |
| |
| * CMakeLists.txt: Added Modules/paymentrequest/MerchantValidationEvent.idl to compile. |
| * PlatformMac.cmake: Added Modules/paymentrequest/MerchantValidationEvent.cpp to compile. |
| Added workers/service/context and Modules/applicationmanifest as forwarding header paths. |
| |
| 2018-01-16 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Provide the `src` of an attachment to the UI delegate when an attachment is inserted |
| https://bugs.webkit.org/show_bug.cgi?id=181638 |
| <rdar://problem/36508702> |
| |
| Reviewed by Dan Bernstein. |
| |
| Adjust the `didInsertAttachment` codepath to additionally propagate the attachment element's `src`. |
| Additionally, fix an issue with insertion and removal client notifications wherein the client can receive |
| insertion calls without corresponding removal calls, or vice versa. This is an existing issue, but matters more |
| now because we actually need to access the attachment element for its `src` when propagating changes to the |
| client. See below for details. |
| |
| Test: WKAttachmentTests.AttachmentUpdatesWhenInsertingRichMarkup |
| |
| * dom/Document.h: |
| (WebCore::Document::attachmentElementsByIdentifier const): |
| * editing/Editor.cpp: |
| (WebCore::Editor::notifyClientOfAttachmentUpdates): |
| * page/EditorClient.h: |
| (WebCore::EditorClient::didInsertAttachment): |
| * page/Frame.cpp: |
| (WebCore::Frame::setDocument): |
| |
| When a Frame's document changes, inform the client that the attachments in the previous document are going away. |
| For each attachment currently connected to the document, we have either (1) already informed the client that it |
| was inserted, or (2) the attachment is pending an insertion call to the client. If (1) is the case, then we'll |
| tell the client that the attachment is removed, which will balance out the earlier insertion call. If (2) is the |
| case, then we'll remove the previously inserted attachment identifier from the set of attachment identifiers |
| pending insertion, and the client won't be informed of insertions or removals. |
| |
| 2018-01-16 Antoine Quint <graouts@apple.com> |
| |
| Use traits for animation timing functions |
| https://bugs.webkit.org/show_bug.cgi?id=181651 |
| |
| Reviewed by Dean Jackson. |
| |
| Cleaning up Dean's previous patch as suggested by Darin's post-commit review comments. The |
| downcast function can match const automatically and it's a better style to put the * inside |
| the downcast call rather than outside. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::createTimingFunctionValue): |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::operator<<): |
| (WebCore::TimingFunction::transformTime const): |
| * platform/animation/TimingFunction.h: |
| * platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm: |
| (WebCore::toCAMediaTimingFunction): |
| |
| 2018-01-16 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Live streaming cleanups |
| https://bugs.webkit.org/show_bug.cgi?id=181672 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Switch to |
| streaming code path when no content-length was reported by the |
| http source element. |
| (WebCore::MediaPlayerPrivateGStreamer::totalBytes const): Return early when streaming. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (CachedResourceStreamingClient::responseReceived): Emit headers as |
| an element message, like souphttpsrc. |
| |
| 2018-01-15 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] misc fixes and cleanups |
| https://bugs.webkit.org/show_bug.cgi?id=181647 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::convertEnumerationToString): New utility function to convert preload enum to string. |
| * platform/graphics/MediaPlayerEnums.h: Ditto. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::load): Debug tweak |
| (WebCore::MediaPlayerPrivateGStreamer::prepareToPlay): Ditto |
| (WebCore::MediaPlayerPrivateGStreamer::play): Ditto |
| (WebCore::MediaPlayerPrivateGStreamer::paused const): Ditto |
| (WebCore::MediaPlayerPrivateGStreamer::processBufferingStats): Prevent useless state update. |
| (WebCore::MediaPlayerPrivateGStreamer::fillTimerFired): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::updateStates): Debug tweak. |
| (WebCore::MediaPlayerPrivateGStreamer::setDownloadBuffering): Ditto. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| Remove useless handlesSyncMessage method. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::setMuted): Prevent useless state update. |
| (WebCore::MediaPlayerPrivateGStreamerBase::muted const): Debug tweak. |
| (WebCore::MediaPlayerPrivateGStreamerBase::setStreamVolumeElement): Ditto. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webkit_web_src_init): Enable keepAlive by default like in souphttpsrc. |
| (webKitWebSrcStart): Debug tweak. |
| (webKitWebSrcQueryWithParent): Ditto. |
| (webKitWebSrcNeedData): Ditto. |
| (CachedResourceStreamingClient::responseReceived): Change appsrc |
| stream-type when we wan't seek. Also update caps like souphttpsrc |
| does. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h: Add forward declaration of MediaPlayer. |
| * platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp: |
| (WebCore::MediaSourceClientGStreamerMSE::append): Fix compilation warning. |
| |
| 2018-01-16 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [WPE] Two clearkey tests failing since r226621 |
| https://bugs.webkit.org/show_bug.cgi?id=181532 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Whith a fake initData, we can have a pssh size nul, thus we should check it. |
| We saw this issue in the subtest "initData longer than 64Kb characters" in |
| the clearkey-generate-request-disallowed-input layout test. |
| |
| * platform/encryptedmedia/clearkey/CDMClearKey.cpp: |
| (WebCore::extractKeyidsLocationFromCencInitData): |
| |
| 2018-01-15 Yoav Weiss <yoav@yoav.ws> |
| |
| Support for preconnect Link headers |
| https://bugs.webkit.org/show_bug.cgi?id=181657 |
| |
| Reviewed by Darin Adler. |
| |
| Move the preconnect functionality into its own function, and |
| also call this function when Link headers are processed. |
| |
| Test: http/tests/preconnect/link-header-rel-preconnect-http.php |
| |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::loadLinksFromHeader): Call preconnect. |
| (WebCore::LinkLoader::preconnect): Preconnect to a host functionality moved here. |
| (WebCore::LinkLoader::preload): Renamed `preloadIfNeeded` to `preload`. |
| (WebCore::LinkLoader::loadLink): Call preconnect. |
| * loader/LinkLoader.h: |
| |
| 2018-01-15 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Improve use of ExportMacros |
| https://bugs.webkit.org/show_bug.cgi?id=181652 |
| |
| Reviewed by Konstantin Tokarev. |
| |
| Remove a comment. |
| |
| * platform/PlatformExportMacros.h: |
| |
| 2018-01-15 Konstantin Tokarev <annulen@yandex.ru> |
| |
| image-rendering should affect scaling of border-image |
| https://bugs.webkit.org/show_bug.cgi?id=169440 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Test: fast/borders/border-image-pixelated.html |
| |
| * rendering/style/NinePieceImage.cpp: |
| (WebCore::NinePieceImage::paint): |
| |
| 2018-01-15 Tomas Popela <tpopela@redhat.com> |
| |
| 2.19.3 ACCELERATED_2D_CANVAS support is broken |
| https://bugs.webkit.org/show_bug.cgi?id=180799 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::didDraw): |
| |
| 2018-01-15 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Enable HTTP/2 |
| https://bugs.webkit.org/show_bug.cgi?id=181551 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Start supporting HTTP/2 protocol. The first step is just enabling the HTTP/2 on Curl backend. |
| Next step will be to enable multiplexing feature. |
| |
| No new tests because we don't have HTTP/2 test backend yet. |
| |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::CurlContext::isHttp2Enabled const): |
| (WebCore::CurlHandle::enableHttp): |
| (WebCore::CurlHandle::enableHttpGetRequest): |
| (WebCore::CurlHandle::enableHttpHeadRequest): |
| (WebCore::CurlHandle::enableHttpPostRequest): |
| (WebCore::CurlHandle::enableHttpPutRequest): |
| (WebCore::CurlHandle::setHttpCustomRequest): |
| * platform/network/curl/CurlContext.h: |
| |
| 2018-01-15 Dean Jackson <dino@apple.com> |
| |
| Use a helper function for checked arithmetic in WebGL validation |
| https://bugs.webkit.org/show_bug.cgi?id=181620 |
| <rdar://problem/36485879> |
| |
| Reviewed by Eric Carlson. |
| |
| Eric recommended using a templated helper function to do |
| a common arithmetic check in WebGL validation. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::validateIndexArrayConservative): |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::validateIndexArrayConservative): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise): |
| (WebCore::WebGLRenderingContextBase::validateDrawArrays): |
| (WebCore::WebGLRenderingContextBase::validateSimulatedVertexAttrib0): |
| (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): |
| * html/canvas/WebGLRenderingContextBase.h: |
| (WebCore::WebGLRenderingContextBase::checkedAddAndMultiply): New helper. |
| |
| 2018-01-15 Dean Jackson <dino@apple.com> |
| |
| Use traits for animation timing functions |
| https://bugs.webkit.org/show_bug.cgi?id=181651 |
| <rdar://problem/36525328> |
| |
| Reviewed by Antoine Quint. |
| |
| Use the type traits for TimingFunction classes, so |
| we can is<> and downcast<>. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::createTimingFunctionValue): |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::transformTime const): |
| * platform/animation/TimingFunction.h: |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::animationHasStepsTimingFunction): |
| (WebCore::animationHasFramesTimingFunction): |
| * platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm: |
| (WebCore::toCAMediaTimingFunction): |
| |
| 2018-01-15 Youenn Fablet <youenn@apple.com> |
| |
| RealtimeMediaSource should be ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=181649 |
| |
| Reviewed by Eric Carlson. |
| |
| Difficult to write a test as this is really racy. |
| RealtimeIncomingVideoSourceCocoa::OnFrame is taking a reference on a background thread |
| to send a task to the main thread. |
| This requires it to be thread safe ref counted. |
| |
| * platform/mediastream/RealtimeMediaSource.h: |
| |
| 2018-01-15 Philippe Normand <pnormand@igalia.com> |
| |
| Prevent useless MediaPlayer mute state notifications |
| https://bugs.webkit.org/show_bug.cgi?id=181646 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| On GTK port the mute change notification was triggering the test |
| runner to think the whole page mute state had changed and that |
| media elements were muted. The simplest solution is to propagate |
| the notification only if the state actually changed. |
| |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::muteChanged): Propagate mute notification |
| only if the mute state actually changed. |
| |
| 2018-01-15 Sebastian Dröge <sebastian@centricular.com> |
| |
| [GStreamer] Don't wait for draw condition variable when shutting down. |
| https://bugs.webkit.org/show_bug.cgi?id=180978 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): |
| (WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: |
| By also waiting for the draw condition variable while shutting down, |
| it is possible that the GStreamer video sink is waiting for the main |
| thread to actually render the current frame, while at the same time |
| the main thread is waiting for the GStreamer video sink to shut down, |
| resulting in a deadlock. |
| |
| 2018-01-13 Minsheng Liu <lambda@liu.ms> |
| |
| MathML Lengths should take zoom level into account |
| https://bugs.webkit.org/show_bug.cgi?id=180029 |
| |
| Reviewed by Frédéric Wang. |
| |
| The patch applies the effective zoom factor to physical units in toUserUnits(). |
| |
| Test: mathml/presentation/mspace-units-with-zoom.html |
| |
| * rendering/mathml/RenderMathMLBlock.cpp: |
| (WebCore::toUserUnits): |
| |
| 2018-01-12 Chris Dumez <cdumez@apple.com> |
| |
| ASSERTION FAILED: registration || isTerminating() in WebCore::SWServerWorker::skipWaiting() |
| https://bugs.webkit.org/show_bug.cgi?id=181603 |
| <rdar://problem/36476050> |
| |
| Reviewed by Youenn Fablet. |
| |
| No new tests, covered by existing tests that crash flakily. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::terminateWorkerInternal): |
| If the connection to the context process is gone, make sure we make the worker as terminated |
| so that it does not stay in Running state and in SWServer::m_runningOrTerminatingWorkers. |
| |
| * workers/service/server/SWServerRegistration.cpp: |
| (WebCore::SWServerRegistration::~SWServerRegistration): |
| Add assertions to make sure none of the registration's workers are still running when |
| the registration is destroyed. |
| |
| (WebCore::SWServerRegistration::updateRegistrationState): |
| Make sure registration workers that are overwritten are not still running. |
| |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::setState): |
| If a worker's state is set to redundant, make sure we also terminate it. |
| |
| 2018-01-12 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r226927. |
| https://bugs.webkit.org/show_bug.cgi?id=181621 |
| |
| Breaks 32-bit and iOS release for some reason that i don't |
| understand yet (Requested by dino on #webkit). |
| |
| Reverted changeset: |
| |
| "Use a helper function for checked arithmetic in WebGL |
| validation" |
| https://bugs.webkit.org/show_bug.cgi?id=181620 |
| https://trac.webkit.org/changeset/226927 |
| |
| 2018-01-12 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Data URL fonts split in the middle of an alphabet cause random letters to disappear |
| https://bugs.webkit.org/show_bug.cgi?id=175845 |
| <rdar://problem/33996578> |
| |
| Reviewed by Brent Fulgham. |
| |
| It is fairly common practice for a font foundry to split a font up into two files such that a semi-random |
| half of the alphabet is present in one of the files, and the other half is present in the other file. This |
| practice involves representing the files as data URLs, so as to minimize the time it takes to load them. |
| |
| Because resource loading is asynchronous (even for data URLs), it is possible today to get a paint after |
| the first file is loaded but before the second file is loaded. Indeed, because of the way font fallback |
| works, we will never start loading the second file until a layout has occurred with the first font. |
| |
| Because a site usually only uses this pattern for a handful of fonts, and I've never seen this pattern |
| being used for CJK fonts, it isn't very expensive to opportunistically decode these data URLs eagerly. |
| Using this method doesn't actually guarantee that the two fonts will load in between successive paints, |
| but it at least makes this much more likely. This patch implements this strategy, along with a size |
| threshold to make sure that we won't decode any super large data URLs when it isn't necessary. |
| |
| Test: fast/text/font-load-data-partitioned-alphabet.html |
| |
| * css/CSSFontFace.cpp: |
| (WebCore::CSSFontFace::opportunisticallyStartFontDataURLLoading): |
| * css/CSSFontFace.h: |
| * css/CSSFontFaceSource.cpp: |
| (WebCore::CSSFontFaceSource::opportunisticallyStartFontDataURLLoading): |
| * css/CSSFontFaceSource.h: |
| * css/CSSFontSelector.cpp: |
| (WebCore::CSSFontSelector::opportunisticallyStartFontDataURLLoading): |
| * css/CSSFontSelector.h: |
| * platform/graphics/FontCascadeFonts.cpp: |
| (WebCore::opportunisticallyStartFontDataURLLoading): |
| (WebCore::FontCascadeFonts::glyphDataForVariant): |
| * platform/graphics/FontSelector.h: |
| |
| 2018-01-12 Alex Christensen <achristensen@webkit.org> |
| |
| History state should be updated during client redirects with asynchronous policy decisions |
| https://bugs.webkit.org/show_bug.cgi?id=181358 |
| <rdar://problem/35547689> |
| |
| Reviewed by Andy Estes. |
| |
| When decidePolicyForNavigationAction is responded to asynchronously during a client redirect, |
| HistoryController::updateForRedirectWithLockedBackForwardList does not update the history because |
| the document loader has not been marked as a client redirect because the FrameLoader only looks |
| at its provisional document loader to mark it as a client redirect. When decidePolicyForNavigationAction |
| is responded to asynchronously, though, the FrameLoader's provisional document loader has moved to |
| its policy document loader. To get both asynchronous and synchronous cases, let's just mark the document |
| loader as a client redirect whether it's the provisional or policy document loader. |
| |
| Covered by a new API test. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::loadPostRequest): |
| |
| 2018-01-12 Dean Jackson <dino@apple.com> |
| |
| Use a helper function for checked arithmetic in WebGL validation |
| https://bugs.webkit.org/show_bug.cgi?id=181620 |
| <rdar://problem/36485879> |
| |
| Reviewed by Eric Carlson. |
| |
| Eric recommended using a templated helper function to do |
| a common arithmetic check in WebGL validation. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::validateIndexArrayConservative): |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::validateIndexArrayConservative): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::checkedAddAndMultiply): New helper. |
| (WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise): |
| (WebCore::WebGLRenderingContextBase::validateDrawArrays): |
| (WebCore::WebGLRenderingContextBase::validateSimulatedVertexAttrib0): |
| (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): |
| * html/canvas/WebGLRenderingContextBase.h: |
| |
| 2018-01-12 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] CTFontCopyDefaultCascadeListForLanguages() can return nullptr |
| https://bugs.webkit.org/show_bug.cgi?id=181615 |
| <rdar://problem/36334637> |
| |
| Reviewed by Jon Lee. |
| |
| Speculative fix. We are getting crash reports saying that this call can return nullptr, and we |
| don't check for it. |
| |
| No new tests because I couldn't find the specific input that causes it to return nullptr. (I |
| tried running this code with every 0, 1, and 2 length locale string, every weight value, and |
| every italic value, and couldn't get it to crash. I also inspected the code to figure out what |
| values would cause it to return nullptr, and I couldn't find anything other than if the system |
| has a totally busted font setup.) |
| |
| * platform/graphics/cocoa/FontDescriptionCocoa.cpp: |
| (WebCore::SystemFontDatabase::computeCascadeList): |
| |
| 2018-01-11 Dean Jackson <dino@apple.com> |
| |
| [WebGL] Simulated vertexAttrib0 can sometimes cause OUT_OF_MEMORY errors |
| https://bugs.webkit.org/show_bug.cgi?id=181558 |
| <rdar://problem/36189833> |
| |
| Reviewed by Eric Carlson. |
| |
| Very large element indices in the ELEMENT_ARRAY_BUFFER meant that |
| our simulated vertexAttrib0 buffer might be too large. We need |
| to check for out-of-memory, but we can also detect some of the issues |
| earlier in our validation code. Additionally, make sure that we don't |
| accidentally cast an unsigned to a signed. |
| |
| Test: fast/canvas/webgl/simulated-vertexAttrib0-invalid-indicies.html |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::validateIndexArrayConservative): Update validation |
| code to look for overflow, rather than relying on looking for sign changes. |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::validateIndexArrayConservative): Ditto. |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise): |
| (WebCore::WebGLRenderingContextBase::drawArrays): Check that we were able to simulate. |
| (WebCore::WebGLRenderingContextBase::drawElements): |
| (WebCore::WebGLRenderingContextBase::validateSimulatedVertexAttrib0): Update validation code, and |
| use GC3Duint, since that's what the indicies are. |
| (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): Ditto. |
| (WebCore::WebGLRenderingContextBase::drawArraysInstanced): Check that we were able to simulate. |
| (WebCore::WebGLRenderingContextBase::drawElementsInstanced): |
| * html/canvas/WebGLRenderingContextBase.h: |
| |
| 2018-01-12 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Large in-place attachment elements cause the document width to expand when inserted |
| https://bugs.webkit.org/show_bug.cgi?id=181614 |
| |
| Reviewed by Dan Bernstein. |
| |
| Make in-place images and videos have a max-width of 100%, so that large attachments aren't inserted with full |
| display size, causing the document and viewport width to expand. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::populateShadowRootIfNecessary): |
| |
| 2018-01-12 Keith Rollin <krollin@apple.com> |
| |
| Logged JSON should escape "'s and \'s in strings. |
| https://bugs.webkit.org/show_bug.cgi?id=181608 |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests -- no new functionality, just changed logging. The |
| efficacy of the logging was verified by inspecting its output. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| |
| 2018-01-12 Dean Jackson <dino@apple.com> |
| |
| drawElements should be invalid if vertexAttrib0 doesn't have data |
| https://bugs.webkit.org/show_bug.cgi?id=181609 |
| <rdar://problem/36392883> |
| |
| Reviewed by Antoine Quint. |
| |
| If a vertex attribute has been enabled, but no data provided, then |
| draw validation should fail. |
| |
| Test: fast/canvas/webgl/drawElements-empty-vertex-data.html |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::validateVertexAttributes): If there were |
| never any data in the vertex buffer, then we incorrectly compared with 0. |
| |
| 2018-01-12 Youenn Fablet <youenn@apple.com> |
| |
| FormDataElement::lengthInBytes should use ThreadableBlobRegistry |
| https://bugs.webkit.org/show_bug.cgi?id=181554 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated test. |
| |
| Fix blobRegistry() use and add support for creating a response that may trigger the issue. |
| |
| |
| * platform/network/FormData.cpp: |
| (WebCore::FormDataElement::lengthInBytes const): Was using directly blobRegistry() while ThreadableBlobRegistry is more appropriate |
| in case this is called from workers. |
| * Modules/fetch/FetchBody.h: |
| * Modules/fetch/FetchResponse.h: |
| * fileapi/Blob.h: |
| * testing/ServiceWorkerInternals.cpp: |
| (WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse): |
| * testing/ServiceWorkerInternals.h: |
| * testing/ServiceWorkerInternals.idl: |
| |
| 2018-01-12 Jer Noble <jer.noble@apple.com> |
| |
| Wrap CDMFairPlayStreaming and related classes in ENABLE(ENCRYPTED_MEDIA) checks |
| https://bugs.webkit.org/show_bug.cgi?id=181602 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| |
| 2018-01-12 Youenn Fablet <youenn@apple.com> |
| |
| WebProcess should pass the registration identifier and not the worker identifier for fetch events |
| https://bugs.webkit.org/show_bug.cgi?id=181591 |
| |
| Reviewed by Chris Dumez. |
| |
| Test: http/wpt/service-workers/update-service-worker.https.html |
| |
| Store service worker registration identifier in ResourceLoaderOptions instead of service worker identifier. |
| |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): |
| (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest): |
| * loader/ResourceLoaderOptions.h: |
| * loader/WorkerThreadableLoader.cpp: |
| (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::prepareFetch): |
| (WebCore::CachedResourceLoader::determineRevalidationPolicy const): |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::setSelectedServiceWorkerRegistrationIdentifierIfNeeded): |
| (WebCore::CachedResourceRequest::setNavigationServiceWorkerRegistrationData): |
| (WebCore::CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded): Deleted. |
| * loader/cache/CachedResourceRequest.h: |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadSynchronously): |
| (WebCore::WorkerScriptLoader::loadAsynchronously): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::activeWorkerFromRegistrationID): |
| * workers/service/server/SWServer.h: |
| |
| 2018-01-12 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win][CMake] Remove all-in-one file for WebCore DerivedSources |
| https://bugs.webkit.org/show_bug.cgi?id=181582 |
| |
| Reviewed by Alex Christensen. |
| |
| Those source files are compiled in unified source build nowadays. |
| |
| No new tests (No behavior change) |
| |
| * CMakeLists.txt: Removed calling PROCESS_ALLINONE_FILE. |
| * DerivedSources.cpp: Removed. |
| * WebCoreMacros.cmake: Removed a macro PROCESS_ALLINONE_FILE. |
| |
| 2018-01-12 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [WinCairo][CMake] Use ${CURL_LIBRARY} instead of specifying the library name libcurl_imp explicitly |
| https://bugs.webkit.org/show_bug.cgi?id=181578 |
| |
| Reviewed by Alex Christensen. |
| |
| vcpkg has libcurl.lib, not libcurl_imp.lib. |
| |
| No new tests because no behavior change. |
| |
| * PlatformWinCairo.cmake: Link ${CURL_LIBRARY} instead of libcurl_imp. |
| |
| 2018-01-12 Jer Noble <jer.noble@apple.com> |
| |
| WebGL video texture black in Safari 11.0.2 and wrong colored in Safari Preview 11.1 |
| https://bugs.webkit.org/show_bug.cgi?id=181445 |
| <rdar://problem/36383183> |
| |
| Reviewed by Dean Jackson. |
| |
| Tests: added compile-time correctness tests for YCbCrMatrix values. |
| |
| Perform the derivation from YCbCr coefficients into matrices in constexpr expressions |
| at compile-time. This allows us to also perform compile-time correctness checks to catch |
| regressions which may cause incorrect color conversions. |
| |
| Since we now have general-purpose derivation of matrix values from coefficients, |
| adding missing specificed matrices is trivial, so add support for SMPTE 240M and BT.2020 |
| matrices. |
| |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| (WebCore::GLfloatColor::GLfloatColor): |
| (WebCore::GLfloatColor::abs): |
| (WebCore::GLfloatColor::isApproximatelyEqualTo const): |
| (WebCore::YCbCrMatrix::operator Vector<GLfloat> const): |
| (WebCore::YCbCrMatrix::YCbCrMatrix): |
| (WebCore::YCbCrMatrix::operator* const): |
| (WebCore::YCbCrToRGBMatrixForRangeAndTransferFunction): |
| |
| 2018-01-12 Antoine Quint <graouts@apple.com> |
| |
| Add support for the frames() timing function |
| https://bugs.webkit.org/show_bug.cgi?id=181585 |
| <rdar://problem/36463317> |
| |
| Reviewed by Dean. |
| |
| Implement the frames() timing function as specified in the CSS Timing Functions Level 1 |
| specification, specifically https://www.w3.org/TR/css-timing-1/#frames-timing-functions. |
| A frames timing function is a type of timing function that divides the input time into a |
| specified number of intervals of equal length. |
| |
| Test: transitions/frames-timing-function.html |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::createTimingFunctionValue): |
| * css/CSSTimingFunctionValue.cpp: |
| (WebCore::CSSFramesTimingFunctionValue::customCSSText const): |
| (WebCore::CSSFramesTimingFunctionValue::equals const): |
| * css/CSSTimingFunctionValue.h: |
| * css/CSSToStyleMap.cpp: |
| (WebCore::CSSToStyleMap::mapAnimationTimingFunction): |
| * css/CSSValue.cpp: |
| (WebCore::CSSValue::equals const): |
| (WebCore::CSSValue::cssText const): |
| (WebCore::CSSValue::destroy): |
| * css/CSSValue.h: |
| (WebCore::CSSValue::isFramesTimingFunctionValue const): |
| * css/CSSValueKeywords.in: |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeSteps): |
| (WebCore::consumeFrames): |
| (WebCore::consumeAnimationTimingFunction): |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::operator<<): |
| (WebCore::TimingFunction::transformTime const): |
| * platform/animation/TimingFunction.h: |
| (WebCore::TimingFunction::isFramesTimingFunction const): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::animationHasFramesTimingFunction): |
| (WebCore::GraphicsLayerCA::animationCanBeAccelerated const): |
| |
| 2018-01-12 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r226721. |
| https://bugs.webkit.org/show_bug.cgi?id=181583 |
| |
| Lets do a slightly different fix (Requested by anttik on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "REGRESSION(r225650): The scores of MotionMark tests Multiply |
| and Leaves dropped by 8%" |
| https://bugs.webkit.org/show_bug.cgi?id=181460 |
| https://trac.webkit.org/changeset/226721 |
| |
| 2018-01-11 Keith Miller <keith_miller@apple.com> |
| |
| Rename ENABLE_ASYNC_ITERATION to ENABLE_JS_ASYNC_ITERATION |
| https://bugs.webkit.org/show_bug.cgi?id=181573 |
| |
| Reviewed by Simon Fraser. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2018-01-11 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Import a CBOR coder from Chromium |
| https://bugs.webkit.org/show_bug.cgi?id=181522 |
| <rdar://problem/36055729> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch imports a CBOR coder including encoder and decoder from Chromium. CBOR encoder |
| is needed for WebAuthN to encode attestation object into binaries. When supporting extensions |
| in the future, CBOR encoder/decoder will be needed as well. Implementating and maintaining |
| a fully-fledged CBOR coder doesn't seem to align with WebKit's best interests. Therefore, |
| importing a most suitable third party implementation will be wise. |
| |
| In this patch, it fully integrate the whole coder into our codebase. Those changes includes: |
| 1. Substitute data structures that enjoy a better WTF version. |
| 2. Replacing marcos. |
| 3. Implementating workarounds for some functionalities that we lack fundamental types' support. |
| 4. Changing the coding style to match ours. |
| |
| This patch doesn't intend to improve the logic of the original codebase. Hence some of the |
| coding logic might not match what WebKit ususally has. |
| |
| Here is a full list of Chromium changes that constructed this CBOR coder in chronological order: |
| 6efcf495521d18d060027762f48bb292d6979136, |
| 9eb43fd347890b4c6cf54c4bd7ec1bbb88e381e1, |
| 31c85e74fd567772f18e0a41be468d04af721f21, |
| 68672fdcad280a8ff69b91927d38d0eabf2c87f2, |
| 0ca8667c0584fb21c0748ebd7468d32889759a07, |
| df763d790d7e45d70116bdefacbfd4f9faa8995e, |
| 6d30c4a621c65314db63eb56e87c19ab75627b26, |
| 50fe92953f4739f17a62303fedbf8db9234317c8, |
| 47be22c3603424d1832d046a348ff3f982500288, |
| 98a59e46948b2c71608926004fac8192b0ff2208, |
| 07540c6d850ed6e0fa508d63c20a8ce96d751de6, |
| 06ae32d640c8e4b86ea8914a80ee419ea16e56d8. |
| |
| Covered by API tests. |
| |
| * Modules/webauthn/cbor/CBORBinary.h: Added. |
| * Modules/webauthn/cbor/CBORReader.cpp: Added. |
| (cbor::CBORReader::CBORReader): |
| (cbor::CBORReader::~CBORReader): |
| (cbor::CBORReader::read): |
| (cbor::CBORReader::decodeCBOR): |
| (cbor::CBORReader::readVariadicLengthInteger): |
| (cbor::CBORReader::decodeValueToNegative): |
| (cbor::CBORReader::decodeValueToUnsigned): |
| (cbor::CBORReader::readSimpleValue): |
| (cbor::CBORReader::readString): |
| Workarounds applied. |
| (cbor::CBORReader::readBytes): |
| (cbor::CBORReader::readCBORArray): |
| (cbor::CBORReader::readCBORMap): |
| (cbor::CBORReader::canConsume): |
| (cbor::CBORReader::checkMinimalEncoding): |
| (cbor::CBORReader::checkExtraneousData): |
| (cbor::CBORReader::checkDuplicateKey): |
| (cbor::CBORReader::hasValidUTF8Format): |
| Workarounds applied. |
| (cbor::CBORReader::checkOutOfOrderKey): |
| (cbor::CBORReader::getErrorCode): |
| (cbor::CBORReader::errorCodeToString): |
| * Modules/webauthn/cbor/CBORReader.h: Added. |
| * Modules/webauthn/cbor/CBORValue.cpp: Added. |
| (cbor::CBORValue::CBORValue): |
| (cbor::CBORValue::operator=): |
| (cbor::CBORValue::~CBORValue): |
| (cbor::CBORValue::clone const): |
| (cbor::CBORValue::getInteger const): |
| (cbor::CBORValue::getUnsigned const): |
| (cbor::CBORValue::getNegative const): |
| (cbor::CBORValue::getString const): |
| (cbor::CBORValue::getByteString const): |
| (cbor::CBORValue::getArray const): |
| (cbor::CBORValue::getMap const): |
| (cbor::CBORValue::getSimpleValue const): |
| (cbor::CBORValue::internalMoveConstructFrom): |
| (cbor::CBORValue::internalCleanup): |
| * Modules/webauthn/cbor/CBORValue.h: Added. |
| * Modules/webauthn/cbor/CBORWriter.cpp: Added. |
| (cbor::CBORWriter::~CBORWriter): |
| (cbor::CBORWriter::write): |
| (cbor::CBORWriter::CBORWriter): |
| (cbor::CBORWriter::encodeCBOR): |
| Workarounds applied. |
| (cbor::CBORWriter::startItem): |
| (cbor::CBORWriter::setAdditionalInformation): |
| (cbor::CBORWriter::setUint): |
| (cbor::CBORWriter::getNumUintBytes): |
| * Modules/webauthn/cbor/CBORWriter.h: Added. |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2018-01-11 Chris Dumez <cdumez@apple.com> |
| |
| Setting Window.opener to null should disown its opener |
| https://bugs.webkit.org/show_bug.cgi?id=181505 |
| <rdar://problem/36443151> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Setting Window.opener to null should disown its opener as per: |
| - https://html.spec.whatwg.org/#dom-opener |
| |
| With this change, tabs opened by clicking link inside Gmail no |
| longer have the Gmail window as opener. |
| |
| Tests: fast/dom/Window/window-opener-set-to-null.html |
| fast/dom/Window/window-opener-shadowing.html |
| |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::JSDOMWindow::setOpener): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::disownOpener): |
| * page/DOMWindow.h: |
| * page/DOMWindow.idl: |
| |
| 2018-01-11 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] Star character disappears when bolded |
| https://bugs.webkit.org/show_bug.cgi?id=181568 |
| <rdar://problem/18755569> |
| |
| Reviewed by Simon Fraser. |
| |
| We had some code in ComplexTextController to ask the FontCache for a font, given the name |
| of a particular font CoreText used inside a CTRun. This is wrong for two reasons: fonts |
| are not identifiable by PostScript name (in the general case), and because the lookup |
| procedure requires a FontDescription, the result may yield a font that is not the one |
| looked up. The goal of this code was simply to preserve the rendering mode of the font, |
| but we removed support for these rendering modes years ago. So the solution is to skip |
| that lookup and use the CoreText font directly. |
| |
| Test: fast/text/unknown-font.html |
| |
| * platform/graphics/mac/ComplexTextControllerCoreText.mm: |
| (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): |
| |
| 2018-01-11 Keith Rollin <krollin@apple.com> |
| |
| Add optional logging of ITP-related user interaction information |
| https://bugs.webkit.org/show_bug.cgi?id=181556 |
| |
| Reviewed by Brent Fulgham. |
| |
| In order to support the tracking of the efficacy of Intelligent |
| Tracking Protection, add some logging indicating when the user |
| interacts with a page in a way that affects cookie partitioning. This |
| logging is off by default, and is enabled with `defaults write -g |
| WebKitLogCookieInformation -bool true`. |
| |
| No new tests -- no changed functionality. |
| |
| * loader/ResourceLoadObserver.cpp: |
| (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| * loader/ResourceLoadObserver.h: |
| (WebCore::ResourceLoadObserver::shouldLogUserInteraction const): |
| (WebCore::ResourceLoadObserver::setShouldLogUserInteraction): |
| |
| 2018-01-11 James Craig <jcraig@apple.com> |
| |
| AX: when invert colors is on, double-invert video elements in UserAgentStyleSheet |
| https://bugs.webkit.org/show_bug.cgi?id=168447 |
| <rdar://problem/30559874> |
| |
| Reviewed by Simon Fraser. |
| |
| Double-invert video when platform "invert colors" setting is enabled. Behavior matches |
| current "Smart Invert" feature of Safari Reader on macOS/iOS and other iOS native apps. |
| |
| Tests: accessibility/smart-invert-reference.html |
| accessibility/smart-invert.html |
| |
| * Modules/modern-media-controls/controls/media-controls.css: |
| (@media (inverted-colors)): |
| (:host): |
| (picture): |
| * css/html.css: |
| (@media (inverted-colors)): |
| (video): |
| |
| 2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Don't load inline data when requesting info for an attachment element backed by a file path |
| https://bugs.webkit.org/show_bug.cgi?id=181550 |
| |
| Reviewed by Tim Horton. |
| |
| When requesting data for an attachment element that is backed by a file path, we currently trigger a load in the |
| web process to fetch contents of the attachment data as inline data in the AttachmentInfo. This is unnecessary, |
| since the file path of the attachment element must have come from the UI process anyways, so it is sufficient to |
| simply send the file path to the UI process and have the UI process read the contents of the path as a memory- |
| mapped NSData. |
| |
| This patch lets HTMLAttachmentElement skip over resource loading codepaths when creating an AttachmentInfo for |
| the client, and also teaches _WKAttachment to read a AttachmentInfo's filepath as memory-mapped data if a file |
| path is present, and no inline data was specified. |
| |
| Covered by existing API tests. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::requestInfo): |
| |
| 2018-01-10 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Make elements of zero width or height focusable |
| https://bugs.webkit.org/show_bug.cgi?id=181516 |
| |
| Reviewed by Chris Dumez. |
| |
| Don't check render box's size or bounding rect when deciding whether an element is focusable. |
| New behavior matches that of Firefox and Chrome. |
| |
| Test: fast/events/focus-zero-size-element.html |
| |
| * dom/Element.cpp: |
| (WebCore::Element::isFocusable): Only update the style. |
| * html/HTMLFormControlElement.cpp: |
| (WebCore::HTMLFormControlElement::isFocusable const): Deleted. |
| * html/HTMLFormControlElement.h: |
| * mathml/MathMLElement.cpp: |
| (WebCore::MathMLElement::isFocusable const): Deleted. As far as I can tell, no math ml element is focusable. |
| * mathml/MathMLElement.h: |
| * svg/SVGAElement.cpp: |
| (WebCore::SVGAElement::isFocusable const): Deleted. |
| * svg/SVGAElement.h: |
| |
| 2018-01-11 Filip Pizlo <fpizlo@apple.com> |
| |
| Rename MarkedAllocator to BlockDirectory and AllocatorAttributes to CellAttributes |
| https://bugs.webkit.org/show_bug.cgi?id=181543 |
| |
| Rubber stamped by Michael Saboff. |
| |
| No new tests because I'm just renaming things. |
| |
| * ForwardingHeaders/heap/BlockDirectoryInlines.h: Copied from Source/WebCore/ForwardingHeaders/heap/MarkedAllocatorInlines.h. |
| * ForwardingHeaders/heap/MarkedAllocatorInlines.h: Removed. |
| * bindings/js/DOMGCOutputConstraint.cpp: |
| |
| 2018-01-11 Alex Christensen <achristensen@webkit.org> |
| |
| REGRESSION(r225003): Loading hangs in environments where dispatch_async does not work |
| https://bugs.webkit.org/show_bug.cgi?id=181553 |
| <rdar://problem/35733938> |
| |
| Reviewed by Eric Carlson. |
| |
| There is an environment where dispatch_async does not work, but performSelectorOnMainThread works. |
| r225003 broke loading in this environment. This fixes it and updates the test that r225003 fixed. |
| It failed sometimes because loading was happening in a different order than html parsing, so I made |
| the test not depend on html parsing timing by updating media/video-src-remove.html. |
| |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): |
| |
| 2018-01-11 Dean Jackson <dino@apple.com> |
| |
| Rolling out 226814. It crashes on some bots. |
| |
| 2018-01-11 Dean Jackson <dino@apple.com> |
| |
| [WebGL] Simulated vertexAttrib0 can sometimes cause OUT_OF_MEMORY errors |
| https://bugs.webkit.org/show_bug.cgi?id=181558 |
| <rdar://problem/36189833> |
| |
| Reviewed by Eric Carlson. |
| |
| Very large element indices in the ELEMENT_ARRAY_BUFFER meant that |
| our simulated vertexAttrib0 buffer might be too large. We need |
| to check for out-of-memory, but we can also detect some of the issues |
| earlier in our validation code. Additionally, make sure that we don't |
| accidentally cast an unsigned to a signed. |
| |
| Test: fast/canvas/webgl/simulated-vertexAttrib0-invalid-indicies.html |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::validateIndexArrayConservative): Update validation |
| code to look for overflow, rather than relying on looking for sign changes. |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::validateIndexArrayConservative): Ditto. |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise): |
| (WebCore::WebGLRenderingContextBase::drawArrays): Check that we were able to simulate. |
| (WebCore::WebGLRenderingContextBase::drawElements): |
| (WebCore::WebGLRenderingContextBase::validateSimulatedVertexAttrib0): Update validation code, and |
| use GC3Duint, since that's what the indicies are. |
| (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): Ditto. |
| (WebCore::WebGLRenderingContextBase::drawArraysInstanced): Check that we were able to simulate. |
| (WebCore::WebGLRenderingContextBase::drawElementsInstanced): |
| * html/canvas/WebGLRenderingContextBase.h: |
| |
| 2018-01-11 Chris Dumez <cdumez@apple.com> |
| |
| ASSERTION FAILED: registration in WebCore::SWServerWorker::skipWaiting() |
| https://bugs.webkit.org/show_bug.cgi?id=181222 |
| <rdar://problem/36332686> |
| |
| Reviewed by Youenn Fablet. |
| |
| Replace assertion in SWServerWorker::skipWaiting() that assumes the worker |
| has a registration. Nowadays, a SWServerWorker can stay alive for a short |
| period without having a registration, while it is terminating. |
| |
| No new tests, unskipped existing test. |
| |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::skipWaiting): |
| |
| 2018-01-11 Antti Koivisto <antti@apple.com> |
| |
| Don't call RenderElement::setStyle when nothing changes |
| https://bugs.webkit.org/show_bug.cgi?id=181530 |
| |
| Reviewed by Zalan Bujtas. |
| |
| * style/StyleChange.h: |
| |
| Remove 'Force' value. This essentially meant 'compute style for all descendants and call setStyle unconditionally'. |
| Using this value lost information about whether anything actually changed in a particular style as it was automatically |
| inherited by all descendants. The 'compute all descendants' part of the behavior is what is actually needed. |
| |
| Instead add separate DescendantsToResolve enum for communicating what else to compute. |
| |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::Parent::Parent): |
| (WebCore::Style::computeDescendantsToResolve): |
| |
| Figure out which descendants will need resolving based on how the current elements style changed. |
| |
| (WebCore::Style::TreeResolver::resolveElement): |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): |
| (WebCore::Style::TreeResolver::pushParent): |
| (WebCore::Style::shouldResolveElement): |
| |
| Use DescendantsToResolve as input. |
| |
| (WebCore::Style::TreeResolver::resolveComposedTree): |
| * style/StyleTreeResolver.h: |
| * style/StyleUpdate.h: |
| (WebCore::Style::ElementUpdates::ElementUpdates): |
| |
| Add DescendantsToResolve. |
| |
| 2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Send PromisedBlobInfo to the client through DragItem instead of DragClient::prepareToDragPromisedBlob |
| https://bugs.webkit.org/show_bug.cgi?id=181497 |
| |
| Reviewed by Tim Horton. |
| |
| Refactor drag initiation with DOMFile-backed attachment elements. See WebKit ChangeLog for more information. No |
| change in behavior; promised blob dragging covered by WKAttachment API tests. |
| |
| * loader/EmptyClients.cpp: |
| * page/DragClient.h: |
| (WebCore::DragClient::prepareToDragPromisedBlob): Deleted. |
| * page/DragController.cpp: |
| (WebCore::DragController::startDrag): |
| (WebCore::DragController::doImageDrag): |
| (WebCore::DragController::doSystemDrag): |
| (WebCore::DragController::promisedBlobInfo): |
| (WebCore::DragController::dragAttachmentElement): Deleted. |
| * page/DragController.h: |
| * platform/DragItem.h: |
| (WebCore::DragItem::encode const): |
| (WebCore::DragItem::decode): |
| |
| 2018-01-11 Youenn Fablet <youenn@apple.com> |
| |
| RTCController should disable ICE candidate filtering in case of getUserMedia based on the RTCPerrConnection origin |
| https://bugs.webkit.org/show_bug.cgi?id=180851 |
| |
| Reviewed by Eric Carlson. |
| |
| Test: http/wpt/webrtc/third-party-frame-ice-candidate-filtering.html |
| |
| RTCController now stores all the client origins (top+frame origins) of frames that got access to camera/microphone access. |
| For any such client origin, PeerConnection objects ICE candidate filtering is disabled. |
| ICE candidate filtering is reset whenever navigating/reloading the page. |
| |
| * Modules/mediastream/RTCController.cpp: |
| (WebCore::RTCController::reset): |
| (WebCore::matchDocumentOrigin): |
| (WebCore::RTCController::shouldDisableICECandidateFiltering): |
| (WebCore::RTCController::add): |
| (WebCore::RTCController::disableICECandidateFilteringForAllOrigins): |
| (WebCore::RTCController::disableICECandidateFiltering): |
| (WebCore::RTCController::enableICECandidateFiltering): |
| * Modules/mediastream/RTCController.h: |
| * Modules/mediastream/RTCPeerConnection.cpp: |
| (WebCore::RTCPeerConnection::create): |
| * Modules/mediastream/UserMediaRequest.cpp: |
| (WebCore::UserMediaRequest::allow): |
| * page/Page.cpp: |
| (WebCore::Page::disableICECandidateFiltering): |
| * testing/Internals.cpp: |
| (WebCore::Internals::setICECandidateFiltering): |
| |
| 2018-01-11 Ali Juma <ajuma@chromium.org> |
| |
| window.visualViewport should behave as [SameObject] |
| https://bugs.webkit.org/show_bug.cgi?id=181548 |
| |
| Reviewed by Chris Dumez. |
| |
| Add 'GenerateIsReachable' to VisualViewport so that window.visualViewport's |
| JS wrapper object doesn't get garbage collected too soon. |
| |
| Test: fast/visual-viewport/visual-viewport-same-object.html |
| |
| * page/VisualViewport.idl: |
| |
| 2018-01-11 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Extract multipart handling from ResourceHandle to CurlRequest. |
| https://bugs.webkit.org/show_bug.cgi?id=181506 |
| |
| Reviewed by Alex Christensen. |
| |
| Rename old MultipartHandle class to CurlMultipartHandle and modernize it. Also move the responsibility |
| of handling multi part from ResourceHandle to CurlRequest. This is required for upcoming NetworkLoadTask. |
| |
| No new tests because no new behavior. |
| |
| * platform/Curl.cmake: |
| * platform/network/curl/CurlMultipartHandle.cpp: Renamed from Source/WebCore/platform/network/curl/MultipartHandle.cpp. |
| (WebCore::CurlMultipartHandle::createIfNeeded): |
| (WebCore::CurlMultipartHandle::extractBoundary): |
| (WebCore::CurlMultipartHandle::extractBoundaryFromContentType): |
| (WebCore::CurlMultipartHandle::CurlMultipartHandle): |
| (WebCore::CurlMultipartHandle::didReceiveData): |
| (WebCore::CurlMultipartHandle::didComplete): |
| (WebCore::CurlMultipartHandle::processContent): |
| (WebCore::CurlMultipartHandle::checkForBoundary): |
| (WebCore::CurlMultipartHandle::matchedLength): |
| (WebCore::CurlMultipartHandle::parseHeadersIfPossible): |
| * platform/network/curl/CurlMultipartHandle.h: Renamed from Source/WebCore/platform/network/curl/MultipartHandle.h. |
| (WebCore::CurlMultipartHandle::~CurlMultipartHandle): |
| * platform/network/curl/CurlMultipartHandleClient.h: Added. |
| (WebCore::CurlMultipartHandleClient::~CurlMultipartHandleClient): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::CurlRequest): |
| (WebCore::CurlRequest::didReceiveHeader): |
| (WebCore::CurlRequest::didReceiveData): |
| (WebCore::CurlRequest::didReceiveHeaderFromMultipart): |
| (WebCore::CurlRequest::didReceiveDataFromMultipart): |
| (WebCore::CurlRequest::didCompleteTransfer): |
| (WebCore::CurlRequest::finalizeTransfer): |
| (WebCore::CurlRequest::invokeDidReceiveResponseForFile): |
| (WebCore::CurlRequest::invokeDidReceiveResponse): |
| (WebCore::CurlRequest::completeDidReceiveResponse): |
| * platform/network/curl/CurlRequest.h: |
| (WebCore::CurlRequest::create): |
| * platform/network/curl/ResourceHandleCurlDelegate.cpp: |
| (WebCore::ResourceHandleCurlDelegate::createCurlRequest): |
| (WebCore::ResourceHandleCurlDelegate::curlDidReceiveResponse): |
| (WebCore::ResourceHandleCurlDelegate::curlDidReceiveBuffer): |
| (WebCore::ResourceHandleCurlDelegate::curlDidComplete): |
| * platform/network/curl/ResourceHandleCurlDelegate.h: |
| |
| 2018-01-11 Zalan Bujtas <zalan@apple.com> |
| |
| RenderTreeUpdater::current() returns null_ptr when mutation is done through Document::resolveStyle. |
| https://bugs.webkit.org/show_bug.cgi?id=181513 |
| <rdar://problem/36367085> |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch ensures that we use a valid RenderTreeBuilder even when |
| Document::resolveStyle (incorrectly) triggers tree mutation. |
| It can be reverted soon after the incorrect mutations are taken care of. |
| |
| Test: fast/forms/button-set-text-crash.html |
| |
| * rendering/RenderButton.cpp: |
| (WebCore::RenderButton::setText): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::setText): |
| |
| 2018-01-11 Antoine Quint <graouts@apple.com> |
| |
| Only listen to webkitplaybacktargetavailabilitychanged when media controls are visible to the user |
| https://bugs.webkit.org/show_bug.cgi?id=181547 |
| <rdar://problem/35947650> |
| |
| Reviewed by Eric Carlson. |
| |
| Because listening to "webkitplaybacktargetavailabilitychanged" events incurs some higher power usage on iOS, |
| we only listen to such events when controls are visible to the user. In other words, the MediaControls need to |
| have both "visible" set to "true" and "faded" set to "false". To support this, we add a delegate method on |
| MediaControls such that it can tell the MediaController that the "visible" property changed. With this message, |
| MediaController can inform its MediaControllerSupport objects that user visibility of the controls changed, which |
| lets AirplaySupport disable itself when controls are no longer visible. |
| |
| Test: media/modern-media-controls/airplay-support/airplay-support-disable-event-listeners-with-hidden-controls.html |
| |
| * Modules/modern-media-controls/controls/media-controls.js: |
| (MediaControls.prototype.set visible): |
| * Modules/modern-media-controls/media/airplay-support.js: |
| (AirplaySupport.prototype.controlsUserVisibilityDidChange): |
| * Modules/modern-media-controls/media/media-controller-support.js: |
| (MediaControllerSupport.prototype.controlsUserVisibilityDidChange): |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype.mediaControlsVisibilityDidChange): |
| (MediaController.prototype.mediaControlsFadedStateDidChange): |
| (MediaController.prototype._controlsUserVisibilityDidChange): |
| |
| 2018-01-11 Antoine Quint <graouts@apple.com> |
| |
| [iOS] There should be no controls markup generated in fullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=181540 |
| <rdar://problem/35060379> |
| |
| Reviewed by Eric Carlson. |
| |
| We completely forgo the display of any content when fullscreen on iOS by setting the |
| "visible" flag to "false" on the MediaControls, which will prevent any DOM content from |
| being added. |
| |
| * Modules/modern-media-controls/media/media-controller.js: |
| (MediaController.prototype.handleEvent): |
| (MediaController.prototype._updateiOSFullscreenProperties): |
| (MediaController): |
| (MediaController.prototype._updateSupportingObjectsEnabledState): Deleted. |
| |
| 2018-01-11 Alex Christensen <achristensen@webkit.org> |
| |
| Revert changes accidentally committed with r226789. |
| https://bugs.webkit.org/show_bug.cgi?id=181423 |
| |
| I had some local changes I did not mean to commit. |
| |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: |
| (scheduledWithCustomRunLoopMode): |
| (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): |
| (WebCore::if): Deleted. |
| (WebCore::>::fromCallable): Deleted. |
| |
| 2018-01-10 Simon Fraser <simon.fraser@apple.com> |
| |
| On macOS, getBoundingClientRect gives incorrect values when pinch-zoomed |
| https://bugs.webkit.org/show_bug.cgi?id=181511 |
| rdar://problem/33741427 |
| |
| Reviewed by Zalan Bujtas. |
| |
| When reverting "client coordinates are relative to layout viewport" in r219829 |
| I broke documentToClientOffset() on macOS by failing to take pinch zoom scale into |
| account (frameScaleFactor() is always 1 on iOs, so this bug doesn't manifest there). |
| |
| Covered by existing tests. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::documentToClientOffset const): |
| |
| 2018-01-11 Youenn Fablet <youenn@apple.com> |
| |
| Replace WebRTCLegacyAPIDisabled by WebRTCLegacyAPIEnabled and switch off WebRTC legacy flag by default |
| https://bugs.webkit.org/show_bug.cgi?id=181480 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| |
| * page/RuntimeEnabledFeatures.h: Set default value to false. |
| |
| 2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Support moving attachment elements in editable areas using drag and drop |
| https://bugs.webkit.org/show_bug.cgi?id=181337 |
| <rdar://problem/36324813> |
| |
| Reviewed by Tim Horton. |
| |
| Makes slight adjustments to attachment-specific drag and drop logic to ensure that moving attachments via drag |
| and drop behaves correctly. See per-change comments for more detail. |
| |
| Tests: WKAttachmentTests.DragInPlaceVideoAttachmentElement |
| WKAttachmentTests.MoveAttachmentElementAsIconByDragging |
| WKAttachmentTests.MoveInPlaceAttachmentElementByDragging |
| |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::Editor::getPasteboardTypesAndDataForAttachment): |
| |
| Stop vending the private web archive pasteboard type for attachments, for now. This works around issues where an |
| attachment element that is dragged and dropped within the same page may lose its blob backing data if we try to |
| remove and insert it as a fragment from the archive. Providing a web archive would allow us to avoid destroying |
| and recreating an attachment element when dragging within the same page, but this is a nice-to-have optimization |
| we can re-enable after investigation in a subsequent patch. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::populateShadowRootIfNecessary): |
| |
| Add `draggable=false` to the image element of an in-place attachment element. |
| |
| * page/DragController.cpp: |
| (WebCore::enclosingAttachmentElement): |
| (WebCore::DragController::draggableElement const): |
| |
| Tweak single-selected-attachment handling to account for in-place attachments. Since the hit-tested node is |
| inside the shadow subtree of the attachment element, the condition needs to check for the startElement as well |
| as the startElement's shadow host. |
| |
| (WebCore::DragController::startDrag): |
| |
| Make two tweaks here. First, don't require a RenderAttachment to drag an attachment element (this is required |
| for dragging in-place attachments). This was added in r217083 to address <rdar://problem/32282831>, but is no |
| longer correct, since attachments may now be displayed in-place. |
| |
| Secondly, only restore the previous selection if the attachment is in a richly contenteditable area. This was |
| added to prevent the selection highlight from appearing in when dragging non-editable attachment elements in the |
| Mail viewer. However, to allow drag moves to occur, we need the selection to persist after drag start. |
| |
| 2018-01-04 Filip Pizlo <fpizlo@apple.com> |
| |
| CodeBlocks should be in IsoSubspaces |
| https://bugs.webkit.org/show_bug.cgi?id=180884 |
| |
| Reviewed by Saam Barati. |
| |
| No new tests because no new behavior. |
| |
| Adopting new parallel constraint API, so that more of the logic of doing parallel |
| constraint solving is shared between the DOM's output constraints and JSC's output |
| constraints. |
| |
| * bindings/js/DOMGCOutputConstraint.cpp: |
| (WebCore::DOMGCOutputConstraint::executeImpl): |
| (WebCore::DOMGCOutputConstraint::doParallelWorkImpl): Deleted. |
| (WebCore::DOMGCOutputConstraint::finishParallelWorkImpl): Deleted. |
| * bindings/js/DOMGCOutputConstraint.h: |
| |
| 2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Support dragging attachment elements out as files on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=181199 |
| <rdar://problem/36299316> |
| |
| Reviewed by Tim Horton, Andy Estes and Joseph Pecoraro. |
| |
| Adds support for dragging "files" (i.e. creating item providers with preferred attachment presentation styles) |
| from attachment elements on iOS for Mail. See below for more detail. |
| |
| Tests: WKAttachmentTestsIOS.DragAttachmentInsertedAsData |
| WKAttachmentTestsIOS.DragAttachmentInsertedAsFile |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::platformContentTypeForBlobType const): |
| (WebCore::DragController::dragAttachmentElement): |
| * page/DragController.h: |
| * page/mac/DragControllerMac.mm: |
| (WebCore::DragController::platformContentTypeForBlobType const): |
| |
| Add a private method to convert the type of a promised blob to a platform type. For Cocoa platforms, this |
| converts the blob type (either a UTI or a MIME type) to a UTI for the platform to consume. |
| |
| * platform/ios/WebItemProviderPasteboard.h: |
| * platform/ios/WebItemProviderPasteboard.mm: |
| |
| Refactor WebItemProviderRegistrationInfo. WebItemProviderRegistrationInfo currently encapsulates a single item |
| provider registration call, and contains either a type identifier and data buffer, or an NSItemProviderWriting- |
| conformant object. To register an item provider using a WebItemProviderRegistrationInfo, the item provider |
| pasteboard currently checks to see whether the info contains an object or a type and data. |
| |
| This patch removes WebItemProviderRegistrationInfo and replaces it with WebItemProviderDataRegistrar. Objects |
| that implement this protocol know how to take an NSItemProvider and register data to it. So far, there are |
| three implementations below. |
| |
| (-[WebItemProviderDataRegistrar initWithData:type:]): |
| (-[WebItemProviderDataRegistrar typeIdentifier]): |
| (-[WebItemProviderDataRegistrar data]): |
| (-[WebItemProviderDataRegistrar typeIdentifierForClient]): |
| (-[WebItemProviderDataRegistrar dataForClient]): |
| (-[WebItemProviderDataRegistrar registerItemProvider:]): |
| (-[WebItemProviderDataRegistrar description]): |
| |
| A data registrar takes a UTI and data buffer, and registers the UTI to the data. This replaces a |
| WebItemProviderRegistrationInfo with both a type and data, but no representing object. |
| |
| (-[WebItemProviderWritableObjectRegistrar initWithObject:]): |
| (-[WebItemProviderWritableObjectRegistrar representingObjectForClient]): |
| (-[WebItemProviderWritableObjectRegistrar registerItemProvider:]): |
| (-[WebItemProviderWritableObjectRegistrar description]): |
| |
| The writable object registrar writes an NSItemProviderWriting-conformant object to an item provider. This |
| replaces a WebItemProviderRegistrationInfo with only a representing object. |
| |
| (-[WebItemProviderPromisedFileRegistrar initWithType:callback:]): |
| (-[WebItemProviderPromisedFileRegistrar registerItemProvider:]): |
| (-[WebItemProviderPromisedFileRegistrar description]): |
| (-[WebItemProviderRegistrationInfoList addData:forType:]): |
| (-[WebItemProviderRegistrationInfoList addRepresentingObject:]): |
| (-[WebItemProviderRegistrationInfoList addPromisedType:fileCallback:]): |
| |
| Helper methods to add new registrars to a registration info list. |
| |
| (-[WebItemProviderRegistrationInfoList itemAtIndex:]): |
| (-[WebItemProviderRegistrationInfoList enumerateItems:]): |
| (-[WebItemProviderRegistrationInfoList itemProvider]): |
| (-[WebItemProviderRegistrationInfoList description]): |
| (-[WebItemProviderRegistrationInfo initWithRepresentingObject:typeIdentifier:data:]): Deleted. |
| (-[WebItemProviderRegistrationInfo representingObject]): Deleted. |
| (-[WebItemProviderRegistrationInfo typeIdentifier]): Deleted. |
| |
| 2018-01-11 Michael Saboff <msaboff@apple.com> |
| |
| Add a DOM gadget for Spectre testing |
| https://bugs.webkit.org/show_bug.cgi?id=181351 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| This change is used to test Spectre mitigations. |
| |
| Added a new DOM class to test for Spectre issues in the DOM layer. |
| This additional functionality is disabled by default and must be enabled |
| through the JSC option "enableSpectreGadgets". |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/WebCoreBuiltinNames.h: |
| * dom/SpectreGadget.cpp: Added. |
| (WebCore::SpectreGadget::SpectreGadget): |
| (WebCore::SpectreGadget::create): |
| (WebCore::SpectreGadget::setReadLength): |
| (WebCore::SpectreGadget::charCodeAt): |
| (WebCore::SpectreGadget::clflushReadLength): |
| * dom/SpectreGadget.h: Added. |
| * dom/SpectreGadget.idl: Added. |
| * page/RuntimeEnabledFeatures.cpp: |
| (WebCore::RuntimeEnabledFeatures::spectreGadgetsEnabled const): |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-01-11 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK] media/muted-video-is-playing-audio.html is timing out |
| https://bugs.webkit.org/show_bug.cgi?id=163781 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): Sprinkle some debugging. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::setMuted): Ditto. |
| |
| 2018-01-10 Andy Estes <aestes@apple.com> |
| |
| [Payment Request] Rename ApplePayMerchantValidationEvent to MerchantValidationEvent |
| https://bugs.webkit.org/show_bug.cgi?id=181437 |
| <rdar://problem/36376481> |
| |
| Reviewed by Tim Horton. |
| |
| Renamed ApplePayMerchantValidationEvent to MerchantValidationEvent and changed complete() to accept a Promise. |
| |
| Test: http/tests/paymentrequest/payment-request-merchant-validation.https.html |
| |
| * DerivedSources.make: |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: |
| (WebCore::ApplePayPaymentHandler::merchantValidationCompleted): |
| (WebCore::ApplePayPaymentHandler::validateMerchant): |
| * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: |
| * Modules/paymentrequest/MerchantValidationEvent.cpp: Renamed from Source/WebCore/Modules/applepay/paymentrequest/ApplePayMerchantValidationEvent.cpp. |
| (WebCore::MerchantValidationEvent::create): |
| (WebCore::MerchantValidationEvent::MerchantValidationEvent): |
| (WebCore::MerchantValidationEvent::eventInterface const): |
| (WebCore::MerchantValidationEvent::complete): |
| * Modules/paymentrequest/MerchantValidationEvent.h: Renamed from Source/WebCore/Modules/applepay/paymentrequest/ApplePayMerchantValidationEvent.h. |
| * Modules/paymentrequest/MerchantValidationEvent.idl: Renamed from Source/WebCore/Modules/applepay/paymentrequest/ApplePayMerchantValidationEvent.idl. |
| * Modules/paymentrequest/PaymentHandler.h: |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::PaymentRequest::completeMerchantValidation): |
| * Modules/paymentrequest/PaymentRequest.h: |
| * Modules/paymentrequest/PaymentRequest.idl: |
| * WebCore.xcodeproj/project.pbxproj: |
| * dom/EventNames.h: |
| * dom/EventNames.in: |
| |
| 2018-01-10 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Cross-protocol, cross-site scripting (XPXSS) using HTML forms |
| Nhttps://bugs.webkit.org/show_bug.cgi?id=153088 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because it's covered by existing tests. |
| |
| * platform/network/curl/CurlContext.cpp: |
| (WebCore::CurlHandle::getHttpVersion): |
| * platform/network/curl/CurlContext.h: |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::didReceiveHeader): |
| * platform/network/curl/CurlResponse.h: |
| (WebCore::CurlResponse::isolatedCopy const): |
| * platform/network/curl/ResourceResponseCurl.cpp: |
| (WebCore::ResourceResponse::ResourceResponse): |
| (WebCore::ResourceResponse::setStatusLine): |
| |
| 2018-01-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION(r222507): Composition highlight doesn't render when using IME |
| https://bugs.webkit.org/show_bug.cgi?id=181485 |
| <rdar://problem/35896516> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Fixes the order of arguments passed to paintTextSubrangeBackground from paintCompositionBackground. |
| |
| Test: editing/marked-text-appearance.html |
| |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::paintCompositionBackground): |
| |
| 2018-01-10 Youenn Fablet <youenn@apple.com> |
| |
| Use no-cache fetch mode when loading main documents with location.reload() |
| https://bugs.webkit.org/show_bug.cgi?id=181285 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased tests. |
| |
| Start to translate cache policy used for navigation as FetchOptions::Cache. |
| This allows ensuring service workers receive the right cache mode when intercepting navigation loads. |
| To not change current navigation behavior, ReturnCacheDataElseLoad and ReturnCacheDataDontLoad still trigger default fetch cache mode. |
| |
| For Reload and ReloadExpiredOnly frame load types, using no-cache mode is more efficient than reload mode, |
| as a conditional request will be sent if possible. This applies to location.reload which is consistent with other browsers. |
| Keep reload mode for ReloadFromOrigin. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::toFetchOptionsCache): |
| (WebCore::DocumentLoader::loadMainResource): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadFrameRequest): |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::reload): |
| (WebCore::FrameLoader::defaultRequestCachingPolicy): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/NavigationScheduler.cpp: |
| |
| 2018-01-10 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r226667 and r226673. |
| https://bugs.webkit.org/show_bug.cgi?id=181488 |
| |
| This caused a flaky crash. (Requested by mlewis13 on #webkit). |
| |
| Reverted changesets: |
| |
| "CodeBlocks should be in IsoSubspaces" |
| https://bugs.webkit.org/show_bug.cgi?id=180884 |
| https://trac.webkit.org/changeset/226667 |
| |
| "REGRESSION (r226667): CodeBlocks should be in IsoSubspaces" |
| https://bugs.webkit.org/show_bug.cgi?id=180884 |
| https://trac.webkit.org/changeset/226673 |
| |
| 2018-01-10 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION(r225650): The scores of MotionMark tests Multiply and Leaves dropped by 8% |
| https://bugs.webkit.org/show_bug.cgi?id=181460 |
| <rdar://problem/36379776> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * css/parser/CSSParser.cpp: |
| (WebCore::CSSParserContext::CSSParserContext): |
| |
| Don't do the expensive security origin test if the sheet base URL and document URL are identical. |
| This is true for inline style and inline stylesheets. |
| |
| 2018-01-10 Antti Koivisto <antti@apple.com> |
| |
| Try to fix windows build. |
| |
| * css/RuleFeature.cpp: |
| (WebCore::RuleFeatureSet::computeNextMatchElement): |
| |
| 2018-01-10 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderRuby's moveChildren logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181470 |
| <rdar://problem/36397683> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * rendering/RenderBlockFlow.h: |
| * rendering/RenderRubyBase.cpp: |
| (WebCore::RenderRubyBase::moveChildren): Deleted. |
| (WebCore::RenderRubyBase::mergeChildrenWithBase): Deleted. |
| (WebCore::RenderRubyBase::moveInlineChildren): Deleted. |
| (WebCore::RenderRubyBase::moveBlockChildren): Deleted. |
| * rendering/RenderRubyBase.h: |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::takeChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::moveRubyChildren): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::moveInlineChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveBlockChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveChildren): |
| (WebCore::RenderTreeBuilder::Ruby::moveChildrenInternal): |
| (WebCore::RenderTreeBuilder::Ruby::insertChild): |
| * rendering/updating/RenderTreeBuilderRuby.h: |
| |
| 2018-01-10 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] fix critical GObject warning |
| |
| Rubber-stamped by Carlos Garcia Campos. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): No need to |
| resort to complicated things to get the element name... |
| |
| 2018-01-10 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] REGRESSION(r226629): broke media/video-interruption-with-resume-allowing-play.html |
| https://bugs.webkit.org/show_bug.cgi?id=181471 |
| <rdar://problem/36402323> |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This patch mainly reduces the amount of playback state changes |
| emitted by the GStreamer player to its client. Emitting those |
| notifications too often has bad side effects. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::paused const): Add debug messages. |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): This debug message appears too much. Demote. |
| (WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::updateStates): Try to emit |
| playback state change notification only when going to PLAYING. |
| (WebCore::MediaPlayerPrivateGStreamer::loadingFailed): Add warning message. |
| |
| 2018-01-10 Youenn Fablet <youenn@apple.com> |
| |
| Add Service Worker CSP persistency |
| https://bugs.webkit.org/show_bug.cgi?id=181434 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by manual testing. |
| Future work on service worker test infrastructure should allow automating such tests. |
| |
| Add support for service worker CSP data persistency. |
| Add a version parameter to increment each time the schema is changing. |
| This allows the same store to be used by multiple WebKits. |
| |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::v1RecordsTableSchema): |
| (WebCore::RegistrationDatabase::openSQLiteDatabase): |
| (WebCore::RegistrationDatabase::doPushChanges): |
| (WebCore::RegistrationDatabase::importRecords): |
| |
| 2018-01-10 Antti Koivisto <antti@apple.com> |
| |
| Invalidate current element style on class change accurately |
| https://bugs.webkit.org/show_bug.cgi?id=181210 |
| |
| Reviewed by Zalan Bujtas. |
| |
| * css/DocumentRuleSets.cpp: |
| (WebCore::DocumentRuleSets::collectFeatures const): |
| (WebCore::DocumentRuleSets::subjectClassRules const): |
| |
| New rule set containing class rules affecting the subject element. |
| |
| (WebCore::DocumentRuleSets::ancestorClassRules const): |
| * css/DocumentRuleSets.h: |
| * css/RuleFeature.cpp: |
| (WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector): |
| |
| Classify selector components into various buckets based on the elements they match relative to |
| the subject element. There are more categories than this patch strictly needs, for future use. |
| |
| (WebCore::RuleFeatureSet::collectFeatures): |
| (WebCore::RuleFeatureSet::add): |
| (WebCore::RuleFeatureSet::clear): |
| (WebCore::RuleFeatureSet::shrinkToFit): |
| * css/RuleFeature.h: |
| * css/StyleResolver.h: |
| (WebCore::StyleResolver::hasSelectorForClass const): Deleted. |
| * style/ClassChangeInvalidation.cpp: |
| (WebCore::Style::elementNeedsInvalidation): |
| (WebCore::Style::ClassChangeInvalidation::computeInvalidation): |
| |
| Don't invalidate current element unconditionally on class change. Instead find the subject rulesets |
| that might affect it use them to perform invalidation. |
| |
| (WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets): |
| (WebCore::Style::ClassChangeInvalidation::invalidateStyle): Deleted. |
| (WebCore::Style::ClassChangeInvalidation::invalidateDescendantStyle): Deleted. |
| * style/ClassChangeInvalidation.h: |
| (WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation): |
| (WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation): |
| * style/StyleSharingResolver.cpp: |
| (WebCore::Style::SharingResolver::classNamesAffectedByRules const): |
| |
| 2018-01-09 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Expose the id property on Animation |
| https://bugs.webkit.org/show_bug.cgi?id=181450 |
| <rdar://problem/36383600> |
| |
| Reviewed by Dean Jackson. |
| |
| Expose the "id" property on Animation and handle the "id" property on the optional KeyframeAnimationOptions object |
| passed to Element.animate(). All of the WPT tests related to this property are now passing. |
| |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| * dom/Element.cpp: |
| (WebCore::Element::animate): |
| |
| 2018-01-09 Chris Dumez <cdumez@apple.com> |
| |
| Make service workers behave correctly with regards to Page Cache |
| https://bugs.webkit.org/show_bug.cgi?id=181446 |
| <rdar://problem/36164291> |
| |
| Reviewed by Youenn Fablet. |
| |
| Make service workers behave correctly with regards to Page Cache: |
| 1. If a document has an active service worker, do not let it go into PageCache |
| 2. When a document goes into page cache, unregister it from the list of service worker clients |
| 3. When a document is restored from page cache, add it nack to the list of service worker clients |
| |
| Tests: http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html |
| http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html |
| http/tests/workers/service/no-page-cache-when-controlled.html |
| http/tests/workers/service/other_resources/test.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::suspend): |
| (WebCore::Document::resume): |
| * history/PageCache.cpp: |
| (WebCore::canCacheFrame): |
| * page/DiagnosticLoggingKeys.cpp: |
| (WebCore::DiagnosticLoggingKeys::serviceWorkerKey): |
| * page/DiagnosticLoggingKeys.h: |
| |
| 2018-01-09 Chris Dumez <cdumez@apple.com> |
| |
| We should not return undefined for most properties of a detached Window |
| https://bugs.webkit.org/show_bug.cgi?id=181416 |
| <rdar://problem/36162489> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| We should not return undefined for most properties on a detached Window. WebKit previously only exposed "closed" |
| and "close" properties on detached / frameless windows. However, this does not match the HTML specification [1] |
| or the behavior of Firefox and Chrome. |
| |
| Note that Chrome does not seem to fully follow the HTML specification either, it seems to treat detached windows |
| the same way as cross-origin ones. As a result, it only exposed properties that are visible cross-origin when |
| a window is detached / frameless. |
| |
| [1] https://html.spec.whatwg.org/#windowproxy-get |
| |
| No new tests, updated existingt tests. |
| |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): |
| (WebCore::JSDOMWindow::getOwnPropertySlot): |
| (WebCore::JSDOMWindow::getOwnPropertySlotByIndex): |
| |
| 2018-01-09 Darin Adler <darin@apple.com> |
| |
| Further refinement to list item and counter code after "list-item" counter fix |
| https://bugs.webkit.org/show_bug.cgi?id=181426 |
| |
| Reviewed by Zalan Bujtas. |
| |
| * css/StyleBuilderCustom.h: |
| (WebCore::StyleBuilderCustom::applyInheritCounter): Use auto. |
| (WebCore::StyleBuilderCustom::applyValueCounter): Use auto, removed unneeded |
| null checks for things that can never be null, moved the saturated addition |
| here and got rid of the addIncrementValue function from CounterDirectives. |
| Use the saturatedAddition function from SaturatedArithmetic.h instead of the |
| much less efficient one that did the same thing, CounterDirectives::addClamped. |
| |
| * rendering/RenderCounter.cpp: |
| (WebCore::listItemCounterDirectives): Use aggregate syntax for the return |
| statements. |
| (WebCore::planCounter): Changed to use a struct return value instead of two |
| out arguments. Use the saturatedAddition function from SaturatedArithmetic.h |
| instead of the much less efficient one that did the same thing, |
| CounterDirectives::addClamped. |
| (WebCore::findPlaceForCounter): Changed to use a struct return value instead |
| of two out arguments. |
| (WebCore::makeCounterNode): Updated for the above changes. Changed code to |
| use add instead of both get and set. Updated to keep the counter maps inside |
| the values of the "map of maps" instead of using a unique_ptr and allocating |
| each one on the heap. |
| (WebCore::destroyCounterNodeWithoutMapRemoval): Changed argument to a reference |
| instead of a pointer. Updated for changes to the map. Use RefPtr more |
| consistently. |
| (WebCore::RenderCounter::destroyCounterNodes): Use iterators less. |
| (WebCore::RenderCounter::destroyCounterNode): Ditto. |
| (WebCore::RenderCounter::rendererRemovedFromTree): Add a check of |
| hasCounterNodeMap here before calling destroyCounterNodes, so that function |
| can assume the flag is true (both other callers already check it). |
| (WebCore::updateCounters): Use auto and update for changes above. |
| (WebCore::RenderCounter::rendererStyleChanged): Use modern for loops instead |
| of iterators. |
| (showCounterRendererTree): Use auto and udpate for changes above. |
| |
| * rendering/RenderListItem.cpp: |
| (WebCore::enclosingList): Stop referring to elements as "nodes". Changed |
| the local variable names for clarity. |
| (WebCore::nextListItemHelper): Renamed from nextListItem since it's not |
| intended to be called directly and we want to use a function pointer to |
| nextListItem. Fixed the algorithm to correctly handle ad hoc "lists" that |
| are not actually HTML list elements, using the definition in the enclosingList |
| function as the previousListItem function already did. |
| (WebCore::nextListItem): Updated for name changes. |
| (WebCore::firstListItem): Renamed from nextListItem for clarity. |
| (WebCore::previousListItem): Rewrote loop so it doesn't have to do things |
| so strangely when we find another list. |
| (WebCore::RenderListItem::updateItemValuesForOrderedList): Use auto and |
| update local variable names. |
| (WebCore::RenderListItem::itemCountForOrderedList): Ditto. |
| (WebCore::RenderListItem::updateValueNow const): Rewrote to use an iterative |
| algorithm instead of a recursive one. Fixes the FIXME here. |
| (WebCore::RenderListItem::updateValue): Use m_valueWasSetExplicitly |
| instead of m_explicitValue. |
| (WebCore::RenderListItem::explicitValueChanged): Use auto and simplified |
| the loop a bit. |
| (WebCore::RenderListItem::setExplicitValue): Set m_valueWasSetExplicitly |
| instead of m_explicitValue. |
| (WebCore::previousOrNextItem): Deleted. |
| (WebCore::RenderListItem::updateListMarkerNumbers): Streamlined the loop |
| a bit and used a fucntion pointer to handle the two different directions. |
| (WebCore::RenderListItem::isInReversedOrderedList const): Simplified by |
| getting rid of an unneeded use of pointers and local variables. |
| |
| * rendering/RenderListItem.h: Use a boolean, m_valueWasSetExplicitly, |
| instead of a separate optional m_explicitValue. |
| |
| * rendering/style/CounterDirectives.h: Since all the code in this file was |
| rewritten, removed old copyrights. Deleted the addIncrementValue function, |
| since it is clear enough in the one call site in the style builder. |
| Deleted the addClamped function because it was just a much slower |
| version of the saturatedAddition function. Made == and != into constexpr |
| functions since they are simple enough to be. |
| |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::getCounterDirectives const): Deleted. Caller can |
| handle this just fine without a helper function. |
| * rendering/style/RenderStyle.h: Ditto. |
| |
| 2018-01-09 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| font-display:fallback can cause a visual flash (which is supposed to be impossible) |
| https://bugs.webkit.org/show_bug.cgi?id=181374 |
| |
| Reviewed by Simon Fraser. |
| |
| A FontCascade represents an entire font-family fallback list, but sometimes we need to pull out a single |
| representative font from the list to calculate things like line height. Previously, if the first item in |
| the font-family list was in the middle of being downloaded, this representative font was hardcoded to be |
| Times. However, when actually laying out and drawing the glyphs, we have logic to skip the interstitial |
| Times if there are any installed fonts present in the font-family list (so you wouldn't ever actually |
| see Times). This means that line height (among other things) was being calculated as if Times was used, |
| but in reality, some other font from the font-family list was being used. |
| |
| Alone, this isn't a huge problem, but font-display:fallback makes a font transition between "timed out" |
| and "failed," and when the font hits the failed state, the representative font skips over the cancelled |
| item and hits the next item in the fallback list. This means that line heights will change, which causes |
| a visual flash, even when font-display:fallback is specified. |
| |
| The solution is simply to educate the logic which identifies this representative font so that it |
| understands what to do for currently-loading fonts. |
| |
| Tests: fast/text/font-display/swap-flash.html |
| |
| * platform/graphics/FontCascadeFonts.h: |
| (WebCore::FontCascadeFonts::primaryFont): |
| * rendering/line/BreakingContext.h: |
| (WebCore::textWidth): |
| |
| 2018-01-04 Filip Pizlo <fpizlo@apple.com> |
| |
| CodeBlocks should be in IsoSubspaces |
| https://bugs.webkit.org/show_bug.cgi?id=180884 |
| |
| Reviewed by Saam Barati. |
| |
| No new tests because no new behavior. |
| |
| Adopting new parallel constraint API, so that more of the logic of doing parallel |
| constraint solving is shared between the DOM's output constraints and JSC's output |
| constraints. |
| |
| * bindings/js/DOMGCOutputConstraint.cpp: |
| (WebCore::DOMGCOutputConstraint::executeImpl): |
| (WebCore::DOMGCOutputConstraint::doParallelWorkImpl): Deleted. |
| (WebCore::DOMGCOutputConstraint::finishParallelWorkImpl): Deleted. |
| * bindings/js/DOMGCOutputConstraint.h: |
| |
| 2018-01-08 Simon Fraser <simon.fraser@apple.com> |
| |
| Clean up Marquee-related enums |
| https://bugs.webkit.org/show_bug.cgi?id=181347 |
| |
| Reviewed by Anders Carlsson. |
| |
| Modernize EMarqueeBehavior and EMarqueeDirection enums. Stop using the weird negative |
| values in the MarqueeDirection and do manual reverse direction mapping. |
| |
| Make some member functions of RenderMarquee private. |
| |
| Stop using bitfields in RenderMarquee because the memory saving is not worth it, and doing so |
| allows us to use modern initialization. |
| |
| No behavior change. |
| |
| * css/CSSPrimitiveValueMappings.h: |
| (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): |
| (WebCore::CSSPrimitiveValue::operator MarqueeBehavior const): |
| (WebCore::CSSPrimitiveValue::operator MarqueeDirection const): |
| (WebCore::CSSPrimitiveValue::operator EMarqueeBehavior const): Deleted. |
| (WebCore::CSSPrimitiveValue::operator EMarqueeDirection const): Deleted. |
| * css/StyleResolver.cpp: |
| (WebCore::StyleResolver::adjustRenderStyle): |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::sizesLogicalWidthToFitContent const): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::calculateClipRects const): |
| * rendering/RenderMarquee.cpp: |
| (WebCore::RenderMarquee::RenderMarquee): |
| (WebCore::reverseDirection): |
| (WebCore::RenderMarquee::direction const): |
| (WebCore::RenderMarquee::isHorizontal const): |
| (WebCore::RenderMarquee::computePosition): |
| (WebCore::RenderMarquee::start): |
| (WebCore::RenderMarquee::updateMarqueePosition): |
| (WebCore::RenderMarquee::updateMarqueeStyle): |
| (WebCore::RenderMarquee::timerFired): |
| * rendering/RenderMarquee.h: |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::marqueeBehavior const): |
| (WebCore::RenderStyle::marqueeDirection const): |
| (WebCore::RenderStyle::setMarqueeDirection): |
| (WebCore::RenderStyle::setMarqueeBehavior): |
| (WebCore::RenderStyle::initialMarqueeBehavior): |
| (WebCore::RenderStyle::initialMarqueeDirection): |
| * rendering/style/RenderStyleConstants.h: |
| * rendering/style/StyleMarqueeData.cpp: |
| (WebCore::StyleMarqueeData::StyleMarqueeData): |
| * rendering/style/StyleMarqueeData.h: |
| |
| 2018-01-09 Jer Noble <jer.noble@apple.com> |
| |
| Many CVDisplayLink threads created and destroyed while watching a YouTube video |
| https://bugs.webkit.org/show_bug.cgi?id=181396 |
| |
| Reviewed by Simon Fraser. |
| |
| When watching some YouTube videos (or any video with default controls), event handlers for |
| the "timeupdate" event which use rAF will cause the underlying platform objects to be |
| destroyed in between "timeupdate" events being fired, since they occur every 250ms, and rAF |
| objects are destroyed every 166ms (or 10/60hz). Update this constant to destroy the |
| underlying objects every 333ms (or 20/60hz) so that this common pattern doesn't lead to |
| excessive rAF platform object turnover. |
| |
| * platform/Logging.h: |
| * platform/graphics/DisplayRefreshMonitor.h: |
| (WebCore::DisplayRefreshMonitor::shouldBeTerminated const): |
| * platform/graphics/DisplayRefreshMonitor.cpp: |
| (WebCore::DisplayRefreshMonitor::displayDidRefresh): |
| * platform/graphics/DisplayRefreshMonitorManager.cpp: |
| (WebCore::DisplayRefreshMonitorManager::createMonitorForClient): |
| (WebCore::DisplayRefreshMonitorManager::displayDidRefresh): |
| |
| 2018-01-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderElement addChild mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181451 |
| <rdar://problem/36385562> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::addChild): |
| (WebCore::RenderElement::childRequiresTable const): Deleted. |
| * rendering/RenderElement.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChildToRenderElement): |
| (WebCore::RenderTreeBuilder::childRequiresTable): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::Inline::newChildIsInline): |
| (WebCore::newChildIsInline): Deleted. |
| * rendering/updating/RenderTreeBuilderInline.h: |
| |
| 2018-01-09 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r226531. |
| |
| This caused test failures on macOS WK2. |
| |
| Reverted changeset: |
| |
| "Use no-cache fetch mode when loading main documents with |
| location.reload()" |
| https://bugs.webkit.org/show_bug.cgi?id=181285 |
| https://trac.webkit.org/changeset/226531 |
| |
| 2018-01-09 Michael Saboff <msaboff@apple.com> |
| |
| Unreviewed, rolling out r226600 and r226603 |
| https://bugs.webkit.org/show_bug.cgi?id=181351 |
| |
| Add a DOM gadget for Spectre testing |
| |
| * dom/Comment.cpp: |
| (WebCore::Comment::Comment): |
| (WebCore::Comment::setReadLength): Deleted. |
| (WebCore::Comment::charCodeAt): Deleted. |
| (WebCore::Comment::clflushReadLength): Deleted. |
| * dom/Comment.h: |
| * dom/Comment.idl: |
| * page/RuntimeEnabledFeatures.cpp: |
| (WebCore::RuntimeEnabledFeatures::spectreGadgetsEnabled const): Deleted. |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-01-09 Don Olmstead <don.olmstead@sony.com> |
| |
| Add additional WEBCORE_EXPORTs |
| https://bugs.webkit.org/show_bug.cgi?id=181414 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * dom/Document.h: |
| * dom/ViewportArguments.h: |
| * page/DOMWindow.h: |
| * page/FrameView.h: |
| * page/PageOverlayController.h: |
| * platform/ContextMenuItem.h: |
| * platform/Pasteboard.h: |
| * platform/SharedBuffer.h: |
| * platform/UserAgent.h: |
| * platform/graphics/GLContext.h: |
| * platform/graphics/GraphicsContext.h: |
| * platform/graphics/GraphicsLayerTransform.h: |
| * platform/graphics/PlatformDisplay.h: |
| * platform/graphics/cairo/BackingStoreBackendCairoImpl.h: |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| * platform/graphics/cairo/RefPtrCairo.h: |
| * platform/graphics/nicosia/NicosiaBuffer.h: |
| * platform/graphics/nicosia/NicosiaPaintingEngine.h: |
| * platform/graphics/texmap/TextureMapper.h: |
| * platform/graphics/texmap/TextureMapperAnimation.h: |
| * platform/graphics/texmap/TextureMapperBackingStore.h: |
| * platform/graphics/texmap/TextureMapperFPSCounter.h: |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| (WebCore::TextureMapperLayer::TextureMapperLayer): Deleted. |
| (WebCore::TextureMapperLayer::setID): Deleted. |
| (WebCore::TextureMapperLayer::id): Deleted. |
| (WebCore::TextureMapperLayer:: const): Deleted. |
| (WebCore::TextureMapperLayer::setScrollClient): Deleted. |
| (WebCore::TextureMapperLayer::setIsScrollable): Deleted. |
| (WebCore::TextureMapperLayer::isScrollable const): Deleted. |
| (WebCore::TextureMapperLayer::textureMapper const): Deleted. |
| (WebCore::TextureMapperLayer::setTextureMapper): Deleted. |
| (WebCore::TextureMapperLayer::drawsContent const): Deleted. |
| (WebCore::TextureMapperLayer::contentsAreVisible const): Deleted. |
| (WebCore::TextureMapperLayer::size const): Deleted. |
| (WebCore::TextureMapperLayer::opacity const): Deleted. |
| (WebCore::TextureMapperLayer::transform const): Deleted. |
| (WebCore::TextureMapperLayer::hasFilters const): Deleted. |
| (WebCore::TextureMapperLayer::isShowingRepaintCounter const): Deleted. |
| (WebCore::TextureMapperLayer::fixedToViewport const): Deleted. |
| (WebCore::TextureMapperLayer::rootLayer const): Deleted. |
| (WebCore::TextureMapperLayer::texture): Deleted. |
| (WebCore::TextureMapperLayer::adjustedPosition const): Deleted. |
| (WebCore::TextureMapperLayer::layerRect const): Deleted. |
| (WebCore::TextureMapperLayer::State::State): Deleted. |
| * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h: |
| * platform/graphics/texmap/TextureMapperTile.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| (WebCore::CoordinatedGraphicsLayer::isScrollable const): Deleted. |
| (WebCore::CoordinatedGraphicsLayer::id const): Deleted. |
| (WebCore::CoordinatedGraphicsLayer::coverRect const): Deleted. |
| (WebCore::CoordinatedGraphicsLayer::fixedToViewport const): Deleted. |
| * platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: |
| (WebCore::CoordinatedImageBacking::id const): Deleted. |
| * platform/graphics/texmap/coordinated/TiledBackingStore.h: |
| * platform/graphics/texmap/coordinated/UpdateAtlas.h: |
| * platform/network/AuthenticationChallengeBase.h: |
| * platform/network/CredentialBase.h: |
| * platform/network/ProtectionSpaceBase.h: |
| * platform/network/curl/SocketStreamHandleImpl.h: |
| * replay/UserInputBridge.h: |
| |
| 2018-01-09 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [Curl] Move FormData related tasks into new CurlFormDataStream class. |
| https://bugs.webkit.org/show_bug.cgi?id=181106 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests because no behavior change. |
| |
| * platform/Curl.cmake: |
| * platform/network/curl/CurlFormDataStream.cpp: Added. |
| (WebCore::CurlFormDataStream::CurlFormDataStream): |
| (WebCore::CurlFormDataStream::~CurlFormDataStream): |
| (WebCore::CurlFormDataStream::clean): |
| (WebCore::CurlFormDataStream::shouldUseChunkTransfer): |
| (WebCore::CurlFormDataStream::totalSize): |
| (WebCore::CurlFormDataStream::computeContentLength): |
| (WebCore::CurlFormDataStream::read): |
| (WebCore::CurlFormDataStream::readFromFile): |
| (WebCore::CurlFormDataStream::readFromData): |
| * platform/network/curl/CurlFormDataStream.h: Renamed from Source/WebCore/platform/network/curl/FormDataStreamCurl.h. |
| (WebCore::CurlFormDataStream::elementSize): |
| (WebCore::CurlFormDataStream::totalReadSize): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::CurlRequest): |
| (WebCore::CurlRequest::willSendData): |
| (WebCore::CurlRequest::finalizeTransfer): |
| (WebCore::CurlRequest::setupPUT): |
| (WebCore::CurlRequest::setupPOST): |
| (WebCore::CurlRequest::setupSendData): |
| (WebCore::CurlRequest::resolveBlobReferences): Deleted. |
| (WebCore::CurlRequest::setupFormData): Deleted. |
| * platform/network/curl/CurlRequest.h: |
| * platform/network/curl/FormDataStreamCurl.cpp: Removed. |
| |
| 2018-01-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move MathML addChild logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181443 |
| <rdar://problem/36380228> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/mathml/RenderMathMLFenced.cpp: |
| (WebCore::RenderMathMLFenced::addChild): |
| (WebCore::RenderMathMLFenced::createMathMLOperator): Deleted. |
| (WebCore::RenderMathMLFenced::makeFences): Deleted. |
| * rendering/mathml/RenderMathMLFenced.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::insertChildToRenderMathMLFenced): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::mathMLBuilder): |
| |
| 2018-01-09 Antti Koivisto <antti@apple.com> |
| |
| Blank page except for inner iframes because pending stylesheets cause style.isNotFinal() to be true |
| https://bugs.webkit.org/show_bug.cgi?id=180940 |
| <rdar://problem/36116507> |
| |
| Reviewed by Darin Adler. |
| |
| Test: http/tests/local/loading-stylesheet-import-remove.html |
| |
| If a <link> referencing a stylesheet containing an @import that was still loading was removed |
| from the document, the loading state was never cleared. For head stylesheets this blocked |
| rendering permanently. |
| |
| Test reduction by Justin Ridgewell. |
| |
| * html/HTMLLinkElement.cpp: |
| (WebCore::HTMLLinkElement::removedFromAncestor): |
| |
| Test if the stylesheet it loading before clearing the pointer. |
| |
| 2018-01-09 Dan Bernstein <mitz@apple.com> |
| |
| Removed some empty directories that were left behind |
| |
| * Modules/indieui: Removed. |
| * Modules/vibration: Removed. |
| * platform/graphics/ca/mac: Removed. |
| * platform/mediastream/gstreamer: Removed. |
| |
| 2018-01-09 Antoine Quint <graouts@apple.com> |
| |
| Refactor timing function solving code |
| https://bugs.webkit.org/show_bug.cgi?id=181428 |
| |
| Reviewed by Dean Jackson. |
| |
| We have duplicated code to solve "cubic" and "steps" timing functions in AnimationBase and TextureMapperAnimation, |
| and we will soon need similar code to deal with timing functions in Web Animations. We move this code into TimingFunction |
| with a single transformTime() function that can be called directly on the timing function rather than having callers |
| figure out what type timing functions are to solve them. |
| |
| No test as there shouldn't be any behavior change. |
| |
| * page/animation/AnimationBase.cpp: |
| (WebCore::AnimationBase::progress const): |
| (WebCore::solveEpsilon): Deleted. |
| (WebCore::solveCubicBezierFunction): Deleted. |
| (WebCore::solveStepsFunction): Deleted. |
| (WebCore::solveSpringFunction): Deleted. |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::TimingFunction::transformTime const): |
| * platform/animation/TimingFunction.h: |
| * platform/graphics/texmap/TextureMapperAnimation.cpp: |
| (WebCore::TextureMapperAnimation::apply): |
| (WebCore::solveEpsilon): Deleted. |
| (WebCore::solveCubicBezierFunction): Deleted. |
| (WebCore::solveStepsFunction): Deleted. |
| (WebCore::applyTimingFunction): Deleted. |
| |
| 2018-01-09 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, silence -Wunused-parameter warning |
| |
| * testing/js/WebCoreTestSupport.cpp: |
| (WebCoreTestSupport::setupNewlyCreatedServiceWorker): |
| |
| 2018-01-09 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Check Image::m_image is not null in ImageLoader::decode() |
| https://bugs.webkit.org/show_bug.cgi?id=180386 |
| <rdar://problem/34634483> |
| |
| Reviewed by Tim Horton. |
| |
| Ensure ImageLoader::m_image is not null before referencing it. |
| |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::decode): |
| |
| 2018-01-09 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| [FreeType] Use FastMalloc for FreeType |
| https://bugs.webkit.org/show_bug.cgi?id=181387 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add custom memory allocator for FreeType to use FastMalloc. |
| |
| * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: |
| (WebCore::initializeFreeTypeLibrary): |
| (WebCore::createFontCustomPlatformData): |
| |
| 2018-01-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderTable* addChild mutation logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181424 |
| <rdar://problem/36368628> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| Covered by existing tests. |
| |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::addChild): |
| * rendering/RenderTableRow.cpp: |
| (WebCore::RenderTableRow::addChild): |
| * rendering/RenderTableSection.cpp: |
| (WebCore::RenderTableSection::addChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::insertChildToRenderTable): |
| (WebCore::RenderTreeBuilder::insertChildToRenderTableSection): |
| (WebCore::RenderTreeBuilder::insertChildToRenderTableRow): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderTable.cpp: |
| (WebCore::RenderTreeBuilder::Table::insertChild): |
| * rendering/updating/RenderTreeBuilderTable.h: |
| |
| 2018-01-09 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Transition Render*::addChild() calls to RenderTreeBuilder::insertChildToRender*() |
| https://bugs.webkit.org/show_bug.cgi?id=181407 |
| <rdar://problem/36361176> |
| |
| Reviewed by Antti Koivisto. |
| |
| Eventually all mutation will be going through the RenderTreeBuilder. |
| |
| No change in functionality. |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::addChild): |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant): |
| * rendering/RenderRubyRun.cpp: |
| (WebCore::RenderRubyRun::rubyBaseSafe): |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): |
| * rendering/updating/RenderTreeBuilderRuby.cpp: |
| (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): |
| |
| 2018-01-09 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Ensure SleepDisabler is not held by pages in page cache |
| https://bugs.webkit.org/show_bug.cgi?id=180197 |
| |
| Reviewed by Eric Carlson. |
| |
| The sleep disabler is now checked again whenever the media player |
| playback state or other characteristic has changed in the media |
| engine. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaPlayerPlaybackStateChanged): |
| Check if the sleep disabler state needs to be updated or not. |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Ditto. |
| (WebCore::HTMLMediaElement::shouldDisableSleep const): Enable |
| sleep disabler for GTK and WPE ports. |
| |
| 2018-01-09 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Missing notifications to player client |
| https://bugs.webkit.org/show_bug.cgi?id=181432 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| We now properly emit playback state changes and characteristic |
| updates to the client when the pipeline state changes and when |
| audio/video tracks changes are detected. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::playbackPosition const): |
| This debug message appears too often in logs. Demote. |
| (WebCore::MediaPlayerPrivateGStreamer::durationMediaTime const): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): Emit |
| charasteristicChanged notification. |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto. |
| (WebCore::MediaPlayerPrivateGStreamer::updateStates): Keep track |
| of old and current pipeline state. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| |
| |
| 2018-01-09 Youenn Fablet <youenn@apple.com> |
| |
| Add CSP support to service workers |
| https://bugs.webkit.org/show_bug.cgi?id=181385 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by rebased tests. |
| |
| Added recovery of CSP information from WorkerScriptLoader. |
| Added plumbing to pass the CSP information to Service Workers. |
| Did not add persistency support for the CSP information as this requires changing the SQL database schema. |
| This will be done in a follow-up. |
| |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadAsynchronously): |
| (WebCore::WorkerScriptLoader::didReceiveResponse): |
| * workers/WorkerScriptLoader.h: |
| (WebCore::WorkerScriptLoader::contentSecurityPolicy const): |
| * workers/service/SWClientConnection.cpp: |
| (WebCore::SWClientConnection::finishedFetchingScript): |
| (WebCore::SWClientConnection::failedFetchingScript): |
| * workers/service/SWClientConnection.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::jobFailedWithException): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration): |
| (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/ServiceWorkerGlobalScope.cpp: |
| (WebCore::ServiceWorkerGlobalScope::create): |
| * workers/service/ServiceWorkerGlobalScope.h: |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::notifyFinished): |
| * workers/service/ServiceWorkerJobClient.h: |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| (WebCore::ServiceWorkerThread::createWorkerGlobalScope): |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::v1RecordsTableSchema): |
| (WebCore::RegistrationDatabase::importRecords): |
| * workers/service/server/SWServer.cpp: |
| (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::m_contentSecurityPolicy): |
| (WebCore::SWServerWorker::contextData const): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-01-09 Antoine Quint <graouts@apple.com> |
| |
| Provide a method to obtain a CSS value from a RenderStyle by CSSPropertyID |
| https://bugs.webkit.org/show_bug.cgi?id=181429 |
| |
| Reviewed by Antti Koivisto. |
| |
| The KeyframeEffect.getKeyframes() method from Web Animations requires that we return all styles applied at a given |
| animation effect keyframe. When we parse keyframes, we create RenderStyle objects that are stored in a KeyframeList, |
| as well as a list of CSSPropertyIDs that are animated. In order to provide the list of animated properties and their |
| values when calling getKeyframes(), we need to be able to read back from the RenderStyle we create. As a first step |
| towards this goal, we factor some code in ComputedStyleExtractor::propertyValue() out into a new method |
| ComputedStyleExtractor::valueForPropertyinStyle() which takes in an explicit RenderStyle. |
| |
| No test as this is simply refactoring that doesn't change or add behavior. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::propertyValue): |
| (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): |
| * css/CSSComputedStyleDeclaration.h: |
| |
| 2018-01-09 Youenn Fablet <youenn@apple.com> |
| |
| SWClientConnection should not keep references to service worker jobs |
| https://bugs.webkit.org/show_bug.cgi?id=181381 |
| |
| Reviewed by Chris Dumez. |
| |
| Difficult to test determiniscally but corresponding crash log should no longer happen in debug builds. |
| |
| Stopped passing ServiceWorkerJob references from ServiceWorkerContainer (potentially in service worker thread) to SWClientConnection (main thread). |
| Instead pass job identifiers and related data to the main thread. |
| |
| Minor refactoring to use ServiceWorkerJobIdentifier instead of ServiceWorkerJobDataIdentifier which contains more data than needed. |
| |
| * workers/service/SWClientConnection.cpp: |
| (WebCore::SWClientConnection::scheduleJob): |
| (WebCore::SWClientConnection::failedFetchingScript): |
| (WebCore::SWClientConnection::postTaskForJob): |
| (WebCore::SWClientConnection::jobRejectedInServer): |
| (WebCore::SWClientConnection::registrationJobResolvedInServer): |
| (WebCore::SWClientConnection::unregistrationJobResolvedInServer): |
| (WebCore::SWClientConnection::startScriptFetchForServer): |
| (WebCore::SWClientConnection::clearPendingJobs): |
| (WebCore::SWClientConnection::finishedFetchingScript): Deleted. |
| * workers/service/SWClientConnection.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::scheduleJob): |
| (WebCore::ServiceWorkerContainer::startScriptFetchForJob): |
| (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript): |
| (WebCore::ServiceWorkerContainer::jobFailedLoadingScript): |
| * workers/service/ServiceWorkerContainer.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::rejectJob): |
| (WebCore::SWServer::resolveRegistrationJob): |
| (WebCore::SWServer::resolveUnregistrationJob): |
| (WebCore::SWServer::startScriptFetch): |
| * workers/service/server/SWServer.h: |
| |
| 2018-01-09 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r224460): Text fields sometimes get "messed up" |
| https://bugs.webkit.org/show_bug.cgi?id=181115 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Add the scroll position to paint offset before computing the clip rectangle. Before r224460, scroll position was |
| substracted after the clip rectangle was computed. |
| |
| * rendering/LayoutState.cpp: |
| (WebCore::LayoutState::computeClipRect): |
| |
| 2018-01-09 Ali Juma <ajuma@chromium.org> |
| |
| Implement VisualViewport API events |
| https://bugs.webkit.org/show_bug.cgi?id=179386 |
| |
| Reviewed by Frédéric Wang. |
| |
| Implement the events (resize and scroll) defined by the Visual Viewport API |
| (https://wicg.github.io/visual-viewport/#events). |
| |
| This is behind the VisualViewportAPI experimental feature flag. |
| |
| In order to detect when events need to be fired, change the computation of |
| Visual Viewport attributes to happen whenever the layout viewport is updated |
| rather than only on-demand. |
| |
| Tests: fast/visual-viewport/resize-event-fired-window-resized.html |
| fast/visual-viewport/resize-event-fired.html |
| fast/visual-viewport/scroll-event-fired.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::addListenerTypeIfNeeded): |
| Add support for tracking resize event listeners. |
| * dom/Document.h: |
| * dom/DocumentEventQueue.cpp: |
| (WebCore::DocumentEventQueue::enqueueOrDispatchScrollEvent): |
| (WebCore::DocumentEventQueue::enqueueScrollEvent): |
| Factored out of enqueueOrDispatchScrollEvent so that this logic can be reused |
| for Visual Viewport scroll events. |
| (WebCore::DocumentEventQueue::enqueueResizeEvent): |
| (WebCore::DocumentEventQueue::pendingEventTimerFired): |
| * dom/DocumentEventQueue.h: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::updateLayoutViewport): |
| * page/VisualViewport.cpp: |
| (WebCore::VisualViewport::addEventListener): |
| (WebCore::layoutIfNonNull): |
| (WebCore::VisualViewport::offsetLeft const): |
| Remove attribute computation logic since this now happens during update(). |
| (WebCore::VisualViewport::offsetTop const): Ditto. |
| (WebCore::VisualViewport::pageLeft const): Ditto. |
| (WebCore::VisualViewport::pageTop const): Ditto. |
| (WebCore::VisualViewport::width const): Ditto. |
| (WebCore::VisualViewport::height const): Ditto. |
| (WebCore::VisualViewport::scale const): |
| (WebCore::VisualViewport::update): |
| Added. Computes all of the Visual Viewport attributes and determines |
| whether events need to be fired. |
| (WebCore::VisualViewport::enqueueResizeEvent): |
| (WebCore::VisualViewport::enqueueScrollEvent): |
| (WebCore::getFrameViewAndLayoutIfNonNull): Deleted. |
| * page/VisualViewport.h: |
| |
| 2018-01-09 Yacine Bandou <yacine.bandou_ext@softathome.com> |
| |
| [EME] Add the CENC initData support in ClearKey CDM |
| https://bugs.webkit.org/show_bug.cgi?id=180081 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Add the "cenc" initDataType support in ClearKey CDM. |
| Parse the CENC initData and extract the KIDs by following the W3C spec |
| https://www.w3.org/TR/eme-initdata-cenc/#common-system |
| |
| Tests: media/encrypted-media/clearKey/clearKey-message-cenc-event.html |
| media/encrypted-media/clearKey/clearKey-message-cenc-event-mse.html |
| |
| * platform/encryptedmedia/clearkey/CDMClearKey.cpp: |
| (WebCore::extractKeyidsLocationFromCencInitData): |
| (WebCore::isCencInitData): |
| (WebCore::extractKeyidsFromCencInitData): |
| (WebCore::CDMPrivateClearKey::supportsInitDataType const): |
| (WebCore::CDMPrivateClearKey::supportsInitData const): |
| (WebCore::CDMInstanceClearKey::requestLicense): |
| |
| 2018-01-09 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Pass state values directly to Cairo operations |
| https://bugs.webkit.org/show_bug.cgi?id=181389 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Instead of passing reference to the GraphicsContextState object to |
| various Cairo operations, only pass the required state values. This |
| makes it explicit what state values are used in these operations, at the |
| expense of some long parameter lists, but this will be better addressed |
| by future refactoring of this code into more concise functions. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawGlyphsShadow): |
| (WebCore::Cairo::dashedLineCornerWidthForStrokeWidth): |
| (WebCore::Cairo::dashedLinePatternWidthForStrokeWidth): |
| (WebCore::Cairo::drawGlyphs): |
| (WebCore::Cairo::drawRect): |
| (WebCore::Cairo::drawLine): |
| (WebCore::Cairo::drawEllipse): |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/FontCairo.cpp: |
| (WebCore::FontCascade::drawGlyphs): |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::drawRect): |
| (WebCore::GraphicsContext::drawLine): |
| (WebCore::GraphicsContext::drawEllipse): |
| |
| 2018-01-09 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Release assert in addResourceTiming when a cache resource is requested during style recalc |
| https://bugs.webkit.org/show_bug.cgi?id=181137 |
| <rdar://problem/35666574> |
| |
| Reviewed by Simon Fraser. |
| |
| Make the dispatching of resourcetimingbufferfull event asynchronous to avoid dispatching it |
| synchronously during a style resolution when CachedResourceLoader::requestImage requests |
| a previously loaded image. |
| |
| We now schedule a timer when the resource timing buffer becomes full, and dispatch the event |
| when the timer fires. Meanwhile, we have a backup buffer to which additional resource timing |
| entries would be added. Once the event is dispatched, we refill the buffer exposed to author |
| scripts. When refilling the buffer results in it becoming full again, we keep repeating the |
| process of firing resourcetimingbufferfull and re-filling the buffer until either we stop |
| making progress (i.e. the script didn't increase the number of empty entires in the buffer) |
| or the backup buffer (at the time we started this process) becomes empty. |
| |
| Also fixed a bug that we were firing resourcetimingbufferfull event when the last entry that |
| fits within the buffer size was added instead of when an entry is being added to an already |
| full buffer. To make this work, the patch introduces m_resourceTimingBufferFullFlag, |
| representing the concept "resource timing buffer full" flag in the resource timing specification. |
| |
| Test: http/tests/performance/performance-resource-timing-resourcetimingbufferfull-crash.html |
| |
| * page/Performance.cpp: |
| (WebCore::Performance::Performance): |
| (WebCore::Performance::clearResourceTimings): |
| (WebCore::Performance::setResourceTimingBufferSize): |
| (WebCore::Performance::addResourceTiming): |
| (WebCore::Performance::resourceTimingBufferFullTimerFired): |
| * page/Performance.h: |
| |
| 2018-01-08 Chris Nardi <csnardi1@gmail.com> |
| |
| ::first-letter incorrectly selects grapheme pairs |
| https://bugs.webkit.org/show_bug.cgi?id=181315 |
| |
| Reviewed by Darin Adler. |
| |
| Grapheme pairs were incorrectly selected by ::first-letter. This |
| change fixes their selection. |
| |
| Tests: Updated fast/css/first-letter-punctuation.html and imported |
| LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo-4/first-letter-004.html |
| |
| * rendering/updating/RenderTreeBuilderFirstLetter.cpp: |
| (WebCore::isPunctuationForFirstLetter): |
| (WebCore::shouldSkipForFirstLetter): |
| (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): |
| |
| 2018-01-08 Darin Adler <darin@apple.com> |
| |
| Special list-item counter starts from an incorrect number for ::before and ::after |
| https://bugs.webkit.org/show_bug.cgi?id=181084 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Test: fast/css/counters/counter-list-item.html |
| |
| * Sources.txt: Removed CounterDirectives.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::counterToCSSValue): Updated for changes to the CounterDirectives struct. |
| * css/StyleBuilderCustom.h: |
| (WebCore::StyleBuilderCustom::applyInheritCounter): Ditto. |
| (WebCore::StyleBuilderCustom::applyValueCounter): Ditto. |
| |
| * html/HTMLLIElement.cpp: |
| (WebCore::HTMLLIElement::parseValue): Call setExplicitValue(std::nullopt) instead |
| of clearExplicitValue since we are using std::optional now. |
| |
| * rendering/RenderCounter.cpp: |
| (WebCore::listItemCounterDirectives): Added. Computes the counter directives that |
| express the effects on the list-item counter from list item and list elements. |
| Used something as close to what the CSS 3 draft says as possible. This uses a |
| negative increment when creating a list to counteract the positive increment done |
| by a list element, except in the case of an unordered list. This is where the bug |
| fix actually lies. Also fixed handling of reversed ordered lists at the same time. |
| (WebCore::planCounter): Refactored to use the function above. Also changed the |
| code to pay attention to both the counter directives and the implicit ones from |
| list item and list elements, getting as close as possible to what the specification |
| seems to call for. |
| |
| * rendering/RenderListItem.cpp: |
| (WebCore::RenderListItem::RenderListItem): Since we are using std::optional and no |
| longer using bit fields, simplified the constructor for each list item. |
| (WebCore::RenderListItem::calcValue const): Deleted. |
| (WebCore::RenderListItem::updateValueNow const): Merged in all the code from the |
| old calcValue function, but it is also simpler now since m_value is std::optional. |
| (WebCore::RenderListItem::updateValue): Updated to use std::optional. |
| (WebCore::RenderListItem::setExplicitValue): Ditto. |
| (WebCore::RenderListItem::clearExplicitValue): Deleted. |
| (WebCore::RenderListItem::updateListMarkerNumbers): Updated to use std::optional. |
| (WebCore::RenderListItem::isInReversedOrderedList const): Added. This is used by |
| the counter code so it can decrement instead of incrementing. |
| |
| * rendering/RenderListItem.h: Updated to use std::optional. Also marked functions |
| final instead of override and initialized m_notInList after making it not be a |
| bitfield any more. |
| |
| * rendering/style/CounterDirectives.cpp: Removed. |
| * rendering/style/CounterDirectives.h: Removed most of the CounterDirectives |
| class and replaced it with a struct with two std::optional. Added an addClamped |
| function so the counter code can share it with the addIncrementValue function. |
| If we want to make a faster version that doesn't use double, we can come back |
| and do that. Also moved the == function to the header since the implementation |
| is so trivial. |
| |
| * rendering/style/StyleAllInOne.cpp: Removed CounterDirectives.cpp. |
| |
| * rendering/style/StyleRareNonInheritedData.cpp: |
| (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): Updated to |
| use std::make_unique directly instead of using a clone function. |
| |
| 2018-01-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Expose HTMLAttachmentElement.uniqueIdentifier to bindings |
| https://bugs.webkit.org/show_bug.cgi?id=181420 |
| <rdar://problem/36365827> |
| |
| Reviewed by Alex Christensen. |
| |
| Add a new IDL definition for uniqueIdentifier on HTMLAttachmentElement. This allows clients to relate attachment |
| elements in the DOM to _WKAttachments delivered via Objective-C SPI. |
| |
| Adjusted existing tests in WKAttachmentTests. |
| |
| * html/HTMLAttachmentElement.idl: |
| |
| 2018-01-08 Don Olmstead <don.olmstead@sony.com> |
| |
| AccessibilityARIAGrid does not compile when accessibility is disabled |
| https://bugs.webkit.org/show_bug.cgi?id=181418 |
| <rdar://problem/36365398> |
| |
| Reviewed by Chris Fleizach. |
| |
| No new tests. No change in behavior. |
| |
| * accessibility/AccessibilityARIAGrid.cpp: |
| |
| 2018-01-08 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r226532 and r226540. |
| https://bugs.webkit.org/show_bug.cgi?id=181422 |
| |
| jessie says basic browsing does not seem to work (Requested by |
| alexchristensen on #webkit). |
| |
| Reverted changesets: |
| |
| "Add CSP support to service workers" |
| https://bugs.webkit.org/show_bug.cgi?id=181385 |
| https://trac.webkit.org/changeset/226532 |
| |
| "SWClientConnection should not keep references to service |
| worker jobs" |
| https://bugs.webkit.org/show_bug.cgi?id=181381 |
| https://trac.webkit.org/changeset/226540 |
| |
| 2018-01-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Expose file name and content type of WKAttachment |
| https://bugs.webkit.org/show_bug.cgi?id=181390 |
| <rdar://problem/36336837> |
| |
| Reviewed by Tim Horton. |
| |
| Add new structs in AttachmentTypes.h and refactor HTMLAttachmentElement::requestData to requestInfo. See below |
| for more details. Augmented existing API tests in WKAttachmentTests. |
| |
| * html/AttachmentTypes.h: |
| |
| Add a struct to represent a snapshot of information about an attachment element. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::requestInfo): |
| (WebCore::HTMLAttachmentElement::requestData): Deleted. |
| * html/HTMLAttachmentElement.h: |
| |
| Change requestData to requestInfo. Instead of fetching and delivering data via callback, requestInfo returns an |
| AttachmentInfo. |
| |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderAttachmentInfo::addLine): |
| (WebCore::RenderAttachmentInfo::buildWrappedLines): |
| (WebCore::RenderAttachmentInfo::buildSingleLine): |
| (WebCore::RenderAttachmentInfo::RenderAttachmentInfo): |
| (WebCore::RenderThemeIOS::attachmentBaseline const): |
| (WebCore::paintAttachmentIcon): |
| (WebCore::paintAttachmentText): |
| (WebCore::paintAttachmentProgress): |
| (WebCore::attachmentBorderPath): |
| (WebCore::RenderThemeIOS::paintAttachment): |
| (WebCore::AttachmentInfo::addLine): Deleted. |
| (WebCore::AttachmentInfo::buildWrappedLines): Deleted. |
| (WebCore::AttachmentInfo::buildSingleLine): Deleted. |
| (WebCore::AttachmentInfo::AttachmentInfo): Deleted. |
| |
| Rename AttachmentInfo to RenderAttachmentInfo to resolve a name conflict with the new AttachmentInfo struct. |
| |
| 2018-01-08 Saam Barati <sbarati@apple.com> |
| |
| Speculative build fix after r226600. We only use clflush on x86 and the `asm volatile` syntax is not available in the Windows build. |
| |
| No new tests because this is a build fix. |
| |
| * dom/Comment.cpp: |
| (WebCore::Comment::clflushReadLength): |
| |
| 2018-01-08 Michael Saboff <msaboff@apple.com> |
| |
| Add a DOM gadget for Spectre testing |
| https://bugs.webkit.org/show_bug.cgi?id=181351 |
| |
| Reviewed by Saam Barati. |
| |
| This change is used to test Spectre mitigations. |
| |
| Added a side data array to the Comment DOM node to test for Spectre issues in |
| the DOM layer. This additional functionality is disabled by default and must |
| be enabled through the JSC option "enableSpectreGadgets". |
| |
| * dom/Comment.cpp: |
| (WebCore::Comment::Comment): |
| (WebCore::Comment::setReadLength): |
| (WebCore::Comment::charCodeAt): |
| (WebCore::Comment::clflushReadLength): |
| * dom/Comment.h: |
| * dom/Comment.idl: |
| * page/RuntimeEnabledFeatures.cpp: |
| (WebCore::RuntimeEnabledFeatures::spectreGadgetsEnabled const): |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-01-08 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| A canvas should not be tainted if it draws a data URL SVGImage with a <foreignObject> |
| https://bugs.webkit.org/show_bug.cgi?id=180301 |
| |
| Reviewed by Dean Jackson. |
| |
| Don't taint the canvas if it draws a data URL SVGImage with a <foreignObject>. |
| There should not be a cross-origin data leak in this case. |
| |
| Tests: svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html |
| svg/as-image/svg-canvas-data-url-svg-with-foreign-object-not-tainted.html |
| svg/as-image/svg-canvas-data-url-svg-with-image-not-tainted.html |
| |
| * html/ImageBitmap.cpp: |
| (WebCore::taintsOrigin): |
| * html/canvas/CanvasRenderingContext.cpp: |
| (WebCore::CanvasRenderingContext::wouldTaintOrigin): |
| |
| 2018-01-08 Don Olmstead <don.olmstead@sony.com> |
| |
| Simplify platform checks in Graphics Context |
| https://bugs.webkit.org/show_bug.cgi?id=181344 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * platform/graphics/ANGLEWebKitBridge.h: |
| * platform/graphics/GLContext.h: |
| * platform/graphics/GraphicsContext3D.h: |
| * platform/graphics/OpenGLESShims.h: |
| * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: |
| (WebCore::GraphicsContext3D::checkVaryingsPacking const): |
| |
| 2018-01-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move SVG addChild logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181405 |
| <rdar://problem/36360476> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving the code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/svg/RenderSVGContainer.cpp: |
| (WebCore::RenderSVGContainer::addChild): |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::addChild): |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::addChild): |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::addChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::insertChildToSVGContainer): |
| (WebCore::RenderTreeBuilder::insertChildToSVGInline): |
| (WebCore::RenderTreeBuilder::insertChildToSVGRoot): |
| (WebCore::RenderTreeBuilder::insertChildToSVGText): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::SVGBuilder): |
| * rendering/updating/RenderTreeBuilderSVG.cpp: Added. |
| (WebCore::RenderTreeBuilder::SVG::SVG): |
| (WebCore::RenderTreeBuilder::SVG::insertChild): |
| * rendering/updating/RenderTreeBuilderSVG.h: Added. |
| |
| 2018-01-08 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Remove access for all frames under a page when the page is closed |
| https://bugs.webkit.org/show_bug.cgi?id=181398 |
| <rdar://problem/36357879> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. Discussed with Alex Christensen and we concluded that |
| both a layout test and an API test would require a lot of work and |
| we have existing tests for clearing out storage access for frames. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage): |
| |
| 2018-01-08 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r226385. |
| |
| The test introduced with this was a flaky since being added. |
| |
| Reverted changeset: |
| |
| "AX: when invert colors is on, double-invert certain media |
| elements in UserAgentStyleSheet" |
| https://bugs.webkit.org/show_bug.cgi?id=168447 |
| https://trac.webkit.org/changeset/226385 |
| |
| 2018-01-08 Youenn Fablet <youenn@apple.com> |
| |
| SWClientConnection should not keep references to service worker jobs |
| https://bugs.webkit.org/show_bug.cgi?id=181381 |
| |
| Reviewed by Chris Dumez. |
| |
| Difficult to test determiniscally but corresponding crash log should no longer happen in debug builds. |
| |
| Stopped passing ServiceWorkerJob references from ServiceWorkerContainer (potentially in service worker thread) to SWClientConnection (main thread). |
| Instead pass job identifiers and related data to the main thread. |
| |
| Minor refactoring to use ServiceWorkerJobIdentifier instead of ServiceWorkerJobDataIdentifier which contains more data than needed. |
| |
| * workers/service/SWClientConnection.cpp: |
| (WebCore::SWClientConnection::scheduleJob): |
| (WebCore::SWClientConnection::failedFetchingScript): |
| (WebCore::SWClientConnection::postTaskForJob): |
| (WebCore::SWClientConnection::jobRejectedInServer): |
| (WebCore::SWClientConnection::registrationJobResolvedInServer): |
| (WebCore::SWClientConnection::unregistrationJobResolvedInServer): |
| (WebCore::SWClientConnection::startScriptFetchForServer): |
| (WebCore::SWClientConnection::clearPendingJobs): |
| (WebCore::SWClientConnection::finishedFetchingScript): Deleted. |
| * workers/service/SWClientConnection.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::scheduleJob): |
| (WebCore::ServiceWorkerContainer::startScriptFetchForJob): |
| (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript): |
| (WebCore::ServiceWorkerContainer::jobFailedLoadingScript): |
| * workers/service/ServiceWorkerContainer.h: |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::rejectJob): |
| (WebCore::SWServer::resolveRegistrationJob): |
| (WebCore::SWServer::resolveUnregistrationJob): |
| (WebCore::SWServer::startScriptFetch): |
| * workers/service/server/SWServer.h: |
| |
| 2018-01-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Copying, pasting, and then deleting an attachment element breaks attachment data requests |
| https://bugs.webkit.org/show_bug.cgi?id=181365 |
| <rdar://problem/36340647> |
| |
| Reviewed by Tim Horton. |
| |
| Currently, copying and pasting an attachment element within the same document and then deleting backwards to |
| remove the pasted attachment element causes the original attachment element to be inaccessible via SPI. This is |
| because there are now two different attachment elements with the same unique identifier, such that Document, |
| which keeps a map of all unique attachment identifiers to attachment elements, will lose track of the original |
| attachment element. |
| |
| To fix this, we ensure that attachment elements should always have unique identifiers when they are inserted |
| into the document. We make several small adjustments to accomplish this: |
| |
| 1. First, refactor HTMLAttachmentElement's unique identifier so that it no longer depends on the value of the |
| "webkitattachmentid" attribute, and is instead just a member of HTMLAttachmentElement that is not exposed to |
| DOM bindings. This means setting and querying an attachment element's uniqueIdentifier can be done without |
| triggering any side effects, such as layout or mutation events. |
| |
| 2. Next, make "webkitattachmentid" a temporary attribute similar to "webkitattachmentpath" and |
| "webkitattachmentbloburl", so that it is added only when generating a markup fragment for editing, and |
| removed upon deserialization. |
| |
| 3. Lastly, shift the responsibility of assigning a unique identifier to an attachment away from places where we |
| create attachment elements, and instead have Document enforce this when an attachment element is inserted. |
| |
| Tests: WKAttachmentTests.InsertAndRemoveDuplicateAttachment |
| WKAttachmentTests.InsertDuplicateAttachmentAndUpdateData |
| |
| * dom/Document.cpp: |
| (WebCore::Document::didInsertAttachmentElement): |
| |
| Assign the unique identifier of an attachment element that has been inserted. If the identifier already tracks |
| an existing attachment element in the document or is missing, reassign the identifier to a new value. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::createFragmentForImageAttachment): |
| (WebCore::replaceRichContentWithAttachments): |
| (WebCore::WebContentReader::readFilePaths): |
| |
| Remove calls to setUniqueIdentifier here, since Document will assign a unique identifier upon insertion. |
| |
| * editing/markup.cpp: |
| (WebCore::StyledMarkupAccumulator::appendCustomAttributes): |
| (WebCore::createFragmentFromMarkup): |
| |
| Set the attachment's unique identifier to the value of the "webkitattachmentid" attribute. When moving existing |
| attachments around in the DOM without duplication, this ensures that the attachment will be removed and |
| reinserted in the document without triggering removal and insertion client delegate methods. |
| |
| When pasting an attachment element that has the same identifier as an existing attachment, we let Document |
| realize that the attachment identifier already exists, and reassign it to a unique value. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::uniqueIdentifier const): Deleted. |
| (WebCore::HTMLAttachmentElement::setUniqueIdentifier): Deleted. |
| * html/HTMLAttachmentElement.h: |
| |
| 2018-01-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlockFlow addChild logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181348 |
| <rdar://problem/36328117> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving the code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::addChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlockFlow): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::blockFlowBuilder): |
| * rendering/updating/RenderTreeBuilderBlockFlow.cpp: Added. |
| (WebCore::RenderTreeBuilder::BlockFlow::BlockFlow): |
| (WebCore::RenderTreeBuilder::BlockFlow::insertChild): |
| * rendering/updating/RenderTreeBuilderBlockFlow.h: Added. |
| |
| 2018-01-08 Youenn Fablet <youenn@apple.com> |
| |
| Add CSP support to service workers |
| https://bugs.webkit.org/show_bug.cgi?id=181385 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by rebased tests. |
| |
| Added recovery of CSP information from WorkerScriptLoader. |
| Added plumbing to pass the CSP information to Service Workers. |
| Added persistency support for the CSP information. |
| |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadAsynchronously): |
| (WebCore::WorkerScriptLoader::didReceiveResponse): |
| * workers/WorkerScriptLoader.h: |
| (WebCore::WorkerScriptLoader::contentSecurityPolicy const): |
| * workers/service/SWClientConnection.cpp: |
| (WebCore::SWClientConnection::finishedFetchingScript): |
| (WebCore::SWClientConnection::failedFetchingScript): |
| * workers/service/SWClientConnection.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| (WebCore::ServiceWorkerContainer::jobFailedWithException): |
| (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration): |
| (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/ServiceWorkerGlobalScope.cpp: |
| (WebCore::ServiceWorkerGlobalScope::create): |
| * workers/service/ServiceWorkerGlobalScope.h: |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::notifyFinished): |
| * workers/service/ServiceWorkerJobClient.h: |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| (WebCore::ServiceWorkerThread::createWorkerGlobalScope): |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::v1RecordsTableSchema): |
| (WebCore::RegistrationDatabase::openSQLiteDatabase): |
| (WebCore::RegistrationDatabase::doPushChanges): |
| (WebCore::RegistrationDatabase::importRecords): |
| * workers/service/server/SWServer.cpp: |
| (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::m_contentSecurityPolicy): |
| (WebCore::SWServerWorker::contextData const): |
| * workers/service/server/SWServerWorker.h: |
| |
| 2018-01-08 Youenn Fablet <youenn@apple.com> |
| |
| Use no-cache fetch mode when loading main documents with location.reload() |
| https://bugs.webkit.org/show_bug.cgi?id=181285 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased tests. |
| |
| Start to translate cache policy used for navigation as FetchOptions::Cache. |
| This allows ensuring service workers receive the right cache mode when intercepting navigation loads. |
| To not change current navigation behavior, ReturnCacheDataElseLoad and ReturnCacheDataDontLoad still trigger default fetch cache mode. |
| |
| For Reload and ReloadExpiredOnly frame load types, using no-cache mode is more efficient than reload mode, |
| as a conditional request will be sent if possible. This applies to location.reload which is consistent with other browsers. |
| Keep reload mode for ReloadFromOrigin. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::toFetchOptionsCache): |
| (WebCore::DocumentLoader::loadMainResource): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadFrameRequest): |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::reload): |
| (WebCore::FrameLoader::defaultRequestCachingPolicy): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/NavigationScheduler.cpp: |
| |
| 2018-01-08 Youenn Fablet <youenn@apple.com> |
| |
| Stop exposing fetch and extendable events to window |
| https://bugs.webkit.org/show_bug.cgi?id=181325 |
| |
| Reviewed by Chris Dumez. |
| |
| Covered by updated tests. |
| |
| Marked FetchEvent and ExtendableEvent as visible in ServiceWorker environments only. |
| Moved related Internals testing routines to ServiceWorkerInternals. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::waitForFetchEventToFinish): Deleted. |
| (WebCore::Internals::createBeingDispatchedFetchEvent): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * testing/ServiceWorkerInternals.cpp: |
| (WebCore::ServiceWorkerInternals::waitForFetchEventToFinish): |
| (WebCore::ServiceWorkerInternals::createBeingDispatchedFetchEvent): |
| * testing/ServiceWorkerInternals.h: |
| * testing/ServiceWorkerInternals.idl: |
| * workers/service/ExtendableEvent.idl: |
| * workers/service/FetchEvent.idl: |
| |
| 2018-01-08 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r219145): Toggling layer borders on a static document no longer works immediately |
| https://bugs.webkit.org/show_bug.cgi?id=176260 |
| <rdar://problem/34219966> |
| |
| Reviewed by Simon Fraser. |
| |
| Optimization reveled bugs in debug indicator painting. |
| |
| Test: compositing/debug-borders-dynamic.html |
| |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): |
| (WebCore::GraphicsLayerCA::updateDebugIndicators): |
| (WebCore::GraphicsLayerCA::updateDebugBorder): Deleted. |
| |
| - Rename to indicate this is not just about debug borders. |
| - Trigger display so repaint counters get painted. This helper is only called when the indicators change. |
| |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags): |
| |
| Ensure we do compositing update on debug border change even when there is no layout. |
| |
| 2018-01-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderInline addChild logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181336 |
| <rdar://problem/36324693> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving the code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::addChild): |
| (WebCore::RenderInline::addChildIgnoringContinuation): |
| (WebCore::RenderInline::childBecameNonInline): |
| (WebCore::nextContinuation): Deleted. |
| (WebCore::RenderInline::continuationBefore): Deleted. |
| (WebCore::newChildIsInline): Deleted. |
| (WebCore::RenderInline::cloneAsContinuation const): Deleted. |
| (WebCore::RenderInline::splitInlines): Deleted. |
| (WebCore::RenderInline::splitFlow): Deleted. |
| (WebCore::canUseAsParentForContinuation): Deleted. |
| (WebCore::RenderInline::addChildToContinuation): Deleted. |
| * rendering/RenderInline.h: |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::insertChildToRenderInline): |
| (WebCore::RenderTreeBuilder::insertChildToRenderInlineIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::splitFlow): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::inlineBuilder): |
| * rendering/updating/RenderTreeBuilderInline.cpp: Added. |
| (WebCore::canUseAsParentForContinuation): |
| (WebCore::nextContinuation): |
| (WebCore::continuationBefore): |
| (WebCore::cloneAsContinuation): |
| (WebCore::newChildIsInline): |
| (WebCore::inFlowPositionedInlineAncestor): |
| (WebCore::RenderTreeBuilder::Inline::Inline): |
| (WebCore::RenderTreeBuilder::Inline::insertChild): |
| (WebCore::RenderTreeBuilder::Inline::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::Inline::splitFlow): |
| (WebCore::RenderTreeBuilder::Inline::splitInlines): |
| * rendering/updating/RenderTreeBuilderInline.h: Added. |
| |
| 2018-01-08 Zalan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Move RenderBlock addChild logic to RenderTreeBuilder |
| https://bugs.webkit.org/show_bug.cgi?id=181319 |
| <rdar://problem/36313464> |
| |
| Reviewed by Antti Koivisto. |
| |
| This is about moving the code, no cleanup and/or normalization (unfortunately it also means |
| some temporary changes). |
| |
| No change in functionality. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::addChild): |
| (WebCore::RenderBlock::addChildIgnoringContinuation): |
| (WebCore::RenderBlock::childBecameNonInline): |
| (WebCore::RenderBlock::continuationBefore): Deleted. |
| (WebCore::RenderBlock::addChildToContinuation): Deleted. |
| (WebCore::getInlineRun): Deleted. |
| (WebCore::RenderBlock::makeChildrenNonInline): Deleted. |
| * rendering/RenderBlock.h: |
| * rendering/RenderBox.cpp: |
| (WebCore::markBoxForRelayoutAfterSplit): Deleted. |
| (WebCore::RenderBox::splitAnonymousBoxesAroundChild): Deleted. |
| * rendering/RenderBox.h: |
| * rendering/RenderRubyBase.cpp: |
| (WebCore::RenderRubyBase::moveChildren): |
| (WebCore::RenderRubyBase::moveBlockChildren): |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::addChild): |
| * rendering/RenderTableRow.cpp: |
| (WebCore::RenderTableRow::addChild): |
| * rendering/RenderTableSection.cpp: |
| (WebCore::RenderTableSection::addChild): |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::markBoxForRelayoutAfterSplit): |
| (WebCore::getInlineRun): |
| (WebCore::RenderTreeBuilder::RenderTreeBuilder): |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlock): |
| (WebCore::RenderTreeBuilder::insertChildToRenderBlockIgnoringContinuation): |
| (WebCore::RenderTreeBuilder::makeChildrenNonInline): |
| (WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild): |
| * rendering/updating/RenderTreeBuilder.h: |
| (WebCore::RenderTreeBuilder::blockBuilder): |
| * rendering/updating/RenderTreeBuilderBlock.cpp: Added. |
| (WebCore::continuationBefore): |
| (WebCore::RenderTreeBuilder::Block::Block): |
| (WebCore::RenderTreeBuilder::Block::insertChild): |
| (WebCore::RenderTreeBuilder::Block::insertChildToContinuation): |
| (WebCore::RenderTreeBuilder::Block::insertChildIgnoringContinuation): |
| * rendering/updating/RenderTreeBuilderBlock.h: Added. |
| |
| 2018-01-08 Jeremy Jones <jeremyj@apple.com> |
| |
| Standard controls sometimes say video is in pip when it isnt. |
| https://bugs.webkit.org/show_bug.cgi?id=181095 |
| rdar://problem/36182687 |
| |
| Reviewed by Eric Carlson. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::exitFullscreen): |
| |
| 2018-01-08 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION: [iOS] ASSERTION FAILED: !node.isConnected() in WebCore::notifyNodeInsertedIntoDocument |
| https://bugs.webkit.org/show_bug.cgi?id=181091 |
| |
| Reviewed by Darin Adler. |
| |
| Move the work previously performed in insertedIntoAncestor() into didFinishInsertingNode(). |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::prepareForLoad): |
| |
| 2018-01-08 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Use isolated fill and stroke source containers |
| https://bugs.webkit.org/show_bug.cgi?id=181386 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Generate fill and stroke source objects upon invocation of various Cairo |
| operations, initializing necessary data from the GraphicsContextState |
| object. |
| |
| Cairo::FillSource and Cairo::StrokeSource structs are introduced, both |
| being default-constructible as well as providing a constructor that |
| accepts a GraphicsContextState object from which the appropriate |
| resources are created. |
| |
| The FillSource and StrokeSource objects are then passed to |
| PlatformContextCairo's prepareForFilling() and prepareForStroking() |
| methods. Here the helper prepareCairoContextSource() function is now |
| invoked with cairo_pattern_t objects as pattern or gradient sources, or |
| the source color if neither cairo_pattern_t object is specified. |
| |
| The FillSource and StrokeSource constructors mimic the previous behavior |
| of prepareCairoContextSource(). In case the source is a Pattern object, |
| a cairo_pattern_t object is created from that. In case of FillSource, |
| we also retrieve pattern size, transform and repetition information. In |
| case the source os a Gradient object, we create a 'base' cairo_pattern_t |
| object for a completely opaque alpha channel. Additionally, if the alpha |
| value on the state is not 1, we create an alpha-adjusted cairo_pattern_t |
| that is potentially used for any filling or stroking operation that has |
| to preserve transparency. If neither Pattern or Gradient objects are set |
| on the GraphicsContextState, we default to the current fill or stroke |
| color. |
| |
| Overall, there's no change in behavior, this is simply a refactoring |
| that enables us to construct Cairo objects for filling and stroking |
| sources at the time of Cairo operation dispatch, instead of pulling down |
| GraphicsContextState deeper into the Cairo-specific code. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawPathShadow): |
| (WebCore::Cairo::fillCurrentCairoPath): |
| (WebCore::Cairo::FillSource::FillSource): |
| (WebCore::Cairo::StrokeSource::StrokeSource): |
| (WebCore::Cairo::fillRect): |
| (WebCore::Cairo::fillRectWithRoundedHole): |
| (WebCore::Cairo::fillPath): |
| (WebCore::Cairo::strokeRect): |
| (WebCore::Cairo::strokePath): |
| (WebCore::Cairo::drawGlyphs): |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/FontCairo.cpp: |
| (WebCore::FontCascade::drawGlyphs): |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::fillPath): |
| (WebCore::GraphicsContext::strokePath): |
| (WebCore::GraphicsContext::fillRect): |
| (WebCore::GraphicsContext::strokeRect): |
| (WebCore::GraphicsContext::fillRectWithRoundedHole): |
| * platform/graphics/cairo/PlatformContextCairo.cpp: |
| (WebCore::prepareCairoContextSource): |
| (WebCore::PlatformContextCairo::prepareForFilling): |
| (WebCore::PlatformContextCairo::prepareForStroking): |
| (WebCore::PlatformContextCairo::clipForPatternFilling): |
| * platform/graphics/cairo/PlatformContextCairo.h: |
| |
| 2018-01-08 Youenn Fablet <youenn@apple.com> |
| |
| navigator.onLine does not work inside service workers |
| https://bugs.webkit.org/show_bug.cgi?id=181079 |
| <rdar://problem/36178606> |
| |
| Reviewed by Darin Adler. |
| |
| Test: http/wpt/service-workers/online.https.html |
| |
| Added support for onLine by reusing a similar implementation as regular workers. |
| Added ServiceWorkerInternals as an interface for an object exposed as self.internals in WTR. |
| This object has currently one method to trigger change in the online/offline status. |
| This allows writing a test for the onLine feature. |
| |
| Note that self.internals is inserted asynchronously after the script was evaluated. |
| When writing a worker script using self.internals, one must make sure to use self.internals when initialized. |
| online-worker.js for instance makes use of self.internals in a postMessage callback. |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/WorkerScriptController.h: |
| * dom/ScriptExecutionContext.h: |
| * testing/ServiceWorkerInternals.cpp: Added. |
| (WebCore::ServiceWorkerInternals::ServiceWorkerInternals): |
| (WebCore::ServiceWorkerInternals::setOnline): |
| * testing/ServiceWorkerInternals.h: Added. |
| * testing/ServiceWorkerInternals.idl: Added. |
| * testing/js/WebCoreTestSupport.cpp: |
| (WebCoreTestSupport::setupNewlyCreateServiceWorker): |
| * testing/js/WebCoreTestSupport.h: |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::registerServiceWorkerThreadForInstall): |
| (WebCore::SWContextManager::startedServiceWorker): |
| * workers/service/context/SWContextManager.h: |
| (WebCore::SWContextManager::setServiceWorkerCreationCallback): |
| (WebCore::SWContextManager::workerByID): |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::ServiceWorkerThread): |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): |
| (WebCore::ServiceWorkerThreadProxy::~ServiceWorkerThreadProxy): |
| (WebCore::ServiceWorkerThreadProxy::networkStateChanged): |
| (WebCore::ServiceWorkerThreadProxy::notifyNetworkStateChange): |
| * workers/service/context/ServiceWorkerThreadProxy.h: |
| |
| 2018-01-08 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Cairo] Contain shadow blur requirement state in a separate object |
| https://bugs.webkit.org/show_bug.cgi?id=181380 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Instead of picking up the necessary state parameters from a |
| GraphicsContextState object, store the necessary parameters in a helper |
| ShadowBlurUsage struct. Mimicking the mustUseShadowBlur() function that |
| is being removed, values of the shadow color, shadow blur, and shadow |
| transform ignorance are stored there. Additionally, the required() |
| method accepts a PlatformContextCairo object through which it can |
| retrieve the current CTM and determine whether it's an identity, finally |
| deciding whether shadow blur can or cannot be ignored. |
| |
| Goal of this change is to limit usage of GraphicsContextState directly |
| in operations implemented inside the Cairo namespace. Instead, the |
| state parameters should be passed directly, or an equivalent but limited |
| state object should be constructed for invocation of such operations. |
| |
| This is likely only an intermediate solution. It's possible it will be |
| replaced by a more complete shadow state struct that would be used for |
| any operation that is required to draw shadows, if necessary. |
| |
| No new tests -- no change in functionality. |
| |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::drawGlyphsShadow): |
| (WebCore::Cairo::ShadowBlurUsage::ShadowBlurUsage): |
| (WebCore::Cairo::ShadowBlurUsage::required const): |
| (WebCore::Cairo::fillRectWithRoundedHole): |
| (WebCore::Cairo::drawGlyphs): |
| (WebCore::Cairo::mustUseShadowBlur): Deleted. |
| * platform/graphics/cairo/CairoOperations.h: |
| * platform/graphics/cairo/FontCairo.cpp: |
| (WebCore::FontCascade::drawGlyphs): |
| * platform/graphics/cairo/GraphicsContextCairo.cpp: |
| (WebCore::GraphicsContext::fillRectWithRoundedHole): |
| |
| 2018-01-08 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer][Soup] Remove dead getCreateOrReadBuffer code path |
| https://bugs.webkit.org/show_bug.cgi?id=181376 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This code path is no longer used now that the GStreamer HTTP |
| source element uses data coming directly from the network process. |
| |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResource::getOrCreateReadBuffer): Deleted. |
| * loader/MediaResourceLoader.h: |
| * loader/SubresourceLoader.h: |
| * loader/cache/CachedRawResource.h: |
| * loader/cache/CachedRawResourceClient.h: |
| (WebCore::CachedRawResourceClient::finishedTimingForWorkerLoad): |
| (WebCore::CachedRawResourceClient::getOrCreateReadBuffer): Deleted. |
| * loader/cache/CachedResource.h: |
| (WebCore::CachedResource::getOrCreateReadBuffer): Deleted. |
| * loader/soup/CachedRawResourceSoup.cpp: Removed. |
| * loader/soup/SubresourceLoaderSoup.cpp: Removed. |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| (WebCore::PlatformMediaResourceClient::loadFinished): |
| (WebCore::PlatformMediaResourceClient::getOrCreateReadBuffer): Deleted. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (CachedResourceStreamingClient::getOrCreateReadBuffer): Deleted. |
| * platform/network/ResourceHandleClient.h: |
| (WebCore::ResourceHandleClient::getOrCreateReadBuffer): Deleted. |
| * platform/network/soup/ResourceHandleSoup.cpp: |
| (WebCore::ResourceHandle::ensureReadBuffer): |
| |
| 2018-01-08 Zan Dobersek <zdobersek@igalia.com> and Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GStreamer] use FastMalloc-based GstAllocator |
| https://bugs.webkit.org/show_bug.cgi?id=165793 |
| |
| Reviewed by Philippe Normand. |
| |
| Add GstAllocatorFastMalloc, a GstAllocator implementation using fast malloc. It's only used when fast malloc is |
| enabled and can be disabled using an environment variable for debugging purposes. |
| |
| * platform/GStreamer.cmake: |
| * platform/graphics/gstreamer/GStreamerUtilities.cpp: |
| (WebCore::initializeGStreamer): |
| * platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp: Added. |
| (gstMemoryFastMallocNew): |
| (gstAllocatorFastMallocAlloc): |
| (gstAllocatorFastMallocFree): |
| (gstAllocatorFastMallocMemMap): |
| (gstAllocatorFastMallocMemUnmap): |
| (gstAllocatorFastMallocMemCopy): |
| (gstAllocatorFastMallocMemShare): |
| (gstAllocatorFastMallocMemIsSpan): |
| (gst_allocator_fast_malloc_class_init): |
| (gst_allocator_fast_malloc_init): |
| * platform/graphics/gstreamer/GstAllocatorFastMalloc.h: Added. |
| |
| 2018-01-07 Ms2ger <Ms2ger@igalia.com> |
| |
| Implement createImageBitmap(ImageBitmap) |
| https://bugs.webkit.org/show_bug.cgi?id=181287 |
| |
| Reviewed by Darin Adler. |
| |
| Tests: imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html |
| imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html |
| |
| * html/ImageBitmap.cpp: |
| (WebCore::ImageBitmap::createPromise): |
| |
| 2018-01-07 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Reduce the precision of "high" resolution time to 1ms |
| https://bugs.webkit.org/show_bug.cgi?id=180910 |
| <rdar://problem/36085943> |
| |
| Reviewed by Saam Barati. |
| |
| Reduced the high prevision time's resolution to 1ms, the same precision as Date.now(). |
| |
| Also fixed the bug in fillRTCStats that we weren't reducing the time resolution in RTCStats dictionaries. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::fillRTCStats): |
| * page/Performance.cpp: |
| (WebCore::Performance::reduceTimeResolution): |
| |
| 2018-01-06 Simon Fraser <simon.fraser@apple.com> |
| |
| Possible crash computing event regions |
| https://bugs.webkit.org/show_bug.cgi?id=181368 |
| rdar://problem/34847081 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Don't trigger layout in Element::absoluteEventHandlerBounds(), since this can run arbirary script |
| which might delete elements or re-enter Document::absoluteRegionForEventTargets(). |
| |
| It's OK to not trigger layout, because if layout is dirty, the next layout will update event regions again. |
| |
| Add a LayoutDisallowedScope to check that Document::absoluteRegionForEventTargets() doesn't |
| trigger layout, and move the check for LayoutDisallowedScope::isLayoutAllowed() from Document::updateLayout() |
| to LayoutContext::layout(), since some layouts don't happen via the former (e.g. the one being removed here). |
| |
| The test checks that the assertion does not fire. I was not able to get a reliable test for any crash. |
| |
| Test: fast/events/event-handler-regions-layout.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::updateLayout): |
| (WebCore::Document::absoluteRegionForEventTargets): |
| * dom/Element.cpp: |
| (WebCore::Element::absoluteEventHandlerBounds): |
| * page/LayoutContext.cpp: |
| (WebCore::LayoutContext::layout): |
| * rendering/LayoutDisallowedScope.h: Move the #ifdefs around to avoid defining the enum twice. |
| (WebCore::LayoutDisallowedScope::LayoutDisallowedScope): |
| (WebCore::LayoutDisallowedScope::isLayoutAllowed): |
| |
| 2018-01-06 Simon Fraser <simon.fraser@apple.com> |
| |
| Crash under RenderLayer::scrollTo() with marquee |
| https://bugs.webkit.org/show_bug.cgi?id=181349 |
| rdar://problem/36190168 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Don't call updateWidgetPositions() synchonously during RenderLayer scrolling, because it |
| can run arbitrary script which may trigger destruction of this RenderLayer. |
| |
| Instead, queue up updateWidgetPositions() on a zero-delay timer. |
| |
| Under some circumstances this may allow a paint to occur before the widgets have been |
| updated (which could be fixed with a more invasive change), but in practice I saw no |
| painting issues with plug-ins or iframes inside overflow scroll, in WebKit or LegacyWebKit. |
| |
| Test: fast/scrolling/marquee-scroll-crash.html |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::FrameView): |
| (WebCore::FrameView::updateWidgetPositions): |
| (WebCore::FrameView::scheduleUpdateWidgetPositions): |
| (WebCore::FrameView::updateWidgetPositionsTimerFired): |
| * page/FrameView.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::scrollTo): |
| |
| 2018-01-05 Dean Jackson <dino@apple.com> |
| |
| Accurately clip copyTexImage2D and copyTexSubImage2D |
| https://bugs.webkit.org/show_bug.cgi?id=181356 |
| <rdar://problem/35083877> |
| |
| Reviewed by Eric Carlson. |
| |
| The code to make sure copyTexSubImage2D and copyTexImage2D will not try to read |
| out of bounds had a bad bug introduced here: |
| https://bugs.webkit.org/show_bug.cgi?id=51421 |
| |
| With appropriate parameters, it would produce a rectangle with |
| negative dimensions. Most GL drivers just ignored this, but some |
| are not happy. |
| |
| Test: fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input.html |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::clip2D): Reimplement this in a more sane manner, and use |
| checked arithmetic while here. |
| * html/canvas/WebGLRenderingContextBase.h: |
| (WebCore::clip1D): Deleted. |
| (WebCore::clip2D): Deleted. |
| |
| 2018-01-06 Antti Koivisto <antti@apple.com> |
| |
| Use WeakPtr for RenderTreePosition::m_nextSibling |
| https://bugs.webkit.org/show_bug.cgi?id=181363 |
| |
| Reviewed by Zalan Bujtas. |
| |
| For safety. In most cases it is null and won't cause us to instantiate WeakReferences for |
| many new objects. |
| |
| * rendering/updating/RenderTreePosition.cpp: |
| (WebCore::RenderTreePosition::computeNextSibling): |
| * rendering/updating/RenderTreePosition.h: |
| (WebCore::RenderTreePosition::RenderTreePosition): |
| (WebCore::RenderTreePosition::nextSibling const): |
| |
| 2018-01-05 David Kilzer <ddkilzer@apple.com> |
| |
| Re-enable -Wcast-qual in WebCore for Apple ports |
| <https://webkit.org/b/177895> |
| <rdar://problem/34960830> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * Configurations/Base.xcconfig: |
| (WARNING_CFLAGS): Remove FIXME and add -Wcast-qual back to |
| arguments. |
| |
| * crypto/mac/SerializedCryptoKeyWrapMac.mm: |
| (WebCore::createAndStoreMasterKey): |
| - Use checked_cf_cast<SecACLRef>(). |
| |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::detectItemAtPositionWithRange): |
| - Manually cast CFTypeRef to DDResultRef until |
| DDResultGetTypeID() is available as SPI. |
| |
| * platform/gamepad/mac/HIDGamepad.cpp: |
| (WebCore::HIDGamepad::initElementsFromArray): |
| - Use checked_cf_cast<IOHIDElementRef>(). |
| |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| (WebCore::MediaSampleAVFObjC::createImageSample): |
| (WebCore::CMSampleBufferIsRandomAccess): |
| (WebCore::CMSampleBufferIsNonDisplaying): |
| (WebCore::MediaSampleAVFObjC::createNonDisplayingCopy const): |
| - Use checked_cf_cast<CFMutableDictionaryRef>() and |
| checked_cf_cast<CFDictionaryRef>(). |
| |
| * platform/graphics/cocoa/IOSurface.h: |
| (WebCore::IOSurface::asLayerContents): |
| - Use reinterpret_cast<id>() to cast from IOSurfaceRef to id. |
| |
| * platform/graphics/cocoa/WebCoreDecompressionSession.mm: |
| (WebCore::WebCoreDecompressionSession::getFirstVideoFrame): |
| (WebCore::WebCoreDecompressionSession::automaticDequeue): |
| (WebCore::WebCoreDecompressionSession::imageForTime): |
| (WebCore::WebCoreDecompressionSession::getDecodeTime): |
| (WebCore::WebCoreDecompressionSession::getPresentationTime): |
| (WebCore::WebCoreDecompressionSession::getDuration): |
| - Use checked_cf_cast<CMSampleBufferRef>(). |
| |
| * platform/graphics/Font.h: |
| (WebCore::Font::m_kernedCFStringAttributes): |
| (WebCore::Font::m_nonKernedCFStringAttributes): |
| - Change type from RetainPtr<CFDictionaryRef> to |
| RetainPtr<CFMutableDictionaryRef> since that's what they are. |
| * platform/graphics/mac/SimpleFontDataCoreText.cpp: |
| (WebCore::Font::getCFStringAttributes const): |
| - Replace local `mutableAttributes` variable with |
| `attributesDictionary.get()` since it returns the correct type |
| now. |
| |
| * platform/ios/wak/WAKView.mm: |
| (-[WAKView _initWithViewRef:]): |
| (_WAKCopyWrapper): |
| * platform/ios/wak/WKView.mm: |
| (_WKViewClearSuperview): |
| (WKViewFirstChild): |
| (WKViewNextSibling): |
| - Use static_cast<WKViewRef>(const_cast<void*>()) to convert |
| const void* variable to WKViewRef. |
| |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::flipImageSpec): |
| (WebCore::setDragImageImpl): |
| - Use const_cast<> to remove 'const' modifier from |
| unsigned char pointers. This regressed while -Wcast-qual was |
| disabled for WebCore. |
| |
| * platform/mac/SSLKeyGeneratorMac.mm: |
| (WebCore::signedPublicKeyAndChallengeString): |
| - Use checked_cf_cast<SecACLRef>(). |
| |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.cpp: |
| (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame): |
| - Use checked_cf_cast<CFMutableDictionaryRef>(). |
| |
| * platform/network/cf/SocketStreamHandleImplCFNet.cpp: |
| (WebCore::copyCONNECTProxyResponse): |
| - Use checked_cf_cast<CFHTTPMessageRef>(). |
| |
| * platform/network/cocoa/ResourceResponseCocoa.mm: |
| (WebCore::ResourceResponse::platformCertificateInfo const): |
| - Use checked_cf_cast<SecTrustRef>(). |
| |
| * platform/network/mac/CertificateInfoMac.mm: |
| (WebCore::CertificateInfo::containsNonRootSHA1SignedCertificate const): |
| (WebCore::CertificateInfo::dump const): |
| - Use checked_cf_cast<SecCertificateRef>(). |
| |
| * testing/cocoa/WebArchiveDumpSupport.mm: |
| (WebCoreTestSupport::createCFURLResponseFromResponseData): |
| - Use checked_cf_cast<>() for CFMutable* types. |
| |
| 2018-01-05 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Refactor to make naming accurate and explicit, simplify access table, and prepare for access removal for page |
| https://bugs.webkit.org/show_bug.cgi?id=181357 |
| <rdar://problem/36331031> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. The only changed functionality that isn't covered |
| by existing tests is cross-origin iframes in the same partition |
| should be handled as already having access. This cannot be |
| tested in layout tests since they don't support subdomains. |
| |
| This change does the following: |
| - Changes function and message names to reflect how this feature |
| was eventually implemented, i.e. access per frame. |
| - Makes it explicit that the UI process is only involved in |
| granting storage access and not removing storage access. |
| The latter is done directly by the web process. |
| - Simplifies the network process' entry map since only needs to |
| be able to give access to one domain in one frame at a time. |
| Access goes away on frame navigation so there can only be one |
| domain at a time per frame. Also, the map now uses pageIDs as |
| main keys to prepare for efficient access removal for all |
| frames under a page. |
| - Fixes a bug in so that a cross-origin iframe with the same |
| partition as the top frame correctly is handled as already |
| having access. |
| |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::cookieStoragePartition const): |
| The only change here is the changed named of the call to |
| NetworkStorageSession::hasStorageAccessForFrame(). |
| (WebCore::NetworkStorageSession::hasStorageAccessForFrame const): |
| (WebCore::NetworkStorageSession::grantStorageAccessForFrame): |
| (WebCore::NetworkStorageSession::removeStorageAccessForFrame): |
| (WebCore::NetworkStorageSession::isStorageAccessGranted const): Deleted. |
| (WebCore::NetworkStorageSession::setStorageAccessGranted): Deleted. |
| (WebCore::NetworkStorageSession::removeStorageAccess): Deleted. |
| |
| 2018-01-05 Youenn Fablet <youenn@apple.com> |
| |
| Implement Cache API partitioning based on ClientOrigin |
| https://bugs.webkit.org/show_bug.cgi?id=181240 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated tests. |
| |
| Previously, cache storage was partitioned according the origin of the client, represented as a String. |
| We now partition according both client and top origins, represented as a ClientOrigin |
| |
| Minor refactoring to use more makePendingActivity. |
| Added support for IPC serialization of ClientOrigin. |
| Added SecurityOriginData::toString which is used by WebKit2 Cache Storage implementation. |
| |
| * Modules/cache/CacheStorageConnection.cpp: |
| (WebCore::CacheStorageConnection::open): |
| (WebCore::CacheStorageConnection::retrieveCaches): |
| * Modules/cache/CacheStorageConnection.h: |
| (WebCore::CacheStorageConnection::clearMemoryRepresentation): |
| (WebCore::CacheStorageConnection::doOpen): |
| (WebCore::CacheStorageConnection::doRetrieveCaches): |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::origin const): |
| (WebCore::DOMCacheStorage::retrieveCaches): |
| (WebCore::DOMCacheStorage::open): |
| (WebCore::DOMCacheStorage::remove): |
| * Modules/cache/DOMCacheStorage.h: |
| * Modules/cache/WorkerCacheStorageConnection.cpp: |
| (WebCore::WorkerCacheStorageConnection::doOpen): |
| (WebCore::WorkerCacheStorageConnection::doRetrieveCaches): |
| * Modules/cache/WorkerCacheStorageConnection.h: |
| * page/ClientOrigin.h: |
| (WebCore::ClientOrigin::isolatedCopy const): |
| (WebCore::ClientOrigin::encode const): |
| (WebCore::ClientOrigin::decode): |
| * page/SecurityOriginData.cpp: |
| (WebCore::SecurityOriginData::toString const): |
| (WebCore::SecurityOriginData::debugString const): Deleted. |
| * page/SecurityOriginData.h: |
| (WebCore::SecurityOriginData::debugString const): |
| * testing/Internals.cpp: |
| (WebCore::Internals::clearCacheStorageMemoryRepresentation): |
| |
| 2018-01-05 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Add a way to write blob data to a file URL from the UI process |
| https://bugs.webkit.org/show_bug.cgi?id=181236 |
| |
| Reviewed by Brady Eidson. |
| |
| Add support for writing a blob to a designated file path. See comments below for more detail. No new tests, as |
| there change in behavior yet. See part 2: https://bugs.webkit.org/show_bug.cgi?id=181199. |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::dragAttachmentElement): |
| * platform/PromisedBlobInfo.h: |
| |
| Remove PromisedBlobData entirely. This was added with the premise of having the web process deliver blob data to |
| the UI process. However, the new approach I'm taking just has the UI process tell the network process to write |
| a blob to a given location, so a data structure to deliver blob data over IPC is no longer necessary. |
| |
| (WebCore::PromisedBlobData::hasData const): Deleted. |
| (WebCore::PromisedBlobData::hasFile const): Deleted. |
| (WebCore::PromisedBlobData::operator bool const): Deleted. |
| (WebCore::PromisedBlobData::fulfills const): Deleted. |
| * platform/network/BlobRegistryImpl.cpp: |
| (WebCore::BlobRegistryImpl::populateBlobsForFileWriting): |
| |
| Introduce a new helper to build a list of blob data for file writing. |
| |
| (WebCore::writeFilePathsOrDataBuffersToFile): |
| |
| Introduce a new static helper to write blob data (a list of file paths and data buffers) to a given file handle. |
| Automatically closes the given file handle upon exit. |
| |
| (WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles): |
| (WebCore::BlobRegistryImpl::writeBlobToFilePath): |
| |
| Pull out common logic in writeBlobsToTemporaryFiles and writeBlobToFilePath into helper methods (see above), and |
| refactor both methods to use the helpers. |
| |
| * platform/network/BlobRegistryImpl.h: |
| |
| 2018-01-05 Alex Christensen <achristensen@webkit.org> |
| |
| Forbid < and > in URL hosts |
| https://bugs.webkit.org/show_bug.cgi?id=181308 |
| <rdar://problem/36012757> |
| |
| Reviewed by Tim Horton. |
| |
| https://url.spec.whatwg.org/#forbidden-host-code-point does not include these characters yet, but I think it should. |
| Firefox fails to parse URLs with < or > in the host. Chrome percent encodes them. Safari needs to do something. |
| The web platform tests are unclear on this case, and they will need to be updated with the specification. |
| They do show a change in behavior, though. |
| |
| * platform/URLParser.cpp: |
| Add < and > to the list of forbidden host code points. |
| |
| 2018-01-05 Eric Carlson <eric.carlson@apple.com> |
| |
| [MediaStream] Add Mac screen capture source |
| https://bugs.webkit.org/show_bug.cgi?id=181333 |
| <rdar://problem/36323219> |
| |
| Reviewed by Dean Jackson. |
| |
| * SourcesCocoa.txt: Add ScreenDisplayCaptureSourceMac.mm. |
| |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| |
| * platform/cocoa/CoreVideoSoftLink.cpp: Declare new constants used. |
| * platform/cocoa/CoreVideoSoftLink.h: |
| |
| * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp: |
| (WebCore::displayReconfigurationCallBack): Call refreshCaptureDevices. |
| (WebCore::DisplayCaptureManagerCocoa::~DisplayCaptureManagerCocoa): Unregister for display |
| reconfiguration callbacks. |
| (WebCore::DisplayCaptureManagerCocoa::captureDevices): Register for display reconfigrations. |
| (WebCore::DisplayCaptureManagerCocoa::refreshCaptureDevices): Use CGActiveDisplayList to |
| get list of active screens. |
| (WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID): Validate screen |
| ID, return CaptureDevice. |
| * platform/mediastream/mac/DisplayCaptureManagerCocoa.h: |
| |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp: |
| (WebCore::VideoCaptureSourceFactoryMac::createVideoCaptureSource): Deal with screen capture |
| on macOS. |
| |
| Implement Mac screen capture with CGDisplayStream. |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h: Added. |
| (WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::~DisplaySurface): |
| (WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::operator=): |
| (WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::ioSurface const): |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: Added. |
| (WebCore::roundUpToMacroblockMultiple): |
| (WebCore::ScreenDisplayCaptureSourceMac::updateDisplayID): |
| (WebCore::ScreenDisplayCaptureSourceMac::create): |
| (WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): |
| (WebCore::ScreenDisplayCaptureSourceMac::~ScreenDisplayCaptureSourceMac): |
| (WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): |
| (WebCore::ScreenDisplayCaptureSourceMac::startProducingData): |
| (WebCore::ScreenDisplayCaptureSourceMac::stopProducingData): |
| (WebCore::ScreenDisplayCaptureSourceMac::sampleBufferFromPixelBuffer): |
| (WebCore::ScreenDisplayCaptureSourceMac::pixelBufferFromIOSurface): |
| (WebCore::ScreenDisplayCaptureSourceMac::generateFrame): |
| (WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): |
| (WebCore::ScreenDisplayCaptureSourceMac::applySize): |
| (WebCore::ScreenDisplayCaptureSourceMac::applyFrameRate): |
| (WebCore::ScreenDisplayCaptureSourceMac::commitConfiguration): |
| (WebCore::ScreenDisplayCaptureSourceMac::displayWasReconfigured): |
| (WebCore::ScreenDisplayCaptureSourceMac::displayReconfigurationCallBack): |
| (WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): |
| |
| 2018-01-05 Don Olmstead <don.olmstead@sony.com> |
| |
| [curl] Can't load file:// URL with a URL fragment identifier |
| https://bugs.webkit.org/show_bug.cgi?id=181170 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::invokeDidReceiveResponseForFile): |
| |
| 2018-01-05 Don Olmstead <don.olmstead@sony.com> |
| |
| TextCodec uses std::array but does not include it |
| https://bugs.webkit.org/show_bug.cgi?id=181340 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. No change in behavior. |
| |
| * platform/text/TextCodec.h: |
| |
| 2018-01-05 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded() should do nothing if the property is not animating |
| https://bugs.webkit.org/show_bug.cgi?id=181316 |
| <rdar://problem/36147545> |
| |
| Reviewed by Simon Fraser. |
| |
| This is a speculative change to fix a crash which appeared after r226065. |
| The crash is very intermittent and sometimes very hard to reproduce. The |
| basic code analysis did not show how this crash can even happen. |
| |
| * svg/SVGAnimatedTypeAnimator.h: |
| (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues): For SVG property |
| with two values, e.g. <SVGAngleValue, SVGMarkerOrientType>, we need to |
| detach the wrappers of the animated property if the animated values are |
| going to change. This is similar to what we did in resetFromBaseValue(). |
| |
| * svg/properties/SVGAnimatedListPropertyTearOff.h: |
| (WebCore::SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded): |
| |
| 2018-01-05 Matt Lewis <jlewis3@apple.com> |
| |
| Unreviewed, rolling out r226401. |
| |
| This caused timeouts on multiple platforms. |
| |
| Reverted changeset: |
| |
| "Implement Cache API partitioning based on ClientOrigin" |
| https://bugs.webkit.org/show_bug.cgi?id=181240 |
| https://trac.webkit.org/changeset/226401 |
| |
| 2018-01-05 Dan Bernstein <mitz@apple.com> |
| |
| Fixed the build following AppKit API deprecations in a recent SDKs |
| |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::setDragImageImpl): Suppressed deprecation warnings. |
| * platform/mac/WidgetMac.mm: |
| (WebCore::Widget::paint): Ditto. |
| |
| 2018-01-05 Joseph Pecoraro <pecoraro@apple.com> |
| |
| ServiceWorkers: Enable UserTiming / ResourceTiming |
| https://bugs.webkit.org/show_bug.cgi?id=181297 |
| <rdar://problem/36307306> |
| |
| Reviewed by Youenn Fablet. |
| |
| Tests: http/tests/workers/service/service-worker-resource-timing.https.html |
| http/tests/workers/service/service-worker-user-timing.https.html |
| |
| * loader/ResourceTiming.cpp: |
| (WebCore::ResourceTiming::ResourceTiming): |
| We used to clear extra NetworkLoadMetrics data early on. However, |
| for Workers we want to pass the complete NetworkLoadMetrics to |
| the Worker so that a Worker inspector has access to it. |
| |
| * page/PerformanceResourceTiming.cpp: |
| (WebCore::PerformanceResourceTiming::PerformanceResourceTiming): |
| Instead move the clearing of extra data to here, when the NetworkLoadMetrics |
| have finally settled into being used only for a performance entry. |
| |
| 2018-01-04 Philippe Normand <pnormand@igalia.com> |
| |
| [EME][GStreamer] Fix wrong ifdef |
| https://bugs.webkit.org/show_bug.cgi?id=181289 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): Remove the |
| ENCRYPTED_MEDIA ifdef from the VIDEO_TRACK ifdef block. Both have |
| nothing to do together. |
| |
| 2018-01-05 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Cairo] Canvas: Path::clear should clear its transform |
| https://bugs.webkit.org/show_bug.cgi?id=181320 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Path of Cairo port has its cairo context. Path::clear() didn't |
| clear the transform matrix of the context. |
| |
| Test: fast/canvas/reset-scaling-by-height-change.html |
| |
| * platform/graphics/cairo/PathCairo.cpp: |
| (WebCore::Path::clear): Reset the transform matrix of Path. |
| |
| 2018-01-04 Devin Rousso <webkit@devinrousso.com> |
| |
| Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic |
| https://bugs.webkit.org/show_bug.cgi?id=180770 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| No change in functionality. |
| |
| * html/HTMLCanvasElement.h: |
| * html/HTMLCanvasElement.cpp: |
| (WebCore::HTMLCanvasElement::createContext2d): |
| (WebCore::HTMLCanvasElement::createContextWebGL): |
| (WebCore::HTMLCanvasElement::createContextWebGPU): |
| (WebCore::HTMLCanvasElement::createContextBitmapRenderer): |
| (WebCore::HTMLCanvasElement::reset): |
| (WebCore::HTMLCanvasElement::paint): |
| (WebCore::HTMLCanvasElement::setImageBuffer const): |
| (WebCore::HTMLCanvasElement::addObserver): Deleted. |
| (WebCore::HTMLCanvasElement::removeObserver): Deleted. |
| (WebCore::HTMLCanvasElement::cssCanvasClients): Deleted. |
| (WebCore::HTMLCanvasElement::notifyObserversCanvasChanged): Deleted. |
| * html/OffscreenCanvas.h: |
| * html/canvas/CanvasRenderingContext.h: |
| * html/canvas/CanvasRenderingContext.cpp: |
| * html/canvas/CanvasRenderingContext2D.h: |
| * html/canvas/CanvasRenderingContext2D.cpp: |
| (WebCore::CanvasRenderingContext2D::create): |
| * html/canvas/CanvasRenderingContext2DBase.h: |
| * html/canvas/ImageBitmapRenderingContext.h: |
| * html/canvas/ImageBitmapRenderingContext.cpp: |
| (WebCore::ImageBitmapRenderingContext::create): |
| * html/canvas/WebGL2RenderingContext.h: |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::create): |
| * html/canvas/WebGLRenderingContext.h: |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::create): |
| * html/canvas/WebGLRenderingContextBase.h: |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::create): |
| * html/canvas/WebGPURenderingContext.cpp: |
| (WebCore::WebGPURenderingContext::create): |
| Instead of adding didCreateCanvasRenderingContext calls at the construction sites of each |
| context, we can make the constructors private and force the usage of static `create` functions. |
| This way, we have access to the fully constructed object and have a guaranteed path for creation. |
| |
| * html/CanvasBase.h: |
| * html/CanvasBase.cpp: |
| (WebCore::CanvasBase::~CanvasBase): |
| (WebCore::CanvasBase::renderingContext const): |
| (WebCore::CanvasBase::addObserver): |
| (WebCore::CanvasBase::removeObserver): |
| (WebCore::CanvasBase::notifyObserversCanvasChanged): |
| (WebCore::CanvasBase::notifyObserversCanvasResized): |
| (WebCore::CanvasBase::notifyObserversCanvasDestroyed): |
| (WebCore::CanvasBase::cssCanvasClients const): |
| * Modules/mediastream/CanvasCaptureMediaStreamTrack.h: |
| * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp: |
| (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed): |
| (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized): |
| (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasChanged): |
| * css/CSSCanvasValue.h: |
| Move the CanvasObserver class to CanvasBase so that it can also be used for OffscreenCanvas. |
| |
| * inspector/InspectorInstrumentation.h: |
| (WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodes): |
| (WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext): |
| (WebCore::InspectorInstrumentation::didChangeCanvasMemory): |
| (WebCore::InspectorInstrumentation::recordCanvasAction): |
| (WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrame): |
| (WebCore::InspectorInstrumentation::didEnableExtension): |
| (WebCore::InspectorInstrumentation::didCreateProgram): |
| (WebCore::InspectorInstrumentation::willDeleteProgram): |
| (WebCore::InspectorInstrumentation::isShaderProgramDisabled): |
| (WebCore::InspectorInstrumentation::consoleStartRecordingCanvas): |
| (WebCore::InspectorInstrumentation::didCreateCSSCanvas): Deleted. |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl): |
| (WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodesImpl): |
| (WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl): |
| (WebCore::InspectorInstrumentation::didChangeCanvasMemoryImpl): |
| (WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrameImpl): |
| (WebCore::InspectorInstrumentation::didEnableExtensionImpl): |
| (WebCore::InspectorInstrumentation::didCreateProgramImpl): |
| (WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl): Deleted. |
| |
| * inspector/agents/InspectorCanvasAgent.h: |
| * inspector/agents/InspectorCanvasAgent.cpp: |
| (WebCore::InspectorCanvasAgent::enable): |
| (WebCore::InspectorCanvasAgent::requestNode): |
| (WebCore::InspectorCanvasAgent::requestContent): |
| (WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes): |
| (WebCore::contextAsScriptValue): |
| (WebCore::InspectorCanvasAgent::resolveCanvasContext): |
| (WebCore::InspectorCanvasAgent::startRecording): |
| (WebCore::InspectorCanvasAgent::stopRecording): |
| (WebCore::InspectorCanvasAgent::updateShader): |
| (WebCore::InspectorCanvasAgent::frameNavigated): |
| (WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes): |
| (WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext): |
| (WebCore::InspectorCanvasAgent::didChangeCanvasMemory): |
| (WebCore::InspectorCanvasAgent::recordCanvasAction): |
| (WebCore::InspectorCanvasAgent::canvasDestroyed): |
| (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame): |
| (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas): |
| (WebCore::InspectorCanvasAgent::didEnableExtension): |
| (WebCore::InspectorCanvasAgent::didCreateProgram): |
| (WebCore::InspectorCanvasAgent::canvasRecordingTimerFired): |
| (WebCore::InspectorCanvasAgent::clearCanvasData): |
| (WebCore::InspectorCanvasAgent::unbindCanvas): |
| (WebCore::InspectorCanvasAgent::findInspectorCanvas): |
| (WebCore::InspectorCanvasAgent::unbindProgram): |
| (WebCore::InspectorCanvasAgent::didCreateCSSCanvas): Deleted. |
| |
| * inspector/InspectorCanvas.h: |
| * inspector/InspectorCanvas.cpp: |
| (WebCore::InspectorCanvas::create): |
| (WebCore::InspectorCanvas::InspectorCanvas): |
| (WebCore::InspectorCanvas::canvasElement): |
| (WebCore::InspectorCanvas::resetRecordingData): |
| (WebCore::InspectorCanvas::recordAction): |
| (WebCore::InspectorCanvas::buildObjectForCanvas): |
| (WebCore::InspectorCanvas::getCanvasContentAsDataURL): |
| (WebCore::InspectorCanvas::buildInitialState): |
| (WebCore::InspectorCanvas::~InspectorCanvas): Deleted. |
| |
| * inspector/InspectorShaderProgram.h: |
| * inspector/InspectorShaderProgram.cpp: |
| (WebCore::InspectorShaderProgram::context const): |
| |
| * page/PageConsoleClient.cpp: |
| (WebCore::PageConsoleClient::record): |
| (WebCore::PageConsoleClient::recordEnd): |
| |
| * dom/Document.h: |
| * dom/Document.cpp: |
| (WebCore::Document::getCSSCanvasElement): |
| (WebCore::Document::nameForCSSCanvasElement const): |
| We have no reason to save the CSS canvas name for each InspectorCanvas object, so instead we |
| can just query for the name based on the CanvasRenderingContext's HTMLCanvasElement (assuming |
| it is not an OffscreenCanvas) when we need it. |
| |
| 2018-01-04 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Implement updated CSS3 Speech for 'speak' and 'speak-as' properties |
| https://bugs.webkit.org/show_bug.cgi?id=180361 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Change speak -> speakAs, and allow a combination of properties. |
| |
| Tests: Updated accessibility/mac/css-speech-speak.html |
| |
| * accessibility/AccessibilityObject.h: |
| (WebCore::AccessibilityObject::speakAsProperty const): |
| (WebCore::AccessibilityObject::speakProperty const): Deleted. |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::speakAsProperty const): |
| (WebCore::AccessibilityRenderObject::speakProperty const): Deleted. |
| * accessibility/AccessibilityRenderObject.h: |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper accessibilitySpeechHint]): |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.h: |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: |
| (-[WebAccessibilityObjectWrapperBase baseAccessibilitySpeechHint]): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::speakAsToCSSValue): |
| (WebCore::ComputedStyleExtractor::propertyValue): |
| * css/CSSPrimitiveValueMappings.h: |
| (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): |
| (WebCore::CSSPrimitiveValue::operator ESpeakAs const): |
| (WebCore::CSSPrimitiveValue::operator ESpeak const): Deleted. |
| * css/CSSProperties.json: |
| * css/StyleBuilderConverter.h: |
| (WebCore::StyleBuilderConverter::convertSpeakAs): |
| * css/parser/CSSParserFastPaths.cpp: |
| (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): |
| (WebCore::CSSParserFastPaths::isKeywordPropertyID): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeSpeakAs): |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::speakAs const): |
| (WebCore::RenderStyle::setSpeakAs): |
| (WebCore::RenderStyle::initialSpeakAs): |
| (WebCore::RenderStyle::speak const): Deleted. |
| (WebCore::RenderStyle::setSpeak): Deleted. |
| (WebCore::RenderStyle::initialSpeak): Deleted. |
| * rendering/style/RenderStyleConstants.h: |
| (WebCore::operator| ): |
| (WebCore::operator|= ): |
| * rendering/style/StyleRareInheritedData.cpp: |
| (WebCore::StyleRareInheritedData::StyleRareInheritedData): |
| (WebCore::StyleRareInheritedData::operator== const): |
| * rendering/style/StyleRareInheritedData.h: |
| |
| 2018-01-04 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: Capture Element Screenshot looks fuzzy |
| https://bugs.webkit.org/show_bug.cgi?id=175734 |
| <rdar://problem/33803377> |
| |
| Reviewed by Joseph Pecoraro and Simon Fraser. |
| |
| Screenshots taken by Web Inspector were being downscaled from the |
| internal size to the logical size, causing them to be blurry when |
| later upscaled to the internal size. |
| |
| Replace ScaleBehavior { Scaled, Unscaled } with PreserveResolution { No, Yes }. |
| This is a lot less confusing to read both inside ImageBuffer and at its use sites. |
| |
| Remove unused CoordinateSystem argument for ImageBuffer::toDataURL, |
| and replace it with PreserveResolution. Plumb PreserveResolution into toCFData |
| so that PreserveResolution::Yes will preserve the internal size of |
| the image buffer, just as it does in other methods that take PreserveResolution. |
| |
| At the use site in InspectorPageAgent, always request PreserveResolution::Yes snapshots |
| when taking an element screenshot. For now, keep using downscaled (smaller) |
| snapshots when capturing canvas previews, as the previews are not full-size. |
| |
| Test: inspector/page/hidpi-snapshot-size.html |
| |
| * html/HTMLCanvasElement.cpp: |
| (WebCore::HTMLCanvasElement::makePresentationCopy): |
| (WebCore::HTMLCanvasElement::copiedImage const): |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::createPattern): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::snapshotNode): |
| (WebCore::InspectorPageAgent::snapshotRect): |
| * page/TextIndicator.cpp: |
| (WebCore::takeSnapshot): |
| * platform/DragImage.cpp: |
| (WebCore::createDragImageFromSnapshot): |
| * platform/graphics/BitmapImage.cpp: |
| (WebCore::BitmapImage::drawPattern): |
| * platform/graphics/ImageBuffer.h: |
| * platform/graphics/cairo/ImageBufferCairo.cpp: |
| (WebCore::ImageBuffer::sinkIntoImage): |
| (WebCore::ImageBuffer::copyImage const): |
| (WebCore::ImageBuffer::toDataURL const): |
| * platform/graphics/cg/ImageBufferCG.cpp: |
| (WebCore::createBitmapImageAfterScalingIfNeeded): |
| (WebCore::ImageBuffer::copyImage const): |
| (WebCore::ImageBuffer::sinkIntoImage): |
| (WebCore::ImageBuffer::toDataURL const): |
| (WebCore::ImageBuffer::toData const): |
| (WebCore::ImageBuffer::toCFData const): |
| * platform/graphics/gtk/ImageBufferGtk.cpp: |
| (WebCore::ImageBuffer::toDataURL const): |
| * platform/graphics/win/ImageBufferDirect2D.cpp: |
| (WebCore::ImageBuffer::copyImage const): |
| (WebCore::ImageBuffer::sinkIntoImage): |
| (WebCore::ImageBuffer::toDataURL const): |
| * svg/graphics/SVGImage.cpp: |
| (WebCore::SVGImage::drawPatternForContainer): |
| |
| 2018-01-04 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Turn feature on by default in Settings.yaml |
| https://bugs.webkit.org/show_bug.cgi?id=181298 |
| <rdar://problem/36302506> |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests. This is just a feature settings change. |
| |
| * page/Settings.yaml: |
| |
| 2018-01-04 Zalan Bujtas <zalan@apple.com> |
| |
| WebContent process crashes while loading https://www.classicspecs.com |
| https://bugs.webkit.org/show_bug.cgi?id=181290 |
| <rdar://problem/36225906> |
| |
| Reviewed by Simon Fraser. |
| |
| Floats can overhang multiple blocks (they are called intruding floats). |
| Each block keeps track of such intruding floats. When an overhanging float box is destroyed, |
| we need to deregister it from all those blocks. We do it by walking up the ancestor block chain |
| and check if the parent (grandparent etc) block still contains this float. Once we find the topmost block, |
| we start deregistering it by traversing back on the descendant blocks. |
| Normally we do it in RenderElement::takeChildInternal right before the box is getting detached. |
| However in certain cases (like when the float's parent happens to be an anonymous wrapper) |
| by the time we get to ::takeChildInternal the subtree is already detached and we can't access all the |
| ancestors. |
| This patch ensure that the floating box is still attached during de-registration. |
| |
| Test: fast/block/float/crash-when-intruding-float-has-anonymous-parent-and-detach.html |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::removeFromParentAndDestroyCleaningUpAnonymousWrappers): |
| |
| 2018-01-04 Eric Carlson <eric.carlson@apple.com> |
| |
| [MediaStream] Add Mock screen capture source |
| https://bugs.webkit.org/show_bug.cgi?id=181291 |
| <rdar://problem/36298164> |
| |
| Reviewed by Dean Jackson. |
| |
| Tests: http/tests/media/media-stream/get-display-media-prompt.html |
| GetDisplayMediaTest.BasicPrompt |
| GetDisplayMediaTest.Constraints |
| |
| * Modules/mediastream/MediaDevices.cpp: |
| (WebCore::MediaDevices::MediaDevices): Add static_assert to ensure MediaDevices::DisplayCaptureSurfaceType |
| and RealtimeMediaSourceSettings::DisplaySurfaceType values are equivalent. |
| (WebCore::MediaDevices::getSupportedConstraints): Remove bogus code. |
| * Modules/mediastream/MediaDevices.h: Add DisplayCaptureSurfaceType. |
| * Modules/mediastream/MediaDevices.idl: Ditto. |
| |
| * Modules/mediastream/MediaStreamTrack.cpp: |
| (WebCore::MediaStreamTrack::getSettings const): Add a FIXME. |
| * Modules/mediastream/MediaStreamTrack.h: Add displaySurface and logicalSurface. |
| |
| * Modules/mediastream/MediaTrackSupportedConstraints.h: Remove displaySurface and logicalSurface. |
| * Modules/mediastream/MediaTrackSupportedConstraints.idl: |
| |
| * SourcesCocoa.txt: Add DisplayCaptureManagerCocoa.cpp and DisplayCaptureSourceCocoa.cpp. |
| |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| |
| * platform/mediastream/CaptureDevice.h: |
| (WebCore::CaptureDevice::encode const): Add. |
| (WebCore::CaptureDevice::decode): |
| |
| * platform/mediastream/RealtimeMediaSourceCenter.cpp: |
| (WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices): Include display capture "devices". |
| (WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Deal with display capture devices. |
| (WebCore::RealtimeMediaSourceCenter::captureDeviceWithPersistentID): Ditto. |
| * platform/mediastream/RealtimeMediaSourceCenter.h: |
| |
| * platform/mediastream/RealtimeMediaSourceSettings.h: |
| (WebCore::RealtimeMediaSourceSettings::displaySurface const): Return a DisplaySurfaceType. |
| (WebCore::RealtimeMediaSourceSettings::setDisplaySurface): Take a DisplaySurfaceType. |
| |
| * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp: |
| (WebCore::DisplayCaptureManagerCocoa::singleton): |
| (WebCore::DisplayCaptureManagerCocoa::~DisplayCaptureManagerCocoa): |
| (WebCore::DisplayCaptureManagerCocoa::captureDevices): |
| (WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID): |
| (WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): |
| * platform/mediastream/mac/DisplayCaptureManagerCocoa.h: |
| |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: Added. |
| (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): |
| (WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa): |
| (WebCore::DisplayCaptureSourceCocoa::capabilities const): |
| (WebCore::DisplayCaptureSourceCocoa::settings const): |
| (WebCore::DisplayCaptureSourceCocoa::settingsDidChange): |
| (WebCore::DisplayCaptureSourceCocoa::startProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::stopProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::elapsedTime): |
| (WebCore::DisplayCaptureSourceCocoa::applyFrameRate): |
| (WebCore::DisplayCaptureSourceCocoa::emitFrame): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.h: |
| |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp: |
| (WebCore::RealtimeMediaSourceCenterMac::displayCaptureDeviceManager): New. |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h: |
| |
| * platform/mock/MockRealtimeMediaSource.cpp: |
| (WebCore::deviceMap): Add screen capture "devices". |
| (WebCore::MockRealtimeMediaSource::displayDevices): New. |
| * platform/mock/MockRealtimeMediaSource.h: |
| |
| * platform/mock/MockRealtimeMediaSourceCenter.cpp: Clean up includes. |
| * platform/mock/MockRealtimeMediaSourceCenter.h: |
| |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| (WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Mock two screen devices. |
| (WebCore::MockRealtimeVideoSource::updateSettings): Deal with mock screens. |
| (WebCore::MockRealtimeVideoSource::initializeCapabilities): Ditto. |
| (WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Ditto. |
| (WebCore::MockRealtimeVideoSource::drawText): Ditto. |
| (WebCore::MockRealtimeVideoSource::generateFrame): Ditto. |
| * platform/mock/MockRealtimeVideoSource.h: |
| (WebCore::MockRealtimeVideoSource::mockCamera const): |
| (WebCore::MockRealtimeVideoSource::mockScreen const): |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| FetchResponse should set its internal response text encoding name |
| https://bugs.webkit.org/show_bug.cgi?id=181284 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased test. |
| |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::create): Set response text encoding based on content type charset. |
| |
| 2018-01-04 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Remove JavaScript confirm() prompt from Document::requestStorageAccess() |
| https://bugs.webkit.org/show_bug.cgi?id=181276 |
| <rdar://problem/36290463> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. Existing test expectations updated. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::requestStorageAccess): |
| |
| 2018-01-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Issues with Ahem's ex / x-height |
| https://bugs.webkit.org/show_bug.cgi?id=180581 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Get the x-height value from the TT_OS2 table if available. |
| |
| Fixes: fast/text/break-word-pre-wrap.html |
| imported/w3c/web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-arguments-000.html |
| |
| * platform/graphics/freetype/SimpleFontDataFreeType.cpp: |
| (WebCore::Font::platformInit): |
| |
| 2018-01-04 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, GTK build fix attempt after r226357 |
| |
| * platform/graphics/gstreamer/GStreamerUtilities.h: The |
| GST_BUFFER_DTS_OR_PTS macro was added in GStreamer 1.8 but old |
| versions of Debian might not have this release yet. |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| Implement Cache API partitioning based on ClientOrigin |
| https://bugs.webkit.org/show_bug.cgi?id=181240 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated tests. |
| |
| Previously, cache storage was partitioned according the origin of the client, represented as a String. |
| We now partition according both client and top origins, represented as a ClientOrigin |
| |
| Minor refactoring to use more makePendingActivity. |
| Added support for IPC serialization of ClientOrigin. |
| Added SecurityOriginData::toString which is used by WebKit2 Cache Storage implementation. |
| |
| * Modules/cache/CacheStorageConnection.cpp: |
| (WebCore::CacheStorageConnection::open): |
| (WebCore::CacheStorageConnection::retrieveCaches): |
| * Modules/cache/CacheStorageConnection.h: |
| (WebCore::CacheStorageConnection::clearMemoryRepresentation): |
| (WebCore::CacheStorageConnection::doOpen): |
| (WebCore::CacheStorageConnection::doRetrieveCaches): |
| * Modules/cache/DOMCacheStorage.cpp: |
| (WebCore::DOMCacheStorage::origin const): |
| (WebCore::DOMCacheStorage::retrieveCaches): |
| (WebCore::DOMCacheStorage::open): |
| (WebCore::DOMCacheStorage::remove): |
| * Modules/cache/DOMCacheStorage.h: |
| * Modules/cache/WorkerCacheStorageConnection.cpp: |
| (WebCore::WorkerCacheStorageConnection::doOpen): |
| (WebCore::WorkerCacheStorageConnection::doRetrieveCaches): |
| * Modules/cache/WorkerCacheStorageConnection.h: |
| * page/ClientOrigin.h: |
| (WebCore::ClientOrigin::isolatedCopy const): |
| (WebCore::ClientOrigin::encode const): |
| (WebCore::ClientOrigin::decode): |
| * page/SecurityOriginData.cpp: |
| (WebCore::SecurityOriginData::toString const): |
| (WebCore::SecurityOriginData::debugString const): Deleted. |
| * page/SecurityOriginData.h: |
| (WebCore::SecurityOriginData::debugString const): |
| * testing/Internals.cpp: |
| (WebCore::Internals::clearCacheStorageMemoryRepresentation): |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| Service Worker should expose redirect mode for navigation loads as manual |
| https://bugs.webkit.org/show_bug.cgi?id=181067 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased tests. |
| |
| * loader/CrossOriginAccessControl.cpp: Removing ContentType header only if affecting CORS checks. |
| This allows extending header filtering in service worker to all modes, including Navigate. |
| * workers/service/context/ServiceWorkerFetch.cpp: |
| (WebCore::ServiceWorkerFetch::dispatchFetchEvent): Ideally, document loading code should set redirect to manual. |
| Since it is not the case yet and that would require changes to various places, manual is set before exposing the corresponding fetch event. |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| ServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope should be a no-op if worker is being terminated |
| https://bugs.webkit.org/show_bug.cgi?id=181245 |
| |
| Reviewed by Alex Christensen. |
| |
| Stop appending tasks to a terminating worker and returning false in that case. |
| This mirrors what is done for regular workers. |
| |
| * workers/service/context/SWContextManager.cpp: |
| (WebCore::SWContextManager::terminateWorker): |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::ServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope): |
| * workers/service/context/ServiceWorkerThreadProxy.h: |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| Cancel pending script loads when service worker is being terminated |
| https://bugs.webkit.org/show_bug.cgi?id=181250 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by service worker tests no longer crashing in ASAN builds. |
| |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::notifyFinished): Clearing loader when finished. |
| (WebCore::WorkerScriptLoader::cancel): Implementing cancel of a script loader by cancelling the underlying threadable loader. |
| * workers/WorkerScriptLoader.h: |
| * workers/service/ServiceWorkerContainer.cpp: Canceling loads of all pending jobs. |
| (WebCore::ServiceWorkerContainer::stop): |
| * workers/service/ServiceWorkerJob.cpp: |
| (WebCore::ServiceWorkerJob::cancelPendingLoad): |
| * workers/service/ServiceWorkerJob.h: |
| |
| 2018-01-04 Youenn Fablet <youenn@apple.com> |
| |
| Implement https://fetch.spec.whatwg.org/#main-fetch default referrer policy setting |
| https://bugs.webkit.org/show_bug.cgi?id=181239 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated and rebased test. |
| |
| Setting the request referrer policy to the Document referrer policy if no one is set. |
| If Document has no referrer policy, use no-referrer-when-downgrade as per the spec. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::updateHTTPRequestHeaders): |
| (WebCore::CachedResourceLoader::requestResource): |
| * loader/cache/CachedResourceLoader.h: |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::updateReferrerPolicy): |
| (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): |
| * loader/cache/CachedResourceRequest.h: |
| |
| 2018-01-03 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Create attachment elements when dropping files on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=181192 |
| <rdar://problem/36280945> |
| |
| Reviewed by Tim Horton. |
| |
| Implements support for dropping data as attachment elements on iOS. See comments below for more detail. |
| |
| Tests: WKAttachmentTests.InsertDroppedRichAndPlainTextFilesAsAttachments |
| WKAttachmentTests.InsertDroppedZipArchiveAsAttachment |
| WKAttachmentTests.InsertDroppedItemProvidersInOrder |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * editing/WebContentReader.cpp: |
| (WebCore::WebContentReader::ensureFragment): |
| |
| Add a new helper to create the WebContentReader's fragment, if it hasn't already been created. |
| |
| * editing/WebContentReader.h: |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readFilePaths): |
| |
| Rename readFilenames to readFilePaths (which better reflects its parameters, which are file paths). Also, move |
| the implementation of readFilePaths to shared iOS/macOS code in WebContentReaderCocoa, and remove the stub |
| implementation on iOS. |
| |
| There's a bit of code here that I kept macOS-only which deals with inserting file paths as plain text in |
| editable areas, but it's unclear to me why and if WebKit clients currently find this useful, so I left a FIXME |
| to investigate removing this altogether. Code for handling this plain text insertion of file paths on Mac was |
| introduced in r67403. |
| |
| * editing/ios/WebContentReaderIOS.mm: |
| (WebCore::WebContentReader::readFilenames): Deleted. |
| * editing/mac/WebContentReaderMac.mm: |
| (WebCore::WebContentReader::readFilenames): Deleted. |
| * page/mac/DragControllerMac.mm: |
| (WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod const): |
| |
| Teach DragController to accept all types conforming to "public.item" and "public.content" on iOS, only when |
| attachment elements are enabled. This allows us to load content from item providers that we otherwise would not |
| have loaded, since we now have the ability to fall back to attachment element insertion if the type is not have |
| a default representation using standard web content. |
| |
| * platform/Pasteboard.h: |
| * platform/PasteboardItemInfo.h: Added. |
| (WebCore::PasteboardItemInfo::encode const): |
| (WebCore::PasteboardItemInfo::decode): |
| |
| Add PasteboardItemInfo, a struct that describes an item on the pasteboard. Also, implement encoding and decoding |
| support for PasteboardItemInfo. So far, the item info only describes file information about the pasteboard item, |
| and flags indicating whether the item prefers attachment or inline presentation. |
| |
| * platform/PasteboardStrategy.h: |
| |
| Replace getFilenamesForDataInteraction with informationForItemAtIndex. Instead of returning all of the file |
| paths associated with any item on the pasteboard, fetch a PasteboardItemInfo at a given item index, which |
| includes information about the file path as well as some other metadata we'll need when deciding how to read |
| pasteboard contents as a document fragment. |
| |
| * platform/PlatformPasteboard.h: |
| * platform/cocoa/PasteboardCocoa.mm: |
| (WebCore::Pasteboard::read): |
| * platform/ios/AbstractPasteboard.h: |
| * platform/ios/PasteboardIOS.mm: |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::readRespectingUTIFidelities): |
| |
| Teach the iOS Pasteboard to read web content using attachment elements, if enabled. There are two scenarios in |
| which we would want to insert an attachment element: |
| (1) The item provider uses a preferred presentation style of attachment, in which case we bail out of trying to |
| handle the drop using the default mechanisms, and simply insert it as an attachment. We need this to deal |
| with the case where we drop text or HTML files from the Files app, so that we don't try and insert the |
| contents of the text or HTML as inline web content. |
| (2) The item provider doesn't have a preferred attachment presentation style, but there's nothing WebKit would |
| otherwise do with the dropped content, so insert an attachment element as a fallback. Examples where this is |
| relevant are dropping a PDF or ZIP archive without attachment presentation style explicitly set. |
| We first check if we fall into case (1). If so, we can bail early by inserting an attachment; otherwise, we |
| proceed normally and see if we can read the contents of the drop as web content. If, at the end of default drop |
| handling, we don't still have a way to represent the dropped content, enter case (2). |
| |
| (WebCore::Pasteboard::readFilePaths): |
| (WebCore::Pasteboard::readFilenames): Deleted. |
| |
| Rename readFilenames to readFilePaths, and reimplement it using informationForItemAtIndex. |
| |
| * platform/ios/PlatformPasteboardIOS.mm: |
| (WebCore::pasteboardItemPresentationStyle): |
| (WebCore::PlatformPasteboard::informationForItemAtIndex): |
| (WebCore::PlatformPasteboard::filenamesForDataInteraction): Deleted. |
| |
| Implement informationForItemAtIndex and remove filenamesForDataInteraction. As before, we ask the pasteboard |
| (i.e. WebItemProviderPasteboard) for information about dropped file URLs. This time, we limit this to a single |
| file, so we don't end up creating multiple attachment elements for each representation of a single item |
| provider. See below for -preferredFileUploadURLAtIndex:fileType: for more detail. |
| |
| * platform/ios/WebItemProviderPasteboard.h: |
| * platform/ios/WebItemProviderPasteboard.mm: |
| (-[WebItemProviderLoadResult initWithItemProvider:typesToLoad:]): |
| (-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]): |
| |
| Remove this synthesized instance variable and instead just check the item provider's preferredPresentationStyle. |
| |
| (-[WebItemProviderLoadResult description]): |
| |
| Add a verbose -description to the load result object. Useful for debugging what was content was loaded from an |
| item provider on drop. |
| |
| (-[WebItemProviderPasteboard preferredFileUploadURLAtIndex:fileType:]): |
| |
| Return the highest fidelity loaded type identifier for a given item. |
| |
| (-[WebItemProviderPasteboard allDroppedFileURLs]): |
| (-[WebItemProviderPasteboard typeIdentifiersToLoadForRegisteredTypeIdentfiers:]): |
| |
| Prefer flat RTFD to RTFD. In the case where attachments are enabled and we're accepting all types of content |
| using attachment elements as a fallback representation, if the source writes attributed strings to the |
| pasteboard with com.apple.rtfd at a higher fidelity than com.apple.flat-rtfd, we'll end up loading only |
| com.apple.rtfd and dropping the text as an attachment element because we cannot convert the dropped content to |
| markup. Instead, if flat RTFD is present in the item provider, always prefer that over RTFD so that dropping as |
| regular web content isn't overridden when attachment elements are enabled. |
| |
| (-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]): |
| (-[WebItemProviderPasteboard droppedFileURLs]): Deleted. |
| * platform/mac/DragDataMac.mm: |
| (WebCore::DragData::containsCompatibleContent const): |
| |
| DragData::containsCompatibleContent should be true when attachment elements are enabled, and there are files we |
| can drop as attachment elements. |
| |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::readFilePaths): |
| (WebCore::Pasteboard::readFilenames): Deleted. |
| |
| 2018-01-03 Ting-Wei Lan <lantw44@gmail.com> |
| |
| Replace hard-coded paths in shebangs with #!/usr/bin/env |
| https://bugs.webkit.org/show_bug.cgi?id=181040 |
| |
| Reviewed by Alex Christensen. |
| |
| * bindings/scripts/InFilesCompiler.pm: |
| * bindings/scripts/InFilesParser.pm: |
| * bindings/scripts/generate-bindings-all.pl: |
| * bindings/scripts/generate-bindings.pl: |
| * bindings/scripts/preprocess-idls.pl: |
| * css/make-css-file-arrays.pl: |
| * css/makeprop.pl: |
| * css/makevalues.pl: |
| * dom/make_event_factory.pl: |
| * dom/make_names.pl: |
| * extract-localizable-strings.pl: |
| * make-hash-tools.pl: |
| |
| 2018-01-03 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Add plumbing for starting a drag with promised blob data |
| https://bugs.webkit.org/show_bug.cgi?id=181201 |
| |
| Reviewed by Tim Horton. |
| |
| Adds logic to allow dragging an attachment element as a file by sending promised blob information to the UI |
| process. See comments below for more detail. |
| |
| The only change in behavior is that dragging an attachment element will no longer write web content and injected |
| bundle data to the pasteboard if the attachment element's file attribute is nonnull. This will cause one |
| existing WK1 layout test to fail, but will otherwise not affect any attachment editing clients. On iOS, |
| attachment elements in the Mail viewer can be dragged, but each attachment's file is null, so we fall back to |
| current behavior; on macOS, Mail currently overrides the drag completely, beginning at -mouseDown:, so this |
| doesn't make a difference to macOS Mail either. |
| |
| * editing/Editor.h: |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::Editor::getPasteboardTypesAndDataForAttachment): |
| |
| Add a helper method to retrieve an attachment element as web archive data, for moving attachments within the |
| same document. Also gives the injected editor bundle a chance to supply custom pasteboard types. |
| |
| * loader/EmptyClients.cpp: |
| * page/DragClient.h: |
| (WebCore::DragClient::prepareToDragPromisedBlob): |
| |
| Add new DragClient methods to send information about a promised blob to the UI process. |
| |
| * page/DragController.cpp: |
| (WebCore::DragController::startDrag): |
| |
| Call dragAttachmentElement when starting a drag on an attachment element. |
| |
| (WebCore::DragController::dragAttachmentElement): |
| |
| Try to begin dragging a given attachment element, propagating promised blob information to the client layers. |
| Returns true iff the attachment is backed by blob data (i.e. the file is nonnull). |
| |
| * platform/PromisedBlobInfo.h: |
| |
| Add a list of additional types and data to PromisedBlobInfo. In addition to the promised blob info, this would |
| allow injected bundle data and other private types alongside the main attachment data on the pasteboard. |
| |
| 2018-01-03 Simon Fraser <simon.fraser@apple.com> |
| |
| Remove the 'resolutionScale' parameter from ImageBufferDataCG get/putBytes |
| https://bugs.webkit.org/show_bug.cgi?id=181268 |
| |
| Reviewed by Alex Christensen. |
| |
| These functions were always called with resolutionScale=1. |
| |
| * platform/graphics/cg/ImageBufferCG.cpp: |
| (WebCore::ImageBuffer::getUnmultipliedImageData const): |
| (WebCore::ImageBuffer::getPremultipliedImageData const): |
| (WebCore::ImageBuffer::putByteArray): |
| * platform/graphics/cg/ImageBufferDataCG.cpp: |
| (WebCore::ImageBufferData::getData const): |
| (WebCore::ImageBufferData::putData): |
| (WebCore::affineWarpBufferData): Deleted. |
| * platform/graphics/cg/ImageBufferDataCG.h: |
| |
| 2018-01-03 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Refactor XPC for access removal to go straight from the web process to the network process |
| https://bugs.webkit.org/show_bug.cgi?id=181270 |
| <rdar://problem/36289544> |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests. Existing test re-enabled. |
| |
| This change refactors how the web process tells the network process |
| to remove storage access. Previously, this was done over the UI process |
| just like requests for storage access. But since no further reasoning |
| is needed, the message should go straight from the web process to the |
| network process for performance reasons and to minimize the risk of a |
| race. |
| |
| As a consequence, the XPC code for storage access removal in the UI |
| process is deleted. |
| |
| * platform/network/cf/NetworkStorageSessionCFNet.cpp: |
| (WebCore::NetworkStorageSession::cookieStoragePartition const): |
| Removes the storageAccessAPIEnabled check since the flag |
| doesn't get propagated when the network process is created. |
| Figuring this out will take some work which is unnecessary |
| when we already gate access to the feature in Document.idl. |
| |
| 2018-01-03 James Craig <jcraig@apple.com> |
| |
| AX: when invert colors is on, double-invert certain media elements in UserAgentStyleSheet |
| https://bugs.webkit.org/show_bug.cgi?id=168447 |
| <rdar://problem/30559874> |
| |
| Reviewed by Simon Fraser. |
| |
| Double-invert video when platform 'invert colors' setting is enabled. Behavior matches |
| current 'Smart Invert' feature of Safari Reader on macOS/iOS and other iOS native apps. |
| |
| Tests: accessibility/smart-invert-reference.html |
| accessibility/smart-invert.html |
| |
| * Modules/modern-media-controls/controls/media-controls.css: |
| (@media (inverted-colors)): |
| (:host): |
| (picture): |
| * css/html.css: |
| (@media (inverted-colors)): |
| (video): |
| |
| 2018-01-03 Youenn Fablet <youenn@apple.com> |
| |
| LayoutTest http/tests/media/media-stream/disconnected-frame.html to consistently fail an assertion: !m_adoptionIsRequired |
| https://bugs.webkit.org/show_bug.cgi?id=181264 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by http/tests/media/media-stream/disconnected-frame.html not crashing anymore in Debug builds. |
| Calling suspendIfNeeded in create method instead of constructor. |
| |
| * Modules/mediastream/UserMediaRequest.cpp: |
| (WebCore::UserMediaRequest::create): |
| (WebCore::UserMediaRequest::UserMediaRequest): |
| |
| 2018-01-03 Antti Koivisto <antti@apple.com> |
| |
| Remove DeprecatedCSSOMValue::equals |
| https://bugs.webkit.org/show_bug.cgi?id=181241 |
| |
| Reviewed by Zalan Bujtas. |
| |
| This is dead code. |
| |
| * css/DeprecatedCSSOMValue.cpp: |
| (WebCore::compareCSSOMValues): Deleted. |
| (WebCore::DeprecatedCSSOMValue::equals const): Deleted. |
| * css/DeprecatedCSSOMValue.h: |
| (WebCore::DeprecatedCSSOMValue::operator== const): Deleted. |
| (WebCore::DeprecatedCSSOMComplexValue::equals const): Deleted. |
| * css/DeprecatedCSSOMValueList.cpp: |
| (WebCore::DeprecatedCSSOMValueList::equals const): Deleted. |
| * css/DeprecatedCSSOMValueList.h: |
| |
| 2018-01-03 Simon Fraser <simon.fraser@apple.com> |
| |
| feLighting is broken with primitiveUnits="objectBoundingBox" |
| https://bugs.webkit.org/show_bug.cgi?id=181197 |
| |
| Reviewed by Tim Horton. |
| |
| With <filter primitiveUnits="objectBoundingBox"> we need to convert the coordinates |
| of fePointLights and feSpotLights into user space coordinates. Following |
| https://www.w3.org/TR/SVG/filters.html#FilterElementPrimitiveUnitsAttribute |
| this is done by treating them as fractions of the bounding box on the referencing |
| element, with treatment for z following https://www.w3.org/TR/SVG/coords.html#Units_viewport_percentage |
| |
| To do this, store the bounds of the referencing elemenet on SVGFilterBuilder as |
| targetBoundingBox, and store the primitiveUnits type. Then do the conversion of lighting |
| coordinates in SVGFESpecularLightingElement::build() and SVGFEDiffuseLightingElement::build(). |
| |
| Remove SVGFELightElement::findLightSource(), since we need to be able to pass the SVGFilterBuilder |
| to the lightSource() function so hoist the code up. |
| |
| Tests: svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg |
| svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox.svg |
| svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox-expected.svg |
| svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox.svg |
| svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg |
| svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox.svg |
| |
| * rendering/svg/RenderSVGResourceFilter.cpp: |
| (WebCore::RenderSVGResourceFilter::buildPrimitives const): |
| * svg/SVGFEDiffuseLightingElement.cpp: |
| (WebCore::SVGFEDiffuseLightingElement::build): |
| * svg/SVGFEDistantLightElement.cpp: |
| (WebCore::SVGFEDistantLightElement::lightSource const): |
| * svg/SVGFEDistantLightElement.h: |
| * svg/SVGFELightElement.cpp: |
| (WebCore::SVGFELightElement::findLightSource): Deleted. |
| * svg/SVGFELightElement.h: |
| * svg/SVGFEPointLightElement.cpp: |
| (WebCore::SVGFEPointLightElement::lightSource const): |
| * svg/SVGFEPointLightElement.h: |
| * svg/SVGFESpecularLightingElement.cpp: |
| (WebCore::SVGFESpecularLightingElement::build): |
| * svg/SVGFESpotLightElement.cpp: |
| (WebCore::SVGFESpotLightElement::lightSource const): |
| * svg/SVGFESpotLightElement.h: |
| * svg/graphics/filters/SVGFilterBuilder.h: |
| (WebCore::SVGFilterBuilder::setTargetBoundingBox): |
| (WebCore::SVGFilterBuilder::targetBoundingBox const): |
| (WebCore::SVGFilterBuilder::primitiveUnits const): |
| (WebCore::SVGFilterBuilder::setPrimitiveUnits): |
| |
| 2018-01-03 Antti Koivisto <antti@apple.com> |
| |
| Crash beneath CSSValue::equals @ csas.cz |
| https://bugs.webkit.org/show_bug.cgi?id=181243 |
| <rdar://problem/35990826> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: fast/text/oblique-degree-equals-crash.html |
| |
| * css/CSSFontStyleValue.cpp: |
| (WebCore::CSSFontStyleValue::equals const): |
| |
| Null check both oblique pointers. |
| |
| 2018-01-03 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies) |
| https://bugs.webkit.org/show_bug.cgi?id=180979 |
| <rdar://problem/36146670> |
| |
| Reviewed by Matt Baker. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (fontNameIsSystemFont): |
| (WebCore::FontCache::systemFontFamilies): |
| Switch to the original Mac algorithm before r180979 that uses |
| CTFontManagerCopyAvailableFontFamilyNames. Previously this wasn't |
| available on iOS but now it is. This is a performance improvement on |
| both platforms, but significantly so on macOS. It also finds more, |
| valid, family names. |
| |
| 2018-01-03 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| ASSERTION FAILED: !source || is<Target>(*source) in CoordinatedGraphicsLayer::removeFromParent |
| https://bugs.webkit.org/show_bug.cgi?id=166568 |
| |
| Reviewed by Simon Fraser. |
| |
| When a GraphicsLayer has a mask layer, it fails to properly unparent the mask layer before |
| it is destroyed. This leaves the mask layer with a dangling parent pointer. Fix it, while |
| taking care not to introduce yet another virtual function call during the execution of the |
| destructor. |
| |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::GraphicsLayer::willBeDestroyed): |
| |
| 2018-01-03 Simon Fraser <simon.fraser@apple.com> |
| |
| SVG lighting filter lights are in the wrong coordinate system |
| https://bugs.webkit.org/show_bug.cgi?id=181147 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Point and spot light coordinates weren't being converted into buffer-relative |
| coordinates before being fed into the lighting math, resulting in incorrect light |
| rendering on Retina devices, and when the filter primitive region was clipped. |
| |
| Fix by storing absoluteUnclippedSubregion on FilterEffect, which allows us to map |
| lighting points from user space coordinates into the coordinates of the buffer being |
| used for rendering. Also scale the light z coordinate by doing a dummy point mapping in x. |
| |
| Rename members of PointLightSource and SpotLightSource to make it clear which coordinate |
| system they are in. |
| |
| Tests include HiDPI tests. |
| |
| Tests: svg/filters/fePointLight-coordinates-expected.svg |
| svg/filters/fePointLight-coordinates.svg |
| svg/filters/feSpotLight-coordinates-expected.svg |
| svg/filters/feSpotLight-coordinates.svg |
| svg/filters/hidpi/fePointLight-coordinates-expected.svg |
| svg/filters/hidpi/fePointLight-coordinates.svg |
| svg/filters/hidpi/feSpotLight-coordinates-expected.svg |
| svg/filters/hidpi/feSpotLight-coordinates.svg |
| |
| * platform/graphics/FloatPoint3D.h: Make it easy to get and set the X and Y coords as a FloatPoint. |
| (WebCore::FloatPoint3D::xy const): |
| (WebCore::FloatPoint3D::setXY): |
| * platform/graphics/GeometryUtilities.cpp: |
| (WebCore::mapPoint): |
| (WebCore::mapRect): |
| * platform/graphics/GeometryUtilities.h: Helper to make a point between rects. |
| * platform/graphics/filters/DistantLightSource.cpp: |
| (WebCore::DistantLightSource::initPaintingData): |
| * platform/graphics/filters/DistantLightSource.h: |
| * platform/graphics/filters/FELighting.cpp: |
| (WebCore::FELighting::drawLighting): |
| * platform/graphics/filters/FilterEffect.cpp: |
| (WebCore::FilterEffect::mapPointFromUserSpaceToBuffer const): |
| * platform/graphics/filters/FilterEffect.h: |
| (WebCore::FilterEffect::setUnclippedAbsoluteSubregion): |
| * platform/graphics/filters/LightSource.h: |
| * platform/graphics/filters/PointLightSource.cpp: |
| (WebCore::PointLightSource::initPaintingData): |
| (WebCore::PointLightSource::computePixelLightingData const): |
| (WebCore::PointLightSource::setX): |
| (WebCore::PointLightSource::setY): |
| (WebCore::PointLightSource::setZ): |
| * platform/graphics/filters/PointLightSource.h: |
| (WebCore::PointLightSource::position const): |
| (WebCore::PointLightSource::PointLightSource): |
| * platform/graphics/filters/SpotLightSource.cpp: |
| (WebCore::SpotLightSource::initPaintingData): |
| (WebCore::SpotLightSource::computePixelLightingData const): |
| (WebCore::SpotLightSource::setX): |
| (WebCore::SpotLightSource::setY): |
| (WebCore::SpotLightSource::setZ): |
| (WebCore::SpotLightSource::setPointsAtX): |
| (WebCore::SpotLightSource::setPointsAtY): |
| (WebCore::SpotLightSource::setPointsAtZ): |
| * platform/graphics/filters/SpotLightSource.h: |
| (WebCore::SpotLightSource::position const): |
| (WebCore::SpotLightSource::direction const): |
| (WebCore::SpotLightSource::SpotLightSource): |
| * rendering/svg/RenderSVGResourceFilter.cpp: |
| (WebCore::RenderSVGResourceFilter::buildPrimitives const): |
| * rendering/svg/RenderSVGResourceFilterPrimitive.cpp: |
| (WebCore::RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion): |
| |
| 2018-01-03 Youenn Fablet <youenn@apple.com> |
| |
| Select service worker for documents with data/blob URLS |
| https://bugs.webkit.org/show_bug.cgi?id=181213 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by updated test. |
| |
| Reusing the service worker of the parent for blob/data URL documents. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::isLocalURL): |
| (WebCore::DocumentLoader::commitData): |
| |
| 2018-01-03 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r226352. |
| |
| Breaks Sierra and El Capitan builds. |
| |
| Reverted changeset: |
| |
| "Web Inspector: Slow open time enumerating system fonts |
| (FontCache::systemFontFamilies)" |
| https://bugs.webkit.org/show_bug.cgi?id=180979 |
| https://trac.webkit.org/changeset/226352 |
| |
| 2018-01-03 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] The bus synchronous handler should be in the base player class |
| https://bugs.webkit.org/show_bug.cgi?id=181237 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Because this is where video rendering is handled. |
| |
| No new tests, this is only a refactoring. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerBase::setPipeline): |
| |
| 2018-01-03 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] move MediaSample implementation out of mse/ |
| https://bugs.webkit.org/show_bug.cgi?id=179165 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This module isn't specific to MSE and can potentially be reused |
| elsewhere, for WebRTC for instance. Additionally the |
| ::platformSample() method was implemented and the code was cleaned up. |
| |
| * platform/GStreamer.cmake: |
| * platform/MediaSample.h: |
| * platform/graphics/gstreamer/GStreamerMediaSample.cpp: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.cpp. |
| (WebCore::GStreamerMediaSample::platformSample): |
| * platform/graphics/gstreamer/GStreamerMediaSample.h: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.h. |
| * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: |
| (WebCore::PlaybackPipeline::enqueueSample): |
| |
| 2018-01-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix resource load stats tests on GLib based ports after r226355. |
| |
| The monitor can be created in the work queue thread too. |
| |
| * platform/glib/FileMonitorGLib.cpp: |
| (WebCore::FileMonitor::FileMonitor): |
| |
| 2018-01-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Crash destroying WebCore::FileMonitor |
| https://bugs.webkit.org/show_bug.cgi?id=181138 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Ensure that platform file monitor is always created and destroyed in the work queue thread synchronously. |
| |
| * platform/FileMonitor.h: |
| * platform/glib/FileMonitorGLib.cpp: |
| (WebCore::FileMonitor::FileMonitor): |
| (WebCore::FileMonitor::~FileMonitor): |
| (WebCore::FileMonitor::didChange): |
| |
| 2018-01-02 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies) |
| https://bugs.webkit.org/show_bug.cgi?id=180979 |
| <rdar://problem/36146670> |
| |
| Reviewed by Matt Baker. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontCache::systemFontFamilies): |
| Switch to the original Mac algorithm before r180979 that uses |
| CTFontManagerCopyAvailableFontFamilyNames. Previously this wasn't |
| available on iOS but now it is. This is a performance improvement on |
| both platforms, but significantly so on macOS. It also finds more, |
| valid, family names. |
| |
| 2018-01-02 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Unreviewed, fix GCC warning by using #include |
| https://bugs.webkit.org/show_bug.cgi?id=181189 |
| |
| This file is included in C++ files. Use #include instead of #import to suppress warning in GCC. |
| |
| * platform/PromisedBlobInfo.h: |
| |
| 2017-12-28 Yusuke Suzuki <utatane.tea@gmail.com> |
| |
| Remove std::chrono completely |
| https://bugs.webkit.org/show_bug.cgi?id=181186 |
| |
| Reviewed by Alex Christensen. |
| |
| Use MonotonicTime, WallTime, and Seconds instead. |
| Changes are mechanical ones. But persistent network cache data is changed. |
| So we bump the version number of the cache storage. |
| |
| * Modules/indexeddb/server/IDBServer.cpp: |
| (WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince): |
| (WebCore::IDBServer::removeAllDatabasesForOriginPath): |
| (WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince): |
| (WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins): |
| * Modules/indexeddb/server/IDBServer.h: |
| * Modules/webdatabase/DatabaseTracker.cpp: |
| (WebCore::DatabaseTracker::deleteDatabasesModifiedSince): |
| * Modules/webdatabase/DatabaseTracker.h: |
| * dom/Document.cpp: |
| (WebCore::Document::lastModified): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::clearMediaCache): |
| * html/HTMLMediaElement.h: |
| (WebCore::HTMLMediaElement::clearMediaCache): |
| * loader/CrossOriginPreflightResultCache.cpp: |
| (WebCore::parseAccessControlMaxAge): |
| (WebCore::CrossOriginPreflightResultCacheItem::parse): |
| (WebCore::CrossOriginPreflightResultCacheItem::allowsRequest const): |
| * loader/CrossOriginPreflightResultCache.h: |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::CachedResource): |
| (WebCore::CachedResource::freshnessLifetime const): |
| (WebCore::CachedResource::responseReceived): |
| (WebCore::CachedResource::updateResponseAfterRevalidation): |
| * loader/cache/CachedResource.h: |
| * platform/FileSystem.cpp: |
| (WebCore::FileSystem::getFileModificationTime): |
| * platform/FileSystem.h: |
| * platform/SearchPopupMenu.h: |
| * platform/cocoa/SearchPopupMenuCocoa.h: |
| * platform/cocoa/SearchPopupMenuCocoa.mm: |
| (WebCore::toSystemClockTime): |
| (WebCore::toNSDateFromSystemClock): |
| (WebCore::removeRecentlyModifiedRecentSearches): |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::clearMediaCache): |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::clearMediaCache): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::toSystemClockTime): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache): |
| * platform/graphics/mac/MediaPlayerPrivateQTKit.h: |
| * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: |
| (WebCore::MediaPlayerPrivateQTKit::clearMediaCache): |
| * platform/network/CacheValidation.cpp: |
| (WebCore::computeCurrentAge): |
| (WebCore::computeFreshnessLifetimeForHTTPFamily): |
| (WebCore::updateRedirectChainStatus): |
| (WebCore::redirectChainAllowsReuse): |
| (WebCore::parseCacheControlDirectives): |
| * platform/network/CacheValidation.h: |
| (WebCore::RedirectChainCacheStatus::RedirectChainCacheStatus): |
| * platform/network/HTTPParsers.cpp: |
| (WebCore::parseHTTPDate): |
| * platform/network/HTTPParsers.h: |
| * platform/network/PlatformCookieJar.h: |
| * platform/network/ResourceResponseBase.cpp: |
| (WebCore::ResourceResponseBase::cacheControlMaxAge const): |
| (WebCore::parseDateValueInHeader): |
| (WebCore::ResourceResponseBase::date const): |
| (WebCore::ResourceResponseBase::age const): |
| (WebCore::ResourceResponseBase::expires const): |
| (WebCore::ResourceResponseBase::lastModified const): |
| * platform/network/ResourceResponseBase.h: |
| * platform/network/cf/CookieJarCFNet.cpp: |
| (WebCore::deleteAllCookiesModifiedSince): |
| * platform/network/curl/CookieJarCurl.cpp: |
| (WebCore::CookieJarCurlFileSystem::deleteAllCookiesModifiedSince): |
| (WebCore::deleteAllCookiesModifiedSince): |
| * platform/network/curl/CookieJarCurl.h: |
| * platform/network/curl/CurlCacheEntry.cpp: |
| (WebCore::CurlCacheEntry::CurlCacheEntry): |
| (WebCore::CurlCacheEntry::isCached): |
| (WebCore::CurlCacheEntry::parseResponseHeaders): |
| * platform/network/curl/CurlCacheEntry.h: |
| * platform/network/mac/CookieJarMac.mm: |
| (WebCore::deleteAllCookiesModifiedSince): |
| * platform/network/soup/CookieJarSoup.cpp: |
| (WebCore::deleteAllCookiesModifiedSince): |
| * platform/win/SearchPopupMenuWin.cpp: |
| (WebCore::SearchPopupMenuWin::loadRecentSearches): |
| * rendering/RenderSearchField.cpp: |
| (WebCore::RenderSearchField::addSearchResult): |
| |
| 2018-01-02 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Introduce data structures and IPC support for writing promised blobs |
| https://bugs.webkit.org/show_bug.cgi?id=181189 |
| |
| Reviewed by Tim Horton. |
| |
| Introduces a new header containing structs to be used for writing blob data when dragging. PromisedBlobInfo |
| represents information needed to declare data on the pasteboard that will eventually be provided via a Blob. |
| This includes the type and filename of the Blob-backed content. PromisedBlobData represents information needed |
| to actually deliver the Blob's content to the platform, and is sent some time after its corresponding |
| PromisedBlobInfo. The content may either be in the form of a file path (as is the case using the previous |
| declareAndWriteAttachment codepath) or a data buffer (which we would use if the Blob is not already backed by a |
| file on disk). |
| |
| No new tests, since there is no observable change in functionality yet. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/PromisedBlobInfo.h: Added. |
| (WebCore::PromisedBlobInfo::operator bool const): |
| (WebCore::PromisedBlobData::hasData const): |
| (WebCore::PromisedBlobData::hasFile const): |
| (WebCore::PromisedBlobData::operator bool const): |
| (WebCore::PromisedBlobData::fulfills const): |
| |
| 2018-01-02 Brady Eidson <beidson@apple.com> |
| |
| Make MessagePortChannel::takeAllMessagesFromRemote asynchronous. |
| https://bugs.webkit.org/show_bug.cgi?id=181205 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (No behavior change) |
| |
| This is needed for the ongoing WK2 MessagePort work. |
| |
| For WK1 in-process MessagePorts it is still synchronous; no behavior change. |
| |
| * dom/InProcessMessagePortChannel.cpp: |
| (WebCore::InProcessMessagePortChannel::takeAllMessagesFromRemote): |
| * dom/InProcessMessagePortChannel.h: |
| |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::dispatchMessages): |
| * dom/MessagePortChannel.h: |
| |
| 2018-01-02 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Add a WebAuthentication runtime feature flag |
| https://bugs.webkit.org/show_bug.cgi?id=181220 |
| <rdar://problem/36055305> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch basically renames the CredentialManagement runtime feature flag into |
| WebAuthentication runtime feature flag. |
| |
| No tests. |
| |
| * Modules/credentialmanagement/BasicCredential.idl: |
| * Modules/credentialmanagement/CredentialsContainer.idl: |
| * Modules/credentialmanagement/NavigatorCredentials.idl: |
| * Modules/webauthn/PublicKeyCredential.idl: |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setWebAuthenticationEnabled): |
| (WebCore::RuntimeEnabledFeatures::webAuthenticationEnabled const): |
| (WebCore::RuntimeEnabledFeatures::setCredentialManagementEnabled): Deleted. |
| (WebCore::RuntimeEnabledFeatures::credentialManagementEnabled const): Deleted. |
| |
| 2018-01-02 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Attachment Support] Don't Blob-convert images and attachments with https:, http: or data: urls |
| https://bugs.webkit.org/show_bug.cgi?id=181143 |
| <rdar://problem/36200381> |
| |
| Reviewed by Tim Horton. |
| |
| Clients such as Mail would expect pasting or dropping an image with src="https://..." to result in the source |
| URL being preserved (i.e. staying as remote images) instead of creating image attachments out of them. This |
| patch hooks into the shouldConvertToBlob() check added in r226272 so that it applies to attachment element |
| replacement as well. |
| |
| Test: WKAttachmentTests.DoNotInsertDataURLImagesAsAttachments |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::shouldConvertToBlob): |
| (WebCore::replaceRichContentWithAttachments): |
| |
| 2018-01-02 Brady Eidson <beidson@apple.com> |
| |
| Identify MessagePorts by a globally unique MessagePortIdentifier. |
| https://bugs.webkit.org/show_bug.cgi?id=181172 |
| |
| Reviewed by Alex Christensen. |
| |
| No new tests (Behavior change covered by all existing tests). |
| |
| This cleans up the abstract MessagePortChannel interface to be in terms of identifiers |
| instead of actual MessagePort objects. |
| |
| The identifiers are compounded with the current ProcessIdentifier meaning they are global |
| across all processes for the running UI process, enabling easy cross-process communication. |
| |
| (Actual cross-process communication comes in a followup) |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * dom/InProcessMessagePortChannel.cpp: |
| (WebCore::InProcessMessagePortChannel::createChannelBetweenPorts): |
| (WebCore::InProcessMessagePortChannel::isConnectedTo): |
| (WebCore::InProcessMessagePortChannel::entangleWithRemoteIfOpen): |
| (WebCore::InProcessMessagePortChannel::entangleIfOpen): Deleted. |
| * dom/InProcessMessagePortChannel.h: |
| |
| * dom/MessageChannel.cpp: |
| (WebCore::MessageChannel::MessageChannel): |
| (WebCore::m_port2): |
| |
| * dom/MessagePort.cpp: |
| (WebCore::allMessagePortsLock): |
| (WebCore::MessagePort::ref const): |
| (WebCore::MessagePort::deref const): |
| (WebCore::MessagePort::existingMessagePortForIdentifier): |
| (WebCore::MessagePort::MessagePort): |
| (WebCore::MessagePort::~MessagePort): |
| (WebCore::MessagePort::postMessage): |
| (WebCore::MessagePort::entangleWithRemote): |
| (WebCore::MessagePort::entanglePorts): |
| (WebCore::MessagePort::entangle): Deleted. |
| * dom/MessagePort.h: |
| |
| * dom/MessagePortChannel.h: |
| |
| * dom/MessagePortIdentifier.h: Added. |
| (WebCore::operator==): |
| (WebCore::MessagePortIdentifier::encode const): |
| (WebCore::MessagePortIdentifier::decode): |
| (WebCore::MessagePortIdentifier::hash const): |
| (WTF::MessagePortIdentifierHash::hash): |
| (WTF::MessagePortIdentifierHash::equal): |
| (WTF::HashTraits<WebCore::MessagePortIdentifier>::emptyValue): |
| (WTF::HashTraits<WebCore::MessagePortIdentifier>::constructDeletedValue): |
| (WTF::HashTraits<WebCore::MessagePortIdentifier>::isDeletedValue): |
| |
| 2018-01-02 Youenn Fablet <youenn@apple.com> |
| |
| Memory cache should not reuse resources with different credential fetch option |
| https://bugs.webkit.org/show_bug.cgi?id=181212 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by rebased test. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::determineRevalidationPolicy const): |
| |
| 2018-01-02 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Update Credential Management API for WebAuthentication |
| https://bugs.webkit.org/show_bug.cgi?id=181082 |
| <rdar://problem/36055239> |
| |
| Reviewed by Brent Fulgham. |
| |
| Part 2/2 |
| |
| This patch implements Core API from Credential Management API: https://www.w3.org/TR/credential-management-1/#core. |
| which is required by WebAuthN. It also sets the CredentialManagement runtime flag to enable testing. Note that it |
| introduces a dummy PublicKeyCredential interface for testing functionalities of the Credential interface, which |
| cannot be instantiated. |
| |
| Tests: http/wpt/credential-management/credentialscontainer-create-basics.https.html |
| http/wpt/credential-management/credentialscontainer-get-basics.https.html |
| http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https.html |
| http/wpt/credential-management/idl.https.html |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Modules/credentialmanagement/BasicCredential.cpp: |
| (WebCore::BasicCredential::BasicCredential): |
| (WebCore::BasicCredential::type const): |
| * Modules/credentialmanagement/BasicCredential.h: |
| (WebCore::BasicCredential::discovery const): |
| * Modules/credentialmanagement/BasicCredential.idl: |
| * Modules/credentialmanagement/CredentialCreationOptions.h: |
| * Modules/credentialmanagement/CredentialCreationOptions.idl: |
| * Modules/credentialmanagement/CredentialRequestOptions.h: |
| * Modules/credentialmanagement/CredentialRequestOptions.idl: |
| * Modules/credentialmanagement/CredentialsContainer.cpp: |
| (WebCore::CredentialsContainer::CredentialsContainer): |
| (WebCore::CredentialsContainer::isSameOriginWithItsAncestors): |
| (WebCore::CredentialsContainer::dispatchTask): |
| (WebCore::CredentialsContainer::get): |
| (WebCore::CredentialsContainer::store): |
| (WebCore::CredentialsContainer::isCreate): |
| (WebCore::CredentialsContainer::preventSilentAccess): |
| * Modules/credentialmanagement/CredentialsContainer.h: |
| (WebCore::CredentialsContainer::create): |
| (WebCore::CredentialsContainer::CredentialsContainer): Deleted. |
| * Modules/credentialmanagement/CredentialsContainer.idl: |
| * Modules/credentialmanagement/NavigatorCredentials.cpp: |
| (WebCore::NavigatorCredentials::credentials): |
| * Modules/credentialmanagement/NavigatorCredentials.h: |
| * Modules/credentialmanagement/NavigatorCredentials.idl: |
| * Modules/webauthn/PublicKeyCredential.cpp: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp. |
| (WebCore::PublicKeyCredential::PublicKeyCredential): |
| (WebCore::PublicKeyCredential::collectFromCredentialStore): |
| (WebCore::PublicKeyCredential::discoverFromExternalSource): |
| (WebCore::PublicKeyCredential::store): |
| (WebCore::PublicKeyCredential::create): |
| * Modules/webauthn/PublicKeyCredential.h: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp. |
| * Modules/webauthn/PublicKeyCredential.idl: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.idl. |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/WebCoreBuiltinNames.h: |
| * page/RuntimeEnabledFeatures.h: |
| |
| 2018-01-02 Oleksandr Skachkov <gskachkov@gmail.com> |
| |
| WebAssembly: sending module to iframe fails |
| https://bugs.webkit.org/show_bug.cgi?id=179263 |
| |
| Reviewed by JF Bastien. |
| |
| Allow use WebAssembly.Module as input parameters for postMessage |
| in window and iframe object. To prevent sending message to iframe |
| that is not ready, in iframe-* test we are waiting message from |
| iframe only after that we send message to it. |
| |
| Tests: wasm/iframe-parent-postmessage.html |
| wasm/iframe-postmessage.html |
| wasm/window-postmessage.html |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| * bindings/js/SerializedScriptValue.h: |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::postMessage): |
| |
| == Rolled over to ChangeLog-2018-01-01 == |