[webkit-changes] [WebKit/WebKit] 80225a: Add limits to the number of ImageBuffers that the ...

2024-07-26 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 80225aaf7451c18e20832dec77948e514d39d368
  
https://github.com/WebKit/WebKit/commit/80225aaf7451c18e20832dec77948e514d39d368
  Author: Cameron McCormack 
  Date:   2024-07-26 (Fri, 26 Jul 2024)

  Changed paths:
M LayoutTests/TestExpectations
A LayoutTests/fast/canvas/image-buffer-resource-limits-expected.txt
A LayoutTests/fast/canvas/image-buffer-resource-limits.html
A 
LayoutTests/platform/glib/fast/canvas/image-buffer-resource-limits-expected.txt
M LayoutTests/platform/mac-wk1/TestExpectations
M LayoutTests/platform/win/TestExpectations
M Source/WebCore/Headers.cmake
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
M Source/WebCore/page/ChromeClient.h
A Source/WebCore/platform/graphics/ImageBufferResourceLimits.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/GPUProcess/RemoteSharedResourceCache.cpp
M Source/WebKit/GPUProcess/RemoteSharedResourceCache.h
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h

  Log Message:
  ---
  Add limits to the number of ImageBuffers that the GPU process can create
https://bugs.webkit.org/show_bug.cgi?id=273326
rdar://95930955

Reviewed by Matt Woodrow.

On Cocoa ports, ImageBuffers created in the GPU process consume both
global and process-wide resources. Accelerated ImageBuffers consume
IOSurface handles (which the kernel has a limited number of, and which
also have a per process limit) and Metal objects (which are also limited
per process). Unaccelerated ImageBuffers consume Mach port handles for
their ShareableBitmap handles (which are per process).

Prevent leaks (both undiagnosed and from poorly behaving Web content
creating 2D canvases) from exhausting these resources by placing limits
on the number of ImageBuffers the GPU process can create.

These limits are:

* 200,000 ImageBuffers for the GPU process (a number a bit lower than
  the 256K Mach port limit)
* 50,000 canvas ImageBuffers for each Web Content process (to prevent
  one Web Content process from using the entire global limit)
* 10,000 accelerated ImageBuffers for the GPU process (a number a bit
  lower than the 16K per-process IOSurface limit)
* 5,000 accelerated canvas ImageBuffers for each Web Content process (to
  prevent one Web Content process from using the entire global limit)

* LayoutTests/fast/canvas/image-buffer-resource-limits-expected.txt: Added.
* LayoutTests/fast/canvas/image-buffer-resource-limits.html: Added.
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/WebCore/Headers.cmake:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::getEffectiveRenderingModeForTesting):
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::getImageBufferResourceLimitsForTesting const):
* Source/WebCore/platform/graphics/ImageBufferResourceLimits.h: Added.
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::getEffectiveRenderingModeOfNewlyCreatedAcceleratedImageBuffer):
(WebCore::Internals::getImageBufferResourceLimits):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/GPUProcess/RemoteSharedResourceCache.cpp:
(WebKit::RemoteSharedResourceCache::didCreateImageBuffer):
(WebKit::RemoteSharedResourceCache::didReleaseImageBuffer):
(WebKit::RemoteSharedResourceCache::reachedAcceleratedImageBufferLimit const):
(WebKit::RemoteSharedResourceCache::reachedImageBufferForCanvasLimit const):
(WebKit::RemoteSharedResourceCache::getResourceLimitsForTesting const):
* Source/WebKit/GPUProcess/RemoteSharedResourceCache.h:
* Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp:
(WebKit::RemoteImageBuffer::RemoteImageBuffer):
(WebKit::RemoteImageBuffer::~RemoteImageBuffer):
(WebKit::RemoteImageBuffer::stopListeningForIPC):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::adjustImageBufferRenderingMode):
(WebKit::RemoteRenderingBackend::allocateImageBuffer):
(WebKit::RemoteRenderingBackend::getImageBufferResourceLimitsForTesting):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source

[webkit-changes] [WebKit/WebKit] fbdfff: Put 'd' property support behind a feature flag

2024-05-30 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fbdfff8e6dbaa200426e5cedfb3899818cffec40
  
https://github.com/WebKit/WebKit/commit/fbdfff8e6dbaa200426e5cedfb3899818cffec40
  Author: Cameron McCormack 
  Date:   2024-05-30 (Thu, 30 May 2024)

  Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/css/CSSProperties.json

  Log Message:
  ---
  Put 'd' property support behind a feature flag
https://bugs.webkit.org/show_bug.cgi?id=274935
rdar://129028514

Reviewed by Matthieu Dubet.

The feature is not yet complete, but we are currently parsing the
property. Move it behind a disabled feature flag for now.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/css/CSSProperties.json:

Canonical link: https://commits.webkit.org/279563@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2caf21: Add a ClosedArc path segment type

2024-01-29 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2caf219a57a77bfec2cdbbb8c987f186356cfc02
  
https://github.com/WebKit/WebKit/commit/2caf219a57a77bfec2cdbbb8c987f186356cfc02
  Author: Cameron McCormack 
  Date:   2024-01-29 (Mon, 29 Jan 2024)

  Changed paths:
M Source/WebCore/platform/graphics/Path.cpp
M Source/WebCore/platform/graphics/Path.h
M Source/WebCore/platform/graphics/PathImpl.h
M Source/WebCore/platform/graphics/PathSegment.h
M Source/WebCore/platform/graphics/PathSegmentData.cpp
M Source/WebCore/platform/graphics/PathSegmentData.h
M Source/WebCore/platform/graphics/PathStream.cpp
M Source/WebCore/platform/graphics/PathStream.h
M Source/WebCore/platform/graphics/cairo/PathCairo.cpp
M Source/WebCore/platform/graphics/cairo/PathCairo.h
M Source/WebCore/platform/graphics/cg/PathCG.cpp
M Source/WebCore/platform/graphics/cg/PathCG.h
M Source/WebCore/platform/graphics/displaylists/DisplayListItem.h
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
M Source/WebKit/GPUProcess/graphics/PathSegment.serialization.in
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/DisplayListArgumentCoders.serialization.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h

  Log Message:
  ---
  Add a ClosedArc path segment type
https://bugs.webkit.org/show_bug.cgi?id=268236
rdar://120928268

Reviewed by Simon Fraser.

Store paths consisting of a arc() / closePath() pair as a single path
segment, and add a single display list item to represent filling or
stroking such paths.

* Source/WebCore/platform/graphics/Path.cpp:
(WebCore::Path::asSingleArc const):
(WebCore::Path::closeSubpath):
(WebCore::Path::singleClosedArc const):
(WebCore::Path::isClosed const):
* Source/WebCore/platform/graphics/Path.h:
* Source/WebCore/platform/graphics/PathImpl.h:
(WebCore::PathImpl::singleClosedArc const):
* Source/WebCore/platform/graphics/PathSegment.h:
(WebCore::PathSegment::closesSubpath const):
(WebCore::PathSegment::isCloseSubPath const): Deleted.
* Source/WebCore/platform/graphics/PathSegmentData.cpp:
(WebCore::operator<<):
(WebCore::PathClosedArc::calculateEndPoint const):
(WebCore::PathClosedArc::tryGetEndPointWithoutContext const):
(WebCore::PathClosedArc::extendFastBoundingRect const):
(WebCore::PathClosedArc::extendBoundingRect const):
* Source/WebCore/platform/graphics/PathSegmentData.h:
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::add):
(WebCore::PathStream::singleClosedArc const):
(WebCore::PathStream::isClosed const):
* Source/WebCore/platform/graphics/PathStream.h:
* Source/WebCore/platform/graphics/cg/PathCG.cpp:
(WebCore::PathCG::add):
(WebCore::addToCGContextPath):
* Source/WebCore/platform/graphics/cg/PathCG.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItem.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::FillClosedArc::apply const):
(WebCore::DisplayList::FillClosedArc::dump const):
(WebCore::DisplayList::StrokeClosedArc::apply const):
(WebCore::DisplayList::StrokeClosedArc::dump const):
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::FillClosedArc::FillClosedArc):
(WebCore::DisplayList::FillClosedArc::closedArc const):
(WebCore::DisplayList::FillClosedArc::path const):
(WebCore::DisplayList::StrokeClosedArc::StrokeClosedArc):
(WebCore::DisplayList::StrokeClosedArc::closedArc const):
(WebCore::DisplayList::StrokeClosedArc::path const):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::strokePath):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordFillClosedArc):
(WebCore::DisplayList::RecorderImpl::recordStrokeClosedArc):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebKit/GPUProcess/graphics/PathSegment.serialization.in:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::fillClosedArc):
(WebKit::RemoteDisplayListRe

[webkit-changes] [WebKit/WebKit] fe1e48: Invalidate GlyphDisplayListCache entries in more p...

2024-01-22 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fe1e4812260edf0b2117c1f78ddecd7c3d584f86
  
https://github.com/WebKit/WebKit/commit/fe1e4812260edf0b2117c1f78ddecd7c3d584f86
  Author: Cameron McCormack 
  Date:   2024-01-22 (Mon, 22 Jan 2024)

  Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBox.h
M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContent.cpp
M 
Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.cpp
M Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.h
M Source/WebCore/rendering/GlyphDisplayListCache.cpp
M Source/WebCore/rendering/GlyphDisplayListCache.h
A Source/WebCore/rendering/GlyphDisplayListCacheRemoval.cpp
A Source/WebCore/rendering/GlyphDisplayListCacheRemoval.h
M Source/WebCore/rendering/LegacyInlineBox.h
M Source/WebCore/rendering/LegacyInlineTextBox.cpp
M Source/WebCore/rendering/LegacyInlineTextBox.h
M Source/WebCore/rendering/ReferencedSVGResources.cpp
M Source/WebCore/rendering/TextPainter.h

  Log Message:
  ---
  Invalidate GlyphDisplayListCache entries in more places
https://bugs.webkit.org/show_bug.cgi?id=267843
rdar://119833765

Reviewed by Simon Fraser.

With IFC, we currently remove entries from the GlyphDisplayListCache in
the InlineDisplay::Content destructor, and in some of the
LayoutIntegration::InlineContent mutation methods. But we are not
removing enough entries, since we use InlineDisplay::Box pointers as the
GlyphDisplayListCache::m_entriesForLayoutRun keys, but we store
InlineDisplay::Box objects in vectors, so they can move around in memory.

This can cause us to replay the wrong display list, if we're unlucky
enough to place an InlineDisplay::Box at the same address as one of the
stale pointers. (This is not a security issue, since we only use the
InlineDisplay::Box pointer as an opaque key, and we always hold a strong
reference to the display list stored in the map.)

Change to remove entries from the GlyphDisplayListCache in the
destructor of InlineDisplay::Box instead. Store a bit on InlineDisplay::Box
and LegacyInlineTextBox to record whether the box is present in the
GlyphDisplayListCache, and only attempt to remove it if the bit is set.
This avoids the overhead of hashing the pointer and looking up the
GlyphDisplayListCache map in the common case of the cache not being
engaged (and, for InlineDisplay::Box, if it's not a text box).

(This does add an explicit destructor to InlineDisplay::Box, but the
class already has a non-trivial destructor due to the CheckedPtr it
stores.)

* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::setIsInGlyphDisplayListCache):
(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::~Box):
(WebCore::InlineDisplay::Box::removeFromGlyphDisplayListCache):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContent.cpp:
(WebCore::InlineDisplay::Content::clear):
(WebCore::InlineDisplay::Content::set):
(WebCore::InlineDisplay::Content::remove):
(WebCore::InlineDisplay::invalidateGlyphCache): Deleted.
* Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.cpp:
(WebCore::LayoutIntegration::InlineContent::~InlineContent): Deleted.
* Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.h:
* Source/WebCore/rendering/GlyphDisplayListCache.cpp:
(WebCore::GlyphDisplayListCache::getDisplayList):
(WebCore::GlyphDisplayListCache::get):
* Source/WebCore/rendering/GlyphDisplayListCache.h:
(WebCore::GlyphDisplayListCache::get): Deleted.
* Source/WebCore/rendering/GlyphDisplayListCacheRemoval.cpp: Added.
(WebCore::removeBoxFromGlyphDisplayListCache):
* Source/WebCore/rendering/GlyphDisplayListCacheRemoval.h: Added.
* Source/WebCore/rendering/LegacyInlineBox.h:
(WebCore::LegacyInlineBox::isInGlyphDisplayListCache const):
(WebCore::LegacyInlineBox::setIsInGlyphDisplayListCache):
* Source/WebCore/rendering/LegacyInlineTextBox.cpp:
(WebCore::LegacyInlineTextBox::~LegacyInlineTextBox):
* Source/WebCore/rendering/LegacyInlineTextBox.h:
(WebCore::LegacyInlineTextBox::removeFromGlyphDisplayListCache):
* Source/WebCore/rendering/TextPainter.h:
(WebCore::TextPainter::setGlyphDisplayListIfNeeded):
(WebCore::TextPainter::removeGlyphDisplayList): Deleted.

Canonical link: https://commits.webkit.org/273320@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 372410: Invalidate scope-breaking :has(:is(...)) selectors...

2023-09-15 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3724105055b3d155fee1da5604623c6200cf1f28
  
https://github.com/WebKit/WebKit/commit/3724105055b3d155fee1da5604623c6200cf1f28
  Author: Cameron McCormack 
  Date:   2023-09-15 (Fri, 15 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt
M Source/WebCore/style/ChildChangeInvalidation.cpp
M Source/WebCore/style/ChildChangeInvalidation.h
M Source/WebCore/style/ClassChangeInvalidation.cpp
M Source/WebCore/style/RuleFeature.cpp
M Source/WebCore/style/RuleFeature.h
M Source/WebCore/style/StyleInvalidator.cpp
M Source/WebCore/style/StyleInvalidator.h
M Source/WebCore/style/StyleScopeRuleSets.cpp
M Source/WebCore/style/StyleScopeRuleSets.h

  Log Message:
  ---
  Invalidate scope-breaking :has(:is(...)) selectors more thoroughly
https://bugs.webkit.org/show_bug.cgi?id=253944
rdar://106768250

Reviewed by Antti Koivisto.

It's possible to write :has() selectors with arguments that can match
elements outside of the :has scope, such as

:has(:is(.x .y))

which could match the .x against an ancestor of the :has scope, and

:has(~ :is(.x .y))

which could match the .x against an ancestor of a later sibling of the
:has scope.

We currently handle scope breaking :has() selectors by generating
RuleFeatures based on the nested selectors' features and storing them
with MatchElement::HasNonSubjectOrScopeBreaking, which causes
invalidation to match the inner scope-breaking selector (the :is())
against all elements in the document.

Because we store these in InvalidationRuleSets keyed off the nested
selectors' features, it means that for the above examples, we will
process these document-wide invalidations whenever a class name changes
to or from x or y. But this is not sufficient to invalidate for
selectors like

:has(:is(.x + .y .z))

where if the .x and .y elements are outside the :has scope, an element
insertion or removal between them will not find any relevant
invalidation rule sets, and

:has(~ :is(.x ~ .y))

for similar reasons.

This PR changes how we collect scope breaking :has() rules, so that in
addition to generating entries in m_hasPseudoClassInvalidationRuleSets
on Style::ScopeRuleSet, we also record them in a new
m_scopeBreakingHasPseudoClassInvalidationRuleSet, which we look up for
every element insertion or removal. For simplicity, we do this more
drastic invalidation for both of the above cases.

MatchElement::HasNonSubjectOrScopeBreaking is split into two separate
values -- HasNonSubject and HasScopeBreaking -- where only the latter
causes an entry to be added to
m_scopeBreakingHasPseudoClassInvalidationRuleSet.

This change does not regress the performance of invalidation of :has()
selectors that do not contain logical combination pseudo-classes like
:is() and :not(), or which have do have one but do not have any selector
combinators inside them.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt:
* Source/WebCore/style/ChildChangeInvalidation.cpp:
(WebCore::Style::ChildChangeInvalidation::invalidateForChangedElement):
(WebCore::Style::ChildChangeInvalidation::invalidateForChangeOutsideHasScope):
(WebCore::Style::ChildChangeInvalidation::invalidateForHasBeforeMutation):
(WebCore::Style::ChildChangeInvalidation::invalidateForHasAfterMutation):
(WebCore::Style::needsDescendantTraversal):
* Source/WebCore/style/ChildChangeInvalidation.h:
* Source/WebCore/style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::computeInvalidation):
* Source/WebCore/style/RuleFeature.cpp:
(WebCore::Style::isSiblingOrSubject):
(WebCore::Style::isHasPseudoClassMatchElement):
(WebCore::Style::isScopeBreaking):
(WebCore::Style::computeNextHasPseudoClassMatchElement):
(WebCore::Style::computeHasPseudoClassMatchElement):
(WebCore::Style::computeSubSelectorMatchElement):
(WebCore::Style::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):
(WebCore::Style::RuleFeatureSet::collectFeatures):
(WebCore::Style::RuleFeatureSet::add):
(WebCore::Style::RuleFeatureSet::clear):
(WebCore::Style::RuleFeatureSet::shrinkToFit):
* Source/WebCore/style/RuleFeature.h:
(WebCore::Style::RuleFeatureSet::usesMatchElement const):
(WebCore::Style::RuleFeatureSet::usesHasPseudoClass const):
* Source/WebCore/style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):
(WebCore::Style::Invalidator::invalidateWithScopeBreakingHasPseudoClassRuleSet):
* Source/WebCore/style/StyleInvalidator.h:
* Source/WebCore/style/StyleScopeRuleSets.cpp:

[webkit-changes] [WebKit/WebKit] 20ce50: Invalidate :has(~ :is(.x ~ .y)) correctly

2023-09-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 20ce50e23068f44e6025e5d6c4196d8aa1116add
  
https://github.com/WebKit/WebKit/commit/20ce50e23068f44e6025e5d6c4196d8aa1116add
  Author: Cameron McCormack 
  Date:   2023-09-12 (Tue, 12 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt
M Source/WebCore/style/ClassChangeInvalidation.cpp
M Source/WebCore/style/RuleFeature.cpp
M Source/WebCore/style/RuleFeature.h
M Source/WebCore/style/StyleInvalidator.cpp

  Log Message:
  ---
  Invalidate :has(~ :is(.x ~ .y)) correctly
https://bugs.webkit.org/show_bug.cgi?id=261370
rdar://problem/115205991

Reviewed by Antti Koivisto.

While selectors like

:has(~ .x ~ .y)

need only consider the later siblings of an element with class name "x"
or "y" changes, those like

:has(~ :is(.x ~ .y))

must also consider previous siblings for "x" changes, since the ~
combinator inside the :is() can select past the :has scope.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt:
* Source/WebCore/style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::computeInvalidation):
* Source/WebCore/style/RuleFeature.cpp:
(WebCore::Style::isSiblingOrSubject):
(WebCore::Style::isHasPseudoClassMatchElement):
(WebCore::Style::computeNextHasPseudoClassMatchElement):
(WebCore::Style::computeHasPseudoClassMatchElement):
* Source/WebCore/style/RuleFeature.h:
(WebCore::Style::RuleFeatureSet::usesHasPseudoClass const):
* Source/WebCore/style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):

Canonical link: https://commits.webkit.org/267932@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 32c83e: Propagate scope element into :has CheckingContext

2023-09-11 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 32c83e1e34db9c8cdd92217ee3240daff273e1e4
  
https://github.com/WebKit/WebKit/commit/32c83e1e34db9c8cdd92217ee3240daff273e1e4
  Author: Cameron McCormack 
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/has-argument-with-explicit-scope-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt
M Source/WebCore/css/SelectorChecker.cpp

  Log Message:
  ---
  Propagate scope element into :has CheckingContext
https://bugs.webkit.org/show_bug.cgi?id=261378
rdar://106524140

Reviewed by Tim Nguyen and Antti Koivisto.

In https://bugs.webkit.org/show_bug.cgi?id=261320 we split out
CheckingContext::scope into two separate fields: "scope" for the element
that matches :scope, and "hasScope" for the scope of a :has()
pseudo-class.

We need to propagate scope into the child CheckingContext we create for
:has() pseudo-class matching, otherwise :has(:scope) will never match
anything.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/has-argument-with-explicit-scope-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchHasPseudoClass const):

Canonical link: https://commits.webkit.org/267856@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ec255a: Invalidate :default pseudo-class changes

2023-09-10 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ec255a8cd5cce23106c903bd2fc8620c7eac1e01
  
https://github.com/WebKit/WebKit/commit/ec255a8cd5cce23106c903bd2fc8620c7eac1e01
  Author: Cameron McCormack 
  Date:   2023-09-10 (Sun, 10 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html
M Source/WebCore/html/HTMLInputElement.cpp
M Source/WebCore/html/HTMLInputElement.h

  Log Message:
  ---
  Invalidate :default pseudo-class changes
https://bugs.webkit.org/show_bug.cgi?id=261382


Reviewed by Tim Nguyen.

On an , the presence of the checked="" attribute
determines whether :default matches. We must invalidate :default when
the attribute is added or removed on a checkable input element.

We also must invalidate :default when the type="" changes. Just use
AnyValue rather than compute ahead of time what the new pseudo-class
match value will be, in HTMLInputElement::updateType.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html:
* Source/WebCore/html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::updateType):
(WebCore::HTMLInputElement::attributeChanged):
(WebCore::HTMLInputElement::matchesDefaultPseudoClass const):
(WebCore::HTMLInputElement::setDefaultCheckedState):
(WebCore::HTMLInputElement::copyNonAttributePropertiesFromElement):
* Source/WebCore/html/HTMLInputElement.h:

Canonical link: https://commits.webkit.org/267848@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ae0d40: Prevent :has(:scope ...) from breaking the :has scope

2023-09-08 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ae0d407eae254cf17867edb5b9d66e77b03a521b
  
https://github.com/WebKit/WebKit/commit/ae0d407eae254cf17867edb5b9d66e77b03a521b
  Author: Cameron McCormack 
  Date:   2023-09-08 (Fri, 08 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/has-argument-with-explicit-scope-expected.txt
M Source/WebCore/css/CSSSelector.cpp
M Source/WebCore/css/CSSSelector.h
M Source/WebCore/css/SelectorChecker.cpp
M Source/WebCore/css/SelectorChecker.h
M Source/WebCore/css/parser/CSSSelectorParser.cpp
M Source/WebCore/cssjit/SelectorCompiler.cpp
M Source/WebCore/style/ChildChangeInvalidation.cpp

  Log Message:
  ---
  Prevent :has(:scope ...) from breaking the :has scope
https://bugs.webkit.org/show_bug.cgi?id=261320
rdar://problem/115158183

Reviewed by Antti Koivisto.

This content:



alert(x.matches(":has(:scope span)"));


currently alerts "true", but it should show "false".

We treat :scope as something that can match the :has() scope, but that
is not supported by the spec. Instead it should only match against the
scope induced by the matches() call.

We also need to unconditionally insert the implicit pseudo-class at the
start of the :has() selector argument that matches the :has scope.
Currently we skip this if :scope is present in the select argument
(irrelevant) or if the :has relation is DescendantSpace. But we still
need to check for the :has scope element in these cases.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/has-argument-with-explicit-scope-expected.txt:
* Source/WebCore/css/CSSSelector.cpp:
(WebCore::simpleSelectorSpecificity):
(WebCore::CSSSelector::selectorText const):
* Source/WebCore/css/CSSSelector.h:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
(WebCore::SelectorChecker::matchHasPseudoClass const):
* Source/WebCore/css/SelectorChecker.h:
* Source/WebCore/css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumeRelativeScopeSelector):
* Source/WebCore/cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType):
* Source/WebCore/style/ChildChangeInvalidation.cpp:
(WebCore::Style::ChildChangeInvalidation::invalidateForChangedElement):

Canonical link: https://commits.webkit.org/267809@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 12307b: Invalidate :has(:is(:host(...) ...)) correctly

2023-09-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12307bbe8a5a1eb20864ff71890f87469666c7d9
  
https://github.com/WebKit/WebKit/commit/12307bbe8a5a1eb20864ff71890f87469666c7d9
  Author: Cameron McCormack 
  Date:   2023-09-07 (Thu, 07 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/host-pseudo-class-in-has-expected.txt
M Source/WebCore/style/RuleSet.cpp

  Log Message:
  ---
  Invalidate :has(:is(:host(...) ...)) correctly
https://bugs.webkit.org/show_bug.cgi?id=253945
rdar://106768205

Reviewed by Antti Koivisto.

RuleSet records whether it contains any :host() rules that could
possibly match correctly in a shadow tree -- it checks that the :host()
only appears in the leftmost compound. Invalidation uses this state to
determine whether we need to traverse into a shadow tree, when a class
changes on a host element.

But this is not sufficient to invalidate rules like:

:has(:is(:host(...) div))

This is a properly used :host() selector, since it appears in the
leftmost position. So we adjust isHostSelectorMatchingInShadowTree to
look into nested selector list arguments like those found in :has().

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/host-pseudo-class-in-has-expected.txt:
* Source/WebCore/style/RuleSet.cpp:
(WebCore::Style::isHostSelectorMatchingInShadowTree):

Canonical link: https://commits.webkit.org/267773@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 630e53: Invalidate :has() with nested positional pseudo-cl...

2023-09-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 630e5323e6dcbd3c95adb5b8caedb9d8038b445b
  
https://github.com/WebKit/WebKit/commit/630e5323e6dcbd3c95adb5b8caedb9d8038b445b
  Author: Cameron McCormack 
  Date:   2023-09-07 (Thu, 07 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/child-indexed-pseudo-classes-in-has-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has-expected.txt
M Source/WebCore/css/SelectorChecker.cpp
M Source/WebCore/style/ChildChangeInvalidation.cpp
M Source/WebCore/style/ChildChangeInvalidation.h

  Log Message:
  ---
  Invalidate :has() with nested positional pseudo-class selectors correctly
https://bugs.webkit.org/show_bug.cgi?id=253943
rdar://106768224

Reviewed by Antti Koivisto.

ChildChangeInvalidation currently handles :has() invalidation by
traversing the newly inserted or removed subtree and checking whether
there are any :has() rules whose nested selector could match the elements
in the subtree. This is not sufficient to invalidate rules like:

:has(:first-child)
:has(:nth-child(2n+1))
:has(:nth-child(n2+1 of .foo))

When the parent of the changed subtree has any of these flags:

ChildrenAffectedByFirstChildRules
ChildrenAffectedByLastChildRules
ChildrenAffectedByForwardPositionalRules
ChildrenAffectedByBackwardPositionalRules

we must invalidate some siblings of the subtree, to determine if the
:has() selector might have changed.

The "check the existing sibling" optimization that
ChildChangeInvalidation::invalidateForChangedElement does is not valid
if it's called with a sibling of the changed subtree, so we pass in
a ChangedElementRelation value to control whether to skip it.

* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/child-indexed-pseudo-classes-in-has-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has-expected.txt:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchHasPseudoClass const):
* Source/WebCore/style/ChildChangeInvalidation.cpp:
(WebCore::Style::ChildChangeInvalidation::invalidateForChangedElement):
(WebCore::Style::ChildChangeInvalidation::invalidateForHasBeforeMutation):
(WebCore::Style::ChildChangeInvalidation::invalidateForHasAfterMutation):
(WebCore::Style::ChildChangeInvalidation::traverseRemovedElements):
(WebCore::Style::ChildChangeInvalidation::traverseAddedElements):
(WebCore::Style::ChildChangeInvalidation::traverseRemainingExistingSiblings):
* Source/WebCore/style/ChildChangeInvalidation.h:

Canonical link: https://commits.webkit.org/267771@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 0c0bfc: Invalidate :nth-child() selectors correctly when n...

2023-09-03 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0c0bfc05ec5c27a7bd2176002fd581a4f3157f7e
  
https://github.com/WebKit/WebKit/commit/0c0bfc05ec5c27a7bd2176002fd581a4f3157f7e
  Author: Cameron McCormack 
  Date:   2023-09-03 (Sun, 03 Sep 2023)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/style/ClassChangeInvalidation.cpp
M Source/WebCore/style/RuleFeature.cpp
M Source/WebCore/style/RuleFeature.h
M Source/WebCore/style/StyleInvalidator.cpp

  Log Message:
  ---
  Invalidate :nth-child() selectors correctly when not in subject position
https://bugs.webkit.org/show_bug.cgi?id=253941
rdar://106740353

Reviewed by Antti Koivisto.

We use MatchResult::AnySibling when an element that matches the selector
inside an :nth-child() pseudo-class changes. But when we process that
invalidation, it only invalidates the element itself. This means that
AnySibling is only correct when the :nth-child() is in the subject
position.

Introduce MatchResult::ParentAnySibling and AncestorAnySibling to
represent invalidations required for :nth-child() pseudo-classes
followed by child or descendant combinators.

Canonical link: https://commits.webkit.org/267600@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bb27e4: [@property] Handle dynamic updates to viewport units

2023-09-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bb27e4ae20f7f78a43ef1347c25be6eead488f29
  
https://github.com/WebKit/WebKit/commit/bb27e4ae20f7f78a43ef1347c25be6eead488f29
  Author: Cameron McCormack 
  Date:   2023-09-02 (Sat, 02 Sep 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic-expected.txt
M Source/WebCore/css/CSSPrimitiveValue.cpp
M Source/WebCore/css/CSSRegisteredCustomProperty.h
M Source/WebCore/css/CSSValue.h
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/css/DOMCSSRegisterCustomProperty.cpp
M Source/WebCore/style/CustomPropertyRegistry.cpp
M Source/WebCore/style/CustomPropertyRegistry.h
M Source/WebCore/style/StyleScope.cpp

  Log Message:
  ---
  [@property] Handle dynamic updates to viewport units
https://bugs.webkit.org/show_bug.cgi?id=255689
rdar://108287215

Reviewed by Antti Koivisto.

Viewport units are "computationally independent", and so are allowed in
registered custom property initial values. But we don't have any
mechanism to invalidate them when the viewport size changes.

* Source/WebCore/css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::collectComputedStyleDependencies const):

Record whether the value had any viewport units.

* Source/WebCore/css/CSSRegisteredCustomProperty.h:

Store the CSS parser tokens an initial value was created from if it
it contains viewport units, so that we can re-parse it when the viewport
is resized.

* Source/WebCore/css/CSSValue.h:
(WebCore::ComputedStyleDependencies::isComputationallyIndependent const):
(WebCore::ComputedStyleDependencies::isEmpty const): Deleted.

Rename isEmpty, since we don't want it to look at the new
viewportDimensions member.

* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::ComputedStyleExtractor::customPropertyValue const):
(WebCore::ComputedStyleExtractor::propertyValue const):

Flush layout in the parent document if there are viewport units used
anywhere in the current document.

* Source/WebCore/css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
* Source/WebCore/style/CustomPropertyRegistry.cpp:
(WebCore::Style::CustomPropertyRegistry::registerFromAPI):
(WebCore::Style::CustomPropertyRegistry::registerFromStylesheet):
(WebCore::Style::CustomPropertyRegistry::parseInitialValue):

Factor out initial value parsing from
DOMCSSRegisterCustomProperty::registerProperty and
CustomPropertyRegistry::registerFromStylesheet into a new function
parseInitialValue, which returns both the newly parsed
CSSCustomPropertyValue as well as whether it contained viewport unit
values.

* Source/WebCore/style/CustomPropertyRegistry.h:
(WebCore::Style::CustomPropertyRegistry::invalidatePropertiesWithViewportUnits):
* Source/WebCore/style/StyleScope.cpp:
(WebCore::Style::Scope::didChangeViewportSize):

Respond to viewport size changes by invalidating all registered custom
properties whose initial value contains viewport units.

Canonical link: https://commits.webkit.org/267590@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f452d4: Support mixed percentage and length/number argumen...

2023-08-19 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f452d441b0232de141054206c0bd5ae0ab4e2bc0
  
https://github.com/WebKit/WebKit/commit/f452d441b0232de141054206c0bd5ae0ab4e2bc0
  Author: Cameron McCormack 
  Date:   2023-08-19 (Sat, 19 Aug 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/round-mod-rem-computed-expected.txt
M Source/WebCore/css/calc/CSSCalcOperationNode.cpp

  Log Message:
  ---
  Support mixed percentage and length/number arguments in CSS step functions
https://bugs.webkit.org/show_bug.cgi?id=259714
rdar://problem/113234898

Reviewed by Tim Nguyen.

We shouldn't just check that the two numeric argumnets to round() etc.
have the same value category, but if one is Percent then we should
support Length or Number as the other, and produce an overall
LengthPercent or NumberPercent category.

Fix another bug in this code, where we currently check that the numeric
arguments aren't isRoundOperation(), but this should be
isRoundConstant(). Otherwise values like round(round(10, 5), 2) are
rejected.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/round-mod-rem-computed-expected.txt:
* Source/WebCore/css/calc/CSSCalcOperationNode.cpp:
(WebCore::resolvedTypeForStep):
(WebCore::CSSCalcOperationNode::createStep):
(WebCore::CSSCalcOperationNode::createRound):
(WebCore::validateRoundChildren): Deleted.

Canonical link: https://commits.webkit.org/267072@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bc5272: Path::transform() should not trigger creation of a...

2023-08-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bc527208a62ff94103079beae9e5e582134d9b49
  
https://github.com/WebKit/WebKit/commit/bc527208a62ff94103079beae9e5e582134d9b49
  Author: Cameron McCormack 
  Date:   2023-08-07 (Mon, 07 Aug 2023)

  Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/platform/graphics/Path.cpp
M Source/WebCore/platform/graphics/PathImpl.h
M Source/WebCore/platform/graphics/PathSegment.cpp
M Source/WebCore/platform/graphics/PathSegment.h
M Source/WebCore/platform/graphics/PathSegmentData.cpp
M Source/WebCore/platform/graphics/PathSegmentData.h
M Source/WebCore/platform/graphics/PathStream.cpp
M Source/WebCore/platform/graphics/PathStream.h
M Source/WebCore/platform/graphics/cairo/PathCairo.cpp
M Source/WebCore/platform/graphics/cairo/PathCairo.h
M Source/WebCore/platform/graphics/cg/PathCG.cpp
M Source/WebCore/platform/graphics/cg/PathCG.h

  Log Message:
  ---
  Path::transform() should not trigger creation of a platform path
https://bugs.webkit.org/show_bug.cgi?id=258759
rdar://problem/111934640

Reviewed by Simon Fraser.

Many paths consist only of Move/Line/Quadratic/Cubic/Close segments, which are
all simple to apply an AffineTransform to. Transform single segment and 
PathStream
based paths in place when Path::transform() is called, to avoid the overhead of
generating a CGPath. If other segment types are in the path, continue to convert
to a platform path first.

Some WPT (path + transform) tests fail on GTK ports because the tests are 
fragile
to floating point calculations. The tests rotate the context by 90 degree and 
scale
it by 283 then they stroke a line to cover the whole canvas by the stroke color.
If we scale by 282, the last row in the canvas will not be stroked even without
this patch. On GKT port and with this patch, the last row is stroked but it is
anti-aliased with the background.

* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/platform/graphics/Path.cpp:
(WebCore::Path::transform):
* Source/WebCore/platform/graphics/PathImpl.h:
* Source/WebCore/platform/graphics/PathSegment.cpp:
(WebCore::PathSegment::canTransform const):
(WebCore::PathSegment::transform):
* Source/WebCore/platform/graphics/PathSegment.h:
* Source/WebCore/platform/graphics/PathSegmentData.cpp:
(WebCore::PathMoveTo::transform):
(WebCore::PathLineTo::transform):
(WebCore::PathQuadCurveTo::transform):
(WebCore::PathBezierCurveTo::transform):
(WebCore::PathDataLine::transform):
(WebCore::PathDataQuadCurve::transform):
(WebCore::PathDataBezierCurve::transform):
(WebCore::PathCloseSubpath::transform):
* Source/WebCore/platform/graphics/PathSegmentData.h:
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::transform):
* Source/WebCore/platform/graphics/PathStream.h:
* Source/WebCore/platform/graphics/cairo/PathCairo.cpp:
(WebCore::PathCairo::transform):
* Source/WebCore/platform/graphics/cairo/PathCairo.h:
* Source/WebCore/platform/graphics/cg/PathCG.cpp:
(WebCore::PathCG::transform):
* Source/WebCore/platform/graphics/cg/PathCG.h:

Canonical link: https://commits.webkit.org/266672@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5466cd: Avoid going back to the GPU process for canvas Ima...

2023-08-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5466cd2c24514bdeee05075d5a2eb35e8c146e40
  
https://github.com/WebKit/WebKit/commit/5466cd2c24514bdeee05075d5a2eb35e8c146e40
  Author: Cameron McCormack 
  Date:   2023-08-07 (Mon, 07 Aug 2023)

  Changed paths:
A LayoutTests/fast/canvas/canvas-ImageData-cache-expected.txt
A LayoutTests/fast/canvas/canvas-ImageData-cache.html
A LayoutTests/fast/canvas/imageData-consistency-expected.txt
A LayoutTests/fast/canvas/imageData-consistency.html
A LayoutTests/platform/gtk/fast/canvas/imageData-consistency-expected.txt
A LayoutTests/platform/wpe/fast/canvas/imageData-consistency-expected.txt
M Source/WebCore/html/ImageData.cpp
M Source/WebCore/html/ImageData.h
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h
M Source/WebCore/platform/Timer.h

  Log Message:
  ---
  Avoid going back to the GPU process for canvas ImageData when possible
https://bugs.webkit.org/show_bug.cgi?id=259436
rdar://problem/112746729

Reviewed by Cameron McCormack and Myles C. Maxfield.

On a 2D canvas, if a recent putImageData() was made with no other
intervening drawing commands, we can use its data to fulfill a
subsequent getImageData(). Start with some simple conditions for
ImageData size and drawing dimensions, which can be extended later if it
proves useful.

* LayoutTests/fast/canvas/canvas-ImageData-cache-expected.txt: Added.
* LayoutTests/fast/canvas/canvas-ImageData-cache.html: Added.
* Source/WebCore/html/ImageData.cpp:
(WebCore::ImageData::clone const):
* Source/WebCore/html/ImageData.h:
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::reset):
(WebCore::CanvasRenderingContext2DBase::didDraw):
(WebCore::CanvasRenderingContext2DBase::cacheImageDataIfPossible):
(WebCore::CanvasRenderingContext2DBase::takeCachedImageDataIfPossible const):
(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::CanvasRenderingContext2DBase::putImageData):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h:

Canonical link: https://commits.webkit.org/266632@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] fe314e: Use a new type PathCloseSubpath instead of std::mo...

2023-07-24 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fe314ea4b982abb2cf203a909be9c5fc180cbcb0
  
https://github.com/WebKit/WebKit/commit/fe314ea4b982abb2cf203a909be9c5fc180cbcb0
  Author: Cameron McCormack 
  Date:   2023-07-24 (Mon, 24 Jul 2023)

  Changed paths:
M Source/WebCore/platform/graphics/PathSegment.cpp
M Source/WebCore/platform/graphics/PathSegment.h
M Source/WebCore/platform/graphics/PathSegmentData.cpp
M Source/WebCore/platform/graphics/PathSegmentData.h
M Source/WebCore/platform/graphics/PathStream.cpp
M Source/WebCore/platform/graphics/cairo/PathCairo.cpp
M Source/WebCore/platform/graphics/cg/PathCG.cpp
M Source/WebKit/GPUProcess/graphics/PathSegment.serialization.in

  Log Message:
  ---
  Use a new type PathCloseSubpath instead of std::monostate to represent a 
close command in PathSegment
https://bugs.webkit.org/show_bug.cgi?id=259430
rdar://problem/112741404

Reviewed by Simon Fraser.

Adding an empty struct lets us treat this command like all the others,
and not special case it in the WTF::switchOn calls in PathSegment.cpp.

* Source/WebCore/platform/graphics/PathSegment.cpp:
(WebCore::PathSegment::calculateEndPoint const):
(WebCore::PathSegment::extendFastBoundingRect const):
(WebCore::PathSegment::extendBoundingRect const):
(WebCore::PathSegment::addToImpl const):
(WebCore::PathSegment::applyElements const):
(WebCore::operator<<):
* Source/WebCore/platform/graphics/PathSegment.h:
(WebCore::PathSegment::isCloseSubPath const):
* Source/WebCore/platform/graphics/PathSegmentData.cpp:
(WebCore::PathCloseSubpath::calculateEndPoint const):
(WebCore::PathCloseSubpath::extendFastBoundingRect const):
(WebCore::PathCloseSubpath::extendBoundingRect const):
(WebCore::PathCloseSubpath::addToImpl const):
(WebCore::PathCloseSubpath::applyElements const):
(WebCore::operator<<):
* Source/WebCore/platform/graphics/PathSegmentData.h:
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::closeSubpath):
* Source/WebCore/platform/graphics/cg/PathCG.cpp:
(WebCore::pathSegmentApplierCallback):
* Source/WebKit/GPUProcess/graphics/PathSegment.serialization.in:

Canonical link: https://commits.webkit.org/266264@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5ec234: Avoid creating a new CSSParserContext each time a ...

2023-07-23 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5ec234192a2eebd476418c0dea4a3fc20604b92c
  
https://github.com/WebKit/WebKit/commit/5ec234192a2eebd476418c0dea4a3fc20604b92c
  Author: Cameron McCormack 
  Date:   2023-07-23 (Sun, 23 Jul 2023)

  Changed paths:
M Source/WebCore/html/HTMLCanvasElement.h
M Source/WebCore/html/canvas/CanvasStyle.cpp

  Log Message:
  ---
  Avoid creating a new CSSParserContext each time a color is assigned to 
fillStyle/strokeStyle on a canvas context
https://bugs.webkit.org/show_bug.cgi?id=259431
rdar://112439220

Reviewed by Tim Nguyen.

Creating the CSSParserContext is slightly expensive, since it fetches all of 
the relevant document Settings.

* Source/WebCore/html/HTMLCanvasElement.h:
(WebCore::HTMLCanvasElement::cssParserContext):
* Source/WebCore/html/canvas/CanvasStyle.cpp:
(WebCore::parseColor):

Canonical link: https://commits.webkit.org/266238@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 816bae: Add back inline storage to WebCore::Path

2023-07-19 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 816baea44df683e2518b805a5dc65697c8e70492
  
https://github.com/WebKit/WebKit/commit/816baea44df683e2518b805a5dc65697c8e70492
  Author: Cameron McCormack 
  Date:   2023-07-19 (Wed, 19 Jul 2023)

  Changed paths:
M Source/WebCore/platform/graphics/Path.cpp
M Source/WebCore/platform/graphics/Path.h
M Source/WebCore/platform/graphics/PathStream.cpp
M Source/WebCore/platform/graphics/PathStream.h
M Source/WebKit/Shared/WebCoreArgumentCoders.cpp

  Log Message:
  ---
  Add back inline storage to WebCore::Path
https://bugs.webkit.org/show_bug.cgi?id=259326
rdar://112501668

Reviewed by Simon Fraser.

After https://commits.webkit.org/265569@main, we have three separate
heap allocations when creating a WebCore::Path with a single segment.
(The PathStream, the SegmentsData, and its Vector buffer.) These heap
allocations show up on profiles, and were part of a MotionMark Canvas
Lines regression.

* Source/WebCore/platform/graphics/Path.cpp:
(WebCore::Path::Path):
(WebCore::Path::operator=):
(WebCore::Path::operator== const):
(WebCore::Path::setImpl):
(WebCore::Path::ensurePlatformPathImpl):
(WebCore::Path::ensureImpl):
(WebCore::Path::asImpl):
(WebCore::Path::asImpl const):
(WebCore::Path::moveTo):
(WebCore::Path::asSingleMoveTo const):
(WebCore::Path::addLineTo):
(WebCore::Path::addQuadCurveTo):
(WebCore::Path::addBezierCurveTo):
(WebCore::Path::addArcTo):
(WebCore::Path::addArc):
(WebCore::Path::addEllipse):
(WebCore::Path::addEllipseInRect):
(WebCore::Path::addRect):
(WebCore::Path::addRoundedRect):
(WebCore::Path::closeSubpath):
(WebCore::Path::applySegments const):
(WebCore::Path::clear):
(WebCore::Path::singleSegment const):
(WebCore::Path::singleDataLine const):
(WebCore::Path::singleArc const):
(WebCore::Path::singleQuadCurve const):
(WebCore::Path::singleBezierCurve const):
(WebCore::Path::isEmpty const):
(WebCore::Path::segmentsIfExists const):
(WebCore::Path::isClosed const):
(WebCore::Path::currentPoint const):
(WebCore::Path::fastBoundingRect const):
(WebCore::Path::boundingRect const):
* Source/WebCore/platform/graphics/Path.h:
(WebCore::Path::singleSegmentIfExists const):
(WebCore::Path::asSingle):
(WebCore::Path::asSingle const):
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::create):
(WebCore::PathStream::PathStream):
(WebCore::PathStream::addArc):
* Source/WebCore/platform/graphics/PathStream.h:

Canonical link: https://commits.webkit.org/266156@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 1ace3d: Don't call deferNonVisibleProcessEarlyMemoryCleanu...

2023-07-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1ace3d3f33b26d072a9c04c962986b2912232557
  
https://github.com/WebKit/WebKit/commit/1ace3d3f33b26d072a9c04c962986b2912232557
  Author: Cameron McCormack 
  Date:   2023-07-12 (Wed, 12 Jul 2023)

  Changed paths:
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp

  Log Message:
  ---
  Don't call deferNonVisibleProcessEarlyMemoryCleanupTimer from worker threads
https://bugs.webkit.org/show_bug.cgi?id=259170
rdar://110910174

Reviewed by Simon Fraser.

We call deferNonVisibleProcessEarlyMemoryCleanupTimer in
RemoteResourceCacheProxy::recordNativeImageUse. The idea there is to
avoid discarding decoded image data in background tabs if the background
tab is drawing images, which might be some canvas work, or it could be
other things like Safari taking a tab snapshot. If we didn't avoid this,
we could thrash between discarding decoded data and redecoding.

OffscreenCanvas can also draw images on worker threads, but
deferNonVisibleProcessEarlyMemoryCleanupTimer is not safe to call from
non-main threads. We can safely skip this call if we're not on the main
thread: workers do not have access to images which are stored in the
MemoryCache, so we are not at risk of discarding decoded image data that
the worker will want to re-decode to draw.

* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::recordNativeImageUse):

Canonical link: https://commits.webkit.org/266024@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ecc7e5: Build fix after bug 258764

2023-07-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ecc7e57627e54a220a3c6cddc7d2bb5dcdffb36c
  
https://github.com/WebKit/WebKit/commit/ecc7e57627e54a220a3c6cddc7d2bb5dcdffb36c
  Author: Cameron McCormack 
  Date:   2023-07-12 (Wed, 12 Jul 2023)

  Changed paths:
M Source/WebCore/platform/graphics/cocoa/UnrealizedCoreTextFont.cpp

  Log Message:
  ---
  Build fix after bug 258764
https://bugs.webkit.org/show_bug.cgi?id=259164
rdar://problem/112158177

Unreviewed build fix.

* Source/WebCore/platform/graphics/cocoa/UnrealizedCoreTextFont.cpp:
(WebCore::UnrealizedCoreTextFont::realize const):

Canonical link: https://commits.webkit.org/266008@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 1be526: Unreviewed, reverting 262829@main

2023-05-20 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1be5261428234b2357b74bb5de686c7bce227953
  
https://github.com/WebKit/WebKit/commit/1be5261428234b2357b74bb5de686c7bce227953
  Author: Cameron McCormack 
  Date:   2023-05-20 (Sat, 20 May 2023)

  Changed paths:
M Source/WebCore/Modules/modern-media-controls/controls/time-control.js

  Log Message:
  ---
  Unreviewed, reverting 262829@main
https://bugs.webkit.org/show_bug.cgi?id=257075
rdar://108764454

Reverting 262829@main since it broke the modern media controls scrubber.

Reverted changeset:

"REGRESSION (261912@main): [macOS WK2] 
imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035.html
 is a flaky failure"
https://bugs.webkit.org/show_bug.cgi?id=254745
https://commits.webkit.org/262829@main";

* Source/WebCore/Modules/modern-media-controls/controls/time-control.js:
(TimeControl.prototype.get minimumWidth):
(TimeControl.prototype.get idealMinimumWidth):
(TimeControl.prototype.layout):
(TimeControl.prototype._performIdealLayout):
(TimeControl.prototype.get _scrubberMargin): Deleted.
(TimeControl.prototype._performLayoutWithRightTimeLabel): Deleted.

Canonical link: https://commits.webkit.org/264301@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7b6d03: Use document URL as source of ResizeObserver loop ...

2023-04-14 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7b6d036d50a030bf898eedbe36ad583a50cb2b7f
  
https://github.com/WebKit/WebKit/commit/7b6d036d50a030bf898eedbe36ad583a50cb2b7f
  Author: Cameron McCormack 
  Date:   2023-04-14 (Fri, 14 Apr 2023)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/resize-observer/calculate-depth-for-node-expected.txt
M Source/WebCore/dom/Document.cpp

  Log Message:
  ---
  Use document URL as source of ResizeObserver loop limit error
https://bugs.webkit.org/show_bug.cgi?id=255439
rdar://107905388

Reviewed by Simon Fraser.

In Document::updateResizeObservations we throw an error if we exceed
some limit for the number of times we loop processing ResizeObserver
notifications. This uses getParserLocation to get the location to use in
the error, which returns the empty string if parsing the document has
finished. But when we pass in the empty string to reportException, we
end up censoring the error message as "Script error." because we think
the error came from a different origin, and the "ResizeObserver loop
completed with undelivered notifications." message gets lost.

We can use the document URL here instead. There's no clear more specific
location to use, since when this error is thrown there is no JS on the
stack (updateResizeObservations is one of the rendering update steps),
and no specific ResizeObserver is necessarily the one that caused the
limit to be exceeded.

* 
LayoutTests/imported/w3c/web-platform-tests/resize-observer/calculate-depth-for-node-expected.txt:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateResizeObservations):

Canonical link: https://commits.webkit.org/262989@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] baeabe: Discard decoded image data in Web processes with n...

2023-04-04 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: baeabe11daecb0ce0df709e88ae0ef821f7a2bcb
  
https://github.com/WebKit/WebKit/commit/baeabe11daecb0ce0df709e88ae0ef821f7a2bcb
  Author: Cameron McCormack 
  Date:   2023-04-04 (Tue, 04 Apr 2023)

  Changed paths:
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h
M Source/WebKit/WebProcess/WebPage/DrawingArea.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h

  Log Message:
  ---
  Discard decoded image data in Web processes with no foreground tabs
https://bugs.webkit.org/show_bug.cgi?id=254768


Reviewed by Said Abou-Hallawa.

To reduce memory footprint, this patch discards decoded image data in
Web processes with no foreground tabs.

Destroying the decoded data means there is a risk of images not
rendering next time we paint, if we had decided to async decode (due to
the images being large, or referenced with , etc.).
This can manifest in a couple of ways:

1. When switching back to a tab that's had its decoded image data
   destroyed, we won't see the effect immediately, since we'll show the
   page snapshot without painting the page again. By the next time we
   do need to paint (e.g. after the user interacts with the page in some
   way), the image may briefly disappear while we wait for the async
   decode.

2. When hovering over the tab strip, Safari generates thumbnails showing
   the contents of the tabs. Although the image painting is performed
   with PaintBehavior::Snapshotting, this does not currently override
   , so any previously decoded 
   image will appear blank in the thumbnail.

To avoid these issues, we tell the RemoteLayerTreeDrawingArea to decode
images synchronously in the next rendering update, and adjust
RenderBoxModelObject::decodingModeForImageDraw to prioritize
PaintBehavior::Snapshotting over .

RemoteLayerTreeDrawingArea can perform no-paint rendering updates when
switching back to a background tab, so we wait until we do some painting
(a backing store has a non-empty dirty region) before clearing
m_nextRenderingUpdateRequiresSynchronousImageDecoding.

WebProcess::m_nonVisibleProcessEarlyMemoryCleanupTimer is changed to a
DeferrableOneShotTimer. If a tab is in the background, and we have
already destroyed the image decoded data, we schedule the timer again.
This avoids the image data persisting if the page thumbnails are
generated. If a tab is in the background, and we haven't yet destroyed
the image decoded data (i.e., if the timer is pending), then we defer
the timer when an image is painted. This avoids continuously destroying
then regenerating the decoded data, if the page is repeatedly drawing
images in the background.

When the timer fires, we also tell the RemoteResourceCacheProxy to clear
all its image resources at once, rather than have each NativeImage in
its destructor tell the RemoteResourceCacheProxy to remove a single
image resource, to reduce IPC traffic.

For now, we only do this when UI side compositing is enabled, but it
would also be beneficial in other configurations.

* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
* Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:
(WebKit::QualifiedResourceHeap::releaseAllImageResources):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::releaseAllImageResources):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit:

[webkit-changes] [WebKit/WebKit] 0668d8: Ask system malloc to free up memory in non-visible...

2023-03-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0668d887feed861cb082fe8cea267f1055c5bb49
  
https://github.com/WebKit/WebKit/commit/0668d887feed861cb082fe8cea267f1055c5bb49
  Author: Cameron McCormack 
  Date:   2023-03-02 (Thu, 02 Mar 2023)

  Changed paths:
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h
M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  ---
  Ask system malloc to free up memory in non-visible Web processes
https://bugs.webkit.org/show_bug.cgi?id=253173
rdar://106009868

Reviewed by Geoffrey Garen.

We currently do some memory reduction work in non-visible Web processes (those
that only have background tabs) off a timer. We can ask the system malloc to
free up memory off one of these timers too.

malloc_zone_pressure_relief will block the thread it's called on, so we
call it on a background thread, which is allowed. Local testing shows it
can run for several ms, but it will only cause regular malloc
contention, not block other threads entirely.

This patch repurposes the "graphics cleanup timer" to be an "early
memory cleanup timer", and we perform the system malloc cleanup off it.
The more aggressive cleanup tasks that can clear caches etc. remain off
the other memory cleanup timer, which runs later.

* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::pageDidEnterWindow):
(WebKit::WebProcess::pageWillLeaveWindow):
(WebKit::WebProcess::nonVisibleProcessEarlyMemoryCleanupTimerFired):
(WebKit::WebProcess::nonVisibleProcessGraphicsCleanupTimerFired): Deleted.
* Source/WebKit/WebProcess/WebProcess.h:
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::releaseSystemMallocMemory):

Canonical link: https://commits.webkit.org/261087@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 69098e: Make memory pressure handler call deleteAllCode wi...

2023-03-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 69098ebe6b1ecd3ba973413d35f6c7290715ebae
  
https://github.com/WebKit/WebKit/commit/69098ebe6b1ecd3ba973413d35f6c7290715ebae
  Author: Cameron McCormack 
  Date:   2023-03-02 (Thu, 02 Mar 2023)

  Changed paths:
M Source/WebCore/page/MemoryRelease.cpp

  Log Message:
  ---
  Make memory pressure handler call deleteAllCode with 
PreventCollectionAndDeleteAllCode
https://bugs.webkit.org/show_bug.cgi?id=253133


Reviewed by Mark Lam and Yusuke Suzuki.

The memory pressure handler currently calls
GCController::deleteAllCode(DeleteAllCodeIfNotCollecting), but it turns out we
hit the case of a collection being in progress moderately often. We already
do a bunch of blocky work here to get memory usage down, so let's change this
to PreventCollectionAndDeleteAllCode to guarantee we can drop all JIT code.

* Source/WebCore/page/MemoryRelease.cpp:
(WebCore::releaseCriticalMemory):

Canonical link: https://commits.webkit.org/261061@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7995dc: Produce 8 bit @font-face URL strings when possible

2023-02-22 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7995dcceaf8679a715336b9ee9ee4de7793976ac
  
https://github.com/WebKit/WebKit/commit/7995dcceaf8679a715336b9ee9ee4de7793976ac
  Author: Cameron McCormack 
  Date:   2023-02-22 (Wed, 22 Feb 2023)

  Changed paths:
M Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp

  Log Message:
  ---
  Produce 8 bit @font-face URL strings when possible
https://bugs.webkit.org/show_bug.cgi?id=252781


Reviewed by Simon Fraser.

We can end up wasting memory storing @font-face URLs (which can be large data:
URLs) as 16 bit strings, if they appear in style sheet text stored as a 16 bit
string, even when the URL itself is 8 bit only.

This uses isAllASCII(), when really we could be checking for "is all
Latin-1", but there's an existing fast path for ASCII-checking.

* Source/WebCore/css/parser/CSSPropertyParserWorkerSafe.cpp:
(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontFaceSrcURI):

Canonical link: https://commits.webkit.org/260716@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8b3a06: StyleRuleWithNesting debug heap needs declaration

2023-02-16 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8b3a06d59fa119d35b0a7713bf36049451136a78
  
https://github.com/WebKit/WebKit/commit/8b3a06d59fa119d35b0a7713bf36049451136a78
  Author: Cameron McCormack 
  Date:   2023-02-16 (Thu, 16 Feb 2023)

  Changed paths:
M Source/WebCore/css/StyleRule.h

  Log Message:
  ---
  StyleRuleWithNesting debug heap needs declaration
https://bugs.webkit.org/show_bug.cgi?id=252434


Reviewed by Simon Fraser.

* Source/WebCore/css/StyleRule.h:

Canonical link: https://commits.webkit.org/260405@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a05f1b: Shrink in-memory display list buffers when shrinkT...

2023-02-15 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a05f1b5d1351ea0824c32e1ec195b0c42132078a
  
https://github.com/WebKit/WebKit/commit/a05f1b5d1351ea0824c32e1ec195b0c42132078a
  Author: Cameron McCormack 
  Date:   2023-02-15 (Wed, 15 Feb 2023)

  Changed paths:
M Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp

  Log Message:
  ---
  Shrink in-memory display list buffers when shrinkToFit() is called
https://bugs.webkit.org/show_bug.cgi?id=252295


Reviewed by Simon Fraser.

It's only the current writable buffer that's likely to have a lot of
wasted space.

* Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemBuffer::shrinkToFit):

Canonical link: https://commits.webkit.org/260347@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 147e3e: Reduce custom property storage for sites with larg...

2023-02-15 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 147e3eca970c1bf4808e592c92d1a94ef2723b2f
  
https://github.com/WebKit/WebKit/commit/147e3eca970c1bf4808e592c92d1a94ef2723b2f
  Author: Cameron McCormack 
  Date:   2023-02-15 (Wed, 15 Feb 2023)

  Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/css/CSSComputedStyleDeclaration.cpp
M Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
A Source/WebCore/rendering/style/StyleCustomPropertyData.cpp
M Source/WebCore/rendering/style/StyleCustomPropertyData.h
M Source/WebCore/rendering/style/StyleMiscNonInheritedData.cpp
M Source/WebCore/rendering/style/StyleMiscNonInheritedData.h

  Log Message:
  ---
  Reduce custom property storage for sites with large numbers of custom 
properties on the root
https://bugs.webkit.org/show_bug.cgi?id=252142


Reviewed by Antti Koivisto and Darin Adler.

Some sites have a large number of custom properties set on the root element,
inheriting into the entire document. When different custom properties or values
are set on descendant elements, we clone all of the inherited properties.

This patch changes the storage in StyleCustomPropertyData so that the
first time we copy() one that has some custom properties in it, we point
the cloned object to the original StyleCustomPropertyData as the source
of inherited custom properties, and leave m_values (now renamed to
m_ownValues) empty. Any subsequent copy() of a StyleCustomPropertyData that
already has a pointer to the inherited custom properties will copy that
pointer, and clone m_ownValues like before.

We don't generate an unlimited linked list of inherited custom
properties to look up, to avoid custom property lookup time having
worst case linear time in the depth of the tree.

This saves around 800 KB on the youtube.com in Membuster.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::item const):
* Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp:
(WebCore::ComputedStylePropertyMapReadOnly::entries const):
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setCustomPropertyValue):
* Source/WebCore/rendering/style/RenderStyle.h:
(WebCore::RenderStyle::inheritedCustomProperties const):
(WebCore::RenderStyle::nonInheritedCustomProperties const):
* Source/WebCore/rendering/style/StyleCustomPropertyData.cpp: Added.
(WebCore::StyleCustomPropertyData::StyleCustomPropertyData):
(WebCore::StyleCustomPropertyData::get const):
(WebCore::StyleCustomPropertyData::set):
(WebCore::StyleCustomPropertyData::operator== const):
(WebCore::StyleCustomPropertyData::forEach const):
(WebCore::StyleCustomPropertyData::findKeyAtIndex const):
(WebCore::StyleCustomPropertyData::size const):
* Source/WebCore/rendering/style/StyleCustomPropertyData.h:
(WebCore::StyleCustomPropertyData::copy const):
(WebCore::StyleCustomPropertyData::operator!= const):
(WebCore::StyleCustomPropertyData::operator== const): Deleted.
(WebCore::StyleCustomPropertyData::setCustomPropertyValue): Deleted.
(WebCore::StyleCustomPropertyData::StyleCustomPropertyData): Deleted.

Canonical link: https://commits.webkit.org/260319@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e6817c: Rearrange non-inherited style data to reduce memory

2023-02-14 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e6817c1995730d7ab82bd267d3c20cb74c1b13c5
  
https://github.com/WebKit/WebKit/commit/e6817c1995730d7ab82bd267d3c20cb74c1b13c5
  Author: Cameron McCormack 
  Date:   2023-02-14 (Tue, 14 Feb 2023)

  Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
A Source/WebCore/rendering/style/StyleMiscNonInheritedData.cpp
A Source/WebCore/rendering/style/StyleMiscNonInheritedData.h
A Source/WebCore/rendering/style/StyleNonInheritedData.cpp
A Source/WebCore/rendering/style/StyleNonInheritedData.h
M Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
M Source/WebCore/rendering/style/StyleRareNonInheritedData.h
M Source/WebCore/rendering/style/StyleSurroundData.cpp
M Source/WebCore/rendering/style/StyleSurroundData.h
A Source/WebCore/rendering/style/StyleVisitedLinkColorData.cpp
A Source/WebCore/rendering/style/StyleVisitedLinkColorData.h
R Source/WebCore/rendering/style/StyleVisualData.cpp
R Source/WebCore/rendering/style/StyleVisualData.h

  Log Message:
  ---
  Rearrange non-inherited style data to reduce memory
https://bugs.webkit.org/show_bug.cgi?id=251972


Reviewed by Antti Koivisto.

This patch rearranges the storage of non-inherited style data on a
RenderStyle to reduce memory. To summarize the changes:

1. The RenderStyle::NonInheritedFlags::hasExplicitlySetBorderBottomLeftRadius
   etc. fields are moved to StyleSurroundData to live near border-radius

2. StyleVisualData is removed, saving one word on RenderStyle:

 - clip/hasClip and zoom are moved to StyleRareNonInheritedData,
   since they are rarely used
 - textDecorationLine is moved to RenderStyle::NonInheritedFlags,
   taking the space freed up by moving the border-radius flags

3. The DataRefs for non-inherited style data that currently live on
   RenderStyle (StyleBoxData, StyleSurroundData, StyleBackgroundData,
   and StyleNonInheritedData) are moved to a new StyleNonInheritedData
   object that now hangs off RenderStyle. The working assumption here
   is that most elements do not have changes to their non-inherited
   style data, so this will save three words on RenderStyle (at the
   cost of an extra word for the DataRef and one
   for the StyleNonInheritedData refcount, on elements that do have
   non-inherited properties applying to them).

4. A new StyleVisitedLinkColorData object is introduced to hold the
   non-inherited visited link StyleColors, since they are large.

5. A new StyleMiscNonInheritedData object is introduced to hold style data
   that is less common than Box/Surround/Background, but not that rare.
   These fields are moved from StyleRareNonInheritedData to
   StyleMiscNonInheritedData:

 - the DataRefs for StyleDeprecatedFlexibleBoxData,
   StyleFlexibleBoxData, StyleMultiColData, StyleFilterData,
   StyleTransformData, and the FillLayer for 'mask'
 - the non-inherited visited link StyleColors
 - transitions and animations
 - the {align,justify}-{content,items,self} properties
 - box-shadow
 - content, altText, and hasAttrContent
 - aspectRatioWidth, aspectRatioHeight, and aspectRatioType
 - objectPosition and obejctFit
 - appearance and effectiveAppearance
 - opacity
 - order
 - textOverflow
 - userDrag
 - resize
 - the isNotFinal flag

On 64 bit, object sizes change as follows:

  RenderStyle: 88 -> 56
  StyleSurroundData: 272 -> 272
  StyleRareNonInheritedData: 672 -> 456

with new object sizes:

  StyleNonInheritedData: 48
  StyleMiscNonInheritedData: 152
  StyleVisitedLinkColorData: 120

The set of properties to move to StyleMiscNonInheritedData was
determined using the PLT5 sites both in their recorded state and a
contemporary load of those sites.

This should save 3.7 MB on Membuster.

* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::RenderStyle):
(WebCore::RenderStyle::copyNonInheritedFrom):
(WebCore::RenderStyle::copyContentFrom):
(WebCore::RenderStyle::operator== const):
(WebCore::RenderStyle::descendantAffectingNonInheritedPropertiesEqual const):
(WebCore::RenderStyle::hashForTextAutosizing const):
(WebCore::RenderStyle::equalForTextAutosizing const):
(WebCore::RenderStyle::changeAffectsVisualOverflow const):
(WebCore::miscDataChangeRequiresLayout):
(WebCore::rareDataChangeRequiresLayout):
(WebCore::RenderStyle::changeRequiresLayout const):
(WebCore::RenderStyle::changeRequiresPositionedLayoutOnly const):
(WebCore::miscDataChangeRequiresLayerRepaint):
(WebCore::rareDataChangeRequiresLayerRepaint):
(WebCore::RenderStyle::changeRequiresLayerRepai

[webkit-changes] [WebKit/WebKit] f31c6c: Avoid storing effective language on ElementRareDat...

2023-02-08 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f31c6cd343763c953418192bbcea0982c167f7f7
  
https://github.com/WebKit/WebKit/commit/f31c6cd343763c953418192bbcea0982c167f7f7
  Author: Cameron McCormack 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
A LayoutTests/fast/css/lang-matching-document-invalidation-expected.txt
A LayoutTests/fast/css/lang-matching-document-invalidation.html
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/ElementData.cpp
M Source/WebCore/dom/ElementData.h
M Source/WebCore/dom/EventTarget.h

  Log Message:
  ---
  Avoid storing effective language on ElementRareData when it matches the 
effective document element language
https://bugs.webkit.org/show_bug.cgi?id=251657


Reviewed by Ryosuke Niwa.

When an element's lang attribute is set, we set the effective language on
the ElementRareData of all elements in the subtree. We have an existing
optimization that avoids this if we're setting it on the document
element. There are some pages, like Wikipedia, that set an explicit
lang on some other element in the body of the page, but which matches
the document element's lang.

We can avoid the memory overhead of allocating ElementRareData to store
the effective language in this case by using a flag on the element. On
large Wikipedia pages this can save several MB.

If the document element language changes later, we must update the
effective lang state on subtrees that are using this flag. A WeakHashSet
is added to Document to track elements that have an explicit lang
attribute that matches the effective document element language.

Three flags on EventTarget are introduced:

- HasLangAttr and HasXMLLangAttr: records that the element has the
  corresponding lang attribute. This allows us to avoid searching
  for an attribute when updating the effective lang state.

- EffectiveLangKnownToMatchDocument: records that the element has an
  effective lang that matches the effective document element language,
  whether it's due to an explicit lang attribute or inherited from an
  ancestor. This flag is used in place of
  ElementRareData::m_effectiveLang.

The EffectiveLangKnownToMatchDocument flag is used in place of the "null
effective language means we've inherited the effective document
language" state so that disconnected subtrees can also make use of this
optimization. Otherwise, for a case like this:

  let e = document.createElement("div");
  e.lang = "en";  // matching document
  e.append(document.createElement("div"));

the child element would not know whether to return nullptr or "en" from
Element::effectiveLang() without looking up the tree to see if there is
an ancestor with a langauge attribute.

The EffectiveLangKnownToMatchDocument flag is not
EffectiveLangMatchesDocument, since we don't set it if the document
element language changes and an existing element starts matching it.
Rather than track all elements with lang attributes to handle such
cases, we leave the effective lang stored on the ElementRareData.

* LayoutTests/fast/css/lang-matching-document-invalidation-expected.txt: Added.
* LayoutTests/fast/css/lang-matching-document-invalidation.html: Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::setDocumentElementLanguage):
(WebCore::Document::addElementWithLangAttrMatchingDocument):
(WebCore::Document::removeElementWithLangAttrMatchingDocument):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::~Element):
(WebCore::Element::attributeChanged):
(WebCore::Element::setEffectiveLangInSubtree):
(WebCore::Element::didMoveToNewDocument):
(WebCore::Element::setEffectiveLangFromParent):
(WebCore::Element::setEffectiveLang):
(WebCore::Element::insertedIntoAncestor):
(WebCore::Element::hasEffectiveLangState const):
(WebCore::Element::removedFromAncestor):
(WebCore::Element::effectiveLang const):
(WebCore::Element::langFromAttribute const):
(WebCore::Element::langAttrMatchesDocument const):
(WebCore::Element::setLangAttrMatchesDocument):
(WebCore::Element::effectiveLangMatchesDocument const):
(WebCore::Element::setEffectiveLangMatchesDocument):
* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/EventTarget.h:

Canonical link: https://commits.webkit.org/260047@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b1677b: Add more heap identifiers for style data

2023-02-08 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b1677b518da08dd4da8abf7f9d321f5d4bc8f4e6
  
https://github.com/WebKit/WebKit/commit/b1677b518da08dd4da8abf7f9d321f5d4bc8f4e6
  Author: Cameron McCormack 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/style/SVGRenderStyleDefs.cpp
M Source/WebCore/rendering/style/SVGRenderStyleDefs.h
M Source/WebCore/rendering/style/StyleBackgroundData.cpp
M Source/WebCore/rendering/style/StyleBackgroundData.h
M Source/WebCore/rendering/style/StyleDeprecatedFlexibleBoxData.cpp
M Source/WebCore/rendering/style/StyleDeprecatedFlexibleBoxData.h
M Source/WebCore/rendering/style/StyleFlexibleBoxData.cpp
M Source/WebCore/rendering/style/StyleFlexibleBoxData.h
M Source/WebCore/rendering/style/StyleGridData.cpp
M Source/WebCore/rendering/style/StyleGridData.h
M Source/WebCore/rendering/style/StyleGridItemData.cpp
M Source/WebCore/rendering/style/StyleGridItemData.h
M Source/WebCore/rendering/style/StyleMultiColData.cpp
M Source/WebCore/rendering/style/StyleMultiColData.h
M Source/WebCore/rendering/style/StyleVisualData.cpp
M Source/WebCore/rendering/style/StyleVisualData.h
M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp

  Log Message:
  ---
  Add more heap identifiers for style data
https://bugs.webkit.org/show_bug.cgi?id=251833


Reviewed by Simon Fraser.

* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::copyPseudoElementsFrom):
(WebCore::RenderStyle::hasUniquePseudoStyle const):
(WebCore::RenderStyle::getCachedPseudoStyle const):
(WebCore::RenderStyle::addCachedPseudoStyle):
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/SVGRenderStyleDefs.cpp:
* Source/WebCore/rendering/style/SVGRenderStyleDefs.h:
* Source/WebCore/rendering/style/StyleBackgroundData.cpp:
* Source/WebCore/rendering/style/StyleBackgroundData.h:
* Source/WebCore/rendering/style/StyleDeprecatedFlexibleBoxData.cpp:
* Source/WebCore/rendering/style/StyleDeprecatedFlexibleBoxData.h:
* Source/WebCore/rendering/style/StyleFlexibleBoxData.cpp:
* Source/WebCore/rendering/style/StyleFlexibleBoxData.h:
* Source/WebCore/rendering/style/StyleGridData.cpp:
* Source/WebCore/rendering/style/StyleGridData.h:
* Source/WebCore/rendering/style/StyleGridItemData.cpp:
* Source/WebCore/rendering/style/StyleGridItemData.h:
* Source/WebCore/rendering/style/StyleMultiColData.cpp:
* Source/WebCore/rendering/style/StyleMultiColData.h:
* Source/WebCore/rendering/style/StyleVisualData.cpp:
* Source/WebCore/rendering/style/StyleVisualData.h:
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::pseudoStyleCacheIsInvalid):

Canonical link: https://commits.webkit.org/260030@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8858f1: Avoid storing effective language on ElementRareDat...

2023-02-06 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8858f1de792a602c09ff087c13c342014f27fa62
  
https://github.com/WebKit/WebKit/commit/8858f1de792a602c09ff087c13c342014f27fa62
  Author: Cameron McCormack 
  Date:   2023-02-06 (Mon, 06 Feb 2023)

  Changed paths:
A LayoutTests/fast/css/lang-matching-document-invalidation-expected.txt
A LayoutTests/fast/css/lang-matching-document-invalidation.html
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/ElementData.cpp
M Source/WebCore/dom/ElementData.h
M Source/WebCore/dom/EventTarget.h

  Log Message:
  ---
  Avoid storing effective language on ElementRareData when it matches the 
effective document element language
https://bugs.webkit.org/show_bug.cgi?id=251657


Reviewed by Ryosuke Niwa.

When an element's lang attribute is set, we set the effective language on
the ElementRareData of all elements in the subtree. We have an existing
optimization that avoids this if we're setting it on the document
element. There are some pages, like Wikipedia, that set an explicit
lang on some other element in the body of the page, but which matches
the document element's lang.

We can avoid the memory overhead of allocating ElementRareData to store
the effective language in this case by using a flag on the element. On
large Wikipedia pages this can save several MB.

If the document element language changes later, we must update the
effective lang state on subtrees that are using this flag. A WeakHashSet
is added to Document to track elements that have an explicit lang
attribute that matches the effective document element language.

Three flags on EventTarget are introduced:

- HasLangAttr and HasXMLLangAttr: records that the element has the
  corresponding lang attribute. This allows us to avoid searching
  for an attribute when updating the effective lang state.

- EffectiveLangKnownToMatchDocument: records that the element has an
  effective lang that matches the effective document element language,
  whether it's due to an explicit lang attribute or inherited from an
  ancestor. This flag is used in place of
  ElementRareData::m_effectiveLang.

The EffectiveLangKnownToMatchDocument flag is used in place of the "null
effective language means we've inherited the effective document
language" state so that disconnected subtrees can also make use of this
optimization. Otherwise, for a case like this:

  let e = document.createElement("div");
  e.lang = "en";  // matching document
  e.append(document.createElement("div"));

the child element would not know whether to return nullptr or "en" from
Element::effectiveLang() without looking up the tree to see if there is
an ancestor with a langauge attribute.

The EffectiveLangKnownToMatchDocument flag is not
EffectiveLangMatchesDocument, since we don't set it if the document
element language changes and an existing element starts matching it.
Rather than track all elements with lang attributes to handle such
cases, we leave the effective lang stored on the ElementRareData.

* LayoutTests/fast/css/lang-matching-document-invalidation-expected.txt: Added.
* LayoutTests/fast/css/lang-matching-document-invalidation.html: Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::setDocumentElementLanguage):
(WebCore::Document::addElementWithLangAttrMatchingDocument):
(WebCore::Document::removeElementWithLangAttrMatchingDocument):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::~Element):
(WebCore::Element::attributeChanged):
(WebCore::Element::setEffectiveLangInSubtree):
(WebCore::Element::didMoveToNewDocument):
(WebCore::Element::setEffectiveLangFromParent):
(WebCore::Element::setEffectiveLang):
(WebCore::Element::insertedIntoAncestor):
(WebCore::Element::hasEffectiveLangState const):
(WebCore::Element::removedFromAncestor):
(WebCore::Element::effectiveLang const):
(WebCore::Element::langFromAttribute const):
(WebCore::Element::langAttrMatchesDocument const):
(WebCore::Element::setLangAttrMatchesDocument):
(WebCore::Element::effectiveLangMatchesDocument const):
(WebCore::Element::setEffectiveLangMatchesDocument):
* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/EventTarget.h:

Canonical link: https://commits.webkit.org/259931@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] aea4f3: Shrink StyleRule by reducing padding and moving CS...

2023-02-05 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: aea4f3f29a7c8f7dbf76e52647c30b6cfc4cc464
  
https://github.com/WebKit/WebKit/commit/aea4f3f29a7c8f7dbf76e52647c30b6cfc4cc464
  Author: Cameron McCormack 
  Date:   2023-02-05 (Sun, 05 Feb 2023)

  Changed paths:
M Source/WebCore/css/StyleRule.cpp
M Source/WebCore/css/StyleRule.h

  Log Message:
  ---
  Shrink StyleRule by reducing padding and moving CSS Nesting fields to a rare 
data object
https://bugs.webkit.org/show_bug.cgi?id=251744
rdar://105046580

Reviewed by Simon Fraser.

This reduces StyleRule from 64 to 40 bytes.

* Source/WebCore/css/StyleRule.cpp:
(WebCore::StyleRuleRareData::createIfNeeded):
(WebCore::StyleRule::StyleRule):
(WebCore::StyleRule::rareData const):
(WebCore::StyleRule::setNestedRules):
(WebCore::StyleRule::setResolvedSelectorList const):
(WebCore::emptyRuleVector):
(WebCore::StyleRule::nestedRules const):
* Source/WebCore/css/StyleRule.h:
(WebCore::StyleRuleRareData::createIfNeeded):

Canonical link: https://commits.webkit.org/259875@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 459951: Fix DUMP_NODE_STATISTICS

2023-02-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4599514bba5957e7ea46aef8646a102dcdd6208e
  
https://github.com/WebKit/WebKit/commit/4599514bba5957e7ea46aef8646a102dcdd6208e
  Author: Cameron McCormack 
  Date:   2023-02-02 (Thu, 02 Feb 2023)

  Changed paths:
M Source/WebCore/dom/ContainerNode.cpp
M Source/WebCore/dom/ElementRareData.h
M Source/WebCore/dom/Node.cpp
M Source/WebCore/dom/NodeRareData.h

  Log Message:
  ---
  Fix DUMP_NODE_STATISTICS
https://bugs.webkit.org/show_bug.cgi?id=251646


Reviewed by Ryosuke Niwa.

- Add a missing UseType
- Reorder UseTypes to match field order
- Fix rareDataSingleUseTypeCounts key type to be big enough
- Disable assertion in ContainerNode::removeAllChildrenWithScriptAssertion, 
which is not valid when all nodes created get a weak pointer

* Source/WebCore/dom/ContainerNode.cpp:
(WebCore::ContainerNode::removeAllChildrenWithScriptAssertion):
* Source/WebCore/dom/ElementRareData.h:
(WebCore::ElementRareData::useTypes const):
* Source/WebCore/dom/Node.cpp:
(WebCore::stringForRareDataUseType):
(WebCore::Node::dumpStatistics):
(WebCore::Node::Node):
* Source/WebCore/dom/NodeRareData.h:
(WebCore::NodeRareData::useTypes const):

Canonical link: https://commits.webkit.org/259796@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a0e6d8: Move SVG conditional processing attributes to SVGE...

2023-02-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a0e6d8e81896cbb5cb78fdc8eccd67c598b8c459
  
https://github.com/WebKit/WebKit/commit/a0e6d8e81896cbb5cb78fdc8eccd67c598b8c459
  Author: Cameron McCormack 
  Date:   2023-02-02 (Thu, 02 Feb 2023)

  Changed paths:
M Source/WebCore/svg/SVGElement.cpp
M Source/WebCore/svg/SVGElement.h
M Source/WebCore/svg/SVGElementRareData.h
M Source/WebCore/svg/SVGTests.cpp
M Source/WebCore/svg/SVGTests.h
M Source/WebCore/svg/properties/SVGPropertyAccessorImpl.h
M Source/WebCore/svg/properties/SVGPropertyOwnerRegistry.h

  Log Message:
  ---
  Move SVG conditional processing attributes to SVGElementRareData
https://bugs.webkit.org/show_bug.cgi?id=251413
rdar://problem/104849618

Reviewed by Sam Weinig and Said Abou-Hallawa.

The SVG conditional processing attributes (requiredFeatures, requiredExtensions,
and systemLanguage) are rarely used. Currently nearly every SVG element creates
SVGStringList objects for these three attributes in WebCore::SVGTests, at a cost
of 48 bytes each SVGStringList plus the three pointers. We can move these to
SVGElementRareData to save 72 bytes per SVG element in this common case, which
for SVG documents with a large number of graphical elements can add up.

The existing SVG property registration mechanism expects members
corresponding to the attribute to exist on the owner element object. We adds a
new SVGConditionalProcessingAttributeAccessor for these three
attributes, which looks them up on the element's SVGElementRareData.

* Source/WebCore/svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::SVGAnimationElement):
* Source/WebCore/svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::SVGCursorElement):
* Source/WebCore/svg/SVGElement.cpp:
(WebCore::SVGElement::conditionalProcessingAttributes):
(WebCore::SVGElement::conditionalProcessingAttributesIfExists const):
* Source/WebCore/svg/SVGElement.h:
* Source/WebCore/svg/SVGElementRareData.h:
(WebCore::SVGElementRareData::conditionalProcessingAttributesIfExists const):
(WebCore::SVGElementRareData::conditionalProcessingAttributes):
* Source/WebCore/svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::SVGGraphicsElement):
* Source/WebCore/svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::SVGMaskElement):
* Source/WebCore/svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::SVGPatternElement):
* Source/WebCore/svg/SVGTests.cpp:
(WebCore::SVGConditionalProcessingAttributes::SVGConditionalProcessingAttributes):
(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::isValid const):
(WebCore::SVGTests::parseAttribute):
(WebCore::SVGTests::conditionalProcessingAttributes):
(WebCore::SVGTests::conditionalProcessingAttributesIfExists const):
* Source/WebCore/svg/SVGTests.h:
(WebCore::SVGConditionalProcessingAttributes::requiredFeatures):
(WebCore::SVGConditionalProcessingAttributes::requiredExtensions):
(WebCore::SVGConditionalProcessingAttributes::systemLanguage):
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
* Source/WebCore/svg/properties/SVGPropertyAccessorImpl.h:
(WebCore::SVGConditionalProcessingAttributeAccessor::singleton):
* Source/WebCore/svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerConditionalProcessingAttributeProperty):

Canonical link: https://commits.webkit.org/259772@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] da7026: Fix the MALLOC_HEAP_BREAKDOWN build

2023-02-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: da702614aa846139682587a8f9f2a14ccd59ab8e
  
https://github.com/WebKit/WebKit/commit/da702614aa846139682587a8f9f2a14ccd59ab8e
  Author: Cameron McCormack 
  Date:   2023-02-02 (Thu, 02 Feb 2023)

  Changed paths:
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/Sources.txt
M Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp
M Source/JavaScriptCore/heap/IsoMemoryAllocatorBase.cpp
M Source/JavaScriptCore/heap/IsoMemoryAllocatorBase.h
A Source/JavaScriptCore/jit/ExecutableMemoryHandle.cpp
M Source/JavaScriptCore/jit/ExecutableMemoryHandle.h
M Source/bmalloc/bmalloc/IsoHeapInlines.h
M Source/bmalloc/bmalloc/IsoMallocFallback.cpp

  Log Message:
  ---
  Fix the MALLOC_HEAP_BREAKDOWN build
https://bugs.webkit.org/show_bug.cgi?id=251561


Reviewed by Yusuke Suzuki.

This fixes the MALLOC_HEAP_BREAKDOWN build.

JSC's Structure object allocation is not compatible with
IsoMemoryAllocator falling back to regular malloc, so we remove its
support for MALLOC_HEAP_BREAKDOWN for now.

* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
* Source/JavaScriptCore/heap/IsoMemoryAllocatorBase.cpp:
(JSC::IsoMemoryAllocatorBase::IsoMemoryAllocatorBase):
(JSC::IsoMemoryAllocatorBase::tryAllocateAlignedMemory):
(JSC::IsoMemoryAllocatorBase::freeAlignedMemory):
* Source/JavaScriptCore/heap/IsoMemoryAllocatorBase.h:
* Source/JavaScriptCore/jit/ExecutableMemoryHandle.cpp: Copied from 
Source/JavaScriptCore/heap/IsoMemoryAllocatorBase.h.
* Source/JavaScriptCore/jit/ExecutableMemoryHandle.h:
* Source/bmalloc/bmalloc/BPlatform.h:
* Source/bmalloc/bmalloc/IsoHeapInlines.h:
* Source/bmalloc/bmalloc/IsoMallocFallback.cpp:
(bmalloc::IsoMallocFallback::tryMalloc):
(bmalloc::IsoMallocFallback::tryFree):

Canonical link: https://commits.webkit.org/259771@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] cb846e: iOS-only revert of bug 249561 for causing memory r...

2023-02-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cb846ec740996265e347825b287e8a0c36e13d18
  
https://github.com/WebKit/WebKit/commit/cb846ec740996265e347825b287e8a0c36e13d18
  Author: Cameron McCormack 
  Date:   2023-02-02 (Thu, 02 Feb 2023)

  Changed paths:
M Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp

  Log Message:
  ---
  iOS-only revert of bug 249561 for causing memory regression
https://bugs.webkit.org/show_bug.cgi?id=251559
rdar://104619725

Reviewed by Brent Fulgham.

Unclear why, but for now let's leave the change on macOS and revert elsewhere.

* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::platformReleaseNoncriticalMemory):

Canonical link: https://commits.webkit.org/259769@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 416fea: Allow ImageBufferShareableBitmapBackend to create ...

2023-01-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 416fea3fa24b480b17027d25701a92c96812f688
  
https://github.com/WebKit/WebKit/commit/416fea3fa24b480b17027d25701a92c96812f688
  Author: Cameron McCormack 
  Date:   2023-01-12 (Thu, 12 Jan 2023)

  Changed paths:
M 
Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp

  Log Message:
  ---
  Allow ImageBufferShareableBitmapBackend to create a ShareableBitmap using 
PixelFormat::BGRX
https://bugs.webkit.org/show_bug.cgi?id=250542
rdar://104142373

Reviewed by Simon Fraser.

After bug 250100, we can create tile ImageBuffers with
PixelFormat::BGRX. We can get in here with UI side compositing enabled
and accelerated drawing disabled.

* Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:
(WebKit::ImageBufferShareableBitmapBackend::create):

Canonical link: https://commits.webkit.org/258862@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 98cdf6: Pass --remote-layer-tree --use-gpu-process to run-...

2023-01-11 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 98cdf6d7c6187f1f348803e8936724a95d1a0b9f
  
https://github.com/WebKit/WebKit/commit/98cdf6d7c6187f1f348803e8936724a95d1a0b9f
  Author: Cameron McCormack 
  Date:   2023-01-11 (Wed, 11 Jan 2023)

  Changed paths:
M Tools/CISupport/build-webkit-org/steps.py

  Log Message:
  ---
  Pass --remote-layer-tree --use-gpu-process to run-api-tests on GPUP bots
https://bugs.webkit.org/show_bug.cgi?id=250357
rdar://103939125

Reviewed by Aakash Jain.

* Tools/CISupport/build-webkit-org/steps.py:
(RunAPITests.start):

Canonical link: https://commits.webkit.org/258800@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bb0600: Add options to run-api-tests to enable GPU process...

2023-01-10 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bb0600277dfc92a32c5889b282bee303368e51d1
  
https://github.com/WebKit/WebKit/commit/bb0600277dfc92a32c5889b282bee303368e51d1
  Author: Cameron McCormack 
  Date:   2023-01-10 (Tue, 10 Jan 2023)

  Changed paths:
M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Tools/Scripts/run-api-tests
M Tools/Scripts/webkitpy/api_tests/runner.py
M Tools/TestWebKitAPI/mac/mainMac.mm

  Log Message:
  ---
  Add options to run-api-tests to enable GPU process DOM rendering and UI side 
compositing
https://bugs.webkit.org/show_bug.cgi?id=250358
rdar://104060036

Reviewed by Simon Fraser.

We'll use these new options for the GPU process DOM rendering enabled
test bot.

* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::useGPUProcessForDOMRenderingEnabled const):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::useGPUProcessForDOMRenderingEnabled const):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::shouldAvoidSynchronouslyWaitingToPreventDeadlock const):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Tools/Scripts/run-api-tests:
* Tools/Scripts/webkitpy/api_tests/runner.py:
(Runner.command_for_port):
* Tools/TestWebKitAPI/mac/mainMac.mm:
(main):

Canonical link: https://commits.webkit.org/258740@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bd8e99: Use an alpha-less pixel format for 32 bit IOSurfac...

2023-01-09 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bd8e9982ce3ea314fbb6c5c132e391dd159b69ab
  
https://github.com/WebKit/WebKit/commit/bd8e9982ce3ea314fbb6c5c132e391dd159b69ab
  Author: Cameron McCormack 
  Date:   2023-01-09 (Mon, 09 Jan 2023)

  Changed paths:
M Source/WebCore/platform/graphics/PixelBuffer.cpp
M Source/WebCore/platform/graphics/PixelBufferConversion.cpp
M Source/WebCore/platform/graphics/PixelFormat.cpp
M Source/WebCore/platform/graphics/PixelFormat.h
M Source/WebCore/platform/graphics/cg/IOSurfacePool.cpp
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  ---
  Use an alpha-less pixel format for 32 bit IOSurfaces when 
RemoteLayerBackingStore::Parameters::isOpaque is true
https://bugs.webkit.org/show_bug.cgi?id=250100
rdar://103885395

Reviewed by Tim Horton.

We use a std::optional to store the surface format since we
sometimes use IOSurface with video surface types from WebRTC, which
aren't represented by IOSurface::Format. For such surfaces we never need
to care about the specific format.

* Source/WebCore/platform/graphics/PixelBuffer.cpp:
(WebCore::PixelBuffer::supportedPixelFormat):
* Source/WebCore/platform/graphics/PixelBufferConversion.cpp:
(WebCore::makeVImageCGImageFormat):
(WebCore::convertImagePixels):
* Source/WebCore/platform/graphics/PixelFormat.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/graphics/PixelFormat.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.mm:
(WebCore::formatFromSurface):
(WebCore::IOSurface::IOSurface):
(WebCore::IOSurface::bitmapConfiguration const):
(WebCore::IOSurface::formatForPixelFormat):
(WebCore::operator<<):
(WebCore::IOSurface::format const): Deleted.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::pixelFormat const):
(WebKit::RemoteLayerBackingStore::bytesPerPixel const):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

Canonical link: https://commits.webkit.org/258654@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 031263: Use an alpha-less pixel format for 32 bit IOSurfac...

2023-01-05 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 031263226f11431625f17f2d67acedfec43156da
  
https://github.com/WebKit/WebKit/commit/031263226f11431625f17f2d67acedfec43156da
  Author: Cameron McCormack 
  Date:   2023-01-05 (Thu, 05 Jan 2023)

  Changed paths:
M Source/WebCore/platform/graphics/PixelBuffer.cpp
M Source/WebCore/platform/graphics/PixelBufferConversion.cpp
M Source/WebCore/platform/graphics/PixelFormat.cpp
M Source/WebCore/platform/graphics/PixelFormat.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  ---
  Use an alpha-less pixel format for 32 bit IOSurfaces when 
RemoteLayerBackingStore::Parameters::isOpaque is true
https://bugs.webkit.org/show_bug.cgi?id=250100
rdar://103885395

Reviewed by Tim Horton.

* Source/WebCore/platform/graphics/PixelBuffer.cpp:
(WebCore::PixelBuffer::supportedPixelFormat):
* Source/WebCore/platform/graphics/PixelBufferConversion.cpp:
(WebCore::makeVImageCGImageFormat):
(WebCore::convertImagePixels):
* Source/WebCore/platform/graphics/PixelFormat.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/graphics/PixelFormat.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.mm:
(WebCore::formatFromSurface):
(WebCore::IOSurface::IOSurface):
(WebCore::IOSurface::bitmapConfiguration const):
(WebCore::IOSurface::formatForPixelFormat):
(WebCore::operator<<):
(WebCore::IOSurface::format const): Deleted.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::pixelFormat const):
(WebKit::RemoteLayerBackingStore::bytesPerPixel const):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

Canonical link: https://commits.webkit.org/258523@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] db0ade: Call FontCache::invalidate under memory pressure

2023-01-04 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: db0ade3c62fb2c65e7b2b1a8060b886981ded622
  
https://github.com/WebKit/WebKit/commit/db0ade3c62fb2c65e7b2b1a8060b886981ded622
  Author: Cameron McCormack 
  Date:   2023-01-04 (Wed, 04 Jan 2023)

  Changed paths:
M Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp

  Log Message:
  ---
  Call FontCache::invalidate under memory pressure
https://bugs.webkit.org/show_bug.cgi?id=249561
rdar://103498661

Reviewed by Myles C. Maxfield.

The changes in bug 234061 caused us not to call FontCache::invalidate
under memory pressure, which we should do, since it clears some data
that the current platformReleaseNoncriticalMemory does not do.

The two things that are done -- clearing m_systemFontDatabaseCoreText
and m_fontFamilySpecificationCoreTextCache -- are also done by
invalidate(), so we can replace them with an invalidate() call.

* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::platformReleaseNoncriticalMemory):

Canonical link: https://commits.webkit.org/258443@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 200c33: Add some GPUP test expectations and tweak fuzzines...

2022-12-20 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 200c33251bf1599f619ee122bc3da2052eeb0f9e
  
https://github.com/WebKit/WebKit/commit/200c33251bf1599f619ee122bc3da2052eeb0f9e
  Author: Cameron McCormack 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/css3/masking/mask-luminance-svg.html
M 
LayoutTests/fast/gradients/alpha-premultiplied-representable-by-unpremultiplied.html
M LayoutTests/fast/gradients/linear-two-hints.html
M LayoutTests/imported/blink/css3/blending/mix-blend-mode-with-filters.html
M LayoutTests/platform/mac-gpup/TestExpectations
M LayoutTests/svg/clip-path/clip-opacity-translate.svg
M LayoutTests/svg/gradients/spreadMethod.svg
M LayoutTests/svg/gradients/spreadMethodDuplicateStop.svg
M LayoutTests/svg/gradients/spreadMethodReversed.svg

  Log Message:
  ---
  Add some GPUP test expectations and tweak fuzziness for some tests
https://bugs.webkit.org/show_bug.cgi?id=249692


Unreviewed test gardening.

* LayoutTests/TestExpectations:
* LayoutTests/css3/masking/mask-luminance-svg.html:
* 
LayoutTests/fast/gradients/alpha-premultiplied-representable-by-unpremultiplied.html:
* LayoutTests/fast/gradients/linear-two-hints.html:
* LayoutTests/imported/blink/css3/blending/mix-blend-mode-with-filters.html:
* LayoutTests/platform/mac-gpup/TestExpectations:
* LayoutTests/svg/clip-path/clip-opacity-translate.svg:
* LayoutTests/svg/gradients/spreadMethod.svg:
* LayoutTests/svg/gradients/spreadMethodDuplicateStop.svg:
* LayoutTests/svg/gradients/spreadMethodReversed.svg:

Canonical link: https://commits.webkit.org/258178@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 07a986: Ensure CA adjusts video color space consistently w...

2022-12-16 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 07a9869a62aa3ddcaf190de43ee99e51de657040
  
https://github.com/WebKit/WebKit/commit/07a9869a62aa3ddcaf190de43ee99e51de657040
  Author: Cameron McCormack 
  Date:   2022-12-16 (Fri, 16 Dec 2022)

  Changed paths:
M Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h
M Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp

  Log Message:
  ---
  Ensure CA adjusts video color space consistently when drawing videos to a 
canvas
https://bugs.webkit.org/show_bug.cgi?id=249446
rdar://88804270

Reviewed by Simon Fraser.

* Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:
* Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:
(WebCore::PixelBufferConformerCV::imageFrom32BGRAPixelBuffer):

Canonical link: https://commits.webkit.org/258030@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bd7c93: Fix [CEReactions] typo in HTMLMediaElement.idl

2022-12-09 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bd7c9370d34ba426cdb0d25a80efbbc11db29e47
  
https://github.com/WebKit/WebKit/commit/bd7c9370d34ba426cdb0d25a80efbbc11db29e47
  Author: Cameron McCormack 
  Date:   2022-12-09 (Fri, 09 Dec 2022)

  Changed paths:
M Source/WebCore/html/HTMLMediaElement.idl

  Log Message:
  ---
  Fix [CEReactions] typo in HTMLMediaElement.idl
https://bugs.webkit.org/show_bug.cgi?id=249008


Reviewed by Ryosuke Niwa.

* Source/WebCore/html/HTMLMediaElement.idl:

Canonical link: https://commits.webkit.org/257612@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7d493d: Add support for and honor

2022-12-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7d493da919b53d9c012a73806fc91305776276eb
  
https://github.com/WebKit/WebKit/commit/7d493da919b53d9c012a73806fc91305776276eb
  Author: Cameron McCormack 
  Date:   2022-12-07 (Wed, 07 Dec 2022)

  Changed paths:
M LayoutTests/model-element/model-element-source-expected.txt
M LayoutTests/model-element/model-element-source.html
M Source/WebCore/Modules/model-element/HTMLModelElement.cpp
M Source/WebCore/Modules/model-element/HTMLModelElement.h
M Source/WebCore/Modules/model-element/HTMLModelElement.idl

  Log Message:
  ---
  Add support for  and honor  attributes
https://bugs.webkit.org/show_bug.cgi?id=248855
rdar://problem/103056552

Reviewed by Antoine Quint.

* LayoutTests/model-element/model-element-source-expected.txt:
* LayoutTests/model-element/model-element-source.html:
* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:
(WebCore::isSupportedModelType):
(WebCore::HTMLModelElement::selectModelSource const):
(WebCore::HTMLModelElement::sourcesChanged):
(WebCore::HTMLModelElement::parseAttribute):
(WebCore::HTMLModelElement::isURLAttribute const):
(WebCore::HTMLModelElement::attributeChanged): Deleted.
* Source/WebCore/Modules/model-element/HTMLModelElement.h:
* Source/WebCore/Modules/model-element/HTMLModelElement.idl:

Canonical link: https://commits.webkit.org/257518@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] cf600d: Add width and height content attributes to

2022-12-02 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cf600d68403f383e2755725ad982c2e82dc1bd27
  
https://github.com/WebKit/WebKit/commit/cf600d68403f383e2755725ad982c2e82dc1bd27
  Author: Cameron McCormack 
  Date:   2022-12-02 (Fri, 02 Dec 2022)

  Changed paths:
A LayoutTests/model-element/model-element-width-height-expected.txt
A LayoutTests/model-element/model-element-width-height-visual-expected.html
A LayoutTests/model-element/model-element-width-height-visual.html
A LayoutTests/model-element/model-element-width-height.html
M Source/WebCore/Modules/model-element/HTMLModelElement.cpp
M Source/WebCore/Modules/model-element/HTMLModelElement.h
M Source/WebCore/Modules/model-element/HTMLModelElement.idl

  Log Message:
  ---
  Add width and height content attributes to 
https://bugs.webkit.org/show_bug.cgi?id=243974
rdar://99014926

Reviewed by Antoine Quint.

For consistency with  and ,  should have width and
height content attributes that set presentational style for the width
and height properties.

* LayoutTests/model-element/model-element-width-height-expected.txt: Added.
* LayoutTests/model-element/model-element-width-height-visual-expected.html: 
Added.
* LayoutTests/model-element/model-element-width-height-visual.html: Added.
* LayoutTests/model-element/model-element-width-height.html: Added.
* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLModelElement::hasPresentationalHintsForAttribute const):
* Source/WebCore/Modules/model-element/HTMLModelElement.h:
* Source/WebCore/Modules/model-element/HTMLModelElement.idl:

Canonical link: https://commits.webkit.org/257294@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 808fe7: Avoid potential CAFenceHandle invalidation issue a...

2022-12-01 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 808fe7d3ce9961043f7011493579ac2eec4a2a00
  
https://github.com/WebKit/WebKit/commit/808fe7d3ce9961043f7011493579ac2eec4a2a00
  Author: Cameron McCormack 
  Date:   2022-12-01 (Thu, 01 Dec 2022)

  Changed paths:
M LayoutTests/platform/ios-wk2/TestExpectations
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm

  Log Message:
  ---
  Avoid potential CAFenceHandle invalidation issue and re-enable model tests
https://bugs.webkit.org/show_bug.cgi?id=237070
rdar://89325947

Reviewed by Antoine Quint.

>From EWS runs it looks like these tests are no longer causing crashes.

But the stack from those previous crashes leads me to believe that it
could be skipping invalidating the CAFenceHandle when
modelElementSizeDidChange's main thread task returns early might have
been the cause.

* LayoutTests/platform/ios-wk2/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:
(WebKit::ModelElementController::modelElementSizeDidChange):

Canonical link: https://commits.webkit.org/257243@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 68c7e0: Bump test fuzziness for GPU process on macOS

2022-11-21 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 68c7e095336e350fb25defd9c5e2cb040a0764e2
  
https://github.com/WebKit/WebKit/commit/68c7e095336e350fb25defd9c5e2cb040a0764e2
  Author: Cameron McCormack 
  Date:   2022-11-21 (Mon, 21 Nov 2022)

  Changed paths:
M LayoutTests/fast/box-shadow/inset-spread-box-shadow-split-inline.html
M LayoutTests/fast/multicol/simple-line-layout-line-index-after-strut.html
M LayoutTests/imported/blink/svg/text/obb-paintserver.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-background-properties.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-default.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none-image-document.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1b.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-marginBox-1a.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1a.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-paddingBox-1b.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-viewBox-1a.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-007.html
M 
LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/foreignObject/masked.html
M LayoutTests/svg/clip-path/svg-in-html.html
M 
LayoutTests/svg/compositing/outermost-svg-directly-composited-group-child-overflow-hidden.html

  Log Message:
  ---
  Bump test fuzziness for GPU process on macOS
https://bugs.webkit.org/show_bug.cgi?id=247969
rdar://problem/102399611

Unreviewed test gardening.

These are tests that are already fuzzy.

* LayoutTests/compositing/geometry/css-clip-oversize.html:
* LayoutTests/fast/box-shadow/inset-spread-box-shadow-split-inline.html:
* LayoutTests/fast/multicol/simple-line-layout-line-index-after-strut.html:
* LayoutTests/imported/blink/svg/text/obb-paintserver.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-background-properties.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-default.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-composited.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-from-image.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none-image-document.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1b.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-marginBox-1a.html

[webkit-changes] [WebKit/WebKit] cca77c: Make "disable font smoothing for testing" setting ...

2022-11-19 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cca77c936d11e5420b67e06cc3bba364190a24ec
  
https://github.com/WebKit/WebKit/commit/cca77c936d11e5420b67e06cc3bba364190a24ec
  Author: Cameron McCormack 
  Date:   2022-11-19 (Sat, 19 Nov 2022)

  Changed paths:
M Source/WebCore/platform/graphics/FontCascade.cpp
M Source/WebCore/platform/graphics/FontCascade.h
M Source/WebCore/platform/graphics/FontCascadeDescription.cpp
M Source/WebCore/platform/graphics/FontCascadeDescription.h
M Source/WebCore/platform/graphics/coretext/FontCascadeCoreText.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
M Source/WebCore/platform/text/TextFlags.cpp
M Source/WebCore/platform/text/TextFlags.h
M Source/WebCore/rendering/mathml/MathOperator.cpp
M Source/WebCore/rendering/mathml/RenderMathMLToken.cpp
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/Shared/WebProcessCreationParameters.cpp
M Source/WebKit/Shared/WebProcessCreationParameters.h
M Source/WebKit/UIProcess/API/C/WKContext.cpp
M Source/WebKit/UIProcess/API/C/WKContextPrivate.h
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessPool.h
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h
M Source/WebKit/WebProcess/WebProcess.messages.in
M Tools/WebKitTestRunner/TestController.cpp

  Log Message:
  ---
  Make "disable font smoothing for testing" setting work with GPU process
https://bugs.webkit.org/show_bug.cgi?id=248063
rdar://102449449

Reviewed by Simon Fraser.

Processes have a global variable in FontCascade.cpp to represent whether
font smoothing should be forced off for testing purposes.
WebKitTestRunner creates a WebProcessPool that initially has
m_useFontSmoothingForTesting = false, and when the WebProcessPool
creates a new Web process, it passes the current
m_useFontSmoothingForTesting value as part of the
WebProcessCreationParameters. And if a test turns smoothing back on
explicitly, WebKitTestRunner will tell the WebProcessPool, which
broadcasts the update to all of the current Web processes.

We don't however pass this state to the GPU process when it is created
by the WebProcessPool, or when WebKitTestRunner encounters a test that
turns smoothing back on, which means that the GPU process never inhibits
smoothing.

This change:

- renames the "use font smoothing for testing" concept to "disable font
  subpixel antialiasing", which more clearly and accurately conveys what
  it does, in the words of FontSmoothingMode

- removes the Internals function that can re-allow font smoothing,
  since it's unused

- calls the WKContext C API function just once, rather than before each
  test, since tests can no longer change the smoothing disabled state

- removes the check for the global variable in FontCascade::drawGlyphs
  and modifies the FontSmoothingMode passed in to
  GraphicsContext::drawGlyphs instead (by having
  FontCascadeDescription::smoothingMode change it according to the
  global variable's state), so that it's captured as part of the
  DrawGlyphs display list item

* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::setDisableFontSubpixelAntialiasingForTesting):
(WebCore::FontCascade::shouldDisableFontSubpixelAntialiasingForTesting):
(WebCore::FontCascade::drawGlyphBuffer const):
(WebCore::FontCascade::setShouldUseSmoothingForTesting): Deleted.
(WebCore::FontCascade::shouldUseSmoothingForTesting): Deleted.
* Source/WebCore/platform/graphics/FontCascade.h:
* Source/WebCore/platform/graphics/FontCascadeDescription.cpp:
(WebCore::FontCascadeDescription::usedFontSmoothing const):
* Source/WebCore/platform/graphics/FontCascadeDescription.h:
* Source/WebCore/platform/graphics/coretext/FontCascadeCoreText.cpp:
(WebCore::FontCascade::drawGlyphs):
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::dumpItem):
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawGlyphs::fontSmoothingMode const):
* Source/WebCore/platform/text/TextFlags.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/text/TextFlags.h:
* Source/WebCore/rendering/mathml/MathOperator.cpp:
(WebCore::MathOperator::paintGlyph):
* Source/WebCore/rendering/mathml/RenderMathMLToken.cpp:
(WebCore::RenderMathMLToken::paint):
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::setFontSmoothingEnabled): Deleted.
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Source/WebKit/Shared/WebPr

[webkit-changes] [WebKit/WebKit] d5220e: Sort layout tests result page "image results" colu...

2022-11-15 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d5220e254917f82a86e5d6235224f82a03d25acb
  
https://github.com/WebKit/WebKit/commit/d5220e254917f82a86e5d6235224f82a03d25acb
  Author: Cameron McCormack 
  Date:   2022-11-15 (Tue, 15 Nov 2022)

  Changed paths:
M LayoutTests/fast/harness/results.html

  Log Message:
  ---
  Sort layout tests result page "image results" column numerically by percentage
https://bugs.webkit.org/show_bug.cgi?id=247956
rdar://problem/102384072

Reviewed by Simon Fraser.

* LayoutTests/fast/harness/results.html:

Canonical link: https://commits.webkit.org/256709@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ab56f3: Skip WebXR tests on macOS with UI side compositing...

2022-11-15 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ab56f36f001b90f5c0244d835c81a5b69352442a
  
https://github.com/WebKit/WebKit/commit/ab56f36f001b90f5c0244d835c81a5b69352442a
  Author: Cameron McCormack 
  Date:   2022-11-15 (Tue, 15 Nov 2022)

  Changed paths:
M LayoutTests/platform/mac-gpup/TestExpectations

  Log Message:
  ---
  Skip WebXR tests on macOS with UI side compositing enabled
https://bugs.webkit.org/show_bug.cgi?id=247953

Unreviewed test gardening.

* LayoutTests/platform/mac-gpup/TestExpectations:

Canonical link: https://commits.webkit.org/256708@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4488a9: Rebaseline some macOS tests with UI side compositi...

2022-11-13 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4488a9d1dc6e0aaa0b04e246207c41b4f60e09d8
  
https://github.com/WebKit/WebKit/commit/4488a9d1dc6e0aaa0b04e246207c41b4f60e09d8
  Author: Cameron McCormack 
  Date:   2022-11-13 (Sun, 13 Nov 2022)

  Changed paths:
M LayoutTests/platform/mac-gpup/TestExpectations
A 
LayoutTests/platform/mac-gpup/compositing/backing/inline-block-no-backing-expected.txt
A 
LayoutTests/platform/mac-gpup/compositing/backing/whitespace-nodes-no-backing-expected.txt
A LayoutTests/platform/mac-gpup/compositing/fixed-image-loading-expected.txt
A 
LayoutTests/platform/mac-gpup/compositing/tiling/huge-layer-img-expected.txt
A 
LayoutTests/platform/mac-gpup/compositing/visibility/visibility-image-layers-dynamic-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch-expected.txt
A 
LayoutTests/platform/mac-gpup/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe-expected.txt

  Log Message:
  ---
  Rebaseline some macOS tests with UI side compositing enabled
https://bugs.webkit.org/show_bug.cgi?id=247876


Unreviewed test gardening.

* LayoutTests/platform/mac-gpup/TestExpectations:

Skip tests that don't apply in this configuration.

* 
LayoutTests/platform/mac-gpup/compositing/backing/inline-block-no-backing-expected.txt:
* 
LayoutTests/platform/mac-gpup/compositing/backing/whitespace-nodes-no-backing-expected.txt:
* LayoutTests/platform/mac-gpup/compositing/fixed-image-loading-expected.txt:
* LayoutTests/platform/mac-gpup/compositing/tiling/huge-layer-img-expected.txt:

Layer tree dumps now include (drawsContent) and (usingTiledLayer).

* 
LayoutTests/platform/mac-gpup/compositing/visibility/visibility-image-layers-dynamic-expected.txt:

Same, except the layer bounds are also updated because the layer tree dump is 
in the content.

* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow-expected.txt:
* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow-expected.txt:
* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2-expected.txt:
* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow-expected.txt:
* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch-expected.txt:
* 
LayoutTests/platform/mac-gpup/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe-expected.txt:

Scrolling tree does not exist in the Web process and so is no longer
included in the layer dump output.

Canonical link: https://commits.webkit.org/256634@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2179bd: Look for configuration-specific test expectation f...

2022-11-13 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2179bd862b65cfd9c27eeed3236a93bd6b509698
  
https://github.com/WebKit/WebKit/commit/2179bd862b65cfd9c27eeed3236a93bd6b509698
  Author: Cameron McCormack 
  Date:   2022-11-13 (Sun, 13 Nov 2022)

  Changed paths:
R LayoutTests/gpu-process/TestExpectations
A LayoutTests/platform/mac-gpup/TestExpectations
M Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py

  Log Message:
  ---
  Look for configuration-specific test expectation files for 
--enable-gpu-process --remote-layer-tree
https://bugs.webkit.org/show_bug.cgi?id=247868
rdar://problem/102297656

Reviewed by Simon Fraser.

Currently we just look at LayoutTests/gpu-process/TestExpectations, but we
don't look for any -expected files in that directory.

This patch moves the directory to LayoutTests/platform/ and uses it as an
additional platform directory when --enable-gpu-process and --remote-layer-tree
are specified.

* LayoutTests/gpu-process/TestExpectations: Removed.
* LayoutTests/platform/mac-gpup/TestExpectations: Added.
* Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
(_set_up_derived_options):

Canonical link: https://commits.webkit.org/256630@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 285aa4: Let RemoteLayerTreeDrawingArea respond to SetDevic...

2022-11-13 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 285aa4f77035ee854f9da25f49ee57549f0f5dfd
  
https://github.com/WebKit/WebKit/commit/285aa4f77035ee854f9da25f49ee57549f0f5dfd
  Author: Cameron McCormack 
  Date:   2022-11-13 (Sun, 13 Nov 2022)

  Changed paths:
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

  Log Message:
  ---
  Let RemoteLayerTreeDrawingArea respond to SetDeviceScaleFactor on macOS
https://bugs.webkit.org/show_bug.cgi?id=247867
rdar://102277376

Reviewed by Simon Fraser.

This is the cause of most of the hidpi test failures on macOS with UI
side compositing enabled.

* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::setDeviceScaleFactor):

Canonical link: https://commits.webkit.org/256628@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3c5d90: Tweak canvas-createImageBitmap-video-resize.html s...

2022-11-07 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3c5d90c46ca5b1bb42993250fae451d81981c950
  
https://github.com/WebKit/WebKit/commit/3c5d90c46ca5b1bb42993250fae451d81981c950
  Author: Cameron McCormack 
  Date:   2022-11-07 (Mon, 07 Nov 2022)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html

  Log Message:
  ---
  Tweak canvas-createImageBitmap-video-resize.html so it passes on iOS
https://bugs.webkit.org/show_bug.cgi?id=247558
rdar://100330154

Reviewed by Jer Noble.

1. Use requestVideoFrameCallback when available, so that we're not
   subject to the flakiness of video frame data being available when
   using oncanplaythrough.
2. Bump up the hard coded fuzziness for the image comparison.

* 
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html:

Canonical link: https://commits.webkit.org/256422@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 64eee9: Rebuild SVGResources when relevant style property ...

2022-11-04 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 64eee924e80890ac154ac53e1836fb7a4d4d9916
  
https://github.com/WebKit/WebKit/commit/64eee924e80890ac154ac53e1836fb7a4d4d9916
  Author: Cameron McCormack 
  Date:   2022-11-04 (Fri, 04 Nov 2022)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/mac-monterey-wk2-lbse-text/TestExpectations
M Source/WebCore/rendering/svg/SVGResourcesCache.cpp

  Log Message:
  ---
  Rebuild SVGResources when relevant style property changes even with 
StyleDifference::Equal
https://bugs.webkit.org/show_bug.cgi?id=243808
rdar://97335496

Reviewed by Said Abou-Hallawa.

Consulting the StyleDifference value in
SVGResourceCache::clientStyleChanged is not an accurate way to determine
whether any property values were changed.

Specifically, if only the filter property is changed, RenderStyle::diff
returns StyleDifference::Equal and includes filter in the list of
"context-sensitive properties". If the context condition is met (which
per RenderElement::adjustStyleDifference is hasLayer()), we'll upgrade
the StyleDifference to some other value. But if not, which is the case
for SVG elements currently, we'll end up returning early from
SVGResourceCache::clientStyleChanged, and won't rebuild resources in
response to a property change.

This patch removes the early return on StyleDifference::Equal. (The
other use of the StyleDifference in this function, to avoid some work
when filter primitive properties are changed, is OK, since the
properties they care about will return accurate StyleDifference values.)

An alternative approach would be to introduce a new StyleDifference
value "UpdateSVGResources" to use when !hasLayer() and the filter
property changes.

* Source/WebCore/rendering/svg/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::clientStyleChanged):

Canonical link: https://commits.webkit.org/256335@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 0d3215: Tweak more test expectations to prepare for accele...

2022-10-27 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0d3215a7d6d654992365c7c8ffaa90ce03b214f7
  
https://github.com/WebKit/WebKit/commit/0d3215a7d6d654992365c7c8ffaa90ce03b214f7
  Author: Cameron McCormack 
  Date:   2022-10-27 (Thu, 27 Oct 2022)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-027.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-left-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/css-box-shadow-001.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-015.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-016.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/preserve3d-and-flattening-z-order-008.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/skewX/svg-skewxy-001.html
A 
LayoutTests/platform/mac-wk1/compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt
M LayoutTests/platform/mac-wk2/TestExpectations
A 
LayoutTests/platform/mac-wk2/compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt
M LayoutTests/svg/animations/polyline-set.svg
M 
LayoutTests/svg/compositing/outermost-svg-directly-composited-group-child-overflow-hidden.html
M LayoutTests/svg/filters/feImage-element-primitive-subregion.svg

  Log Message:
  ---
  Tweak more test expectations to prepare for accelerated drawing on macOS
https://bugs.webkit.org/show_bug.cgi?id=247093


Unreviewed test gardening.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-027.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-left-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/css-box-shadow-001.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-015.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-016.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1a.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1b.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-opacity-1c.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/preserve3d-and-flattening-z-order-008.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/skewX/svg-skewxy-001.html:
* 
LayoutTests/platform/mac-wk1/compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt:
 Added.
* LayoutTests/platform/mac-wk2/TestExpectations:
* 
LayoutTests/platform/mac-wk2/compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt:
 Added.
* LayoutTests/svg/animations/polyline-set.svg:
* 
LayoutTests/svg/compositing/outermost-svg-directly-composited-group-child-overflow-hidden.html:
* LayoutTests/svg/filters/feImage-element-primitive-subregion.svg:

Canonical link: https://commits.webkit.org/256053@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 21308f: Switch FontCache to use ThreadSpecific instead of ...

2022-10-26 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 21308fa925b845ce1d059459879ff397e611bb65
  
https://github.com/WebKit/WebKit/commit/21308fa925b845ce1d059459879ff397e611bb65
  Author: Cameron McCormack 
  Date:   2022-10-26 (Wed, 26 Oct 2022)

  Changed paths:
M Source/WebCore/css/CSSFontSelector.cpp
M Source/WebCore/platform/ThreadGlobalData.cpp
M Source/WebCore/platform/ThreadGlobalData.h
M Source/WebCore/platform/graphics/FontCache.cpp
M Source/WebCore/platform/graphics/FontCache.h
M Source/WebCore/workers/WorkerOrWorkletThread.cpp

  Log Message:
  ---
  Switch FontCache to use ThreadSpecific instead of ThreadGlobalData
https://bugs.webkit.org/show_bug.cgi?id=244919

Reviewed by Youenn Fablet.

ThreadGlobalData doesn't handle the case where we try to access it while it's 
being shut down, and
the font code tries to do that.

ThreadSpecific should be faster, and safe for this case.

* Source/WebCore/css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::~CSSFontSelector):
* Source/WebCore/platform/ThreadGlobalData.cpp:
(WebCore::ThreadGlobalData::initializeFontCache): Deleted.
* Source/WebCore/platform/ThreadGlobalData.h:
(WebCore::ThreadGlobalData::fontCache): Deleted.
(WebCore::ThreadGlobalData::fontCacheIfExists): Deleted.
(WebCore::ThreadGlobalData::fontCacheIfNotDestroyed): Deleted.
* Source/WebCore/platform/graphics/FontCache.cpp:
(WebCore::fontCacheForCurrentThread):
(WebCore::FontCache::forCurrentThread):
(WebCore::FontCache::forCurrentThreadIfExists):
(WebCore::FontCache::destroy):
(WebCore::FontCache::forCurrentThreadIfNotDestroyed): Deleted.
* Source/WebCore/platform/graphics/FontCache.h:
* Source/WebCore/workers/WorkerOrWorkletThread.cpp:
(WebCore::WorkerOrWorkletThread::workerOrWorkletThread):

Canonical link: https://commits.webkit.org/256048@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 216acd: Avoid geometry update assertions in some tests whe...

2022-10-26 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 216acdc0bca8c93ccd03e1fd0706bcbe5270652b
  
https://github.com/WebKit/WebKit/commit/216acdc0bca8c93ccd03e1fd0706bcbe5270652b
  Author: Cameron McCormack 
  Date:   2022-10-26 (Wed, 26 Oct 2022)

  Changed paths:
M LayoutTests/platform/ios-simulator-wk2/TestExpectations
A 
LayoutTests/platform/ios-simulator-wk2/accessibility/visible-character-range-height-changes-expected.txt
A 
LayoutTests/platform/ios-simulator-wk2/accessibility/visible-character-range-width-changes-expected.txt
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  ---
  Avoid geometry update assertions in some tests when UI side compositing is 
enabled on macOS
https://bugs.webkit.org/show_bug.cgi?id=242884
rdar://97583976

Reviewed by Kimmo Kinnunen.

Some tests hit this assertion when run on macOS with UI side compositing
enabeld:

ASSERTION FAILED: m_isWaitingForDidUpdateGeometry
.../OpenSource/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm(99)
 : virtual void WebKit::RemoteLayerTreeDrawingAreaProxy::didUpdateGeometry()

This is due to the set calling testRunner.setViewSize(...), which causes
UpdateGeometry / DidUpdateGeometry messages to be sent synchronously.

This means we re-entrantly call 
RemoteLayerTreeDrawingAreaProxy::didUpdateGeometry,
which asserts m_isWaitingForDidUpdateGeometry, before the
`m_isWaitingForDidUpdateGeometry = true` assignment just after the
send(Messages::DrawingArea::UpdateGeometry(...)) call in
RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry is run.

Move the assignment before the send() call to avoid this.

* 
LayoutTests/platform/ios-simulator-wk2/accessibility/visible-character-range-height-changes-expected.txt:
 Added.
* 
LayoutTests/platform/ios-simulator-wk2/accessibility/visible-character-range-width-changes-expected.txt:
 Added.
* LayoutTests/platform/ios-simulator-wk2/TestExpectations:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):

Canonical link: https://commits.webkit.org/256042@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4e594c: Don't default to a fixed layout WKContentView on m...

2022-10-25 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4e594c945afdb3f67afc36c4a2298238c5863567
  
https://github.com/WebKit/WebKit/commit/4e594c945afdb3f67afc36c4a2298238c5863567
  Author: Cameron McCormack 
  Date:   2022-10-25 (Tue, 25 Oct 2022)

  Changed paths:
M Source/WebKit/UIProcess/API/mac/WKContentViewMac.mm

  Log Message:
  ---
  Don't default to a fixed layout WKContentView on macOS
https://bugs.webkit.org/show_bug.cgi?id=247045


Reviewed by Simon Fraser.

* Source/WebKit/UIProcess/API/mac/WKContentViewMac.mm:
(-[WKContentView initWithFrame:page:]):

Canonical link: https://commits.webkit.org/255999@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 355426: Simplify FEComponentTransfer coding

2022-10-24 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 355426c15db9b7f3fec2a3a35a743cdb5b1fc0d3
  
https://github.com/WebKit/WebKit/commit/355426c15db9b7f3fec2a3a35a743cdb5b1fc0d3
  Author: Cameron McCormack 
  Date:   2022-10-24 (Mon, 24 Oct 2022)

  Changed paths:
M Source/WebCore/platform/graphics/filters/FEComponentTransfer.h

  Log Message:
  ---
  Simplify FEComponentTransfer coding
https://bugs.webkit.org/show_bug.cgi?id=246908


Reviewed by Said Abou-Hallawa.

* Source/WebCore/platform/graphics/filters/FEComponentTransfer.h:
(WebCore::FEComponentTransfer::encode const):
(WebCore::FEComponentTransfer::decode):

Canonical link: https://commits.webkit.org/255906@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 10f809: Add coders for std::array and WTF::EnumeratedArray

2022-10-23 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 10f809a2fa905f2dfc618bc02de7684113b22084
  
https://github.com/WebKit/WebKit/commit/10f809a2fa905f2dfc618bc02de7684113b22084
  Author: Cameron McCormack 
  Date:   2022-10-23 (Sun, 23 Oct 2022)

  Changed paths:
M Source/WTF/wtf/EnumeratedArray.h
M Source/WTF/wtf/Forward.h
M Source/WebKit/Platform/IPC/ArgumentCoders.h

  Log Message:
  ---
  Add coders for std::array and WTF::EnumeratedArray
https://bugs.webkit.org/show_bug.cgi?id=246898


Reviewed by Myles C. Maxfield.

* Source/WTF/wtf/EnumeratedArray.h:
* Source/WTF/wtf/Forward.h:
* Source/WebKit/Platform/IPC/ArgumentCoders.h:

Canonical link: https://commits.webkit.org/255901@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4abefb: Update FEComponentTransfer filter effect when a ch...

2022-10-22 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4abefb791c7642bbf2f32d92d246010370c8183d
  
https://github.com/WebKit/WebKit/commit/4abefb791c7642bbf2f32d92d246010370c8183d
  Author: Cameron McCormack 
  Date:   2022-10-22 (Sat, 22 Oct 2022)

  Changed paths:
M 
LayoutTests/svg/resource-invalidation/filter-resource-invalidation-expected.html
M LayoutTests/svg/resource-invalidation/filter-resource-invalidation.html
M Source/WTF/wtf/EnumeratedArray.h
M Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp
M Source/WebCore/platform/graphics/filters/FEComponentTransfer.h
M Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp
M Source/WebCore/svg/SVGComponentTransferFunctionElement.h
A Source/WebCore/svg/SVGComponentTransferFunctionElementInlines.h
M Source/WebCore/svg/SVGFEComponentTransferElement.cpp
M Source/WebCore/svg/SVGFEComponentTransferElement.h
M Source/WebCore/svg/SVGFEFuncAElement.h
M Source/WebCore/svg/SVGFEFuncBElement.h
M Source/WebCore/svg/SVGFEFuncGElement.h
M Source/WebCore/svg/SVGFEFuncRElement.h
M Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
M Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h

  Log Message:
  ---
  Update FEComponentTransfer filter effect when a child transfer function 
attribute changes
https://bugs.webkit.org/show_bug.cgi?id=246602


Reviewed by Said Abou-Hallawa.

Nothing currently causes the FEComponentTransfer effect to get updated
when an attribute on a child feFunc[RGBA] element changes.

Because we there are multiple child elements, we can't call
primitiveAttributeChanged on the parent SVGFEComponentTransferElement
and go through the normal setFilterEffectAttribute path like the
SVGFELightElement classes do. So instead we add a new function,
primitiveAttributeOnChildChanged, which takes the element as well.

* 
LayoutTests/svg/resource-invalidation/filter-resource-invalidation-expected.html:
* LayoutTests/svg/resource-invalidation/filter-resource-invalidation.html:

Add a sub-test for changing one of the feFuncX attributes.

* Source/WTF/wtf/EnumeratedArray.h:
(WTF::EnumeratedArray::index const):
(WTF::EnumeratedArray::index): Deleted.

This function needs to be const for `EnumeratedArray::operator[] const` to
work.

* Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::FEComponentTransfer::create):
(WebCore::FEComponentTransfer::FEComponentTransfer):

(WebCore::FEComponentTransfer::setType):
(WebCore::FEComponentTransfer::setSlope):
(WebCore::FEComponentTransfer::setIntercept):
(WebCore::FEComponentTransfer::setAmplitude):
(WebCore::FEComponentTransfer::setExponent):
(WebCore::FEComponentTransfer::setOffset):
(WebCore::FEComponentTransfer::setTableValues):

Setters for individual attributes of a transfer function.

(WebCore::FEComponentTransfer::externalRepresentation const):

* Source/WebCore/platform/graphics/filters/FEComponentTransfer.h:
(WebCore::FEComponentTransfer::redFunction const):
(WebCore::FEComponentTransfer::greenFunction const):
(WebCore::FEComponentTransfer::blueFunction const):
(WebCore::FEComponentTransfer::alphaFunction const):
(WebCore::FEComponentTransfer::encode const):

Store the four transfer functions in an EnumeratedArray to make access
from the new setter functions above more convenient.

* Source/WebCore/svg/SVGComponentTransferFunctionElementInlines.h: Added.

* Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):

* Source/WebCore/svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::channel const):
(isType):

Add type specialization support for SVGComponentTransferFunctionElement,
to avoid code that checks for each of the four feFuncX element types
explicitly.

* Source/WebCore/svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::createFilterEffect const):

(WebCore::isRelevantTransferFunctionElement):

Used to ensure we only update the effect if it's the last transfer
function element of a given name that's being modified.

(WebCore::SVGFEComponentTransferElement::setFilterEffectAttributeFromChild):

Update the FEComponentTransfer effect when an attribute's changed.

(WebCore::SVGFEComponentTransferElement::transferFunctionAttributeChanged):

* Source/WebCore/svg/SVGFEComponentTransferElement.h:
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::primitiveAttributeOnChildChanged):
* Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::setFilterEffectAttributeFromChild):

* Source/WebCore/svg/SVGFEFuncAElement.h:
* Source/WebCore/svg/SVGFEFuncBElement.h:
* Source/WebCore/svg/SVGFEFuncGElement.h:
* Source/WebCore/svg/SVGFEFuncRElement.h:

Canonical link: https://commits.we

[webkit-changes] [WebKit/WebKit] 46ddd2: Mark svg/gradients/spreadMethodClose2.svg as expec...

2022-10-19 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 46ddd231c79c847c09ce3d5dd55241d2ced771e1
  
https://github.com/WebKit/WebKit/commit/46ddd231c79c847c09ce3d5dd55241d2ced771e1
  Author: Cameron McCormack 
  Date:   2022-10-19 (Wed, 19 Oct 2022)

  Changed paths:
M LayoutTests/platform/mac/TestExpectations

  Log Message:
  ---
  Mark svg/gradients/spreadMethodClose2.svg as expected fail on macOS
https://bugs.webkit.org/show_bug.cgi?id=246772


Unreviewed test gardening.

* LayoutTests/platform/mac/TestExpectations:

Canonical link: https://commits.webkit.org/255766@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 757cc7: Update fuzzy annotations for tests running on macO...

2022-10-19 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 757cc7c481205eb16fe4697f35820de6d4ec699c
  
https://github.com/WebKit/WebKit/commit/757cc7c481205eb16fe4697f35820de6d4ec699c
  Author: Cameron McCormack 
  Date:   2022-10-19 (Wed, 19 Oct 2022)

  Changed paths:
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-027.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-028.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-029.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-030.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-031.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-left-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-right-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-repeat-round-2.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-right-radius-004.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/css-box-shadow-001.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-015.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-clip-016.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/justify-content-001.htm
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/justify-content-005.htm
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-images/tiled-radial-gradients.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-mode-c.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/multicol-rule-dashed-000.xht
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-001.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/css-skew-002.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/preserve3d-and-flattening-z-order-008.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/skew-test1.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transforms-rotate-degree-45.html
M 
LayoutTests/imported/w3c/web-platform-tests/svg/extensibility/foreignObject/masked.html
M LayoutTests/scrollingcoordinator/mac/rtl-programmatic-overflow-scroll.html
M LayoutTests/svg/animations/animated-string-href.svg
M LayoutTests/svg/clip-path/clip-path-line-use-before-defined.svg
M LayoutTests/svg/clip-path/clip-path-shape-rounded-inset-1.svg
M LayoutTests/svg/clip-path/clip-path-shape-rounded-inset-2.svg
M LayoutTests/svg/clip-path/svg-in-html.html
M 
LayoutTests/svg/compositing/outermost-svg-with-border-overflow-visible.html
M LayoutTests/svg/compositing/outermost-svg-with-border.html
M LayoutTests/svg/custom/hidpi-masking-clipping.svg
M LayoutTests/svg/custom/local-url-reference-stroke.html
M LayoutTests/svg/custom/pattern-content-inheritance-cycle.svg
M LayoutTests/svg/gradients/spreadMethodAlpha.svg
M LayoutTests/svg/gradients/spreadMethodDiagonal.svg
M LayoutTests/svg/gradients/spreadMethodDiagonal2.svg
M LayoutTests/tiled-drawing/top-content-inset-fixed-attachment-local.html
M LayoutTests/tiled-drawing/top-content-inset-fixed-attachment.html

  Log Message:
  ---
  Update fuzzy annotations for tests running on macOS with accelerated drawing 
enabled
https://bugs.webkit.org/show_bug.cgi?id=246674


Unreviewed test gardening.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-027.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-028.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-029.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-030.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/background-size-031.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-left-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-bottom-right-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-image-repeat-round-2.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/border-top-right-radius-004.xht:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/css-box-shadow-001.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain

[webkit-changes] [WebKit/WebKit] 57f87f: Factor out default GPU process DOM rendering enabl...

2022-10-13 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57f87f5e4bc6468a6afd40d749f2b8a5b0981233
  
https://github.com/WebKit/WebKit/commit/57f87f5e4bc6468a6afd40d749f2b8a5b0981233
  Author: Cameron McCormack 
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
M Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml
M Source/WTF/wtf/PlatformEnable.h

  Log Message:
  ---
  Factor out default GPU process DOM rendering enabled state
https://bugs.webkit.org/show_bug.cgi?id=246444


Reviewed by Tim Horton.

* Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:
* Source/WTF/wtf/PlatformEnable.h:

Canonical link: https://commits.webkit.org/255473@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b9d359: Increase padding between StreamConnectionBuffer::H...

2022-10-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b9d35939c4a289e7bfcb9016739ade102d262f1c
  
https://github.com/WebKit/WebKit/commit/b9d35939c4a289e7bfcb9016739ade102d262f1c
  Author: Cameron McCormack 
  Date:   2022-10-12 (Wed, 12 Oct 2022)

  Changed paths:
M LayoutTests/ipc/stream-buffer-read-write.html
M LayoutTests/ipc/stream-check-autoreleasepool.html
M LayoutTests/ipc/stream-sync-crash-no-timeout.html
M LayoutTests/ipc/stream-sync-reply-shared-memory.html
M Source/WebKit/Platform/IPC/StreamConnectionBuffer.h

  Log Message:
  ---
  Increase padding between StreamConnectionBuffer::Header fields
https://bugs.webkit.org/show_bug.cgi?id=246390


Reviewed by Kimmo Kinnunen.

If these fields should be on separate CPU cache lines, the alignment of
the second field needs to be at least 128 bytes on ARM64. It's 64 bytes
on some other architectures (including x86_64), but we use 128
everywhere for simplicity.

* LayoutTests/ipc/stream-buffer-read-write.html:
* LayoutTests/ipc/stream-check-autoreleasepool.html:
* LayoutTests/ipc/stream-sync-crash-no-timeout.html:
* LayoutTests/ipc/stream-sync-reply-shared-memory.html:
* Source/WebKit/Platform/IPC/StreamConnectionBuffer.h:

Canonical link: https://commits.webkit.org/255469@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 09496e: Encode WebCore::Paths using a trailing "end of pat...

2022-10-12 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 09496e855222f4a787bed209454e539b1a732ba0
  
https://github.com/WebKit/WebKit/commit/09496e855222f4a787bed209454e539b1a732ba0
  Author: Cameron McCormack 
  Date:   2022-10-12 (Wed, 12 Oct 2022)

  Changed paths:
M Source/WTF/wtf/EnumTraits.h
M Source/WebCore/platform/graphics/GraphicsContextState.cpp
M Source/WebCore/platform/graphics/Path.h

  Log Message:
  ---
  Encode WebCore::Paths using a trailing "end of path" marker instead of an 
element count prefix
https://bugs.webkit.org/show_bug.cgi?id=246322
rdar://100873493

Reviewed by Wenson Hsieh.

The WebCore::Path decoder doesn't need to know the number of path elements ahead
of time. Changing to use an "end of path" marker saves some space in the
encoding, since it'll take up one byte as opposed to the 16 bytes for the path
element count.

Add EncodedPathElementType to represent "a PathElement::Type or an end of path
marker" and which can encode its value in a single byte. Do this rather than:

* using std::optional or Markable, as both
  will write out a boolean "is empty/present" value, which is wasteful,
  or

* adding an EndOfPath enum value to PathElement::Type, as then various call
  sites unrelated to encoding will need to worry about it.

* Source/WTF/wtf/EnumTraits.h:
* Source/WebCore/platform/graphics/GraphicsContextState.cpp:
(WebCore::toIndex):
* Source/WebCore/platform/graphics/Path.h:
(WebCore::Path::EncodedPathElementType::encode):
(WebCore::Path::EncodedPathElementType::decode):
(WebCore::Path::encode const):
(WebCore::Path::decode):

Canonical link: https://commits.webkit.org/255452@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 520379: Fix comment in Assertions.h to point to the right ...

2022-10-10 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 520379e30f3b2b6d4de9957ab2afc97185879bc4
  
https://github.com/WebKit/WebKit/commit/520379e30f3b2b6d4de9957ab2afc97185879bc4
  Author: Cameron McCormack 
  Date:   2022-10-10 (Mon, 10 Oct 2022)

  Changed paths:
M Source/WTF/wtf/Assertions.h

  Log Message:
  ---
  Fix comment in Assertions.h to point to the right place
https://bugs.webkit.org/show_bug.cgi?id=246324


Unreviewed comment fix.

* Source/WTF/wtf/Assertions.h:

Canonical link: https://commits.webkit.org/255378@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 6cfe0a: Update MediaSessionInfo media elements with a srcO...

2022-09-28 Thread Cameron McCormack
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6cfe0a4e9efc3217d24a30f17e312b951695782b
  
https://github.com/WebKit/WebKit/commit/6cfe0a4e9efc3217d24a30f17e312b951695782b
  Author: Cameron McCormack 
  Date:   2022-09-28 (Wed, 28 Sep 2022)

  Changed paths:
M Source/WebCore/html/HTMLMediaElement.h
M Source/WebCore/html/MediaElementSession.cpp
M Source/WebCore/platform/graphics/MediaUsageInfo.h

  Log Message:
  ---
  Update MediaSessionInfo media elements with a srcObject
https://bugs.webkit.org/show_bug.cgi?id=245753
rdar://problem/100477469

Reviewed by Jer Noble.

The optimization at the top of MediaElementSession::updateMediaUsageIfChanged
does not take into account media elements that have no currentSrc but do
have a srcObject. Don't exit early for such elements.

Store an additional bit of information on MediaSessionInfo to represent whether
the element has any source (currentSrc or srcObject).

* Source/WebCore/html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::hasSource const):
* Source/WebCore/html/MediaElementSession.cpp:
(WebCore::MediaElementSession::updateMediaUsageIfChanged):
* Source/WebCore/platform/graphics/MediaUsageInfo.h:
(WebCore::MediaUsageInfo::operator== const):
(WebCore::MediaUsageInfo::encode const):
(WebCore::MediaUsageInfo::decode):

Canonical link: https://commits.webkit.org/254948@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes