Timeline
Jan 23, 2022:
- 11:32 PM Changeset in webkit [288431] by
-
- 1 copy in tags/Safari-613.1.14.2.3
Tag Safari-613.1.14.2.3.
- 11:28 PM Changeset in webkit [288430] by
-
- 9 edits in branches/safari-613.1.14.2-branch/Source
Versioning.
WebKit-7613.1.14.2.3
- 8:48 PM Changeset in webkit [288429] by
-
- 6 edits1 copy1 add in trunk
Position:fixed layers shouldn't allocate a backing buffer if all children are offscreen.
https://bugs.webkit.org/show_bug.cgi?id=235420
<rdar://86612099>
Patch by Matt Woodrow <Matt Woodrow> on 2022-01-23
Reviewed by Simon Fraser and Darin Adler.
Source/WebCore:
Adds a bounds intersection check to isPaintDestinationForDescendantLayers,
so that we can exclude descendants that definitely won't draw anything into
the compositing layer. Uses a conservative check, which gives up if there are
any transforms in the ancestor chain.
Test: compositing/backing/no-backing-for-offscreen-children-of-position-fixed.html
- rendering/RenderLayerBacking.cpp:
(WebCore::intersectsWithAncestor):
(WebCore::RenderLayerBacking::isPaintDestinationForDescendantLayers const):
LayoutTests:
Adds a test that has a viewport sized position:fixed element (with compositing
layer), and a single child which is entirely offscreen. Tests that we correctly
determine that we don't need a backing store for the layer.
- compositing/backing/no-backing-for-offscreen-children-of-position-fixed-expected.txt: Added.
- compositing/backing/no-backing-for-offscreen-children-of-position-fixed.html: Added.
- 6:07 PM Changeset in webkit [288428] by
-
- 2 edits in trunk/Source/WebCore
Fix "componet" typo in just-landed patch.
- platform/graphics/ColorInterpolation.h: I suggested Sam change a name
to interpolateComponentWithoutAccountingForNaN, but mispelled it "componet".
Fixing it here.
- 4:57 PM Changeset in webkit [288427] by
-
- 10 edits in trunk
Support interpolating colors with missing/none components via color-mix()
https://bugs.webkit.org/show_bug.cgi?id=235496
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Update color-mix() tests to include test cases that use 'none' components.
- web-platform-tests/css/css-color/parsing/color-mix-computed-expected.txt:
- web-platform-tests/css/css-color/parsing/color-mix-computed.html:
- web-platform-tests/css/css-color/parsing/color-mix-valid-expected.txt:
- web-platform-tests/css/css-color/parsing/color-mix-valid.html:
Source/WebCore:
Adds support for interpolating colors that have a missing/none component. Currently,
the only way for a color to have a missing/none component is for it to be specified
explicitly by the user (e.g. hsl(none 20% 40%)), but the interpolation implementation
is agnostic to how the color was created so will work once there is automatic creation
of missing/none components on conversion for powerless components.
This change only enables the new interpolation behavior for color-mix(), by replacing
a call of colorType.resolved() with colorType.unresolved(), support for other interpolation
use cases will follow.
- css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::mixColorComponentsUsingColorInterpolationMethod):
Replace resolved() with unrersolved() to allow NaN values through to interpolation.
- platform/graphics/ColorInterpolation.cpp:
(WebCore::fixupHueComponentsPriorToInterpolation):
(WebCore::interpolateColors):
Move non-templated version of interpolateColors to the implementation file as it generates
a lot of code and there is little reason to believe it would be useful to inline it.
- platform/graphics/ColorInterpolation.h:
(WebCore::interpolateComponent):
(WebCore::interpolateComponentAccountingForNaN):
(WebCore::interpolateHue):
(WebCore::interpolateAlphaPremulitplied):
(WebCore::interpolateComponentUsingPremultipliedAlpha):
(WebCore::interpolateAlphaUnpremulitplied):
(WebCore::interpolateComponentUsingUnpremultipliedAlpha):
(WebCore::interpolateColorComponents):
(WebCore::preInterpolationNormalizationForComponent): Deleted.
(WebCore::preInterpolationNormalization): Deleted.
(WebCore::postInterpolationNormalizationForComponent): Deleted.
(WebCore::postInterpolationNormalization): Deleted.
(WebCore::interpolateColors): Deleted.
Replace existing interpolation implementation which separated each component into pre/interpolate/post
steps, with one that does all three steps at once and now also supports missing components. Removing
the steps made the overall algorithm is easier to understand a couples premulitplication and unpremultiplication
much closer together.
- platform/graphics/ColorTypes.h:
(WebCore::constexprIsNaN):
Update comment to include missing word.
- 4:55 PM Changeset in webkit [288426] by
-
- 18 edits in trunk/Source/WebCore
Improve FourCC to use more inlining, fix incorrect mix of WEBCORE_EXPORT on entire class with inline functions
https://bugs.webkit.org/show_bug.cgi?id=235461
Reviewed by Sam Weinig.
- WebCore.xcodeproj/project.pbxproj: Added FourCC.cpp. Because of
unified sources it was compiled, but because it was not in the project
various Xcode features would not work.
- platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.cpp:
Added some explicitly non-inlined exported functions. These need to
be exported because they are used in TestWebKitAPI tests and we
want to export the functions rather than the vtable pointer.
- platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h:
Stop using WEBCORE_EXPORT on whole classes that contain inline
functions, and instead use it on individual functions.
- platform/graphics/FourCC.cpp:
(WebCore::FourCC::fromString): Take a StringView instead of String.
Removed unnecessary allocation of a temporary CString for the result
of String::ascii.
(WebCore::FourCC::string const): Rename from toString to string and
changed the return type to std::array instead of String.
- platform/graphics/FourCC.h: Made all the constructors constexpr.
Changed the string literal constructor to just work with 4-character
strings. The old one was a template for any length string, but then
asserted it was 4 characters long, which is a roundabout way to do it.
- platform/graphics/HEVCUtilities.cpp:
(WebCore::parseHEVCDecoderConfigurationRecord): Take FourCC instead
of const FourCC&. Also removed unnecessary explicit conversion to
FourCC since four character strings.
- platform/graphics/HEVCUtilities.h: Ditto.
- platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h:
Removed unneeded WEBCORE_EXPORT on these classes.
- platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processNativeSamples): Removed
unnecesary calls to toString, logging can handle FourCC without it.
Also removed unneeded type casts to size_t.
- platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm:
(WebCore::contentTypesToCodecs): Removed unnecessary allocation of
a String by using StringView for the substring.
- platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:
(WebCore::validateHEVCParameters): Added an explicit cast to String
since FourCC::fromString now takes a StringView. Sadly there's not
a trivial way to do this without allocating a String.
- platform/graphics/cv/GraphicsContextGLCVCocoa.cpp:
(WebCore::GraphicsContextGLCVCocoa::copyVideoSampleToTexture):
Since FourCC::string now returns a std::array with a C-style
null-terminated string, use it instead of calling toString and
then utf8. Cleaner and also much more efficient.
- platform/graphics/iso/ISOBox.cpp: Moved constructors and
destructors so they are no longer inlined so there is no need to
export the vtable.
(WebCore::ISOBox::peekBox): Removed unnecessary initialization
of FourCC since they are zero by default.
- platform/graphics/iso/ISOBox.h: Removed WEBCORE_EXPORT of
the entire class, since that's not fully compatible with a class
with inline functions (warning is done by check-webkit-style).
Put WEBCORE_EXPORT on individual functions instead. Also use some
more constexpr, removed unneeded FourCC initialization since it is
zero by default, and use FourCC, not const FourCC& for return value.
- platform/graphics/iso/ISOOriginalFormatBox.h: Removed unneeded
FourCC initialization since it is zero by default.
- platform/graphics/iso/ISOSchemeTypeBox.h: Ditto.
- platform/graphics/iso/ISOVTTCue.cpp: Moved constructors and
destructors so they are no longer inlined so there is no need to
export the vtable.
(WebCore::ISOWebVTTCue::parse): Use PRIu64 instead of casting
to size_t, no need to rely on the relationship between type sizes.
- platform/graphics/iso/ISOVTTCue.h: Removed WEBCORE_EXPORT of
the entire class, since that's not fully compatible with a class
with inline functions (warning is done by check-webkit-style).
Put WEBCORE_EXPORT on individual functions instead.
- 3:10 PM Changeset in webkit [288425] by
-
- 4 edits2 adds in trunk
AX Isolated Tree Mode: Re-compute AXPropertyName::IsEnabled when a node experiences AXDisabledStateChanged
https://bugs.webkit.org/show_bug.cgi?id=235295
Reviewed by Chris Fleizach.
Source/WebCore:
Test: accessibility/dynamic-attribute-changes-should-update-isenabled.html
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::updateIsolatedTree):
Re-compute AXPropertyName::IsEnabled when receiving an AXDisabledStateChanged notification.
- accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeProperty):
Handle requests for AXPropertyName::IsEnabled updates.
LayoutTests:
This patch adds a test verifying that AXPropertyName::IsEnabled is re-computed when an
object's disabled state changes.
- accessibility/dynamic-attribute-changes-should-update-isenabled-expected.txt: Added.
- accessibility/dynamic-attribute-changes-should-update-isenabled.html: Added.
- 1:50 PM Changeset in webkit [288424] by
-
- 16 edits3 adds4 deletes in trunk
[Model] Add load and error events to distinguish resource load from model readiness
https://bugs.webkit.org/show_bug.cgi?id=233706
rdar://85922697
Reviewed by Chris Dumez and Dean Jackson.
Source/WebCore:
Test: model-element/model-element-error-and-load-events.html
Prior to this patch, <model> elements had a "ready" promise which resolved once the resource had been loaded.
However, this promise should be used when the <model> is fully ready, and this is done on macOS and iOS asynchronously
after the resource has been loaded by the supporting ARQL framework. So we need a way to monitor success or failure of
the resource load specifically.
To that end, and matching the <img> element, we dispatch "load" and "error" events on <model> elements and add a
"complete" property to indicate whether the resource is loaded.
Meanwhile, the "ready" promise is now resolved when the model is fully loaded by the supporting framework, indicating
that further APIs are safe to use.
Since creating the support ARQL object for macOS and iOS also requires the <model> element's renderer being available,
we opt into "custom style resolve callbacks" so that we may implement didAttachRenderers() on HTMLModelElement and keep
track of renderer availability before attempting to create the ModelPlayer.
- Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::HTMLModelElement):
(WebCore::HTMLModelElement::create):
(WebCore::HTMLModelElement::setSourceURL):
(WebCore::HTMLModelElement::didAttachRenderers):
(WebCore::HTMLModelElement::notifyFinished):
(WebCore::HTMLModelElement::modelDidChange):
(WebCore::HTMLModelElement::createModelPlayer):
(WebCore::HTMLModelElement::didFinishLoading):
(WebCore::HTMLModelElement::didFailLoading):
(WebCore::HTMLModelElement::activeDOMObjectName const):
(WebCore::HTMLModelElement::virtualHasPendingActivity const):
- Modules/model-element/HTMLModelElement.h:
- Modules/model-element/HTMLModelElement.idl:
Tools:
Use the "load" event instead of the "ready" promise for this test which only requires monitoring
the <model> resource being loaded.
- TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:
(TestWebKitAPI::TEST):
LayoutTests:
Remove existing tests around resource loading and recreate them in terms of "load" and "error"
events in model-element/model-element-error-and-load-events.html and in terms of the ready
promise in model-element/model-element-ready.html.
Other tests using model.ready for other purposes are also rewritten using events.
- model-element/model-element-contents-layer-updates-with-clipping.html:
- model-element/model-element-contents-layer-updates.html:
- model-element/model-element-error-and-load-events-expected.txt: Added.
- model-element/model-element-error-and-load-events.html: Added.
- model-element/model-element-graphics-layers-opacity.html:
- model-element/model-element-graphics-layers.html:
- model-element/model-element-ready-expected.txt:
- model-element/model-element-ready-load-aborted-expected.txt: Removed.
- model-element/model-element-ready-load-aborted.html: Removed.
- model-element/model-element-ready-load-failed-expected.txt: Removed.
- model-element/model-element-ready-load-failed.html: Removed.
- model-element/model-element-ready.html:
- model-element/resources/model-element-test-utils.js: Added.
(const.createModelAndSource):
- platform/ios-simulator/TestExpectations:
- platform/mac/TestExpectations:
- 1:21 PM Changeset in webkit [288423] by
-
- 3 edits2 adds in trunk
m_lastStyleChangeEventStyle null ptr deref for accelerated CSS Animation with no duration and an implicit keyframe
https://bugs.webkit.org/show_bug.cgi?id=235394
<rdar://problem/87701738>
Reviewed by Antti Koivisto.
Source/WebCore:
Test: webanimations/accelerated-animation-without-duration-crash.html
In r287827, the fix for bug 235014, we stopped filling implicit keyframes for CSS Animations at creation
time such that the output of getKeyframes() would correctly account for the missing keyframes. This meant
that we have to fill in those implicit keyframes when running an accelerated animation before we pass it
on to GraphicsLayer.
We would always use the value stored by lastStyleChangeEventStyle() with an assert that this value was
never null. However, in the case of an animation that is not relevant, such as a CSS Animation with no
duration, we've never had a chance to set that style since Style::TreeResolver::createAnimatedElementUpdate()
would not see any "relevant" (a term defined by the Web Animations specification to specify an animation
that has an effect on its target) animations.
We now use the renderer's style as a fallback, which is guaranteed to be defined at this stage.
- animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
LayoutTests:
New test, created by Gabriel Nava Marino, that creates an accelerated animation with no
duration and with implicit keyframes that would crash prior to this patch.
- webanimations/accelerated-animation-without-duration-crash-expected.txt: Added.
- webanimations/accelerated-animation-without-duration-crash.html: Added.
- 11:27 AM Changeset in webkit [288422] by
-
- 2 edits in trunk/Source/WebCore
[GStreamer] C++20 warnings
https://bugs.webkit.org/show_bug.cgi?id=235493
Patch by Philippe Normand <pnormand@igalia.com> on 2022-01-23
Reviewed by Darin Adler.
Fix ambiguous-reversed-operator warnings. In C++20 comparison operators (like a == b) need
to be declared const, so that reverse comparisons (like b == a) also work as intended.
- platform/graphics/gstreamer/GStreamerCommon.h:
(GstIteratorAdaptor::iterator::operator== const):
(GstIteratorAdaptor::iterator::operator!= const):
(GstIteratorAdaptor::iterator::operator==): Deleted.
(GstIteratorAdaptor::iterator::operator!=): Deleted.
- 10:43 AM Changeset in webkit [288421] by
-
- 4 edits in trunk/Source/WebCore
[LFC][IFC] InlineFormattingContext::computeGeometryForLineContent should always return the line logical rect
https://bugs.webkit.org/show_bug.cgi?id=235494
Reviewed by Antti Koivisto.
The return rect of computeGeometryForLineContent (based on the display line) is input to the next line's
initial rect and therefore it is supposed to be logical (in general, layout should strictly use logical coords).
This is in preparation for supporting vertical writing mode.
- layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
- layout/formattingContexts/inline/InlineFormattingGeometry.cpp:
(WebCore::Layout::InlineFormattingGeometry::flipVisualRectToLogicalForWritingMode):
- layout/formattingContexts/inline/InlineFormattingGeometry.h:
- 8:59 AM Changeset in webkit [288420] by
-
- 4 edits in trunk
[forms] Prevent contenteditable anchors from being stuck
https://bugs.webkit.org/show_bug.cgi?id=235438
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Update 1 WPT test expectation file as the test is now passing.
- web-platform-tests/html/semantics/forms/the-input-element/anchor-active-contenteditable-expected.txt:
Source/WebCore:
Anchors can be stuck in the :active state if contenteditable is enabled before
:active is removed. With this patch setActive() can remove :active during
contenteditable in order to prevent anchors from navigating during contenteditable.
This is an import of Chromium CL at
https://chromium-review.googlesource.com/c/chromium/src/+/2595978
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::setActive):
- 8:50 AM Changeset in webkit [288419] by
-
- 2 edits in trunk/Source/WebCore
AX: Refactor near-duplicate AXObjectCache::updateIsolatedTree implementations
https://bugs.webkit.org/show_bug.cgi?id=235481
Reviewed by Chris Fleizach.
AXObjectCache::updateIsolatedTree(AXCoreObject&, AXNotification) and
AXObjectCache::updateIsolatedTree(const Vector<std::pair<RefPtr<AXCoreObject>, AXNotification>>&)
duplicate a lot of code, and make it possible to forget to add new
notification handling in one place or the other. This patch refactors
this by making the single-object versions of this method defer to the
multiple-object version by wrapping the single change in a Vector.
No tests added because there is no behavior change.
- accessibility/AXObjectCache.cpp:
(WebCore::appendIfNotContainsMatching):
Moved this function above updateIsolatedTree methods. No other change.
(WebCore::AXObjectCache::updateIsolatedTree):
- 8:25 AM Changeset in webkit [288418] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] LineLayout::contentLogicalHeight should always return the logical height
https://bugs.webkit.org/show_bug.cgi?id=235488
Reviewed by Antti Koivisto.
The display boxes/lines always have visual geometries and in case of vertical writing mode it means that the
content stretches in horiztonal direction (left to right/right to left).
This is in preparation for supporting vertical writing mode.
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):
(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
- layout/integration/LayoutIntegrationLineLayout.h:
(WebCore::LayoutIntegration::LineLayout::isPaginated const):
- 6:48 AM Changeset in webkit [288417] by
-
- 5 edits in trunk
[LFC][IFC] Enable unicode-bidi: plaintext for IFC
https://bugs.webkit.org/show_bug.cgi?id=235429
Reviewed by Antti Koivisto.
Source/WebCore:
- layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForStyle):
- layout/integration/LayoutIntegrationCoverage.h:
LayoutTests:
- platform/mac/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
Jan 22, 2022:
- 9:20 PM Changeset in webkit [288416] by
-
- 22 edits1 copy in trunk/Source
Add PushSubscriptionIdentifier
https://bugs.webkit.org/show_bug.cgi?id=234797
Reviewed by Darin Adler.
Source/WebCore:
This adds a PushSubscriptionIdentifier to each PushSubscription. Implementation-wise, it
will be the rowid if the subscription in the subscription database. We need this so that
PushSubscription.unsubscribe only unsubscribes from the given subscription. Currently it
unsubscribes from any active subscription associated with the subscription's service worker
scope.
No new tests. I plan on adding a test for this case in an API test which will work with real
PushSubscription objects when I submit the patch that implements the subscription business
logic in webpushd. The current layout tests only work with fake PushSubscription objects
that aren't connected to webpushd.
- Headers.cmake:
- Modules/push-api/PushSubscription.cpp:
(WebCore::PushSubscription::unsubscribe):
- Modules/push-api/PushSubscriptionData.cpp:
(WebCore::PushSubscriptionData::isolatedCopy const):
- Modules/push-api/PushSubscriptionData.h:
(WebCore::PushSubscriptionData::encode const):
(WebCore::PushSubscriptionData::decode):
webpushd only supports modern decoding and we need to send this object to it, so use modern decoding.
- Modules/push-api/PushSubscriptionIdentifier.h:
- WebCore.xcodeproj/project.pbxproj:
- testing/Internals.cpp:
(WebCore::Internals::createPushSubscription):
- testing/ServiceWorkerInternals.cpp:
(WebCore::ServiceWorkerInternals::createPushSubscription):
- workers/service/SWClientConnection.h:
- workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::unsubscribeFromPushService):
- workers/service/ServiceWorkerContainer.h:
- workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::unsubscribeFromPushService):
- workers/service/ServiceWorkerRegistration.h:
- workers/service/WorkerSWClientConnection.cpp:
(WebCore::WorkerSWClientConnection::unsubscribeFromPushService):
- workers/service/WorkerSWClientConnection.h:
Source/WebKit:
Pass the subscription identifier in the PushSubscription.unsubscribe call to guarantee that
we only unsubscribe from the given subscription.
- NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::unsubscribeFromPushService):
- NetworkProcess/ServiceWorker/WebSWServerConnection.h:
- NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
- Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
(headers_for_type):
- WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::unsubscribeFromPushService):
- WebProcess/Storage/WebSWClientConnection.h:
- 9:01 PM Changeset in webkit [288415] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION(r280887) broke some svg based chart content repaint
https://bugs.webkit.org/show_bug.cgi?id=235483
<rdar://87904254>
Unreviewed, reverting r280887.
- svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::svgAttributeChanged):
- 8:37 PM Changeset in webkit [288414] by
-
- 2 edits in trunk/LayoutTests
[iOS] Unreviewed gardering
- platform/ios/TestExpectations: blank selection.
- 7:38 PM Changeset in webkit [288413] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION (Safari 15?): Blob videos slow to pause, affects CBS and CNN
https://bugs.webkit.org/show_bug.cgi?id=234066
Reviewed by Jer Noble.
MediaPlayerPrivateMediaSourceAVFObjC::playInternal()calls[m_synchronizer setRate:],
which will make the return value ofMediaPlayerPrivateMediaSourceAVFObjC::paused()change
from true to false. But it won't push the newpausedvalue back to the Web process.
RemoteMediaPlayerProxy::play()does callsendCachedState()after calling
m_player->play(), but becauseMediaPlayerPrivateMediaSourceAVFObjC::playInternal()is not
called in the same run loop,sendCachedState()won't send back the updatedpausedvalue either.
In most cases, this is not an issue, because other member functions of
RemoteMediaPlayerProxy
will callsendCachedState()to push the updatedpausedvalue back to the Web process later.
However, we did find some videos need thepausedvalue to be pushed back the Web process
in a timely manner.
No new tests, manually tested.
- platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal):
- 5:03 PM Changeset in webkit [288412] by
-
- 18 edits2 adds in trunk/Source
[GPU Process] Add the class 'SourceImage' to represent variants of image
https://bugs.webkit.org/show_bug.cgi?id=235467
Reviewed by Cameron McCormack.
Source/WebCore:
Before the existence of GPUProcess we used to do some drawing on an
ImageBuffer, get a NativeImage from the ImageBuffer and then use this
NativeImage. With GPUProces, this will require bouncing the NativeImage
between WebProcess and GPUProcess at least two times. To make this scenario
efficient, a new class called 'SourceImage' will be introduced. The purpose
of this class is to provide a new level of abstraction for the images
such that no conversion is needed before the actual use.
Replace FEImage::SourceImage with a new class named 'SourceImage'. Let
the new class handle the encoding and decoding and the conversion from
NativeImage to ImageBuffer and vice versa.
Make Recorder::recordResourceUse() returns a boolean which indicates
whether the resource can be cached for later replay or not.
- Headers.cmake:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/Image.h:
(WebCore::Image::nativeImageForCurrentFrame):
(WebCore::Image::preTransformedNativeImageForCurrentFrame):
- platform/graphics/SourceImage.cpp: Added.
(WebCore::SourceImage::SourceImage):
(WebCore::SourceImage::nativeImageIfExists const):
(WebCore::SourceImage::nativeImage):
(WebCore::SourceImage::imageBufferIfExists const):
(WebCore::SourceImage::imageBuffer):
(WebCore::SourceImage::imageIdentifier const):
- platform/graphics/SourceImage.h: Added.
(WebCore::SourceImage::encode const):
(WebCore::SourceImage::decode):
- platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::drawFilteredImageBuffer):
(WebCore::DisplayList::Recorder::drawImageBuffer):
- platform/graphics/displaylists/DisplayListRecorder.h:
- platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordResourceUse):
- platform/graphics/displaylists/DisplayListRecorderImpl.h:
- svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::filterEffect const):
- svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImageForCurrentFrame): Deleted.
- svg/graphics/SVGImage.h:
- svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::calculateImageRect const):
(WebCore::FEImageSoftwareApplier::apply const):
- svg/graphics/filters/SVGFEImage.h:
(WebCore::FEImage::encode const):
(WebCore::FEImage::decode):
Source/WebKit:
Provide a new recordResourceUse() for the SourceImage.
- GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):
- WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordResourceUse):
- WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
- 4:00 PM Changeset in webkit [288411] by
-
- 6 edits1 add in trunk
[JSC] Relax Date.parse requirement
https://bugs.webkit.org/show_bug.cgi?id=235468
Reviewed by Darin Adler.
JSTests:
- stress/date-relaxed-separator.js: Added.
(shouldBe):
Source/WTF:
While the spec does not require accepting 't' / ' ' separator, ISO 8601 accepts it.
This is because ECMA262's Date format is *not* ISO 8601 (it is called simplification
of ISO 8601[1]).
This patch relaxes this strictness to accept more formats, which can be accepted in
the other engines too.
[1]: https://tc39.es/ecma262/#sec-date-time-string-format
- wtf/DateMath.cpp:
(WTF::parseES5DateFromNullTerminatedCharacters):
LayoutTests:
- js/date-parse-test-expected.txt:
- js/script-tests/date-parse-test.js:
- 2:58 PM Changeset in webkit [288410] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Add InlineDisplay::Box::isHorizontal
https://bugs.webkit.org/show_bug.cgi?id=235482
Reviewed by Antti Koivisto.
This is in preparation for supporting vertical writing mode.
- layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::isHorizontal const):
- layout/integration/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::isHorizontal const):
- 2:57 PM Changeset in webkit [288409] by
-
- 3 edits2 adds in trunk
REGRESSION (r288069): Bits of selection left after deselecting on bugzilla page
https://bugs.webkit.org/show_bug.cgi?id=235466
<rdar://87902230>
Reviewed by Darin Adler.
Source/WebCore:
Undo the incorrect dynamicDowncast change.
This code reads (perhaps confusingly at first sight):
return is<RenderView>(containingBlock) ? nullptr : containingBlock;
while the dynamicDowncast is meant to shorten code like this:
return is<RenderView>(containingBlock) ? containingBlock : nullptr;
Test: fast/text/incorrect-deselection-across-multiple-elements.html
- rendering/SelectionRangeData.cpp:
(WebCore::containingBlockBelowView):
LayoutTests:
- fast/text/incorrect-deselection-across-multiple-elements-expected.txt: Added.
- fast/text/incorrect-deselection-across-multiple-elements.html: Added. Use indexOf because
while the repaint rect area is always the same, the rects order may vary.
- 2:20 PM Changeset in webkit [288408] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Use content direction for the first "unicode-paragraph" when "unicode-bidi: plaintext" is present
https://bugs.webkit.org/show_bug.cgi?id=235452
Reviewed by Antti Koivisto.
This makes the /css/css-writing-modes/bidi-plaintext-br-* tests pass (not enabled yet).
- layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::layoutInlineContent):
- 2:14 PM Changeset in webkit [288407] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Alignment logic should take the line specific direction (which may be different from the root direction)
https://bugs.webkit.org/show_bug.cgi?id=235460
Reviewed by Antti Koivisto.
This makes the the /html/dom/elements/global-attributes/dir_auto-* tests pass (not enabled yet).
- layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::build):
- 12:55 PM Changeset in webkit [288406] by
-
- 4 edits in trunk/Source/WebKit
Skip installing webpushd in STP and downlevel builds
https://bugs.webkit.org/show_bug.cgi?id=235464
<rdar://87425138>
Patch by Elliott Williams <Elliott Williams> on 2022-01-22
Reviewed by Brady Eidson.
We can't ship webpushd as part of STP or builds made for previous versions of macOS. This
change adjusts build settings to skip installing webpushd and its launchd plist outside of a
non-relocatable production build environment.
As a consequence, webpushd will not _install_ in development builds (where all build
products are relocatable). It will continue to build and be runnable from the build
products directory.
- Configurations/BaseTarget.xcconfig: Add WK_SKIP_INSTALL_WEBPUSHD to determine whether to
skip installation.
- Configurations/webpushd.xcconfig: Set SKIP_INSTALL based on WK_SKIP_INSTALL_WEBPUSHD.
- WebKit.xcodeproj/project.pbxproj: Skip installing launchd plists when
WK_SKIP_INSTALL_WEBPUSHD=YES.
- 10:17 AM Changeset in webkit [288405] by
-
- 3 edits in trunk/Source/WebCore
Create ancestry of isolated objects instead of generating the entire subtree for an ancestor.
https://bugs.webkit.org/show_bug.cgi?id=235389
<rdar://problem/87803473>
Reviewed by Chris Fleizach.
AXIsolatedTree::updateChildren may be called for an AXObject that has no
corresponding IsolatedObject. That is the case of empty canvas and some
empty div elements. In those cases we were generating the subtree of the
first available ancestor in the isolated tre. This can be expensive
because in some cases the immediate exisiting ancestor was the webarea,
causing the re-generation of the entire isolated tree. With this patch,
only the IsolatedObjects that are missing in the isolated tree are added
to the tree.
- accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::nodeChangeForObject):
(WebCore::AXIsolatedTree::queueChanges):
The above two methods are added to avoid coude duplication and to be
able to decouple the creation of new isolated objects from the addition
of those objects to the isolated tree.
(WebCore::AXIsolatedTree::createSubtree):
(WebCore::AXIsolatedTree::updateChildren):
- accessibility/isolatedtree/AXIsolatedTree.h:
- 9:26 AM Changeset in webkit [288404] by
-
- 3 edits2 deletes in trunk
[CSS Cascade Layers] Enable CSSImportRule.layerName for WebKitGTK
https://bugs.webkit.org/show_bug.cgi?id=235455
Reviewed by Darin Adler.
Source/WebCore:
Bug 231340 added support for CSSImportRule.layerName, but CMakeLists.txt
wasn't listing CSSImportRule+Layer.idl
So the attribute was not there when running WebKitGTK, built with CMake.
Tests: imported/w3c/web-platform-tests/css/css-cascade/idlharness.html
imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom.html
- CMakeLists.txt: link missing css/CSSImportRule+Layer.idl
LayoutTests:
Expect the tests to pass.
- platform/glib/imported/w3c/web-platform-tests/css/css-cascade/idlharness-expected.txt: Removed.
- platform/glib/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom-expected.txt: Removed.
- 1:31 AM Changeset in webkit [288403] by
-
- 9 edits in trunk
[GTK][a11y] Stop registering the tree when clients are connected with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=235313
Reviewed by Adrian Perez de Castro.
Source/WebCore:
That was needed with the isolated tree mode, now we can go back to register objects on demand.
- accessibility/atspi/AXObjectCacheAtspi.cpp:
(WebCore::AXObjectCache::platformPerformDeferredCacheUpdate):
- accessibility/atspi/AccessibilityAtspi.cpp:
(WebCore::AccessibilityAtspi::addClient):
(WebCore::AccessibilityAtspi::parentChanged):
(WebCore::AccessibilityAtspi::childrenChanged):
(WebCore::AccessibilityAtspi::cacheClearTimerFired):
- accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::isTreeRegistered const): Deleted.
- accessibility/atspi/AccessibilityObjectAtspi.h:
- accessibility/atspi/AccessibilityRootAtspi.cpp:
(WebCore::AccessibilityRootAtspi::embedded):
(WebCore::AccessibilityRootAtspi::child const):
(WebCore::AccessibilityRootAtspi::childAdded):
(WebCore::registerSubtree): Deleted.
(WebCore::AccessibilityRootAtspi::registerTree): Deleted.
(WebCore::AccessibilityRootAtspi::didUnregisterTree): Deleted.
- accessibility/atspi/AccessibilityRootAtspi.h:
Tools:
- TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
(testDocumentLoadEvents): Now we don't get the initial event from previous document web because it happens
before the first client is connected.