Timeline



Jan 18, 2022: Today

12:30 AM Changeset in webkit [288112] by commit-queue@webkit.org
  • 68 edits
    26 moves
    26 deletes in trunk/LayoutTests

[GLIB] Update test baselines after r288070.
https://bugs.webkit.org/show_bug.cgi?id=235300

Unreviewed test gardening.

Since r288070 enabled LFC integration to be used on GTK as well as WPE, many test baselines can now be merged.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2022-01-18

  • platform/glib/css2.1/t0805-c5521-brdr-l-01-e-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t0805-c5521-brdr-l-01-e-expected.txt.
  • platform/glib/css2.1/t0905-c5525-fltwrap-00-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t0905-c5525-fltwrap-00-b-expected.txt.
  • platform/glib/css2.1/t090501-c414-flt-03-b-g-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t090501-c414-flt-03-b-g-expected.txt.
  • platform/glib/css2.1/t100801-c544-valgn-03-d-agi-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t100801-c544-valgn-03-d-agi-expected.txt.
  • platform/glib/css2.1/t1202-counter-08-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counter-08-b-expected.txt.
  • platform/glib/css2.1/t1202-counter-13-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counter-13-b-expected.txt.
  • platform/glib/css2.1/t1202-counter-14-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counter-14-b-expected.txt.
  • platform/glib/css2.1/t1202-counters-08-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counters-08-b-expected.txt.
  • platform/glib/css2.1/t1202-counters-13-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counters-13-b-expected.txt.
  • platform/glib/css2.1/t1202-counters-14-b-expected.txt: Renamed from LayoutTests/platform/wpe/css2.1/t1202-counters-14-b-expected.txt.
  • platform/glib/css3/filters/effect-combined-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-combined-expected.txt.
  • platform/glib/css3/filters/effect-combined-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-combined-hw-expected.txt.
  • platform/glib/css3/filters/effect-contrast-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-contrast-expected.txt.
  • platform/glib/css3/filters/effect-contrast-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-contrast-hw-expected.txt.
  • platform/glib/css3/filters/effect-grayscale-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-grayscale-expected.txt.
  • platform/glib/css3/filters/effect-grayscale-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-grayscale-hw-expected.txt.
  • platform/glib/css3/filters/effect-hue-rotate-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-hue-rotate-expected.txt.
  • platform/glib/css3/filters/effect-hue-rotate-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-hue-rotate-hw-expected.txt.
  • platform/glib/css3/filters/effect-invert-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-invert-expected.txt.
  • platform/glib/css3/filters/effect-invert-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-invert-hw-expected.txt.
  • platform/glib/css3/filters/effect-opacity-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-opacity-expected.txt.
  • platform/glib/css3/filters/effect-opacity-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-opacity-hw-expected.txt.
  • platform/glib/css3/filters/effect-saturate-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-saturate-expected.txt.
  • platform/glib/css3/filters/effect-saturate-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-saturate-hw-expected.txt.
  • platform/glib/css3/filters/effect-sepia-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-sepia-expected.txt.
  • platform/glib/css3/filters/effect-sepia-hw-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/effect-sepia-hw-expected.txt.
  • platform/gtk/css1/box_properties/border-expected.txt:
  • platform/gtk/css1/box_properties/float_on_text_elements-expected.txt:
  • platform/gtk/css1/font_properties/font-expected.txt:
  • platform/gtk/css1/formatting_model/height_of_lines-expected.txt:
  • platform/gtk/css1/text_properties/letter_spacing-expected.txt:
  • platform/gtk/css1/text_properties/line_height-expected.txt:
  • platform/gtk/css1/text_properties/text_decoration-expected.txt:
  • platform/gtk/css1/text_properties/text_transform-expected.txt:
  • platform/gtk/css1/text_properties/vertical_align-expected.txt:
  • platform/gtk/css1/text_properties/word_spacing-expected.txt:
  • platform/gtk/css2.1/t0805-c5521-brdr-l-01-e-expected.txt: Removed.
  • platform/gtk/css2.1/t0905-c5525-fltwidth-00-c-g-expected.txt:
  • platform/gtk/css2.1/t0905-c5525-fltwidth-03-c-g-expected.txt:
  • platform/gtk/css2.1/t0905-c5525-fltwrap-00-b-expected.txt: Removed.
  • platform/gtk/css2.1/t090501-c414-flt-01-b-expected.txt:
  • platform/gtk/css2.1/t090501-c414-flt-03-b-g-expected.txt: Removed.
  • platform/gtk/css2.1/t100801-c544-valgn-00-a-ag-expected.txt:
  • platform/gtk/css2.1/t100801-c544-valgn-03-d-agi-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counter-08-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counter-13-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counter-14-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counters-08-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counters-13-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1202-counters-14-b-expected.txt: Removed.
  • platform/gtk/css2.1/t1508-c527-font-01-b-expected.txt:
  • platform/gtk/css2.1/t1508-c527-font-02-b-expected.txt:
  • platform/gtk/css3/filters/effect-combined-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-combined-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-contrast-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-contrast-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-grayscale-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-grayscale-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-hue-rotate-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-hue-rotate-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-invert-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-invert-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-opacity-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-opacity-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-saturate-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-saturate-hw-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-sepia-expected.txt: Removed.
  • platform/gtk/css3/filters/effect-sepia-hw-expected.txt: Removed.
  • platform/gtk/editing/deleting/5144139-2-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt:
  • platform/gtk/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt:
  • platform/gtk/editing/deleting/non-smart-delete-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-001-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-002-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-003-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-004-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-005-expected.txt:
  • platform/gtk/editing/inserting/insert-br-quoted-006-expected.txt:
  • platform/gtk/editing/inserting/insert-div-025-expected.txt:
  • platform/gtk/editing/inserting/insert-div-026-expected.txt:
  • platform/gtk/editing/inserting/return-key-with-selection-001-expected.txt:
  • platform/gtk/editing/inserting/return-key-with-selection-002-expected.txt:
  • platform/gtk/editing/inserting/return-key-with-selection-003-expected.txt:
  • platform/gtk/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt:
  • platform/gtk/editing/pasteboard/paste-4038267-fix-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-001-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-002-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-003-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-004-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-005-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-006-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-007-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-008-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-009-expected.txt:
  • platform/gtk/editing/pasteboard/paste-line-endings-010-expected.txt:
  • platform/gtk/editing/pasteboard/paste-match-style-001-expected.txt:
  • platform/gtk/editing/pasteboard/paste-match-style-002-expected.txt:
  • platform/gtk/editing/pasteboard/paste-text-019-expected.txt:
  • platform/gtk/editing/style/block-styles-007-expected.txt:
  • platform/gtk/editing/style/style-3998892-fix-expected.txt:
  • platform/gtk/editing/style/style-boundary-001-expected.txt:
  • platform/gtk/editing/style/style-boundary-002-expected.txt:
  • platform/gtk/editing/style/style-boundary-003-expected.txt:
  • platform/gtk/editing/style/style-boundary-004-expected.txt:
  • platform/gtk/editing/unsupported-content/list-delete-001-expected.txt:
  • platform/gtk/editing/unsupported-content/list-delete-003-expected.txt:
  • platform/gtk/editing/unsupported-content/list-type-after-expected.txt:
  • platform/gtk/editing/unsupported-content/list-type-before-expected.txt:
  • platform/gtk/editing/unsupported-content/table-delete-002-expected.txt:
  • platform/gtk/editing/unsupported-content/table-type-after-expected.txt:
  • platform/gtk/editing/unsupported-content/table-type-before-expected.txt:

Jan 17, 2022: Yesterday

11:57 PM Changeset in webkit [288111] by Antti Koivisto
  • 7 edits in trunk

[:has() pseudo-class] Disallow nested :has()
https://bugs.webkit.org/show_bug.cgi?id=235231

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/selectors/has-argument-with-explicit-scope.tentative-expected.txt:
  • web-platform-tests/css/selectors/has-basic-expected.txt:
  • web-platform-tests/css/selectors/parsing/parse-has-expected.txt:

Source/WebCore:

Nested case ':has(:has(foo))' adds no meaningful capability and would complicate invalidation.
See https://github.com/w3c/csswg-drafts/issues/6952 for more details.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):

Also set m_resistDefaultNamespace like other logical combination pseudo-classes.

  • css/parser/CSSSelectorParser.h:
11:54 PM Changeset in webkit [288110] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

BaseAudioSharedUnit::devicesChanged is failing capture too much in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=235288

Reviewed by Eric Carlson.

Manually tested.

  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:

In GPUProcess, we do not need to filter tap enabled devices, since this may filter out valid devices, which may break capture.
Given we only need to filter tap enabled devices in the process that enumerates devices for selecting the one to use,
We can reverse the default value to not filter, and enable the filtering in UIProcess as done currently based on whether capturing in GPUProcess or not.

11:35 PM Changeset in webkit [288109] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

AudioMediaStreamTrackRendererUnit::reset should hop to the main thread before calling its observers
https://bugs.webkit.org/show_bug.cgi?id=235290

Reviewed by Darin Adler.

In case of doing audio rendering in WebProcess, we need to hop to main thread since the callback might get called from a background thread.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:
9:21 PM Changeset in webkit [288108] by commit-queue@webkit.org
  • 2 edits in trunk

Fix typo in README
https://bugs.webkit.org/show_bug.cgi?id=235309

Patch by Brandon Stewart <Brandon> on 2022-01-17
Reviewed by Michael Saboff.

Fix typo in ReadMe. Updated 'embededded' to 'embedded'.

  • ReadMe.md:
7:02 PM Changeset in webkit [288107] by mmaxfield@apple.com
  • 5 edits
    4 adds in trunk

REGRESSION(r281389): using font-variant-ligatures causes Unicode bidi isolation control characters to render
https://bugs.webkit.org/show_bug.cgi?id=235053
<rdar://problem/87425066>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-text/white-space/default-ignorable-complex-expected.html: Added.
  • web-platform-tests/css/css-text/white-space/default-ignorable-complex.html: Added.
  • web-platform-tests/css/css-text/white-space/default-ignorable-expected.html: Added.
  • web-platform-tests/css/css-text/white-space/default-ignorable.html: Added.

Source/WebCore:

The spec says (https://drafts.csswg.org/css-text-3/#white-space-processing)

unsupported Default_ignorable characters must be ignored for text rendering.

Previously, we were handling this by mapping the characters to the zero width space character. r281389 changed
that to be more faithful to the original string (and not do the mapping). One somewhat unexpected result of
this patch was that, now that we're not mapping these code points to the zero width space character, fewer fonts
on the system will support those code points. It became much more common for no font at all to support the code
point in question. r281389 handled the situation where the code points were supported by a font but shouldn't be
rendered, but didn't handle the case where the code points *weren't* supported by any fonts (in the complex text
codepath). This patch updates that path to handle it.

This patch also replaces our previous hardcoded list of Default_ignorable characters with the proper call to ICU
to check the Unicode property. It does this in both the fast text codepath and the simple text codepath, to make
sure they match.

Tests: imported/w3c/web-platform-tests/css/css-text/white-space/default-ignorable-complex.html

imported/w3c/web-platform-tests/css/css-text/white-space/default-ignorable.html

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::applyCSSVisibilityRules):

5:39 PM Changeset in webkit [288106] by ddkilzer@apple.com
  • 4 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (r249823): gl::Context::onProgramLink() leaks gl::Framebuffer object due early return when an error occurs in ANGLE_TRY() macro
<https://webkit.org/b/235284>
<rdar://problem/87656747>

Reviewed by Darin Adler.

  • src/libANGLE/Context.cpp:

(gl::Context::setDefaultFramebuffer):

  • Use std::unique_ptr<> to store gl::Framebuffer so the object is released on early return.
  • src/libANGLE/Surface.cpp:

(egl::Surface::createDefaultFramebuffer):

  • Update to return std::unique_ptr<gl::Framebuffer>.
  • src/libANGLE/Surface.h:

(egl::Surface::createDefaultFramebuffer):

  • Update declaration to return std::unique_ptr<gl::Framebuffer>.

(egl::Surface::createDefaultFramebuffer): Delete.

  • Remove the second, protected method that is currently unimplemented.
4:56 PM Changeset in webkit [288105] by ddkilzer@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (r286603): rx::ProgramMtl::getSpecializedShader() leaks MTLFunctionConstantValues object due early return when an error occurs in ANGLE_TRY() macro
<https://webkit.org/b/235281>
<rdar://problem/87656387>

Reviewed by Darin Adler.

  • src/libANGLE/renderer/metal/ProgramMtl.mm:

(rx::ProgramMtl::getSpecializedShader):

  • Use mtl::AutoObjCObj<> to release MTLFunctionConstantValues object on early return.
4:50 PM Changeset in webkit [288104] by ChangSeok Oh
  • 15 edits
    1 add in trunk

[GTK] Implement form validation with gtk3 widgets in the UI process
https://bugs.webkit.org/show_bug.cgi?id=234629

Reviewed by Carlos Garcia Campos.

Source/WebCore:

This change re-implements form validation with gtk3 widgets in the UI process.
The current form validation is implemented by using shadow DOM in the web process.
The overall design is similar to that of mac port but the gtk port adds
a callback of webkitWebViewBaseSetShouldNotifyFocusEvents to WebCore::ValidationBubble
to suppress a focus event triggered by the popover widget. Otherwise, the native
bubble does not display properly.
This change does not support gtk4 yet. A follow-up patch will add the gtk4 support.

No new tests because existing tests cover this change.

  • SourcesGTK.txt:
  • platform/ValidationBubble.h:

(WebCore::ValidationBubble::create):

  • platform/gtk/ValidationBubbleGtk.cpp: Added.

(WebCore::ValidationBubble::ValidationBubble):
(WebCore::ValidationBubble::~ValidationBubble):
(WebCore::ValidationBubble::invalidate):
(WebCore::ValidationBubble::showRelativeTo):

Source/WebKit:

This change re-implements form validation with gtk3 widgets in the UI process.
The current form validation is implemented by using shadow DOM in the web process.
The overall design is similar to that of mac port but the gtk port adds
a callback of webkitWebViewBaseSetShouldNotifyFocusEvents to WebCore::ValidationBubble
to suppress a focus event triggered by the popover widget. Otherwise, the native
bubble does not display properly.
This change does not support gtk4 yet. A follow-up patch will add the gtk4 support.
To avoid complaints from the gtk4 EWS, we guard implementation of ValidationBubbleGtk
temporarily and install pageConfiguration.validationMessageClient for gtk3 only.
The gtk4 keeps using the shadow DOM bubble until having native bubble support.

  • SourcesGTK.txt:
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::createValidationBubble):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::hideValidationMessage):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::showValidationMessage):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_appHighlightsVisible):

LayoutTests:

We skip fast/forms/validation-message-clone.html for now. Although this patch
implements a validation bubble with a native widget, related tests cannot be enabled
due to missing JS APIs for the UI script controller (e.g., contentsOfUserInterfaceItem).

  • platform/gtk/TestExpectations: Skip fast/forms/validation-message-clone.html
1:32 PM Changeset in webkit [288103] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Fractional td width is not rendering correctly
https://bugs.webkit.org/show_bug.cgi?id=234745
<rdar://problem/87162997>

Reviewed by Darin Adler.

Source/WebCore:

This is based on the following Blink commit

https://chromium.googlesource.com/chromium/src/+/bfade5f8c943d322f5aca3ab0341824e4ae885a1

The code that ignores a width of zero was incorrectly parsing as an integer and ignoring fractional values.

Test: fast/table/table-cell-percent-width-between-0-and-1.html

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::collectPresentationalHintsForAttribute):

LayoutTests:

  • fast/table/table-cell-percent-width-between-0-and-1-expected.html: Added.
  • fast/table/table-cell-percent-width-between-0-and-1.html: Added.
12:17 PM Changeset in webkit [288102] by Wenson Hsieh
  • 8 edits in trunk

ImageAnalysisQueue should analyze image elements that are loaded after the call to enqueueAllImages()
https://bugs.webkit.org/show_bug.cgi?id=233266
rdar://85731875

Reviewed by Darin Adler.

Source/WebCore:

Make a few adjustments to ImageAnalysisQueue, such that it continues to analyze images in the document that have
finished loading after triggering the initial call to enqueueAllImages() in the document.

Test: ImageAnalysisTests.AnalyzeDynamicallyLoadedImages

ImageAnalysisTests.ResetImageAnalysisAfterNavigation

  • page/ImageAnalysisQueue.cpp:

(WebCore::ImageAnalysisQueue::enqueueIfNeeded):

Pull logic for queueing an image element for analysis into a separate helper method; we only attempt to analyze
image elements that have successfully loaded and contain a CachedImage that is larger than an arbitrarily
chosen size of 20px by 20px.

(WebCore::ImageAnalysisQueue::enqueueAllImages):

Refactor this to use the new enqueueIfNeeded method above.

(WebCore::ImageAnalysisQueue::resumeProcessing):
(WebCore::ImageAnalysisQueue::clear):

  • page/ImageAnalysisQueue.h:

Add a weak hashset of elements that we've already added to the image analysis queue at some point. This prevents
us from continually performing image analysis on the same image if it's only being removed and reinserted in the
document.

  • page/Page.cpp:

(WebCore::Page::didCommitLoad):

Additionally reset the image analysis queue when committing page load, so that the image analysis queue doesn't
persist and continue analyzing images even after reloading the page (or navigating away).

(WebCore::Page::didFinishLoadingImageForElement):

If it exists, tell the page's image analysis queue to add the newly loaded image.

(WebCore::Page::resetImageAnalysisQueue):

  • page/Page.h:

Tools:

Add new API tests to check that image elements that are created and inserted after kicking off the image
analysis queue are successfully added to the queue, and result in platform image analysis requests, and to also
verify that the image analysis queue is reset after navigation.

  • TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:

(TestWebKitAPI::processRequestWithResults):
(TestWebKitAPI::makeImageAnalysisRequestSwizzler):
(TestWebKitAPI::processRequestWithError):
(TestWebKitAPI::TEST):
(TestWebKitAPI::swizzledProcessRequestWithResults): Deleted.
(TestWebKitAPI::swizzledProcessRequestWithError): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/multiple-images.html:
12:10 PM Changeset in webkit [288101] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash may occur under ComputedStyleExtractor::propertyValue()
https://bugs.webkit.org/show_bug.cgi?id=235255

Reviewed by Antti Koivisto.

When calling getComputedStyle() after an element has had its style set to "display: none",
ComputedStyleExtractor::propertyValue() will first start with a non-null renderer but it will
become null after document.updateLayoutIgnorePendingStylesheets() is called.

To avoid this problem, we stop storing the renderer throughout the method, and instead call
styledRenderer() to obtain a valid renderer each time we need to access it.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

11:50 AM Changeset in webkit [288100] by commit-queue@webkit.org
  • 6 edits in trunk

AX: Expose toggle buttons using role="button" as form controls.
https://bugs.webkit.org/show_bug.cgi?id=234119

Patch by Sepand Parhami <sparhami@apple.com> on 2022-01-17
Reviewed by Chris Fleizach.

Source/WebCore:

Add the ToggleButton role to the list of aria controls in isARIAControl so that it
is a control when checked by the accessibility object search.

Tests: LayoutTests/accessibility/mac/search-predicate-element-count.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isLabelable const):

Remove redundant check, isControl already covers it.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isARIAControl):

LayoutTests:

Added a test case for button/role="button" with aria-presssed. Reordered a few things as
the previously named "inputs" section was not what was being checked in the test (it was
the number of buttons) and it had previously matched the number by coincidence.

  • accessibility/mac/search-predicate-element-count-expected.txt:
  • accessibility/mac/search-predicate-element-count.html:
11:44 AM Changeset in webkit [288099] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Layered @import rules in <style> should be preloaded
https://bugs.webkit.org/show_bug.cgi?id=234094
<rdar://problem/86586969>

Reviewed by Dean Jackson.

Source/WebCore:

Test: http/tests/loading/preload-css-import-layer.html

  • html/parser/CSSPreloadScanner.cpp:

(WebCore::CSSPreloadScanner::tokenize):
(WebCore::hasValidImportConditions):
(WebCore::CSSPreloadScanner::emitRule):

  • html/parser/CSSPreloadScanner.h:

Allow @import rule containing layer condition to be preloaded.

LayoutTests:

  • http/tests/loading/preload-css-import-layer-expected.txt: Added.
  • http/tests/loading/preload-css-import-layer.html: Added.
11:35 AM Changeset in webkit [288098] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

Add an API test to ensure indexedDB.databases() does not create files on disk
https://bugs.webkit.org/show_bug.cgi?id=235289

Reviewed by Darin Adler.

Add test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
10:30 AM Changeset in webkit [288097] by ddkilzer@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Follow-up: REGRESSION (r286603): Leak of three NSMutableDictionary objects each time rx::DisplayMtl::getMetalDeviceMatchingAttribute() is called
<https://webkit.org/b/235278>
<rdar://problem/87653812>

Unreviewed follow-up fix from Bug 235281, Comment #5.

  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::getMetalDeviceMatchingAttribute):

  • Remove unneeded calls to .get().
9:27 AM Changeset in webkit [288096] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GLIB] Update test expectations after r288070 allowed LFC integration to work on GTK.
https://bugs.webkit.org/show_bug.cgi?id=235293

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2022-01-17

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
9:21 AM Changeset in webkit [288095] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][IFC] ASSERT in InlineContentBreaker::tryBreakingPreviousNonOverflowingRuns (!partialRun->length) when webinspector is open
https://bugs.webkit.org/show_bug.cgi?id=235286

Reviewed by Antti Koivisto.

Source/WebCore:

When the overflowing run is non-breakable (in this case an "inline box end" with padding), we try to find a breakable
previous run in the candidate list. If we find such text run, we try to break it by looking at the applicable CSS properties
(e.g. word-break, overflow-wrap). Now text runs with 1 (and 0) length and no adjacent text runs need special handling
as they can't be broken "within word" or at boundary (they treated as "unbreakable").

Test: fast/text/overflow-wrap-assert-with-zero-width-overflowing-content.html

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::InlineContentBreaker::tryBreakingPreviousNonOverflowingRuns const): The trailing run starts
at the beginning of the run and ends right before at the last character.

LayoutTests:

  • fast/text/overflow-wrap-assert-with-zero-width-overflowing-content-expected.txt: Added.
  • fast/text/overflow-wrap-assert-with-zero-width-overflowing-content.html: Added.
  • platform/ios/fast/text/basic/015-expected.txt: Progressions.
  • platform/mac/fast/text/basic/015-expected.txt:
6:31 AM Changeset in webkit [288094] by commit-queue@webkit.org
  • 2 edits in trunk/Source/bmalloc

[CMake] Fix bmalloc build
https://bugs.webkit.org/show_bug.cgi?id=235292

Unreviewed build fix.

Patch by Xan Lopez <Xan Lopez> on 2022-01-17

  • CMakeLists.txt: fix location of headers and source files.
2:49 AM Changeset in webkit [288093] by youenn@apple.com
  • 61 edits in trunk

Make ServiceWorkerClient.id a UUID instead of a string derived from a ScriptExecutionContextIdentifier
https://bugs.webkit.org/show_bug.cgi?id=235070

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:

Source/WebCore:

Update ScriptExecutionContextIdentifier to be a process-scoped UUID.
This allows to identify the process running a process as well as exposing to JavaScript context identifiers as UUIDs.
This is matching what Chrome and Firefox are doing.
Make SWServer store the maping from context UUID strings to the internal ScriptExecutionContextIdentifiers.
This allows to find a ServiceWorkerClient directly from its JavaScript exposed identifier.
Rename reservedClientId in resultingClientId to match the spec.

Covered by existing tests.

  • Modules/web-locks/WebLockRegistry.cpp:
  • dom/ScriptExecutionContext.cpp:
  • loader/DocumentLoader.cpp:
  • page/mac/PageMac.mm:
  • platform/ProcessQualified.h:
  • platform/ScriptExecutionContextIdentifier.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/ServiceWorkerInternals.cpp:
  • testing/ServiceWorkerInternals.h:
  • testing/ServiceWorkerInternals.idl:
  • workers/service/FetchEvent.cpp:
  • workers/service/FetchEvent.h:
  • workers/service/FetchEvent.idl:
  • workers/service/ServiceWorkerClient.cpp:
  • workers/service/ServiceWorkerClient.idl:
  • workers/service/ServiceWorkerClients.cpp:
  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerFetch.cpp:
  • workers/service/context/ServiceWorkerFetch.h:
  • workers/service/context/ServiceWorkerThread.cpp:
  • workers/service/context/ServiceWorkerThread.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:
  • workers/service/context/ServiceWorkerThreadProxy.h:
  • workers/service/server/SWServer.cpp:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.cpp:
  • workers/service/server/SWServerToContextConnection.h:
  • workers/service/server/SWServerWorker.cpp:
  • workers/service/server/SWServerWorker.h:

Source/WebKit:

Change findByClientIdentifier into findByVisibleClientIdentifieran and make it asn async reply.
Update fetch event code path to send the visible IDs of the FetchEvent from network process to worker context process.
We store these IDs in NetworkResourceLoader so that we can change them in case of redirection for navigations.

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:
  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:

Source/WTF:

  • wtf/UUID.cpp:
  • wtf/UUID.h: Add routine to stringify a UUID. Add routine to parse a stringified UUID. We restrict UUID::create to values for which the version 4 UUID stringification is bijective.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/UUID.cpp:
  • TestWebKitAPI/Tests/WebKitCocoa/SystemPreview.mm:

LayoutTests:

Updated tests to not rely on visible ID to be the serialization of a ScriptExecutionContextIdentifier.
For that reason, add internals API to get the internal ID from a ServiceWorkerClient.

  • http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html:
  • http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html:
  • http/tests/workers/service/resources/getClientIds-worker.js:
  • http/tests/workers/service/serviceworkerclients-matchAll-worker.js:
  • http/tests/workers/service/serviceworkerclients-matchAll.https.html:
1:50 AM Changeset in webkit [288092] by commit-queue@webkit.org
  • 9 edits in trunk

[GStreamer] tests media/track/audio-track-configuration.html and media/track/video-track-configuration.html fail
https://bugs.webkit.org/show_bug.cgi?id=234084

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

Source/WebCore:

The known caps and tags of the track GstStream are now exposed through the corresponding
Platform{Audio,Video}TrackConfiguration. This is supported only when playbin3 is used at
runtime. Supporting playbin2 would be some work (pad probes upfront of decoders?) that could
be done as a follow-up. The codec string is generated with the new GStreamer API
gst_codec_utils_caps_get_mime_codec(), which will ship in 1.20.

  • platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:

(WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer):

  • platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:

(WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer):

LayoutTests:

  • media/track/audio-track-configuration.html: Add a timeout to each promise, allowing for

nicer actual results when a sub-set of the promises time out. Without this a single promise
timeout would make the entire test time out and the actual results would not be reported
properly.

  • media/track/video-track-configuration.html: Ditto.
  • platform/glib/TestExpectations: Update {audio,video}-track expectations, tests still

expected to fail but some improvements will be available when we switch to playbin3.

1:29 AM Changeset in webkit [288091] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Debug][GStreamer] Crash in fast/mediastream/get-display-media-settings.html
https://bugs.webkit.org/show_bug.cgi?id=235221

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

Fix use-after-move issue in MockDisplayCaptureSourceGStreamer. The hashSalt string was moved
to the wrapped mock video source, and then again as a parent class constructor parameter.

  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockDisplayCaptureSourceGStreamer::create):

12:21 AM Changeset in webkit [288090] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

Frequent GPU process jetsams due to RemoteRenderingBackendProxy not claiming ownership of SharedMemory buffers
https://bugs.webkit.org/show_bug.cgi?id=235226

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

Claim memory from SharedBitmaps and SharedMemory that RemoteRenderingBackendProxy
asks and receives from RemoteRenderingBackend. This is not very good,
as GPUP allocates most of the memory and thus might jetsam
before WP claims them. However, that is a bigger change to be done
after this one.

No new tests, hard to test currently.

  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::Handle::takeOwnershipOfMemory const):

  • Shared/ShareableBitmap.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::getShareableBitmap):
(WebKit::RemoteRenderingBackendProxy::getFilteredImage):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::recordNativeImageUse):

12:16 AM Changeset in webkit [288089] by Carlos Garcia Campos
  • 26 edits
    1 delete in trunk

[GTK][a11y] Stop using isolated tree for the ATSPI implementation
https://bugs.webkit.org/show_bug.cgi?id=235229

Reviewed by Adrian Perez de Castro.

.:

Do not enable isolated tree for ATSPI.

  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Isolated tree performance is not good enough with many websites, so for now we will stop using it.

  • SourcesGTK.txt:
  • accessibility/atspi/AXObjectCacheAtspi.cpp:

(WebCore::AXObjectCache::postPlatformNotification):
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):
(WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
(WebCore::AXObjectCache::isIsolatedTreeEnabled): Deleted.
(WebCore::AXObjectCache::initializeSecondaryAXThread): Deleted.
(WebCore::AXObjectCache::usedOnAXThread): Deleted.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::connect):
(WebCore::AccessibilityAtspi::didConnect):
(WebCore::AccessibilityAtspi::initializeRegistry):
(WebCore::AccessibilityAtspi::addEventListener):
(WebCore::AccessibilityAtspi::removeEventListener):
(WebCore::AccessibilityAtspi::addClient):
(WebCore::AccessibilityAtspi::removeClient):
(WebCore::AccessibilityAtspi::shouldEmitSignal):
(WebCore::AccessibilityAtspi::uniqueName const):
(WebCore::AccessibilityAtspi::nullReference const):
(WebCore::AccessibilityAtspi::applicationReference const):
(WebCore::AccessibilityAtspi::registerRoot):
(WebCore::AccessibilityAtspi::unregisterRoot):
(WebCore::AccessibilityAtspi::registerObject):
(WebCore::AccessibilityAtspi::unregisterObject):
(WebCore::AccessibilityAtspi::registerHyperlink):
(WebCore::AccessibilityAtspi::parentChanged):
(WebCore::AccessibilityAtspi::childrenChanged):
(WebCore::AccessibilityAtspi::stateChanged):
(WebCore::AccessibilityAtspi::textChanged):
(WebCore::AccessibilityAtspi::textAttributesChanged):
(WebCore::AccessibilityAtspi::textCaretMoved):
(WebCore::AccessibilityAtspi::textSelectionChanged):
(WebCore::AccessibilityAtspi::valueChanged):
(WebCore::AccessibilityAtspi::selectionChanged):
(WebCore::AccessibilityAtspi::loadEvent):
(WebCore::AccessibilityAtspi::ensureCache):
(WebCore::AccessibilityAtspi::addToCacheIfNeeded):
(WebCore::AccessibilityAtspi::scheduleCacheUpdate):
(WebCore::AccessibilityAtspi::addAccessible):
(WebCore::AccessibilityAtspi::removeAccessible):
(WebCore::AccessibilityAtspi::AccessibilityAtspi): Deleted.
(WebCore::AccessibilityAtspi::runLoop const): Deleted.

  • accessibility/atspi/AccessibilityAtspi.h:
  • accessibility/atspi/AccessibilityObjectActionAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::actionName const):
(WebCore::AccessibilityObjectAtspi::localizedActionName const):
(WebCore::AccessibilityObjectAtspi::actionKeyBinding const):
(WebCore::AccessibilityObjectAtspi::doAction const):

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::AccessibilityObjectAtspi):
(WebCore::AccessibilityObjectAtspi::cacheDestroyed):
(WebCore::AccessibilityObjectAtspi::elementDestroyed):
(WebCore::AccessibilityObjectAtspi::root):
(WebCore::AccessibilityObjectAtspi::registerObject):
(WebCore::AccessibilityObjectAtspi::didUnregisterObject):
(WebCore::AccessibilityObjectAtspi::path):
(WebCore::AccessibilityObjectAtspi::reference):
(WebCore::AccessibilityObjectAtspi::hyperlinkReference):
(WebCore::AccessibilityObjectAtspi::setParent):
(WebCore:: const):
(WebCore::AccessibilityObjectAtspi::childCount const):
(WebCore::AccessibilityObjectAtspi::childAt const):
(WebCore::AccessibilityObjectAtspi::children const):
(WebCore::AccessibilityObjectAtspi::indexInParent const):
(WebCore::AccessibilityObjectAtspi::name const):
(WebCore::AccessibilityObjectAtspi::description const):
(WebCore::AccessibilityObjectAtspi::locale const):
(WebCore::AccessibilityObjectAtspi::state const):
(WebCore::AccessibilityObjectAtspi::isDefunct const):
(WebCore::AccessibilityObjectAtspi::id const):
(WebCore::AccessibilityObjectAtspi::attributes const):
(WebCore::AccessibilityObjectAtspi::buildAttributes const):
(WebCore::AccessibilityObjectAtspi::relationMap const):
(WebCore::AccessibilityObjectAtspi::buildRelationSet const):
(WebCore::AccessibilityObjectAtspi::buildInterfaces const):
(WebCore::AccessibilityObjectAtspi::serialize const):
(WebCore::AccessibilityObjectAtspi::childAdded):
(WebCore::AccessibilityObjectAtspi::childRemoved):
(WebCore::AccessibilityObjectAtspi::stateChanged):
(WebCore::AccessibilityObjectAtspi::loadEvent):
(WebCore::AccessibilityObjectAtspi::effectiveRole const):
(WebCore::AccessibilityObjectAtspi::role const):
(WebCore::AccessibilityObjectAtspi::roleName const):
(WebCore::AccessibilityObjectAtspi::localizedRoleName const):
(WebCore::AccessibilityObjectAtspi::updateBackingStore):
(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):
(WebCore::AccessibilityObjectAtspi::attach): Deleted.
(WebCore::AccessibilityObjectAtspi::detach): Deleted.

  • accessibility/atspi/AccessibilityObjectAtspi.h:
  • accessibility/atspi/AccessibilityObjectComponentAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::hitTest const):
(WebCore::AccessibilityObjectAtspi::elementRect const):
(WebCore::AccessibilityObjectAtspi::focus const):
(WebCore::AccessibilityObjectAtspi::opacity const):
(WebCore::AccessibilityObjectAtspi::scrollToMakeVisible const):
(WebCore::AccessibilityObjectAtspi::scrollToPoint const):

  • accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::documentAttribute const):
(WebCore::AccessibilityObjectAtspi::documentAttributes const):
(WebCore::AccessibilityObjectAtspi::documentLocale const):

  • accessibility/atspi/AccessibilityObjectHyperlinkAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::url const):
(WebCore::AccessibilityObjectAtspi::offsetInParent const):

  • accessibility/atspi/AccessibilityObjectHypertextAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::hyperlinkCount const):
(WebCore::AccessibilityObjectAtspi::hyperlink const):

  • accessibility/atspi/AccessibilityObjectImageAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::imageDescription const):

  • accessibility/atspi/AccessibilityObjectSelectionAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::selectionCount const):
(WebCore::AccessibilityObjectAtspi::selectedChild const):
(WebCore::AccessibilityObjectAtspi::setChildSelected const):
(WebCore::AccessibilityObjectAtspi::deselectSelectedChild const):
(WebCore::AccessibilityObjectAtspi::isChildSelected const):
(WebCore::AccessibilityObjectAtspi::selectAll const):
(WebCore::AccessibilityObjectAtspi::clearSelection const):
(WebCore::AccessibilityObjectAtspi::selectionChanged):

  • accessibility/atspi/AccessibilityObjectTableAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::rowCount const):
(WebCore::AccessibilityObjectAtspi::columnCount const):
(WebCore::AccessibilityObjectAtspi::cell const):
(WebCore::AccessibilityObjectAtspi::tableCaption const):
(WebCore::AccessibilityObjectAtspi::cellIndex const):
(WebCore::AccessibilityObjectAtspi::rowAtIndex const):
(WebCore::AccessibilityObjectAtspi::columnAtIndex const):
(WebCore::AccessibilityObjectAtspi::rowHeader const):
(WebCore::AccessibilityObjectAtspi::columnHeader const):
(WebCore::AccessibilityObjectAtspi::rowDescription const):
(WebCore::AccessibilityObjectAtspi::columnDescription const):
(WebCore::AccessibilityObjectAtspi::rowExtent const):
(WebCore::AccessibilityObjectAtspi::columnExtent const):
(WebCore::AccessibilityObjectAtspi::cells const):
(WebCore::AccessibilityObjectAtspi::rows const):
(WebCore::AccessibilityObjectAtspi::rowHeaders const):
(WebCore::AccessibilityObjectAtspi::columnHeaders const):

  • accessibility/atspi/AccessibilityObjectTableCellAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::cellRowHeaders const):
(WebCore::AccessibilityObjectAtspi::cellColumnHeaders const):
(WebCore::AccessibilityObjectAtspi::rowSpan const):
(WebCore::AccessibilityObjectAtspi::columnSpan const):
(WebCore::AccessibilityObjectAtspi::cellPosition const):

  • accessibility/atspi/AccessibilityObjectTextAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::text const):
(WebCore::AccessibilityObject::getLengthForTextRange const):
(WebCore::AccessibilityObjectAtspi::textInserted):
(WebCore::AccessibilityObjectAtspi::textDeleted):
(WebCore::AccessibilityObjectAtspi::boundaryOffset const):
(WebCore::AccessibilityObjectAtspi::textAtOffset const):
(WebCore::AccessibilityObjectAtspi::characterAtOffset const):
(WebCore::AccessibilityObjectAtspi::boundsForRange const):
(WebCore::AccessibilityObjectAtspi::textExtents const):
(WebCore::AccessibilityObjectAtspi::offsetAtPoint const):
(WebCore::AccessibilityObjectAtspi::boundsForSelection const):
(WebCore::AccessibilityObjectAtspi::selectedRange const):
(WebCore::AccessibilityObjectAtspi::selectionBounds const):
(WebCore::AccessibilityObjectAtspi::setSelectedRange):
(WebCore::AccessibilityObjectAtspi::selectRange):
(WebCore::AccessibilityObjectAtspi::selectionChanged):
(WebCore::AccessibilityObjectAtspi::textAttributes const):
(WebCore::AccessibilityObjectAtspi::textAttributesWithUTF8Offset const):
(WebCore::AccessibilityObjectAtspi::textAttributesChanged):
(WebCore::AccessibilityObjectAtspi::scrollToMakeVisible const):
(WebCore::AccessibilityObjectAtspi::scrollToPoint const):

  • accessibility/atspi/AccessibilityObjectValueAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::currentValue const):
(WebCore::AccessibilityObjectAtspi::setCurrentValue):
(WebCore::AccessibilityObjectAtspi::minimumValue const):
(WebCore::AccessibilityObjectAtspi::maximumValue const):
(WebCore::AccessibilityObjectAtspi::minimumIncrement const):
(WebCore::AccessibilityObjectAtspi::valueChanged):

  • accessibility/atspi/AccessibilityRootAtspi.cpp:

(WebCore::AccessibilityRootAtspi::AccessibilityRootAtspi):
(WebCore::AccessibilityRootAtspi::registerObject):
(WebCore::AccessibilityRootAtspi::unregisterObject):
(WebCore::AccessibilityRootAtspi::registerTree):
(WebCore::AccessibilityRootAtspi::didUnregisterTree):
(WebCore::AccessibilityRootAtspi::setPath):
(WebCore::AccessibilityRootAtspi::embedded):
(WebCore::AccessibilityRootAtspi::applicationReference const):
(WebCore::AccessibilityRootAtspi::reference const):
(WebCore::AccessibilityRootAtspi::parentReference const):
(WebCore::AccessibilityRootAtspi::child const):
(WebCore::AccessibilityRootAtspi::childAdded):
(WebCore::AccessibilityRootAtspi::serialize const):
(WebCore::AccessibilityRootAtspi::frameRect const):

  • accessibility/atspi/AccessibilityRootAtspi.h:
  • accessibility/isolatedtree/atspi/AXIsolatedObjectAtspi.cpp: Removed.

(WebCore::AXIsolatedObject::initializePlatformProperties): Deleted.
(WebCore::AXIsolatedObject::attachPlatformWrapper): Deleted.
(WebCore::AXIsolatedObject::detachPlatformWrapper): Deleted.

Tools:

Update WTR to not use the ax thread.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp:

(WTR::findAccessibleObjectById):
(WTR::AccessibilityController::updateIsolatedTreeMode): Deleted.
(WTR::AccessibilityController::axRunLoop): Deleted.
(WTR::AccessibilityController::executeOnAXThreadAndWait): Deleted.
(WTR::AccessibilityController::executeOnAXThread): Deleted.
(WTR::AccessibilityController::executeOnMainThread): Deleted.

  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::AccessibilityUIElement::childrenCount):
(WTR::AccessibilityUIElement::elementAtPoint):
(WTR::AccessibilityUIElement::childAtIndex):
(WTR::elementForRelationAtIndex):
(WTR::AccessibilityUIElement::selectedChildAtIndex const):
(WTR::AccessibilityUIElement::selectedChildrenCount const):
(WTR::AccessibilityUIElement::parentElement):
(WTR::AccessibilityUIElement::attributesOfChildren):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::numberAttributeValue):
(WTR::AccessibilityUIElement::currentStateValue const):
(WTR::AccessibilityUIElement::rowHeaders const):
(WTR::AccessibilityUIElement::columnHeaders const):
(WTR::AccessibilityUIElement::boolAttributeValue):
(WTR::AccessibilityUIElement::isAttributeSettable):
(WTR::AccessibilityUIElement::isAttributeSupported):
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::roleDescription):
(WTR::AccessibilityUIElement::computedRoleString):
(WTR::AccessibilityUIElement::title):
(WTR::AccessibilityUIElement::description):
(WTR::AccessibilityUIElement::orientation const):
(WTR::AccessibilityUIElement::helpText const):
(WTR::AccessibilityUIElement::x):
(WTR::AccessibilityUIElement::y):
(WTR::AccessibilityUIElement::width):
(WTR::AccessibilityUIElement::height):
(WTR::AccessibilityUIElement::clickPointX):
(WTR::AccessibilityUIElement::clickPointY):
(WTR::AccessibilityUIElement::intValue const):
(WTR::AccessibilityUIElement::minValue):
(WTR::AccessibilityUIElement::maxValue):
(WTR::AccessibilityUIElement::valueDescription):
(WTR::AccessibilityUIElement::isEnabled):
(WTR::AccessibilityUIElement::isRequired const):
(WTR::AccessibilityUIElement::isFocused const):
(WTR::AccessibilityUIElement::isSelected const):
(WTR::AccessibilityUIElement::isSelectedOptionActive const):
(WTR::AccessibilityUIElement::isExpanded const):
(WTR::AccessibilityUIElement::isChecked const):
(WTR::AccessibilityUIElement::isIndeterminate const):
(WTR::AccessibilityUIElement::hierarchicalLevel const):
(WTR::AccessibilityUIElement::ariaIsGrabbed const):
(WTR::AccessibilityUIElement::ariaDropEffects const):
(WTR::AccessibilityUIElement::rangeForLine):
(WTR::AccessibilityUIElement::boundsForRange):
(WTR::AccessibilityUIElement::attributedStringForRange):
(WTR::AccessibilityUIElement::rowCount):
(WTR::AccessibilityUIElement::columnCount):
(WTR::AccessibilityUIElement::rowIndexRange):
(WTR::AccessibilityUIElement::columnIndexRange):
(WTR::AccessibilityUIElement::cellForColumnAndRow):
(WTR::AccessibilityUIElement::selectedTextRange):
(WTR::AccessibilityUIElement::increment):
(WTR::AccessibilityUIElement::decrement):
(WTR::AccessibilityUIElement::press):
(WTR::AccessibilityUIElement::setSelectedChildAtIndex const):
(WTR::AccessibilityUIElement::removeSelectionAtIndex const):
(WTR::AccessibilityUIElement::clearSelectedChildren const):
(WTR::AccessibilityUIElement::documentEncoding):
(WTR::AccessibilityUIElement::documentURI):
(WTR::AccessibilityUIElement::isFocusable const):
(WTR::AccessibilityUIElement::isSelectable const):
(WTR::AccessibilityUIElement::isMultiSelectable const):
(WTR::AccessibilityUIElement::isVisible const):
(WTR::AccessibilityUIElement::isOffScreen const):
(WTR::AccessibilityUIElement::isCollapsed const):
(WTR::AccessibilityUIElement::isSingleLine const):
(WTR::AccessibilityUIElement::isMultiLine const):
(WTR::AccessibilityUIElement::hasPopup const):
(WTR::AccessibilityUIElement::scrollToMakeVisible):
(WTR::AccessibilityUIElement::scrollToGlobalPoint):
(WTR::AccessibilityUIElement::isIsolatedObject const): Deleted.

12:04 AM Changeset in webkit [288088] by youenn@apple.com
  • 39 edits
    3 adds in trunk

Transmit network load metrics when service worker is using one of its network load to respond to FetchEvents
https://bugs.webkit.org/show_bug.cgi?id=235179

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/next-hop-protocol.https-expected.txt:

Test is progressing further but is failing as the test checks cached responses for which we do not store metrics.

Source/WebCore:

Allow FetchResponses to get their network metrics.
This requires all ThreadableLoaderClients to receive these metrics.
ServiceWorkerFetch is then able to get the metrics from its FetchResponse to send it to the service worker load client.

Test: http/wpt/service-workers/fetch-metrics-via-service-worker.https.html

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchLoader.cpp:
  • Modules/fetch/FetchLoader.h:
  • Modules/fetch/FetchLoaderClient.h:
  • Modules/fetch/FetchResponse.cpp:
  • Modules/fetch/FetchResponse.h:
  • fileapi/FileReaderLoader.cpp:
  • fileapi/FileReaderLoader.h:
  • inspector/agents/InspectorNetworkAgent.cpp:
  • loader/DocumentThreadableLoader.cpp:
  • loader/DocumentThreadableLoader.h:
  • loader/ThreadableLoaderClient.h:
  • loader/ThreadableLoaderClientWrapper.h:
  • loader/WorkerThreadableLoader.cpp:
  • loader/WorkerThreadableLoader.h:
  • page/EventSource.cpp:
  • page/EventSource.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:
  • workers/WorkerFontLoadRequest.cpp:
  • workers/WorkerFontLoadRequest.h:
  • workers/WorkerScriptLoader.cpp:
  • workers/WorkerScriptLoader.h:
  • workers/service/context/ServiceWorkerFetch.cpp:
  • workers/service/context/ServiceWorkerFetch.h:
  • xml/XMLHttpRequest.cpp:
  • xml/XMLHttpRequest.h:

Source/WebKit:

Pipe network metrics down to WebProcess.

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

LayoutTests:

  • http/wpt/service-workers/fetch-metrics-via-service-worker.https-expected.txt: Added.
  • http/wpt/service-workers/fetch-metrics-via-service-worker.https.html: Added.
  • http/wpt/service-workers/fetch-metrics-worker.js: Added.

Jan 16, 2022:

10:44 PM Changeset in webkit [288087] by youenn@apple.com
  • 32 edits in trunk

Enforce focus check for getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=235026

Source/WebCore:

Reviewed by Eric Carlson.

Add infrastructure to register a callback so that a task is executed when the document is visible.
Use this to delay getUserMedia requests until document is visible.
The spec currently defines that we should wait for the current document to have focus but this is about to be changed and is not aligned with other browser implementations.

The patch also moves some getUserMedia checks earlier so as to respect order provided by the specs.
Add a check to validate getDisplayMedia is called on a visible document as the user gesture is now time based.

Covered by API test.

  • Modules/mediastream/MediaDevices.cpp:
  • Modules/mediastream/UserMediaRequest.cpp:
  • Modules/mediastream/UserMediaRequest.h:
  • dom/Document.cpp:
  • dom/Document.h:
  • editing/FrameSelection.cpp:

Source/WebKit:

Reviewed by Eric Carlson.

Add setters/getters for the getUserMedia focus settings.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetGetUserMediaRequiresFocus):
(WKPreferencesGetGetUserMediaRequiresFocus):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _getUserMediaRequiresFocus]):
(-[WKPreferences _setGetUserMediaRequiresFocus:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/glib/WebKitSettings.cpp:

(webkitSettingsSetGetUserMediaRequiresFocus):

  • UIProcess/API/glib/WebKitSettingsPrivate.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseMap): Always add the WindowIsActive flag under xvfb.
(webkitWebViewBaseIsFocused): Always consider the view focused when WindowIsActive flag is present under xvfb.

Source/WTF:

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Reviewed by Eric Carlson.

Disable focus flag for testing to not require to focus the window.

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::initializeMediaCaptureConfiguration):
(TestWebKitAPI::doCaptureMuteTest):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(TestWebKitAPI::initializeMediaCaptureConfiguration):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(TestWebKitAPI::initializeMediaCaptureConfiguration):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/MediaStreamTrackDetached.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/UserMedia.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMedia.mm:

(TestWebKitAPI::GetDisplayMediaTest::SetUp):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm:

(MediaCaptureDisabledTest::SetUp):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm:

(MediaCaptureSimulateFailedSandbox::SetUp):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewUserMediaEnumerateDevicesPermissionCheck):
(testWebViewUserMediaPermissionRequests):
(testWebViewAudioOnlyUserMediaPermissionRequests):

LayoutTests:

Reviewed by Eric Carlson.

  • fast/mediastream/MediaDevices-getUserMedia-expected.txt:
10:41 PM Changeset in webkit [288086] by youenn@apple.com
  • 5 edits in trunk

Queue a task to fire MediaStreamTrack ended event
https://bugs.webkit.org/show_bug.cgi?id=235227

Reviewed by Eric Carlson.

Source/WebCore:

Adding a specific readyState slot to match the spec and queue a task to stop the track instead of firing the event synchronously.
Covered by updated test.

  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/MediaStreamTrack.h:

LayoutTests:

  • fast/mediastream/media-stream-track-source-failure.html:
9:18 PM Changeset in webkit [288085] by Lauro Moura
  • 25 edits in trunk/Source

Fix C++20 build warnings with GCC
https://bugs.webkit.org/show_bug.cgi?id=235023

Reviewed by Alex Christensen.

Mostly related to deprecating operations between enums of different
types and not capturing this by default in lambdas.

Source/JavaScriptCore:

  • assembler/X86Assembler.h: Casting enums to same type.

(JSC::X86Assembler::cmovcc):
(JSC::X86Assembler::jccRel32):
(JSC::X86Assembler::setccOpcode):

  • b3/B3CheckSpecial.cpp: Capture this in lambda.

(JSC::B3::CheckSpecial::generate):

  • b3/B3Type.cpp: Replace is_pod_v is is_standard_layout_v and

is_trivial_v

  • bytecode/AccessCase.cpp: Capture this in lambda.

(JSC::AccessCase::generateImpl):

  • bytecode/CallLinkInfo.cpp: Ditto.

(JSC::OptimizingCallLinkInfo::emitDirectFastPath):
(JSC::OptimizingCallLinkInfo::emitDirectTailCallFastPath):
(JSC::OptimizingCallLinkInfo::initializeDirectCall):

  • dfg/DFGSpeculativeJIT.cpp: Ditto.
  • dfg/DFGSpeculativeJIT64.cpp: Ditto.

(JSC::DFG::SpeculativeJIT::compile):

  • jit/ICStats.h: Cast enums to same type.

(JSC::ICEvent::hash const):

  • jit/JITArithmetic.cpp: Capture this in lambda.

(JSC::JIT::emitMathICSlow):

  • jit/JITSizeStatistics.cpp: Ditto.

(JSC::JITSizeStatistics::markEnd):

  • runtime/VM.cpp: Ditto.

(JSC::VM::deleteAllLinkedCode):
(JSC::VM::deleteAllCode):
(JSC::VM::shrinkFootprintWhenIdle):

  • wasm/WasmAirIRGenerator.cpp: Ditto.

(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::addTableGet):
(JSC::Wasm::AirIRGenerator::addTableSet):
(JSC::Wasm::AirIRGenerator::addTableInit):
(JSC::Wasm::AirIRGenerator::addTableFill):
(JSC::Wasm::AirIRGenerator::addTableCopy):
(JSC::Wasm::AirIRGenerator::addMemoryFill):
(JSC::Wasm::AirIRGenerator::addMemoryCopy):
(JSC::Wasm::AirIRGenerator::addMemoryInit):
(JSC::Wasm::AirIRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::AirIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::AirIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::AirIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::AirIRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::AirIRGenerator::atomicWait):
(JSC::Wasm::AirIRGenerator::atomicNotify):
(JSC::Wasm::AirIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::AirIRGenerator::addCallIndirect):
(JSC::Wasm::AirIRGenerator::addCallRef):
(JSC::Wasm::AirIRGenerator::emitChecksForModOrDiv):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncSF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncSF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncUF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncUF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncSF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncSF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncUF32>):

  • wasm/WasmB3IRGenerator.cpp: Ditto.

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addTableGet):
(JSC::Wasm::B3IRGenerator::addTableSet):
(JSC::Wasm::B3IRGenerator::addTableInit):
(JSC::Wasm::B3IRGenerator::addTableFill):
(JSC::Wasm::B3IRGenerator::addTableCopy):
(JSC::Wasm::B3IRGenerator::emitIndirectCall):
(JSC::Wasm::B3IRGenerator::addMemoryFill):
(JSC::Wasm::B3IRGenerator::addMemoryInit):
(JSC::Wasm::B3IRGenerator::addMemoryCopy):
(JSC::Wasm::B3IRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::B3IRGenerator::atomicWait):
(JSC::Wasm::B3IRGenerator::atomicNotify):
(JSC::Wasm::B3IRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::B3IRGenerator::addCallRef):
(JSC::Wasm::B3IRGenerator::emitChecksForModOrDiv):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF32>):

  • yarr/YarrJIT.cpp: Ditto.

Source/WebCore:

  • dom/ViewportArguments.h: Replace enum with constexpr ints as they're

compared to doubles in various places through ViewportArguments.cpp.

  • dom/WheelEvent.h: Replace single-valued enum with constexpr

variable.

  • platform/animation/Animation.h: Ditto.
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

Ditto.
(WebCore::CoordinatedGraphicsLayer::shouldDirectlyCompositeImage const):

  • rendering/style/RenderStyleConstants.h: Merge two enums that are

used only in the context of being combined to form a third enum.

Source/WebKit:

  • WebProcess/Inspector/WebInspector.cpp: Capture this in lambdas.

(WebKit::WebInspector::showConsole):
(WebKit::WebInspector::showResources):
(WebKit::WebInspector::showMainResourceForFrame):
(WebKit::WebInspector::startPageProfiling):
(WebKit::WebInspector::stopPageProfiling):
(WebKit::WebInspector::startElementSelection):
(WebKit::WebInspector::stopElementSelection):

Source/WTF:

  • wtf/AutomaticThread.cpp: Capture this in lambda.

(WTF::AutomaticThread::start):

7:56 PM Changeset in webkit [288084] by bshafiei@apple.com
  • 1 copy in tags/Safari-612.4.9.0.3

Tag Safari-612.4.9.0.3.

7:54 PM Changeset in webkit [288083] by bshafiei@apple.com
  • 1 copy in tags/Safari-612.4.9.1.5

Tag Safari-612.4.9.1.5.

7:49 PM Changeset in webkit [288082] by bshafiei@apple.com
  • 4 edits
    4 adds in branches/safari-612.4.9.0-branch

Cherry-pick r288078. rdar://problem/85801310

database names leak cross-origin within the same browser session
https://bugs.webkit.org/show_bug.cgi?id=233548

Reviewed by Geoff Garen.

Source/WebCore:

Test: http/tests/security/getdatabases-crossorigin.html

  • Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions): When iterating the set of all open UniqueIDBDatabases, only add them to the results list if their origins match.
  • page/ClientOrigin.h: (WebCore::ClientOrigin::operator!= const):

LayoutTests:

  • http/tests/security/getdatabases-crossorigin-expected.txt: Added.
  • http/tests/security/getdatabases-crossorigin.html: Added.
  • http/tests/security/resources/getdatabases-otherframe.html: Added.
  • http/tests/security/resources/getdatabases-otherwindow.html: Added.

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

7:46 PM Changeset in webkit [288081] by bshafiei@apple.com
  • 4 edits
    4 adds in branches/safari-612.4.9.1-branch

Cherry-pick r288078. rdar://problem/85801310

database names leak cross-origin within the same browser session
https://bugs.webkit.org/show_bug.cgi?id=233548

Reviewed by Geoff Garen.

Source/WebCore:

Test: http/tests/security/getdatabases-crossorigin.html

  • Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions): When iterating the set of all open UniqueIDBDatabases, only add them to the results list if their origins match.
  • page/ClientOrigin.h: (WebCore::ClientOrigin::operator!= const):

LayoutTests:

  • http/tests/security/getdatabases-crossorigin-expected.txt: Added.
  • http/tests/security/getdatabases-crossorigin.html: Added.
  • http/tests/security/resources/getdatabases-otherframe.html: Added.
  • http/tests/security/resources/getdatabases-otherwindow.html: Added.

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

7:41 PM Changeset in webkit [288080] by bshafiei@apple.com
  • 8 edits in branches/safari-612.4.9.1-branch/Source

Versioning.

WebKit-7612.4.9.1.5

7:36 PM Changeset in webkit [288079] by bshafiei@apple.com
  • 8 edits in branches/safari-612.4.9.0-branch/Source

Versioning.

WebKit-7612.4.9.0.3

7:35 PM Changeset in webkit [288078] by beidson@apple.com
  • 4 edits
    4 adds in trunk

database names leak cross-origin within the same browser session
https://bugs.webkit.org/show_bug.cgi?id=233548

Reviewed by Geoff Garen.

Source/WebCore:

Test: http/tests/security/getdatabases-crossorigin.html

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions): When iterating the set of all open

UniqueIDBDatabases, only add them to the results list if their origins match.

  • page/ClientOrigin.h:

(WebCore::ClientOrigin::operator!= const):

LayoutTests:

  • http/tests/security/getdatabases-crossorigin-expected.txt: Added.
  • http/tests/security/getdatabases-crossorigin.html: Added.
  • http/tests/security/resources/getdatabases-otherframe.html: Added.
  • http/tests/security/resources/getdatabases-otherwindow.html: Added.
5:04 PM Changeset in webkit [288077] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Use character names instead of codepoint values in overrideControlCharacters()
https://bugs.webkit.org/show_bug.cgi?id=235283

Reviewed by Cameron McCormack.

It's simply easier to read.

No new tests because there is no behavior change.

  • platform/graphics/Font.cpp:

(WebCore::overrideControlCharacters):

2:10 PM Changeset in webkit [288076] by Cameron McCormack
  • 9 edits in trunk/Source

Ensure in flight layer transactions don't accumulate further canvas drawing
https://bugs.webkit.org/show_bug.cgi?id=231163
<rdar://problem/83863292>

Reviewed by Simon Fraser.

Source/WebCore:

When UI side compositing is enabled (as it is on iOS), we build a
layer tree transaction in RemoteLayerTreeDrawingArea::updateRendering to
send off to the UI process. At a high level, updateRendering does this:

  1. Run any requestAnimationFrame callbacks
  2. Iterate over the composited layers to draw their contents into the layer backing stores
  3. Dispatch a task to a different thread to flush the contexts of the layer backing stores and then send the transaction to the UI process

Step 3 is done off a separate task as an optimization, to get the
drawing work queued up by step 2 happening in parallel to any work the
page may day once updateRendering is finished. This can be a problem
when:

  • GPU process canvas rendering is enabled (but DOM rendering is disabled)
  • we have accelerated ImageBuffers for both layer backing stores and canvas backing stores
  • the page does canvas drawing between steps 2 and 3, which affects the contents of a canvas backing store IOSurface that was drawn into a layer backing store IOSurface while building the transaction

The way we draw the canvas contents into the layer is by creating a
CGImage from the canvas backing store ImageBuffer's IOSurface.
Normally, if we draw into an IOSurface that has been wrapped by a
CGImage, this will cause the CGImage to obtain a unique copy of the
IOSurface's pixels, rather than continue holding on to the IOSurface
itself.

When the drawing of this CGImage on to the layer backing store
IOSurface happens, the "draw image" command is queued up to be
processed later. It's only when the flush happens in step 3 above that
the drawing occurs. This means that the CGImage wrapping the IOSurface
exists until that flush.

But while the CGImage does exist, it's in the Web process, and the
canvas drawing on to the same IOSurface happens in the GPU process.
Since QuartzCore doesn't know of its existence, it doesn't cause the
copy-on-write to occur. The effect of this is that subsequent page
drawing on to the canvas can make its way into the layer transaction
unexpectedly.

This patch induces the copy-on-write in the Web process when needed,
by tracking whether a canvas has been drawn into a layer backing
store and the layer transaction flush hasn't happened yet. Just before
we do any more drawing on the canvas, if we are in this state, we
perform a no-op drawing command on the IOSurface, then flush, to make
the CGImage copy the IOSurface data out.

  • html/HTMLCanvasElement.cpp:

(WebCore::imageDrawingRequiresGuardAgainstUseByPendingLayerTransaction):
We only need to induce the CGImage copy-on-write behavior if both the
layer and canvas backing stores are accelerated, the canvas
ImageBuffer is remote, and the layer ImageBuffer is not remote.
(WebCore::HTMLCanvasElement::paint):
(WebCore::HTMLCanvasElement::drawingContext const):
Use drawingContext as a convenient single place to check whether we
are performing the first drawing command before the layer tree
transaction flush has happened.

  • html/HTMLCanvasElement.h:
  • page/Page.h:

(WebCore::Page::setIsAwaitingLayerTreeTransactionFlush):
(WebCore::Page::isAwaitingLayerTreeTransactionFlush const):

  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::ensureNativeImagesHaveCopiedBackingStore):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::ensureNativeImagesHaveCopiedBackingStore):
The flush is needed since the CGImage wrapping the IOSurface will only
copy the pixel data out once the no-op drawing command is processed.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::willCommitLayerTree):
(WebKit::WebPage::didFlushLayerTreeAtTime):
Inform the WebCore::Page about the state of the layer tree transaction
building.

  • WebProcess/WebPage/WebPage.h:
1:44 PM Changeset in webkit [288075] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WTF

[WTF] Add TollFreeBridging.h to Xcode project

Unreviewed follow-up for r284038:

Switch WTF::bridge_cast to use type traits
<https://webkit.org/b/231467>
<rdar://problem/84050614>

  • WTF.xcodeproj/project.pbxproj:
  • Add TollFreeBridging.h to the project.
1:34 PM Changeset in webkit [288074] by ddkilzer@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (r286603): Leak of three NSMutableDictionary objects each time rx::DisplayMtl::getMetalDeviceMatchingAttribute() is called
<https://webkit.org/b/235278>
<rdar://problem/87653812>

Reviewed by Darin Adler.

  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::getMetalDeviceMatchingAttribute):

  • Make use of mtl::adoptObjCObj<> so these objects are relaseed when the method returns.
12:51 PM Changeset in webkit [288073] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

After r288052 added editing/execCommand/paste-as-quotation-disconnected-paragraph-ancestor-crash.html,
WinCairo WK1 tests subsequent to the test case had been failing.
It looked like DRT output the result of the privous test case.

  • platform/wincairo-wk1/TestExpectations: Skip the test case as well as AppleWin does.
1:08 AM Changeset in webkit [288072] by ChangSeok Oh
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] local build is broken
https://bugs.webkit.org/show_bug.cgi?id=235265

Reviewed by Philippe Normand.

The local build of Flatpak SDK is broken due to a missing reference to the freedesktop sdk.
This change updates the reference.

  • elements/freedesktop-sdk.bst:

Jan 15, 2022:

10:22 PM Changeset in webkit [288071] by weinig@apple.com
  • 18 edits in trunk

CSS Gradients: interpolation mode should default to OKLab if any non-legacy color syntax colors are used in the stops
https://bugs.webkit.org/show_bug.cgi?id=235071

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test to also include non-legacy color syntax stops and update results
to match new expected behavior.

  • web-platform-tests/css/css-images/parsing/gradient-interpolation-method-computed-expected.txt:
  • web-platform-tests/css/css-images/parsing/gradient-interpolation-method-computed.html:
  • web-platform-tests/css/css-images/parsing/gradient-interpolation-method-valid-expected.txt:
  • web-platform-tests/css/css-images/parsing/gradient-interpolation-method-valid.html:

Source/WebCore:

Change the default interpolation mode for CSS gradients that have any color stops specified using non-legacy
color syntax (e.g. color(...), lab(...), oklch(...), etc.) to OKLab from sRGB.

This is the current behavior specified (kind of, it could be clearer) by the spec, but I have concerns about
whether it is a good idea for the behavior to be dependent on what syntax style you use. This has been raised
with the editors at https://github.com/w3c/csswg-drafts/issues/6914.

To implement, we now compute the default color interpolation method from the parsed stop list and pass the
result to CSSGradientValue along with the stops and other data. The CSSGradientValue needs this information
avoid computing on serialization, since we need to conditionally exclude either "in srgb" or "in oklab"
depending on which one is computed.

To continue passing the interpolation color method to the CSSGradientValue constructor so it can be immutable,
we now need to consume all the color stops before we can create the CSSGradientValue. This also allows us to
pass the stops to the constructor and make them immutable as well.

  • css/CSSGradientValue.cpp:

(WebCore::CSSGradientValue::equals const):
(WebCore::appendColorInterpolationMethod):
(WebCore::CSSLinearGradientValue::customCSSText const):
(WebCore::CSSRadialGradientValue::customCSSText const):
(WebCore::CSSConicGradientValue::customCSSText const):

  • css/CSSGradientValue.h:

(WebCore::CSSGradientValue::setSecondY):
(WebCore::CSSGradientValue::CSSGradientValue):
(WebCore::CSSGradientValue::defaultColorInterpolationMethod const):
(WebCore::CSSGradientValue::addStop): Deleted.
(WebCore::CSSGradientValue::doneAddingStops): Deleted.
(WebCore::CSSGradientValue::hasAtLeastTwoStops const): Deleted.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
(WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):
(WebCore::CSSPropertyParserHelpers::consumePrefixedRadialGradient):
(WebCore::CSSPropertyParserHelpers::computeGradientColorInterpolationMethod):
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumePrefixedLinearGradient):
(WebCore::CSSPropertyParserHelpers::consumeLinearGradient):
(WebCore::CSSPropertyParserHelpers::consumeConicGradient):

  • html/HTMLInputElement.cpp:

(WebCore::autoFillStrongPasswordMaskImage):

Source/WebKitLegacy/win:

Add support for tests enabling the CSSGradientInterpolationColorSpacesEnabled preference.

  • WebPreferences.cpp:

(WebPreferences::cssGradientInterpolationColorSpacesEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):
Add default for Windows WebKitLegacy testing which still requires it.

LayoutTests:

Update test to use an explicit interpolation method when using non-legacy colors to maintain srgb interpolation.

  • css3/color/gradients.html:
8:43 PM Changeset in webkit [288070] by Alan Bujtas
  • 29 edits
    3 copies
    2 deletes in trunk

[LFC][IFC] Enable content with complex font codepath for IFC
https://bugs.webkit.org/show_bug.cgi?id=235266

Reviewed by Antti Koivisto.

Source/WebCore:

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

LayoutTests:

  • TestExpectations:
  • fast/text/simple-line-layout-simple-text-but-complex-font-path-expected.html: Removed.
  • fast/text/simple-line-layout-simple-text-but-complex-font-path.html: Removed.
  • platform/mac-bigsur/fast/dom/52776-expected.txt:
  • platform/mac-bigsur/fast/text/international/bidi-neutral-run-expected.txt:
  • platform/mac-catalina/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt:
  • platform/mac/fast/dom/52776-expected.txt:
  • platform/mac/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/mac/fast/text/atsui-spacing-features-expected.txt:
  • platform/mac/fast/text/combining-enclosing-keycap-expected.txt:
  • platform/mac/fast/text/international/bidi-control-chars-treated-as-ZWS-expected.txt:
  • platform/mac/fast/text/international/bidi-linebreak-001-expected.txt:
  • platform/mac/fast/text/international/bidi-linebreak-002-expected.txt:
  • platform/mac/fast/text/international/bidi-linebreak-003-expected.txt:
  • platform/mac/fast/text/international/bidi-neutral-run-expected.txt:
  • platform/mac/fast/text/wide-zero-width-space-expected.txt:
  • platform/mac/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt:
  • platform/win/TestExpectations:
5:33 PM Changeset in webkit [288069] by Chris Dumez
  • 65 edits in trunk/Source

Introduce dynamicDowncast<>() for convenience
https://bugs.webkit.org/show_bug.cgi?id=235259

Reviewed by Darin Adler.

Source/WebCore:

Start adopting dynamicDowncast<>().

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::willChangeRenderer):
(WebCore::WebAnimation::timingDidChange):
(WebCore::WebAnimation::invalidateEffect):
(WebCore::WebAnimation::finishNotificationSteps):
(WebCore::WebAnimation::resolve):
(WebCore::WebAnimation::persist):
(WebCore::WebAnimation::commitStyles):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::isCloneInShadowTreeOfSVGUseElement):
(WebCore::JSLazyEventListener::initializeJSFunction const):

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::fontRangesForFamily):

  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::insertRule):

  • dom/Attr.cpp:

(WebCore::Attr::style):

  • dom/BroadcastChannel.cpp:

(WebCore::BroadcastChannel::MainThreadBridge::ensureOnMainThread):
(WebCore::BroadcastChannel::isEligibleForMessaging const):

  • dom/CharacterData.cpp:

(WebCore::CharacterData::parserAppendData):
(WebCore::CharacterData::setDataAndUpdate):

  • dom/CharacterData.h:

(WebCore::Node::length const):

  • dom/ComposedTreeAncestorIterator.h:

(WebCore::ComposedTreeAncestorIterator::traverseParent):
(WebCore::ComposedTreeAncestorAdapter::begin):

  • dom/ComposedTreeIterator.h:

(WebCore::firstChildInComposedTreeIgnoringUserAgentShadow):

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::removeNodeWithScriptAssertion):
(WebCore::ContainerNode::removeSelfOrChildNodesForInsertion):
(WebCore::destroyRenderTreeIfNeeded):
(WebCore::containsIncludingHostElements):
(WebCore::checkAcceptChild):

  • dom/ContainerNode.h:

(WebCore::Node::countChildNodes const):
(WebCore::Node::traverseToChildAt const):
(WebCore::Node::firstChild const):
(WebCore::Node::lastChild const):

  • dom/Document.cpp:

(WebCore::widgetForElement):
(WebCore::Document::buildAccessKeyCache):
(WebCore::Document::adjustFocusedNodeOnNodeRemoval):

  • dom/Element.cpp:

(WebCore::Element::insertedIntoAncestor):
(WebCore::Element::removedFromAncestor):

  • dom/ElementInlines.h:

(WebCore::Node::parentElement const):

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent):

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::toElement const):
(WebCore::MouseEvent::fromElement const):

  • dom/Node.cpp:

(WebCore::Node::renderBox const):
(WebCore::Node::renderBoxModelObject const):
(WebCore::Node::containingShadowRoot const):
(WebCore::Node::compareDocumentPosition):

  • dom/Position.cpp:

(WebCore::Position::containerText const):

  • dom/TextNodeTraversal.cpp:

(WebCore::TextNodeTraversal::contentsAsString):

  • dom/TreeScope.cpp:

(WebCore::TreeScope::elementsFromPoint):

  • dom/TypedElementDescendantIterator.h:

(WebCore::ElementDescendantRange<ElementType>::from const):
(WebCore::InclusiveElementDescendantRange<ElementType>::from const):

  • dom/VisitedLinkState.cpp:

(WebCore::linkHashForElement):

  • dom/messageports/MessagePortChannelProvider.cpp:

(WebCore::MessagePortChannelProvider::fromContext):

  • editing/Editing.cpp:

(WebCore::enclosingBlock):

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::ownerSelectElement const):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::renderEmbeddedObject const):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::updateAutoscrollRenderer):

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::fired):

  • page/DragController.cpp:

(WebCore::asFileInput):
(WebCore::DragController::operationForLoad):

  • platform/DragImage.cpp:

(WebCore::ScopedNodeDragEnabler::ScopedNodeDragEnabler):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):

  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::computeLogicalBoxHeights):
(WebCore::placeChildInlineBoxesInBlockDirection):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::marginValuesForChild const):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::findAutoscrollable):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::imageOrientation const):

  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::uploadButton const):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::updateInnerContentRect):
(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::mayAffectLayout const):

  • rendering/RenderLayer.h:

(WebCore::RenderLayer::renderBox const):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::updateValueNow const):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::offsetParent const):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::table const):

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeDebugInfo):

  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/SelectionRangeData.cpp:

(WebCore::containingBlockBelowView):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::Parent::Parent):

  • style/ChildChangeInvalidation.h:

(WebCore::Style::ChildChangeInvalidation::ChildChangeInvalidation):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::findViewAnchor const):
(WebCore::SVGSVGElement::findRootAnchor const):

  • testing/Internals.cpp:

(WebCore::bitmapImageFromImageElement):
(WebCore::pdfDocumentImageFromImageElement):

Source/WebKit:

Start adopting dynamicDowncast<>().

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::didEnterFullScreen):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::paymentCoordinator):

Source/WebKitLegacy/mac:

Start adopting dynamicDowncast<>().

  • DOM/DOMUIKitExtensions.mm:

(-[DOMHTMLElement structuralComplexityContribution]):

  • WebView/WebHTMLRepresentation.mm:

(inputElementFromDOMElement):

Source/WTF:

Introduce dynamicDowncast<>() for convenience. It can result in more concise code for the common pattern
where we call is<T>(x) and then downcast<T>(x).

  • wtf/TypeCasts.h:

(WTF::dynamicDowncast):

3:10 PM Changeset in webkit [288068] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

Only use diff --binary switch on Windows
<https://webkit.org/b/235268>
<rdar://problem/87490487>

Reviewed by Alexey Proskuryakov.

  • Scripts/VCSUtils.pm:

(mergeChangeLogs):

  • Only pass --binary switch on Windows.
2:29 PM Changeset in webkit [288067] by Darin Adler
  • 39 edits in trunk/Source/WebCore

First step to fix hacked isReplaced: Rename isReplaced functions to isReplacedOrInlineBlock
https://bugs.webkit.org/show_bug.cgi?id=235258

Reviewed by Alan Bujtas.

The isReplaced function returns true for things that are not CSS replaced
elements. That's confusing and not good. We want to straighten this out.
In this first step, we rename the isReplaced and setReplaced functions
to isReplacedOrInlineBlock and setReplacedOrInlineBlock. There are still
functions with out arguments named "isReplaced", which we can deal with
later. Other later clean-up and clarification could one day change what
bits we store in RenderStyle and possibly even remove this function entirely.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::nextContinuation):

  • accessibility/atk/WebKitAccessible.cpp:

(interfaceMaskFromObject):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::isNonReplacedInline):

  • dom/Node.cpp:

(WebCore::Node::renderRect):

  • dom/Position.cpp:

(WebCore::endsOfNodeAreVisuallyDistinctPositions):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):

  • page/TextIndicator.cpp:

(WebCore::hasNonInlineOrReplacedElements):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::renderRectForPoint const):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForBox):

  • rendering/LegacyInlineBox.cpp:

(WebCore::LegacyInlineBox::adjustPosition):
(WebCore::LegacyInlineBox::canAccommodateEllipsis const):

  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::addToLine):
(WebCore::LegacyInlineFlowBox::computeOverAnnotationAdjustment const):
(WebCore::LegacyInlineFlowBox::computeUnderAnnotationAdjustment const):

  • rendering/LegacyInlineIterator.h:

(WebCore::isIteratorTarget):

  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForLine):
(WebCore::LegacyLineLayout::layoutLineBoxes):

  • rendering/LegacyRootInlineBox.cpp:

(WebCore::LegacyRootInlineBox::ascentAndDescentForBox const):
(WebCore::LegacyRootInlineBox::verticalPositionForBox):
(WebCore::LegacyRootInlineBox::includeLeadingForBox const):
(WebCore::LegacyRootInlineBox::includeFontForBox const):
(WebCore::LegacyRootInlineBox::includeGlyphsForBox const):
(WebCore::LegacyRootInlineBox::includeInitialLetterForBox const):
(WebCore::LegacyRootInlineBox::includeMarginForBox const):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::removePositionedObjectsIfNeeded):
(WebCore::RenderBlock::styleWillChange):
(WebCore::RenderBlock::simplifiedNormalFlowLayout):
(WebCore::RenderBlock::paintChild):
(WebCore::RenderBlock::positionForPoint):
(WebCore::RenderBlock::lineHeight const):
(WebCore::RenderBlock::baselinePosition const):
(WebCore::RenderBlock::firstLineBlock const):
(WebCore::findFirstLetterBlock):
(WebCore::RenderBlock::getFirstLetter):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::InlineMinMaxIterator::next):
(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::offsetFromContainer const):
(WebCore::RenderBox::positionLineBox):
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::shouldTreatChildAsReplacedInTableCells const):
(WebCore::RenderBox::computePositionedLogicalWidth const):
(WebCore::RenderBox::computePositionedLogicalHeight const):
(WebCore::RenderBox::avoidsFloats const):
(WebCore::RenderBox::isUnsplittableForPagination const):
(WebCore::RenderBox::lineHeight const):
(WebCore::RenderBox::baselinePosition const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::shouldComputeSizeAsReplaced const):

  • rendering/RenderBoxModelObject.h:

(WebCore::RenderBoxModelObject::canHaveBoxInfoInFragment const):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
(WebCore::RenderDeprecatedFlexibleBox::clearLineClamp):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getLeadingCorner const):
(WebCore::RenderElement::getTrailingCorner const):
(WebCore::RenderElement::absoluteAnchorRect const):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::RenderFullScreen):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::RenderListMarker):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::containingBlockForPositionType):
(WebCore::RenderObject::caretMaxOffset const):

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasIntrinsicAspectRatio const):
(WebCore::RenderObject::isReplacedOrInlineBlock const):
(WebCore::RenderObject::setReplacedOrInlineBlock):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::isAtomicInlineLevelBox const):
(WebCore::RenderObject::isReplaced const): Deleted.
(WebCore::RenderObject::setReplaced): Deleted.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::RenderReplaced):

  • rendering/RenderReplica.cpp:

(WebCore::RenderReplica::RenderReplica):

  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::RenderRubyRun):

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::initializeForCurrentObject):
(WebCore::BreakingContext::canBreakAtThisPosition):
(WebCore::BreakingContext::commitAndUpdateLineBreakIfNeeded):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::nextLineBreak):

  • rendering/updating/RenderTreeBuilderInline.cpp:

(WebCore::nextContinuation):
Renamed in all these places. Also added one FIXME for something
Alan pointed out we'd like to do in the future.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::removeOnlyThisLayer): Removed unhelpful use
of RenderLayer::reflection function just to find out whether the
RenderLayer::reflectionLayer function will return null or not.

  • rendering/RenderLayer.h: Removed unneeded RenderLayer::reflection.
  • rendering/RenderLayerCompositor.cpp: Removed an unneeded include

of RenderReplica.h.

1:35 PM Changeset in webkit [288066] by ysuzuki@apple.com
  • 4 edits in trunk

[JSC] Fix Date functions' argument coercion
https://bugs.webkit.org/show_bug.cgi?id=235271

Reviewed by Alexey Shvayka.

JSTests:

  • test262/expectations.yaml:

Source/JavaScriptCore:

Even if the input Date is NaN or the result looks like NaN, we need to coerce passed
arguments to Number[1] since it has observable side effect.

[1]: https://github.com/tc39/ecma262/pull/2136

  • runtime/DatePrototype.cpp:

(JSC::applyToNumbersToTrashedArguments):
(JSC::fillStructuresUsingTimeArgs):
(JSC::fillStructuresUsingDateArgs):
(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):

1:32 PM Changeset in webkit [288065] by ysuzuki@apple.com
  • 11 edits
    5 deletes in trunk

[JSC] Fix misc issues in WebAssembly.Exception
https://bugs.webkit.org/show_bug.cgi?id=235261

Reviewed by Alexey Shvayka.

JSTests:

  • wasm/stress/create-tag-from.js:
  • wasm/v8/exceptions-api.js:

(TestGetArg):

LayoutTests/imported/w3c:

Remove web-platform-tests/wasm/jsapi/exception/type.tentative.any.js test since
this behavior is not defined in wasm exception-handling and/or wasm js-types spec.
Probably this test was confused with WebAssembly.Tag (and that test is in wasm/jsapi/tag/).

Also change RangeError to TypeError according to the spec[1].

[1]: https://webassembly.github.io/exception-handling/js-api/index.html#dom-exception-getarg

  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js:

(test):

  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any-expected.txt: Removed.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.html: Removed.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.js: Removed.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.worker-expected.txt: Removed.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.worker.html: Removed.

Source/JavaScriptCore:

  1. Add @toStringTag to WebAssembly.Exception.prototype.
  2. Add argument count check for WebAssembly.Exception methods (since it is specified in WebIDL and these methods do not have optional parameters).
  • wasm/js/WebAssemblyExceptionPrototype.cpp:

(JSC::WebAssemblyExceptionPrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

1:17 PM Changeset in webkit [288064] by ysuzuki@apple.com
  • 9 edits in trunk

[JSC] Fix misc WebAssembly.Table issues
https://bugs.webkit.org/show_bug.cgi?id=235262

Reviewed by Alexey Shvayka.

LayoutTests/imported/w3c:

Fix length of WebAssembly.Table.set from 2 to 1.
According to the spec[1], it should be 1 since the second argument is an optional.

Also fix stray argument test. Previously, it was stray argument. But after the update
of the wasm spec, the second argument of Table constructor can be used for initial value.
So, WebAssembly.Table "anyfunc" with {} initial value throws an error since it is not
a function. This fixes a test, passing null for the second argument, and adding third
stray argument for the stray argument test.

[1]: https://webassembly.github.io/spec/js-api/index.html#tables

  • web-platform-tests/wasm/jsapi/idlharness.any-expected.txt:
  • web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/interface.any.js:
  • web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/constructor.any.js:

(test):

  • web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt:

Source/JavaScriptCore:

  • wasm/js/WebAssemblyTablePrototype.cpp:
12:32 PM Changeset in webkit [288063] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Bug 234910 - jsc_fuz/wktr: crash with exotic settings
https://bugs.webkit.org/show_bug.cgi?id=234910

Patch by Frédéric Wang <fwang@igalia.com> on 2022-01-15
Reviewed by Michael Saboff.

ASAN release build of WebKitTestRunner and DumpRenderTree may crash when loading the file
with content "<script>'a'+Math.floor()+'a';</script>" when the ASAN option
detect_stack_use_after_return=1 is set and when the JSC option slowPathAllocsBetweenGCs takes
to specific values. This is because the 'TestRendered' string of WTR::sendTestRenderedEvent
can be garbage collected. This patch fixes that issue by protecting that string. The fix has
been verified for all slowPathAllocsBetweenGCs values from 1 to 100.

  • TestRunnerShared/ReftestFunctions.cpp:

(WTR::sendTestRenderedEvent): Protect "TestRendered" JSString from garbage collection until
the event is dispatched.

12:24 PM Changeset in webkit [288062] by ysuzuki@apple.com
  • 92 edits
    4 copies
    134 adds in trunk/JSTests

[JSC] Upgrade test262
https://bugs.webkit.org/show_bug.cgi?id=235263

Reviewed by Alexey Shvayka.

Update to the latest one.

  • test262/config.yaml:
  • test262/expectations.yaml:
  • test262/test262-Revision.txt:
12:10 PM Changeset in webkit [288061] by Alan Bujtas
  • 6 edits in trunk

web-platform-tests/html/rendering/dimension-attributes.html is failing when table width is set to 0px
https://bugs.webkit.org/show_bug.cgi?id=235267

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/html/rendering/dimension-attributes-expected.txt:

Source/WebCore:

This patch is based on the following Blink commit:

https://chromium-review.googlesource.com/c/chromium/src/+/2458587

This only applies to width (not height) - see:

https://wpt.fyi/results/html/rendering/dimension-attributes.html?label=master&label=experimental&aligned&q=dimension-attributes

See also: https://drafts.csswg.org/css-tables-3/#mapping

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::addHTMLLengthToStyle):

  • html/HTMLElement.h:
  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::collectPresentationalHintsForAttribute):

10:58 AM Changeset in webkit [288060] by Simon Fraser
  • 9 edits in trunk/Source/WebCore

Share some code that looks at visibility in order to short-circuit repaint rect computation
https://bugs.webkit.org/show_bug.cgi?id=235242

Reviewed by Dean Jackson.

There were five instances of this common code pattern that short-circuited clippedOverflowRect()
when we know that the renderer is hidden with visibility:hidden, so factor it into a common
function on RenderElement.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::clippedOverflowRect const):

  • rendering/RenderBox.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::isInsideEntirelyHiddenLayer const):

  • rendering/RenderElement.h:
  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::clippedOverflowRect const):

  • rendering/svg/LegacyRenderSVGRoot.cpp:

(WebCore::LegacyRenderSVGRoot::clippedOverflowRect const):

  • rendering/svg/RenderSVGModelObject.cpp:

(WebCore::RenderSVGModelObject::clippedOverflowRect const):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::clippedOverflowRect const):

10:51 AM Changeset in webkit [288059] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Make a function that returns the ordered list of top layer RenderLayers
https://bugs.webkit.org/show_bug.cgi?id=235251

Reviewed by Alan Bujtas.

Factor the code in RenderLayer::rebuildZOrderLists() that generates the list of
top-layer RenderLayers into its own function.

Add Document::hasTopLayerElement() to avoid calling it when there are no top layer
elements.

  • dom/Document.h:

(WebCore::Document::hasTopLayerElement const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::rebuildZOrderLists):

  • rendering/RenderLayer.h:
9:23 AM Changeset in webkit [288058] by Tyler Wilcock
  • 10 edits in trunk

AX: Fix disabled-controls-not-focusable.html in isolated tree mode by updating AXPropertyName::CanSetFocusAttribute when the disabled attribute changes
https://bugs.webkit.org/show_bug.cgi?id=235246

Reviewed by Chris Fleizach.

Source/WebCore:

Fixes disabled-controls-not-focusable.html in isolated tree mode.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):
Post a AXDisabledStateChanged notification when the disabled attribute changes.
(WebCore::AXObjectCache::updateIsolatedTree):
Handle the AXDisabledStateChanged notification to update AXPropertyName::CanSetFocusAttribute.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateNodeProperty):
Re-compute AXPropertyName::CanSetFocusAttribute when asked to do so.

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::isAttributeSettable):
Use new isAttributeSettable(NSString *attribute) helper function.
(WTR::AccessibilityUIElement::isAttributeSettable const):
Added. Dispatches call to accessibilityIsAttributeSettable on the AX thread.

(WTR::AccessibilityUIElement::isFocusable const):
(WTR::AccessibilityUIElement::isSelectable const):
Use new isAttributeSettable to reduce repetition.

LayoutTests:

  • accessibility/disabled-controls-not-focusable-expected.txt:
  • accessibility/disabled-controls-not-focusable.html:

Make this test async so that it can pass in isolated tree mode. This
test must be async because it dynamically changes the disabled
attribute via JS.

  • platform/win/accessibility/disabled-controls-not-focusable-expected.txt:

Update Windows-specific expectation to match test changes.

9:21 AM Changeset in webkit [288057] by commit-queue@webkit.org
  • 4 edits in trunk

[css-contain] Fix contain-size-replaced-002.html
https://bugs.webkit.org/show_bug.cgi?id=235175

Patch by Rob Buis <rbuis@igalia.com> on 2022-01-15
Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

If the SVG root has zero content width and/or height, there is no point
in painting the children contents.

Test: imported/w3c/web-platform-tests/css/css-contain/contain-size-replaced-002.html

  • rendering/svg/LegacyRenderSVGRoot.cpp:

(WebCore::LegacyRenderSVGRoot::paintReplaced):

LayoutTests:

9:11 AM Changeset in webkit [288056] by Tyler Wilcock
  • 5 edits in trunk/Source/WebCore

AX: Remove AXAriaAttributeChanged notification because it's not used by anything
https://bugs.webkit.org/show_bug.cgi?id=235253

Reviewed by Chris Fleizach.

Nothing uses AXAriaAttributeChanged, but we still spend time processing
it through the notification pipeline (postNotification -> m_notificationsToPost -> updateIsolatedTree(notifications) + postPlatformNotification(notifications)).

This patch deletes it.

  • accessibility/AXLogger.cpp:

(WebCore::operator<<):

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):

  • accessibility/AXObjectCache.h:
  • accessibility/atspi/AXObjectCacheAtspi.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

5:36 AM Changeset in webkit [288055] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] imported/w3c/web-platform-tests/css/css-text/word-break/word-break-normal-ar-000.html fails with incorrect run position
https://bugs.webkit.org/show_bug.cgi?id=235011

Reviewed by Antti Koivisto.

IFC (inherited from simple line layout) uses this technique of measuring the content with the trailing whitespace
and then simply subtract the whitespace width. It enables us to keep pushing content to the line without re-measuring it each time.
(the "non-whitespace + whitespace" pattern is extremely common for IFC content).
However in some cases when the trailing whitespace is trimmed, subtracting the trimmed width from the
content width instead of measuring it produces a visually incorrect result.
This patch fixes the most obvious cases when the incorrect width turns into an offset for the RTL content.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::TrimmableTrailingContent::remove):
(WebCore::Layout::Line::Run::removeTrailingLetterSpacing):
(WebCore::Layout::Line::Run::removeTrailingWhitespace):

  • layout/formattingContexts/inline/InlineLine.h:
  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):

  • layout/formattingContexts/inline/text/TextUtil.h:
5:32 AM Changeset in webkit [288054] by graouts@webkit.org
  • 10 edits
    1 copy in trunk

Setting content: normal on a ::marker should make computed style return resolved values
https://bugs.webkit.org/show_bug.cgi?id=235222

Reviewed by Aditya Keerthi.

LayoutTests/imported/w3c:

Mark WPT progressions.

  • web-platform-tests/css/css-pseudo/marker-computed-size-expected.txt:

Source/WebCore:

Until now, StyleBuilder would treat "none" and "normal" values the same way for the "content"
CSS property. However, "normal", the initial value, is not the same as "none" which explicitly
states that we do not have any content. The WPT test css/css-pseudo/marker-computed-size.html
checks on this by setting content: normal on a ::marker and expecting the computed style
for "width" and "height" to be pixel values and not "auto".

We already have a bit in RenderStyle that would be turned on when we would parse either "none"
or "normal". We're now only setting that bit, with a better name when the value is explicitly "none".

So we now remove hasExplicitlyClearedContent() and instead expose hasEffectiveContentNone()
on RenderStyle.

We also remove a stale comment in applyInheritContent() since the spec has not changed to make
"content" inherited.

Finally, Styleable::renderer() now returns the markerRenderer() unless
RenderStyle::hasEffectiveContentNone() is true.

For reference, the relevant spec is https://drafts.csswg.org/css-content-3/#content-property.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::contentToCSSValue):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::isControlStyled const):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::RenderStyle):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasEffectiveContentNone const):
(WebCore::RenderStyle::setHasContentNone):
(WebCore::RenderStyle::NonInheritedFlags::operator== const):
(WebCore::RenderStyle::setHasExplicitlyClearedContent): Deleted.
(WebCore::RenderStyle::hasExplicitlyClearedContent const): Deleted.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialContent):
(WebCore::Style::BuilderCustom::applyInheritContent):
(WebCore::Style::BuilderCustom::applyValueContent):

  • style/Styleable.cpp:

(WebCore::Styleable::renderer const):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/css-pseudo/marker-computed-size-expected.txt:

Jan 14, 2022:

11:30 PM Changeset in webkit [288053] by Peng Liu
  • 3 edits in trunk/Source/WebCore

Unable to playback portrait videos on HTML canvas elements
https://bugs.webkit.org/show_bug.cgi?id=235238

Reviewed by Jer Noble.

We need to make sure the destination pixel buffer is IOSurface-backed.
Otherwise, VTImageRotationSession cannot rotate a pixel buffer with
a compressed pixel format.

Manually tested.

Layout tests for this exist, but unless they run on an iPhone 12 or
later HW, they won't fail. For example:

  • media/video-orientation-canvas.html
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):

  • platform/graphics/cv/ImageRotationSessionVT.mm:

(WebCore::ImageRotationSessionVT::rotate):

11:00 PM Changeset in webkit [288052] by commit-queue@webkit.org
  • 4 edits
    3 adds in trunk

null ptr deref in WebCore::ReplaceSelectionCommand::moveNodeOutOfAncestor()
https://bugs.webkit.org/show_bug.cgi?id=233463

Patch by Frederic Wang <fwang@igalia.com> on 2022-01-14
Reviewed by Wenson Hsieh.

Source/WebCore:

One line of ReplaceSelectionCommand::moveNodeOutOfAncestor() assumes that the pointer
ancestor.parentNode() is non-null. However, the call to removeNode(node) just before can
lead to arbitrary tree mutations that leaves the ancestor orphan, causing a nullptr deref.
This patch mitigates that issue by exiting early if that situation happens.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::moveNodeOutOfAncestor): Exit early if the ancestor
is no longer connected.

LayoutTests:

Add non-regression test.

  • editing/execCommand/paste-as-quotation-disconnected-paragraph-ancestor-crash-expected.txt: Added.
  • editing/execCommand/paste-as-quotation-disconnected-paragraph-ancestor-crash.html: Added.
  • editing/execCommand/resources/paste-as-quotation-disconnected-paragraph-ancestor-crash-iframe.html: Added.
  • platform/win/TestExpectations: Skip test on windows, as the test seems to shift expectations with text output

of other execCommand tests.

8:16 PM Changeset in webkit [288051] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

[macOS WK1] fast/canvas/large-getImageData.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=235169

Unreviewed.

This test gets very close to the canvas memory limit. Because
JSC has no guarantees about when objects are collected, this test
has to be run in its own process, which means it requires WK2 and
<!-- webkit-test-runner [ runSingly=true ] -->.

7:14 PM Changeset in webkit [288050] by Mikhail R. Gadelha
  • 11 edits in trunk

[JSC] Fix Linux 64bit compilation
https://bugs.webkit.org/show_bug.cgi?id=235232

Reviewed by Saam Barati.

.:

  • Source/cmake/OptionsCommon.cmake:

Source/bmalloc:

Add new pas_lenient_compact_ptr related files to CMakeLists.txt too.

  • CMakeLists.txt:
  • bmalloc/BPlatform.h:
  • bmalloc/Gigacage.cpp:
  • bmalloc/IsoHeap.cpp:
  • bmalloc/IsoHeap.h:
  • bmalloc/bmalloc.h:

Source/JavaScriptCore:

Define PAS_BMALLOC in all projects since JavaScriptCore includes some files which can require this macro variable.
Previously, JSDollarVM.cpp includes these files first, then at that time, we can define PAS_BMALLOC.
However, after enabling jit-heap, these files are included before JSDollarVM.cpp and include pas_config.h without
PAS_BMALLOC definition, which later causes the problem when including pas_lock.h since non PAS_BMALLOC libpas requires
darwin specific locking.

Since defining PAS_BMALLOC does not matter to whether using libpas or not, this patch just defines it globally.
And for Apple ports, we define this when we define BENABLE_LIBPAS.

  • tools/JSDollarVM.cpp:
7:11 PM Changeset in webkit [288049] by ysuzuki@apple.com
  • 31 edits
    21 copies
    6 moves
    61 adds
    9 deletes in trunk

[JSC] Fix WebAssembly.Global's typename for "anyfunc"
https://bugs.webkit.org/show_bug.cgi?id=235105

Reviewed by Keith Miller.

LayoutTests/imported/w3c:

Update wpt/wasm which includes "anyfunc" tests.

  • web-platform-tests/wasm/jsapi/assertions.js:

(assert_exported_function):

  • web-platform-tests/wasm/jsapi/constructor/toStringTag.any.js:
  • web-platform-tests/wasm/jsapi/exception/basic.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/basic.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/basic.tentative.any.js: Added.

(assert_throws_wasm):
(promise_test.async const):
(promise_test):

  • web-platform-tests/wasm/jsapi/exception/basic.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/basic.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/constructor.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/is.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/is.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/is.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/exception/is.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/is.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/toString.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.js: Added.

(assert_type):
(test):

  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/exception/type.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/exception/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/function/call.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/call.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/function/call.tentative.any.js: Added.

(addxy):
(test):
(string_appeared_here.test):

  • web-platform-tests/wasm/jsapi/function/call.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/call.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/function/constructor.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/constructor.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/function/constructor.tentative.any.js: Added.

(addxy):
(test):
(string_appeared_here.test):

  • web-platform-tests/wasm/jsapi/function/constructor.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/constructor.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/function/table.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/table.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/function/table.tentative.any.js: Added.

(testfunc):
(test):

  • web-platform-tests/wasm/jsapi/function/table.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/table.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/function/type.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/type.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/function/type.tentative.any.js: Added.

(addNumbers):
(doNothing):
(assert_function):
(test):
(string_appeared_here.test):

  • web-platform-tests/wasm/jsapi/function/type.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/function/type.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/function/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/global/type.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/type.tentative.any.js:

(test):
(string_appeared_here.test):

  • web-platform-tests/wasm/jsapi/global/type.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/proto-from-ctor-realm.html:
  • web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.js: Removed.
  • web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/constructor.any.js:

(test.get assert_array_equals):
(test):

  • web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/get-set.any.js:

(test):

  • web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/grow-reftypes.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/grow-reftypes.tentative.any.js: Removed.
  • web-platform-tests/wasm/jsapi/table/grow-reftypes.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/grow.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/grow.any.js:

(test):

  • web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.js: Removed.
  • web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/type.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/table/type.tentative.any.js:

(test):

  • web-platform-tests/wasm/jsapi/table/type.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/table/type.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/w3c-import.log:
  • web-platform-tests/wasm/jsapi/tag/constructor.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/constructor.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/tag/constructor.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/tag/constructor.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/constructor.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/tag/toString.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/toString.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/tag/toString.tentative.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/tag/toString.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/toString.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/tag/type.tentative.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/type.tentative.any.html: Added.
  • web-platform-tests/wasm/jsapi/tag/type.tentative.any.js: Added.

(assert_type):
(test):

  • web-platform-tests/wasm/jsapi/tag/type.tentative.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/tag/type.tentative.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/tag/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/wasm-module-builder.js:

(WasmModuleBuilder.prototype.addTable):
(WasmModuleBuilder.prototype.toBuffer):

  • web-platform-tests/wasm/serialization/module/cross-origin-module-sharing-fails-expected.txt: Added.
  • web-platform-tests/wasm/serialization/module/cross-origin-module-sharing-fails.html: Added.
  • web-platform-tests/wasm/serialization/module/resources/incrementer-iframe-failure.html: Added.
  • web-platform-tests/wasm/serialization/module/resources/w3c-import.log:
  • web-platform-tests/wasm/serialization/module/share-module-cross-origin-fails.sub-expected.txt: Added.
  • web-platform-tests/wasm/serialization/module/share-module-cross-origin-fails.sub.html: Added.
  • web-platform-tests/wasm/serialization/module/w3c-import.log:
  • web-platform-tests/wasm/webapi/contenttype.any-expected.txt:
  • web-platform-tests/wasm/webapi/contenttype.any.js:
  • web-platform-tests/wasm/webapi/contenttype.any.worker-expected.txt:
  • web-platform-tests/wasm/webapi/resources/incrementer.no_mime_type.wasm: Added.
  • web-platform-tests/wasm/webapi/resources/incrementer.wasm: Added.
  • web-platform-tests/wasm/webapi/resources/incrementer.wasm.headers: Added.
  • web-platform-tests/wasm/webapi/resources/incrementer.wrong_mime_type.wasm: Added.
  • web-platform-tests/wasm/webapi/resources/incrementer.wrong_mime_type.wasm.headers: Added.
  • web-platform-tests/wasm/webapi/resources/w3c-import.log: Added.
  • web-platform-tests/wasm/webapi/w3c-import.log:
  • web-platform-tests/wasm/webapi/wasm_stream_compile_test-expected.txt: Added.
  • web-platform-tests/wasm/webapi/wasm_stream_compile_test.html: Added.
  • web-platform-tests/wasm/webapi/wasm_stream_instantiate_test-expected.txt: Added.
  • web-platform-tests/wasm/webapi/wasm_stream_instantiate_test.html: Added.

Source/JavaScriptCore:

We should return "anyfunc" string instead of "funcref" according to the spec[1,2].

[1]: https://webassembly.github.io/spec/js-api/#globals
[2]: https://webassembly.github.io/spec/js-api/#tables

  • wasm/js/JSWebAssemblyGlobal.cpp:

(JSC::JSWebAssemblyGlobal::type):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::type):

6:11 PM Changeset in webkit [288048] by Russell Epstein
  • 1 copy in tags/Safari-613.1.14

Tag Safari-613.1.14.

6:04 PM Changeset in webkit [288047] by Russell Epstein
  • 1 copy in tags/Safari-613.1.12.1.9

Tag Safari-613.1.12.1.9.

5:50 PM Changeset in webkit [288046] by Russell Epstein
  • 2 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Cherry-pick r288041. rdar://problem/87627318

ANGLE: Supports32BitFloatFiltering is not supported on TVOS
https://bugs.webkit.org/show_bug.cgi?id=235239

Reviewed by Darin Adler.

<rdar://86457081>
Broke an internal build. Caused by https://trac.webkit.org/changeset/286323/webkit

  • src/libANGLE/renderer/metal/DisplayMtl.mm: (rx::DisplayMtl::supports32BitFloatFiltering const):

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

5:49 PM Changeset in webkit [288045] by Russell Epstein
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.1.14

5:47 PM Changeset in webkit [288044] by Russell Epstein
  • 2 edits in branches/safari-613.1.12.1-branch/Source/ThirdParty/ANGLE

Cherry-pick r288041. rdar://problem/86457081

ANGLE: Supports32BitFloatFiltering is not supported on TVOS
https://bugs.webkit.org/show_bug.cgi?id=235239

Reviewed by Darin Adler.

<rdar://86457081>
Broke an internal build. Caused by https://trac.webkit.org/changeset/286323/webkit

  • src/libANGLE/renderer/metal/DisplayMtl.mm: (rx::DisplayMtl::supports32BitFloatFiltering const):

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

5:37 PM Changeset in webkit [288043] by Jonathan Bedard
  • 3 edits in trunk/Tools

[EWS] Only trigger builds for open and synchronize events
https://bugs.webkit.org/show_bug.cgi?id=235249
<rdar://problem/87615392>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/events.py:

(Events.stopService):
(GitHubEventHandlerNoEdits):
(GitHubEventHandlerNoEdits.handle_pull_request):

  • Tools/CISupport/ews-build/master.cfg:

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

5:26 PM Changeset in webkit [288042] by Russell Epstein
  • 9 edits in branches/safari-613.1.12.1-branch/Source

Versioning.

WebKit-7613.1.12.1.9

5:16 PM Changeset in webkit [288041] by Kyle Piddington
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE: Supports32BitFloatFiltering is not supported on TVOS
https://bugs.webkit.org/show_bug.cgi?id=235239

Reviewed by Darin Adler.

<rdar://86457081>
Broke an internal build. Caused by https://trac.webkit.org/changeset/286323/webkit

  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::supports32BitFloatFiltering const):

5:11 PM Changeset in webkit [288040] by Jonathan Bedard
  • 3 edits in trunk/Tools

[EWS] ShowIdentifier should support pull-requests
https://bugs.webkit.org/show_bug.cgi?id=235252
<rdar://problem/87618736>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/steps.py:

(ShowIdentifier.start): Extract revision from diverse set of properties.
(ShowIdentifier.evaluateCommand):

  • Tools/CISupport/ews-build/steps_unittest.py:

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

4:56 PM Changeset in webkit [288039] by Wenson Hsieh
  • 4 edits in trunk

[iOS] Occasional crash under -[UITargetedPreview initWithView:parameters:target:] when focusing form controls
https://bugs.webkit.org/show_bug.cgi?id=235248
rdar://79220540

Reviewed by Tim Horton and Aditya Keerthi.

Source/WebKit:

It's possible for -resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets: to return a nil snapshot
view in the case where a screen update has not been performed yet (among other scenarios). In the case where
UIKit returns nil when we're creating the targeted preview for the context menu when focusing a select element
or file input, we'll crash due to an Objective-C exception in the initializer of UITargetedPreview. Mitigate
this by falling back to an empty UIView after requesting the snapshot view to make our code robust against this
scenario.

Test: KeyboardInputTests.DoNotCrashWhenFocusingSelectWithoutViewSnapshot

  • UIProcess/ios/WKContentViewInteraction.mm:

(createFallbackTargetedPreview):

Tools:

Add an API test that exercises the crash by forcing -resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets:
to return nil via swizzling.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::nilResizableSnapshotViewFromRect):
(TestWebKitAPI::TEST):

4:48 PM Changeset in webkit [288038] by Jonathan Bedard
  • 8 edits
    3 adds in trunk/Tools

[webkitbugspy] Support radar as issue tracker type
https://bugs.webkit.org/show_bug.cgi?id=234993
<rdar://problem/87276178>

Reviewed by Stephanie Lewis.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/init.py:
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/base.py:

(Base): Radar mock should not inherit from mocks.Requests.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/bugzilla.py:

(Bugzilla): Inherit from both Base and mocks.Requests.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/github.py:

(GitHub): Inherit from both Base and mocks.Requests.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/mocks/radar.py: Added.

(AppleDirectoryUserEntry): Mock AppleDirectoryUserEntry from radarclient.
(AppleDirectoryQuery): Mock AppleDirectoryQuery from radarclient.
(RadarModel): Mock various Model objects from radarclient.
(RadarClient): Mock RadarClient from radarclient.
(Radar): Mock radarclient library.
(NoRadar): Mock unavailable radarclient library.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/radar.py: Added.

(Tracker):
(Tracker.radarclient): Optionally import radarclient.
(Tracker.init):
(Tracker.authentication): Determine which authentication strategy to use.
(Tracker.from_string): Construct issue given Radar string
(Tracker.user): Find user given name, DSID or email.
(Tracker.issue): Construct issue given Radar ID.
(Tracker.populate): Populate Issue arguments.

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tests/radar_unittest.py: Added.

(TestGitHub):
(TestGitHub.test_no_radar):
(TestGitHub.test_users):
(TestGitHub.test_link):
(TestGitHub.test_title):
(TestGitHub.test_timestamp):
(TestGitHub.test_creator):
(TestGitHub.test_description):
(TestGitHub.test_assignee):
(TestGitHub.test_comments):
(TestGitHub.test_watchers):
(TestGitHub.test_references):
(TestGitHub.test_reference_parse):

  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/tracker.py:

(Tracker): Match single integer issue URLs.

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

4:44 PM Changeset in webkit [288037] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

JSStringJoiner's constructor should take a size_t length.
https://bugs.webkit.org/show_bug.cgi?id=235217
rdar://87538657

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/max-typed-array-length-toString.js: Added.

Source/JavaScriptCore:

Also removed an unnecessary exception check in JSStringJoiner::append().
This is because appendWithoutSideEffects() cannot throw any exceptions.

  • runtime/JSStringJoiner.h:

(JSC::JSStringJoiner::JSStringJoiner):
(JSC::JSStringJoiner::append):

3:48 PM Changeset in webkit [288036] by commit-queue@webkit.org
  • 4 edits in trunk

JSArray::fastSlice() should not convert the source from CoW
https://bugs.webkit.org/show_bug.cgi?id=234990

Patch by Alexey Shvayka <ashvayka@apple.com> on 2022-01-14
Reviewed by Yusuke Suzuki.

JSTests:

  • stress/array-slice-cow.js:

Source/JavaScriptCore:

Since we aren't modifying the source array in fastSlice() nor its slow path,
there is no reason to convert it from CopyOnWrite.

  • runtime/JSArray.cpp:

(JSC::JSArray::fastSlice):

3:24 PM Changeset in webkit [288035] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[Cleanup] Remove redundant (and incorrect) RenderStyle::isDisplayReplacedType
https://bugs.webkit.org/show_bug.cgi?id=235250

Reviewed by Simon Fraser.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::isDisplayInlineType): display types do not make a box replaced.
(WebCore::RenderStyle::isDisplayReplacedType): Deleted.

2:58 PM Changeset in webkit [288034] by dino@apple.com
  • 4 edits in trunk/Source/WebKit

REGRESSION: ARKit example loads a page full of random symbols instead of a 3D model
https://bugs.webkit.org/show_bug.cgi?id=235254

Reviewed by Tim Horton.

When we enabled the ModelDocument support, we disabled the ContentProvider path.
This was a mistake - it has to be a runtime check.

  • UIProcess/API/Cocoa/WKPreferences.mm: Expose the ModelDocumentEnabled WebPreference so that

it can be read from a WKWebViewConfiguration.
(-[WKPreferences _setModelDocumentEnabled:]):
(-[WKPreferences _modelDocumentEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm: Rather than the compile-time test, check the

WebPreferences to see if ModelDocument is disabled.
(-[WKWebViewContentProviderRegistry initWithConfiguration:]):

2:46 PM Changeset in webkit [288033] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Clarify / Optimize <select> logic given that deeply nested <option> or <optgroup> are not supported
https://bugs.webkit.org/show_bug.cgi?id=235247

Reviewed by Geoffrey Garen.

Clarify / Optimize <select> logic given that deeply nested <option> or <optgroup> are not supported, as per the
specification.

An <option> is only associated with a <select> element if it is either a child of the <select> or a child of an
<optgroup> that is itself a child of the <select>:

As a result, an <optgroup> is only associated with a <select> element if it is a child of that <select>.

No new tests, no Web-facing behavior change.

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::recalcSelectOptions):
(WebCore::HTMLOptGroupElement::ownerSelectElement const):
(WebCore::HTMLOptGroupElement::accessKeyAction):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::setText):
(WebCore::HTMLOptionElement::accessKeyAction):
(WebCore::HTMLOptionElement::index const):
(WebCore::HTMLOptionElement::selected const):
(WebCore::HTMLOptionElement::setSelected):
(WebCore::HTMLOptionElement::childrenChanged):
(WebCore::HTMLOptionElement::ownerSelectElement const):
(WebCore::HTMLOptionElement::textIndentedToRespectGroupLabel const):
(WebCore::HTMLOptionElement::insertedIntoAncestor):
(WebCore::HTMLOptionElement::collectOptionInnerText const):

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::recalcListItems const):
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler):

2:23 PM Changeset in webkit [288032] by Wenson Hsieh
  • 8 edits in trunk

Avoid redundant text analysis requests when long pressing inside an image that contains Live Text
https://bugs.webkit.org/show_bug.cgi?id=235129
rdar://87366539

Reviewed by Tim Horton.

Source/WebKit:

When long pressing over a non-Live-Text part of an image that otherwise contains Live Text, we currently trigger
Live Text analysis on the image a second time and re-inject the same text recognition results into the image
element. In addition to being unnecessary, this extra text analysis operation causes regular Live Text results
to be injected into images that already contain "block"-style recognized text results, replacing the blocks in
the process.

Address this by adding an optimization to avoid this unnecessary Live Text analysis and injection. See below for
more details.

Test: ImageAnalysisTests.AvoidRedundantTextRecognitionRequests

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

Add a new elementContainsImageOverlay bit to position information.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView imageAnalysisGestureDidBegin:]):

In the case where the image already contains an overlay, short-circuit logic to perform text analysis and inject
the results into the image, and instead directly call into the new helper method below to compute visual look up
results and invoke pending context menu completion handler blocks. We pass YES for hasTextResults here
because we know that the image already contains recognized text, due to the elementContainsImageOverlay being
set.

(-[WKContentView _completeImageAnalysisRequestForContextMenu:requestIdentifier:hasTextResults:]):

Factor out logic for requesting visual look up results on the image into a separate helper method.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::videoPositionInformation):
(WebKit::imagePositionInformation):

Set the elementContainsImageOverlay bit (see above).

Tools:

Add a new API test and refactor some existing tests.

  • TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:

(swizzledLocationInView):
(-[TestWKWebView simulateImageAnalysisGesture:]):

Add a helper method to simulate the image analysis gesture recognizer being activated on iOS, and wait for image
analysis to finish.

(TestWebKitAPI::swizzledProcessRequestWithResults):
(TestWebKitAPI::TEST):

Add a new API test to verify that we make at most one extra VKImageAnalyzer request when invoking a non-Live-
Text part of the image a second time. Additionally, adjust an existing test (HandleImageAnalyzerErrors) to
verify that we invoke VKImageAnalyzer a total of two times during the course of one image analysis gesture (once
for Live Text recognition, and another for visual look up). This test currently passes with only a single check
because it ends too early (i.e. after only one round trip to the web process and back).

(TestWebKitAPI::swizzledLocationInView): Deleted.

  • TestWebKitAPI/cocoa/ImageAnalysisTestingUtilities.mm:

(-[TestVKImageAnalysis hasResultsForAnalysisTypes:]):

Implement this method stub to avoid an unrecognized selector crash.

1:58 PM Changeset in webkit [288031] by jer.noble@apple.com
  • 12 edits
    6 adds in trunk

[Cocoa] rVFC() isn't called for initial video load
https://bugs.webkit.org/show_bug.cgi?id=235006

Reviewed by Eric Carlson.

Source/WebCore:

Tests: media/request-video-frame-loadstart.html

media/request-video-frame-seek.html

Add a new utility class, QueuedVideoOutput, which will pull pixel buffers out of an AVPlayerItemVideoOutput
pre-emptively. Once those pixel buffers are enqueued locally, their associated timing information can be used to
fire a callback for that buffer's display time.

Previously, paints were blocked from pulling new pixel buffers from the video output. With the QueuedVideoOutput
class, this is no longer necessary. The QueuedVideoOutput will notify its client when the image for currentTime
changes, and other clients can freely ask for the currentTime's image.

To curb runaway memory growth, frames are purged as soon as a new image for the current time is available, and when
the video output signals that its own queues were purged.

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::cancelVideoFrameCallback):
(WebCore::HTMLVideoElement::serviceRequestVideoFrameCallbacks):

  • html/HTMLVideoElement.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::hasAvailableVideoFrame const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoFullscreenInlineImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::startVideoFrameMetadataGathering):
(WebCore::MediaPlayerPrivateAVFoundationObjC::checkNewVideoFrameMetadata):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoOutputHasAvailableFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::pixelBufferForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::colorSpace):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
(WebCore::globalPullDelegateQueue): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange): Deleted.
(-[WebCoreAVFPullDelegate initWithPlayer:]): Deleted.
(-[WebCoreAVFPullDelegate outputMediaDataWillChange:]): Deleted.
(-[WebCoreAVFPullDelegate outputSequenceWasFlushed:]): Deleted.

  • platform/graphics/avfoundation/objc/QueuedVideoOutput.h: Added.
  • platform/graphics/avfoundation/objc/QueuedVideoOutput.mm: Added.

(-[WebQueuedVideoOutputDelegate initWithParent:]):
(-[WebQueuedVideoOutputDelegate outputMediaDataWillChange:]):
(-[WebQueuedVideoOutputDelegate outputSequenceWasFlushed:]):
(-[WebQueuedVideoOutputDelegate observeValueForKeyPath:ofObject:change:context:]):
(WebCore::globalOutputDelegateQueue):
(WebCore::QueuedVideoOutput::create):
(WebCore::QueuedVideoOutput::QueuedVideoOutput):
(WebCore::QueuedVideoOutput::~QueuedVideoOutput):
(WebCore::QueuedVideoOutput::invalidate):
(WebCore::decltype):
(WebCore::QueuedVideoOutput::hasImageForTime const):
(WebCore::QueuedVideoOutput::takeVideoFrameEntryForTime):
(WebCore::QueuedVideoOutput::addCurrentImageChangedObserver):
(WebCore::QueuedVideoOutput::configureNextImageObserver):
(WebCore::QueuedVideoOutput::imageForCurrentTimeChanged):
(WebCore::QueuedVideoOutput::addVideoFrameEntries):
(WebCore::QueuedVideoOutput::purgeVideoFrameEntries):
(WebCore::QueuedVideoOutput::purgeImagesBeforeTime):
(WebCore::QueuedVideoOutput::rateChanged):

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

LayoutTests:

  • media/request-video-frame-loadstart-expected.txt: Added.
  • media/request-video-frame-loadstart.html: Added.
  • media/request-video-frame-seek-expected.txt: Added.
  • media/request-video-frame-seek.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
1:47 PM Changeset in webkit [288030] by Devin Rousso
  • 11 edits in trunk/Source/WebInspectorUI

Web Inspector: Sources: cannot copy grouping of blackboxed call frames
https://bugs.webkit.org/show_bug.cgi?id=234615
<rdar://problem/86989248>

Reviewed by Patrick Angle.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype.handleCopyEvent):
(WI.SourcesNavigationSidebarPanel.prototype.handleCopyEvent.addCallFrame): Added.
Include every WI.CallFrame managed by any selected WI.BlackboxedGroupTreeElement when
copying. Also make sure that any async boundaries are taken into account.

  • UserInterface/Views/BlackboxedGroupTreeElement.js:

(WI.BlackboxedGroupTreeElement):
(WI.BlackboxedGroupTreeElement.prototype.get callFrames): Added.
(WI.BlackboxedGroupTreeElement.prototype.get expandable): Added.
(WI.BlackboxedGroupTreeElement.prototype.onenter): Added.
(WI.BlackboxedGroupTreeElement.prototype.onspace): Added.
Make WI.BlackboxedGroupTreeElement selectable, and add extra action handlers for expansion.

  • UserInterface/Views/BlackboxedGroupTreeElement.css:

(.tree-outline .item.blackboxed-group):
(.tree-outline .item.blackboxed-group:not(.selected) > *, .tree-outline:not(:focus-within) .item.blackboxed-group.selected > *, body:is(.window-inactive, .window-docked-inactive) .tree-outline .item.blackboxed-group.selected > *): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.blackboxed-group.selected .icon): Added.
Only make the content more transparent if not .selected (when the window/tree has focus).

  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.prototype.get expandable): Added.
(WI.TreeElement.treeElementToggled):
Allow toggleOnClick to be used when selectable too. This allows WI.BlackboxedGroupTreeElement
to expand on click while also being able to be selected (e.g. shift-up, command-A, etc.).
All other uses of toggleOnClick set this.selectable = false; anyways, so this will have
no effect to other clients.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype.insertChild):
(WI.TreeOutline.prototype._treeKeyDown):

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype.update):
Add a helper get expandable instead of assuming it from get hasChildren. This allows
WI.BlackboxedGroupTreeElement to override it and always be true, since there is no
situation where we would disallow expansion (which shows the grouped blackboxed call frames).

  • UserInterface/Models/CallFrame.js:

(WI.CallFrame.prototype.get displayName): Added.

  • UserInterface/Views/CallFrameView.js:

(WI.CallFrameView):

  • UserInterface/Views/CallFrameTreeElement.js:

(WI.CallFrameTreeElement):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype.toClipboardString):
Add a helper get displayName to avoid repeated specialized logic.

1:34 PM Changeset in webkit [288029] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: add a contextmenu item to create a URL Breakpoint for resources initiated by script
https://bugs.webkit.org/show_bug.cgi?id=235216

Reviewed by Dean Jackson.

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):
Since URL Breakpoints only work with XHR/fetch, only offer to create a URL Breakpoint if
the WI.SourceCode has initiatorCallFrames, meaning it was triggered by JS. We could
offer this contextmenu item for _all_ resources, but there are many different resource types
that are unlikely (if ever) to be loaded via XHR/fetch (e.g. favicons, manifests, fonts,
initial JS/CSS files, etc.) that it would likely add clutter and possibly confuse developers
into thinking that URL Breakpoints can somehow pause things other than JS. Plus, this can
always be changed in a followup, so better to do something minimal first.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager.prototype.urlBreakpointsMatchingURL): Added.
Helper method to find all WI.URLBreakpoint that match a given URL, sorted by how exact
they would match (e.g. a regex match is less exact than ===).

  • Localizations/en.lproj/localizedStrings.js:
1:07 PM Changeset in webkit [288028] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Make isJITPC fast
https://bugs.webkit.org/show_bug.cgi?id=235241

Reviewed by Yusuke Suzuki.

Make it an inlined function, and stop tagging g_jscConfig.startExecutableMemory
and g_jscConfig.endExecutableMemory, since they're in the Config page, and
not mutable after it's frozen.

  • jit/ExecutableAllocator.cpp:

(JSC::initializeJITPageReservation):
(JSC::isJITPC): Deleted.

  • jit/ExecutableAllocator.h:

(JSC::isJITPC):

1:04 PM Changeset in webkit [288027] by Tyler Wilcock
  • 5 edits in trunk/Source/WebCore

AX: AXIsolatedObject::initializeAttributeData should compute AXAncestorFlags if they are unexpectedly uninitialized
https://bugs.webkit.org/show_bug.cgi?id=235189

Reviewed by Andres Gonzalez.

Currently in AXIsolatedObject::initializeAttributeData, we don't store
any ancestor flags if they are unexpectedly uninitialized (i.e. we're
asked to initialize an isolated object for a live AX object that has
not been added to the live AX tree).

Rather than not storing flags and thus creating an isolated object
with incorrect properties, we should do a single traversal to initialize them.
We should have to do this very rarely since we generally expect to be
given live AX objects with initialized flags here (and debug ASSERT that this is the case).

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::computeAncestorFlagsWithTraversal const):
Added.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:

(WebCore::Accessibility::enumerateAncestors):
Added.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
Compute ancestor flags with a single traversal if they are unexpected uninitialized.

12:43 PM Changeset in webkit [288026] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

MediaPlayerPrivateMediaStreamAVFObjC::m_videoTransform is redundant
https://bugs.webkit.org/show_bug.cgi?id=235181

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-01-14
Reviewed by Youenn Fablet.

The video sample transform was stored as a member variable during video sample
enqueuing. However, this is just a normal video sample property, and
does not need to be handled specially. The member variable anyway ended up being assigned
during use. Calculating the transform is not a heavy operation, since it
is accessed once per video paint.

This simplifies the future code where the underlying video frame would be
used as-is by WebGL, as there we need to have the correct transform.

No new tests, refactor.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::videoSampleAvailable):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::processNewVideoSample):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateRenderingMode):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::paintCurrentFrameInContext):

12:41 PM Changeset in webkit [288025] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

gl.texImage2D upload of getUserMedia streams via <video> element fails
https://bugs.webkit.org/show_bug.cgi?id=230617
<rdar://problem/83407577>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-01-14
Reviewed by Youenn Fablet.

Source/WebCore:

Fix MSE camera to WebGL texture uploads.
Partially revert r280963 for Cocoa MediaPlayer implementatations
that do not have nativeImageForCurrentTime / pixelBufferForCurrentTime.
Turns out MSE does not have these implemented, so currently fall back
to the painting path.

Test: fast/mediastream/getUserMedia-to-canvas.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::videoFrameToImage):

LayoutTests:

  • fast/mediastream/getUserMedia-to-canvas-expected.txt: Added.
  • fast/mediastream/getUserMedia-to-canvas.html: Added.

Add a test to test getting video frame to 2DContext and
WebGL canvas elements.

  • webrtc/routines.js:

Add a function to assert that ImageData contains
the simulated mock camera image. This is useful
in verifying that the image is exactly as
expected. The test tests only the default orientation.
Later changes will update the test to address the
camera rotation.

12:07 PM Changeset in webkit [288024] by Chris Dumez
  • 21 edits in trunk

Regression(r281520) 3 subtests started failing on dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html WPT test
https://bugs.webkit.org/show_bug.cgi?id=235153
<rdar://problem/87485756>

Unreviewed, revert r281520 since it regressed dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html WPT test.

LayoutTests/imported/w3c:

  • web-platform-tests/geolocation-API/non-fully-active.https-expected.txt:

Source/WebCore:

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::getCurrentPosition):
(WebCore::Geolocation::watchPosition):

  • Modules/web-locks/WebLockManager.cpp:

(WebCore::WebLockManager::didCompleteLockRequest):
Covered by "Removed Frame as lock is granted" test in imported/w3c/web-platform-tests/web-locks/frames.tentative.https.html.
Before this change, WebLockGrantedCallback was using incumbent global object (main frame in test) to create a promise instead
of lexical (removed frame in test), causing the test to be false-passing.

  • bindings/js/JSDOMConvertCallbacks.h:

(WebCore::Converter<IDLCallbackFunction<T>>::convert):
(WebCore::Converter<IDLCallbackInterface<T>>::convert):

  • dom/TaskSource.h:

LayoutTests:

  • TestExpectations:
  • fast/dom/Geolocation/callback-to-deleted-context-expected.txt:
  • fast/dom/Geolocation/callback-to-deleted-context.html:
  • fast/dom/Geolocation/disconnected-frame-already-expected.txt:
  • fast/dom/Geolocation/disconnected-frame-already.html:
  • fast/dom/Geolocation/disconnected-frame-expected.txt:
  • fast/dom/Geolocation/disconnected-frame-permission-denied-expected.txt:
  • fast/dom/Geolocation/disconnected-frame-permission-denied.html:
  • fast/dom/Geolocation/disconnected-frame.html:
  • fast/dom/Geolocation/resources/callback-to-deleted-context-inner1.html:
  • fast/events/detached-svg-parent-window-events-expected.txt:
  • fast/events/detached-svg-parent-window-events.html:
12:05 PM Changeset in webkit [288023] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Use IRC for Wasm, and Briggs for JS on ARM64
https://bugs.webkit.org/show_bug.cgi?id=235235
<rdar://87090631>

Reviewed by Yusuke Suzuki and Robin Morisset.

When I turned on IRC for everything in r287218, we saw some
regressions on iOS on JetStream2. So, this patch makes it so
JS code on arm64 goes back to using Briggs, and Wasm will
use IRC.

  • b3/air/AirAllocateRegistersByGraphColoring.cpp:
  • b3/air/AirCode.h:

(JSC::B3::Air::Code::setForceIRCRegisterAllocation):
(JSC::B3::Air::Code::forceIRCRegisterAllocation):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::parseAndCompileB3):

11:57 AM Changeset in webkit [288022] by Justin Michaud
  • 3 edits in trunk/JSTests

Update libWABT
https://bugs.webkit.org/show_bug.cgi?id=235050

Update libWabt to support new simd instructions, and add stubs so that the
wasm test runner can run in v8.

Reviewed by Yusuke Suzuki.

  • wasm/assert.js:
  • wasm/libwabt.js:

(WabtModule):
(set get if):

11:37 AM Changeset in webkit [288021] by Jonathan Bedard
  • 5 edits in trunk/Tools

[EWS] Support pull-requests in ValidateChange
https://bugs.webkit.org/show_bug.cgi?id=234861
<rdar://problem/87114299>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/factories.py:

(Factory.init): Rename ValidatePatch to ValidateChange.
(StyleFactory.init): Ditto.
(WatchListFactory.init): Ditto.
(WindowsFactory.init): Ditto.
(CommitQueueFactory.init): Ditto.

  • Tools/CISupport/ews-build/factories_unittest.py:

(TestExpectedBuildSteps): Step name changed from validate-patch to validate-change.

  • Tools/CISupport/ews-build/steps.py:

(GitHub.pr_url): Add missing /.
(GitHub.api_url): Convert a repository URL to the API url for that repository.
(GitHub.credentials): Access GitHub credentials from passwords.json.
(GitHubMixin):
(GitHubMixin.fetch_data_from_url_with_authentication):
(GitHubMixin.get_pr_json):
(GitHubMixin._is_pr_closed): Check if a pull-request is closed.
(GitHubMixin._is_pr_obsolete): Check if a pull-request is obsolete.
(ValidateChange): Renamed from ValidatePatch.
(ValidateChange.getResultSummary):
(ValidateChange.start): Invoke validate_bugzilla or validate_github.
(ValidateChange.validate_bugzilla): Check a bugzilla patch.
(ValidateChange.validate_github): Check a GitHub pull-request.
(CompileWebKit.evaluateCommand): Rename ValidatePatch to ValidateChange.
(RunJavaScriptCoreTests.evaluateCommand): Ditto.
(RunWebKitTests.evaluateCommand): Ditto.
(ReRunWebKitTests.evaluateCommand): Ditto.
(RunWebKitTestsRedTree.evaluateCommand): Ditto.
(RunWebKitTestsRepeatFailuresRedTree.evaluateCommand): Ditto.
(RunAPITests.evaluateCommand): Ditto.
(ReRunAPITests.evaluateCommand): Ditto.
(ValidatePatch): Renamed to ValidateChange.

  • Tools/CISupport/ews-build/steps_unittest.py:

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

10:10 AM Changeset in webkit [288020] by ysuzuki@apple.com
  • 3 edits in trunk/Source/WTF

Fix WTF::UUID's potential collision with empty and deleted values
https://bugs.webkit.org/show_bug.cgi?id=235177

Reviewed by Chris Dumez.

Since cryptographicallyRandomValues generates random values, it is possible that it produces 0 or 1.
In that case, it conflicts with empty and deleted values of UUID for hash table. When it is generated
and used, it can break hash tables. This patch avoids that by picking 2 when we generate 0 or 1.

We also avoid using UInt128Impl and instead using UInt128. UInt128Impl is implementation, so we should
always use UInt128. UInt128 can be native uint128_t when it is supported by the compiler: clang and
GCC on 64bit support it.

In this patch, we do not use strict UUID v4. This patch focuses on fixing the existing hash table corruption
bug, and we defer discussion about UUID v4 since it reduces usable bits from 128 to 122, which we need to
investigate the existing usage of UUID (and UUID string) in our tree.

  • wtf/UUID.cpp:

(WTF::UUID::UUID):

  • wtf/UUID.h:

(WTF::UUID::UUID):
(WTF::UUID::isHashTableDeletedValue const):
(WTF::UUID::encode const):
(WTF::UUID::decode):

9:10 AM Changeset in webkit [288019] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

Inject Launch Services database before NSApplication is initialized
https://bugs.webkit.org/show_bug.cgi?id=235186
<rdar://87468788>

Reviewed by Chris Dumez and Simon Fraser.

To avoid the main thread getting stuck, the Launch Services database should be injected before NSApplication
is initialized, since the initialization now depends on the database.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/cocoa/LaunchServicesDatabaseManager.h:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.mm:

(WebKit::LaunchServicesDatabaseManager::waitForDatabaseUpdate):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

8:40 AM Changeset in webkit [288018] by Tyler Wilcock
  • 5 edits in trunk/Source/WebCore

AX: Move methods that are unnecessarily in AccessibilityRenderObject to AccessibilityNodeObject (part 1 of n)
https://bugs.webkit.org/show_bug.cgi?id=235204

Reviewed by Chris Fleizach.

Many methods in AccessibilityRenderObject don't actually do anything renderer-specific,
and thus should be in the base class AccessibilityNodeObject. This will help improve our support
for AX objects that normally have renderers, but don't because of CSS or ARIA markup (e.g. display: contents).

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isFileUploadButton const):
(WebCore::AccessibilityNodeObject::correspondingControlForLabelElement const):
(WebCore::AccessibilityNodeObject::correspondingLabelForControlElement const):
(WebCore::AccessibilityNodeObject::labelElementContainer const):
(WebCore::AccessibilityNodeObject::exposesTitleUIElement const):
(WebCore::AccessibilityNodeObject::hasTextAlternative const):

  • accessibility/AccessibilityNodeObject.h:

Add all of the above methods from AccessibilityRenderObject.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::determineDropEffects const):
(WebCore::AccessibilityRenderObject::isFileUploadButton const):
(WebCore::AccessibilityRenderObject::labelElementContainer const):
(WebCore::AccessibilityRenderObject::hasTextAlternative const):
(WebCore::AccessibilityRenderObject::exposesTitleUIElement const):
(WebCore::AccessibilityRenderObject::correspondingControlForLabelElement const):
(WebCore::AccessibilityRenderObject::correspondingLabelForControlElement const):

  • accessibility/AccessibilityRenderObject.h:

Move all of the above methods to AccessibilityNodeObject.

7:23 AM Changeset in webkit [288017] by graouts@webkit.org
  • 4 edits in trunk/Source/WebCore

Reduce use of KeyframeEffect::targetElementOrPseudoElement()
https://bugs.webkit.org/show_bug.cgi?id=235228

Reviewed by Antti Koivisto.

The KeyframeEffect::targetElementOrPseudoElement() method is one of the few remaining places
in animation-related code where we deal with PseudoElement objects. As it turns out, a lot of
its remaning call sites are not actually making any use of PseudoElement and should just use
the simple target() method.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::invalidate):

  • dom/Document.cpp:

(WebCore::Document::matchingAnimations):

  • dom/Element.cpp:

(WebCore::Element::getAnimations):

7:21 AM Changeset in webkit [288016] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

Stop forcing the creation of PseudoElement in KeyframeEffect
https://bugs.webkit.org/show_bug.cgi?id=235225

Reviewed by Antti Koivisto.

At the time we started supporting targeting pseudo-elements using the Web Animations API,
we resorted to some hack-ish code to enforce the creation of a PseudoElement should the
target of the animation be a ::before or ::after pseudo-element.

This isn't necessary, and was due to some incorrect code in
RenderTreeUpdater::GeneratedContent::updatePseudoElement() which this patch corrects.
Indeed, if there are animations targeting the pseudo-element in question, we should not
be removing the pseudo-element and exiting this method.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::didChangeTargetStyleable):
(WebCore::elementOrPseudoElementForStyleable): Deleted.

  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

5:40 AM Changeset in webkit [288015] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] Incorrect root inline box position when non-empty atomic inline level child box has height: 0px
https://bugs.webkit.org/show_bug.cgi?id=235218
<rdar://84617690>

Reviewed by Antti Koivisto.

Source/WebCore:

Even if the atomic inline level box itself does not stetch the line box, it may still affect the root inline box position
through baseline "syncing" (This is mostly the case with 0 tall boxes as (non-empty) atomic inline boxes in general stretch the line box).

Test: fast/block/line-layout/non-empty-inline-block-with-zero-height.html

  • layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp:

(WebCore::Layout::LineBoxVerticalAligner::computeRootInlineBoxVerticalPosition const):

LayoutTests:

  • fast/block/line-layout/non-empty-inline-block-with-zero-height-expected.html: Added.
  • fast/block/line-layout/non-empty-inline-block-with-zero-height.html: Added.
4:55 AM Changeset in webkit [288014] by Chris Lord
  • 8 edits
    2 moves
    1 add in trunk/Source/WebCore

[GTK][WPE] Share code between NicosiaGCGLLayer+ANGLE and NicosiaImageBufferPipe
https://bugs.webkit.org/show_bug.cgi?id=235182

Reviewed by Alejandro G. Castro.

Rename NicosiaGCGLANGLELayer to NicosiaGCGLANGLEPipe and have it
inherit from NicosiaImageBufferPipe instead of NicosiaGCGLLayer.

No new tests, no change in behaviour.

  • platform/TextureMapper.cmake:
  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:

(Nicosia::NicosiaImageBufferPipe::NicosiaImageBufferPipe):
(Nicosia::NicosiaImageBufferPipe::source const):
(Nicosia::NicosiaImageBufferPipe::layerContentsDisplayDelegate):
(): Deleted.
(Nicosia::WebCore::NicosiaImageBufferPipeSource::NicosiaImageBufferPipeSource): Deleted.
(Nicosia::WebCore::NicosiaImageBufferPipeSource::~NicosiaImageBufferPipeSource): Deleted.
(Nicosia::WebCore::NicosiaImageBufferPipeSource::handle): Deleted.
(Nicosia::WebCore::NicosiaImageBufferPipeSource::swapBuffersIfNeeded): Deleted.

  • platform/graphics/nicosia/NicosiaImageBufferPipe.h: Added.

(Nicosia::NicosiaImageBufferPipeSource::platformLayer const):

  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLEPipe.cpp: Renamed from Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp.
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLEPipe.h: Renamed from Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h.
  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:

(Nicosia::GCGLLayer::GCGLLayer):
(Nicosia::GCGLLayer::swapBuffersIfNeeded):

  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLTextureMapper::GraphicsContextGLTextureMapper):

  • platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLANGLE::platformDisplay const):
(WebCore::GraphicsContextGLANGLE::platformConfig const):
(WebCore::GraphicsContextGLANGLE::makeContextCurrent):

4:08 AM Changeset in webkit [288013] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebCore

[GTK][a11y] Unregister objects and clear cache when last client disconnect with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=234781

Reviewed by Adrian Perez de Castro.

We currently register objects when there are clients asking for cached items or connect event listeners. We
could unregister the objects and clear the cache if all the clients are disconnected. This patch adds a low
priority timer to clear the cache and unregister the objects if there aren't new clients after 10 seconds
since the last client disconnected.

  • accessibility/atspi/AccessibilityAtspi.cpp:

(WebCore::AccessibilityAtspi::initializeRegistry): Remove the calls to registerTrees(), since it's now done by
addClient() when the first client is added.
(WebCore::AccessibilityAtspi::addEventListener): Call addClient().
(WebCore::AccessibilityAtspi::addClient): Register the trees if this is the first client. Add the client to the
map and subscribe to NameOwnerChanged to remove the client when it's disconnected.
(WebCore::AccessibilityAtspi::removeClient): Remove the client and start the clear cache timer if the clients
map is empty.
(WebCore::AccessibilityAtspi::cacheClearTimerFired): Unregister all the objects and clear the cache.
(WebCore::AccessibilityAtspi::registerTrees const): Deleted.

  • accessibility/atspi/AccessibilityAtspi.h:

(WebCore::AccessibilityAtspi::hasClients const): Return whether there are clients connected.
(WebCore::AccessibilityAtspi::hasEventListeners const): Deleted.

  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::didUnregisterObject): Object was unregistered by the clear cache timer,
reset the path and isRegistered members.

  • accessibility/atspi/AccessibilityObjectAtspi.h:
  • accessibility/atspi/AccessibilityRootAtspi.cpp:

(WebCore::AccessibilityRootAtspi::registerTree): Return early if already registered.
(WebCore::AccessibilityRootAtspi::didUnregisterTree): Tree was unregistered by the clear caceh timer, reset the
treeIsRegistered member.
(WebCore::AccessibilityRootAtspi::embedded): Check if there are clients.

  • accessibility/atspi/AccessibilityRootAtspi.h:
3:56 AM Changeset in webkit [288012] by Antti Koivisto
  • 8 edits
    2 adds in trunk

[:has() pseudo-class] Avoid O(n2) in style invalidation with repeated DOM mutations
https://bugs.webkit.org/show_bug.cgi?id=234842
<rdar://problem/87397176>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/selectors/invalidation/has-complexity-expected.txt: Added.
  • web-platform-tests/css/selectors/invalidation/has-complexity.html: Added.

Source/WebCore:

Use invalidation selectors to check if a given mutation needs :has() invalidation.

Test: imported/w3c/web-platform-tests/css/selectors/invalidation/has-complexity.html

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorChecker.h:
  • style/ChildChangeInvalidation.cpp:

(WebCore::Style::ChildChangeInvalidation::invalidateForChangedElement):

Invalidate only if the invalidation ruleset has an invalidation selector that matches
the added/removed element. Even in that case we only need to invalidate if that selector
has not already matched within this parent.

As we don't have persistent state that would remember what already matched accross multiple
mutations, approximate this by checking if the closest sibling matched.

(WebCore::Style::ChildChangeInvalidation::invalidateForHasBeforeMutation):
(WebCore::Style::ChildChangeInvalidation::invalidateForHasAfterMutation):

  • style/ChildChangeInvalidation.h:

LayoutTests:

1:42 AM Changeset in webkit [288011] by Nikolas Zimmermann
  • 6 edits
    2 adds in trunk/Source/WebCore

[LBSE] Introduce SVGContainerLayout
https://bugs.webkit.org/show_bug.cgi?id=235101

Reviewed by Rob Buis.

Upstream SVGContainerLayout, a utility class centralizing
the "layout children in SVG render tree" algorithm. The legacy
engines relies on various helper methods in SVGRenderingSupport -- for
LBSE it's all in one place: SVGContainerLayout.

The actual two-pass algorithm is described in the technical document
covering LBSE. It's identical to the LBSE downstream version, which
used to pass all layout tests.

Currently the functionality is not observable, as we don't create
LBSE renderers yet.

Covered by existing tests, no change in behaviour.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderObject.h:

(WebCore::RenderObject::isSVGLayerAwareRenderer const):

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::layoutChildren):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::layout):

  • rendering/svg/SVGContainerLayout.cpp: Added.

(WebCore::SVGContainerLayout::SVGContainerLayout):
(WebCore::SVGContainerLayout::layoutChildren):
(WebCore::layoutLocationFromRenderer):
(WebCore::setLayoutLocationForRenderer):
(WebCore::SVGContainerLayout::positionChildrenRelativeToContainer):
(WebCore::SVGContainerLayout::verifyLayoutLocationConsistency):
(WebCore::SVGContainerLayout::layoutDifferentRootIfNeeded):
(WebCore::SVGContainerLayout::invalidateResourcesOfChildren):
(WebCore::SVGContainerLayout::layoutSizeOfNearestViewportChanged const):
(WebCore::SVGContainerLayout::transformToRootChanged):

  • rendering/svg/SVGContainerLayout.h: Added.
12:02 AM Changeset in webkit [288010] by J Pascoe
  • 5 edits in trunk

Expose way to encode CTAP commands with only the hash of ClientDataJSON
https://bugs.webkit.org/show_bug.cgi?id=235191
<rdar://problem/87557846>

Reviewed by Brent Fulgham.

Source/WebKit:

CTAP command encoding covered by existing tests (see CtapRequestTest) and the SPI
in new API tests.

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(+[_WKWebAuthenticationPanel encodeMakeCredentialCommandWithClientDataHash:options:userVerificationAvailability:]):
(+[_WKWebAuthenticationPanel encodeGetAssertionCommandWithClientDataHash:options:userVerificationAvailability:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):
Tests for new SPIs.

Note: See TracTimeline for information about the timeline view.