WebKit-https.git
2 months ago[macOS] Fix mach syscall sandbox violation in the Network process
pvollan@apple.com [Tue, 17 May 2022 01:00:05 +0000 (01:00 +0000)]
[macOS] Fix mach syscall sandbox violation in the Network process
https://bugs.webkit.org/show_bug.cgi?id=240466
<rdar://93249176>

Reviewed by Chris Dumez.

Fix mach syscall sandbox violation in the Network process on macOS.

* Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

link: https://commits.webkit.org/250626@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294282 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoCrash in WebCore::InsertTextCommand::positionInsideTextNode
gnavamarino@apple.com [Mon, 16 May 2022 23:58:42 +0000 (23:58 +0000)]
Crash in WebCore::InsertTextCommand::positionInsideTextNode
https://bugs.webkit.org/show_bug.cgi?id=240480

Reviewed by Ryosuke Niwa.

Calling pushAnchorElementDown in CompositeEditCommand::positionAvoidingSpecialElementBoundary can
end up removing the startPosition's container node which leaves an invalid endingSelection.

InsertTextCommand::doApply requires a real endingSelection, so we should check if this occurred and bail out.

* editing/InsertTextCommand.cpp:
(WebCore::InsertTextCommand::doApply):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294281 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoREGRESSION(r249162): CanvasRenderingContext2DBase::drawImage() crashes if the image...
said@apple.com [Mon, 16 May 2022 23:44:54 +0000 (23:44 +0000)]
REGRESSION(r249162): CanvasRenderingContext2DBase::drawImage() crashes if the image is animated and the first frame cannot be decoded
https://bugs.webkit.org/show_bug.cgi?id=239113
rdar://87980543

Reviewed by Simon Fraser.

Source/WebCore:

CanvasRenderingContext2DBase::drawImage() needs to ensure the first frame
of the animated image can be decoded correctly before creating the temporary
static image. If the first frame can't be decoded, this function should return
immediately. This matches the behavior of this function before r249162.

The animated image decodes its frames asynchronously in a work queue. But
the first frame has to be decoded synchronously in the main run loop. So
to avoid running the image decoder in two different threads we are going
to keep the first and the current frame cached when we receive a memory
pressure warning. This should not increase the memory allocation of the
animated image because the numbers of cached frames increases quickly and
we keep all of them till a memory warning is received. But the memory
pressure warning will be received a little bit more often. This depends
on the memory size of the first frame.

To make the code more robust, make ImageSource take a Ref<NativeImage>
instead of taking a RefPtr<NativeImage>.

* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::drawImage):
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::BitmapImage):
(WebCore::BitmapImage::destroyDecodedData):
* platform/graphics/BitmapImage.h:
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::destroyDecodedData):
(WebCore::ImageSource::setNativeImage):
* platform/graphics/ImageSource.h:
(WebCore::ImageSource::create):
(WebCore::ImageSource::isDecoderAvailable const):
(WebCore::ImageSource::destroyAllDecodedData): Deleted.
(WebCore::ImageSource::destroyAllDecodedDataExcludeFrame): Deleted.
(WebCore::ImageSource::destroyDecodedDataBeforeFrame): Deleted.

Source/WebKit:

* GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawSystemImage):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294280 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agordar://93377867 (WebKit r294204: weird text rendering artifacts while pages are loading)
simon.fraser@apple.com [Mon, 16 May 2022 23:40:16 +0000 (23:40 +0000)]
rdar://93377867 (WebKit r294204: weird text rendering artifacts while pages are loading)

Revert r294204 and r294262

* layout/integration/inline/InlineIteratorBox.cpp:
(WebCore::InlineIterator::Box::visualRect const): Deleted.
* layout/integration/inline/InlineIteratorBox.h:
(WebCore::InlineIterator::Box::visualRect const):
(WebCore::InlineIterator::Box::containingBlock const): Deleted.
* layout/integration/inline/InlineIteratorBoxLegacyPath.h:
(WebCore::InlineIterator::BoxLegacyPath::containingBlock const): Deleted.
(WebCore::InlineIterator::BoxLegacyPath::direction const): Deleted.
(WebCore::InlineIterator::BoxLegacyPath::isFirstLine const): Deleted.
* layout/integration/inline/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::direction const):
(WebCore::InlineIterator::BoxModernPath::containingBlock const): Deleted.
(WebCore::InlineIterator::BoxModernPath::isFirstLine const): Deleted.
* layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::paint):
* rendering/InlineBoxPainter.cpp:
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
* rendering/LegacyInlineFlowBox.cpp:
(WebCore::LegacyInlineFlowBox::addTextBoxVisualOverflow):
* rendering/LegacyInlineTextBox.cpp:
(WebCore::LegacyInlineTextBox::paint):
* rendering/LegacyInlineTextBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
* rendering/TextBoxPainter.cpp:
(WebCore::TextBoxPainter::TextBoxPainter):
(WebCore::TextBoxPainter::~TextBoxPainter):
(WebCore::TextBoxPainter::paint):
(WebCore::TextBoxPainter::createMarkedTextFromSelectionInBox):
(WebCore::TextBoxPainter::paintBackground):
(WebCore::TextBoxPainter::paintForegroundAndDecorations):
(WebCore::TextBoxPainter::paintCompositionBackground):
(WebCore::TextBoxPainter::paintForeground):
(WebCore::TextBoxPainter::createDecorationPainter):
(WebCore::TextBoxPainter::paintBackgroundDecorations):
(WebCore::TextBoxPainter::paintForegroundDecorations):
(WebCore::TextBoxPainter::paintCompositionUnderlines):
(WebCore::textPosition):
(WebCore::TextBoxPainter::paintCompositionUnderline):
(WebCore::TextBoxPainter::paintPlatformDocumentMarkers):
(WebCore::TextBoxPainter::calculateUnionOfAllDocumentMarkerBounds):
(WebCore::TextBoxPainter::paintPlatformDocumentMarker):
(WebCore::TextBoxPainter::computePaintRect):
(WebCore::TextBoxPainter::calculateDocumentMarkerBounds):
(WebCore::TextBoxPainter::computeHaveSelection const):
(WebCore::TextBoxPainter::fontCascade const):
(WebCore::TextBoxPainter::textOriginFromPaintRect const):
(WebCore::TextBoxPainter::debugTextShadow const):
(WebCore::LegacyTextBoxPainter::LegacyTextBoxPainter): Deleted.
(): Deleted.
(WebCore::ModernTextBoxPainter::ModernTextBoxPainter): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::TextBoxPainter): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::~TextBoxPainter): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::makeIterator const): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paint): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::createMarkedTextFromSelectionInBox): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintBackground): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintForegroundAndDecorations): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionBackground): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintForeground): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::createDecorationPainter): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintBackgroundDecorations): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintForegroundDecorations): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionUnderlines): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::textPosition): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionUnderline): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintPlatformDocumentMarkers): Deleted.
(WebCore::LegacyTextBoxPainter::calculateUnionOfAllDocumentMarkerBounds): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::paintPlatformDocumentMarker): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::computePaintRect): Deleted.
(WebCore::calculateDocumentMarkerBounds): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::computeHaveSelection const): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::fontCascade const): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::textOriginFromPaintRect const): Deleted.
(WebCore::TextBoxPainter<TextBoxPath>::debugTextShadow const): Deleted.
* rendering/TextBoxPainter.h:
(WebCore::TextBoxPainter::textBox const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294279 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[ iOS ] imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading...
rackler@apple.com [Mon, 16 May 2022 23:40:12 +0000 (23:40 +0000)]
[ iOS ] imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/004.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=240489

Unreviewed test gardening.

* LayoutTests/platform/ios/TestExpectations:

link: https://commits.webkit.org/250622@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294278 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoTake intrinsicBorderForFieldset() into account in intrinsically sized fieldset
obrufau@igalia.com [Mon, 16 May 2022 23:03:23 +0000 (23:03 +0000)]
Take intrinsicBorderForFieldset() into account in intrinsically sized fieldset
https://bugs.webkit.org/show_bug.cgi?id=240388

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Add test.

* web-platform-tests/html/semantics/forms/the-fieldset-element/fieldset-intrinsic-size-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-fieldset-element/fieldset-intrinsic-size.html: Added.

Source/WebCore:

With 'box-sizing: content-box', computeIntrinsicLogicalContentHeightUsing
was not taking intrinsicBorderForFieldset() into account. So a fieldset
with 'height: min-content' would ignore the extra space required by the
legend, and the contents would overflow.

This patch adds a RenderBox::adjustIntrinsicLogicalHeightForBoxSizing
method with the logic, and overrides it in RenderBlock to take
intrinsicBorderForFieldset() into account.

Test: imported/w3c/web-platform-tests/html/semantics/forms/the-fieldset-element/fieldset-intrinsic-size.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::adjustIntrinsicLogicalHeightForBoxSizing const):
Take intrinsicBorderForFieldset() into account.

* rendering/RenderBlock.h:
Override adjustIntrinsicLogicalHeightForBoxSizing.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::adjustIntrinsicLogicalHeightForBoxSizing const):
(WebCore::RenderBox::computeIntrinsicLogicalContentHeightUsing const):
Move logic into a new method so that RenderBlock can override it.

* rendering/RenderBox.h:
Declare adjustIntrinsicLogicalHeightForBoxSizing as virtual.
No need for computeIntrinsicLogicalContentHeightUsing to be virtual.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294275 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoFix the build after 250556@main
timothy_horton@apple.com [Mon, 16 May 2022 22:59:07 +0000 (22:59 +0000)]
Fix the build after 250556@main

* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
Maintain the status quo here, for now, by adopting unsafeBuffer().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294274 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[CMake][VS] PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h is not updated in...
Hironori.Fujii@sony.com [Mon, 16 May 2022 22:56:32 +0000 (22:56 +0000)]
[CMake][VS] PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h is not updated in incremental build
https://bugs.webkit.org/show_bug.cgi?id=240297

Reviewed by Don Olmstead.

In CMake Visual Studio generator builds,
WebCoreJSBuiltinInternals.h was not copied to the private headers
directory as expected in incremental builds.

${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h was
added to both WebCore_SOURCES and WebCore_PRIVATE_FRAMEWORK_HEADERS.
This caused the incremental build problem. Don't add the headers
to WebCore_SOURCES.

There was another minor problem. ${WebCore_BUILTINS_SOURCES} was
passed to the MAIN_DEPENDENCY argument of add_custom_command.
However, MAIN_DEPENDENCY argument should take a single file. It
should be passed to DEPENDS argument.

* CMakeLists.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294273 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoCorrect erroneous guard in Platform file
bfulgham@apple.com [Mon, 16 May 2022 22:43:21 +0000 (22:43 +0000)]
Correct erroneous guard in Platform file
https://bugs.webkit.org/show_bug.cgi?id=240469
<rdar://problem/93358873>

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294272 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago-Wdangling-pointer warning when building ANGLE with GCC 12
commit-queue@webkit.org [Mon, 16 May 2022 22:35:27 +0000 (22:35 +0000)]
-Wdangling-pointer warning when building ANGLE with GCC 12
https://bugs.webkit.org/show_bug.cgi?id=239339

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-16
Reviewed by Yusuke Suzuki and Kenneth Russell.

* Source/ThirdParty/ANGLE/CMakeLists.txt:

link: https://commits.webkit.org/250617@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294271 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[SOUP2] Compute number of header bytes whe using soup 2
yurys@chromium.org [Mon, 16 May 2022 22:25:50 +0000 (22:25 +0000)]
[SOUP2] Compute number of header bytes whe using soup 2
https://bugs.webkit.org/show_bug.cgi?id=240200

Reviewed by Michael Catanzaro.

SOUP 2 lacks methods that allow to get computed head sizes (only present in v3),
calculate the sizes manually when libsoup 2 is used.

No new tests, covered by LayoutTests/http/tests/inspector/network/resource-sizes-network.html
when compiled with SOUP 2.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::addHeaderSizes):
(WebKit::NetworkDataTaskSoup::didGetHeaders):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294268 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[css-ui] Unexpose attachment and borderless-attachment appearance values
ntim@apple.com [Mon, 16 May 2022 22:25:02 +0000 (22:25 +0000)]
[css-ui] Unexpose attachment and borderless-attachment appearance values
https://bugs.webkit.org/show_bug.cgi?id=240447

Reviewed by Tim Horton.

Hide them behind the attachmentElementEnabled setting.

Test: imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001.html

LayoutTests:

* imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

Source/WebCore:

* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

link: https://commits.webkit.org/250615@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294267 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[css-ui] Update documentation for appearance CSS property
ntim@apple.com [Mon, 16 May 2022 22:18:15 +0000 (22:18 +0000)]
[css-ui] Update documentation for appearance CSS property
https://bugs.webkit.org/show_bug.cgi?id=240481

Reviewed by Devin Rousso.

Account for r294226, r294187 and r294170.

Source/WebCore:

* css/CSSProperties.json:

Source/WebInspectorUI:

* UserInterface/External/CSSDocumentation/CSSDocumentation-overrides.json:
* UserInterface/External/CSSDocumentation/CSSDocumentation.js:

link: https://commits.webkit.org/250614@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294266 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRemove abandoned WebKitAdditionsFeature1 flag (240462)
bfulgham@apple.com [Mon, 16 May 2022 21:53:34 +0000 (21:53 +0000)]
Remove abandoned WebKitAdditionsFeature1 flag (240462)
https://bugs.webkit.org/show_bug.cgi?id=240462
<rdar://93353298>

Reviewed by Alex Christensen.

Remove the abandoned WebKitAdditionsFeature1 preference, since
it ended up not being needed and now just complicates the build
and generated preferences.

* Scripts/Preferences/WebPreferencesExperimental.yaml:
* wtf/ExperimentalFeatureNames.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294265 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRemove abandoned UseScreenCaptureKit preference
bfulgham@apple.com [Mon, 16 May 2022 21:44:55 +0000 (21:44 +0000)]
Remove abandoned UseScreenCaptureKit preference
https://bugs.webkit.org/show_bug.cgi?id=240460
<rdar://problem/93351960>

Reviewed by Youenn Fablet.

We no longer need this switch to activate ScreenCaptureKit, and this code is no
longer used. We should remove it to simplify the build and reduce complexity.

Source/WebCore:

* platform/mediastream/RealtimeMediaSourceCenter.h:
(WebCore::RealtimeMediaSourceCenter::useScreenCaptureKit const): Deleted.
(WebCore::RealtimeMediaSourceCenter::setUseScreenCaptureKit): Deleted.

Source/WebKit:

* GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::setUseScreenCaptureKit): Deleted.
* GPUProcess/GPUProcess.h:
* GPUProcess/GPUProcess.messages.in:
* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultScreenCaptureKitEnabled): Deleted.
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _useScreenCaptureKit]): Deleted.
(-[WKPreferences _setUseScreenCaptureKit:]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::updatePreferences):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs const):

Source/WTF:

* Scripts/Preferences/WebPreferencesExperimental.yaml:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMediaWindowAndScreen.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294264 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[Flatpak SDK] Update libwpe to version 1.13.2
aperez@igalia.com [Mon, 16 May 2022 21:43:21 +0000 (21:43 +0000)]
[Flatpak SDK] Update libwpe to version 1.13.2
https://bugs.webkit.org/show_bug.cgi?id=240470

Reviewed by Philippe Normand.

* elements/sdk/libwpe.bst: Update to version 1.13.2, switch download URL to the
canonical release site while at it.

link: https://commits.webkit.org/250611@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294263 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoUnreviewed, fix build after 250565@main
commit-queue@webkit.org [Mon, 16 May 2022 21:41:43 +0000 (21:41 +0000)]
Unreviewed, fix build after 250565@main
https://bugs.webkit.org/show_bug.cgi?id=240416

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-16
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
* Source/WebCore/rendering/TextBoxPainter.cpp:
(WebCore::TextBoxPainter<TextBoxPath>::debugTextShadow const):

link: https://commits.webkit.org/250610@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294262 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoUnreviewed, reverting r294238.
ryanhaddad@apple.com [Mon, 16 May 2022 21:37:00 +0000 (21:37 +0000)]
Unreviewed, reverting r294238.

Breaks internal builds

Reverted changeset:

"Use _adoptEffectiveConfiguration instead of a separate
NSURLSession without credentials"
https://bugs.webkit.org/show_bug.cgi?id=240362
https://commits.webkit.org/r294238

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294261 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoFix URL to offset-rotate property in CSSProperties.json
mmaxfield@apple.com [Mon, 16 May 2022 21:21:12 +0000 (21:21 +0000)]
Fix URL to offset-rotate property in CSSProperties.json
https://bugs.webkit.org/show_bug.cgi?id=240474

Reviewed by Myles C. Maxfield.

No new tests, not a functional change.

* Source/WebCore/css/CSSProperties.json:

link: https://commits.webkit.org/250608@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294259 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoAdd myself to contributors.json
ntim@apple.com [Mon, 16 May 2022 21:01:40 +0000 (21:01 +0000)]
Add myself to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=240475

Reviewed by Myles C. Maxfield.

* metadata/contributors.json:

link: https://commits.webkit.org/250607@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294254 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[PrettyPatch] Support commit messages (Follow-up fix)
jbedard@apple.com [Mon, 16 May 2022 20:32:13 +0000 (20:32 +0000)]
[PrettyPatch] Support commit messages (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=240386
<rdar://problem/93248835>

Unreviewed follow-up fix.

* Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb: Handle diffs without a header.

link: https://commits.webkit.org/250606@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294250 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[css-ui] alias appearance <compat-auto> keywords to 'auto' for textfield
zsun@igalia.com [Mon, 16 May 2022 19:00:08 +0000 (19:00 +0000)]
[css-ui] alias appearance <compat-auto> keywords to 'auto' for textfield
https://bugs.webkit.org/show_bug.cgi?id=238551

Reviewed by Tim Nguyen.

Source/WebCore:

This is to add support of aliasing appearance to 'auto' for textfield.
It has improved the following wpt tests
imported/w3c/web-platform-tests/css/css-ui/appearance-textfield-001.html
and
imported/w3c/web-platform-tests/css/css-ui/webkit-appearance-textfield-001.html.

The test failures though, are not fully fixed. The issue left is that the search cancel button
for input type="search" still present while it is expected to disappear (Bug 238751).

* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustAppearanceForElement const):

LayoutTests:

Rename test name as the test result now matches the expected.
* fast/forms/color/color-input-uses-color-well-appearance-expected.html: Renamed from LayoutTests/fast/forms/color/color-input-uses-color-well-appearance-expected-mismatch.html.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294249 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[Flatpak SDK] Update to pipewire master
commit-queue@webkit.org [Mon, 16 May 2022 18:54:01 +0000 (18:54 +0000)]
[Flatpak SDK] Update to pipewire master
https://bugs.webkit.org/show_bug.cgi?id=240428

Patch by Philippe Normand <pnormand@igalia.com> on 2022-05-16
Reviewed by Adrian Perez de Castro.

The GStreamer pipewiresrc element from 0.3.36 has bugs that were fixed in the master branch.

* elements/freedesktop-sdk.bst:
* patches/fdo-0001-pipewire-base-Track-master-branch.patch: Added.

link: https://commits.webkit.org/250604@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294248 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[GTK][WPE] Make ANGLE backend EGL context initialization work
commit-queue@webkit.org [Mon, 16 May 2022 17:58:38 +0000 (17:58 +0000)]
[GTK][WPE] Make ANGLE backend EGL context initialization work
https://bugs.webkit.org/show_bug.cgi?id=240313

The platform is not selected correctly by default and the config
can not be chosen in some cases in the current conditions. Maybe
at some point we want something more general in the code for the
platform detection but for testing we have solved it adding the
environment variable (EGL_PLATORM) to make sure the platform
inside mesa is correctly selected when running the tests. If we
don't do it the small environment in the testing driver process
causes to chose the X11 because it is the building default
option. We used wayland because the headless driver we use is a
wayland backed implemented using shared memory.

Patch by Alejandro G. Castro <alex@igalia.com> on 2022-05-16
Reviewed by Žan Doberšek.

No new tests, it fixes the tests for the ANGLE implementation.

* Scripts/webkitpy/port/headlessdriver.py:
(HeadlessDriver._setup_environ_for_test):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294245 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[Gardening]: REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html...
rackler@apple.com [Mon, 16 May 2022 17:57:23 +0000 (17:57 +0000)]
[Gardening]: REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html
https://bugs.webkit.org/show_bug.cgi?id=214155

Unreviewed test gardening.
* LayoutTests/platform/ios/TestExpectations:

link: https://commits.webkit.org/250602@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294244 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoREGRESSION(r294104): [GStreamer][VideoCapture] Webcam raw streams may hang up the...
commit-queue@webkit.org [Mon, 16 May 2022 17:53:21 +0000 (17:53 +0000)]
REGRESSION(r294104): [GStreamer][VideoCapture] Webcam raw streams may hang up the video capture pipeline
https://bugs.webkit.org/show_bug.cgi?id=240456

Patch by Loïc Le Page <llepage@igalia.com> on 2022-05-16
Reviewed by Philippe Normand.

When capturing a raw stream from a webcam, the pipeline may hang up because the decodebin3 cannot fix the upstream caps.
The webcam capsfilter should not only specify the captured mime-type (video/x-raw) but also the capture image dimensions.

Manually tested.

* platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294243 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago(REGRESSION(r287957)[ Mac ] TestWebKitAPI.WebAuthenticationPanel.LAGetAssertionNoMock...
j_pascoe@apple.com [Mon, 16 May 2022 17:48:17 +0000 (17:48 +0000)]
(REGRESSION(r287957)[ Mac ] TestWebKitAPI.WebAuthenticationPanel.LAGetAssertionNoMockNoUserGesture is a constant timeout)
https://bugs.webkit.org/show_bug.cgi?id=240403
rdar://93271671

Reviewed by Brent Fulgham.

Whenever HAVE(UNIFIED_ASC_AUTH_UI), unmocked calls are passed to ASA, which does not
support calls from TWAPI.

* TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294242 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoREGRESSION (250501@main): [ Mac ] 2 TestWebKitAPI.WebAuthenticationPanel.GetAssertion...
j_pascoe@apple.com [Mon, 16 May 2022 17:43:08 +0000 (17:43 +0000)]
REGRESSION (250501@main): [ Mac ] 2 TestWebKitAPI.WebAuthenticationPanel.GetAssertionLA tests failing
https://bugs.webkit.org/show_bug.cgi?id=240406
rdar://93267082

Reviewed by Brent Fulgham.

Using the the truthiness of BOOL from attributes doesn't work here, instead compare it to @YES.

* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticatorInternal::getExistingCredentials):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294241 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LFC][FFC] Add support for logical ordering
zalan@apple.com [Mon, 16 May 2022 17:35:40 +0000 (17:35 +0000)]
[LFC][FFC] Add support for logical ordering
https://bugs.webkit.org/show_bug.cgi?id=240442

Reviewed by Antti Koivisto.

Let's reorder the logicalFlexItemList when the 'order' property has a non-initial value.

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294240 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[ iOS ] imported/w3c/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html...
rackler@apple.com [Mon, 16 May 2022 17:30:34 +0000 (17:30 +0000)]
[ iOS ] imported/w3c/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html is a consistent failure
https://bugs.webkit.org/show_bug.cgi?id=240463

Unreviewed test gardening.
* LayoutTests/platform/ios/TestExpectations:

link: https://commits.webkit.org/250597@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294239 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoUse _adoptEffectiveConfiguration instead of a separate NSURLSession without credentials
commit-queue@webkit.org [Mon, 16 May 2022 16:49:23 +0000 (16:49 +0000)]
Use _adoptEffectiveConfiguration instead of a separate NSURLSession without credentials
https://bugs.webkit.org/show_bug.cgi?id=240362

Patch by Alex Christensen <achristensen@webkit.org> on 2022-05-16
Reviewed by Chris Dumez.

Source/WebCore/PAL:

* pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::initializeNSURLSessionsInSet):
(WebKit::SessionSet::initializeEphemeralStatelessSessionIfNeeded):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::appBoundSession):
(WebKit::SessionSet::isolatedSession):
(WebKit::NetworkSessionCocoa::invalidateAndCancelSessionSet):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294238 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LFC][FFC] Add "flex-direction: column-reverse" basic visual/logical conversion
zalan@apple.com [Mon, 16 May 2022 16:33:38 +0000 (16:33 +0000)]
[LFC][FFC] Add "flex-direction: column-reverse" basic visual/logical conversion
https://bugs.webkit.org/show_bug.cgi?id=240434

Reviewed by Antti Koivisto.

With "flex-direction: column-reverse" the main axis progression is from visual bottom to top (with default writing mode and all that).

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294237 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[Gardening]:[ iOS ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-videoDet...
rackler@apple.com [Mon, 16 May 2022 16:18:10 +0000 (16:18 +0000)]
[Gardening]:[ iOS ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html is a consistent failure
https://bugs.webkit.org/show_bug.cgi?id=240348

Unreviewed test gardening.

* LayoutTests/platform/ios/TestExpectations:

link: https://commits.webkit.org/250594@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294236 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoCanvas generated transparent pixels are not well handled by LocalSampleBufferDisplayLayer
commit-queue@webkit.org [Mon, 16 May 2022 16:12:23 +0000 (16:12 +0000)]
Canvas generated transparent pixels are not well handled by LocalSampleBufferDisplayLayer
https://bugs.webkit.org/show_bug.cgi?id=230621
rdar://problem/83668394

Patch by Youenn Fablet <youennf@gmail.com> on 2022-05-16
Reviewed by Eric Carlson.

Remove black color for root and display layer.
When display layer is hidden but root layer is visible, set root layer background color to black to keep existing behavior.
This allows to render transparent video frames without a black background.

Covered by https://jsfiddle.net/nfu7oL60/ (make sure to switch between tabs after clicking start).
Also covered by https://webrtc.github.io/samples/src/content/peerconnection/pc1/ and muting/unmuting the camera.

* Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
(WebCore::LocalSampleBufferDisplayLayer::initialize):
(WebCore::LocalSampleBufferDisplayLayer::updateDisplayMode):

link: https://commits.webkit.org/250593@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294235 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoWeb Inspector: Regression(r266885) Crash sometimes when rehydrating imported audit...
pangle@apple.com [Mon, 16 May 2022 15:52:10 +0000 (15:52 +0000)]
Web Inspector: Regression(r266885) Crash sometimes when rehydrating imported audit results
https://bugs.webkit.org/show_bug.cgi?id=240366

Reviewed by Devin Rousso.

Source/JavaScriptCore:

* inspector/protocol/DOM.json:

Source/WebCore:

Added test cases to inspector/model/dom-node.html

After r266885, there is no path to handle the possibility that there may not be a resulting node for calls to
`DOM.querySelector`. To correct this, mark the return value as optional (Web Inspector frontend already treats
it as optional) and return early if there was no Element matching the selector.

* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::querySelector):
* inspector/agents/InspectorDOMAgent.h:

LayoutTests:

* inspector/model/dom-node.html:
* inspector/model/dom-node-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294234 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LFC][FFC] Add "flex-direction: row-reverse" basic visual/logical conversion
zalan@apple.com [Mon, 16 May 2022 15:08:11 +0000 (15:08 +0000)]
[LFC][FFC] Add "flex-direction: row-reverse" basic visual/logical conversion
https://bugs.webkit.org/show_bug.cgi?id=240432

Reviewed by Antti Koivisto.

With "flex-direction: row-reverse" the main axis progression is from visual right to left (with default writing mode and all that).

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294233 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[GTK] Warning in WebKitDOMDocumentGtk.cpp with GCC 12
commit-queue@webkit.org [Mon, 16 May 2022 13:55:35 +0000 (13:55 +0000)]
[GTK] Warning in WebKitDOMDocumentGtk.cpp with GCC 12
https://bugs.webkit.org/show_bug.cgi?id=239353

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-16
Reviewed by Yusuke Suzuki.

* Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
(webkit_dom_document_create_node_iterator):
(webkit_dom_document_create_tree_walker):

link: https://commits.webkit.org/250590@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294232 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LFC][FFC] Add "flex-direction: column" basic visual/logical conversion
zalan@apple.com [Mon, 16 May 2022 13:16:41 +0000 (13:16 +0000)]
[LFC][FFC] Add "flex-direction: column" basic visual/logical conversion
https://bugs.webkit.org/show_bug.cgi?id=240430

Reviewed by Antti Koivisto.

With "flex-direction: column" the main axis progression is based on the margin box height.

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294231 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRename MockAudioSharedInternalUnit::m_isProducingState to MockAudioSharedInternalUnit...
commit-queue@webkit.org [Mon, 16 May 2022 12:54:14 +0000 (12:54 +0000)]
Rename MockAudioSharedInternalUnit::m_isProducingState to MockAudioSharedInternalUnit::m_internalState
https://bugs.webkit.org/show_bug.cgi?id=240450

Patch by Youenn Fablet <youennf@gmail.com> on 2022-05-16
Reviewed by Eric Carlson.

Follow-up to https://bugs.webkit.org/show_bug.cgi?id=240421 review.

No change of behavior.

* Source/WebCore/platform/mediastream/mac/MockAudioSharedUnit.mm:
(WebCore::MockAudioSharedInternalUnit::MockAudioSharedInternalUnit):
(WebCore::MockAudioSharedInternalUnit::~MockAudioSharedInternalUnit):
(WebCore::MockAudioSharedInternalUnit::start):
(WebCore::MockAudioSharedInternalUnit::stop):
(WebCore::MockAudioSharedInternalUnit::uninitialize):
(WebCore::MockAudioSharedInternalUnit::generateSampleBuffers):

link: https://commits.webkit.org/250588@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294230 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoREGRESSION(r294104): [GStreamer] getUserMedia broken
commit-queue@webkit.org [Mon, 16 May 2022 12:48:52 +0000 (12:48 +0000)]
REGRESSION(r294104): [GStreamer] getUserMedia broken
https://bugs.webkit.org/show_bug.cgi?id=240420

Patch by Philippe Normand <pnormand@igalia.com> on 2022-05-16
Reviewed by Xabier Rodriguez-Calvar.

The converter handling logic was modified in order to fix getUserMedia negotiated with raw
video and also getDisplayMedia which is always raw video and thus doesn't require decoding.

This patch also introduces a small optimization, reconfiguration is now done once only,
after setting size and framerate. Before this patch it was done twice, so the pipeline was a
taking more time to produce the first frame.

* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::~GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::settingsDidChange): Trigger capturer reconfiguration after setting both size and framerate.
(WebCore::GStreamerVideoCaptureSource::startProducingData): Ditto.
* platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
(WebCore::GStreamerVideoCapturer::createConverter): Do not decode display capture streams, these are always raw anyway.
(WebCore::GStreamerVideoCapturer::setSize): Delay reconfiguration.
(WebCore::GStreamerVideoCapturer::setFrameRate): Ditto.
(WebCore::GStreamerVideoCapturer::reconfigure): Keep track of compatible video format. This
is needed to workaround an issue in pipewiresrc caps negotiation.
(WebCore::GStreamerVideoCapturer::adjustVideoSrcMIMEType): Renamed to reconfigure().
* platform/mediastream/gstreamer/GStreamerVideoCapturer.h:

link: https://commits.webkit.org/250587@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294229 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[GStreamer] Add basic video meta handling in sinks
commit-queue@webkit.org [Mon, 16 May 2022 12:23:09 +0000 (12:23 +0000)]
[GStreamer] Add basic video meta handling in sinks
https://bugs.webkit.org/show_bug.cgi?id=240429

Patch by Philippe Normand <pnormand@igalia.com> on 2022-05-16
Reviewed by Xabier Rodriguez-Calvar.

By handling allocation queries and advertising video meta handling to upstream elements, our
video sinks are now more efficient, especially on Raspberry Pi 4 with the v4l2 stateless
H.264 decoder.

* platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp:
(webKitVideoSinkSetMediaPlayerPrivate):

link: https://commits.webkit.org/250586@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294228 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRemove some custom-element tests
commit-queue@webkit.org [Mon, 16 May 2022 11:43:54 +0000 (11:43 +0000)]
Remove some custom-element tests
https://bugs.webkit.org/show_bug.cgi?id=240449

Patch by Rob Buis <rbuis@igalia.com> on 2022-05-16
Reviewed by Tim Nguyen.

Remove some custom-element tests since they are now available in WPT.

* fast/custom-elements/enqueue-custom-element-callback-reactions-inside-another-callback-expected.txt: Removed.
* fast/custom-elements/enqueue-custom-element-callback-reactions-inside-another-callback.html: Removed.
* fast/custom-elements/perform-microtask-checkpoint-before-construction-expected.txt: Removed.
* fast/custom-elements/perform-microtask-checkpoint-before-construction.html: Removed.
* fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-expected.txt: Removed.
* fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html: Removed.
* fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-expected.txt: Removed.
* fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294227 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[css-ui] Make inner-spin-button/sliderthumb-horizontal/sliderthumb-vertical appearanc...
ntim@apple.com [Mon, 16 May 2022 10:27:00 +0000 (10:27 +0000)]
[css-ui] Make inner-spin-button/sliderthumb-horizontal/sliderthumb-vertical appearance values internal
https://bugs.webkit.org/show_bug.cgi?id=240448

Reviewed by Antti Koivisto.

Test: imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001.html

iOS baseline for appearance-cssom-001-expected.txt is identical to the main one, so remove it.

LayoutTests:

* fast/forms/range/thumbslider-crash-expected.txt: Removed.
* fast/forms/range/thumbslider-crash.html: Removed.
* fast/forms/range/thumbslider-no-parent-slider.html: Removed.
* platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.png: Removed.
* platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
* platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt: Removed.
* platform/ios/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
* platform/mac/fast/forms/range/thumbslider-no-parent-slider-expected.png: Removed.
* platform/mac/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
* platform/win/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
* platform/wincairo/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
* imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

Source/WebCore:

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSValueKeywords.in:
* platform/ThemeTypes.h:

link: https://commits.webkit.org/250584@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294226 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoMake sure calling showNotification will extend the service worker lifetime
youenn@apple.com [Mon, 16 May 2022 08:18:23 +0000 (08:18 +0000)]
Make sure calling showNotification will extend the service worker lifetime
https://bugs.webkit.org/show_bug.cgi?id=240273
<rdar://92978482>

Reviewed by Chris Dumez.

Source/WebCore:

Update NotificationClient API so that show is taking a completion handler.
Make use of this completion handler to resolve the promise when the show notification steps are done, as per spec.
Register push event to ServiceWorkerGlobalScope when the event handlers are called.
When ServiceWorkerRegistration::show is called during one of the push event handlers,
extend the push event lifetime by adding the show notification promise to the push event.

Covered by API test.

* Modules/notifications/Notification.cpp:
* Modules/notifications/Notification.h:
* Modules/notifications/NotificationClient.h:
* dom/ScriptExecutionContext.cpp:
* dom/ScriptExecutionContext.h:
* workers/service/ServiceWorkerGlobalScope.cpp:
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/ServiceWorkerRegistration.cpp:
* workers/service/ServiceWorkerRegistration.h:
* workers/service/context/ServiceWorkerThread.cpp:

Source/WebKit:

On WebProcess side, implement the new NoficationClient::show API that takes a callback.
Delay calling this callback until UIProcess tells us so through async IPC.
On UIProcess side, take a callback and call it when the show notification steps are done.

* NetworkProcess/Notifications/NetworkNotificationManager.cpp:
* NetworkProcess/Notifications/NetworkNotificationManager.h:
* Shared/Notifications/NotificationManagerMessageHandler.h:
* Shared/Notifications/NotificationManagerMessageHandler.messages.in:
* UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:
* UIProcess/Notifications/ServiceWorkerNotificationHandler.h:
* UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:
* UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
* WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.cpp:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Notifications/WebNotificationManager.h:
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
* WebProcess/WebCoreSupport/WebNotificationClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebNotificationClient.h:
* WebCoreSupport/WebNotificationClient.mm:

Tools:

* TestWebKitAPI/TestNotificationProvider.cpp:
* TestWebKitAPI/TestNotificationProvider.h:
* TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294225 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoDo not allow unitless values for CSS unprefixed perspective property
mrobinson@webkit.org [Mon, 16 May 2022 08:14:46 +0000 (08:14 +0000)]
Do not allow unitless values for CSS unprefixed perspective property
https://bugs.webkit.org/show_bug.cgi?id=104805
<rdar://problem/77016090>

Reviewed by Tim Nguyen.

LayoutTests/imported/w3c:

* web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
* web-platform-tests/quirks/unitless-length/excluded-properties-001-expected.txt:

Source/WebCore:

No new tests. This is tested by an existing WPT test:
    web-platform-tests/quirks/unitless-length/excluded-properties-001.html

* animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSProperties.json:
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumePerspective):
(WebCore::CSSPropertyParser::consumePrefixedPerspective):
(WebCore::CSSPropertyParser::parseShorthand):
* css/parser/CSSPropertyParser.h:
* rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::propertyCreatesStackingContext):

LayoutTests:

* platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
* platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294224 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoMockAudioSharedInternalUnit should exit early when being stopped in generateSampleBuffers
youenn@apple.com [Mon, 16 May 2022 07:26:25 +0000 (07:26 +0000)]
MockAudioSharedInternalUnit should exit early when being stopped in generateSampleBuffers
https://bugs.webkit.org/show_bug.cgi?id=240421
<rdar://93279260>

Reviewed by Eric Carlson.

We used to always call generateSampleBuffers from main thread.
We are now calling it from background thread with dispatchAfter to mimick a realtime clock.
This broke the dispatchSync call we were calling when stopping the mock unit as the dispatchAfter task would be called
after the dispatchSync and |this| could potentially no longer be valid.
To prevent this, we introduce MockAudioSharedInternalUnitState which allows to safely know whether the unit is stopped or not
at any point in time. If the unit is stopped, dispatchAfter will not call generateSampleBuffers.

Covered by existing tests.

* platform/mediastream/mac/MockAudioSharedUnit.mm:
(WebCore::MockAudioSharedInternalUnitState::create):
(WebCore::MockAudioSharedInternalUnitState::isProducingData const):
(WebCore::MockAudioSharedInternalUnitState::setIsProducingData):
(WebCore::MockAudioSharedInternalUnit::MockAudioSharedInternalUnit):
(WebCore::MockAudioSharedInternalUnit::~MockAudioSharedInternalUnit):
(WebCore::MockAudioSharedInternalUnit::start):
(WebCore::MockAudioSharedInternalUnit::stop):
(WebCore::MockAudioSharedInternalUnit::uninitialize):
(WebCore::MockAudioSharedInternalUnit::generateSampleBuffers):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294223 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoAdd logging when taking a process assertion synchronously
youenn@apple.com [Mon, 16 May 2022 07:14:59 +0000 (07:14 +0000)]
Add logging when taking a process assertion synchronously
https://bugs.webkit.org/show_bug.cgi?id=240334

Reviewed by Chris Dumez.

No observable change of behavior.

* UIProcess/ios/ProcessAssertionIOS.mm:
(WebKit::ProcessAssertion::acquireSync):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294222 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoAudio playback rate sped up for few seconds when using createMediaElementSource
youenn@apple.com [Mon, 16 May 2022 06:37:21 +0000 (06:37 +0000)]
Audio playback rate sped up for few seconds when using createMediaElementSource
https://bugs.webkit.org/show_bug.cgi?id=239696
<rdar://problem/92569332>

Reviewed by Eric Carlson.

We added a way for AudioSampleDataSource to reduce latency due to its audio buffer by reading the audio buffer faster
until the audio buffer size decreases to a reasonnable value.
The reasonnable buffer size was computed in terms of multiple of 10ms as RTC sources are pushing 10 or 20 millisecond chunks.
Other sources may push much bigger chunks (100 milliseconds for instance), in which case it does not make real sense to try to reduce the delay below it.
To prevent this, we will decrease the buffer size if it is above 100 milliseconds (as previously) AND the buffer size is 4 times the size of the pushed audio chunk.
4 times the size of the pushed audio chunk is 40 ms for RTC sources which is a reasonnable buffer size.

Manually tested with https://webaudioapi.com/samples/audio-tag/.

* platform/audio/cocoa/AudioSampleDataConverter.h:
* platform/audio/cocoa/AudioSampleDataConverter.mm:
(WebCore::AudioSampleDataConverter::updateBufferedAmount):
* platform/audio/cocoa/AudioSampleDataSource.mm:
(WebCore::AudioSampleDataSource::pushSamplesInternal):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294221 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoUnreviewed, revert r294214 partially
ysuzuki@apple.com [Mon, 16 May 2022 02:32:13 +0000 (02:32 +0000)]
Unreviewed, revert r294214 partially
https://bugs.webkit.org/show_bug.cgi?id=240292

These part is not cold code. We must not use PAS_ASSERT_WITH_DETAIL.

* libpas/src/libpas/pas_local_allocator_config_kind.h:
(pas_local_allocator_config_kind_create_normal):
(pas_local_allocator_config_kind_create_primordial_partial):
(pas_local_allocator_config_kind_create_bitfit):
(pas_local_allocator_config_kind_get_segregated_page_config_kind):
(pas_local_allocator_config_kind_get_bitfit_page_config_kind):
(pas_local_allocator_config_kind_get_string):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294220 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[WinCairo] Unreviewed test gardening
hironori.fujii@sony.com [Mon, 16 May 2022 01:44:00 +0000 (01:44 +0000)]
[WinCairo] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=240439

* platform/wincairo-wk1/TestExpectations:
* platform/wincairo/TestExpectations:

link: https://commits.webkit.org/250577@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294219 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRight click > "Open Link" should trigger a navigation action with WKNavigationTypeLin...
wenson_hsieh@apple.com [Sun, 15 May 2022 23:21:52 +0000 (23:21 +0000)]
Right click > "Open Link" should trigger a navigation action with WKNavigationTypeLinkActivated
https://bugs.webkit.org/show_bug.cgi?id=240427
rdar://90400867

Reviewed by Tim Horton.

Add a new linked-on-or-after check to guard this new behavior for apps built against newer SDK versions.

* wtf/cocoa/RuntimeApplicationChecksCocoa.h:
Right click > "Open Link" should trigger a navigation action with WKNavigationTypeLinkActivated
https://bugs.webkit.org/show_bug.cgi?id=240427
rdar://90400867

Reviewed by Tim Horton.

Make a couple of minor adjustments to `ContextMenuController` to ensure that right clicking a link and choosing
"Open Link" or "Open Link in New Window" surfaces a navigation action with `WKNavigationTypeLinkActivated`,
rather than `WKNavigationTypeOther`.

Test: ContextMenuTests.NavigationTypeWhenOpeningLink

* page/ContextMenuContext.cpp:
(WebCore::ContextMenuContext::ContextMenuContext):
* page/ContextMenuContext.h:
(WebCore::ContextMenuContext::event const):

Save a reference to the `Event` of type "contextmenu" that's triggering context menu presentation in the
`ContextMenuContext`.

* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::maybeCreateContextMenu):
(WebCore::openNewWindow):

Plumb the `"contextmenu"` event through to `FrameLoader::loadFrameRequest` when opening links via context menu.

(WebCore::ContextMenuController::contextMenuItemSelected):
Right click > "Open Link" should trigger a navigation action with WKNavigationTypeLinkActivated
https://bugs.webkit.org/show_bug.cgi?id=240427
rdar://90400867

Reviewed by Tim Horton.

Add an API test to verify that right clicking a link and selecting "Open Link" triggers a navigation action with
the type `WKNavigationTypeLinkActivated`.

* TestWebKitAPI/Tests/mac/ContextMenuTests.mm:
(TestWebKitAPI::TEST):

link: https://commits.webkit.org/250576@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294218 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LFC][FFC] Introduce logical direction based flex layout
zalan@apple.com [Sun, 15 May 2022 16:53:19 +0000 (16:53 +0000)]
[LFC][FFC] Introduce logical direction based flex layout
https://bugs.webkit.org/show_bug.cgi?id=240424

Reviewed by Antti Koivisto.

This is in preparation for ensuring that core flex layout only needs to deal with
one direction for flex content progression (row vs. column vs. reversed etc).

* WebCore.xcodeproj/project.pbxproj:
* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):
* layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::canUseForFlexLayout):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294217 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoSkip flaky test on ARM
angelos@igalia.com [Sun, 15 May 2022 15:49:21 +0000 (15:49 +0000)]
Skip flaky test on ARM
https://bugs.webkit.org/show_bug.cgi?id=240426

Unreviewed gardening.

* stress/verify-can-gc-node-index.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294216 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoWebCore::IOSurface has WebCore::GraphicsContext as its property, it should be the...
commit-queue@webkit.org [Sun, 15 May 2022 13:30:46 +0000 (13:30 +0000)]
WebCore::IOSurface has WebCore::GraphicsContext as its property, it should be the other way around
https://bugs.webkit.org/show_bug.cgi?id=240417

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-05-15
Reviewed by Simon Fraser.

Do not store WebCore::GraphicsContext in WebCore::IOSurface.
E.g. graphics context is not the property of the bitmap that
is being drawn to. The backing bitmap is a property of the context.

Instead, store the GraphicsContextCG at the place where the user is,
e.g. in ImageBufferIOSurfaceBackend. This allows the context client
to create the context with the options the client needs.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContextCG::GraphicsContextCG):
(WebCore::GraphicsContextCG::drawNativeImage):
* platform/graphics/cg/GraphicsContextCG.h:
* platform/graphics/cg/IOSurfacePool.cpp:
(WebCore::IOSurfacePool::willAddSurface):
* platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::~ImageBufferIOSurfaceBackend):
(WebCore::ImageBufferIOSurfaceBackend::context const):
(WebCore::ImageBufferIOSurfaceBackend::releaseGraphicsContext):
* platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::create):
(WebCore::IOSurface::releasePlatformGraphicsContext):
(WebCore::IOSurface::ensureGraphicsContext): Deleted.
(WebCore::IOSurface::releaseGraphicsContext): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294215 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[LIBPAS] Add extra assert information to malloc enumeration API
justin_michaud@apple.com [Sun, 15 May 2022 02:08:04 +0000 (02:08 +0000)]
[LIBPAS] Add extra assert information to malloc enumeration API
https://bugs.webkit.org/show_bug.cgi?id=240292

Reviewed by Yusuke Suzuki.

In the heap enumerator (which is a slow path), we have asserts that
have the opportunity to include extra information to aid debugging.

We add PAS_ASSERT_WITH_DETAIL, which stuffs extra data into registers before crashing
so that we can see it in crash logs. We also add a debugging option to allow logging
to syslog, for cases when we do not have access to stdout.

* libpas/src/libpas/pas_enumerate_segregated_heaps.c:
(consider_allocator):
* libpas/src/libpas/pas_local_allocator_config_kind.h:
(pas_local_allocator_config_kind_create_normal):
(pas_local_allocator_config_kind_create_primordial_partial):
(pas_local_allocator_config_kind_create_bitfit):
(pas_local_allocator_config_kind_get_segregated_page_config_kind):
(pas_local_allocator_config_kind_get_bitfit_page_config_kind):
(pas_local_allocator_config_kind_get_string):
* libpas/src/libpas/pas_log.c:
(pas_vlog):
* libpas/src/libpas/pas_utils.c:
(pas_crash_with_info_impl):
(pas_panic):
(pas_assertion_failed_no_inline):
(pas_assertion_failed_no_inline_with_extra_detail):
* libpas/src/libpas/pas_utils.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294214 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoPut ThreadGlobalData in Thread
ysuzuki@apple.com [Sun, 15 May 2022 00:47:31 +0000 (00:47 +0000)]
Put ThreadGlobalData in Thread
https://bugs.webkit.org/show_bug.cgi?id=240116

Reviewed by Darin Adler and Mark Lam.

This patch puts ThreadGlobalData into Thread's m_clientData field.
Thread is stored in fast TLS, so accessing to this field is quite fast
compared to the current ThreadSpecific one.

At the same time, this change can remove a hack in ThreadGlobalData.
Previously worker thread needs to tear down ThreadGlobalData explicitly
because Thread::current() can be destroyed earlier than ThreadGlobalData.
In that case, EventNames etc., which accesses to AtomString's destruction
can have problem because of lack of Thread::current() access. But since
we now move it to Thread, we can control how it is destroyed with Thread::current()
precisely, and we can explicitly destroy it before Thread::current() is fully
cleared. So we do not need to call it explicitly anymore.
Currently, we are calling it just to make ThreadGlobalData destroyed for debugging.

* Source/WebCore/PAL/pal/ThreadGlobalData.cpp:
(PAL::ThreadGlobalData::ThreadGlobalData):
(PAL::ThreadGlobalData::destroy): Deleted.
* Source/WebCore/PAL/pal/ThreadGlobalData.h:
(PAL::ThreadGlobalData::ThreadGlobalData::cachedConverterICU): Deleted.
* Source/WTF/wtf/Threading.h:
(WTF::Thread::Thread):
* Source/WTF/wtf/posix/ThreadingPOSIX.cpp:
(WTF::Thread::destructTLS):
* Source/WTF/wtf/win/ThreadingWin.cpp:
(WTF::Thread::ThreadHolder::~ThreadHolder):
* Source/WebCore/platform/ThreadGlobalData.cpp:
(WebCore::ThreadGlobalData::destroy):
(WebCore::ThreadGlobalData::setWebCoreThreadData):
(WebCore::threadGlobalData):

link: https://commits.webkit.org/250571@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294213 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[webkit-patch] Include commit messages in patches (Follow-up #2)
jbedard@apple.com [Sun, 15 May 2022 00:45:16 +0000 (00:45 +0000)]
[webkit-patch] Include commit messages in patches (Follow-up #2)
https://bugs.webkit.org/show_bug.cgi?id=240256
<rdar://problem/92982358>

Unreviewed follow-up fix.

* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.create_patch): Allow caller to exclude commit message, run `git diff` against HEAD by
default to include both staged and unstaged changes.
* Scripts/webkitpy/common/checkout/scm/scm.py:
(SCM.create_patch): Match function signature for git.
* Scripts/webkitpy/common/checkout/scm/scm_mock.py:
(MockSCM.create_patch): Match function signature for git.
* Scripts/webkitpy/common/checkout/scm/svn.py:
(SVN.create_patch): Match function signature for git.
* Scripts/webkitpy/w3c/test_exporter.py:
(WebPlatformTestExporter._wpt_patch): Exclude commit message since we won't be able
to classify it's file.
* Scripts/webkitpy/w3c/test_exporter_unittest.py:
(TestExporterTest.MockGit.create_patch): Match function signature for git.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294212 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoChanging text color and removing line-clamp on hover causes text to disappear permanently
zalan@apple.com [Sat, 14 May 2022 22:39:40 +0000 (22:39 +0000)]
Changing text color and removing line-clamp on hover causes text to disappear permanently
https://bugs.webkit.org/show_bug.cgi?id=240410

Reviewed by Simon Fraser.

Source/WebCore:

Invalidate the flex items' line layout path when line-clamp property value changes.

While the line clamp property is set on the flex box, it is "forced on" the flex items' inline content.
(i.e. the property is not inherited, it is propagated to the flex children)
It means dynamic value change only runs on the flex box renderer.

Test: fast/block/dynamic-line-clamp-empty-content.html

* rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::RenderDeprecatedFlexibleBox::styleWillChange):

LayoutTests:

* fast/block/dynamic-line-clamp-empty-content-expected.html: Added.
* fast/block/dynamic-line-clamp-empty-content.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294211 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoUnreviewed win build fix.
zalan@apple.com [Sat, 14 May 2022 21:35:41 +0000 (21:35 +0000)]
Unreviewed win build fix.

* layout/integration/flex/LayoutIntegrationFlexLayout.cpp:
(WebCore::LayoutIntegration::flexBoxLogicalBorder):
(WebCore::LayoutIntegration::flexBoxLogicalPadding):
(WebCore::LayoutIntegration::FlexLayout::updateFormattingRootGeometryAndInvalidate):
(WebCore::LayoutIntegration::logicalBorder): Deleted.
(WebCore::LayoutIntegration::logicalPadding): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294210 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoRename EventTrackingRegions::Event to EventTrackingRegions::EventType
ysuzuki@apple.com [Sat, 14 May 2022 20:08:58 +0000 (20:08 +0000)]
Rename EventTrackingRegions::Event to EventTrackingRegions::EventType
https://bugs.webkit.org/show_bug.cgi?id=240295

Reviewed by Darin Adler.

This patch is follow-up after r293967 by Darin's comment. EventTrackingRegions::Event is not event actually,
it is just an EventType. This patch renames it with EventType. We also rename variables "event" to "eventType".

* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<EventTrackingRegions>::decode):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::eventTrackingTypeForPoint const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateTouchEventTracking):
* Source/WebCore/page/DebugPageOverlays.cpp:
(WebCore::NonFastScrollableRegionOverlay::drawRect):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::touchEventRectsForEventForTesting):
* Source/WebCore/page/Page.h:
* Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):
* Source/WebCore/page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::computeWheelProcessingSteps):
(WebCore::ScrollingTree::eventTrackingTypeForPoint):
* Source/WebCore/page/scrolling/ScrollingTree.h:
* Source/WebCore/platform/EventTrackingRegions.cpp:
(WebCore::EventTrackingRegions::eventName):
(WebCore::EventTrackingRegions::eventNameAtomString): We add this function to have a way to get AtomString event name. It simplifies Internal code.
(WebCore::EventTrackingRegions::trackingTypeForPoint):
(WebCore::EventTrackingRegions::uniteSynchronousRegion):
* Source/WebCore/platform/EventTrackingRegions.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::touchEventRectsForEvent):

link: https://commits.webkit.org/250567@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294209 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoAX: Remove CSSDisplayContentsAXSupportEnabled flag
tyler_w@apple.com [Sat, 14 May 2022 19:15:53 +0000 (19:15 +0000)]
AX: Remove CSSDisplayContentsAXSupportEnabled flag
https://bugs.webkit.org/show_bug.cgi?id=240409

Reviewed by Chris Fleizach.

Source/WebCore:

We added initial support without using this flag and will continue to
fix bugs as we find them, making this flag unnecessary.

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setCSSDisplayContentsAXSupportEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::cssDisplayContentsAXSupportEnabled const): Deleted.

Source/WebKitLegacy/mac:

We added initial support without using this flag and will continue to
fix bugs as we find them, making this flag unnecessary.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(-[WebPreferences cssDisplayContentsAXSupportEnabled]): Deleted.
(-[WebPreferences setCSSDisplayContentsAXSupportEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:

Source/WTF:

* Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

* DumpRenderTree/TestOptions.cpp:
(WTR::TestOptions::defaults):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294208 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoTemplate TextBoxPainter on line layout path
antti@apple.com [Sat, 14 May 2022 17:51:12 +0000 (17:51 +0000)]
Template TextBoxPainter on line layout path
https://bugs.webkit.org/show_bug.cgi?id=240416

Reviewed by Alan Bujtas.

Painting currently goes via a line layout path agnostic iterator.
This is inefficient since we always know what sort of layout we are painting.

* layout/integration/inline/InlineIteratorBox.cpp:
(WebCore::InlineIterator::Box::visualRect const):
* layout/integration/inline/InlineIteratorBox.h:
(WebCore::InlineIterator::Box::containingBlock const):
(WebCore::InlineIterator::Box::visualRect const): Deleted.
* layout/integration/inline/InlineIteratorBoxLegacyPath.h:
(WebCore::InlineIterator::BoxLegacyPath::containingBlock const):
(WebCore::InlineIterator::BoxLegacyPath::direction const):
(WebCore::InlineIterator::BoxLegacyPath::isFirstLine const):
* layout/integration/inline/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::containingBlock const):
(WebCore::InlineIterator::BoxModernPath::direction const):
(WebCore::InlineIterator::BoxModernPath::isFirstLine const):
(WebCore::InlineIterator::BoxModernPath::renderText const):
* layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::paint):
* rendering/InlineBoxPainter.cpp:
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
* rendering/LegacyInlineFlowBox.cpp:
(WebCore::LegacyInlineFlowBox::addTextBoxVisualOverflow):
* rendering/LegacyInlineTextBox.cpp:
(WebCore::LegacyInlineTextBox::paint):
* rendering/LegacyInlineTextBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
* rendering/TextBoxPainter.cpp:
(WebCore::LegacyTextBoxPainter::LegacyTextBoxPainter):
(WebCore::ModernTextBoxPainter::ModernTextBoxPainter):
(WebCore::TextBoxPainter<TextBoxPath>::TextBoxPainter):
(WebCore::TextBoxPainter<TextBoxPath>::~TextBoxPainter):
(WebCore::TextBoxPainter<TextBoxPath>::makeIterator const):
(WebCore::TextBoxPainter<TextBoxPath>::paint):
(WebCore::TextBoxPainter<TextBoxPath>::createMarkedTextFromSelectionInBox):
(WebCore::TextBoxPainter<TextBoxPath>::paintBackground):
(WebCore::TextBoxPainter<TextBoxPath>::paintForegroundAndDecorations):
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionBackground):
(WebCore::TextBoxPainter<TextBoxPath>::paintForeground):
(WebCore::TextBoxPainter<TextBoxPath>::createDecorationPainter):
(WebCore::TextBoxPainter<TextBoxPath>::paintBackgroundDecorations):
(WebCore::TextBoxPainter<TextBoxPath>::paintForegroundDecorations):
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionUnderlines):
(WebCore::TextBoxPainter<TextBoxPath>::textPosition):
(WebCore::TextBoxPainter<TextBoxPath>::paintCompositionUnderline):
(WebCore::TextBoxPainter<TextBoxPath>::paintPlatformDocumentMarkers):
(WebCore::LegacyTextBoxPainter::calculateUnionOfAllDocumentMarkerBounds):
(WebCore::TextBoxPainter<TextBoxPath>::paintPlatformDocumentMarker):
(WebCore::TextBoxPainter<TextBoxPath>::computePaintRect):
(WebCore::calculateDocumentMarkerBounds):
(WebCore::TextBoxPainter<TextBoxPath>::computeHaveSelection const):
(WebCore::TextBoxPainter<TextBoxPath>::fontCascade const):
(WebCore::TextBoxPainter<TextBoxPath>::textOriginFromPaintRect const):
(WebCore::TextBoxPainter<TextBoxPath>::debugTextShadow const):
(WebCore::TextBoxPainter::TextBoxPainter): Deleted.
(WebCore::TextBoxPainter::~TextBoxPainter): Deleted.
(WebCore::TextBoxPainter::paint): Deleted.
(WebCore::TextBoxPainter::createMarkedTextFromSelectionInBox): Deleted.
(WebCore::TextBoxPainter::paintBackground): Deleted.
(WebCore::TextBoxPainter::paintForegroundAndDecorations): Deleted.
(WebCore::TextBoxPainter::paintCompositionBackground): Deleted.
(WebCore::TextBoxPainter::paintForeground): Deleted.
(WebCore::TextBoxPainter::createDecorationPainter): Deleted.
(WebCore::TextBoxPainter::paintBackgroundDecorations): Deleted.
(WebCore::TextBoxPainter::paintForegroundDecorations): Deleted.
(WebCore::TextBoxPainter::paintCompositionUnderlines): Deleted.
(WebCore::textPosition): Deleted.
(WebCore::TextBoxPainter::paintCompositionUnderline): Deleted.
(WebCore::TextBoxPainter::paintPlatformDocumentMarkers): Deleted.
(WebCore::TextBoxPainter::calculateUnionOfAllDocumentMarkerBounds): Deleted.
(WebCore::TextBoxPainter::paintPlatformDocumentMarker): Deleted.
(WebCore::TextBoxPainter::computePaintRect): Deleted.
(WebCore::TextBoxPainter::calculateDocumentMarkerBounds): Deleted.
(WebCore::TextBoxPainter::computeHaveSelection const): Deleted.
(WebCore::TextBoxPainter::fontCascade const): Deleted.
(WebCore::TextBoxPainter::textOriginFromPaintRect const): Deleted.
(WebCore::TextBoxPainter::debugTextShadow const): Deleted.
* rendering/TextBoxPainter.h:
(WebCore::TextBoxPainter::textBox const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294204 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months ago[FFC][Integration] Add "fixed sized/all default value" flex layout
zalan@apple.com [Sat, 14 May 2022 16:56:07 +0000 (16:56 +0000)]
[FFC][Integration] Add "fixed sized/all default value" flex layout
https://bugs.webkit.org/show_bug.cgi?id=240414

Reviewed by Antti Koivisto.

This patch adds support for the simplest possible flex layout (fixed size, no-wrap, no-reversed etc).

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294198 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 months agoWebCore::IOSurface refers to unused context size
commit-queue@webkit.org [Sat, 14 May 2022 16:26:54 +0000 (16:26 +0000)]
WebCore::IOSurface refers to unused context size
https://bugs.webkit.org/show_bug.cgi?id=240385

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-05-14
Reviewed by Simon Fraser.

Source/WebCore:

Remove unused IOSurface::m_contextSize.
Context related code makes IOSurface error-prone wrt
reusing the IOSurface in the pool.

* platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::create):
* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::create):
(WebCore::IOSurface::IOSurface):
(WebCore::IOSurface::ensurePlatformContext):

Source/WebKit:

Adjust after removing the IOSurface context size parameter.
All call sites passed the surface size.

* WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:
(WebKit::ImageBufferShareableMappedIOSurfaceBackend::create):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294197 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoUse an OptionSet<> for DisplayList::AsTextFlags
simon.fraser@apple.com [Sat, 14 May 2022 15:59:33 +0000 (15:59 +0000)]
Use an OptionSet<> for DisplayList::AsTextFlags
https://bugs.webkit.org/show_bug.cgi?id=240415

Reviewed by Alan Bujtas.

Simple adoption of OptionSet<DisplayList::AsTextFlag> in place of DisplayList::AsTextFlags.

* html/HTMLCanvasElement.h:
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::displayListAsText const):
(WebCore::GraphicsLayer::replayDisplayListAsText const):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::displayListAsText const):
(WebCore::GraphicsLayerCA::replayDisplayListAsText const):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::shouldDumpForFlags):
(WebCore::DisplayList::DisplayList::asText const):
* platform/graphics/displaylists/DisplayList.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::displayListAsText const):
(WebCore::RenderLayerBacking::replayDisplayListAsText const):
* rendering/RenderLayerBacking.h:
* rendering/TextPainter.cpp:
(WebCore::TextPainter::cachedGlyphDisplayListsForTextNodeAsText):
* rendering/TextPainter.h:
* testing/Internals.cpp:
(WebCore::Internals::displayListForElement):
(WebCore::Internals::replayDisplayListForElement):
(WebCore::Internals::cachedGlyphDisplayListsForTextNode):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294196 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[Repaint] Border ignores currentColor change when hovering
zalan@apple.com [Sat, 14 May 2022 15:24:29 +0000 (15:24 +0000)]
[Repaint] Border ignores currentColor change when hovering
https://bugs.webkit.org/show_bug.cgi?id=240401

Reviewed by Antti Koivisto.

Source/WebCore:

This patch triggers repaint when currentColor is applied on border.

It most likely got broken at r150259 (9 years ago!) when StyleDifferenceRepaintIfText was introduced.
StyleDifferenceRepaintIfText is a "conditional repaint" diff value which only triggers repaint if the renderer has some text content.

Later, r156619 addressed some of the "content with border/outline is not painting" fallout by extending
StyleDifferenceRepaintIfText to RepaintIfTextOrBorderOrOutline.
RepaintIfTextOrBorderOrOutline turns "conditional repaints" to real repaints if, in addition to text, the content has outline/border.
However the fix was neither complete nor proper (it patched the repaint logic by changing hasImmediateNonWhitespaceTextChildOrBorderOrOutline
instead of computing the correct diff value -unconditional Repaint).

Fast-forward to 2020, r267528 ensured that content with outline is no longer a "conditional repaint".
It also made some of the code introduced in r156619 redundant (see hasImmediateNonWhitespaceTextChildOrBorderOrOutline).

This patch expands on r267528 by introducing isEquivalentForPainting for the border data. It ensures that we
compute (unconditional) Repaint diff value, if the border uses currentColor.

Tests: fast/repaint/repaint-current-color-border-on-hover.html
       fast/repaint/repaint-pseudo-border-on-hover.html

* rendering/RenderElement.cpp:
(WebCore::RenderElement::hasImmediateNonWhitespaceTextChildOrBorderOrOutline const):
* rendering/style/BorderData.h:
(WebCore::BorderData::isEquivalentForPainting const):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresRepaint const):

LayoutTests:

* fast/repaint/repaint-current-color-border-on-hover-expected.txt: Added.
* fast/repaint/repaint-current-color-border-on-hover.html: Added.
* fast/repaint/repaint-pseudo-border-on-hover-expected.txt: Added.
* fast/repaint/repaint-pseudo-border-on-hover.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294195 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[webkit-patch] Include commit messages in patches (Follow-up)
jbedard@apple.com [Sat, 14 May 2022 14:40:27 +0000 (14:40 +0000)]
[webkit-patch] Include commit messages in patches (Follow-up)
https://bugs.webkit.org/show_bug.cgi?id=240256
<rdar://problem/92982358>

Unreviewed follow-up fix.

* Tools/Scripts/webkitpy/common/checkout/scm/git.py:
(Git.create_patch): Prefer commit specified by user.

link: https://commits.webkit.org/250560@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294194 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[FFC][Integration] Add updateFormattingRootGeometryAndInvalidate/updateRenderers
zalan@apple.com [Sat, 14 May 2022 13:59:52 +0000 (13:59 +0000)]
[FFC][Integration] Add updateFormattingRootGeometryAndInvalidate/updateRenderers
https://bugs.webkit.org/show_bug.cgi?id=240413

Reviewed by Antti Koivisto.

Make sure that the layout box/renderer geometries are all up-to-date.

* layout/integration/flex/LayoutIntegrationFlexLayout.cpp:
(WebCore::LayoutIntegration::logicalBorder):
(WebCore::LayoutIntegration::logicalPadding):
(WebCore::LayoutIntegration::FlexLayout::updateFormattingRootGeometryAndInvalidate):
(WebCore::LayoutIntegration::FlexLayout::layout):
(WebCore::LayoutIntegration::FlexLayout::updateRenderers const):
* layout/integration/flex/LayoutIntegrationFlexLayout.h:
(WebCore::LayoutIntegration::FlexLayout::flexBoxRenderer const):
(WebCore::LayoutIntegration::FlexLayout::flexBoxRenderer):
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutUsingFlexFormattingContext):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294193 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[FFC][Integration] Do not reset the effective display value for flex root
zalan@apple.com [Sat, 14 May 2022 13:30:56 +0000 (13:30 +0000)]
[FFC][Integration] Do not reset the effective display value for flex root
https://bugs.webkit.org/show_bug.cgi?id=240412

Reviewed by Antti Koivisto.

Non-inline formatting roots (e.g. flex) should not need display type adjustment.

* layout/integration/LayoutIntegrationBoxTree.cpp:
(WebCore::LayoutIntegration::rootBoxStyle):
(WebCore::LayoutIntegration::rootBoxFirstLineStyle):
(WebCore::LayoutIntegration::BoxTree::BoxTree):
(WebCore::LayoutIntegration::BoxTree::updateStyle):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294192 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[LFC] LayoutState should track the integration formatting context type
zalan@apple.com [Sat, 14 May 2022 13:19:52 +0000 (13:19 +0000)]
[LFC] LayoutState should track the integration formatting context type
https://bugs.webkit.org/show_bug.cgi?id=240411

Reviewed by Antti Koivisto.

Let's not use RuntimeEnabledFeatures to check wheter the integration codepath is enabled as
the new FCs (e.g. flex) don't even have such flags.

* layout/LayoutContext.cpp:
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::LayoutState):
(WebCore::Layout::LayoutState::formattingStateForFormattingContext const):
(WebCore::Layout::LayoutState::formattingStateForInlineFormattingContext const):
(WebCore::Layout::LayoutState::formattingStateForFlexFormattingContext const):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):
(WebCore::Layout::LayoutState::ensureFlexFormattingState):
(WebCore::Layout::LayoutState::setViewportSize):
(WebCore::Layout::LayoutState::viewportSize const):
(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):
(WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):
(WebCore::Layout::LayoutState::shouldNotSynthesizeInlineBlockBaseline const):
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::isInlineFormattingContextIntegration const):
(WebCore::Layout::LayoutState::isFlexFormattingContextIntegration const):
* layout/floats/FloatingState.cpp:
* layout/formattingContexts/inline/InlineFormattingContext.cpp:
* layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::close):
* layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):
* layout/integration/flex/LayoutIntegrationFlexLayout.cpp:
(WebCore::LayoutIntegration::FlexLayout::FlexLayout):
* layout/integration/inline/LayoutIntegrationInlineContent.cpp:
* layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::releaseCaches):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294191 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoSharedBuffer should be copied and then attributed back to WebContent
commit-queue@webkit.org [Sat, 14 May 2022 12:41:00 +0000 (12:41 +0000)]
SharedBuffer should be copied and then attributed back to WebContent
https://bugs.webkit.org/show_bug.cgi?id=240223
rdar://91006582

Patch by Jean-Yves Avenard <jean-yves.avenard@apple.com> on 2022-05-14
Reviewed by Jer Noble.

Ideally, when mapping an IPCHandle we would prefer to use Copy On Write.
However, there's no support for COW with explicitly-owned memory such as
those created with VM_FLAGS_PURGABLE flag.
As such, when calling mach_vm_map with copy=true argument is set the
entire page will be copied.
It is therefore more performant to manually create a new buffer and copy
the actual content.
The memory can then be blamed on a particular process.

Rework FragmentedSharedBuffer/SharedBuffer IPC's serializer to perform
a copy, partially reverting changes made in bug 233401.

We replace the unnecessary use of SharedMemory::IPCHandle and directly
send SharedBuffer in clipboard and PDF related methods.
Rename SharedBufferCopy to SharedBufferReference to more accurately
describe what it does.

Make new use of the SharedBufferReference class, replacing the use of IPCHandle
in RemoteSourceBufferProxy and RemoteMediaResourceManager.

Rename SharedBufferReference::buffer() into
SharedBufferReference::unsafeBuffer() to give better clarity that accessing
SharedBuffer and SharedMemory should be treated with care.

SharedBuffer sent from trusted processes such as network process should
prefer the use of SharedBufferReference over directly using IPCHandle or
SharedBuffer, it makes optimisation easier and avoid duplicating code.

No observable change, covered by existing tests.

* GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::remoteMediaResourceManager):
* GPUProcess/media/RemoteCDMInstanceProxy.h:
* GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:
(WebKit::RemoteImageDecoderAVFProxy::createDecoder):
(WebKit::RemoteImageDecoderAVFProxy::setData):
* GPUProcess/media/RemoteImageDecoderAVFProxy.h:
* GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in:
* GPUProcess/media/RemoteMediaResourceManager.cpp:
(WebKit::RemoteMediaResourceManager::RemoteMediaResourceManager):
(WebKit::RemoteMediaResourceManager::dataReceived):
* GPUProcess/media/RemoteMediaResourceManager.h:
* GPUProcess/media/RemoteMediaResourceManager.messages.in:
* GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::append):
* GPUProcess/media/RemoteSourceBufferProxy.h:
* GPUProcess/media/RemoteSourceBufferProxy.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::bufferingTimerFired):
(WebKit::NetworkResourceLoader::sendBuffer):
(WebKit::NetworkResourceLoader::dataReceivedThroughContentFilter):
* NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:
(WebKit::ServiceWorkerDownloadTask::didReceiveData):
* NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h:
* NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in:
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::didReceiveData):
(WebKit::ServiceWorkerFetchTask::loadBodyFromPreloader):
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
* Platform/IPC/SharedBufferCopy.cpp: Removed.
* Platform/IPC/SharedBufferCopy.h: Removed.
* Platform/IPC/SharedBufferReference.cpp: Added.
(IPC::SharedBufferReference::encode const):
(IPC::SharedBufferReference::decode):
(IPC::SharedBufferReference::unsafeBuffer const):
(IPC::SharedBufferReference::data const):
(IPC::SharedBufferReference::bufferWithOwner const):
* Platform/IPC/SharedBufferReference.h: Added.
(IPC::SharedBufferReference::SharedBufferReference):
(IPC::SharedBufferReference::size const):
(IPC::SharedBufferReference::isEmpty const):
(IPC::SharedBufferReference::isNull const):
* Platform/SharedMemory.cpp:
(WebKit::transferOwnershipOfMemory const):
* Platform/SharedMemory.h:
* Platform/cocoa/SharedMemoryCocoa.cpp:
(WebKit::changeOwnershipOfMemory):
(WebKit::SharedMemory::Handle::takeOwnershipOfMemory const):
(WebKit::SharedMemory::Handle::transferOwnershipOfMemory const):
(WebKit::machProtection):
(WebKit::SharedMemory::map):
* Scripts/process-entitlements.sh:
* Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:
(WebKit::CGDisplayListImageBufferBackend::createBackendHandle const):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeSharedBuffer):
(IPC::decodeSharedBuffer):
* Sources.txt:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView createPDFWithConfiguration:completionHandler:]):
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::platformRegisterAttachment):
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::sendAudioComponentRegistrations):
* UIProcess/WebPageProxy.cpp:
(WebKit::CompletionHandler<void):
(WebKit::WebPageProxy::drawPagesToPDF):
(WebKit::WebPageProxy::drawToPDF):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::updateAttachmentAttributes):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromData):
(WebKit::WebPageProxy::platformRegisterAttachment):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPasteboardProxy.cpp:
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::didReceiveData):
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
(WebKit::WebPasteboardProxy::readBuffer):
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _wk_pageCountForPrintFormatter:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::drawToPDFiOS):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::dataSelectionForPasteboard):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/graphics/ImageBufferBackendHandle.h:
* WebProcess/GPU/media/RemoteImageDecoderAVF.cpp:
(WebKit::RemoteImageDecoderAVF::setData):
* WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp:
(WebKit::RemoteImageDecoderAVFManager::createImageDecoder):
* WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:
(WebKit::RemoteMediaResourceProxy::dataReceived):
* WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
(WebKit::SourceBufferPrivateRemote::append):
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveData):
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::writeItemsToPasteboard):
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::registerAttachmentIdentifier):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::setBufferForType):
(WebKit::WebPlatformStrategies::readBufferFromClipboard):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getContentsAsMHTMLData):
(WebKit::WebPage::getSelectionAsWebArchiveData):
(WebKit::WebPage::getMainResourceDataOfFrame):
(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::getWebArchiveOfFrame):
(WebKit::WebPage::getAccessibilityTreeData):
(WebKit::WebPage::drawToPDF):
(WebKit::WebPage::drawPagesToPDF):
(WebKit::WebPage::didGetLoadDecisionForIcon):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getDataSelectionForPasteboard):
(WebKit::WebPage::performActionOnElement):
(WebKit::WebPage::drawToPDFiOS):
(WebKit::WebPage::didFinishLoadForQuickLookDocumentInMainFrame):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::getDataSelectionForPasteboard):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::consumeAudioComponentRegistrations):

# Please populate the above commit message. Lines starting
# with '#' will be ignored

# 13  Tim Horton  <timothy_horton@apple.com>
#
# ApplePayLogoSystemImage needlessly loads PassKit in WebKit child processes on iOS
# https://bugs.webkit.org/show_bug.cgi?id=240404
# <rdar://93070349>
#
# Reviewed by Chris Dumez.
#
# * UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
# (WebKit::ProcessLauncher::launchProcess): Adopt the WTF implementation of systemDirectoryPath.
# (WebKit::systemDirectoryPath): Moved to WTF.
#
# 13  Wenson Hsieh  <wenson_hsieh@apple.com>
#
# ImageAnalysisQueue should reanalyze image elements whose image sources have changed
# https://bugs.webkit.org/show_bug.cgi?id=240371
# rdar://93175651
#
# Reviewed by Tim Horton.
#
# To aid with debugging similar issues in the future, plumb the image URL through to
# `requestImageAnalysisWithIdentifier`, which (if an engineering default is specified) will additionally reveal
# the URL in system logs.
#
# * Platform/cocoa/ImageAnalysisUtilities.h:
# * UIProcess/Cocoa/WebViewImpl.mm:
# (WebKit::WebViewImpl::requestTextRecognition):
# * UIProcess/ios/WKContentViewInteraction.mm:
# (-[WKContentView requestTextRecognition:imageData:identifier:completionHandler:]):
#
# 13  Aditya Keerthi  <akeerthi@apple.com>
#
# [iOS] Multiple visible find highlights when searching for text after beginning a "find from selection"
# https://bugs.webkit.org/show_bug.cgi?id=240393
# rdar://91441895
#
# Reviewed by Wenson Hsieh.
#
# Some WebKit clients use SPI on WKWebView to support "find from selection"
# functionality (the Cmd+E shortcut). However, to support general
# find functionality, they use new find API that uses a different codepath
# to draw highlights. Mixing use of the API and SPI can currently result
# in two highlights showing up.
#
# To fix, ensure SPI highlights are removed once the API is being used.
# The long term solution is for clients to adopt API for the
# "find from selection" functionality, but in the short term the SPI
# should remain supported.
#
# * WebProcess/WebPage/WebPage.cpp:
# (WebKit::WebPage::clearAllDecoratedFoundText):
#
# 13  Kimmo Kinnunen  <kkinnunen@apple.com>
#
# IPC cannot encode, decode Ref<>, causing duplicate code
# https://bugs.webkit.org/show_bug.cgi?id=240160
#
# Reviewed by Antti Koivisto.
#
# Consider reference counted type T:
# Encoding is of signature `encode(const T&)`
# Decoding is of signature `std::optional<Ref<T>> decode()`
# This is usable for both `RefPtr` and `Ref` use-cases.
#
# Add `Ref<T>` encoder that is polymorphic to `T`.
# This way clients do not need to write encoders for
# `Ref<T>`, `RefPtr<T>`. They just need one encoder, for `T`.
#
# When clients do not need to write `RefPtr<T>`, they make less
# bugs. These will be corrected in future patches.
#
# Having `Ref<T>` encoders allows clients to use `Vector<Ref<T>>` encoding
# via `Vector<U>` encoder, and they would not need to duplicate that
# logic, making less bugs. These will be corrected in future patches.
#
# Remove most `IPC::ArgumentCoder<Ref<..>>` in favor of `IPC::ArgumentCoder<..>`.
# In the cases where removal was done, remove also redundant
# `IPC::ArgumentCoder<RefPtr<..>>`.
#
# * Platform/IPC/ArgumentCoders.h:
# (IPC::ArgumentCoder<RefPtr<T>>::decode):
# (IPC::ArgumentCoder<Ref<T>>::encode):
# (IPC::ArgumentCoder<Ref<T>>::decode):
# * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
# (IPC::ArgumentCoder<WebCore::Font>::encodePlatformData):
# (IPC::ArgumentCoder<WebCore::Font>::decodePlatformData):
# * Shared/WebCoreArgumentCoders.cpp:
# (IPC::ArgumentCoder<WebCore::Font>::encode):
# (IPC::ArgumentCoder<Font>::decode):
# (IPC::ArgumentCoder<SystemImage>::encode):
# (IPC::ArgumentCoder<SystemImage>::decode):
# * Shared/WebCoreArgumentCoders.h:
# * Shared/playstation/WebCoreArgumentCodersPlayStation.cpp:
# (IPC::ArgumentCoder<Font>::encodePlatformData):
# (IPC::ArgumentCoder<Font>::decodePlatformData):
# * Shared/soup/WebCoreArgumentCodersSoup.cpp:
# (IPC::ArgumentCoder<Font>::encodePlatformData):
# (IPC::ArgumentCoder<Font>::decodePlatformData):
# * Shared/win/WebCoreArgumentCodersWin.cpp:
# (IPC::ArgumentCoder<Font>::encodePlatformData):
# (IPC::ArgumentCoder<Font>::decodePlatformData):
#
# 13  Tim Horton  <timothy_horton@apple.com>
#
# Add UI-side layers for optionally indicating interaction regions
# https://bugs.webkit.org/show_bug.cgi?id=240372
# <rdar://problem/87170289>
#
# Reviewed by Dean Jackson.
#
# * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
# (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
# (WebKit::RemoteLayerTreePropertyApplier::applyHierarchyUpdates):
# Allow RemoteLayerTreeInteractionRegionLayers to add and maintain layers for interaction regions.
#
# * SourcesCocoa.txt:
# * UIProcess/RemoteLayerTree/RemoteLayerTreeInteractionRegionLayers.h: Added.
# * UIProcess/RemoteLayerTree/RemoteLayerTreeInteractionRegionLayers.mm: Added.
# (configureLayerForInteractionRegion):
# (WebKit::interactionRegionForLayer):
# (WebKit::isInteractionRegionLayer):
# (WebKit::setInteractionRegion):
# Box WebCore::InteractionRegion in a Objective-C object and store it on the layer.
# Use this as a key to indicate that a given layer is an interaction region.
#
# (WebKit::appendInteractionRegionLayersForLayer):
# Make sure that interaction region layers are always at the end of the layer's sublayers array.
#
# (WebKit::updateLayersForInteractionRegions):
# Add new layers for interaction regions.
# Maintain the same layer for regions that cover the same area.
# Add a green wash if the default `WKInteractionRegionDebugFill` is set.
#
# * WebKit.xcodeproj/project.pbxproj:
#
# 13  Simon Fraser  <simon.fraser@apple.com>
#
# Simplify the usage of DrawGlyphsRecorder
# https://bugs.webkit.org/show_bug.cgi?id=240363
#
# Reviewed by Myles Maxfield.
#
# Move the DeconstructDrawGlyphs switch from inside DrawGlyphsRecorder to
# DisplayList::Recorder, so that DrawGlyphsRecorder is only ever used when deconstructing
# glyphs.
#
# Also, ensure that the only time that glyph deconstruction is enabled is when
# recording display lists via RemoteDisplayListRecorderProxy. There's no reason for
# paintAttachmentText() to need glyph deconstruction.
#
# This is a small perf improvement on the MotionMark Design subtest.
#
# * WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
# (WebKit::RemoteDisplayListRecorderProxy::RemoteDisplayListRecorderProxy):
# (WebKit::m_renderingBackend):
# * WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
#
# it takes from the XPC message is sent until the XPC reply is received. Add reporting when this happens

# On branch bz/240223
# Your branch is ahead of 'origin/main' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git restore --staged <file>..." to unstage)
#  modified:   Source/WebKit/ChangeLog
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#  0001-SharedBuffer-should-be-copied-and-then-attributed-ba.patch
#

link: https://commits.webkit.org/250556@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294190 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoDrop unused appendNumber(Vector<CharacterType>& vector, unsigned char) function
cdumez@apple.com [Sat, 14 May 2022 07:21:49 +0000 (07:21 +0000)]
Drop unused appendNumber(Vector<CharacterType>& vector, unsigned char) function
https://bugs.webkit.org/show_bug.cgi?id=240387

Reviewed by Darin Adler.

* Source/WTF/wtf/text/WTFString.h:
(WTF::appendNumber): Deleted.

link: https://commits.webkit.org/250555@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294189 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoApplePayLogoSystemImage needlessly loads PassKit in WebKit child processes on iOS
timothy_horton@apple.com [Sat, 14 May 2022 06:14:52 +0000 (06:14 +0000)]
ApplePayLogoSystemImage needlessly loads PassKit in WebKit child processes on iOS
https://bugs.webkit.org/show_bug.cgi?id=240404
<rdar://93070349>

Reviewed by Chris Dumez.

Source/WebCore:

* Modules/applepay/ApplePayLogoSystemImage.mm:
(WebCore::passKitBundle):
Adopt systemDirectoryPath instead of unnecessarily loading PassKit just
to find its bundle path (the previous implementation made use of the fact
that `dlopen` internally adjusts the search path to look in the simulator
root, but also resulted in wasted time loading and initializing PassKit
and its dependencies).

Source/WebKit:

* UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::ProcessLauncher::launchProcess): Adopt the WTF implementation of systemDirectoryPath.
(WebKit::systemDirectoryPath): Moved to WTF.

Source/WTF:

* wtf/FileSystem.h:
* wtf/cocoa/FileSystemCocoa.mm:
(WTF::FileSystemImpl::systemDirectoryPath):
Move the implementation of systemDirectoryPath() from WebKit2.

systemDirectoryPath() provides the correct path to /System
in the simulator, for consumption by APIs (like NSURL) that do not
adjust to the simulator-rooted path themselves.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294188 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[css-ui] Unexpose appearance property values already handled by appearance: auto
ntim@apple.com [Sat, 14 May 2022 05:29:41 +0000 (05:29 +0000)]
[css-ui] Unexpose appearance property values already handled by appearance: auto
https://bugs.webkit.org/show_bug.cgi?id=240384

Reviewed by Aditya Keerthi.

These are only used internally, and are handled by appearance: auto in the UA sheets:
- caps-lock-indicator
- color-well
- list-button
- searchfield-decoration
- searchfield-results-decoration
- searchfield-results-button
- searchfield-cancel-button

LayoutTests/imported/w3c:

* web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001.html

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSValueKeywords.in:
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
* platform/ThemeTypes.cpp:
(WebCore::operator<<):
* platform/ThemeTypes.h:

LayoutTests:

* platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
* fast/css/appearance-caps-lock-indicator-expected.txt: Removed.
* fast/css/appearance-caps-lock-indicator.html: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294187 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoInfinite recursion caused by call to accessibilityIsIgnored in the midst of Accessibi...
tyler_w@apple.com [Sat, 14 May 2022 04:37:21 +0000 (04:37 +0000)]
Infinite recursion caused by call to accessibilityIsIgnored in the midst of AccessibilityObject::ignoredFromModalPresence
https://bugs.webkit.org/show_bug.cgi?id=240365

Reviewed by Chris Fleizach.

Source/WebCore:

We can get infinite recursion when accessibilityIsIgnored is called as
part of computing AccessibilityObject::ignoredFromModalPresence. One
example of such a cycle:

AXObjectCache::currentModalNode() ->
AccessibilityRenderObject::computeAccessibilityIsIgnored() ->
AccessibilityRenderObject::parentObjectUnignored() ->
AccessibilityObject::accessibilityIsIgnored() ->
AccessibilityObject::ignoredFromModalPresence() ->
AXObjectCache::currentModalNode() ->
...repeat...

This patch fixes this by tracking when we start computing the current
modal node in the AXObjectCache. Then, in AccessibilityObject::accessibilityIsIgnored(),
we don't call AccessibilityObject::ignoredFromModalPresence() if this new state is true,
since in this context we only need to know if the object is inherently
ignored (i.e. ignored disregarding modal presence).

Test: accessibility/aria-modal-with-text-crash.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::currentModalNode):
* accessibility/AXObjectCache.h:
Add m_isRetrievingCurrentModalNode.
(WebCore::AXObjectCache::isRetrievingCurrentModalNode): Added.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::accessibilityIsIgnored const):
Don't call ignoredFromModalPresence if we're in the midst of computing the current modal.

LayoutTests:

* accessibility/aria-modal-with-text-crash-expected.txt: Added.
* accessibility/aria-modal-with-text-crash.html: Added.
* platform/glib/TestExpectations: Skip new test.
* platform/ios/TestExpectations: Enable new test.
* platform/win/TestExpectations: Skip new test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294186 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[webkit-patch] Apply patches commit messages
jbedard@apple.com [Sat, 14 May 2022 01:42:44 +0000 (01:42 +0000)]
[webkit-patch] Apply patches commit messages
https://bugs.webkit.org/show_bug.cgi?id=240402
<rdar://93272455>

Reviewed by Dewei Zhu.

* Tools/Scripts/webkitpy/common/checkout/checkout.py:
(Checkout):
(filter_patch_content): Insert reviewer to git patch as we're applying it.
(apply_patch): If a patch has a commit subject, it contains commit messages
and we should apply those commit messages.

link: https://commits.webkit.org/250551@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294184 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[webkit-patch] Include commit messages in patches
jbedard@apple.com [Fri, 13 May 2022 23:37:58 +0000 (23:37 +0000)]
[webkit-patch] Include commit messages in patches
https://bugs.webkit.org/show_bug.cgi?id=240256
<rdar://92982358>

Rubber-stamped by Aakash Jain.

* Scripts/webkitpy/common/checkout/checkout.py:
(Checkout.commit_message_for_this_commit): If no changelogs are modified, prefer
the commit message.
* Scripts/webkitpy/common/checkout/diff_parser.py:
(DiffParser._parse_into_diff_files): Ignore commit message headers.
* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.create_patch): Prefer `git format-patch` when local commits are available.
(Git.rev_parse): Determine hash for ref.
(Git.format_patch): Deleted.
(Git.request_pull): Deleted.
* Scripts/webkitpy/tool/steps/abstractstep.py:
(AbstractStep): Keep record of local commit.
* Scripts/webkitpy/tool/steps/editchangelog.py:
(EditChangeLog.run): Do not edit changelog if no changelog is present.
* Scripts/webkitpy/tool/steps/preparechangelog.py:
(PrepareChangeLog.run): Do not prepare changelog if local commit is present.

link: https://commits.webkit.org/250550@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294183 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoREGRESSION (r281791): [iOS] WKWebView cannot load local .log file
bfulgham@apple.com [Fri, 13 May 2022 23:12:14 +0000 (23:12 +0000)]
REGRESSION (r281791): [iOS] WKWebView cannot load local .log file
https://bugs.webkit.org/show_bug.cgi?id=239591
<rdar://problem/92442408>

Unreviewed correction based on a comment from Darin.

* platform/network/ios/WebCoreURLResponseIOS.mm:
(WebCore::adjustMIMETypeIfNecessary):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294182 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoEnforce foreground WebContent memory limit on macOS
nham@apple.com [Fri, 13 May 2022 22:56:17 +0000 (22:56 +0000)]
Enforce foreground WebContent memory limit on macOS
https://bugs.webkit.org/show_bug.cgi?id=240397

Reviewed by Chris Dumez.

We removed the foreground memory limit for WebContent on macOS in r272046. But based on some
bug reports that we've seen, it seems like we need to restore some limit to prevent bad user
outcomes when a misbehaving process has runaway memory usage.

This patch adds a foreground memory limit of 8GB or 16GB depending on RAM size. This matches
the limits set by other browsers for their content process.

* wtf/MemoryPressureHandler.cpp:
(WTF::thresholdForMemoryKillOfActiveProcess):
(WTF::MemoryPressureHandler::thresholdForMemoryKill):

link: https://commits.webkit.org/250548@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294181 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoEnhance the ARM64Disassembler to print pc indices and better branch target labels.
mark.lam@apple.com [Fri, 13 May 2022 22:28:16 +0000 (22:28 +0000)]
Enhance the ARM64Disassembler to print pc indices and better branch target labels.
https://bugs.webkit.org/show_bug.cgi?id=240370

Reviewed by Saam Barati.

Disassemblies used to look like this:

     0x10e480ff8:    ldurb    w17, [x0, #7]
     0x10e480ffc:    cmp      w17, #0
     0x10e481000:    b.hi   0x10e48103c
     0x10e481004:    stur     x0, [fp, #-72]
     ...
     0x10e481040:    movk     x3, #0xfffe, lsl #48
     0x10e481044:    b        0x10e4814f4
     0x10e481048:    nop

With this patch, it will now look like this:

       <748> 0x10e120aec:    ldurb    w17, [x0, #7]
       <752> 0x10e120af0:    cmp      w17, #0
       <756> 0x10e120af4:    b.hi     0x10e120b30 -> <816>
       <760> 0x10e120af8:    stur     x0, [fp, #-80]
       ...
       <820> 0x10e120b34:    movk     x3, #0xfffe, lsl #48
       <824> 0x10e120b38:    b        0x10e120fc8 -> <1992>
       <828> 0x10e120b3c:    nop

1. Each instruction pc is now prefixed with a pc index i.e. the offset of the
   pc address from the start of the compilation unit e.g. <756>.

2. Relative branches now show the branch target as a pc index (effectively, an
   internal label in this compilation unit) in addition to the pc address e.g.
   the "-> <816>" in:
       <756> 0x10e120af4:    b.hi     0x10e120b30 -> <816>

   Also fixed a formatting bug where the space between relative branch instructions
   and their target pc was short 2 spaces.

3. If the relative branch target is a known thunk, the disassembler will now
   print the thunk label e.g.

       <828> 0x10e12033c:    bl       0x10e0f0a00 -> <thunk: get_from_scope thunk>
      <1476> 0x10e120dc4:    cbnz     x16, 0x10e104100 -> <thunk: handleExceptionWithCallFrameRollback>
      <2368> 0x10e121140:    b        0x10e10c000 -> <thunk: DFG OSR exit generation thunk>

   Introduced a FINALIZE_THUNK macro that will be used instead of FINALIZE_CODE in
   thunk generators.  By doing so, thunk labels will automatically be registered
   with the disassembler, and will be used for the above look up.

   Thunk label registration is only done if disassembly is enabled.

4. If the branch target is neither an internal label nor a thunk, then the
   disassembler will print some useful info about it to the best of its
   knowledge e.g.

       <168> 0x10e1002e8:    b        0x10e120b60 -> <JIT PC>
       <168> 0x10e1002e8:    b        0x10e120b60 -> <LLInt PC>
       <168> 0x10e1002e8:    b        0x10e120b60 -> <unknown>

5. The disassemble() function now takes 2 additional arguments: codeStart, and
   codeEnd.  These are needed so that the disassembler can compute the pc index
   for each instruction, as well as determine if a branch target is internal to
   this compilation unit, or pointing out of it.

This feature is currently only supported for the ARM64 disassembler.

Printing of JIT operation labels (via movz + movk + indirect branch) is not yet
supported.

* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::finalizeCodeWithDisassemblyImpl):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::setIsThunk):
* b3/air/AirDisassembler.cpp:
(JSC::B3::Air::Disassembler::dump):
* dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::dumpDisassembly):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrExitGenerationThunkGenerator):
(JSC::DFG::osrEntryThunkGenerator):
* disassembler/ARM64/A64DOpcode.cpp:
(JSC::ARM64Disassembler::A64DOpcode::appendPCRelativeOffset):
(JSC::ARM64Disassembler::A64DOpcodeConditionalBranchImmediate::format):
* disassembler/ARM64/A64DOpcode.h:
(JSC::ARM64Disassembler::A64DOpcode::A64DOpcode):
(JSC::ARM64Disassembler::A64DOpcode::appendPCRelativeOffset): Deleted.
* disassembler/ARM64Disassembler.cpp:
(JSC::tryToDisassemble):
* disassembler/CapstoneDisassembler.cpp:
(JSC::tryToDisassemble):
* disassembler/Disassembler.cpp:
(JSC::disassemble):
(JSC::disassembleAsynchronously):
(JSC::ensureThunkLabelMap):
(JSC::registerThunkLabel):
(JSC::labelForThunk):
* disassembler/Disassembler.h:
(JSC::tryToDisassemble):
* disassembler/RISCV64Disassembler.cpp:
(JSC::tryToDisassemble):
* disassembler/X86Disassembler.cpp:
(JSC::tryToDisassemble):
* ftl/FTLThunks.cpp:
(JSC::FTL::genericGenerationThunkGenerator):
(JSC::FTL::slowPathCallThunkGenerator):
* jit/JIT.cpp:
(JSC::JIT::consistencyCheckGenerator):
* jit/JITCall.cpp:
(JSC::JIT::returnFromBaselineGenerator):
* jit/JITDisassembler.cpp:
(JSC::JITDisassembler::dump):
(JSC::JITDisassembler::dumpDisassembly):
* jit/JITDisassembler.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::valueIsFalseyGenerator):
(JSC::JIT::valueIsTruthyGenerator):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::op_check_traps_handlerGenerator):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::slow_op_get_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_get_private_name_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_put_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_put_private_name_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_del_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_del_by_val_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_get_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_get_by_id_with_this_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::slow_op_put_by_id_callSlowOperationThenCheckExceptionGenerator):
(JSC::JIT::generateOpResolveScopeThunk):
(JSC::JIT::slow_op_resolve_scopeGenerator):
(JSC::JIT::generateOpGetFromScopeThunk):
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::slow_op_put_to_scopeGenerator):
* jit/SlowPathCall.cpp:
(JSC::JITSlowPathCall::generateThunk):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::finalize):
* jit/ThunkGenerator.h:
* jit/ThunkGenerators.cpp:
(JSC::handleExceptionGenerator):
(JSC::handleExceptionWithCallFrameRollbackGenerator):
(JSC::popThunkStackPreservesAndHandleExceptionGenerator):
(JSC::checkExceptionGenerator):
(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::linkCallThunkGenerator):
(JSC::linkPolymorphicCallThunkGenerator):
(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
(JSC::unreachableGenerator):
(JSC::stringGetByValGenerator):
(JSC::boundFunctionCallGenerator):
(JSC::remoteFunctionCallGenerator):
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::generateThunkWithJumpToPrologue):
(JSC::LLInt::generateThunkWithJumpToLLIntReturnPoint):
(JSC::LLInt::createJSGateThunk):
(JSC::LLInt::createWasmGateThunk):
(JSC::LLInt::createTailCallGate):
(JSC::LLInt::tagGateThunk):
(JSC::LLInt::untagGateThunk):
* yarr/YarrDisassembler.cpp:
(JSC::Yarr::YarrDisassembler::dump):
(JSC::Yarr::YarrDisassembler::dumpDisassembly):
* yarr/YarrDisassembler.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294180 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoImageAnalysisQueue should reanalyze image elements whose image sources have changed
wenson_hsieh@apple.com [Fri, 13 May 2022 22:20:39 +0000 (22:20 +0000)]
ImageAnalysisQueue should reanalyze image elements whose image sources have changed
https://bugs.webkit.org/show_bug.cgi?id=240371
rdar://93175651

Reviewed by Tim Horton.

Currently, ImageAnalysisQueue maintains the set of all image elements that have been queued for analysis, and
avoids re-queueing such image elements. However, on some websites, this leads to stale analysis results being
shown in certain image elements that have changed image sources (and subsequently finished loaded the new image).
To address this, we introduce a mechanism to remember the latest image URL for image elements that have been
analyzed using the analysis queue; we only avoid reanalyzing these same image elements if the source URL is the
same as the source URL when we last analyzed it.

This allows us (for instance) to handle the scenario where a single image element periodically cycles between
different `src` attribute values.

Test: ImageAnalysisTests.AnalyzeImageAfterChangingSource

* page/ImageAnalysisQueue.cpp:
(WebCore::ImageAnalysisQueue::enqueueIfNeeded):

Also avoid trying to prematurely analyze images whose cached images only contain the null image. This caused
empty results to sometimes be incorrectly cached for some image elements, if analysis is triggered too early.

(WebCore::ImageAnalysisQueue::resumeProcessing):
* page/ImageAnalysisQueue.h:

To aid with debugging similar issues in the future, plumb the image URL through to
`requestImageAnalysisWithIdentifier`, which (if an engineering default is specified) will additionally reveal
the URL in system logs.

* Platform/cocoa/ImageAnalysisUtilities.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::requestTextRecognition):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView requestTextRecognition:imageData:identifier:completionHandler:]):

Add an API test to exercise the scenario by verifying that the same image element is reanalyzed after setting
the `src` to a different image URL.

* TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
(TestWebKitAPI::TEST):

link: https://commits.webkit.org/250546@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294179 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[Flatpak SDK] Add Breakpad to SDK
lmoura@igalia.com [Fri, 13 May 2022 22:11:26 +0000 (22:11 +0000)]
[Flatpak SDK] Add Breakpad to SDK
https://bugs.webkit.org/show_bug.cgi?id=240367

Reviewed by Philippe Normand.

To be used to generate minidumps of crashes.

Based on original bst file by Adrian Perez de Castro.

* elements/sdk-platform.bst:
* elements/sdk/breakpad.bst: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294178 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoNon-unified build broken in debug mode
aperez@igalia.com [Fri, 13 May 2022 22:02:46 +0000 (22:02 +0000)]
Non-unified build broken in debug mode
https://bugs.webkit.org/show_bug.cgi?id=240378

Unreviewed non-unified build fixes.

* heap/StructureAlignedMemoryAllocator.cpp: Include <sys/mman.h> if needed.
Non-unified build broken in debug mode
https://bugs.webkit.org/show_bug.cgi?id=240378

Unreviewed non-unified build fixes.

* contentextensions/ContentExtensionCompiler.cpp: Add missing wtf/CrossThreadCopier.h header.
* workers/service/ServiceWorkerClients.cpp: Add missing Logging.h header.

link: https://commits.webkit.org/250544@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294177 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoTemporalPlainTime::toTemporalTimeRecord shouldn't require all properties to be provided
ross.kirsling@sony.com [Fri, 13 May 2022 21:55:56 +0000 (21:55 +0000)]
TemporalPlainTime::toTemporalTimeRecord shouldn't require all properties to be provided
https://bugs.webkit.org/show_bug.cgi?id=240394

Reviewed by Yusuke Suzuki and Darin Adler.

Following the spec correction of https://github.com/tc39/proposal-temporal/pull/1862, this patch
fixes our Temporal.PlainTime implementation to require that *one* property be provided, not *all* of them.

* stress/temporal-plaintime.js:
* test262/expectations.yaml: Mark 32 test cases as passing.

* runtime/TemporalDuration.cpp:
(JSC::TemporalDuration::fromDurationLike):
* runtime/TemporalPlainTime.cpp:
(JSC::toTemporalTimeRecord):

link: https://commits.webkit.org/250543@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294176 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[iOS] Multiple visible find highlights when searching for text after beginning a...
akeerthi@apple.com [Fri, 13 May 2022 21:43:00 +0000 (21:43 +0000)]
[iOS] Multiple visible find highlights when searching for text after beginning a "find from selection"
https://bugs.webkit.org/show_bug.cgi?id=240393
rdar://91441895

Reviewed by Wenson Hsieh.

Some WebKit clients use SPI on WKWebView to support "find from selection"
functionality (the Cmd+E shortcut). However, to support general
find functionality, they use new find API that uses a different codepath
to draw highlights. Mixing use of the API and SPI can currently result
in two highlights showing up.

To fix, ensure SPI highlights are removed once the API is being used.
The long term solution is for clients to adopt API for the
"find from selection" functionality, but in the short term the SPI
should remain supported.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::clearAllDecoratedFoundText):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294175 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoDisable MediaLoading.CaptivePortalHLS API test
achristensen@apple.com [Fri, 13 May 2022 21:40:48 +0000 (21:40 +0000)]
Disable MediaLoading.CaptivePortalHLS API test
https://bugs.webkit.org/show_bug.cgi?id=239859

It is always timing out.
Disable it to speed up EWS.

* TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294174 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoRegression(r293803) ProcessSwap.MediaTypeAfterSwap and ProcessSwap.PageZoomLevelAfter...
cdumez@apple.com [Fri, 13 May 2022 21:36:13 +0000 (21:36 +0000)]
Regression(r293803) ProcessSwap.MediaTypeAfterSwap and ProcessSwap.PageZoomLevelAfterSwap are failing
https://bugs.webkit.org/show_bug.cgi?id=240399

Reviewed by Alex Christensen.

Since r293803, WebKit's default WebContent process crash handler only reloads WebViews that are
visible. However, those 2 API tests were relying on the old behavior. To address the issue, use
a custom process termination handler which reloads the view.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
(-[PSONNavigationDelegate webViewWebContentProcessDidTerminate:]):

link: https://commits.webkit.org/250540@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294172 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoUse None for architecture when dump-class-layout does not have `-a` option
ysuzuki@apple.com [Fri, 13 May 2022 21:12:31 +0000 (21:12 +0000)]
Use None for architecture when dump-class-layout does not have `-a` option
https://bugs.webkit.org/show_bug.cgi?id=240395

Reviewed by Saam Barati and Simon Fraser.

We can pass None to architecture, then SBDebugger::CreateTargetWithFileAndArch
will call CreateTarget with nullptr architecture string. Then, TargetList constructs
ArchSpec based on currently selected platform automatically and it covers most of cases.
I tried it, and it worked with watchOS, macOS, iOS so far.
So, we should just pass None to CreateTargetWithFileAndArch by default.

* Tools/lldb/lldb_dump_class_layout.py:
(LLDBDebuggerInstance.__init__):
(LLDBDebuggerInstance.__del__):
(LLDBDebuggerInstance._get_first_file_architecture): Deleted.

link: https://commits.webkit.org/250539@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294171 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[css-ui] Remove caret/progress-bar-value/listitem values from appearance property
ntim@apple.com [Fri, 13 May 2022 19:38:21 +0000 (19:38 +0000)]
[css-ui] Remove caret/progress-bar-value/listitem values from appearance property
https://bugs.webkit.org/show_bug.cgi?id=240390

Reviewed by Aditya Keerthi.

LayoutTests/imported/w3c:

They're basically unimplemented.

* web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001.html

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSValueKeywords.in:
* platform/ThemeTypes.cpp:
(WebCore::operator<<):
* platform/ThemeTypes.h:

LayoutTests:

They're basically unimplemented.

Remove WPE expectations which were very out-of-date.

* fast/css/appearance-with-pseudo-elements-expected.html:
* fast/css/appearance-with-pseudo-elements-in-quirks-mode-expected.html:
* fast/css/appearance-with-pseudo-elements-in-quirks-mode.html:
* fast/css/appearance-with-pseudo-elements.html:
* platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294170 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoIPC cannot encode, decode Ref<>, causing duplicate code
commit-queue@webkit.org [Fri, 13 May 2022 19:16:19 +0000 (19:16 +0000)]
IPC cannot encode, decode Ref<>, causing duplicate code
https://bugs.webkit.org/show_bug.cgi?id=240160

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-05-13
Reviewed by Antti Koivisto.

Consider reference counted type T:
Encoding is of signature `encode(const T&)`
Decoding is of signature `std::optional<Ref<T>> decode()`
This is usable for both `RefPtr` and `Ref` use-cases.

Add `Ref<T>` encoder that is polymorphic to `T`.
This way clients do not need to write encoders for
`Ref<T>`, `RefPtr<T>`. They just need one encoder, for `T`.

When clients do not need to write `RefPtr<T>`, they make less
bugs. These will be corrected in future patches.

Having `Ref<T>` encoders allows clients to use `Vector<Ref<T>>` encoding
via `Vector<U>` encoder, and they would not need to duplicate that
logic, making less bugs. These will be corrected in future patches.

Remove most `IPC::ArgumentCoder<Ref<..>>` in favor of `IPC::ArgumentCoder<..>`.
In the cases where removal was done, remove also redundant
`IPC::ArgumentCoder<RefPtr<..>>`.

* Platform/IPC/ArgumentCoders.h:
(IPC::ArgumentCoder<RefPtr<T>>::decode):
(IPC::ArgumentCoder<Ref<T>>::encode):
(IPC::ArgumentCoder<Ref<T>>::decode):
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::Font>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::Font>::decodePlatformData):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<WebCore::Font>::encode):
(IPC::ArgumentCoder<Font>::decode):
(IPC::ArgumentCoder<SystemImage>::encode):
(IPC::ArgumentCoder<SystemImage>::decode):
* Shared/WebCoreArgumentCoders.h:
* Shared/playstation/WebCoreArgumentCodersPlayStation.cpp:
(IPC::ArgumentCoder<Font>::encodePlatformData):
(IPC::ArgumentCoder<Font>::decodePlatformData):
* Shared/soup/WebCoreArgumentCodersSoup.cpp:
(IPC::ArgumentCoder<Font>::encodePlatformData):
(IPC::ArgumentCoder<Font>::decodePlatformData):
* Shared/win/WebCoreArgumentCodersWin.cpp:
(IPC::ArgumentCoder<Font>::encodePlatformData):
(IPC::ArgumentCoder<Font>::decodePlatformData):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294169 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoMove handling of active descendant changed notifications out of AccessibilityRenderOb...
andresg_22@apple.com [Fri, 13 May 2022 18:22:07 +0000 (18:22 +0000)]
Move handling of active descendant changed notifications out of AccessibilityRenderObject.
https://bugs.webkit.org/show_bug.cgi?id=240357
<rdar://problem/93196901>

Reviewed by Chris Fleizach.

No change in functionality.

AXObjectCache::handleActiveDescendantChanged now handles this
notifications as appropriate. This makes the code cleaner and more
straightforward. More importantly this change is necessary for the
refactoring of relationships implementation.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleActiveDescendantChanged):
(WebCore::AXObjectCache::handleAttributeChange):
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::handleActiveDescendantChanged):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
(WebCore::Accessibility::findRelatedObjectInAncestry):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::activeDescendant const):
(WebCore::AccessibilityRenderObject::shouldNotifyActiveDescendant const): Deleted.
(WebCore::AccessibilityRenderObject::targetElementForActiveDescendant const): Deleted.
(WebCore::AccessibilityRenderObject::handleActiveDescendantChanged): Deleted.
* accessibility/AccessibilityRenderObject.h:
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::handleActiveDescendantChanged): Deleted.
* accessibility/isolatedtree/AXIsolatedObject.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294167 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoWeb Inspector: [Meta] Implement Timelines Film Strip
commit-queue@webkit.org [Fri, 13 May 2022 18:06:14 +0000 (18:06 +0000)]
Web Inspector: [Meta] Implement Timelines Film Strip
https://bugs.webkit.org/show_bug.cgi?id=239350

Patch by Anjali Kumar <anjalik_22@apple.com> on 2022-05-13
Reviewed by Devin Rousso and Patrick Angle.

Source/JavaScriptCore:

* inspector/protocol/Timeline.json:

Source/WebCore:

Test: inspector/timeline/timeline-event-screenshots.html

* inspector/TimelineRecordFactory.cpp:
(WebCore::TimelineRecordFactory::createScreenshotData):
* inspector/TimelineRecordFactory.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didComposite):
(WebCore::InspectorTimelineAgent::willPaint):
(WebCore::InspectorTimelineAgent::didPaint):
(WebCore::InspectorTimelineAgent::toggleInstruments):
(WebCore::InspectorTimelineAgent::captureScreenshot):
(WebCore::toProtocol):
(WebCore::InspectorTimelineAgent::createRecordEntry):
(WebCore::InspectorTimelineAgent::pushCurrentRecord):
* inspector/agents/InspectorTimelineAgent.h:

Source/WebInspectorUI:

Add the ability to see screenshots taken of the viewport within the Timelines tab. The purpose of the
screenshots is to provide more context to the other data presented within the Timelines tab, so that
developers can improve the efficiency of their page loading times. They can see what is painting on their
pages in addition to when the paints are occuring.

The screenshots presented are taken immediately after each composite. They are designed to be layered
on top of one another as opposed to being presented in a non-overlapping fashion in order to provide developers
with the exact screenshot that occured during a particular point in time on the timeline. This allows developers
to zoom in and pinpoint the exact moment the page looked like that particularly rendered screenshot.

When a screenshot is clicked on, the details section opens up to an enlarged view of that particular image.
Developers can utilize this to view each screenshot in greater detail.

This feature is named "Screenshots" (one word), as in the UI we currently have existing strings for "Capture
Screenshot" and "Could not capture screenshot".

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.defaultTimelineTypes):
(WI.TimelineManager.prototype._processRecord):
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
* UserInterface/Images/IdentifierIcons.svg:
* UserInterface/Main.html:
* UserInterface/Models/Instrument.js:
(WI.Instrument.createForTimelineType):
* UserInterface/Models/ScreenshotsInstrument.js: Added.
(WI.ScreenshotsInstrument):
(WI.ScreenshotsInstrument.supported):
(WI.ScreenshotsInstrument.prototype.get timelineRecordType):
* UserInterface/Models/ScreenshotsTimelineRecord.js: Added.
(WI.ScreenshotsTimelineRecord):
(WI.ScreenshotsTimelineRecord.async fromJSON):
(WI.ScreenshotsTimelineRecord.prototype.toJSON):
(WI.ScreenshotsTimelineRecord.prototype.get imageData):
(WI.ScreenshotsTimelineRecord.prototype.get width):
(WI.ScreenshotsTimelineRecord.prototype.get height):
* UserInterface/Models/TimelineRecord.js:
(WI.TimelineRecord.async fromJSON):
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.addRecord):
* UserInterface/Test.html:
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
* UserInterface/Views/ScreenshotsTimelineOverviewGraph.css: Added.
(body .sidebar > .panel.navigation.timeline > .timelines-content li.item.screenshots,):
(.timeline-overview-graph.screenshots > img):
(.timeline-overview-graph.screenshots > img.selected):
* UserInterface/Views/ScreenshotsTimelineOverviewGraph.js: Added.
(WI.ScreenshotsTimelineOverviewGraph):
(WI.ScreenshotsTimelineOverviewGraph.prototype.get height):
(WI.ScreenshotsTimelineOverviewGraph.prototype.layout):
(WI.ScreenshotsTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.ScreenshotsTimelineOverviewGraph.prototype._visibleRecords):
* UserInterface/Views/ScreenshotsTimelineView.css: Added.
(.timeline-view.screenshots):
(.timeline-view.screenshots > img):
(.timeline-view.screenshots > img.selected):
* UserInterface/Views/ScreenshotsTimelineView.js: Added.
(WI.ScreenshotsTimelineView):
(WI.ScreenshotsTimelineView.prototype.reset):
(WI.ScreenshotsTimelineView.prototype.clear):
(WI.ScreenshotsTimelineView.prototype.get showsFilterBar):
(WI.ScreenshotsTimelineView.prototype.layout):
(WI.ScreenshotsTimelineView.prototype.selectRecord):
(WI.ScreenshotsTimelineView.prototype._selectTimelineRecord):
(WI.ScreenshotsTimelineView.prototype._visibleRecords):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/TimelineIcons.css:
(.screenshots-icon .icon):
(@media (prefers-color-scheme: dark) .screenshots-icon .icon):
* UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph.createForTimeline):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForTimelineType):
(WI.TimelineTabContentView.genericClassNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):

LayoutTests:

* inspector/timeline/resources/timeline-event-utilities.js:
(TestPage.registerInitializer.InspectorTest.TimelineEvent.captureTimelineWithScript):
(TestPage.registerInitializer):
* inspector/timeline/timeline-event-screenshots-expected.txt: Added.
* inspector/timeline/timeline-event-screenshots.html: Added.
* inspector/timeline/timeline-recording-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294166 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoAdd self to contributors.json
commit-queue@webkit.org [Fri, 13 May 2022 18:04:08 +0000 (18:04 +0000)]
Add self to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=240389

Patch by Geza Lore <glore@igalia.com> on 2022-05-13
Reviewed by Jonathan Bedard.

* metadata/contributors.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294165 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago-Wstringop-overflow warning in DocumentWriter.cpp
commit-queue@webkit.org [Fri, 13 May 2022 17:58:38 +0000 (17:58 +0000)]
-Wstringop-overflow warning in DocumentWriter.cpp
https://bugs.webkit.org/show_bug.cgi?id=239340

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-13
Reviewed by Chris Dumez.

* Source/WebCore/loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::end):

link: https://commits.webkit.org/250533@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294164 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoinput.showPicker() should throw when input is readonly/disabled
zsun@igalia.com [Fri, 13 May 2022 17:25:12 +0000 (17:25 +0000)]
input.showPicker() should throw when input is readonly/disabled
https://bugs.webkit.org/show_bug.cgi?id=240302

Reviewed by Tim Nguyen.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html: Added.

Source/WebCore:

When input is readonly or disabled, input.showPicker() should throw InvalidStateError.

Test: imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::showPicker):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294163 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago-Wreturn-type warning in PathOperation.cpp
commit-queue@webkit.org [Fri, 13 May 2022 17:21:06 +0000 (17:21 +0000)]
-Wreturn-type warning in PathOperation.cpp
https://bugs.webkit.org/show_bug.cgi?id=240383

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-13
Reviewed by Chris Dumez.

* Source/WebCore/rendering/PathOperation.cpp:
(WebCore::RayPathOperation::lengthForPath const):

link: https://commits.webkit.org/250531@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294162 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months ago[PrettyPatch] Support commit messages
jbedard@apple.com [Fri, 13 May 2022 17:05:55 +0000 (17:05 +0000)]
[PrettyPatch] Support commit messages
https://bugs.webkit.org/show_bug.cgi?id=240386
<rdar://problem/93248835>

Rubber-stamped by Aakash Jain.

* Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb:
(PrettyPatch.message_header): Match a commit message header.
(PrettyPatch.message_footer): Match a commit message footer.
(PrettyPatch.MESSAGE_HEADER_FORMATS): List of commit message headers.
(PrettyPatch.BUG_URL_RE): Regex to match bug urls in subject.
(PrettyPatch.MESSAGE_FOOTER_FORMATS): List of commit messagae footers.
(PrettyPatch.parse): Treat commit messages a new file named 'COMMIT_MESSAGE'.

link: https://commits.webkit.org/250530@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294161 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoAdd UI-side layers for optionally indicating interaction regions
timothy_horton@apple.com [Fri, 13 May 2022 16:31:40 +0000 (16:31 +0000)]
Add UI-side layers for optionally indicating interaction regions
https://bugs.webkit.org/show_bug.cgi?id=240372
<rdar://problem/87170289>

Reviewed by Dean Jackson.

Source/WebCore:

* page/DebugPageOverlays.cpp:
(WebCore::pathsForRegion):
Move inline rect inflation into InteractionRegion so that all clients get it.

* page/Page.cpp:
(WebCore::Page::shouldBuildInteractionRegions const):
* page/Page.h:
* page/Frame.cpp:
(WebCore::Frame::invalidateContentEventRegionsIfNeeded):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::maintainsEventRegion const):
(WebCore::RenderLayerBacking::updateEventRegion):
If the ENABLE() and setting are both enabled, update event regions
due to possible interaction region changes. We could make this more
conservative later, but chances are high that most layers include
interaction regions.

For now, compute interaction regions only for the root layer.
In a future patch, we will adopt the normal fake paint mechanism
and maintain them on the layer that owns them.

* page/InteractionRegion.cpp:
(WebCore::regionForElement):
Move inline rect inflation into InteractionRegion so that all clients get it.
Limit interaction rects to half of the viewport. Ignore regions that are larger.

* page/InteractionRegion.h:
(WebCore::operator==): Added.
(WebCore::InteractionRegion::encode const):
(WebCore::InteractionRegion::decode):
Remove the isInline bit, since we only used it for rect inflation.

* rendering/EventRegion.cpp:
(WebCore::EventRegion::operator== const):
(WebCore::EventRegion::translate):
(WebCore::EventRegion::uniteInteractionRegions):
(WebCore::EventRegion::computeInteractionRegions):
* rendering/EventRegion.h:
(WebCore::EventRegion::interactionRegions const):
(WebCore::EventRegion::encode const):
(WebCore::EventRegion::decode):
Store interaction regions on EventRegion.

Source/WebKit:

* Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
(WebKit::RemoteLayerTreePropertyApplier::applyHierarchyUpdates):
Allow RemoteLayerTreeInteractionRegionLayers to add and maintain layers for interaction regions.

* SourcesCocoa.txt:
* UIProcess/RemoteLayerTree/RemoteLayerTreeInteractionRegionLayers.h: Added.
* UIProcess/RemoteLayerTree/RemoteLayerTreeInteractionRegionLayers.mm: Added.
(configureLayerForInteractionRegion):
(WebKit::interactionRegionForLayer):
(WebKit::isInteractionRegionLayer):
(WebKit::setInteractionRegion):
Box WebCore::InteractionRegion in a Objective-C object and store it on the layer.
Use this as a key to indicate that a given layer is an interaction region.

(WebKit::appendInteractionRegionLayersForLayer):
Make sure that interaction region layers are always at the end of the layer's sublayers array.

(WebKit::updateLayersForInteractionRegions):
Add new layers for interaction regions.
Maintain the same layer for regions that cover the same area.
Add a green wash if the default `WKInteractionRegionDebugFill` is set.

* WebKit.xcodeproj/project.pbxproj:

Source/WTF:

* Scripts/Preferences/WebPreferencesInternal.yaml:
Add a preference to toggle interaction region layers.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294160 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoUnreviewed, reverting r294113.
commit-queue@webkit.org [Fri, 13 May 2022 16:02:55 +0000 (16:02 +0000)]
Unreviewed, reverting r294113.
https://bugs.webkit.org/show_bug.cgi?id=240381

This bug needs to be addressed using a different approach

Reverted changeset:

"Mail compose: right clicking an image attachment selects it"
https://bugs.webkit.org/show_bug.cgi?id=240315
https://commits.webkit.org/r294113

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294158 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 months agoFalse positive warning when building RefCounter test with GCC 12
commit-queue@webkit.org [Fri, 13 May 2022 14:54:08 +0000 (14:54 +0000)]
False positive warning when building RefCounter test with GCC 12
https://bugs.webkit.org/show_bug.cgi?id=239338

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2022-05-13
Reviewed by Chris Dumez.

* Source/WTF/wtf/RefCounter.h:
(WTF::RefCounter<T>::Count::deref):

link: https://commits.webkit.org/250527@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294157 268f45cc-cd09-0410-ab3c-d52691b4dbfc