Timeline



Dec 1, 2019:

10:44 PM Changeset in webkit [252978] by commit-queue@webkit.org
  • 7 edits
    5 copies
    3 adds in trunk/Source/JavaScriptCore

Add FuzzerAgent that reads predictions from a file
https://bugs.webkit.org/show_bug.cgi?id=203898

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-12-01
Reviewed by Mark Lam.

This patch adds a FuzzerAgent that reads predictions from a file. The predictions in the file are
correlated with the prediction sites using the name of the JavaScript source file, the opcode, and
start and end offsets in the source. There is also a separate FuzzerAgent that can be used to create
the prediction files.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/FileBasedFuzzerAgent.cpp: Added.
  • runtime/FileBasedFuzzerAgent.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/FileBasedFuzzerAgentBase.cpp: Added.
  • runtime/FileBasedFuzzerAgentBase.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/FuzzerPredictions.cpp: Added.
  • runtime/FuzzerPredictions.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/Options.cpp:
  • runtime/OptionsList.h:
  • runtime/PredictionFileCreatingFuzzerAgent.cpp: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/PredictionFileCreatingFuzzerAgent.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/RandomizingFuzzerAgent.cpp:
  • runtime/VM.cpp:
7:32 PM Changeset in webkit [252977] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Disable LocalCurrentGraphicsContext when doing DisplayList recording
https://bugs.webkit.org/show_bug.cgi?id=204721

Reviewed by Simon Fraser.

  • platform/mac/LocalCurrentGraphicsContext.mm:

(WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):
Since we don't have a platform context, we can't set the global
graphics context. This means that anything depending on this downstream
will break and need to be implemented a different way in
the DisplayList case.

7:19 PM Changeset in webkit [252976] by Fujii Hironori
  • 9 edits in trunk/Source

[Win] Retrieve all following WM_CHAR events at the beginning of processing WM_KEYDOWN event
https://bugs.webkit.org/show_bug.cgi?id=204694

Reviewed by Ross Kirsling.

Source/WebKit:

In Windows ports, WM_KEYDOWN dispatches keydown event, and
WM_CHAR dispatches keypress event. If a keydown event is canceled
by calling preventDefault, the following corresponding keypress
events shouldn't be dispatched.

WebKit1 implemented it by removing WM_CHAR events if the keydown
event is consumed. However, WebKit2 can't do so because WebKit2
processes key events asynchronously. Thus, retrieve all following
WM_CHAR events, and dispatch them after processing the keydown
and if it is not consumed.

In addition to that, retrieving following WM_CHAR events is needed
to fix Bug 204672 because the events are needed for 'key' property
of keydown KeyboardEvent for dead key combination.

Gecko and Chromium also implements 'key' property in the same approach.

Test: Covered by existing fast/events/inputText-never-fired-on-keydown-cancel.html and fast/events/keydown-keypress-preventDefault.html

  • Shared/NativeWebKeyboardEvent.h: Added m_pendingCharEvents as Vector<MSG>.

(WebKit::NativeWebKeyboardEvent::pendingCharEvents const):

  • Shared/win/NativeWebKeyboardEventWin.cpp:

(WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/win/WebPageProxyWin.cpp:

(WebKit::WebPageProxy::dispatchPendingCharEvents):

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::onKeyEvent):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::keyDown): Added a variable pendingCharEvents of
Vector<MSG> to preserve following WM_CHAR events. Dispatch them if
the WM_KEYDOWN isn't consumed.

6:57 PM Changeset in webkit [252975] by Caio Lima
  • 6 edits in trunk

[JSC][MIPS] CallFrame is being clobbered on InternalFunction execution
https://bugs.webkit.org/show_bug.cgi?id=203739

Reviewed by Saam Barati.

JSTests:

  • stress/has-instance-exception-check.js:
  • stress/regress-176485.js:

Source/JavaScriptCore:

MIPS calling conventions requires that we have stack space reserved
for 4 (16-bytes) arguments ($a0-$a3). The caller doesn't use
this space, but callee can still use it in case where they need to save
arguments or even reuse to another allocation. Since we were not
allocationg it during makeHostFunctionCall, the caller frame slot
was being clobberred by callGenericTypedArrayView execution,
resulting in a corrupted call frame stack. This patch is adjusting
this convention into ThunkGenerator and on makeHostFunctionCall.

  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator):

  • llint/LowLevelInterpreter32_64.asm:
6:54 PM Changeset in webkit [252974] by Caio Lima
  • 8 edits in trunk/Source/JavaScriptCore

Implement GetByVal inline caching for 32-bit JITs
https://bugs.webkit.org/show_bug.cgi?id=204082

Reviewed by Saam Barati.

We are adding 32-bit support for GetByVal cases added on r252684.
This requires changes on some of the IC code generated to properly
support JSVALUE32_64. The major difference from JSVALUE64 is the
usage of tagGPR to inspect value types and store results.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/StructureStubInfo.h:

Since a generator can't have thisGPR and propertyGPR at se same time,
we created a new union to share thisTagGPR and propertyTagGPR,
matching the approach we have for JITInlineCacheGenerator::patch.u.

(JSC::StructureStubInfo::propertyRegs const):
(JSC::StructureStubInfo::baseRegs const):

To simplify scratch register allocation, we added baseRegs() and
propertyRegs() to StructureStubInfo, so we can easily retrive
payload and tag GPRs for those operands, keeping them locked.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
(JSC::JITGetByValGenerator::JITGetByValGenerator):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):

6:18 PM Changeset in webkit [252973] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy/win

[CMake] Ninja can't build WebKitQuartzCoreAdditions of AppleWin port
https://bugs.webkit.org/show_bug.cgi?id=204696

Reviewed by Don Olmstead.

It seems unnecessary to explicitly add Windows SDK to link_directories.

  • WebKitQuartzCoreAdditions/CMakeLists.txt: Removed link_directories for Windows SDK.
3:14 PM Changeset in webkit [252972] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Trim trailing letter spacing.
https://bugs.webkit.org/show_bug.cgi?id=204731
<rdar://problem/57545763>

Reviewed by Antti Koivisto.

Refactor trailing trimmable content to support partial, non-whitespace trimmable content e.g. letter spacing.
https://drafts.csswg.org/css-text-3/#letter-spacing-property -> UAs therefore must not append letter spacing to the right or trailing edge of a line.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::TrailingTrimmableContent::reset):
(WebCore::Layout::LineBreaker::Content::hasNonWhitespaceOrInlineBox const): Deleted.
(WebCore::Layout::LineBreaker::Content::trailingTrimmableWidth const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::Content::isEmpty const):
(WebCore::Layout::LineBreaker::Content::nonTrimmableWidth const):
(WebCore::Layout::LineBreaker::Content::hasTrailingTrimmableContent const):
(WebCore::Layout::LineBreaker::Content::isTrailingContentFullyTrimmable const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::InlineItemRun::removeTrailingLetterSpacing):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::isTrailingContentFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableContent::isTrailingContentFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

1:58 PM Changeset in webkit [252971] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Rename CSSCalcPrimitiveValue to CSSCalcPrimitiveValueNode, and CSSCalcOperation to CSSCalcOperationNode
https://bugs.webkit.org/show_bug.cgi?id=204730

Reviewed by Dean Jackson.

Pure rename. These are both subclasses of CSSCalcExpressionNode, so are better with Node in the name.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcPrimitiveValueNode::createCalcExpression const):
(WebCore::CSSCalcPrimitiveValueNode::doubleValue const):
(WebCore::CSSCalcPrimitiveValueNode::computeLengthPx const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::equals const):
(WebCore::CSSCalcPrimitiveValueNode::dump const):
(WebCore::CSSCalcOperationNode::create):
(WebCore::CSSCalcOperationNode::createMinOrMax):
(WebCore::CSSCalcOperationNode::createSimplified):
(WebCore::CSSCalcOperationNode::primitiveType const):
(WebCore::CSSCalcOperationNode::createCalcExpression const):
(WebCore::CSSCalcOperationNode::doubleValue const):
(WebCore::CSSCalcOperationNode::computeLengthPx const):
(WebCore::CSSCalcOperationNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcOperationNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcOperationNode::buildCssText):
(WebCore::CSSCalcOperationNode::customCSSText const):
(WebCore::CSSCalcOperationNode::dump const):
(WebCore::CSSCalcOperationNode::equals const):
(WebCore::CSSCalcOperationNode::evaluateOperator):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression):
(WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression):
(WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression):
(WebCore::createBlendHalf):
(WebCore::createCSS):
(WebCore::CSSCalcPrimitiveValue::createCalcExpression const): Deleted.
(WebCore::CSSCalcPrimitiveValue::doubleValue const): Deleted.
(WebCore::CSSCalcPrimitiveValue::computeLengthPx const): Deleted.
(WebCore::CSSCalcPrimitiveValue::collectDirectComputationalDependencies const): Deleted.
(WebCore::CSSCalcPrimitiveValue::collectDirectRootComputationalDependencies const): Deleted.
(WebCore::CSSCalcPrimitiveValue::equals const): Deleted.
(WebCore::CSSCalcPrimitiveValue::dump const): Deleted.
(WebCore::CSSCalcOperation::create): Deleted.
(WebCore::CSSCalcOperation::createMinOrMax): Deleted.
(WebCore::CSSCalcOperation::createSimplified): Deleted.
(WebCore::CSSCalcOperation::primitiveType const): Deleted.
(WebCore::CSSCalcOperation::createCalcExpression const): Deleted.
(WebCore::CSSCalcOperation::doubleValue const): Deleted.
(WebCore::CSSCalcOperation::computeLengthPx const): Deleted.
(WebCore::CSSCalcOperation::collectDirectComputationalDependencies const): Deleted.
(WebCore::CSSCalcOperation::collectDirectRootComputationalDependencies const): Deleted.
(WebCore::CSSCalcOperation::buildCssText): Deleted.
(WebCore::CSSCalcOperation::customCSSText const): Deleted.
(WebCore::CSSCalcOperation::dump const): Deleted.
(WebCore::CSSCalcOperation::equals const): Deleted.
(WebCore::CSSCalcOperation::evaluateOperator): Deleted.

1:58 PM Changeset in webkit [252970] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Add a Calc log channel, and support type traits for calc-related classes
https://bugs.webkit.org/show_bug.cgi?id=204729

Reviewed by Dean Jackson.

Add type traits support for CalculationValue and CSSCalculationValue classes.

Add a Calc logging channel and dump post-parsing values, and in some error cases.s

  • css/CSSCalculationValue.cpp:

(WebCore::operator<<):
(WebCore::prettyPrintNode):
(WebCore::prettyPrintNodes):
(WebCore::CSSCalcPrimitiveValue::dump const):
(WebCore::CSSCalcOperation::create):
(WebCore::CSSCalcOperation::createMinOrMax):
(WebCore::CSSCalcOperation::dump const):
(WebCore::CSSCalcExpressionNodeParser::parseCalc):
(WebCore::createCSS):
(WebCore::CSSCalcValue::dump const):
(WebCore::CSSCalcValue::create):

  • css/CSSCalculationValue.h:
  • platform/CalculationValue.cpp:

(WebCore::CalcExpressionNumber::operator== const):
(WebCore::CalcExpressionOperation::operator== const):
(WebCore::CalcExpressionLength::operator== const):
(WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength):
(WebCore::CalcExpressionBlendLength::operator== const):

  • platform/CalculationValue.h:

(WebCore::toCalcExpressionNumber): Deleted.
(WebCore::toCalcExpressionLength): Deleted.
(WebCore::toCalcExpressionOperation): Deleted.
(WebCore::toCalcExpressionBlendLength): Deleted.

  • platform/Logging.h:
9:51 AM Changeset in webkit [252969] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

[Web Animations] Rebaseline some WPT expectations
https://bugs.webkit.org/show_bug.cgi?id=204724

Unreviewed test gardening.

  • web-platform-tests/css/css-animations/event-order.tentative-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/style-change-events-expected.txt:
7:49 AM Changeset in webkit [252968] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Regression (r252893): loader/stateobjects/pushstate-size.html is crashing on mac debug
https://bugs.webkit.org/show_bug.cgi?id=204725

Unreviewed followup to r252893.

  • rendering/RenderElement.h:

Increase bitfield size to fit the enum.

7:27 AM Changeset in webkit [252967] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for word-spacing property
https://bugs.webkit.org/show_bug.cgi?id=204723
<rdar://problem/57541871>

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

1:22 AM Changeset in webkit [252966] by graouts@webkit.org
  • 9 edits
    1 add in trunk

[Web Animations] Implement Animation.commitStyles()
https://bugs.webkit.org/show_bug.cgi?id=202193
<rdar://problem/55697790>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

WPT test for Animation.commitStyles() now has 11 more PASS results.

  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:

Source/WebCore:

We implement the Animation.commitStyles() method following the spec to the letter. We fail a few tests still because we don't support animation
composite operations and because of rounding errors when blending opacity styles.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::ensureEffectsAreSorted): Remove the animation sorting logic since it's now made available in WebAnimationUtilities.h.

  • animation/KeyframeEffectStack.h:

(WebCore::KeyframeEffectStack::cssAnimationNames const): New function needed to call compareAnimationsByCompositeOrder() in WebAnimation::commitStyles().

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::commitStyles): Implement the spec steps as specified in https://drafts.csswg.org/web-animations-1/#commit-computed-styles. We use
a CSSStyleDeclaration to copy the content of the existing inline "style" attribute, add the animated values and then serialize it into the "style" attribute.
Even though it would have been more convenient to use StyledElement::setInlineStyleProperty(), we do this to ensure mutation observers get notified of such
a change.

  • animation/WebAnimationUtilities.cpp: Added.

(WebCore::compareAnimationsByCompositeOrder): Copied the animation sorting logic previously implemented in KeyframeEffectStack::ensureEffectsAreSorted().

  • animation/WebAnimationUtilities.h:

Nov 30, 2019:

10:10 PM Changeset in webkit [252965] by timothy_horton@apple.com
  • 53 edits in trunk/Source

Make CompositeOperator and BlendMode encodable
https://bugs.webkit.org/show_bug.cgi?id=204722

Reviewed by Eric Carlson.

Source/WebCore:

Make CompositeOperator an enum class, and fix the fallout.
Add EnumTraits for CompositeOperator and BlendMode, so that they can be encoded.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator CompositeOperator const):

  • dom/Document.cpp:

(WebCore::Document::compositeOperatorForBackgroundColor const):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::parseAttribute):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::State::State):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::isFullCanvasCompositeMode):
(WebCore::CanvasRenderingContext2DBase::fillInternal):
(WebCore::CanvasRenderingContext2DBase::strokeInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawImageFromRect):
(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):

  • inspector/InspectorOverlay.cpp:

(WebCore::drawOutlinedQuadWithClip):

  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::drawCrossfade):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsTypes.cpp:

(WebCore::parseCompositeAndBlendOperator):
(WebCore::compositeOperatorName):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/Image.cpp:

(WebCore::Image::fillWithSolidColor):

  • platform/graphics/ImagePaintingOptions.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurAndColorShadowBuffer):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawNativeImage):

  • platform/graphics/cairo/CairoOperations.h:
  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::toCairoCompositeOperator):

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::paintToCanvas):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::selectCGBlendMode):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):
(WebCore::FEBlend::externalRepresentation const):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp:

(Nicosia::PaintingEngineBasic::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::paintLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):

  • platform/graphics/win/Direct2DOperations.cpp:

(WebCore::Direct2D::State::setCompositeOperation):

  • platform/graphics/win/Direct2DOperations.h:
  • platform/graphics/win/ImageCGWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • platform/graphics/win/ImageCairoWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintMask):

  • rendering/InlineFlowBox.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintMaskImages):

  • rendering/RenderBox.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paintReplaced):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderLayerBacking.cpp:

(WebCore::supportsDirectlyCompositedBoxDecorations):

  • rendering/RenderTreeAsText.cpp:
  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::hasOpaqueImage const):

  • rendering/style/FillLayer.h:

(WebCore::FillLayer::initialFillComposite):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::draw):

Source/WebKit:

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::incorporateUpdate):

  • WebProcess/Plugins/PluginProxy.cpp:

(WebKit::PluginProxy::paint):
(WebKit::PluginProxy::update):

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::drawRect):

Source/WebKitLegacy/win:

  • FullscreenVideoController.cpp:

(FullscreenVideoController::draw):

  • WebView.cpp:

(WebView::paintWithDirect2D):
(WebView::paintIntoBackingStore):

8:20 PM Changeset in webkit [252964] by Ross Kirsling
  • 4 edits in trunk

test262-runner should dump YAML with correct encoding
https://bugs.webkit.org/show_bug.cgi?id=204493

Reviewed by Saam Barati.

JSTests:

  • test262/expectations.yaml:

Fix double-encoding of test failure output.

Tools:

Even though we spit out correctly-encoded output to the terminal, Perl's YAML module insists upon *re*-encoding
to UTF-8 when dumping to file. This works out in the end because an analogous double-decode occurs when loading
from file. Still, it's really annoying that expectations.yaml has garbled (i.e. double-encoded) text.

We shouldn't modify libraries directly, but we can copy-paste DumpFile/LoadFile into Runner.pm and tweak!

  • Scripts/test262/Runner.pm:

(DumpFile):
(LoadFile):
Add custom versions of DumpFile/LoadFile which do not execute binmode $OUT, ':utf8';.

5:09 PM Changeset in webkit [252963] by Alan Bujtas
  • 2 edits in trunk/Tools

[LFC] Expand tests coverage (2648 new tests -> 3980).

  • LayoutReloaded/misc/LFC-passing-tests.txt:
5:06 PM Changeset in webkit [252962] by timothy_horton@apple.com
  • 15 edits in trunk/Source

Reimplement some PlatformCALayer methods using GraphicsContext instead of CGContextRef
https://bugs.webkit.org/show_bug.cgi?id=204698

Reviewed by Sam Weinig.

Source/WebCore:

In order to make PlatformCALayer-level DisplayList recording possible,
reimplement a few methods in terms of WebCore::GraphicsContext instead
of CGContextRef directly. Namely, collectRectsToPaint, drawLayerContents,
and drawRepaintIndicator.

In the drawLayerContents case, there are operations (like setting the
AppKit global graphics context) that cannot be done without a platform
context. In those cases, we skip that operation if we don't have a
platform context.

Anything depending on this downstream will break and need to be
implemented a different way in the DisplayList case.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerPaintContents):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayer::collectRectsToPaint):
(WebCore::PlatformCALayer::drawLayerContents):
(WebCore::PlatformCALayerCocoa::enumerateRectsBeingDrawn):

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayer::collectRectsToPaint):

  • platform/graphics/mac/WebLayer.mm:

(-[WebLayer drawInContext:]):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):
(WebKit::RemoteLayerBackingStore::enumerateRectsBeingDrawn):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::enumerateRectsBeingDrawn):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
11:08 AM Changeset in webkit [252961] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Simplify CoreAudioCaptureSource suspension logic
https://bugs.webkit.org/show_bug.cgi?id=201720

Reviewed by Eric Carlson.

Instead of going through the source to suspend/resume the audio unit,
we directly go to the shared unit, which nows notifies the clients that they are muted or unmuted.

To simplify things, we no longer schedule tasks to resume/suspend/reconfigure.
All of these orders are started from the main thread synchronously.

No observable change of behavior.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::startProducingData):
(WebCore::BaseAudioSharedUnit::reconfigure):
(WebCore::BaseAudioSharedUnit::resume):
(WebCore::BaseAudioSharedUnit::suspend):

  • platform/mediastream/mac/BaseAudioSharedUnit.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSourceFactory::beginInterruption):
(WebCore::CoreAudioCaptureSourceFactory::endInterruption):
(WebCore::CoreAudioCaptureSourceFactory::scheduleReconfiguration):
(WebCore::CoreAudioCaptureSource::initializeToStartProducingData):
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::stopProducingData):
(WebCore::CoreAudioCaptureSource::settingsDidChange):
(WebCore::CoreAudioCaptureSource::scheduleReconfiguration): Deleted.
(WebCore::CoreAudioCaptureSource::beginInterruption): Deleted.
(WebCore::CoreAudioCaptureSource::endInterruption): Deleted.

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
11:07 AM Changeset in webkit [252960] by youenn@apple.com
  • 3 edits
    2 adds in trunk

Update RealtimeOutgoingAudioSourceCocoa::m_writeCount when sampleRate changes
https://bugs.webkit.org/show_bug.cgi?id=204606

Reviewed by Eric Carlson.

Source/WebCore:

Update m_writeCount to make sure our high/low buffer computation is done right.

Test: webrtc/audio-samplerate-change.html

  • platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:

(WebCore::RealtimeOutgoingAudioSourceCocoa::audioSamplesAvailable):

LayoutTests:

  • webrtc/audio-samplerate-change-expected.txt: Added.
  • webrtc/audio-samplerate-change.html: Added.
8:30 AM Changeset in webkit [252959] by Antti Koivisto
  • 6 edits
    2 adds in trunk/Source/WebCore

Move path implementation functions in LineLayoutTraversal to *Path classes
https://bugs.webkit.org/show_bug.cgi?id=204714

Reviewed by Sam Weinig.

Simplify LineLayoutTraversal and make it easier to extend.

  • Turn SimplePath and ComplexPath structs into classes
  • Move them to separate files
  • Make path implementation functions class members, called via generic lambdas
  • Instead of inheriting Box/TextBox to iterators, make it a member variable.
  • Move the path variant to Box, avoiding use of templates.
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderTreeAsText.cpp:

(WebCore::writeTextBox):

  • rendering/line/LineLayoutTraversal.cpp:

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::TextBoxIterator::ComplexPath::nextInlineTextBoxInTextOrder const): Deleted.

  • rendering/line/LineLayoutTraversal.h:

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::Box::Box):
(WebCore::LineLayoutTraversal::Box::rect const):
(WebCore::LineLayoutTraversal::Box::logicalRect const):
(WebCore::LineLayoutTraversal::Box::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::Box::dirOverride const):
(WebCore::LineLayoutTraversal::Box::isLineBreak const):
(WebCore::LineLayoutTraversal::TextBox::hasHyphen const):
(WebCore::LineLayoutTraversal::TextBox::TextBox):
(WebCore::LineLayoutTraversal::TextBox::text const):
(WebCore::LineLayoutTraversal::TextBox::localStartOffset const):
(WebCore::LineLayoutTraversal::TextBox::localEndOffset const):
(WebCore::LineLayoutTraversal::TextBox::length const):
(WebCore::LineLayoutTraversal::TextBox::isLastOnLine const):
(WebCore::LineLayoutTraversal::TextBox::isLast const):
(): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::rect const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::logicalRect const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::isLeftToRightDirection const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::dirOverride const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::isLineBreak const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::iterator const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::hasHyphen const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::text const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localStartOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localEndOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::length const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLastOnLine const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLast const): Deleted.

  • rendering/line/LineLayoutTraversalComplexPath.h: Added.

(WebCore::LineLayoutTraversal::ComplexPath::ComplexPath):
(WebCore::LineLayoutTraversal::ComplexPath::rect const):
(WebCore::LineLayoutTraversal::ComplexPath::logicalRect const):
(WebCore::LineLayoutTraversal::ComplexPath::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::ComplexPath::dirOverride const):
(WebCore::LineLayoutTraversal::ComplexPath::isLineBreak const):
(WebCore::LineLayoutTraversal::ComplexPath::hasHyphen const):
(WebCore::LineLayoutTraversal::ComplexPath::text const):
(WebCore::LineLayoutTraversal::ComplexPath::localStartOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::localEndOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::length const):
(WebCore::LineLayoutTraversal::ComplexPath::isLastOnLine const):
(WebCore::LineLayoutTraversal::ComplexPath::isLast const):
(WebCore::LineLayoutTraversal::ComplexPath::traverseNextTextBoxInVisualOrder):
(WebCore::LineLayoutTraversal::ComplexPath::traverseNextTextBoxInTextOrder):
(WebCore::LineLayoutTraversal::ComplexPath::operator== const):
(WebCore::LineLayoutTraversal::ComplexPath::atEnd const):
(WebCore::LineLayoutTraversal::ComplexPath::inlineTextBox const):
(WebCore::LineLayoutTraversal::ComplexPath::nextInlineTextBoxInTextOrder const):

  • rendering/line/LineLayoutTraversalSimplePath.h: Added.

(WebCore::LineLayoutTraversal::SimplePath::SimplePath):
(WebCore::LineLayoutTraversal::SimplePath::rect const):
(WebCore::LineLayoutTraversal::SimplePath::logicalRect const):
(WebCore::LineLayoutTraversal::SimplePath::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::SimplePath::dirOverride const):
(WebCore::LineLayoutTraversal::SimplePath::isLineBreak const):
(WebCore::LineLayoutTraversal::SimplePath::hasHyphen const):
(WebCore::LineLayoutTraversal::SimplePath::text const):
(WebCore::LineLayoutTraversal::SimplePath::localStartOffset const):
(WebCore::LineLayoutTraversal::SimplePath::localEndOffset const):
(WebCore::LineLayoutTraversal::SimplePath::length const):
(WebCore::LineLayoutTraversal::SimplePath::isLastOnLine const):
(WebCore::LineLayoutTraversal::SimplePath::isLast const):
(WebCore::LineLayoutTraversal::SimplePath::traverseNextTextBoxInVisualOrder):
(WebCore::LineLayoutTraversal::SimplePath::traverseNextTextBoxInTextOrder):
(WebCore::LineLayoutTraversal::SimplePath::operator== const):
(WebCore::LineLayoutTraversal::SimplePath::atEnd const):

7:16 AM Changeset in webkit [252958] by Alan Bujtas
  • 8 edits in trunk

[LFC][IFC] Add support for hyphenate-limit-lines
https://bugs.webkit.org/show_bug.cgi?id=204712
<rdar://problem/57536727>

Reviewed by Antti Koivisto.

Source/WebCore:

Now IFC (hyphenation)feature matches SLL.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::setHyphenationDisabled):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::LineLayoutContext):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
5:15 AM Changeset in webkit [252957] by graouts@webkit.org
  • 6 edits
    4 adds in trunk

[Web Animations] Forward-filling animations should not schedule updates while filling
https://bugs.webkit.org/show_bug.cgi?id=204697
<rdar://problem/57534005>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/no-scheduling-while-filling-accelerated.html

webanimations/no-scheduling-while-filling-non-accelerated.html

For two different reasons, we would continuously schedule updates for animations in their "after" phase, ie. when they would have "fill: forwards"
and be finished.

In the case of non-accelerated animations, that was because we would also schedule an immedate update in DocumentTimeline::scheduleNextTick() provided
we had relevant animations that weren't accelerated. But since animations in their "after" phase are still considered relevant, which means that they
would override the base style with an animated value, this caused the unnecessary scheduled updates.

To address this, we run WebAnimation::timeToNextTick() in DocumentTimeline::scheduleNextTick() for all relevant animations and we teach that function
to schedule an immediate update only during the "active" phase, and to schedule a timed update only in the "before" phase computing the delay until
the animation enters the "active" phase.

While performing this work, we found a couple of other issues that weren't apparent until we had this more efficient scheduling in place.

First, we would not allow any additional calls to DocumentTimeline::scheduleAnimationResolution() to actually schedule an update while we were in the
process of updating animations. While this wasn't a problem before because the mere presence of relevant animations would cause an upadte, we now had
to allow any animation changing timing properties as promises would resolve and events would be dispatched during the animation update to cause further
animation updates to be scheduled. So we moved the "m_animationResolutionScheduled" flag reset earlier in DocumentTimeline::updateAnimationsAndSendEvents()
before we actually run the animation update procedure.

Following that change, we also had to make sure that timing changes made through the evaluation of the pending play and pause tasks would _not_ cause
animations to be scheduled, which meant that an animation that became non-pending (ie. its first tick occured) would always schedule one immediate
animation update. So now we have an extra "silent" flag to WebAnimation::timingDidChange() which is only set to true when called from either
WebAnimation::runPendingPlayTask() or WebAnimation::runPendingPauseTask().

Finally, one existing test showed that calling KeyframeEffect::setKeyframes() while running animations didn't cause an animation update to be scheduled
since a call to WebAnimation::effectTimingDidChange() was lacking. This is now addressed.

As for accelerated animations, the extraneous animation scheduling occured because we would get in a state where we would record an "accelerated action"
to stop the accelerated animation but the accelerated animation had already completed and the renderer for the target element was no longer composited.
This meant that KeyframeEffect::applyPendingAcceleratedActions() would not perform any work and the pending accelerated action would remain in the
DocumentTimeline queue and cause an update to be scheduled to try again, endlessly.

To address that, we first check in KeyframeEffect::addPendingAcceleratedAction() if the recorded action differs from the last recorded action, avoiding
unnecessary work, and in KeyframeEffect::applyPendingAcceleratedActions(), if our last recorded action was "Stop" and the renderer was not composited,
we discard all pending accelerated actions.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setKeyframes):
(WebCore::KeyframeEffect::addPendingAcceleratedAction):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingDidChange):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::timeToNextTick const):

  • animation/WebAnimation.h:

LayoutTests:

Adding tests checking that we don't schedule animation updates while filling for accelerated and non-accelerated animations alike.

  • webanimations/no-scheduling-while-filling-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-accelerated.html: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated.html: Added.
4:32 AM Changeset in webkit [252956] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

MockAudioSharedUnit should reset its last render time on start/stop/reconfigure
https://bugs.webkit.org/show_bug.cgi?id=204600
<rdar://problem/57438874>

Reviewed by Eric Carlson.

MockAudioSharedUnit was not resetting its last render time on stop/start/reconfigure.
If stopping for a long time and then restarting, the unit would flood the audio pipe with lots of data
and confuse the pipe.
Remove some member variables inherited from MockRealtimeAudioSource which are no longer needed.

Covered by imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html being no longer flaky.

  • platform/mediastream/mac/MockAudioSharedUnit.h:
  • platform/mediastream/mac/MockAudioSharedUnit.mm:

(WebCore::MockAudioSharedUnit::reconfigureAudioUnit):
(WebCore::MockAudioSharedUnit::startInternal):

2:40 AM Changeset in webkit [252955] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, follow-up to r252938, now fixing the MSE/EME build

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

supportsKeySystem needs to be public because it's referenced from
the MSE MediaPlayerPrivate sub-class.

2:33 AM Changeset in webkit [252954] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, GTK LTS build fix after r252950.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

supportsKeySystem can't be ifdeffed.

12:15 AM Changeset in webkit [252953] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[EWS] Do not retry layout-tests build if the flaky test failures are also present in clean tree run
https://bugs.webkit.org/show_bug.cgi?id=204704

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeLayoutTestsResults.start):

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeLayoutTestsResults.test_flaky_and_inconsistent_failures_with_clean_tree_failures): Changed expected outcome to SUCCESS.
(TestAnalyzeLayoutTestsResults.test_flaky_and_consistent_failures_with_clean_tree_failures): Ditto.

Nov 29, 2019:

4:03 PM Changeset in webkit [252952] by Alan Bujtas
  • 4 edits in trunk

[LFC][IFC] Add support for hyphenate-limit-before and hyphenate-limit-after
https://bugs.webkit.org/show_bug.cgi?id=204710
<rdar://problem/57535210>

Reviewed by Antti Koivisto.

Source/WebCore:

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
2:17 PM Changeset in webkit [252951] by commit-queue@webkit.org
  • 6 edits
    4 deletes in trunk

Unreviewed, rolling out r252944.
https://bugs.webkit.org/show_bug.cgi?id=204709

Broke Windows Build (Requested by aakashja_ on #webkit).

Reverted changeset:

"[Web Animations] Forward-filling animations should not
schedule updates while filling"
https://bugs.webkit.org/show_bug.cgi?id=204697
https://trac.webkit.org/changeset/252944

12:27 PM Changeset in webkit [252950] by cturner@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer] MediaPlayerPrivateGStreamer style cleanups
https://bugs.webkit.org/show_bug.cgi?id=204617

Reviewed by Xabier Rodriguez-Calvar.

Follow-up commit to bug 204352 addressing style issues in the
existing player code. The main issues addressed are naming
violations, adding final to types not overridden and organizing
better the scope of names in the classes.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::prepareToPlay):
(WebCore::MediaPlayerPrivateGStreamer::play):
(WebCore::MediaPlayerPrivateGStreamer::pause):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::setRate):
(WebCore::MediaPlayerPrivateGStreamer::setPreservesPitch):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
(WebCore::MediaPlayerPrivateGStreamer::buffered const):
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
(WebCore::MediaPlayerPrivateGStreamer::totalBytes const):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::isMuted const):
(WebCore::MediaPlayerPrivateGStreamer::commitLoad):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::setMuted):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection):
(WebCore::MediaPlayerPrivateGStreamer::processTableOfContentsEntry):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::didEnd):
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::canSaveMediaData const):
(WebCore::MediaPlayerPrivateGStreamer::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::cancelRepaint):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamer::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamer::movieLoadType const):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::decodedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::droppedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::attemptToDecryptWithLocalInstance):
(WebCore::MediaPlayerPrivateGStreamer::setWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamer::initializeDebugCategory): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::sizeChanged): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::muted const): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
(WebCore::MediaPlayerPrivateGStreamer::mediaPlayer const): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::isLiveStream const): Deleted.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationMediaTime const):
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::maybeFinishSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::seeking const):
(WebCore::MediaPlayerPrivateGStreamerMSE::waitForSeekCompleted):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamerMSE::maxMediaTimeSeekable const):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:

(WebCore::MediaSourceClientGStreamerMSE::flush):

11:03 AM Changeset in webkit [252949] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Use default implementation for JSVALUE64 with GCC on unknown platform.
https://bugs.webkit.org/show_bug.cgi?id=204701

Building on ppc64le and s390x failed with
#error "Unknown architecture."
Use the default implementation as fallback in these cases.

Patch by Eike Rathke <erack@redhat.com> on 2019-11-29
Reviewed by Saam Barati.

  • heap/GCMemoryOperations.h:

(JSC::gcSafeMemcpy):
(JSC::gcSafeMemmove):
(JSC::gcSafeZeroMemory):

10:54 AM Changeset in webkit [252948] by Antti Koivisto
  • 8 edits in trunk/Tools

Add mechanism for enabling internal and experimental features from run-webkit-test command line
https://bugs.webkit.org/show_bug.cgi?id=204702

Reviewed by Antoine Quint.

Add --internal-feature and --experimental-feature flags to TestRunner and run-webkit-tests.
This is useful for running existing tests with different feature enabled without modifying
anything else. For example:

run-webkit-tests --internal-feature LayoutFormattingContextRenderTreeIntegrationEnabled

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/port/base.py:

(Port.internal_feature):
(Port):
(Port.experimental_feature):

  • Scripts/webkitpy/port/driver.py:

(Driver.cmd_line):

  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionExperimentalFeature):
(WTR::handleOptionInternalFeature):
(WTR::OptionsHandler::OptionsHandler):

  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
(WTR::TestController::testOptionsForTest const):

  • WebKitTestRunner/TestController.h:
10:34 AM Changeset in webkit [252947] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for simple hyphenation
https://bugs.webkit.org/show_bug.cgi?id=204706
<rdar://problem/57533803>

Reviewed by Antti Koivisto.

This is just -webkit-hyphens: auto, no limit-before/after/lines support yet.

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::split):

10:20 AM Changeset in webkit [252946] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add a unit-test to new EWS for scenario when there is flakiness with patch and also on clean tree
https://bugs.webkit.org/show_bug.cgi?id=204707
<rdar://problem/57533998>

Unreviewed unit-test.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeLayoutTestsResults.test_mildly_flaky_patch_with_some_tree_redness_and_flakiness):

10:15 AM Changeset in webkit [252945] by graouts@webkit.org
  • 4 edits in trunk/Source

[Web Animations] Enable WebAnimationsCSSIntegrationEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=204650
<rdar://problem/45562752>

Reviewed by Dean Jackson.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:
10:11 AM Changeset in webkit [252944] by graouts@webkit.org
  • 6 edits
    4 adds in trunk

[Web Animations] Forward-filling animations should not schedule updates while filling
https://bugs.webkit.org/show_bug.cgi?id=204697

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/no-scheduling-while-filling-accelerated.html

webanimations/no-scheduling-while-filling-non-accelerated.html

For two different reasons, we would continuously schedule updates for animations in their "after" phase, ie. when they would have "fill: forwards"
and be finished.

In the case of non-accelerated animations, that was because we would also schedule an immedate update in DocumentTimeline::scheduleNextTick() provided
we had relevant animations that weren't accelerated. But since animations in their "after" phase are still considered relevant, which means that they
would override the base style with an animated value, this caused the unnecessary scheduled updates.

To address this, we run WebAnimation::timeToNextTick() in DocumentTimeline::scheduleNextTick() for all relevant animations and we teach that function
to schedule an immediate update only during the "active" phase, and to schedule a timed update only in the "before" phase computing the delay until
the animation enters the "active" phase.

While performing this work, we found a couple of other issues that weren't apparent until we had this more efficient scheduling in place.

First, we would not allow any additional calls to DocumentTimeline::scheduleAnimationResolution() to actually schedule an update while we were in the
process of updating animations. While this wasn't a problem before because the mere presence of relevant animations would cause an upadte, we now had
to allow any animation changing timing properties as promises would resolve and events would be dispatched during the animation update to cause further
animation updates to be scheduled. So we moved the "m_animationResolutionScheduled" flag reset earlier in DocumentTimeline::updateAnimationsAndSendEvents()
before we actually run the animation update procedure.

Following that change, we also had to make sure that timing changes made through the evaluation of the pending play and pause tasks would _not_ cause
animations to be scheduled, which meant that an animation that became non-pending (ie. its first tick occured) would always schedule one immediate
animation update. So now we have an extra "silent" flag to WebAnimation::timingDidChange() which is only set to true when called from either
WebAnimation::runPendingPlayTask() or WebAnimation::runPendingPauseTask().

Finally, one existing test showed that calling KeyframeEffect::setKeyframes() while running animations didn't cause an animation update to be scheduled
since a call to WebAnimation::effectTimingDidChange() was lacking. This is now addressed.

As for accelerated animations, the extraneous animation scheduling occured because we would get in a state where we would record an "accelerated action"
to stop the accelerated animation but the accelerated animation had already completed and the renderer for the target element was no longer composited.
This meant that KeyframeEffect::applyPendingAcceleratedActions() would not perform any work and the pending accelerated action would remain in the
DocumentTimeline queue and cause an update to be scheduled to try again, endlessly.

To address that, we first check in KeyframeEffect::addPendingAcceleratedAction() if the recorded action differs from the last recorded action, avoiding
unnecessary work, and in KeyframeEffect::applyPendingAcceleratedActions(), if our last recorded action was "Stop" and the renderer was not composited,
we discard all pending accelerated actions.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setKeyframes):
(WebCore::KeyframeEffect::addPendingAcceleratedAction):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingDidChange):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::timeToNextTick const):

  • animation/WebAnimation.h:

LayoutTests:

Adding tests checking that we don't schedule animation updates while filling for accelerated and non-accelerated animations alike.

  • webanimations/no-scheduling-while-filling-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-accelerated.html: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated.html: Added.
10:09 AM Changeset in webkit [252943] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add a unit-test to old EWS for scenario when there is flakiness with patch and also on clean tree
https://bugs.webkit.org/show_bug.cgi?id=204707

Unreviewed unit-test.

  • Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
8:30 AM Changeset in webkit [252942] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

[LFC][IFC] Vector allocate LineBoxes and Display::Runs
https://bugs.webkit.org/show_bug.cgi?id=204699

Reviewed by Zalan Bujtas.

Also rename inlineRuns -> displayRuns to match the type.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/RenderBlockFlowLineLayout.cpp:

(WebCore::Layout::RenderBlockFlowLineLayout::layout):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
(WebCore::Layout::InlineFormattingContext::invalidateFormattingState):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::displayRuns const):
(WebCore::Layout::InlineFormattingState::displayRuns):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addDisplayRun):
(WebCore::Layout::InlineFormattingState::resetDisplayRuns):
(WebCore::Layout::InlineFormattingState::inlineRuns const): Deleted.
(WebCore::Layout::InlineFormattingState::inlineRuns): Deleted.
(WebCore::Layout::InlineFormattingState::addInlineRun): Deleted.
(WebCore::Layout::InlineFormattingState::resetInlineRuns): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

6:29 AM Changeset in webkit [252941] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Trim trailing uncommitted content when needed
https://bugs.webkit.org/show_bug.cgi?id=204655
<rdar://problem/57511053>

Reviewed by Antti Koivisto.

When we try to fit the trailing inline runs on the line, we have to make sure trimmable trailing whitespace content is taken into account.

<div style="float: left">text<span style="padding-right: 20px"> </span></div>
<- As we compute the content width of floating box using shrink to fit, we trim the trailing whitespace at the end and
the final width will include the following runs [text: 41px][container start: 0px][container end: 20px] -> 61px (it would be 65px with the whitespace content)
As we place the inline content and we reach the final trailing content [ ][container end], the line has only 20px space left, while the content is 24px long.
At this point we need to retry the available space check by taking both the line and the pending content's trimmable width into account.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::isAtContentBoundary):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::hasNonWhitespaceOrInlineBox const):
(WebCore::Layout::LineBreaker::Content::hasTextContentOnly const):
(WebCore::Layout::LineBreaker::Content::trailingTrimmableWidth const):

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::shouldPreserveTrailingContent):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::shouldPreserveTrailingWhitespace):

  • layout/inlineformatting/text/TextUtil.h:
6:20 AM Changeset in webkit [252940] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Move and rename LineLayoutContext::UncommittedContent
https://bugs.webkit.org/show_bug.cgi?id=204693
<rdar://problem/57523727>

Reviewed by Antti Koivisto.

LineBreaker::Content represents the amount of content we commit to line breaking at a time.
Normally it holds only one InlineItem e.g [text][ ][content] <- we submit 3 entries to line breaking, but
with (mostly)inline containers, it can hold a long list of InlineItems e.g
<span>1</span>2<span>3</span>4<span>5</span>6
[container start][1][container end][2][container start][3][container end][4][container start][5][container end][6]
<- this is one entry to submit.
This patch is also in preparation for fixing trailing trimmable content handling.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::Content::isAtContentBoundary):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::trim):

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::Content::runs):
(WebCore::Layout::LineBreaker::Content::runs const):
(WebCore::Layout::LineBreaker::Content::isEmpty const):
(WebCore::Layout::LineBreaker::Content::size const):
(WebCore::Layout::LineBreaker::Content::width const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::placeInlineItem):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):
(WebCore::Layout::LineLayoutContext::UncommittedContent::add): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::reset): Deleted.
(WebCore::Layout::LineLayoutContext::shouldProcessUncommittedContent const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::trim): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:

(WebCore::Layout::LineLayoutContext::UncommittedContent::runs): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::runs const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::isEmpty const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::size const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::width const): Deleted.

5:17 AM Changeset in webkit [252939] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Move jsc-i386 from old to new EWS
https://bugs.webkit.org/show_bug.cgi?id=204667

Patch by Paulo Matos <Paulo Matos> on 2019-11-29
Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):

  • QueueStatusServer/config/queues.py:
3:11 AM Changeset in webkit [252938] by Philippe Normand
  • 6 edits in trunk/Source/WebCore

Unreviewed, rolling out r252937.

broke GTK/WPE builds and most likely media track notification
support

Reverted changeset:

"[GStreamer] MediaPlayerPrivateGStreamer style cleanups"
https://bugs.webkit.org/show_bug.cgi?id=204617
https://trac.webkit.org/changeset/252937

2:24 AM Changeset in webkit [252937] by cturner@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer] MediaPlayerPrivateGStreamer style cleanups
https://bugs.webkit.org/show_bug.cgi?id=204617

Reviewed by Xabier Rodriguez-Calvar.

Follow-up commit to bug 204352 addressing style issues in the
existing player code. The main issues addressed are naming
violations, adding final to types not overridden and organizing
better the scope of names in the classes.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::prepareToPlay):
(WebCore::MediaPlayerPrivateGStreamer::play):
(WebCore::MediaPlayerPrivateGStreamer::pause):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::setRate):
(WebCore::MediaPlayerPrivateGStreamer::setPreservesPitch):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
(WebCore::MediaPlayerPrivateGStreamer::buffered const):
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
(WebCore::MediaPlayerPrivateGStreamer::totalBytes const):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::isMuted const):
(WebCore::MediaPlayerPrivateGStreamer::commitLoad):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::setMuted):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection):
(WebCore::MediaPlayerPrivateGStreamer::processTableOfContentsEntry):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::didEnd):
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::canSaveMediaData const):
(WebCore::MediaPlayerPrivateGStreamer::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::cancelRepaint):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamer::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamer::movieLoadType const):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::decodedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::droppedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::attemptToDecryptWithLocalInstance):
(WebCore::MediaPlayerPrivateGStreamer::setWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamer::initializeDebugCategory): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::sizeChanged): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::muted const): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
(WebCore::MediaPlayerPrivateGStreamer::mediaPlayer const): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::isLiveStream const): Deleted.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationMediaTime const):
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::maybeFinishSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::seeking const):
(WebCore::MediaPlayerPrivateGStreamerMSE::waitForSeekCompleted):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamerMSE::maxMediaTimeSeekable const):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:

(WebCore::MediaSourceClientGStreamerMSE::flush):

Nov 28, 2019:

10:53 PM Changeset in webkit [252936] by Fujii Hironori
  • 27 edits in trunk

Remove ENABLE_KEYBOARD_CODE_ATTRIBUTE and ENABLE_KEYBOARD_KEY_ATTRIBUTE macros
https://bugs.webkit.org/show_bug.cgi?id=204666

.:

Reviewed by Ross Kirsling and Don Olmstead.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Ross Kirsling and Don Olmstead.

No behavior change.

  • Configurations/FeatureDefines.xcconfig:
  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent):

  • dom/KeyboardEvent.h:
  • dom/KeyboardEvent.idl:
  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
(WebCore::PlatformKeyboardEvent::keyIdentifier const):
(WebCore::PlatformKeyboardEvent::key const):
(WebCore::PlatformKeyboardEvent::code const):

Source/WebCore/PAL:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

No behavior change.

  • Configurations/FeatureDefines.xcconfig:
  • Shared/WebEvent.h:

(WebKit::WebKeyboardEvent::unmodifiedText const):
(WebKit::WebKeyboardEvent::key const):
(WebKit::WebKeyboardEvent::code const):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):

  • Shared/WebKeyboardEvent.cpp:

(WebKit::WebKeyboardEvent::WebKeyboardEvent):
(WebKit::WebKeyboardEvent::encode const):
(WebKit::WebKeyboardEvent::decode):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::generateSyntheticEditingCommand):

Source/WebKitLegacy/mac:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Ross Kirsling and Don Olmstead.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Ross Kirsling and Don Olmstead.

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
10:27 PM Changeset in webkit [252935] by Simon Fraser
  • 13 edits
    2 adds in trunk

Element jumps to wrong position after perspective change on ancestor
https://bugs.webkit.org/show_bug.cgi?id=202505
<rdar://problem/55930710>

Reviewed by Antti Koivisto.
Source/WebCore:

This modifies the fix in r252879 to be better-performing and to avoid a new call site for updateLayerPositions*.

Style can change in a way that creates or destroys RenderLayers, but does not result in a layout; this can happen
with changes of properties like opacity or perspective. When this happens, something needs to trigger a call to
RenderLayer::updateLayerPositions() on the root of the changed subtree. This is best done after the style update,
to avoid multiple updateLayerPositions traversals.

Implement this by storing on RenderView the rootmost changed layer, and having FrameView::styleDidChange()
call updateLayerPositionsAfterStyleChange() if we're after a style change with no pending layout.

Test: compositing/geometry/layer-position-after-removing-perspective.html

  • page/FrameView.cpp:

(WebCore::FrameView::styleDidChange):

  • page/FrameView.h:
  • platform/ScrollView.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::didAttachChild):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::findCommonAncestor):
(WebCore::RenderLayer::commonAncestorWithLayer const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::createLayer):
(WebCore::RenderLayerModelObject::styleDidChange):

  • rendering/RenderView.cpp:

(WebCore::RenderView::layerChildrenChangedDuringStyleChange):
(WebCore::RenderView::takeStyleChangeLayerTreeMutationRoot):

  • rendering/RenderView.h:

LayoutTests:

  • compositing/geometry/layer-position-after-removing-perspective-expected.html: Added.
  • compositing/geometry/layer-position-after-removing-perspective.html: Added.
  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt: Rebaselined.
1:30 PM Changeset in webkit [252934] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 10)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
12:12 PM Changeset in webkit [252933] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Rename 'submit to new EWS' to 'Submit for EWS analysis'
https://bugs.webkit.org/show_bug.cgi?id=204692

Unreviewed minor fix.

  • BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
12:06 PM Changeset in webkit [252932] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Remove m_inlineRunToLineMap
https://bugs.webkit.org/show_bug.cgi?id=204688

Reviewed by Zalan Bujtas.

Add line index to Display::Run and use it to locate the line it is on.

This is 4-5% progression in PerformanceTests/Layout/line-layout-simple.html

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::lineIndex const):
(WebCore::Display::Run::Run):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addInlineRun):
(WebCore::Layout::InlineFormattingState::resetInlineRuns):

11:45 AM Changeset in webkit [252931] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Old EWS is showing 'Submit to old EWS' button on every patch
https://bugs.webkit.org/show_bug.cgi?id=204691

Unreviewed minor fix.

  • QueueStatusServer/handlers/statusbubble.py:

(StatusBubble.get): Disabled Submit to old EWS button since almost all the queues
have been removed from old EWS.

8:54 AM Changeset in webkit [252930] by Diego Pino Garcia
  • 2 edits in trunk/Tools

test262-runner ends with SIGPIPE signal
https://bugs.webkit.org/show_bug.cgi?id=194816

Reviewed by Carlos Alberto Lopez Perez.

  • Scripts/test262/Runner.pm:

(main):

8:26 AM Changeset in webkit [252929] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 9)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
8:06 AM Changeset in webkit [252928] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Vector allocate InlineItemRuns
https://bugs.webkit.org/show_bug.cgi?id=204680

Reviewed by Zalan Bujtas.

Reduce heap allocations during inline layout.

This is ~15% speedup in PerformanceTests/Layout/line-layout-simple.html with LFC-in-render-tree enabled.
With other improvements it makes LFC path faster than simple line layout in this test.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinousContent::ContinousContent):
(WebCore::Layout::LineBuilder::ContinousContent::append):
(WebCore::Layout::LineBuilder::ContinousContent::close):

Move to LineBuilder namespace.

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::formattingContext const):
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun):
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::InlineItemRun::layoutBox const): Deleted.
(WebCore::Layout::InlineItemRun::logicalRect const): Deleted.
(WebCore::Layout::InlineItemRun::textContext const): Deleted.
(WebCore::Layout::InlineItemRun::isText const): Deleted.
(WebCore::Layout::InlineItemRun::isBox const): Deleted.
(WebCore::Layout::InlineItemRun::isContainerStart const): Deleted.
(WebCore::Layout::InlineItemRun::isContainerEnd const): Deleted.
(WebCore::Layout::InlineItemRun::isForcedLineBreak const): Deleted.
(WebCore::Layout::InlineItemRun::type const): Deleted.
(WebCore::Layout::InlineItemRun::setIsCollapsed): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsed const): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsedToZeroAdvanceWidth const): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsible const): Deleted.
(WebCore::Layout::InlineItemRun::isWhitespace const): Deleted.
(WebCore::Layout::InlineItemRun::hasExpansionOpportunity const): Deleted.
(WebCore::Layout::InlineItemRun::InlineItemRun): Deleted.
(WebCore::Layout::InlineItemRun::setCollapsesToZeroAdvanceWidth): Deleted.

Move InlineItemRun to header in LineBuilder namespace so we can use directly in m_inlineItemRuns vector.

(WebCore::Layout::ContinousContent::canBeExpanded): Deleted.
(WebCore::Layout::ContinousContent::canBeMerged const): Deleted.
(WebCore::Layout::ContinousContent::ContinousContent): Deleted.
(WebCore::Layout::ContinousContent::append): Deleted.
(WebCore::Layout::ContinousContent::close): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::layoutBox const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalRect const):
(WebCore::Layout::LineBuilder::InlineItemRun::textContext const):
(WebCore::Layout::LineBuilder::InlineItemRun::isText const):
(WebCore::Layout::LineBuilder::InlineItemRun::isBox const):
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerStart const):
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerEnd const):
(WebCore::Layout::LineBuilder::InlineItemRun::isForcedLineBreak const):
(WebCore::Layout::LineBuilder::InlineItemRun::type const):
(WebCore::Layout::LineBuilder::InlineItemRun::setIsCollapsed):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsed const):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsedToZeroAdvanceWidth const):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsible const):
(WebCore::Layout::LineBuilder::InlineItemRun::isWhitespace const):
(WebCore::Layout::LineBuilder::InlineItemRun::hasExpansionOpportunity const):
(WebCore::Layout::LineBuilder::TrimmableContent::runIndexes):

Make TrimmableContent collect indexes to InlineItemRun vector instead of pointer.
We only ever append to the vector so the indexes stay valid for TrimmableContent lifetime.

(WebCore::Layout::LineBuilder::TrimmableContent::isEmpty const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):
(WebCore::Layout::LineBuilder::TrimmableContent::runs): Deleted.

8:03 AM Changeset in webkit [252927] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Cache integer font metrics for performance
https://bugs.webkit.org/show_bug.cgi?id=204668

Reviewed by Zalan Bujtas.

Line layout uses integer metrics and queries them a lot. Avoid repeated rounding.

This is >10% speedup in PerformanceTests/Layout/line-layout-simple.html with LFC.

  • platform/graphics/FontMetrics.h:

(WebCore::FontMetrics::floatAscent const):
(WebCore::FontMetrics::setAscent):
(WebCore::FontMetrics::floatDescent const):
(WebCore::FontMetrics::setDescent):
(WebCore::FontMetrics::floatLineGap const):
(WebCore::FontMetrics::setLineGap):
(WebCore::FontMetrics::floatLineSpacing const):
(WebCore::FontMetrics::setLineSpacing):
(WebCore::FontMetrics::hasCapHeight const):
(WebCore::FontMetrics::floatCapHeight const):
(WebCore::FontMetrics::setCapHeight):
(WebCore::FontMetrics::ascent const):
(WebCore::FontMetrics::descent const):
(WebCore::FontMetrics::lineGap const):
(WebCore::FontMetrics::lineSpacing const):
(WebCore::FontMetrics::capHeight const):
(WebCore::FontMetrics::reset):

8:03 AM Changeset in webkit [252926] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Removed ENABLED_QUEUES logic from ews-app
https://bugs.webkit.org/show_bug.cgi?id=204683

Unreviewed minor fix.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): Removed ENABLED_QUEUES.
(StatusBubble._build_bubbles_for_patch):
(StatusBubble._should_show_bubble_for_queue): Deleted.

7:43 AM Changeset in webkit [252925] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[ews] Enable Windows queue on new EWS
https://bugs.webkit.org/show_bug.cgi?id=204243

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Enabled windows queue bubble on new EWS.
  • BuildSlaveSupport/ews-build/config.json: Enabled the scheduler for windows queue. Removed the disabled Try_Userpass scheduler.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:

(BubbleQueueServer): Removed windows ews queue from bot-watcher's dashboard.

  • QueueStatusServer/config/queues.py: Removed windows queue from old EWS.
6:49 AM Changeset in webkit [252924] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Adjust the line's is-visually-empty status after trimming the trailing whitespace content
https://bugs.webkit.org/show_bug.cgi?id=204660
<rdar://problem/57513035>

Reviewed by Antti Koivisto.

We need to check if the line is still visually empty after trimming the trailing content.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::setIsConsideredEmpty):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendTextContent):

  • layout/inlineformatting/InlineLineBuilder.h:
6:44 AM Changeset in webkit [252923] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Re-introduce LineBuilder::isVisuallyNonEmpty function
https://bugs.webkit.org/show_bug.cgi?id=204658
<rdar://problem/57512248>

Reviewed by Antti Koivisto.

LineBuilder::isVisuallyNonEmpty() used to loop through the runs an check if the runs are visually empty or not.
This time it takes the run as the parameter and decides whether this particular run is visually empty or not.
This patch is in preparation for fixing the line's visually-empty state after trimming the trailing runs.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):

  • layout/inlineformatting/InlineLineBuilder.h:
6:34 AM Changeset in webkit [252922] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] adjustBaselineAndLineHeight should be called before resetting the line in quirk mode
https://bugs.webkit.org/show_bug.cgi?id=204662
<rdar://problem/57513178>

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):

6:24 AM Changeset in webkit [252921] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix LineLayoutContext::shouldProcessUncommittedContent logic
https://bugs.webkit.org/show_bug.cgi?id=204656
<rdar://problem/57511221>

Reviewed by Antti Koivisto.

Move the [text][text] and [ ][text] checks further down because we adjust the "lastUncomittedContent" by skipping [container start][container end] items.
(This was recently regressed at r252859)

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::shouldProcessUncommittedContent const):

6:22 AM Changeset in webkit [252920] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC] canUseSimplifiedTextMeasuring should check for FontCascade::Complex
https://bugs.webkit.org/show_bug.cgi?id=204663
<rdar://problem/57513642>

Reviewed by Antti Koivisto.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::canUseSimplifiedTextMeasuring):

4:57 AM Changeset in webkit [252919] by magomez@igalia.com
  • 3 edits
    17 adds in trunk/LayoutTests

Unreviewed GTK and WPE gardening after r252916.

  • platform/gtk/TestExpectations:
  • platform/gtk/css3/blending/svg-blend-hard-light-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/paths-data-18-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/paths-data-20-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-polygon-03-t-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/struct-dom-07-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/struct-svg-02-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/svgdom-over-01-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/absolute-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/relative-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/zero-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/closepath/segment-completing-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/error-handling/render-until-error-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/shapes/reftests/disabled-shapes-01-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/text/visualtests/text-inline-size-001-visual-expected.txt: Added.
  • platform/wpe/TestExpectations:
4:52 AM Changeset in webkit [252918] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[GStreamer] Convert GLVideoSink and WebKitWebSrc to WEBKIT_DEFINE_TYPE
https://bugs.webkit.org/show_bug.cgi?id=204674

Reviewed by Carlos Garcia Campos.

This is mostly a refactoring, simplifying the code-base a bit.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(webKitGLVideoSinkConstructed):
(webKitGLVideoSinkFinalize):
(webkit_gl_video_sink_class_init):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_class_init):
(webKitWebSrcConstructed):

2:08 AM Changeset in webkit [252917] by Philippe Normand
  • 10 edits
    2 adds in trunk

[GStreamer] Move GL video sink to its own GstBin sub-class
https://bugs.webkit.org/show_bug.cgi?id=204624

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

This reduces the MediaPlayerPrivate code-base and adds a good
separation of responsibility regarding GL video rendering. The
TextureCopier remains in the player because it's too specific.

  • platform/GStreamer.cmake:
  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: Added.

(webkit_gl_video_sink_init):
(webKitGLVideoSinkFinalize):
(ensureGstGLContext):
(requestGLContext):
(webKitGLVideoSinkChangeState):
(webkit_gl_video_sink_class_init):
(webKitGLVideoSinkSetMediaPlayerPrivate):
(webKitGLVideoSinkProbePlatform):

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.h: Added.
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

Tools:

  • Scripts/webkitpy/style/checker.py: White-list the new GLVideoSinkGStreamer GObject implementation.

Nov 27, 2019:

9:22 PM Changeset in webkit [252916] by Alan Bujtas
  • 2 edits in trunk/Tools

[LFC] Unreviewed test gardening.

  • LayoutReloaded/misc/LFC-passing-tests.txt: These tests were passing accidentally.
6:34 PM Changeset in webkit [252915] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Generate fewer InlineItems when new lines are not preserved
https://bugs.webkit.org/show_bug.cgi?id=204653
<rdar://problem/57510133>

Reviewed by Antti Koivisto.

This patch reduces the number of InlineItems by merging (non-preserved)new lines with neighboring whitespace characters.
[text\n\n text] -> [text][ ][text]

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::isWhitespaceCharacter):
(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

3:26 PM Changeset in webkit [252914] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 8)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
3:07 PM Changeset in webkit [252913] by Manuel Rego Casasnovas
  • 3 edits in trunk/Source/WebCore

Using char* instead of String for StyleProperties::getShorthandValue()
https://bugs.webkit.org/show_bug.cgi?id=204644

Reviewed by Darin Adler.

This is follow-up patch for r252901. We don't need to create a String object
just for the separator and can use char* instead.
This was suggested by Darin Adler in webkit.org/b/204508.

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getShorthandValue const):

  • css/StyleProperties.h:
1:41 PM Changeset in webkit [252912] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] Run layout on the root when InvalidationState is empty.
https://bugs.webkit.org/show_bug.cgi?id=204651
<rdar://problem/57509616>

Reviewed by Antti Koivisto.

InvalidationState captures style/tree mutation related changes. An empty InvalidationState indicates that the horizontal constraint changed
and we need to initiate a layout on the ICB (and the layout logic will propagate the damage down on the tree).

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layout):

  • layout/RenderBlockFlowLineLayout.cpp:

(WebCore::Layout::RenderBlockFlowLineLayout::layout):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::printLayoutTreeForLiveDocuments):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):

11:38 AM Changeset in webkit [252911] by graouts@webkit.org
  • 15 edits
    1 delete in trunk

REGRESSION(r252455): imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html fails on iOS and WK1
https://bugs.webkit.org/show_bug.cgi?id=204272
<rdar://problem/57253742>

Reviewed by Dean Jackson.

Source/WebCore:

Events for declarative animations are dispatched using a MainThreadGenericEventQueue which dispatches enqueued events asynchronously. When a declarative
animation would be canceled, AnimationTimeline::cancelDeclarativeAnimation() would be called and would enqueue a "transitioncancel" or "animationcancel"
event (depending on the animation type) by virtue of calling DeclarativeAnimation::cancelFromStyle(), and would also call AnimationTimeline::removeAnimation()
right after. However, calling AnimationTimeline::removeAnimation() could have the side effect of removing the last reference to the DeclarativeAnimation
object, which would destroy its attached MainThreadGenericEventQueue before it had the time to dispatch the queued "transitioncancel" or "animationcancel"
event.

The call to AnimationTimeline::removeAnimation() in AnimationTimeline::cancelDeclarativeAnimation() is actually unnecessary. Simply canceling the animation
via DeclarativeAnimation::cancelFromStyle() will end up calling AnimationTimeline::removeAnimation() the next time animations are updated, which will leave
time for the cancel events to be dispatched. So all we need to do is remove AnimationTimeline::cancelDeclarativeAnimation() and replace its call sites with
simple calls to DeclarativeAnimation::cancelFromStyle().

Making this change broke a test however: imported/w3c/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html. We actually passed that
test by chance without implementing the feature required to make it work. We now implement the correct way to track a global position for an animation by
only setting one for declarative animations once they are disassociated with their owning element and have a non-idle play state.

And a few other tests broke: animations/animation-shorthand-name-order.html, imported/w3c/web-platform-tests/css/css-animations/animationevent-types.html
and webanimations/css-animations.html. The reason for those tests being broken was that not calling AnimationTimeline::removeAnimation() instantly as CSS
Animations were canceled also meant that the KeyframeEffectStack for the targeted element wasn't updated. To solve this, we added the animationTimingDidChange()
method on KeyframeEffect which is called whenever timing on the owning Animation changes, so for instance when cancel() is called as we cancel a CSS
Animation. That way we ensure we add and remove KeyframeEffect instances from the KeyframeEffectStack as the animation becomes relevant, which is now
an added condition checked by KeyframeEffectStack::addEffect().

Finally, this revealed an issue in KeyframeEffectStack::ensureEffectsAreSorted() where we would consider CSSTransition and CSSAnimation objects to be
representative of a CSS Transition or CSS Animation even after the relationship with their owning element had been severed. We now correctly check that
relationship is intact and otherwise consider those animations just like any other animation.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::animationTimingDidChange):
(WebCore::AnimationTimeline::updateGlobalPosition):
(WebCore::AnimationTimeline::removeDeclarativeAnimationFromListsForOwningElement):
(WebCore::AnimationTimeline::updateCSSAnimationsForElement):
(WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty):
(WebCore::AnimationTimeline::updateCSSTransitionsForElement):
(WebCore::AnimationTimeline::cancelDeclarativeAnimation): Deleted.

  • animation/AnimationTimeline.h:
  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::syncPropertiesWithBackingAnimation):

  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::setTimingProperties):

  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::canHaveGlobalPosition):

  • animation/DeclarativeAnimation.h:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::getAnimations const):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::animationTimelineDidChange):
(WebCore::KeyframeEffect::animationTimingDidChange):
(WebCore::KeyframeEffect::updateEffectStackMembership):
(WebCore::KeyframeEffect::setAnimation):
(WebCore::KeyframeEffect::setTarget):

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::addEffect):
(WebCore::KeyframeEffectStack::ensureEffectsAreSorted):

  • animation/KeyframeEffectStack.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingDidChange):

  • animation/WebAnimation.h:

(WebCore::WebAnimation::canHaveGlobalPosition):

LayoutTests:

Removing this specific expectation for WK1 since it now behaves just like the other configurations.

  • platform/mac-wk1/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements-expected.txt: Removed.
11:20 AM Changeset in webkit [252910] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 7)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
10:59 AM Changeset in webkit [252909] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Enable GPU switching with ANGLE
https://bugs.webkit.org/show_bug.cgi?id=203916

This enables the same GPU switching code that we use with OpenGL on ANGLE
contexts. ANGLE contexts can now be switched to the high power GPU.

Patch by James Darpinian <James Darpinian> on 2019-11-27
Reviewed by Dean Jackson.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/GraphicsContext3DManager.cpp:

(WebCore::GraphicsContext3DManager::updateAllContexts):

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::setGPUByRegistryID):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::updateCGLContext):
(WebCore::GraphicsContext3D::screenDidChange):

9:53 AM Changeset in webkit [252908] by Philippe Normand
  • 2 edits in trunk/Source/WebKit

[GTK][WebInspector] Use CString to store exported data
https://bugs.webkit.org/show_bug.cgi?id=204623

Reviewed by Carlos Garcia Campos.

  • UIProcess/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformSave): Use a CString for copy-on-write assignment.

9:11 AM Changeset in webkit [252907] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Render tree] PerformanceTests/Layout/line-layout-simple.html does not update properly with LFC enabled
https://bugs.webkit.org/show_bug.cgi?id=204646

Reviewed by Zalan Bujtas.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::invalidateLineLayoutPath):

Destroy LFC layout here, for now.

9:01 AM Changeset in webkit [252906] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][Render tree] RenderBlockFlow::ensureLineBoxes should work with lfc layout
https://bugs.webkit.org/show_bug.cgi?id=204633

Reviewed by Zalan Bujtas.

We need to be able to switch to linebox layout when needed.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::deleteLines):
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
(WebCore::RenderBlockFlow::ensureLineBoxes):

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::hasLineLayout const):

Also switch to using WTF::Monostate as empty state.

8:54 AM Changeset in webkit [252905] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC] Make strings safe
https://bugs.webkit.org/show_bug.cgi?id=204645

Reviewed by Zalan Bujtas.

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::content const):

  • Use String instead of StringView so the underlying StringImpl gets reffed.
  • Make it point the full content string instead of the current range so we don't create unncessary short strings.
  • Construct StringView on fly based on start/end.

(WebCore::Display::Run::setTextContext):
(WebCore::Display::Run::textContext const):
(WebCore::Display::Run::TextContext::expand):
(WebCore::Display::Run::textContext): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::InlineItemRun::textContext const):
(WebCore::Layout::ContinousContent::close):
(WebCore::Layout::LineBuilder::appendTextContent):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::Run::textContext const):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::textContext const):

Use Optional<TextContext> since it is small

  • layout/layouttree/LayoutContainer.cpp:

(WebCore::Layout::Container::Container):

  • layout/layouttree/TextContext.h:

Use String instead of StringView so the underlying StringImpl gets reffed.

6:18 AM WPE/Releasing edited by alex
(diff)
6:03 AM Changeset in webkit [252904] by alex
  • 1 copy in releases/WPE WebKit/webkit-2.27.3

WPE Webkit 2.27.3

4:50 AM Changeset in webkit [252903] by Nikolas Zimmermann
  • 2 edits in trunk/LayoutTests

Update test expectations for GTK port

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
4:48 AM Changeset in webkit [252902] by alex
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.3 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.27.3.
4:44 AM Changeset in webkit [252901] by Manuel Rego Casasnovas
  • 8 edits in trunk

[css-grid] Serialization of grid-area, grid-row and grid-column should include "/" separator
https://bugs.webkit.org/show_bug.cgi?id=204508

Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

After this patch several test cases are passing.
There are still failures as the serialization is still not the right one in all the cases,
but this makes WebKit behave like Chromium for these shorthands.

  • web-platform-tests/css/css-grid/grid-layout-properties-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-area-valid-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-shorthand-valid-expected.txt:
  • web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid-expected.txt:

Source/WebCore:

Just use "/" separator instead of a white space when serializing the grid shorthands.
There are still failures because serialization of grid shorthands still needs some extra work
(see webkit.org/b/204611), however this change puts WebKit in the same status than Chromium
regarding this topic.

Several WPT test cases are passing thanks to this change.

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::getGridShorthandValue const):
(WebCore::StyleProperties::getShorthandValue const):

  • css/StyleProperties.h:
4:24 AM Changeset in webkit [252900] by Nikolas Zimmermann
  • 3 edits in trunk/LayoutTests

Update test expectations for GTK/WPE ports

Unreviewed test gardening.

Get rid of outdated expectations referring to not-existing tests, remove duplicates, etc.
Mark Gtk tests as passing that are reported by the bots to pas.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
4:05 AM Changeset in webkit [252899] by Nikolas Zimmermann
  • 2 edits in trunk/LayoutTests

Update test expectations for WPE port

Unreviewed test gardening.

Get rid of outdated expectations referring to not-existing tests, remove duplicates, etc.

  • platform/wpe/TestExpectations:
2:19 AM Changeset in webkit [252898] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK] WebDriver: moving toplevel windows is not supported under wayland
https://bugs.webkit.org/show_bug.cgi?id=204614

Reviewed by Alejandro G. Castro.

So we can stop trying and simply ignore the requests to move the window.

  • UIProcess/API/glib/WebKitUIClient.cpp:

(UIClient::windowConfigureEventCallback): Ensure we only move or resize when actually required and reduce the
time we wait for configure events to 200ms (1 second was too long).

12:55 AM Changeset in webkit [252897] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Protect ServiceWorkerThreadProxy while being stopped
https://bugs.webkit.org/show_bug.cgi?id=204610
<rdar://problem/57476332>

Reviewed by Chris Dumez.

Reuse stop implementation in terminateWorker for stopAllServiceWorkers.
Move the worker map value from RefPtr to Ref.
Covered by existing tests no longer crashing.

  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::terminateWorker):
(WebCore::SWContextManager::stopWorker):
(WebCore::SWContextManager::forEachServiceWorkerThread):
(WebCore::SWContextManager::stopAllServiceWorkers):

  • workers/service/context/SWContextManager.h:
Note: See TracTimeline for information about the timeline view.