Timeline
Nov 15, 2020:
- 8:53 PM Changeset in webkit [269836] by
-
- 2 edits in trunk/Source/WebCore
[LFC][Integration] Disable modern line layout for fieldset children.
https://bugs.webkit.org/show_bug.cgi?id=218963
Reviewed by Sam Weinig.
Fieldsets don't follow the standard CSS box model. They require special handling.
- layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::canUseForChild):
- 5:15 PM Changeset in webkit [269835] by
-
- 5 edits in trunk/Source/WebCore
Minor RenderStyle boxShadow cleanup
https://bugs.webkit.org/show_bug.cgi?id=218952
Reviewed by Sam Weinig.
Rename getBoxShadowExtent() to boxShadowExtent() and have it return a LayoutBoxExtent.
Make shadow-related functions static that can be, and private that can be.
- rendering/RenderBox.cpp:
(WebCore::RenderBox::applyVisualEffectOverflow const):
- rendering/RenderElement.cpp:
(WebCore::RenderElement::repaintAfterLayoutIfNeeded):
- rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::shadowExtent):
(WebCore::RenderStyle::shadowInsetExtent):
(WebCore::RenderStyle::getShadowHorizontalExtent):
(WebCore::RenderStyle::getShadowVerticalExtent):
(WebCore::RenderStyle::getShadowExtent const): Deleted.
(WebCore::RenderStyle::getShadowInsetExtent const): Deleted.
(WebCore::RenderStyle::getShadowHorizontalExtent const): Deleted.
(WebCore::RenderStyle::getShadowVerticalExtent const): Deleted.
- rendering/style/RenderStyle.h:
(WebCore::RenderStyle::boxShadowExtent const):
(WebCore::RenderStyle::boxShadowInsetExtent const):
(WebCore::RenderStyle::getBoxShadowExtent const): Deleted.
(WebCore::RenderStyle::getBoxShadowInsetExtent const): Deleted.
- 4:33 PM Changeset in webkit [269834] by
-
- 1 edit1 delete in trunk/LayoutTests
Remove and re-add fast/forms/selection-direction.html without CRs
https://bugs.webkit.org/show_bug.cgi?id=218966
Reviewed by Darin Adler.
- fast/forms/selection-direction.html: Removed.
Temporarily remove test. Will add back without CRs in next commit.
- 1:03 PM Changeset in webkit [269833] by
-
- 2 edits in trunk/Source/WebCore
Fix for infinite recursion crash in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=218961
Reviewed by Chris Fleizach.
Covered by existing tests.
[WebAccessibilityObjectWrapper attachmentView] can cause the
initialization of a new AXIsolatedObject which in turn can invoke
indirectly AccessibilityObject::accessibilityIgnoreAttachment, thus
creating an infinite recursion. This change avoids this problem and
makes this method more efficient even in those cases where there was no
infinite recursion.
- accessibility/mac/AccessibilityObjectMac.mm:
(WebCore::AccessibilityObject::accessibilityIgnoreAttachment const):
- 11:58 AM Changeset in webkit [269832] by
-
- 7 edits in trunk
[JSC] Wasm should get byte length from source typed array
https://bugs.webkit.org/show_bug.cgi?id=218955
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
- web-platform-tests/wasm/jsapi/constructor/validate.any-expected.txt:
- web-platform-tests/wasm/jsapi/constructor/validate.any.worker-expected.txt:
Source/JavaScriptCore:
WebAssembly's module source should be read with byteLength instead of length of typed-array.
- runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::byteLength const):
(JSC::JSArrayBufferView::slowDownAndWasteMemory):
- runtime/JSArrayBufferView.h:
- wasm/js/JSWebAssemblyHelpers.h:
(JSC::getWasmBufferFromValue):
- 10:55 AM Changeset in webkit [269831] by
-
- 26 edits1 move4 adds9 deletes in trunk/JSTests
[JSC] Update wasm spec tests
https://bugs.webkit.org/show_bug.cgi?id=218940
Patch by Sergey Rubanov <Sergey Rubanov> on 2020-11-15
Reviewed by Yusuke Suzuki.
Spec test commit revision number: 5475b7015684a07ba69762f8438e3bcff2647686
- wasm.yaml:
- wasm/spec-tests/address.wast.js:
- wasm/spec-tests/binary-leb128.wast.js:
- wasm/spec-tests/binary.wast.js:
- wasm/spec-tests/block.wast.js:
- wasm/spec-tests/br.wast.js:
- wasm/spec-tests/break-drop.wast.js: Removed.
- wasm/spec-tests/call.wast.js:
- wasm/spec-tests/call_indirect.wast.js:
- wasm/spec-tests/const.wast.js:
- wasm/spec-tests/conversions.wast.js:
- wasm/spec-tests/custom_section.wast.js: Removed.
- wasm/spec-tests/data.wast.js:
- wasm/spec-tests/f32.wast.js:
- wasm/spec-tests/f64.wast.js:
- wasm/spec-tests/fac.wast.js:
- wasm/spec-tests/float_exprs.wast.js:
- wasm/spec-tests/float_misc.wast.js:
- wasm/spec-tests/func.wast.js:
- wasm/spec-tests/get_local.wast.js: Removed.
- wasm/spec-tests/global.wast.js: Renamed from JSTests/wasm/spec-tests/globals.wast.js.
- wasm/spec-tests/harness/async_index.js: Added.
(let.testNum):
(uniqueTest):
(assertThrows):
(binary):
(module):
(assert_invalid):
(instance):
(exports):
(reinitializeRegistry.get promise_test):
(reinitializeRegistry):
(catch):
(assert_exhaustion):
(get const):
- wasm/spec-tests/harness/sync_index.js: Added.
(let.testNum):
(assertThrows):
(_assert):
(ValueResult):
(ErrorResult):
(Result.prototype.isError):
(reinitializeRegistry.let.handler.get return):
(binary):
(module):
- wasm/spec-tests/i32.wast.js:
- wasm/spec-tests/i64.wast.js:
- wasm/spec-tests/if.wast.js:
- wasm/spec-tests/imports.wast.js:
- wasm/spec-tests/jsapi.js: Removed.
- wasm/spec-tests/loop.wast.js:
- wasm/spec-tests/memory.wast.js:
- wasm/spec-tests/resizing.wast.js: Removed.
- wasm/spec-tests/set_local.wast.js: Removed.
- wasm/spec-tests/stack.wast.js:
- wasm/spec-tests/store_retval.wast.js: Removed.
- wasm/spec-tests/table.wast.js: Added.
- wasm/spec-tests/tee_local.wast.js: Removed.
- wasm/spec-tests/type.wast.js:
- wasm/spec-tests/typecheck.wast.js: Removed.
- 9:59 AM Changeset in webkit [269830] by
-
- 18 edits4 copies7 adds in trunk
Add a WebRTC SFrame transform
https://bugs.webkit.org/show_bug.cgi?id=218752
Reviewed by Eric Carlson.
Source/WebCore:
Introduce a RTCRtpSFrameTransform that implements the SFrame format.
RTCRtpSFrameTransform is a RTCRtpTransform that can be set to RTCRtp sender and receiver objects.
API supports setting encryption key.
Minor refactoring to reuse WebCrypto routines for encryption/decryption.
Test: webrtc/audio-sframe.html
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Modules/mediastream/RTCRtpSFrameTransform.cpp: Added.
(WebCore::RTCRtpSFrameTransform::RTCRtpSFrameTransform):
(WebCore::RTCRtpSFrameTransform::~RTCRtpSFrameTransform):
(WebCore::RTCRtpSFrameTransform::setEncryptionKey):
(WebCore::RTCRtpSFrameTransform::initializeTransformer):
(WebCore::RTCRtpSFrameTransform::initializeBackendForReceiver):
(WebCore::RTCRtpSFrameTransform::initializeBackendForSender):
(WebCore::RTCRtpSFrameTransform::willClearBackend):
- Modules/mediastream/RTCRtpSFrameTransform.h: Added.
- Modules/mediastream/RTCRtpSFrameTransform.idl: Added.
- Modules/mediastream/RTCRtpSFrameTransformer.cpp: Added.
(WebCore::writeUInt64):
(WebCore::lengthOfUInt64):
(WebCore::computeFirstHeaderByte):
(WebCore::computeIV):
(WebCore::parseSFrameHeader):
(WebCore::RTCRtpSFrameTransformer::create):
(WebCore::RTCRtpSFrameTransformer::RTCRtpSFrameTransformer):
(WebCore::RTCRtpSFrameTransformer::~RTCRtpSFrameTransformer):
(WebCore::RTCRtpSFrameTransformer::setEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):
(WebCore::RTCRtpSFrameTransformer::encryptFrame):
(WebCore::RTCRtpSFrameTransformer::transform):
(WebCore::RTCRtpSFrameTransformer::computeSaltKey):
(WebCore::RTCRtpSFrameTransformer::computeAuthenticationKey):
(WebCore::RTCRtpSFrameTransformer::computeEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptData):
(WebCore::RTCRtpSFrameTransformer::encryptData):
(WebCore::RTCRtpSFrameTransformer::computeEncryptedDataSignature):
- Modules/mediastream/RTCRtpSFrameTransformer.h: Added.
(WebCore::RTCRtpSFrameTransformer::setIsSending):
(WebCore::RTCRtpSFrameTransformer::setIsProcessingAudio):
- Modules/mediastream/RTCRtpSFrameTransformerCocoa.cpp: Added.
(WebCore::deriveHDKFSHA256Bits):
(WebCore::transformAES_CTR):
(WebCore::RTCRtpSFrameTransformer::computeSaltKey):
(WebCore::RTCRtpSFrameTransformer::computeAuthenticationKey):
(WebCore::RTCRtpSFrameTransformer::computeEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptData):
(WebCore::RTCRtpSFrameTransformer::encryptData):
(WebCore::RTCRtpSFrameTransformer::computeEncryptedDataSignature):
- Sources.txt:
- SourcesCocoa.txt:
- WebCore.xcodeproj/project.pbxproj:
- WebCore.xcodeproj/project.pbxproj:
- crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:
(WebCore::CryptoAlgorithmAES_CTR::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):
(WebCore::transformAES_CTR): Deleted.
- crypto/mac/CryptoAlgorithmHKDFMac.cpp:
(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):
- crypto/mac/CryptoUtilitiesCocoa.cpp: Added.
(WebCore::transformAES_CTR):
(WebCore::deriveHDKFSHA256Bits):
- crypto/mac/CryptoUtilitiesCocoa.h: Added.
- bindings/js/WebCoreBuiltinNames.h:
Tools:
Add unit tests that validate SFrame generation and parsing.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebCore/RTCRtpSFrameTransformerTests.cpp: Added.
(TestWebKitAPI::getRawKey):
(TestWebKitAPI::createVideoTransformer):
(TestWebKitAPI::checkVectorsAreEqual):
(TestWebKitAPI::TEST):
LayoutTests:
- webrtc/audio-sframe-expected.txt: Added.
- webrtc/audio-sframe.html: Added.
- 9:47 AM Changeset in webkit [269829] by
-
- 3 edits in trunk/Source/WebCore
AudioSampleDataSource::pullSamplesInternal does not need to pass its sampleCount parameter as in/out
https://bugs.webkit.org/show_bug.cgi?id=218899
Reviewed by Eric Carlson.
pullSamplesInternal sets sampleCount to zero in some cases where pullSamplesInternal returns false.
pullSamplesInternal callers do not use the sampleCount parameter if pullSamplesInternal returns false.
Pass sampleCount by value to clarify the behavior and remove setting sampleCount to zero in pullSamplesInternal return false case.
No change of behavior.
- platform/audio/cocoa/AudioSampleDataSource.h:
- platform/audio/cocoa/AudioSampleDataSource.mm:
(WebCore::AudioSampleDataSource::pullSamplesInternal):
- 8:03 AM Changeset in webkit [269828] by
-
- 2 edits in trunk/Source/WebCore
"Typo" in r269821 (by std::numeric_limits<>::min I really meant std::numeric_limits<>::lowest (got tricked by the floating-point type behavior))
Unreviewed.
- layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndalignInlineLevelBoxesVertically):
- 7:38 AM Changeset in webkit [269827] by
-
- 7 edits2 moves1 add in trunk
[GStreamer] WebAudio to MediaStream support
https://bugs.webkit.org/show_bug.cgi?id=218335
Reviewed by Xabier Rodriguez-Calvar.
Source/WebCore:
Provide audio samples coming from the WebAudio bus to the MediaStreamAudioSource node, using
GStreamer. This patch also moves a couple files from platform/mediastream to platform/audio,
because this is where the virtual parent classes are defined.
- Modules/webaudio/MediaStreamAudioSource.cpp:
- Modules/webaudio/MediaStreamAudioSource.h:
- Modules/webaudio/MediaStreamAudioSourceGStreamer.cpp: Added.
(WebCore::copyBusData):
(WebCore::MediaStreamAudioSource::consumeAudio):
- platform/GStreamer.cmake:
- platform/audio/gstreamer/GStreamerAudioData.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioData.h.
(isType):
- platform/audio/gstreamer/GStreamerAudioStreamDescription.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioStreamDescription.h.
- platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):
LayoutTests:
- platform/gtk/TestExpectations: webrtc/peer-connection-createMediaStreamDestination.html is now passing.
- 6:25 AM Changeset in webkit [269826] by
-
- 2 edits in trunk/Source/WebCore
[LFC] Do not use RenderStyle's logical margin API
https://bugs.webkit.org/show_bug.cgi?id=218948
Reviewed by Antti Koivisto.
https://www.w3.org/TR/css-writing-modes-4/#logical-direction-layout
"Flow-relative directions are calculated with respect to the writing mode of the containing block of the box
and used to abstract layout rules related to the box properties (margins, borders, padding)
and any properties related to positioning the box within its containing block
(float, clear, top, bottom, left, right, caption-side).
For inline-level boxes, the writing mode of the parent box is used instead."
RenderStyle::marginStart/End/Before/After flips these values based on the box's own writing mode.
- layout/FormattingContextGeometry.cpp:
(WebCore::Layout::usedWritingMode):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
- 6:23 AM Changeset in webkit [269825] by
-
- 4 edits in trunk/Source/WebCore
[LFC][Geometry] Add support for horizontal/vertical scrollbar spacing
https://bugs.webkit.org/show_bug.cgi?id=218950
Reviewed by Antti Koivisto.
Let's make room for visible scrollbars between the border and the padding box.
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):
- layout/layouttree/LayoutBoxGeometry.cpp:
(WebCore::Layout::BoxGeometry::BoxGeometry):
(WebCore::Layout::BoxGeometry::paddingBox const):
- layout/layouttree/LayoutBoxGeometry.h:
(WebCore::Layout::BoxGeometry::borderBoxHeight const):
(WebCore::Layout::BoxGeometry::borderBoxWidth const):
(WebCore::Layout::BoxGeometry::verticalScrollbarWidth const):
(WebCore::Layout::BoxGeometry::horizontalScrollbarHeight const):
(WebCore::Layout::BoxGeometry::setVerticalScrollbarWidth):
(WebCore::Layout::BoxGeometry::setHorizontalScrollbarHeight):
- 1:30 AM Changeset in webkit [269824] by
-
- 27 edits in trunk/Source
Initial implementation of DOM rendering via the GPU process
https://bugs.webkit.org/show_bug.cgi?id=218928
Reviewed by Simon Fraser.
Source/WebCore:
No new tests; will be covered by all existing DOM rendering tests in GPU process mode.
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/ConcreteImageBuffer.h:
- platform/graphics/ImageBuffer.h:
- platform/graphics/ImageBufferBackend.h:
(WebCore::ImageBufferBackend::isInUse const):
(WebCore::ImageBufferBackend::releaseGraphicsContext):
(WebCore::ImageBufferBackend::setVolatile):
(WebCore::ImageBufferBackend::releaseBufferToPool):
(WebCore::ImageBufferBackend::createFlusher):
- platform/graphics/cg/IOSurfacePool.cpp:
(WebCore::IOSurfacePool::takeSurface):
(WebCore::IOSurfacePool::markOlderSurfacesPurgeable):
- platform/graphics/cg/ImageBufferCGBackend.cpp:
(WebCore::ThreadSafeImageBufferFlusherCG::ThreadSafeImageBufferFlusherCG):
(WebCore::ImageBufferCGBackend::contextColorSpace):
(WebCore::ImageBufferCGBackend::setupContext const):
(WebCore::ImageBufferCGBackend::createFlusher):
(WebCore::ImageBufferCGBackend::setupContext): Deleted.
- platform/graphics/cg/ImageBufferCGBackend.h:
- platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::context const):
(WebCore::ImageBufferIOSurfaceBackend::isInUse const):
(WebCore::ImageBufferIOSurfaceBackend::releaseGraphicsContext):
(WebCore::ImageBufferIOSurfaceBackend::setVolatile):
(WebCore::ImageBufferIOSurfaceBackend::releaseBufferToPool):
- platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
Add isInUse, setVolatile, and releaseGraphicsContext to ImageBuffer,
to manage volatile surfaces; they're only implemented for in-process
IOSurface right now, in order to keep RemoteLayerBackingStore working
after transitioning it to ImageBuffer. A future patch will determine
how to implement this mechanism for remote IOSurfaces.
Add createFlusher to ImageBuffer, which returns an object that can
be tossed to a background queue, and has one method: flush(), which
blocks until the ImageBuffer's oustanding painting is flushed. This is
currently implemented for CG just by calling CGContextFlush. This
is used to abstract out RemoteLayerBackingStore's background-thread
flush of all surfaces.
- platform/graphics/cocoa/IOSurface.h:
- platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::state const):
(WebCore::IOSurface::setVolatile):
(WebCore::operator<<):
(WebCore::IOSurface::setIsVolatile): Deleted.
Make use of VolatilityState instead of SurfaceState.
Source/WebKit:
- Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::hasFrontBuffer const):
(WebKit::RemoteLayerBackingStore::Buffer::operator bool const):
- Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::decode):
(WebKit::RemoteLayerBackingStore::pixelFormat const):
(WebKit::RemoteLayerBackingStore::bytesPerPixel const):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
(WebKit::RemoteLayerBackingStore::takePendingFlusher):
(WebKit::RemoteLayerBackingStore::setBufferVolatility):
(WebKit::RemoteLayerBackingStore::Buffer::discard):
(WebKit::RemoteLayerBackingStore::drawInContext): Deleted.
(WebKit::RemoteLayerBackingStore::takeFrontContextPendingFlush): Deleted.
(WebKit::RemoteLayerBackingStore::surfaceBufferFormat const): Deleted.
Reimplement RemoteLayerBackingStore in terms of ImageBuffer instead of
using ShareableBitmap + IOSurface explicitly.
We use ConcreteImageBuffer versions of the shareable backends in the WebContent process
in the non-GPU-process case, and normal DisplayList-backed RemoteImageBufferProxies
in the GPU process case.
- UIProcess/ViewSnapshotStore.h:
- UIProcess/mac/ViewSnapshotStoreMac.mm:
(WebKit::ViewSnapshot::setVolatile):
(WebKit::ViewSnapshot::asLayerContents):
- WebProcess/GPU/graphics/ImageBufferBackendHandle.h:
- WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::ThreadSafeRemoteImageBufferFlusher::ThreadSafeRemoteImageBufferFlusher):
Add a hack to emulate ThreadSafeRemoteImageBufferFlusher; right now,
we'll synchronously flush on the main thread when creating the flusher;
a future patch will move this into the flush() method so that RemoteLayerBackingStore
can do it on a secondary queue.
(WebKit::RemoteImageBufferProxy::createImageBufferBackendHandle):
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createImageBuffer const):
(WebKit::WebChromeClient::ensureRemoteRenderingBackendProxy const): Deleted.
- WebProcess/WebCoreSupport/WebChromeClient.h:
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::ensureRemoteRenderingBackendProxy):
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
(WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::create):
(WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::BackingStoreFlusher):
(WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush):
Reimplement BackingStoreFlusher in terms of the abstract ThreadSafeImageBufferFlusher.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::ensureRemoteRenderingBackendProxy):
- WebProcess/WebPage/WebPage.h:
Move RemoteRenderingBackendProxy from WebChromeClient to WebPage, so that
other non-WebCore clients can use it without having to think about WebChromeClient.
- 12:56 AM Changeset in webkit [269823] by
-
- 2 edits in trunk/Source/WebCore
Font::platformBoundsForGlyph() should provide a boundingRect pointer to CTFontGetBoundingRectsForGlyphs()
https://bugs.webkit.org/show_bug.cgi?id=218812
Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2020-11-15
Reviewed by Ryosuke Niwa.
Provide a zero CGRect boundingRect pointer in two places where the count argument
to CTFontGetBoundingRectsForGlyphs() is already 1.
No new tests, no behavior changes.
- platform/graphics/coretext/FontCoreText.cpp:
(WebCore::Font::platformBoundsForGlyph const):
(WebCore::Font::isProbablyOnlyUsedToRenderIcons const):
Nov 14, 2020:
- 5:38 PM Changeset in webkit [269822] by
-
- 9 edits in trunk/Source/WebCore
[LFC Display] Implement propagation background style from body to root
https://bugs.webkit.org/show_bug.cgi?id=218947
Reviewed by Zalan Bujtas.
The root display box needs to get its background style from the document element box,
if it has one, otherwise the body box. If the body background style is propagated
to the root, then the body box needs to not paint its background.
Implement by adding BoxFactory::determineRootBackgroundPropagation(), and consulting
the result when creating the display boxes for the root and body. This is complicated
slightly by the need to pass the correct style to constructBoxDecorationData(),
which deals with both backgrounds and other (non-propagating) properties.
- display/DisplayTreeBuilder.cpp:
(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):
(WebCore::Display::TreeBuilder::build const): Deleted.
- display/DisplayTreeBuilder.h:
- display/css/DisplayBoxFactory.cpp:
(WebCore::Display::BoxFactory::determineRootBackgroundPropagation):
(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForBodyBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::constructBoxDecorationData const):
(WebCore::Display::BoxFactory::setupBoxModelBox const):
(WebCore::Display::BoxFactory::documentElementBoxFromRootBox):
(WebCore::Display::BoxFactory::bodyBoxFromRootBox):
- display/css/DisplayBoxFactory.h:
- display/css/DisplayFillLayerImageGeometry.cpp:
(WebCore::Display::calculateFillLayerImageGeometry):
- display/css/DisplayFillLayerImageGeometry.h:
- display/css/DisplayStyle.cpp:
(WebCore::Display::Style::Style):
(WebCore::Display::Style::setupBackground):
- display/css/DisplayStyle.h:
- 1:43 PM Changeset in webkit [269821] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Negative margin before (>border box height value) completely pulls the inline level box out of the line box
https://bugs.webkit.org/show_bug.cgi?id=218945
Reviewed by Antti Koivisto.
maximumTopOffsetFromRootInlineBoxBaseline could very well be negative e.g
<div><div style="display: inline-block; height: 10px; margin-top: -20px"></div></div>.
- layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndalignInlineLevelBoxesVertically):
- 11:46 AM Changeset in webkit [269820] by
-
- 23 edits5 deletes in trunk
Remove -webkit-aspect-ratio support
https://bugs.webkit.org/show_bug.cgi?id=218384
Patch by Rob Buis <rbuis@igalia.com> on 2020-11-14
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
Remove tests for -webkit-aspect-ratio.
- web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
- web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
Source/WebCore:
Remove -webkit-aspect-ratio support since it is superseded
by aspect-ratio (https://www.w3.org/TR/css-sizing-4/).
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
- css/CSSProperties.json:
- css/CSSValueKeywords.in:
- css/StyleProperties.cpp:
- css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::consumeWebkitAspectRatio): Deleted.
- layout/layouttree/LayoutReplacedBox.cpp:
(WebCore::Layout::ReplacedBox::hasAspectRatio const):
- rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::layout):
(WebCore::RenderReplaced::setNeedsLayoutIfNeededAfterIntrinsicSizeChange):
- rendering/style/RenderStyle.h:
(WebCore::RenderStyle::aspectRatioType const):
(WebCore::RenderStyle::setAspectRatioType):
(WebCore::RenderStyle::initialAspectRatioType):
(WebCore::RenderStyle::aspectRatioDenominator const): Deleted.
(WebCore::RenderStyle::aspectRatioNumerator const): Deleted.
(WebCore::RenderStyle::setAspectRatioDenominator): Deleted.
(WebCore::RenderStyle::setAspectRatioNumerator): Deleted.
(WebCore::RenderStyle::initialAspectRatioDenominator): Deleted.
(WebCore::RenderStyle::initialAspectRatioNumerator): Deleted.
- rendering/style/RenderStyleConstants.cpp:
(WebCore::operator<<):
- rendering/style/RenderStyleConstants.h:
- rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):
- rendering/style/StyleRareNonInheritedData.h:
- style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyInitialWebkitAspectRatio): Deleted.
(WebCore::Style::BuilderCustom::applyInheritWebkitAspectRatio): Deleted.
(WebCore::Style::BuilderCustom::applyValueWebkitAspectRatio): Deleted.
LayoutTests:
Remove tests for -webkit-aspect-ratio.
- fast/css/aspect-ratio-inheritance-expected.txt: Removed.
- fast/css/aspect-ratio-inheritance.html: Removed.
- fast/css/aspect-ratio-parsing-tests-expected.txt: Removed.
- fast/css/aspect-ratio-parsing-tests.html: Removed.
- fast/css/aspect-ratio/badchess-tall.png: Removed.
- fast/css/aspect-ratio/badchess-wide.png: Removed.
- fast/css/aspect-ratio/columns-expected.html: Removed.
- fast/css/aspect-ratio/columns.html: Removed.
- fast/css/aspect-ratio/containers-expected.html: Removed.
- fast/css/aspect-ratio/containers.html: Removed.
- fast/css/aspect-ratio/simple-expected.html: Removed.
- fast/css/aspect-ratio/simple.html: Removed.
- platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
- platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
- platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
- platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
- platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
- 10:25 AM Changeset in webkit [269819] by
-
- 2 edits in trunk/LayoutTests
[GTK] Gardening imported/w3c/web-platform-tests/css/css-color/composited-filters-under-opacity.html
Unreviewed test gardening.
- platform/gtk/TestExpectations:
- 9:38 AM Changeset in webkit [269818] by
-
- 4 edits in trunk/Source/WebCore
[LFC][Integration] Use the physical size when setting the pre-computed width/height on ReplacedBox
https://bugs.webkit.org/show_bug.cgi?id=218915
Reviewed by Antti Koivisto.
This is where the logical vs. physical coordinate flip happens on the integration level.
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::updateReplacedDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineBlockDimensions):
- layout/integration/LayoutIntegrationLineLayout.h:
- rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutModernLines):
- 7:26 AM Changeset in webkit [269817] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Display runs generated by boxes should have border box geometries
https://bugs.webkit.org/show_bug.cgi?id=218932
Reviewed by Antti Koivisto.
Layout::Runs/InlineBoxes have margin box geometries, but the Display::Runs should preserve border box instead.
This is mostly interesting in the context of negative vertical margins where such margin values could make the run "empty".
- layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLineRuns const):
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::constructContent):
- 5:53 AM Changeset in webkit [269816] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Inline level box with negative vertical margin should not be considered empty
https://bugs.webkit.org/show_bug.cgi?id=218933
Reviewed by Antti Koivisto.
While in practice when the negative vertical margin makes the layout bounds empty (e.g: height: 100px; margin-top: -100px;),
and the inline level box contributes 0px to the line box height, it should not be considered empty.
- layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
- 3:59 AM Changeset in webkit [269815] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed, suppressing GCC compilation warnings.
- UIProcess/API/wpe/ScrollGestureController.cpp:
(WebKit::ScrollGestureController::handleEvent):
Explicitly store the std::abs() results as uint32_t values. This avoids
comparison between the otherwise-signed return values and the unsigned
constants.
- 2:28 AM Changeset in webkit [269814] by
-
- 12 edits in trunk/Source
[clang-tidy] Run modernize-use-override through JSC
https://bugs.webkit.org/show_bug.cgi?id=218916
Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:
- inspector/agents/InspectorAgent.h:
- inspector/agents/InspectorScriptProfilerAgent.h:
- inspector/agents/InspectorTargetAgent.h:
- inspector/agents/JSGlobalObjectAuditAgent.h:
- inspector/agents/JSGlobalObjectDebuggerAgent.h:
- inspector/agents/JSGlobalObjectRuntimeAgent.h:
- inspector/remote/socket/RemoteInspectorConnectionClient.h:
- inspector/remote/socket/RemoteInspectorServer.h:
- runtime/JSGlobalObjectDebuggable.h:
Source/WTF:
- wtf/RunLoop.h:
- 1:01 AM Changeset in webkit [269813] by
-
- 18 edits in trunk
Support animations on more pseudo-elements
https://bugs.webkit.org/show_bug.cgi?id=218792
<rdar://problem/71274485>
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Add PASS results for WPT tests running animations on ::marker pseudo-elements.
- web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
- web-platform-tests/css/css-animations/animationevent-marker-pseudoelement-expected.txt:
- web-platform-tests/css/css-animations/event-order.tentative-expected.txt:
- web-platform-tests/css/css-pseudo/marker-animate-expected.txt:
- web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:
- web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
Source/WebCore:
We used to only support animations for pseudo-elements that were represented by PseudoElement (::before and ::after).
With this patch, we can now animate any public pseudo-element, such as ::marker.
- animation/KeyframeEffect.cpp:
(WebCore::elementOrPseudoElementForStyleable): For pseudo-elements other than ::before or ::after, return the Styleable's
element since a PseudoElement is only accessible for the aforementioned pseudo-elements.
(WebCore::KeyframeEffect::targetElementOrPseudoElement const): For pseudo-elements other than ::before or ::after, return
the animation target as the target element.
- dom/PseudoElement.cpp:
(WebCore::PseudoElement::rendererIsNeeded): Refactor what was originally isTargetedByKeyframeEffectRequiringPseudoElement()
into this method since isTargetedByKeyframeEffectRequiringPseudoElement() was removed.
(WebCore::PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement): Remove this method from PseudoElement since
pseudo-elements that are not represented by a PseudoElement need similar logic, which is now available through the static
function elementIsTargetedByKeyframeEffectRequiringPseudoElement() in RenderTreeUpdaterGeneratedContent.cpp.
- dom/PseudoElement.h:
- rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateRenderTree): Pass the entire set of ElementUpdates instead of just the ElementUpdate to
updateElementRenderer() such that it may process the new pseudoElementUpdates member.
(WebCore::RenderTreeUpdater::updateBeforeDescendants): Pass the entire set of ElementUpdates and a PseudoId to
updatePseudoElement() such that it may use the new pseudoElementUpdates member in combination with the PseudoId
to determine what ElementUpdate to use.
(WebCore::RenderTreeUpdater::updateAfterDescendants): Pass the entire set of ElementUpdates and a PseudoId to
updatePseudoElement() such that it may use the new pseudoElementUpdates member in combination with the PseudoId
to determine what ElementUpdate to use.
(WebCore::RenderTreeUpdater::updateElementRenderer): Use the new pseudoElementUpdates member in ElementUpdates to set the
pseudo-element styles.
- rendering/updating/RenderTreeUpdater.h:
- rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::elementIsTargetedByKeyframeEffectRequiringPseudoElement): New static method meant to replace the removed
PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement() such that we may use this method regardless of whether
the pseudo-element is represented by PseudoElement.
(WebCore::createContentRenderers): Use elementIsTargetedByKeyframeEffectRequiringPseudoElement() instead of the removed
PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement().
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): Look up all ElementUpdate for the provided PseudoId
in the new pseudoElementUpdates member in ElementUpdates in order to determine what ElementUpdate to process. Also, use
elementIsTargetedByKeyframeEffectRequiringPseudoElement() instead of the removed
PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement().
(WebCore::RenderTreeUpdater::GeneratedContent::needsPseudoElement):
- rendering/updating/RenderTreeUpdaterGeneratedContent.h:
- style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement): Resolve any public pseudo-element instead of just ::before and ::after
and save those in the new ElementUpdates pseudoElementUpdates member.
(WebCore::Style::TreeResolver::resolvePseudoStyle): Resolve any pseudo-element set on an element that either has animations
set on it, either set by Web Animations, as seen on the KeyframeEffectStack, or yet to be applied through a CSS Animation or
CSS Transition, as seen on the RenderStyle.
- style/StyleTreeResolver.h:
- style/StyleUpdate.h: Add a new pseudoElementUpdates member on ElementUpdates.
- 12:52 AM Changeset in webkit [269812] by
-
- 17 edits1 add in trunk
Add support for discrete animations of many CSS properties
https://bugs.webkit.org/show_bug.cgi?id=218902
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
By virtue of animation a host of new properties, we run an extra 551 tests and pass 518 of them.
- web-platform-tests/css/css-logical/animations/float-interpolation-expected.txt:
- web-platform-tests/css/css-position/animations/position-interpolation-expected.txt:
- web-platform-tests/css/css-transitions/properties-value-003-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:
Source/WebCore:
Add support for discrete animation of the following properties:
-webkit-backface-visibility, -webkit-box-decoration-break, -webkit-hyphens, -webkit-initial-letter,
-webkit-print-color-adjust, -webkit-ruby-position, -webkit-text-emphasis-color, -webkit-text-emphasis-position,
border-bottom-style, border-collapse, border-left-style, border-right-style, border-top-style, box-sizing,
caption-side, clear, column-fill, column-rule-style, column-rule-style, cursor, empty-cells, flex-direction,
flex-wrap, float, grid-auto-columns, grid-auto-flow, grid-auto-rows, grid-column-end, grid-column-start,
grid-row-end, grid-row-start, image-orientation, isolation, justify-content, justify-items, justify-self,
list-style-position, list-style-type, mix-blend-mode, object-fit, outline-style, overflow-wrap, overflow-x,
overflow-y, page-break-after, page-break-before, page-break-inside, paint-order, pointer-events, position,
resize, table-layout, text-align, text-decoration-color, text-decoration-line, text-decoration-style,
text-overflow, text-transform, touch-action, transform-box, transform-style, white-space, word-break.
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
- rendering/style/GridPosition.cpp:
(WebCore::operator<<):
- rendering/style/GridPosition.h:
- rendering/style/GridTrackSize.cpp: Added.
(WebCore::operator<<):
- rendering/style/GridTrackSize.h: