Timeline
Dec 1, 2019:
- 10:44 PM Changeset in webkit [252978] by
-
- 7 edits5 copies3 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
-
- 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
-
- 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
-
- 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 duringmakeHostFunctionCall, the caller frame slot
was being clobberred bycallGenericTypedArrayViewexecution,
resulting in a corrupted call frame stack. This patch is adjusting
this convention into ThunkGenerator and onmakeHostFunctionCall.
- jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
- llint/LowLevelInterpreter32_64.asm:
- 6:54 PM Changeset in webkit [252974] by
-
- 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
thisGPRandpropertyGPRat se same time,
we created a newunionto sharethisTagGPRandpropertyTagGPR,
matching the approach we have forJITInlineCacheGenerator::patch.u.
(JSC::StructureStubInfo::propertyRegs const):
(JSC::StructureStubInfo::baseRegs const):
To simplify scratch register allocation, we added
baseRegs()and
propertyRegs()toStructureStubInfo, 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 9 edits1 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
-
- 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
-
- 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 executebinmode $OUT, ':utf8';.
- 5:09 PM Changeset in webkit [252963] by
-
- 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
-
- 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
-
- 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
-
- 3 edits2 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
-
- 6 edits2 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
-
- 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
-
- 6 edits4 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
-
- 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
-
- 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
-
- 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
-
- 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.