Upgrade to upstream d550dd3c808e (module-loader rewrite)#184
Upgrade to upstream d550dd3c808e (module-loader rewrite)#184sosukesuzuki wants to merge 436 commits intomainfrom
Conversation
https://bugs.webkit.org/show_bug.cgi?id=312230 rdar://174708985 Reviewed by Jer Noble. These tests were not waiting for full screen to exit. Fix by modifying the tests to do so, and also fix an underlying issue where the delegate callback was not getting called in the first place since the normal IPC round-trip through the web process won't complete after the page is closed. Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/CloseWebViewAfterEnterFullscreen.mm * Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp: (WebKit::WebFullScreenManagerProxy::detachFromClient): * Tools/TestWebKitAPI/Tests/WebKit/WKWebView/CloseWebViewAfterEnterFullscreen.mm: (TestWebKitAPI::TEST(CloseWebViewAfterEnterFullscreen, VideoFullscreen)): (TestWebKitAPI::TEST(CloseWebViewAfterEnterFullscreen, ElementFullscreen)): Canonical link: https://commits.webkit.org/311176@main
…if a private header in the relevant project gets changed/added/removed https://bugs.webkit.org/show_bug.cgi?id=312060 rdar://169102773 Reviewed by Elliott Williams and Geoffrey Garen. The Verify Module script phase ran on every incremental build because it had no declared outputs and no discovered dependency file, so the build system always considered it out of date. This patch follows the pattern established by the Audit SPI build phase in WebKit.xcodeproj: declare a dependencyFile (.d) and a timestamp output so the build system can skip the phase when nothing has changed. * Source/WTF/Scripts/modules-verifier/library-modules-verifier.py: - Add a --depfile argument that writes a Makefile-style discovered dependency file listing each header from the TAPI JSON filelist. - Move argument parsing and JSON loading before the ENABLE_WK_LIBRARY_MODULE_VERIFIER check so that the dependency file is always emitted, even when the verifier is disabled. * Source/bmalloc/bmalloc.xcodeproj/project.pbxproj: * Source/WTF/WTF.xcodeproj/project.pbxproj: * Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj: - Add dependencyFile = "$(DERIVED_FILES_DIR)/verify-module.d" so the build system reads discovered dependencies after each run. - Add outputPaths with a verify-module.timestamp file so the build system has an output to compare input timestamps against. - Remove the $(DSTROOT) JSON filelist from inputPaths, since it does not exist in non-deployment builds and would cause the phase to be considered always dirty. The DSTROOT JSON is still passed directly to the verifier in the deployment code path, and the discovered dependency file covers header-level change tracking regardless of which JSON filelist is used. - Update the inline shell script to: derive the depfile path from SCRIPT_OUTPUT_FILE_0, pass --depfile to the verifier, write an empty dependency file during installhdrs, and touch the timestamp on completion. When building with the command ``` xcodebuild -scheme "Everything up to JavaScriptCore" -UseSanitizedBuildSystemEnvironment=YES -ShowBuildOperationDuration=YES -workspace <workspace-dir> -configuration Debug -destination platform=macOS,devicetype=Mac,arch=arm64e SYMROOT=<build-dir> OBJROOT=<build-dir> SHARED_PRECOMPS_DIR=<build-dir>/PrecompiledHeaders SDKROOT=macosx.internal -hideShellScriptEnvironment ``` this saves an average of `1.6784` seconds. Canonical link: https://commits.webkit.org/311177@main
https://bugs.webkit.org/show_bug.cgi?id=312101 rdar://174609179 Reviewed by Alan Baradlay (OOPS\!). Various fixes. * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/dashed-function-cycles-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/dashed-function-eval-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/function-attr-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/function-shadow-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/local-attr-substitution-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/local-if-substitution-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-mixins/parameter-types.tentative-expected.txt: * Source/WebCore/style/PropertyCascade.cpp: (WebCore::Style::PropertyCascade::functionResultProperty const): * Source/WebCore/style/PropertyCascade.h: * Source/WebCore/style/StyleBuilder.cpp: (WebCore::Style::Builder::resolveFunctionResult): Initialize m_currentProperty when resolving the result descriptor. * Source/WebCore/style/StyleBuilderState.h: (WebCore::Style::BuilderState::addGuardedFunctionContexts): Helper to add parent context guards. * Source/WebCore/style/StyleSubstitutionContext.h: (WebCore::Style::GuardedSubstitutionContexts::addFunctionContextsFrom): * Source/WebCore/style/StyleSubstitutionResolver.cpp: (WebCore::Style::SubstitutionResolver::resolveAndRegisterDashedFunctionArguments): (WebCore::Style::SubstitutionResolver::substituteDashedFunction): Initialize element for nested style builder. Pass guarded substitution contexts from parent to the nested builder. Canonical link: https://commits.webkit.org/311178@main
https://bugs.webkit.org/show_bug.cgi?id=312161 Reviewed by Anne van Kesteren. Upstream commit: web-platform-tests/wpt@bdb1b5a Canonical link: https://commits.webkit.org/311179@main
https://bugs.webkit.org/show_bug.cgi?id=312051 Reviewed by Xabier Rodriguez-Calvar. The only exit cases were when RICE_AGENT_POLL_WAIT_UNTIL_NANOS was returned from the rice_agent_poll() call and when the ICE agent was reported as closed. * Source/WebCore/platform/rice/RiceGioBackend.cpp: (agentSourcePrepare): Canonical link: https://commits.webkit.org/311180@main
https://bugs.webkit.org/show_bug.cgi?id=312050 Reviewed by Yusuke Suzuki. 311326@main added an ArrayLengthStore inline cache that handles ArrayWithInt32 and ArrayWithContiguous. This patch extends it to ArrayWithDouble by selecting the hole pattern (encoded empty JSValue vs PNaN) at the shape guard, the same way FTL initializeArrayElements does, and using a single store64 clear loop. The Int32/Contiguous fast path gains only a single `movz #0`. FTL: TipOfTree Patched array-length-reset-double 63.4825+-4.1166 ^ 13.0505+-0.4404 ^ definitely 4.8644x faster DFG: TipOfTree Patched array-length-reset-double 61.7985+-0.9654 ^ 15.8700+-0.5495 ^ definitely 3.8940x faster Baseline: TipOfTree Patched array-length-reset-double 121.8742+-2.5465 ^ 75.3147+-0.3700 ^ definitely 1.6182x faster Tests: JSTests/microbenchmarks/array-length-reset-double.js JSTests/stress/array-length-store-ic-double-noncow.js JSTests/stress/array-length-store-ic-double-then-int32.js * JSTests/microbenchmarks/array-length-reset-double.js: Added. (test): * JSTests/stress/array-length-store-ic-double-noncow.js: Added. (shouldBe): (f): * JSTests/stress/array-length-store-ic-double-then-int32.js: Added. (shouldBe): (f): * Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp: (JSC::InlineCacheCompiler::generateWithGuard): Canonical link: https://commits.webkit.org/311181@main
https://bugs.webkit.org/show_bug.cgi?id=312212 rdar://171850184 Reviewed by Brent Fulgham. The hotels.com animation quirk was not firing on first click during page load. Two issues: 1. The isInitial() guard blocked the quirk because the site's @supports Safari-detection hack sets animation: none (specificity 0,5,0) on the target menu containers, making isInitial() return true. Replace with hasClassName("uitk-menu-container") + hasClassName ("uitk-menu-open") pre-filters. The first filters out ~99% of elements cheaply. The second ensures the quirk only applies when the menu is actively being opened, not in its closed state. 2. The menu-fade-in animation used fill-mode Forwards, which left a 0.06s window during the animation delay where the @supports block's opacity: 1 was visible, causing a flash. Changed to fill-mode Both so the animation's start state (opacity: 0) applies during the delay via backwards fill. * LayoutTests/fast/css/hotels-animation-quirk.html: * Source/WebCore/page/Quirks.cpp: * Source/WebCore/page/Quirks.h: * Source/WebCore/style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjustForSiteSpecificQuirks const): Canonical link: https://commits.webkit.org/311182@main
…s not call functions https://bugs.webkit.org/show_bug.cgi?id=312227 rdar://174706330 Reviewed by Keith Miller. This patch drops most of metadata for atomic instructions by using the same mechanism in normal load/store and SIMD load/store. We add a fast path and a slow path which handles complicated LEB decoding completely. Also now pointer construction code is completely unified by using the helper macros defined for fast and slow path of these memory related operations. * JSTests/wasm/stress/atomic-cmpxchg-large-offset.js: Added. (async test): * Source/JavaScriptCore/llint/InPlaceInterpreter64.asm: * Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp: (JSC::Wasm::IPIntGenerator::atomicLoad): (JSC::Wasm::IPIntGenerator::atomicStore): (JSC::Wasm::IPIntGenerator::atomicBinaryRMW): (JSC::Wasm::IPIntGenerator::atomicCompareExchange): (JSC::Wasm::IPIntGenerator::atomicFence): Canonical link: https://commits.webkit.org/311183@main
https://bugs.webkit.org/show_bug.cgi?id=312126 Reviewed by Darin Adler and Anne van Kesteren. XMLSerializer had several namespace-related bugs: 1. appendNamespace() emitted a redundant xmlns="" on elements whose parent already reset the default namespace to empty. The check only tested for a non-null default namespace entry, but the empty string impl is non-null. Fix: also check that the existing default namespace has non-zero length. 2. appendOpenTag() always emitted a default namespace declaration for prefix-less elements with a namespace URI, even when a prefix already mapped to that URI was in scope. Fix: look up the URI in the bidirectional namespace map and emit prefix:localName when a match is found. Skip this when the element carries its own xmlns attribute, matching Firefox and Chrome behavior. 3. appendOpenTag() prepended "xml:" for elements in the XML namespace but appendEndTag() used tagQName().toString(), producing mismatched tags (e.g. <xml:foo>...</foo>). Similarly, elements whose prefix was resolved from an ancestor namespace mapping had mismatched end tags. Fix: store the full computed qualified name on a stack and use it for both start and end tags, replacing the previous WeakHashMap with a Vector-based stack since elements open and close in strict LIFO order. * LayoutTests/fast/dom/XMLSerializer-attribute-namespace-prefix-conflicts-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/domparsing/XMLSerializer-serializeToString-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/domparsing/XMLSerializer-serializeToString.html: * Source/WebCore/editing/MarkupAccumulator.cpp: (WebCore::MarkupAccumulator::appendEndTag): (WebCore::MarkupAccumulator::appendNamespace): (WebCore::MarkupAccumulator::appendOpenTag): * Source/WebCore/editing/MarkupAccumulator.h: Canonical link: https://commits.webkit.org/311184@main
https://bugs.webkit.org/show_bug.cgi?id=312137 Reviewed by Darin Adler. TextIterator::handleTextRun() was unconditionally collapsing both newlines and tabs to spaces. For white-space:pre-line, newlines should be preserved. Check preserveNewline() before treating a newline as collapsible whitespace. No new tests, rebaselined existing test. * LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/getter-expected.txt: * Source/WebCore/editing/TextIterator.cpp: (WebCore::TextIterator::handleTextRun): Canonical link: https://commits.webkit.org/311185@main
https://bugs.webkit.org/show_bug.cgi?id=312208 Unreviewed Skia update. git log --pretty='%h %s' f44d7db6880544566100ea50805fd7bcddfa0f4e..0e98a9c635bb1395ce9551d0812c7c4afb0f9776 0e98a9c635 Update fiddler-base for 701719264ab0 bc1df263ff Remove old Dawn file 7de9e41542 Roll vulkan-deps from 3b423b7f63de to a4418d38ded4 (2 revisions) 0cb3553302 Roll ANGLE from 9015bc2851d8 to fd958ac6533e (13 revisions) c84e8a86b1 Roll Dawn from cbeb98c08875 to d2eac07e6a1a (9 revisions) 3950db9cec Roll Skia Infra from e96d81a3b47e to a27de25378c2 (7 revisions) ef377f86f9 Roll debugger-app-base from 396232912f82 to 13903d912e2d 55ddd6bb8b Roll vulkan-deps from 0ffb9a5e1ddf to 3b423b7f63de (1 revision) 8d35796258 Roll SKP CIPD package from 559 to 560 8b7ece26df Roll vulkan-deps from 00e9e22a37b1 to 0ffb9a5e1ddf (1 revision) 6942f5774d Roll vulkan-deps from b325d2324719 to 00e9e22a37b1 (6 revisions) 8cbf3db1a0 Reland^3 "Fix VkTestUtils's VulkanPreferredFeatures usage" a8128c7adc [graphite] add fine grained bounds checking 1b23372409 Roll vulkan-deps from fc3031169f9f to b325d2324719 (3 revisions) 7c8b85349a Better font request 0080d03032 Prefer IDWriteFontFace3 to Font and Family 5269247b7a skhdr::AdaptiveGlobalToneMap: Fix OOB write f1770b4781 [fiddler] Fix Docker build 6fc2b04072 MiraclePtr: Enable PartitionAlloc in benchmark 0531a269f8 Update fiddler-base for 3c48577c7fb6 ff8d5f355d [fiddle] Update fiddler-backend Dockerfile 633df1edd9 Roll recipe dependencies (trivial). fc9def4d8f Roll recipe dependencies (trivial). bc21416b22 Roll ANGLE from 641c0d0e1bbd to 9015bc2851d8 (11 revisions) 941162ca0a Roll recipe dependencies (trivial). 9d3c1a6797 Roll Skia Infra from ed695f1e8369 to e96d81a3b47e (6 revisions) 265ffa0da5 Roll Dawn from 4867e85a01c1 to cbeb98c08875 (12 revisions) 25b01e5f4e Roll vulkan-deps from 1c9ab5c20bf7 to fc3031169f9f (13 revisions) d306272840 [graphite] Change to Pilot draw system 240b3a70ea Improve readability of SkScan_Hairline 49119f4efd Roll recipe dependencies (trivial). 339e3c339b Revert "Reland "[skparagraph] Render visible hyphen at soft hyphen (U+00AD) line breaks"" 2c53f5fc97 Roll recipe dependencies (trivial). 9a0def8b84 Reland "[skparagraph] Render visible hyphen at soft hyphen (U+00AD) line breaks" 48ae88bb25 [graphite] sample sdf lcd text atlases at f32 23005550b3 [graphite] Simplify VulkanCaps format table initialization b83f86ba17 Expose bitwise operators for skgpu::GpuStatsFlags enum in public API 20c304440c Fix compilation of d3d backend w/o GPU_TEST_UTILS 6b4d0931ad [graphite] Add time-limited resource cache purge test a64994ff7f Fix SkScan_Hairline cap and close handling 35741cfa43 Roll vulkan-deps from eba20b140bce to 1c9ab5c20bf7 (2 revisions) af67d5555e [rust jpeg] Default rust ICC and EXIF kill switches to enabled eb99a007f3 Fix SkJSONReader float parsing e3454e8996 [rust bmp] Fix of rust ICC padding issue with skcms_Transform 4d0f5389e1 Roll recipe dependencies (trivial). 05618ed6cd Roll recipe dependencies (trivial). 08062ea9c6 Roll ANGLE from 9b51adf4650a to 641c0d0e1bbd (15 revisions) 8a783c9dff Roll Skia Infra from 61875882dca4 to ed695f1e8369 (14 revisions) a9b53e74ff Roll Dawn from 09dfd1013b51 to 4867e85a01c1 (11 revisions) c71610b874 Roll recipe dependencies (trivial). fa5eb54446 Roll skcms from 92c79500bad2 to 15db2430b628 (1 revision) 7c46cb639d Roll vulkan-deps from ae85abaff72f to eba20b140bce (8 revisions) d2b0bd1257 [graphite] add textureSize intrinsic 5674b43f92 Roll recipe dependencies (trivial). bcbaa0b92e [skcapture] Correct setSurfaceBase call to set the base drawing canvas 19be0d766a [rust bmp] Fix issue on rust icc parsing detected by fuzzer 9bf3079fbf Roll recipe dependencies (trivial). fdcfb5bcf4 Fixed Graphite non-MSAA clipping bug e944c3658a [Graphite] Bin Uniform Buffer binding sizes into powers of 2. a58cfba9a3 Update PrecompileContext::getPipelineLabel to, optionally, return the uniqueHash. 4d8ed5346f Fix SkFontDescriptor kSlant documentation d9ae8eed20 Move GrD3DDescriptorHeap::GenID out of header fa399f888e Roll recipe dependencies (trivial). 1639728073 [graphite] Consolidate kClear blends to kSrc w/ transparent color 2b4a989e74 Add missing optional include. 2203e16d9d Roll Skia Infra from 84b209ba05f1 to 61875882dca4 (14 revisions) ddd649bacc Roll Dawn from 6e7fb3d96c0a to 09dfd1013b51 (11 revisions) b265db0db0 Roll ANGLE from 395468796255 to 9b51adf4650a (8 revisions) bb4a833d20 Roll recipe dependencies (trivial). 999fbd695e Roll vulkan-deps from 8f5de81f5f44 to ae85abaff72f (4 revisions) 632515d141 Enable PartitionAlloc by default 8e2d520cf7 Revert "Reland^2 "Fix VkTestUtils's VulkanPreferredFeatures usage"" 3c68f3ffd7 Release Canvaskit v0.41.1 3d8fadd90a Use SkEndianSwap32 to convert DirectWrite tags 2798975651 [graphite] Add polyline helper class 2888af578c [graphite] Enable textureRead in SkSL frag shader 6ebbf0d597 Use dedicated AVX512 intrinsics for load_8888 764af39547 Roll recipe dependencies (trivial). b8f966a30b Graphite: Make Dawn debuggable on Windows c28e785239 Log errors during texture creation in Ganesh Vulkan in Android. d0c090071b Merge 4 release notes into RELEASE_NOTES.md 6fb8964ebf Update Skia milestone to 149 fe1e9f3383 Update fiddler-base for 2321f0a3bec5 de9939509f [graphite] Allow assignment of a max duration to spend purging resources 0e0d6e799f Reland^2 "Fix VkTestUtils's VulkanPreferredFeatures usage" 11121a7952 [Fontations] Fix test_shifted_named_instance_index expectation 55d88dd75f Temporarily remove Bazel from the CQ 4e5654207f [Fontations] Roll Fontations e9ed4fc9f1 Roll recipe dependencies (trivial). 1c529b84c6 Roll ANGLE from 0fe2ac00168e to 395468796255 (2 revisions) 27aa91a34e Roll Dawn from d641a1d08b20 to 6e7fb3d96c0a (5 revisions) 2749807ad6 Roll recipe dependencies (trivial). 181358dc6b [graphite] Sign-encode embedded data length in PaintParamsKeys 8f4780409e Fix case-sensitivity of alias 'to' tags 901d16163e [graphite] Let PaintParamsKeyBuilder preserve contents after getting ID db497605a3 Harden possible overflow in c++ png codec 2085e414ce [graphite] Allow overlapping non-stencil depth-only draws 0a19092321 Add additional Android PaintOptions e4962db196 GraphiteDawnTestContext: remove adapter sorting e264d870a3 Add support for fonts-modification tag. 0051f91afb Roll vulkan-deps from 1a22843be2c1 to 8f5de81f5f44 (1 revision) 163dfdf500 Roll ANGLE from 00c92e11df2f to 0fe2ac00168e (4 revisions) 27bce0f4da Roll Skia Infra from 0f580377510d to 84b209ba05f1 (6 revisions) 9049efafb5 Roll Dawn from 33cdea18607f to d641a1d08b20 (8 revisions) 59d1175013 Roll skottie-base from cffc4a91edf7 to 36b2e3d49150 14306e9961 Roll debugger-app-base from 60a6ebd2de6f to 396232912f82 6308654d8a Roll shaders-base from 92fc9e89142c to 1537a8ed61c9 bc5be29f38 Roll jsfiddle-base from 72ed78485f85 to 268fe17ee4d6 207c6721c6 Roll SKP CIPD package from 558 to 559 52b7937276 Roll vulkan-deps from 0ced1107c628 to 1a22843be2c1 (1 revision) 500bc1651c Roll vulkan-deps from df358fa50a82 to 0ced1107c628 (2 revisions) 5e5a7f252b Roll recipe dependencies (trivial). b227ca44c8 Roll recipe dependencies (trivial). ec209c206a Roll recipe dependencies (trivial). 50f3a9aaa1 Roll recipe dependencies (trivial). e594b6dd7f Roll skcms from 24b120dbf97f to 92c79500bad2 (1 revision) 8df7eb0b64 [fiddler] Fix Docker build 4ecb7b2845 Roll recipe dependencies (trivial). d1fdab2a70 Add product font customization loader 762dc9c3e0 Add support for parsing family-list tags 59b420b3bb Revert "Reland "Fix VkTestUtils's VulkanPreferredFeatures usage"" d3bc485d50 Roll vulkan-deps from a858b99b2007 to df358fa50a82 (5 revisions) dae2fb1d04 [graphite] VerticesPaddingTest remove empty submit_recording 66a8e08dd9 [graphite] Add isTracked checks to Graphite CommandBuffers 3b0f0f04f9 [graphite] Replicate Metal texture format feature table 9277e92a63 [bzl] Make //dm build again 4134f80911 Revert "[skparagraph] Render visible hyphen at soft hyphen (U+00AD) line breaks" 5d847ba5c4 Update fiddler-base for 3ea928751615 c07c67045b Roll ANGLE from 68fa11fce7bc to 00c92e11df2f (12 revisions) 75af7f47d3 Roll Skia Infra from 3f18b8333627 to 0f580377510d (43 revisions) 30cddb3591 Roll Dawn from 16fc537f8353 to 33cdea18607f (15 revisions) 1a5adfdbf6 Roll vulkan-deps from 8fd69da666f7 to a858b99b2007 (5 revisions) 9ae8231be1 [pdf] Fix pfb copy offets 0566b2f5f0 Use 16-bit size for ResourceKeys cc0c72cd52 [skparagraph] Render visible hyphen at soft hyphen (U+00AD) line breaks 5bb7046058 [graphite] Remove stale @available checks for Metal backend 9005eb9104 [graphite] Start removing ColorTypeInfo from Caps 733217467f Reland "Fix VkTestUtils's VulkanPreferredFeatures usage" b6ce07440b Roll vulkan-deps from cfd015ad041d to 8fd69da666f7 (3 revisions) fbadf88bf6 [graphite] Actually query for protected memory support in VulkanCaps 3669cfd23d Roll ANGLE from 35e17fe6e81a to 68fa11fce7bc (6 revisions) 973117cfa8 Roll Skia Infra from 3457a962903e to 3f18b8333627 (15 revisions) 534c1d7525 Roll Dawn from cacb2e67d9cd to 16fc537f8353 (4 revisions) bb9fd86537 Roll vulkan-deps from b79339a8e7c5 to cfd015ad041d (4 revisions) e4054f3af1 Roll recipe dependencies (trivial). 53a48901dd Roll recipe dependencies (trivial). 31f3306f9c Manual roll Dawn from 71144ccb331a to cacb2e67d9cd (51 revisions) bdeebacf23 [spirv] Add MatrixStride annotations to matrix arrays 48f02356fa Roll recipe dependencies (trivial). de7f6e2fe5 SkAutoLocaleSetter 0eeac438c8 Only enable AVX512 on newer Intel chips and any AMD chips ae0fadf61b [rust jpeg] Define CI/CQ for all rust features bd767e9921 Correct default for width for deserialization 36c30d374c Reland "Disable PartitionAlloc by default." 7062d6d68c Roll vulkan-deps from 013f1470e148 to b79339a8e7c5 (1 revision) 6740cf3e4b Revert "Disable PartitionAlloc by default." c2363c39c2 Roll ANGLE from 07f101fbae2d to 35e17fe6e81a (9 revisions) 437e7e93fb Roll Skia Infra from a4975f7c7688 to 3457a962903e (15 revisions) a657b54462 Roll recipe dependencies (trivial). e0b25041a5 Roll vulkan-deps from ce3343ef3104 to 013f1470e148 (6 revisions) a5f3b70100 Rename SkOpts constants to be more general ade808582f [graphite] WrapTexture does not require SkColorType, can force opaque for any color type ff2fab091d Fix potential AHardwareBuffer lifetime issues in tests 3d014aec54 Add macro to handle GPU_TEST_UTIL version of cc_library and objc_library cc10fb5d95 Roll vulkan-deps from 78ff12d249d4 to ce3343ef3104 (7 revisions) 1d5799179a Roll ANGLE from 8d8796935e4f to 07f101fbae2d (10 revisions) 105276f11c Roll Skia Infra from 93dc3a99a732 to a4975f7c7688 (15 revisions) 707f4957f5 Roll recipe dependencies (trivial). f37239a7a6 [graphite] turn off DrawListLayer caps flag 2519988558 Roll recipe dependencies (trivial). dfd8f80028 Remove extraneous cases from SkImageShader.cpp d86a7ff3a0 [graphite] Enable forward merging 4e59743f22 [graphite] Use TextureFormatXferFn instead of Caps::supportedTransferColorType() cda5fd18c3 Reland "[rust jpeg] Add ForceSkExif method" c872d1b91a Fix PixelsRecTest for 32 bits ea0d3cda96 Roll vulkan-deps from 456d4a61c67d to 78ff12d249d4 (25 revisions) cebb719bb5 Manual roll Dawn from 68360f6b5eb0 to 71144ccb331a (10 revisions) 6e2c1ebf20 Add fuzzer for AdaptiveGlobalToneMap::parse 70deec9275 Roll recipe dependencies (trivial). d8097f3103 Revert "[rust jpeg] Add ForceSkExif method" 8dcde79fef Fix name for grshape fuzzer 072ccdc1ff Roll recipe dependencies (trivial). bf15cfab3b Update Skia Vulkan Headers to 1.4.347 ; VkDeps manual roll aba405ee60 Add three new Android-specific Precompile PaintOptions 6fef2e4f5d [graphite] Remove UploadSource from Texture::canUploadOnHost d50fd57887 Add tests and docs to Sk*PixelsRec 4320748aa7 Validate sizes in mskp reading and SkTableMaskFilter e001e6901e Reland "Improve readibility of SkCpu and add documentation" bfb325fa7a [graphite] Add TextureProxy::format() helper function f8968d236f Ignore workspace-level metadata for agents 66fc1702b7 [rust jpeg] Add ForceSkExif method cdaae3e3fd Roll Skia Infra from 08b8f9693e62 to 93dc3a99a732 (19 revisions) e8677268e9 Roll Dawn from 0d2b886d015d to 68360f6b5eb0 (6 revisions) 6d7ade9386 Roll debugger-app-base from 776a8611a0e0 to 60a6ebd2de6f eeadbfde36 Roll SKP CIPD package from 557 to 558 ca2d3c5cca Manual roll ANGLE from 0755fa45413a to 8d8796935e4f (11 revisions) d4318add72 Roll recipe dependencies (trivial). 442edcb09b [graphite] Plumb TextureProxyView through read/upload codepaths f04d09d107 Use a local data copy for strike deserialization 3f9969421a Terracotta-Phase-1: Reorder member destruction 3752d89e02 Add a cache of font variation typefaces to SkParagraph's FontCollection 06dc7a4db2 Update fiddler-base for 93dc3a99a732 e3c3123107 Avoid duplicate calls to the same logic code. 8c705ac863 Use SkSafeMath to prevent overflow in pixel offset calculations. 9313fe1fcf Manual roll Dawn from 012f6e92c62b to 0d2b886d015d (7 revisions) 5299de75c9 Revert "Improve readibility of SkCpu and add documentation" 9beded929d Roll recipe dependencies (trivial). a21eff15e5 Roll ANGLE from 95a343232b1b to 0755fa45413a (9 revisions) be558d9fd2 Roll Skia Infra from b555f647994c to 08b8f9693e62 (17 revisions) f22d278f01 Roll Dawn from 4cc0cdeb1d3b to 012f6e92c62b (10 revisions) 4f4f07084e Roll recipe dependencies (trivial). 1b71548528 [graphite] Support colorspace and alpha type conversions in TextureFormatXferFn aec9a7ab7e Roll recipe dependencies (trivial). f68c680662 [fontations] Fix name and position 7d75edb8b9 Improve readibility of SkCpu and add documentation 7dde993537 Roll recipe dependencies (trivial). bee5a06ef5 Bump libpng to 1.6.56 10c97361d8 Add VulkanYcbcrConversionInfo to VulkanTextureInfo::toBackendString() 77dfb68002 Roll ANGLE from d48f7325fd15 to 95a343232b1b (8 revisions) d5408e29eb Roll Skia Infra from c0c4047bca07 to b555f647994c (19 revisions) 62070c0f08 Roll Dawn from d0fef1eb21e8 to 4cc0cdeb1d3b (14 revisions) 6a2ef28d95 [rust jpeg] Initial implementation of rust_exif 19425db9f5 Avoid clobbering priorities for error and fatal logs in RenderEngine 437cc310ba Skip Skottie_Shaper_CTStrict on !NativeFonts 8ccc0bd5ad [graphite] Fix conversion to gray in TextureFormatXferFn::MakeCpuToGpu 9f01ac63a9 [graphite] Fix forward uint typo b0bc886ed8 Letter spacing in Script Languages 19dcef20e8 [graphite] Let uniform manager write scalar u32 8c56be7c1d [graphite] Refactor TextureFormatXferFn to pre-build raster pipeline fb728bd360 Update fiddler-base for 939e272c5550 81ef2238cb skhdr::AGTM: Fix PCHIP computations 5453b8bc7e Roll recipe dependencies (trivial). 8bdb4ddaaa Roll ANGLE from 4c2a59f9dc9b to d48f7325fd15 (5 revisions) 51725ae49e Roll Skia Infra from 3cc489476e20 to c0c4047bca07 (27 revisions) eb6ae6d65b Roll Dawn from 5e0b99b59ef8 to d0fef1eb21e8 (17 revisions) 536f9b540f Roll recipe dependencies (trivial). 789ad6b127 Roll recipe dependencies (trivial). 8114b86610 [shaper] Ignore hb_font_funcs_set_variation_glyph_func e261502f39 [skottie] Workaround for CoreText autosize issues 4b12dc39b4 Roll recipe dependencies (trivial). d40193bd4d Roll recipe dependencies (trivial). daa47dfdd1 Add R16_float_SkColorType c74dfcdcbb [graphite] Add support for 3-channel texture format conversions f4e59f82dc Roll recipe dependencies (trivial). 7593da8145 Roll recipe dependencies (trivial). e77bb55723 Manual roll ANGLE from d05ec6ac7d97 to 4c2a59f9dc9b (13 revisions) 517b0bfb20 Manual roll Dawn from 7d5e33062472 to 5e0b99b59ef8 (45 revisions) a465876e31 [graphite] Avoid nan conversion in channel_to_bits in TextureFormatTest e07be7c562 Roll recipe dependencies (trivial). 3619bda0eb [Fontations] Roll Fontations e7a700dece Roll recipe dependencies (trivial). dac1b13a70 Revert "[graphite] Stop using NaN in TextureFormatTest for padding" bf4f2763b6 Revert "Manual roll vulkan-deps from 614147cead1f to 0a09b00ced4e (22 revisions)" 62841a512d [graphite] Stop using NaN in TextureFormatTest for padding b17d675d9e [graphite] Add TextureFormatXferFn API to handle format <-> colortype conversions fb6acef456 [graphite] Generate MSAA LUT on global cache c2b58922e3 Manual roll vulkan-deps from 614147cead1f to 0a09b00ced4e (22 revisions) 8463e433de [pdf] Ignore typefaces with no size or glyphs 562e3c9765 [Fontations] Add palette index bounds check in COLR rendering a81bf411a5 Roll ANGLE from ab0ff0f644fb to d05ec6ac7d97 (19 revisions) 94a03fa99a Roll Skia Infra from 82536ae88c7e to 3cc489476e20 (5 revisions) 6f069dca06 Roll skottie-base from 59099cc38eaf to cffc4a91edf7 42a6eb1dc5 Roll shaders-base from a9187546c2d1 to 92fc9e89142c 964c3b33fd [graphite] Flesh out texture format data transfer unit tests 812822ad5c Add SkPixelStorage base class for SkPixelRef and TextureProxy be80167f2d Explicitly build with X11 for dawn 569cc04751 Add headers for std::clamp and std::round ac9e468d94 Fix SkTypeface_Mac::onGetUPEM 83f73f7e4b Roll recipe dependencies (trivial). 79a14289c6 Reorder log before assert 7c09738f4b Do not return a negative size on failing to find var coords f366b823e2 [vk] Zero-intialize VmaAllocationCreatInfo 9c227d1c5d skhdr::ContentLightLevelInformation: Add uint16 interface 8d4c76b920 Roll recipe dependencies (trivial). 1cae337f9b Roll ANGLE from aef03d88aba5 to ab0ff0f644fb (10 revisions) 8e3f56515b Roll SwiftShader from 313545f85af7 to 89556131bf9d (1 revision) 5e93f9b55d Roll Skia Infra from d1635669ba81 to 82536ae88c7e (10 revisions) 2c353a87f8 Roll Dawn from 5d5f225be2ed to 7d5e33062472 (12 revisions) a05b62c95a Roll vulkan-deps from 66b781cbf618 to 614147cead1f (10 revisions) fed75b6155 Roll recipe dependencies (trivial). f0b6154632 [graphite] Fix MSRTSS support advertising in Dawn 2992179f7d Upgrade MacBookPro11,5 jobs to Mac 12.7 80a9ee659b Add presubmit Vulkan test tasks for relevant change areas 98fc58b4a4 Revert "Fix VkTestUtils's VulkanPreferredFeatures usage" 7c5e874e00 Add Graphite+Vulkan test job to the CQ 332c1da52b [pathbuilder] Allow storage growth for simple shapes 72009acc50 Fix VkTestUtils's VulkanPreferredFeatures usage f35b9063a6 Make install docs more clear 2ab6479f9e Manual roll Dawn from 3510e36c0125 to 5d5f225be2ed (6 revisions) eca4ed68c9 [graphite] Use syncedSubmit helper to busy wait when we can't yield to WebGPU 07604c6be4 Roll vulkan-deps from ea5afb3f56cf to 66b781cbf618 (6 revisions) 7a6def81a7 Roll recipe dependencies (trivial). 7ac9f8d180 Roll ANGLE from f7571cf4c526 to aef03d88aba5 (4 revisions) decc0e8daa Roll Skia Infra from f041daad5584 to d1635669ba81 (12 revisions) 9da9a9ffd5 Roll Dawn from 18eb229ef5f7 to 3510e36c0125 (20 revisions) c5a4acd62d Add Swizzle::invert() function dd55fc0254 Roll vulkan-deps from 7c625f80e8cc to ea5afb3f56cf (5 revisions) 03604df57c Roll recipe dependencies (trivial). cf5c36972b Release CanvasKit v0.41.0 a85f5beff3 Migrate Mock stuff out of GrBackendSurface 4bbcf0d57a Fix viewer with Dawn Graphite backend on Linux f636aef3fe Reland "Delete staging functions for serialization and deserialization" 2721053914 Roll Expat from e49998f0 to 154446fc (322 commits) 59013235c3 Graphite: Add finish proc to Context::submit f0a13e5efb Roll recipe dependencies (trivial). e29566312b Roll vulkan-deps from 98fee6234d16 to 7c625f80e8cc (4 revisions) 2fb5fa71eb Roll ANGLE from 599125448d7a to f7571cf4c526 (9 revisions) 02ba2eac9d Roll Skia Infra from 6336d62b8859 to f041daad5584 (11 revisions) 06430af765 Roll Dawn from 198baf5044ae to 18eb229ef5f7 (2 revisions) ae3d36cb9e Roll recipe dependencies (trivial). 1a6d571b2d Roll recipe dependencies (trivial). 249f0eafe5 [graphite] Refactor TextureFormatTest to have per-channel info 16cdf9c439 Fix -Wdeprecated-copy-with-dtor warning 84a180a1fa Add -Wno-psabi to Android flags da50a2ddb5 Roll vulkan-deps from 0ac6a8e7567c to 98fee6234d16 (3 revisions) 82d3bc1af1 Revert "Delete staging functions for serialization and deserialization" f89a36d63b Manual roll Dawn from 851ba3e50c35 to 198baf5044ae (13 revisions) b616092176 Add and clarify some viewer docs 122a1f31d3 [graphite] Add sub-layer insertion tracking ec20813837 Delete staging functions for serialization and deserialization dba893a44d Ignore warnings about C++17 vs C++20 fa3bb1f60d [rust icc] Add method to allow Chromium to force skcms ICC parsing 69be108780 Roll ANGLE from ccf2fb542151 to 599125448d7a (14 revisions) 8e47151573 Roll vulkan-deps from 26ad58d0b7b7 to 0ac6a8e7567c (7 revisions) 4ea0392365 Roll Skia Infra from 5d1a87ac2c39 to 6336d62b8859 (11 revisions) fb402093cf Roll skcms from 7f81d48f4e33 to 24b120dbf97f (2 revisions) fdb23e8f7c [graphite] Switch TextureFormatBytesPerBlock to int 47702f5524 Roll recipe dependencies (trivial). d668b6f481 Add PRESUBMIT check for Google LLC (instead of Google Inc.) e4d0350f47 Fix Google Inc vs Google LLC in file preamble df5f123183 SkJpegMultiPictureParameters: Fix out of bounds read edec8edce9 Roll vulkan-deps from 3d9301dec00f to 26ad58d0b7b7 (2 revisions) 93167171d5 Remove legacy ParagraphBuilder method d6bc6d17d6 Roll ANGLE from a6e5978fc7f6 to ccf2fb542151 (9 revisions) bfd7b47843 Roll Skia Infra from 5c66664fffdc to 5d1a87ac2c39 (10 revisions) a3363ede18 Roll Dawn from 2319a695c238 to 851ba3e50c35 (8 revisions) d18425ea5c Roll debugger-app-base from c708abbcb137 to 776a8611a0e0 03df192c5f Roll vulkan-deps from 1b6a3bfe56d3 to 3d9301dec00f (1 revision) a6ccaf95c6 Roll SKP CIPD package from 556 to 557 a18fa8c274 Roll vulkan-deps from f419cde51900 to 1b6a3bfe56d3 (7 revisions) 34ace196b8 Add SkEventTracer::onExit hook for flushing 06106120c6 Add pprof support to nanobench 54ade8afb5 [graphite] Consolidate TextureFormat unit tests into single cpp file 8ea74f6205 Manual roll Dawn from c4a63a567b25 to 2319a695c238 (22 revisions) 6c0346103c Fix Mac version for MacBookPro15,1 cd70ba1902 Roll vulkan-deps from ab4e8b222daa to f419cde51900 (4 revisions) 41418acad9 Add skia_enable_fontmgr_fontations_empty 3f328b35d9 Reland: Use modern imageDataProc in mskp's SkSharingProc 48a0e7a008 Add two WASM compile jobs 029229d8be Simplify gn typeface related deps 5a21b25369 Roll ANGLE from 6935aaed653a to a6e5978fc7f6 (10 revisions) 207ea96ce1 Roll Skia Infra from 03635a3674c4 to 5c66664fffdc (11 revisions) 9eb5598e1b Roll recipe dependencies (trivial). 391a06dc23 Roll vulkan-deps from 3ad5a6d56b25 to ab4e8b222daa (8 revisions) 9be8fdf31f Roll recipe dependencies (trivial). 882e048356 Roll recipe dependencies (trivial). 6b63e69c60 Roll HarfBuzz from 31695252 to 9cb1fee5 (727 commits) 1fa890668e Roll FreeType from b91f75bd to 264b5fbf (43 commits) 86b6bfdaa6 Roll recipe dependencies (trivial). 255bd24327 Roll recipe dependencies (trivial). 8c67ff1837 Revert "Use modern imageDataProc in mskp's SkSharingProc" 6eddb43afd [graphite] Limit which classes can update resource labels 38761e1803 Reland "Graphite: add an API function to check whether there is pending GPU work" 3054ca0ef1 Roll vulkan-deps from ead36893de5f to 3ad5a6d56b25 (2 revisions) b2458cec3e Manual roll Dawn from ad824e2cb346 to c4a63a567b25 (9 revisions) d4a01559ef Roll ANGLE from 405f073968f3 to 6935aaed653a (9 revisions) e9132deca6 Roll Skia Infra from da56584d3d4c to 03635a3674c4 (7 revisions) fa4abe0475 Roll Dawn from fd9a310a811b to ad824e2cb346 (11 revisions) 46f41493eb Roll vulkan-deps from b8c07da19f50 to ead36893de5f (8 revisions) a67a797de6 [rust icc] Fix clippy lint errors from Chromium b00906c60a [graphite] Define colortype and format compatibility statically ee956d6c02 offsetting lines on x AND y fed715ea6a [ganesh] Guard maxTrianglesInFan and alloc size calculations a7665f1102 SkEventTracer::SetInstance always leaks c6392912ba Roll recipe dependencies (trivial). ce480653a9 Use RenderPassRenderAreaRect dawn feature 22ef657fd3 Validate SkDescriptor length alignment 38e02077b2 Reland "Remove mipmaps from SkBitmap's implementation" e8b383282c Add API for decoupling Mock backend from GrBackendSurface 90b1d0b22a [pdf] Remove "mutable path" flags 750b2b2091 Roll vulkan-deps from a363b51d709a to b8c07da19f50 (3 revisions) 27d1242643 Roll ANGLE from 29b36dd0b852 to 405f073968f3 (9 revisions) 7537e40bef Roll Skia Infra from 3637b23dc8e6 to da56584d3d4c (9 revisions) 001a727cb9 Roll Dawn from 4e96736861fb to fd9a310a811b (15 revisions) 812c2e24f7 Revert^3 "Remove mipmaps from SkBitmap's implementation" 0cab3e4ee3 Make sure we are getting the correct atlas for glyph mask format. b51dcb26b2 Roll vulkan-deps from b55a0e69f29d to a363b51d709a (8 revisions) df1bb3a9ee [graphite] Temporarily relax rgbx write swizzle a41b4162c5 [canvaskit] Add underline and stikeout font metrics 6a7aa543dc Use modern imageDataProc in mskp's SkSharingProc 4752ad3005 Merge 7 release notes into RELEASE_NOTES.md aff6b7448e Update Skia milestone to 148 099df4a376 Revert^2 "Remove mipmaps from SkBitmap's implementation" 257d04225d Fix image deserialization in mskps for dm ab100dba1e [pdf] Map marked content in non-page streams 093a8e46f4 [graphite] Fold Depth Draws into general case cef7d48656 [rust icc] Fix GRAY profile XYZ synthesis and TRC table pass-through 2a1dd55bd9 Expand the skpViewportSize option to fully render SKP conveniently. 4b35832cc7 Fix segmentation fault about nullptr for fiddle_examples. 68f24903b5 Roll vulkan-deps from f1709c0363de to b55a0e69f29d (7 revisions) 8eda160375 Roll ANGLE from b1b19492e609 to 29b36dd0b852 (13 revisions) 33eefa3f3b Roll Skia Infra from 5997e0271ce7 to 3637b23dc8e6 (12 revisions) e7b9578062 Roll Dawn from 620a520f5029 to 4e96736861fb (23 revisions) 887df915a9 Following SkColorType changes for fiddle_examples. c52639a2e5 Adding a GM for closed hairline contours with caps 4ecdbaee3c Roll vulkan-deps from 9117cef67a60 to f1709c0363de (4 revisions) 683df9b144 [graphite] Use TF shorthand in TextureFormat.cpp a163e5c1dd Fix integer overflow in hairline rendering code 0ff9b5e185 Add branch-day SA as owner of the SkMilestone.h file 5d6eed2e9d [rust icc] Fix bugs on Rust ICC parser's C++ bridge 3aa442e062 [graphite] Lift colortype to format choice out of backends ea4fd0e147 Roll ANGLE from 2b6e1f017676 to b1b19492e609 (13 revisions) a83dca75c5 Roll Skia Infra from 7dcf5ceeb2ad to 5997e0271ce7 (16 revisions) af3df151fb Roll Dawn from 45c37cb48461 to 620a520f5029 (17 revisions) 07b5ed81d2 Roll vulkan-deps from b54811be7071 to 9117cef67a60 (4 revisions) c1417b1474 Roll debugger-app-base from 914c428338ff to c708abbcb137 57d585819c Roll skottie-base from 0c340feb28bd to 59099cc38eaf 53e2f48597 Roll shaders-base from 40c834a730e3 to a9187546c2d1 6caebf0fb9 Roll jsfiddle-base from 73709477111f to 72ed78485f85 254e441418 Roll vulkan-deps from 94cefeae33fc to b54811be7071 (1 revision) f136ac23b1 Roll SKP CIPD package from 555 to 556 af994ae4d9 Roll vulkan-deps from 3439d87c47fa to 94cefeae33fc (1 revision) 6643c1bd93 Roll vulkan-deps from 1fefa40f614b to 3439d87c47fa (12 revisions) 81fec2395a [graphite][vulkan] Add an OcclusionPassSamples stat 2ec1e11faa Roll vulkan-deps from 0e3bcd414637 to 1fefa40f614b (5 revisions) 455e8d81b7 Revert "Graphite: add an API function to check whether there is pending GPU work" 3218398d03 Move types in graphite/AtlasTypes under DrawAtlas. f162f98da7 Roll ANGLE from a271d4db7d0a to 2b6e1f017676 (16 revisions) b8d18d6c13 Roll Skia Infra from 52c3d9c25c0f to 7dcf5ceeb2ad (29 revisions) bcaa4ad8c2 Roll Dawn from 31cd9c333164 to 45c37cb48461 (22 revisions) f2c4d1714b Roll vulkan-deps from 2e9659bff433 to 0e3bcd414637 (6 revisions) bcd0fdfa30 [graphite] Generalize GPU stats interface f53d19d3ed [graphite] Only allow one query per submission 52fff1a376 [graphite][vulkan] Support GpuStatsFlags::kElapsedTime 57ecfd959e Roll recipe dependencies (trivial). a69ef43650 Roll recipe dependencies (trivial). dba0feed16 [graphite] Move read/write swizzle lookup out of Caps 9a58840d1f [Graphite] Start VkDescriptorPool sizes smaller and then grow if more sets are need. 54e54dd3e7 Remove moving to external queue test in VkBackendSurfaceMutableStateTest bd8b422e09 [xps] Better viewport bounds on clamped bitmaps 0ee6ed248c [xps] Pass opts to device 3e39f676f9 Graphite: add an API function to check whether there is pending GPU work c2038c607c Roll vulkan-deps from b4ca123cdf07 to 2e9659bff433 (1 revision) 7509db8446 Roll ANGLE from f32898ce1c18 to a271d4db7d0a (10 revisions) 4d4710943e Roll recipe dependencies (trivial). 7f46a9ee50 Roll Skia Infra from 17f937caac07 to 52c3d9c25c0f (17 revisions) d05f6fc53a Roll Dawn from ad8d51fbdd59 to 31cd9c333164 (14 revisions) a07c79a69c Some simplifications to graphite::Plot and ganesh::Plot. 101828acae Roll vulkan-deps from b20f7c8d2e1a to b4ca123cdf07 (6 revisions) a94df1cdab Roll recipe dependencies (trivial). 23eba72199 Manual roll Dawn from e82ef7b95b8b to ad8d51fbdd59 (6 revisions) ada0b7628c Roll vulkan-deps from 4267dde11f3f to b20f7c8d2e1a (2 revisions) 59a885cee1 Roll ANGLE from 64293946b30e to f32898ce1c18 (14 revisions) e9c4f437d1 Roll Skia Infra from 7f2c9bcb6323 to 17f937caac07 (38 revisions) f70c157c6c Roll Dawn from d8276c09c3b8 to e82ef7b95b8b (7 revisions) 478aed6301 Roll recipe dependencies (trivial). 3197848b14 Roll recipe dependencies (trivial). d328181a0b Roll vulkan-deps from c86f75f56f22 to 4267dde11f3f (9 revisions) c16d0e9f30 [graphite] Remove ReadSwizzle enum 2701efd72a [graphite] Remove rgba8 colortype fallback for MakeBitmapProxyView ddff74ea6f Roll recipe dependencies (trivial). b1b7bfb4ee [graphite] Add TextureFormat unit tests f4415a5daa Roll recipe dependencies (trivial). 6e36bd753f Manual roll Dawn from 00b3325c361b to d8276c09c3b8 (6 revisions) f19007a439 Roll recipe dependencies (trivial). 0a8c00e23c Roll vulkan-deps from 145852941ba8 to c86f75f56f22 (4 revisions) f946ebb86e Roll recipe dependencies (trivial). 559c221ef5 Roll ANGLE from 425ea1de41aa to 64293946b30e (7 revisions) 9cb4dd1407 Roll recipe dependencies (trivial). 113ae31847 Reland "Graphite/Dawn: Always use asyncMap even for native" 01fcfa07ad Roll Dawn from bc602f0c897d to 00b3325c361b (13 revisions) fe9e9f22c5 [graphite] Fix renderable colortype fallback 59c7674c0b Roll recipe dependencies (trivial). 6bb56fb3f2 Roll vulkan-deps from bd2a0f8993f5 to 145852941ba8 (2 revisions) e179431b2b [pdf] Allow table based font subsetting f886711f18 [graphite] Guard texture-to-texture copy with format check 70d17bc6b3 Manual roll ANGLE from 8807d22fb5c5 to 425ea1de41aa (3 revisions) e180358b7a Manual roll Dawn from 37a53b346d18 to bc602f0c897d (4 revisions) 61c0e71760 Roll debugger-app-base from 451d5bbc86ae to 914c428338ff 171d217a68 Roll skottie-base from 4be913bfbea5 to 0c340feb28bd cc8ce92481 Roll vulkan-deps from dd5ab0120a15 to bd2a0f8993f5 (1 revision) 4cf3cd27b6 Manual roll ANGLE from 62f0f79b7d4d to 8807d22fb5c5 (22 revisions) be1362b5ca Manual roll Dawn from d5692ff2fb57 to 37a53b346d18 (23 revisions) b9210eb700 Roll SKP CIPD package from 554 to 555 28172a4e03 Roll vulkan-deps from 2d365e2fbc40 to dd5ab0120a15 (12 revisions) 971d0162e1 Roll recipe dependencies (trivial). f078138832 Roll recipe dependencies (trivial). c8bcc27f53 [graphite] DrawListLayer Transpose Stencil Draw Ordering 9333e22710 Reland "[graphite] Merge CommandBuffer::trackResource and ::trackCommandBufferResource" 97d5a69bb3 Revert "Graphite/Dawn: Always use asyncMap even for native" b535461937 [ganesh] Disable fNoPerspectiveInterpolationSupport for Mali HW 6720137543 Update yuv mipmap GM to fallback for non-renderable RGBx formats b150186d3e Fix myers::Event::operator[] indexing bd5b8d13e0 Roll vulkan-deps from 8dfc4cee726c to 2d365e2fbc40 (3 revisions) ed220c490e Roll ANGLE from 1f84f5a46684 to 62f0f79b7d4d (17 revisions) e2062707b0 Roll recipe dependencies (trivial). 2caa761a12 Roll Dawn from 40eed19beff1 to d5692ff2fb57 (16 revisions) 82e99f4a1a Roll SwiftShader from b7b7fd22e5f2 to 313545f85af7 (2 revisions) e5aa1ab5c5 Roll vulkan-deps from 5a44f54576eb to 8dfc4cee726c (8 revisions) 9625e014e9 Manual roll Dawn from b9cc1fc1c571 to 40eed19beff1 (6 revisions) 49c2de9538 [graphite] Assign Texture label upon construction e194566872 [wgsl] Translate for-loop to { init; for (; cond; next) { body } } d2de67926c Remove reference in tests to YCbCr extension promoted to 1.1 fc2b615e16 [graphite] Assign Buffer label upon construction cdb3611990 Remove redundant or outdated extension usage in Vulkan tests d6b794267e Roll vulkan-deps from d3db3d114ff7 to 5a44f54576eb (2 revisions) 0c5c73da68 Roll ANGLE from acaa6e3ef3b7 to 1f84f5a46684 (12 revisions) eb2743c6a8 Roll Skia Infra from 32c586681f53 to 7f2c9bcb6323 (19 revisions) 8eb13deb8e Roll Dawn from 05dc9c2bdab3 to b9cc1fc1c571 (56 revisions) e32185de2e Roll recipe dependencies (trivial). 0d7e3ecc0b Roll vulkan-deps from b73fd5ddcde4 to d3db3d114ff7 (3 revisions) 4e86d14cc7 Roll recipe dependencies (trivial). 9517a6f8a4 Update logic to determine YCbCr sampler conversion support f66bf9db24 Fork shared atlas plot related types into Ganesh and Graphite types. 59d3923eae [graphite] Default initialize clear color 88c2fad414 [graphite] Consolidate to single virtual Caps::getDefaultTextureInfo() function 64f8a58a0f Graphite/Dawn: Always use asyncMap even for native 0f2186f797 [graphite] Remove SkColorInfo param from GenerateMipmaps f186664ddc Reland "Reland "[graphite] Define TextureUsage bit mask to generalize texture caps"" 52011c698e Fix free memory crashes. e979274a45 Add initial standalone WASM gn build d308059d6b Roll vulkan-deps from d4b8e677761b to b73fd5ddcde4 (7 revisions) e1a54c4814 Roll ANGLE from 8dc22feb4412 to acaa6e3ef3b7 (14 revisions) 7d2bc92f5f Roll Skia Infra from e7ba40a5e846 to 32c586681f53 (18 revisions) d12836ea4e Change how backend data is stored in text SubRuns 618a4c50a1 Roll vulkan-deps from 07eb8d45649f to d4b8e677761b (4 revisions) ef5a8dde07 Disable remaining ThreadedPipeline* Tests on Graphite_Dawn_GLES f11d4761c4 Graphite/Dawn: Fix TypeError in emscripten build 819d6a7a90 [rust icc] Fix use-after-free in MakeICCProfileWithRust 4b7af1f9db [graphite/dawn] Support DualSourceBlending in WASM Canonical link: https://commits.webkit.org/311186@main
https://bugs.webkit.org/show_bug.cgi?id=312257 Unreviewed, un-flag a flaky EME test now passing since 311144@main. * LayoutTests/platform/glib/TestExpectations: Canonical link: https://commits.webkit.org/311187@main
…arguments-detaching.js https://bugs.webkit.org/show_bug.cgi?id=311903 Reviewed by Yusuke Suzuki. By the spec (ECMA-262/April 10, 2026), on invoking `new DataView(buffer, byteOffset)`, if the 2nd argument `byteOffset` detachs `buffer` in `ToIndex(byteOffset)` step, it should throw TypeError caused by buffer *first* is detached rather than RangeError about `offset > bufferByteLength`. This corresponds to step 3 & 4 of the section _25.3.2.1_ of the spec. https://tc39.es/ecma262/#sec-dataview-buffer-byteoffset-bytelength ----- `DataView` and other TypedArrays's constructors behave different spec mechanism, but they behave similarly and we share a part of underlying implementations. This patch adds some tests: 1. `new DataView(buffer, byteOffset)` but `ToIndex(byteOffset)` detach the `buffer`. This fix this test's result. Without this change, JSC fails this test. 2. `new DataView(buffer, byteOffset, byteLength)` but `ToIndex(byteOffset)` detach the `buffer`. This is a later part of test/staging/sm/extensions/DataView-construct-arguments-detaching.js. as a regression test. JSC passes this test without this fix 3. `new SomeTypedArray(buffer, byteOffset)` but `ToIndex(byteOffset)` detach the `buffer`. This is just for regression test to keep the exist implementation which shares many parts with `DataView`'s one. JSC passes this test without this fix 4. `new SomeTypedArray(buffer, byteOffset, byteLength)` but `ToIndex(byteLength)` detach the `buffer`. This is just for regression test to keep the exist implementation which shares many parts with `DataView`'s one. JSC passes this test without this fix. Tests: JSTests/stress/dataview-constructor-bug-311903-weird-bytelength-detach-buffer.js JSTests/stress/dataview-constructor-bug-311903-weird-byteoffset-detach-buffer.js JSTests/stress/typedarray-constructor-bug-311903-weird-bytelength-detach-buffer.js JSTests/stress/typedarray-constructor-bug-311903-weird-byteoffset-detach-buffer.js Canonical link: https://commits.webkit.org/311188@main
…oteDisplayListRecorder and RemoteSnapshotRecorder maps <https://bugs.webkit.org/show_bug.cgi?id=312228> <rdar://174706941> Reviewed by Matt Woodrow. Clear `m_remoteDisplayListRecorders` and `m_remoteSnapshotRecorders` in `workQueueUninitialize()` to break a retain cycle that leaks the `RemoteRenderingBackend` and all its unsunk recorders. Each `RemoteDisplayListRecorder` and `RemoteSnapshotRecorder` holds a `Ref<RemoteRenderingBackend>` via the `RemoteGraphicsContext` base class. When `workQueueUninitialize()` runs during backend teardown, the existing code clears `m_remoteImageBuffers` and `m_remoteImageBufferSets` (breaking their cycles) but not the recorder maps. The surviving `Ref` back-references keep the backend's reference count above zero, so the backend, its `StreamServerConnection`, `StreamConnectionWorkQueue`, and all remaining recorders are never freed. The `m_remoteDisplayListRecorders` map was introduced in Bug 297727 (299747@main) and `m_remoteSnapshotRecorders` in Bug 282664 (300358@main); neither added the corresponding `clear()` call. Add layout test that creates unsunk display list recorders via the IPC Testing API and explicitly releases the rendering backend. Run with `--leaks` to verify the retain cycle is broken; without the fix, the `leaks` tool reports a `ROOT CYCLE` through `RemoteRenderingBackend` and `RemoteDisplayListRecorder`. * LayoutTests/ipc/display-list-recorder-leak-expected.txt: Add. * LayoutTests/ipc/display-list-recorder-leak.html: Add. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::workQueueUninitialize): Canonical link: https://commits.webkit.org/311189@main
https://bugs.webkit.org/show_bug.cgi?id=311820 rdar://174410423 Reviewed by Richard Robinson. This has no intended functional changes. Like https://commits.webkit.org/310378@main, it refactors the WebBackForwardList logic in preparation for future changes. That commit did the C++ version; this commit does the Swift version. Canonical link: https://commits.webkit.org/311190@main
https://bugs.webkit.org/show_bug.cgi?id=312109 Reviewed by Brandon Stewart and Vitor Roriz. Upstream commit: web-platform-tests/wpt@a93a1a1 * LayoutTests/TestExpectations: * LayoutTests/platform/glib/TestExpectations: * LayoutTests/imported/w3c/resources/resource-files.json: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/META.yml: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/hyphen-limit-chars-interpolation-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/hyphen-limit-chars-interpolation.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/bidi/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/bidi/empty-span-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/bidi/empty-span-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/bidi/empty-span-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/bidi/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/boundary-shaping/boundary-shaping-002-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/boundary-shaping/boundary-shaping-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/boundary-shaping/boundary-shaping-010.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/boundary-shaping/reference/boundary-shaping-002.ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hanging-punctuation/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hanging-punctuation/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hanging-punctuation/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/hyphens-auto-wordbreak-breakall-crash.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/lang-tag-case-insensitive-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/lang-tag-case-insensitive.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/META.yml: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/ja/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/ja/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/other-lang/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/other-lang/css-text-line-break-de-cj-loose.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/other-lang/css-text-line-break-de-cj-normal.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/other-lang/css-text-line-break-de-cj-strict.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/other-lang/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/unknown-lang/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/unknown-lang/css-text-line-break-cj-loose.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/unknown-lang/css-text-line-break-cj-normal.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/unknown-lang/css-text-line-break-cj-strict.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/unknown-lang/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cj-loose.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cj-normal.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cj-strict.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/i18n/zh/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-animating-font-size-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-animating-font-size.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-animating-letter-spacing-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-animating-letter-spacing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-cursive-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-cursive-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-cursive-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-cursive-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-animating-font-size-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-animating-letter-spacing-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-cursive-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-cursive-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/line-break/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/line-break/line-break-var-substitution-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/line-break/line-break-var-substitution.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/line-break/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/overflow-wrap/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/overflow-wrap/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/overflow-wrap/word-wrap-alias-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/overflow-wrap/word-wrap-alias.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/WEB_FEATURES.yml: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/hyphenate-limit-chars-computed-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/hyphenate-limit-chars-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/hyphenate-limit-chars-valid-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/hyphenate-limit-chars-valid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/letter-spacing-inherited-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/line-break-invalid-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/line-break-invalid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-computed-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-invalid-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-invalid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-valid-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-autospace-valid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-spacing-computed-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-spacing-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-transform-computed.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-transform-invalid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/text-transform-valid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping-000.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping-004.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping-005.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping-006.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping-007.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/shaping/shaping_lig-000.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/support/support/README: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/support/support/swatch-green.png: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/support/support/swatch-red.png: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/support/support/w3c-import.log: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/tab-size/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/tab-size/tab-size-spacing-003.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/tab-size/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-003-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-003.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-004-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-004-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-004.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-break-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-001-expected-mismatch.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-001-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-001-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-003-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-003.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-004-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-dynamic-text-004.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-edit-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-edit-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-edit-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-003-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-003.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-004-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-004-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-004.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-005-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-005-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-005.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-005b-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-005b.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-006-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-006-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-006.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-007-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-007-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-elements-007.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-mixed-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-mixed-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-mixed-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-preformatted-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-preformatted-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-preformatted-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-supplementary-ideograph-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-supplementary-ideograph.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-vertical-combine-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-vertical-upright-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-vs-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-vs-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-vs-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-zh-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-zh-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/text-autospace-zh-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-autospace/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/reference/text-justify-006-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-006-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-006.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-atomic-inline-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-atomic-inline-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-atomic-inline.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-cursive-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-cursive-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-inter-character-cursive.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/support/highlight-chars.js: Added. (highlightChars): * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/support/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-fallback-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-start-oof-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-start-oof-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/text-spacing-trim-start-oof-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-spacing-trim/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/math/text-transform-math-auto-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/math/text-transform-math-auto-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/math/text-transform-math-auto-003.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-010-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-capitalize-036-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-capitalize-036.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-full-size-kana-009-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-full-size-kana-009.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-010-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-010.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-tailoring-001a-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-tailoring-001a.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-transform/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/WEB_FEATURES.yml: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-with-word-break-001-expected.xht: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/break-spaces-with-word-break-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/hanging-whitespace-004-expected.xht: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/hanging-whitespace-004.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/pre-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/pre-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/pre-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-before-after-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-before-after-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-003-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-004-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-005-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-006-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-022-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-004.tentative-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-004.tentative.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-005.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-before-after-001-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-before-after-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-before-after-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-before-after-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-002-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-002.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-003-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-003.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-004-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-004.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-005-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-005.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-006-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-006.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-007-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-007.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-balance-with-svg-001-expected.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/text-wrap-pretty-line-clamp-crash-001.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/textarea-always-preserves-spaces-001-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/textarea-always-preserves-spaces-001.tentative-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/textarea-always-preserves-spaces-001.tentative.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-and-text-alignment-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-and-text-alignment-004.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-and-text-alignment-rtl-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-and-text-alignment-rtl-004.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/trailing-space-position-001.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-021-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-021.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-022-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-022.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-023-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-023.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/auto-phrase/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/auto-phrase/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-011-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-u002d-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-ethiopic.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-keep-all-011-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-keep-all-011.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-keep-all-u002d-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-keep-all-u002d.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/WEB_FEATURES.yml: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/hyphens/WEB_FEATURES.yml. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/reference/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/reference/word-spacing-animating-font-size-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/reference/word-spacing-animating-word-spacing-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-002-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-002-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-002.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-003-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-003-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-003.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-animating-font-size-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-animating-font-size.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-animating-word-spacing-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-spacing/word-spacing-animating-word-spacing.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/writing-system/WEB_FEATURES.yml: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/writing-system/w3c-import.log: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/zwnj-renders-invisible-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-text/zwnj-renders-invisible-ref.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/css-text/zwnj-renders-invisible.html: Canonical link: https://commits.webkit.org/311191@main
…h-scroll.html is a flaky text failure https://bugs.webkit.org/show_bug.cgi?id=312264 Unreviewed test gardening. * LayoutTests/TestExpectations: Canonical link: https://commits.webkit.org/311192@main
https://bugs.webkit.org/show_bug.cgi?id=312182 rdar://174680606 Reviewed by Jer Noble. Based on profiling most common / expensive includes. This is a ~1.5X / 10s speedup in WTF compilation. * Source/WTF/Configurations/WTF.xcconfig: * Source/WTF/WTFPrefix.h: Added. * Source/WTF/wtf/OSObjectPtr.h: (WTF::OSObjectPtr::~OSObjectPtr): Suppress a SaferCPP argument warning. OSObjectPtr is the unsafe primitive we build safety on top of. (I'm not sure why this specific change caused SaferCPP to start reporting this line.) * Source/WTF/wtf/text/CString.cpp: (WTF::CString::CString): Do an explicit isNull() check to avoid ambiguity with operator char*, now that it's visible via the prefix header. Canonical link: https://commits.webkit.org/311193@main
https://bugs.webkit.org/show_bug.cgi?id=311751 rdar://164244457 Reviewed by Etienne Segonzac and Abrar Rahman Protyasha. Promote immersive environment SPI to public API * Source/WebCore/dom/DocumentImmersive.cpp: * Source/WebCore/dom/DocumentImmersive.h: Add CompletionHandler parameter so callers can await dismissal. * Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.h: Added. * Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.mm: Added. * Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentInternal.h: Added. * Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentPrivate.h: Added. New public class wrapping a website-provided immersive environment. * Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentDelegate.h: Added. New public delegate protocol for authorization, presentation, and dismissal. * Source/WebKit/UIProcess/API/Cocoa/WKWebView.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h: Add public immersive environment delegate and dismiss API. Adopt new delegate protocol and WKImmersiveEnvironment object. * Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm: Rename from underscore-prefixed SPI selectors. * Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift: Forward allowsImmersiveEnvironments from Swift Configuration wrapper. * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm: * Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: *Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm: * Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.mm: Unified source build fix. * Source/WebKit/UIProcess/API/Swift/WebPage+FrameInfo.swift: Make init @_spi(CrossImportOverlay) public for _WebKit_SwiftUI access. * Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift: * Source/WebKit/UIProcess/API/Swift/WebPage+ImmersiveEnvironment.swift: Added. * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h: * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm: * Source/WebKit/UIProcess/PageClient.h: * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: Switch from URL tracking to FrameInfo tracking with security origin comparison. Make exitImmersive async with sendWithAsyncReply. * Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift: New SwiftUI modifier for immersive environment lifecycle management. * Source/WebKit/_WebKit_SwiftUI/API/WebViewImmersiveEnvironmentView.swift: Added. * Source/WebKit/_WebKit_SwiftUI/Implementation/EnvironmentValues+Extras.swift: * Source/WebKit/_WebKit_SwiftUI/Implementation/ViewModifierContexts.swift: * Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift: Add ImmersiveEnvironmentDelegateAdapter bridging SwiftUI callbacks to WKImmersiveEnvironmentDelegate. Wire up in coordinator update. * Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm: * Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: * Tools/WebKitTestRunner/ios/TestControllerIOS.mm: Adopt WKImmersiveEnvironmentDelegate public protocol and updated selectors. Canonical link: https://commits.webkit.org/311194@main
https://bugs.webkit.org/show_bug.cgi?id=312222 <rdar://174369260> Reviewed by Simon Fraser. Floats resolve stretch against the containing block (CSS Sizing 4, section 6.1), not the space remaining after other floats. Only non-floating blocks that establish a formatting context need to avoid float intrusion (CSS2, section 9.5.2). * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float-with-sibling-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float-with-sibling-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float-with-sibling.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch-float.html: Added. * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::computeSizingKeywordLogicalWidthUsing const): Canonical link: https://commits.webkit.org/311195@main
…css/css-text/text-autospace/text-autospace-mixed-001.html` is an image failure https://bugs.webkit.org/show_bug.cgi?id=312267 Unreviewed test gardening. * LayoutTests/platform/glib/TestExpectations: Canonical link: https://commits.webkit.org/311196@main
https://bugs.webkit.org/show_bug.cgi?id=312093 Reviewed by Ryosuke Niwa and Rupin Mittal. Upstream commit: web-platform-tests/wpt@999b19c Canonical link: https://commits.webkit.org/311197@main
https://bugs.webkit.org/show_bug.cgi?id=311738 rdar://171024685 Reviewed by Simon Fraser. When a scroll container has a background and a composited child, the background color is painted twice. Once in the layer's bitmap and once in a contents color sublayer. The fix skips creating the contents color sublayer for scroll containers, since their bitmap already paints the background. User impact: This was visible on sites like etsy.com where checkout and edit modal dialogs use a semi-transparent scrollable overlay with composited children. The overlay background would appear noticeably darker than intended, then flash to the correct shade when children de-composite. Test: compositing/overflow/scroll-container-background-with-composited-child.html * LayoutTests/compositing/overflow/scroll-container-background-with-composited-child-expected.html: Added. * LayoutTests/compositing/overflow/scroll-container-background-with-composited-child.html: Added. * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer const): Canonical link: https://commits.webkit.org/311198@main
…LinkHandler` https://bugs.webkit.org/show_bug.cgi?id=312234 rdar://174714313 Reviewed by Richard Robinson, Abrar Rahman Protyasha, and Tim Horton. `WKDisplayLinkHandler` registers a KVO observer on `[_displayLink display]` for `refreshRate` at creation time, then removes the observer from `[_displayLink display]` at invalidation. `-[CADisplayLink display]` is not stable over the lifetime of the link. Consequently, an exception may be encountered when removing the observer from a different object than the one originally tracked. Fix by observing "display.refreshRate" as a keypath from the `CADisplayLink` itself instead of observing "refreshRate" directly on the `CADisplay`. Manually tested by modifying the refresh rate, by toggling low power mode. This is effectively a follow-up to 306881@main. * Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm: (-[WKDisplayLinkHandler invalidate]): (-[WKDisplayLinkHandler _createDisplayLink]): Canonical link: https://commits.webkit.org/311199@main
…t::add_local_candidate_internal()` https://bugs.webkit.org/show_bug.cgi?id=312269 Unreviewed test gardening. * LayoutTests/platform/gtk/TestExpectations: Canonical link: https://commits.webkit.org/311200@main
https://bugs.webkit.org/show_bug.cgi?id=297570 <rdar://145550507> Reviewed by Antti Koivisto. When text-transform changes (e.g. uppercase to lowercase), each text renderer re-applies the transform to its content. The old code called RenderText::setText(originalText()) which treats it as a content change. For a ::first-letter remaining fragment, this is wrong because: 1. originalText() returns the fragment's portion ("B"), not the full DOM text ("ab"). 2. setText triggers setTextInternal on the fragment, which resets it to just "b" and destroys the first-letter renderer. 3. The first character "a" is lost. The fix introduces updateRenderedText() which re-applies the transform without going through setText/setTextInternal. This avoids destroying the first-letter split -- each fragment just re-renders its text with the new transform. * LayoutTests/fast/css/first-letter-text-transform-change-expected.txt: Added. * LayoutTests/fast/css/first-letter-text-transform-change.html: Added. * Source/WebCore/rendering/RenderText.cpp: (WebCore::RenderText::styleDidChange): (WebCore::RenderText::setTextInternal): (WebCore::RenderText::updateRenderedText): * Source/WebCore/rendering/RenderText.h: Canonical link: https://commits.webkit.org/311201@main
https://bugs.webkit.org/show_bug.cgi?id=312271 Reverted changeset: "set-webkit-configuration should properly support the non-standard testing/release+assert builds" https://bugs.webkit.org/show_bug.cgi?id=311824 https://commits.webkit.org/311091@main Canonical link: https://commits.webkit.org/311202@main
rdar://174711786 https://bugs.webkit.org/show_bug.cgi?id=312233 Reviewed by Jer Noble. This is worth a few hundred ms per incremental build. * Source/WTF/WTF.xcodeproj/project.pbxproj: Added a timestamp output to symlink-public-sdk-headers because in the degenerate case it never outputs anything so it runs on every build. Removed a duplicate entry for the rdar://173516139 workaround. Canonical link: https://commits.webkit.org/311203@main
https://bugs.webkit.org/show_bug.cgi?id=312273 Unreviewed test gardening. * LayoutTests/platform/wpe/TestExpectations: Canonical link: https://commits.webkit.org/311204@main
rdar://145336725 https://bugs.webkit.org/show_bug.cgi?id=311665 Reviewed by Brent Fulgham. An SSO extension may return an HTTP 401 response with body data via didCompleteWithHTTPResponse:httpBody: during a login flow. Previously, completeInternal only accepted 200, 302, and 307-POST — everything else called fallBackToWebPathInternal(), which dropped the body. Now, 401 responses with non-empty body data are loaded as HTML (same as the 200 path), allowing the authentication flow to continue. The method was also restructured to check each status code individually with a final fallback, replacing the compound guard condition and trailing ASSERT. Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SOAuthorizationTests.mm * Source/WebKit/UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.mm: (WebKit::RedirectSOAuthorizationSession::completeInternal): * Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h: * Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SOAuthorizationTests.mm: (TestWebKitAPI::TEST(SOAuthorizationRedirect, InterceptionSucceedWith401AndBody)): (TestWebKitAPI::TEST(SOAuthorizationRedirect, InterceptionFallbackWith401AndEmptyBody)): Canonical link: https://commits.webkit.org/311205@main
…ssage https://bugs.webkit.org/show_bug.cgi?id=312401 rdar://174856163 Reviewed by Charlie Wolfe. To make MixedContent blocking work with site isolation, https://commits.webkit.org/301022@main rightfully moved the logic to log the error string from MixedContentChecker to LocalFrame and WebPageProxy. It is indeed necessary to have a reportMixedContentViolation() function in both places so the error can be logged in both LocalFrame and RemoteFrame cases. But we can consolidate the logic to generate the error string to just one function that both callsites can use. This way, any future changes to this error string only need to be done in one place. There is no behavior change. This is covered by existing layout tests. * Source/WebCore/loader/MixedContentChecker.cpp: (WebCore::MixedContentChecker::mixedContentViolationMessage): * Source/WebCore/loader/MixedContentChecker.h: * Source/WebCore/page/LocalFrame.cpp: (WebCore::LocalFrame::reportMixedContentViolation const): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reportMixedContentViolation): Canonical link: https://commits.webkit.org/311399@main
…formData https://bugs.webkit.org/show_bug.cgi?id=312484 rdar://174501109 Reviewed by Brent Fulgham. Same fix as https://commits.webkit.org/309995@main but for Font and FontCustomPlatformData. To cache these resources in GPU Process, they should not be cached previously. If this happens, the sender process should be terminated immediately. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::cacheFont): (WebKit::RemoteRenderingBackend::cacheFontCustomPlatformData): * Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp: (WebKit::RemoteResourceCache::cacheFont): (WebKit::RemoteResourceCache::cacheFontCustomPlatformData): * Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h: Canonical link: https://commits.webkit.org/311400@main
https://bugs.webkit.org/show_bug.cgi?id=312032 rdar://174939004 Reviewed by Pascoe and Mike Wyrzykowski. The WebGPU/Implementation/WebGPUXR*.cpp files use #if HAVE(WEBGPU_IMPLEMENTATION) as their only guard. On Cocoa, HAVE(WEBGPU_IMPLEMENTATION) is unconditionally 1 (PlatformHave.h), so these files always compile — even when ENABLE(WEBGPU) is OFF and the WebGPU library isn't built. This produces undefined symbols for wgpuXR* functions. Add ENABLE(WEBGPU) to the file-level guards of the 8 XR-specific implementation files so they compile to nothing when WebGPU is disabled. With this fix, ENABLE_WEBXR can safely default to ON in OptionsMac.cmake. * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRBindingImpl.cpp: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRBindingImpl.h: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRProjectionLayerImpl.cpp: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRProjectionLayerImpl.h: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRSubImageImpl.cpp: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRSubImageImpl.h: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRViewImpl.cpp: * Source/WebCore/Modules/WebGPU/Implementation/WebGPUXRViewImpl.h: * Source/cmake/OptionsMac.cmake: Canonical link: https://commits.webkit.org/311401@main
https://bugs.webkit.org/show_bug.cgi?id=312210 rdar://174698623 Reviewed by Fujii Hironori. Use precompiled headers for all the various build targets consistently. This is the first step towards removing "config.h" from all .cpp files. Source/WebCore/testing/js/WebCoreTestSupportPrefix.h: Remove unused Windows configuration for CoreFoundation. Guard CoreServices on OS(DARWIN). The prefix header was alse defining WEBCORE_TESTSUPPORT_EXPORT as WEBCORE_EXPORT (which resolves to dllimport when building WebCoreTestSupport, since BUILDING_WebCore isn't defined). This prevented PlatformExportMacros.h:44-50 from setting the correct definition based on BUILDING_WebCoreTestSupport. * Source/cmake/WebKitCompilerFlags.cmake: Add -Wno-invalid-offsetof to list of GCC skipped warnings since there seems to be a bug that causes the pragma to get skipped. * Source/cmake/WebKitMacros.cmake: CMake's target_precompile_headers() compiles the prefix header into a .gch (GCC) or .pch (Clang) file as part of the target's build. For OBJECT library targets (WebCore, JSC on WPE/PlayStation, WTF, bmalloc), WebKit manually propagates $<TARGET_OBJECTS:target> to consuming targets for linking. CMake includes the PCH file in that object list, so it gets passed to the linker. - GNU ld: silently ignores the unrecognized file format - lld (GTK, WPE): errors with "unclosed quote/comment in a linker script" - it tries to parse the binary as a linker script - Prospero Clang (PlayStation): treats the .pch as a source input, triggering compiler flag validation errors (-sce-stdlib=v2 requires C++20) The $<FILTER:...,EXCLUDE,\\.(g|p)ch$> strips these files from the object list before they reach the linker. * Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h: WebKit/WebKit2_C.h expects wtf/Platform.h to already be included as it is for the rest of the project. Canonical link: https://commits.webkit.org/311402@main
https://bugs.webkit.org/show_bug.cgi?id=312505 rdar://174948889 Reviewed by Abrar Rahman Protyasha. Enable touch event regions on iOS family when building with internal SDK. * Source/WTF/wtf/PlatformEnableCocoa.h: Canonical link: https://commits.webkit.org/311403@main
https://bugs.webkit.org/show_bug.cgi?id=312069 rdar://174942090 Reviewed by Geoffrey Garen. FindApple.cmake was written for Windows-style Apple framework discovery using find_path() + find_library(). On macOS, find_path() fails because framework headers live inside .framework/Headers/ bundles and Framework/Header.h does not resolve as a literal subdirectory path. Since find_path() fails, Apple::* imported targets are never created. Add an APPLE branch that uses find_library() with the framework's canonical name (not the Windows-specific LIBRARY_NAMES) and creates UNKNOWN IMPORTED targets with IMPORTED_LOCATION only. On macOS the compiler resolves <Framework/Header.h> includes via the sysroot framework search path, so INTERFACE_INCLUDE_DIRECTORIES is not needed. The existing find_path()/find_library() logic moves into an else() block for non-Apple platforms, preserving Windows behavior. Add CoreServices and ImageIO as new FindApple components, and update ImageDiff's PlatformMac.cmake to use find_package(Apple ...) with CoreGraphics.cmake instead of raw -framework flags. Also fix two pre-existing bugs: a ${options}/${OPTIONS} case mismatch in cmake_parse_arguments, and a stray } in a status message string. * Source/cmake/FindApple.cmake: * Tools/ImageDiff/CoreGraphics.cmake: * Tools/ImageDiff/PlatformMac.cmake: Canonical link: https://commits.webkit.org/311404@main
https://bugs.webkit.org/show_bug.cgi?id=312493 rdar://174935698 Unreviewed test correction. I added a new WPT test in Bug 312351 that was a conversion of an internal WebKit test. However, I mistakenly used `test harness.js` in that test, which is not allowed in WPT crash tests. This patch corrects this oversight so that I can push the WPT upstream cleanly. * LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/oblique-request-italic-only-family-no-crash.html: Canonical link: https://commits.webkit.org/311405@main
https://bugs.webkit.org/show_bug.cgi?id=312431 rdar://174880197 Reviewed by Matt Woodrow. The standard colorspace for interpolating colors in gradient on the web is now OKLab, instead of sRGB. Because CoreGraphics doesn't support OKLab, gradients are drawn via CGShading, not CGGradient. The overhead of performing colorstop interpolation shows up in profiles of MotionMark 1.4 Chess subtest. This change moves the interpolation for non-sRGB colorstops to an upfront expense of sampling the gradient. Colorstop ranges are sub-divided into segments that can be linearly interpolated by granularly dividing the stop ranges and then bisecting the range til an acceptable tolerance is reached. The total number of stops and tolerance was determined experimentally by comparing to CoreGraphics. The resulting colorstops are cached as CGGradient in an LRU cache to amortise the overhead of the interpolation. Originally-landed-as: 310405@main (5e93c4d). rdar://168525666 Canonical link: https://commits.webkit.org/311406@main
https://bugs.webkit.org/show_bug.cgi?id=312490 rdar://174934749 Reviewed by Sam Sneddon. Support two pypi URL candidates using the existing fallback mechanisms. * Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py: (_pypi_indices_from_file): Parse pip.conf files and extract pip URLs. (_default_pypi_indices): Return a prioritized list of pypi URLs. (AutoInstall): Set both index and _previous_index based on _default_pypi_indecies. (_default_pypi_index): Renamed _default_pypi_indecies. * Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/autoinstall_unittest.py: (DefaultPyPIIndexTest.test_no_config): (DefaultPyPIIndexTest.test_primary_index_only): (DefaultPyPIIndexTest.test_extra_index_only): (DefaultPyPIIndexTest.test_primary_and_extra_index): (DefaultPyPIIndexTest.test_multiple_extra_indexes): Canonical link: https://commits.webkit.org/311407@main
…from LayoutState HashMap to RenderBlockFlow https://bugs.webkit.org/show_bug.cgi?id=311959 rdar://174512361 Reviewed by Antti Koivisto and Alan Baradlay. LayoutState stores InlineContentCache in a HashMap keyed by CheckedRef. Profiling shows that destruction of this hash map is a significant contributor to ~LineLayout destruction time. Destruction requires indexing into the map, then the removal of an entry that can trigger a shrink/rehash, walking the entries with CheckedRef decrements on each key. Move the InlineContentCache to a unique_ptr member on RenderBlockFlow. The cache is destroyed with the renderer, so no explicit hash table removal is needed, which benefits performance at the tradeoff of making RenderBlockFlow 8 bytes bigger. A/B testing shows this is a small performance improvement. No new tests since behavior should not change and does not cause any expected, testable behavior. * Source/WebCore/layout/LayoutState.cpp: (WebCore::Layout::LayoutState::inlineContentCache): (WebCore::Layout::LayoutState::destroyInlineContentCache): Deleted. * Source/WebCore/layout/LayoutState.h: * Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp: (WebCore::LayoutIntegration::LineLayout::~LineLayout): * Source/WebCore/rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::ensureInlineContentCache): (WebCore::RenderBlockFlow::resetInlineContentCache): * Source/WebCore/rendering/RenderBlockFlow.h: Canonical link: https://commits.webkit.org/311408@main
… InspectorPageAgent into IdentifierRegistry https://bugs.webkit.org/show_bug.cgi?id=310162 Reviewed by Qianlang Chen. Introduce an abstract IdentifierRegistry interface and LegacyIdentifierRegistry implementation to own the frame-to-identifier and loader-to-identifier maps that were previously private to InspectorPageAgent. PageInspectorController creates and owns the registry (Ref<>); agents that need frame lookups hold a WeakRef<>. This is a pure refactoring with no behavioral change for non-SI configurations. LegacyIdentifierRegistry preserves the existing IdentifiersFactory sequential counter behavior ("0.1", "0.2", ...) identically. Under Site Isolation, a BackendIdentifierRegistry subclass (added in a follow-up) produces deterministic type-prefixed IDs derived from FrameIdentifier so UIProcess and WebContent processes can independently compute matching IDs. The frontend treats all protocol frameId and loaderId values as opaque strings. They flow through NetworkManager._frameIdentifierMap (keyed by frameId), Frame.loaderIdentifier, and are passed to backend commands like Page.getResourceTree and Network.getResponseBody. No frontend changes are needed because the string format is never parsed by the frontend -- only compared for equality and used as map keys. Agents that previously required InspectorPageAgent (and thus the Page domain to be enabled) now access frame/loader IDs through the always-available registry on PageInspectorController. This means PageRuntimeAgent::didClearWindowObjectInWorld can now resolve frameIds even when the Page domain is disabled. This is safe because the Runtime agent only dispatches executionContextCreated if its own domain is enabled and a frontend dispatcher is connected. The frameId lookup is a prerequisite for the notification, not a trigger. No new tests: this is a mechanical extraction. All existing inspector/ layout tests validate that the refactored ID paths produce identical behavior. * Source/WebCore/inspector/InspectorIdentifierRegistry.h: Added. (Inspector::IdentifierRegistry): Abstract base with frameId/loaderId/ frameForId/assertFrame/takeFrame/takeLoader virtual interface. (Inspector::LegacyIdentifierRegistry): Concrete impl using IdentifiersFactory sequential counters and bidirectional hash maps. * Source/WebCore/inspector/InspectorIdentifierRegistry.cpp: Added. * Source/WebCore/inspector/PageInspectorController.h: (WebCore::PageInspectorController::identifierRegistry): Added. * Source/WebCore/inspector/PageInspectorController.cpp: Create LegacyIdentifierRegistry in constructor. * Source/WebCore/inspector/agents/InspectorPageAgent.h: * Source/WebCore/inspector/agents/InspectorPageAgent.cpp: Delegate frameId/loaderId/frameForId/assertFrame/takeFrame/takeLoader to identifierRegistry(). Remove private hash maps. * Source/WebCore/inspector/InspectorStyleSheet.h: Change from CheckedPtr<InspectorPageAgent> to WeakRef<IdentifierRegistry> for frame lookups (decouples from Page agent lifecycle). * Source/WebCore/inspector/InspectorShaderProgram.h: Add missing #include <wtf/WeakRef.h>. * Source/WebCore/Sources.txt: Canonical link: https://commits.webkit.org/311409@main
…auseWhenResume is flaky failure rdar://169658576 https://bugs.webkit.org/show_bug.cgi?id=307003 Unreviewed test Gardening Skipping the flaky API tests in macOS configuration * Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewSuspendAllMediaPlayback.mm: (TEST(WKWebViewSuspendAllMediaPlayback, PauseWhenResume)): Canonical link: https://commits.webkit.org/311410@main
… re-appears https://bugs.webkit.org/show_bug.cgi?id=312448 rdar://171179878 Reviewed by Simon Fraser. computeExtent() intersects the scroll inflated bounds (absolute coordinates) with computeStickyExtent() (scroll ancestor relative coordinates). For viewport scrolled sticky elements both spaces match, but inside an overflow container the mismatch produces an empty intersection when content above positions the container below the page origin. The overlap map then misses the sticky layer, so overlapping content with higher z-index is never composited and paints behind the sticky layer. Fix by converting computeStickyExtent() to absolute coordinates before intersecting. Test: compositing/overflow/sticky-overlap-extent-in-overflow.html * LayoutTests/compositing/overflow/sticky-overlap-extent-in-overflow-expected.html: Added. * LayoutTests/compositing/overflow/sticky-overlap-extent-in-overflow.html: Added. * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeExtent const): Canonical link: https://commits.webkit.org/311411@main
https://bugs.webkit.org/show_bug.cgi?id=312528 ("broke the Mac Apple CMake build") Reverted changeset: "Use pre-compiled headers consistently for all ports" https://bugs.webkit.org/show_bug.cgi?id=312210 https://commits.webkit.org/311402@main Canonical link: https://commits.webkit.org/311412@main
https://bugs.webkit.org/show_bug.cgi?id=312485 rdar://174932570 Reviewed by Yusuke Suzuki. Use value - trunc(value) == 0.0 for isInteger, which rejects NaN and Infinity without an explicit isFinite check since NaN - NaN and Inf - Inf both produce NaN. Add MacroAssembler::isDoubleInteger helper and use it in the DFG NumberIsInteger path, removing the manual exponent-bit extraction branch. Simplify the FTL NumberIsInteger path similarly using B3 IR. Remove redundant isFinite checks from DFG and FTL NumberIsSafeInteger, since the range check against maxSafeInteger already rejects Infinity. On ARM64 the difference in codegen is roughly: isIntegerOld(double): frintz d1, d0 fmov x8, d0 mov w9, WebKit#2047 ubfx x8, x8, #52, #11 fcmp d1, d0 ccmp x8, x9, #2, eq cset w0, lo ret isIntegerNew(double): frintz d1, d0 fsub d0, d0, d1 fcmp d0, #0.0 cset w0, eq ret No new tests, no behavior change. Covered by existing tests. Canonical link: https://commits.webkit.org/311413@main
https://bugs.webkit.org/show_bug.cgi?id=312425 rdar://173955537 Reviewed by Tim Horton. The SPI getImageMetadata will use the WebContent process to decode the image data and retrieve the size, the density and the frame count of the image. Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadAndDecodeImage.mm * Source/WebCore/Headers.cmake: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/graphics/BitmapImage.h: * Source/WebCore/platform/graphics/BitmapImageDescriptor.cpp: (WebCore::BitmapImageDescriptor::density const): * Source/WebCore/platform/graphics/BitmapImageDescriptor.h: * Source/WebCore/platform/graphics/BitmapImageSource.h: * Source/WebCore/platform/graphics/ImageDecoder.h: (WebCore::ImageDecoder::frameDensityAtIndex const): * Source/WebCore/platform/graphics/ImageFrame.h: (WebCore::ImageFrame::setDensity): (WebCore::ImageFrame::density const): * Source/WebCore/platform/graphics/ImageSource.h: (WebCore::ImageSource::density const): * Source/WebCore/platform/graphics/ImageUtilities.h: * Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp: (WebCore::frameDensityFromProperties): (WebCore::mayHaveDensityCorrectedSize): (WebCore::ImageDecoderCG::frameDensityAtIndex const): (WebCore::ImageDecoderCG::fetchFrameMetaDataAtIndex const): * Source/WebCore/platform/graphics/cg/ImageDecoderCG.h: * Source/WebCore/platform/graphics/cg/ImageUtilitiesCG.cpp: (WebCore::imageMetadataFromImageData): * Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in: * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _getImageMetadata:completionHandler:]): * Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h: * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::getInformationFromImageData): (WebKit::WebPageProxy::getImageMetadata): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm: (WebKit::WebPage::getImageMetadata): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebPage/WebPage.messages.in: * Tools/TestWebKitAPI/Tests/WebKit/WKWebView/LoadAndDecodeImage.mm: (TestWebKitAPI::TEST(WebKit, GetImageMetadata)): Canonical link: https://commits.webkit.org/311414@main
https://bugs.webkit.org/show_bug.cgi?id=312529 rdar://174966545 Reviewed by Geoffrey Garen. Utility for analyzing the output of clang -ftime-trace, removing the need to install ClangBuildAnalyzer. Supports both Xcode and CMake build directory layouts (recursive JSON search). Modes: - Default: top headers by exclusive (self) parse time - --templates: template instantiation hotspots - --functions: slowest functions to compile - --slowest-tu: TUs with longest frontend/backend time - --summary: overall build time breakdown - --categories: top event categories - --trace-header: drill into include nesting for a specific header in a TU - --filter: restrict header output to names matching a substring * Tools/Scripts/analyze-ftime-trace: Added. Canonical link: https://commits.webkit.org/311415@main
https://bugs.webkit.org/show_bug.cgi?id=312515 rdar://174959024 Reviewed by Elliott Williams. Use the non-Tools "Everything up to WebKit" scheme since there's no point in analyzing Tools with Safer CPP. * Makefile: Canonical link: https://commits.webkit.org/311416@main
- AirOpcodeGenerated.h: emit the winnt.h Rotate*/Fence undef block after the local includes; CCallHelpers.h now transitively pulls in winnt.h which re-defined the macros after the previous undef. - Dockerfile: 20.04 hit EOL and the package archive moved to old-releases.ubuntu.com; rewrite sources.list before apt-get update.
WalkthroughThis pull request extensively updates test infrastructure and build configuration. Key changes include replacing conditional memory-limited test skips with explicit memory-hog markers, adding macOS CMake presets, refactoring Xcode configuration variables, introducing comprehensive module and WASM tests, and adding numerous stress test cases for promise tampering, typed array detachment, and YARR JIT scenarios. Changes
|
The previous Linux failure was a transient connection timeout to archive.ubuntu.com inside the buildx container, not an EOL move. old-releases does not yet host focal, so the rewrite made things worse.
archive.ubuntu.com has been timing out from inside the GitHub-hosted docker-buildx network across multiple runs while security.ubuntu.com and ports.ubuntu.com on the same backbone are reachable. Point amd64 at Azure's mirror; arm64 already uses ports.ubuntu.com which is fine.
There was a problem hiding this comment.
Actionable comments posted: 22
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CMakeLists.txt`:
- Line 31: The if-statement currently compares the variable CMAKE_Swift_COMPILER
against the literal string "_swift_wrapper" which never matches the intended
variable value; update the comparison to use the value of the _swift_wrapper
variable (i.e., dereference/expand _swift_wrapper in the comparison) so the
cache-poisoning guard actually triggers when CMAKE_Swift_COMPILER equals the
value held in _swift_wrapper.
- Around line 42-43: Add cleanup for the remaining temporary variable by
unsetting _which_retcode alongside the existing unsets for _swift_wrapper and
_real_swiftc; locate the block that calls unset(_swift_wrapper) and
unset(_real_swiftc) and add unset(_which_retcode) so all temporary variables
(_which_retcode, _swift_wrapper, _real_swiftc) are removed after use.
In `@Configurations/CommonBase.xcconfig`:
- Line 124: The OTHER_SWIFT_FLAGS entry currently includes a non-existent
compiler option "-enable-experimental-feature ImportCxxMembersLazily"; remove
that flag from the OTHER_SWIFT_FLAGS assignment (or replace it with the correct,
supported flag if you intended a different Swift C++ interop feature) so the
compiler line containing OTHER_SWIFT_FLAGS no longer references
"-enable-experimental-feature ImportCxxMembersLazily".
In `@JSTests/microbenchmarks/bigint64-array-index-of-small.js`:
- Line 1: The test file bigint64-array-index-of-small.js incorrectly uses the
heavyweight marker "//@ memoryHog!"; remove that marker (or replace it with a
simple skip directive if the test framework requires it) so this small
16-element BigInt64Array test is not classified as a memory hog. Locate the "//@
memoryHog!" token in bigint64-array-index-of-small.js and delete it (or change
it to the appropriate skip/comment directive), leaving the rest of the test (the
array allocation and any "let size = 16" logic) unchanged.
In `@JSTests/microbenchmarks/loop-unrolling-array-clone-big.js`:
- Line 1: Remove the incorrect "memoryHog!" tag from the test header in
JSTests/microbenchmarks/loop-unrolling-array-clone-big.js since the test only
allocates a 20-element array across 10k iterations (negligible memory); replace
it with either no tag or a clarifying comment that "big" refers to
loop-unrolling size rather than data size so the test is not misclassified by
memory-sensitive tooling.
In `@JSTests/microbenchmarks/string-index-of-1001-end.js`:
- Around line 2-6: The bench function currently declares an unused parameter
named "string"; remove this vestigial parameter from the bench(signature) so it
becomes bench(func) and update every call site that passes a label string (e.g.,
bench("label", someFunc)) to pass only the function (e.g., bench(someFunc));
ensure the function body (loop using func) and any references to the old
parameter are adjusted accordingly.
In `@JSTests/modules/concurrent-imports.js`:
- Around line 28-48: The test currently hard-codes a single global interleaving
by comparing logs.join("\n") to the exact expected array, which makes the test
flaky; change the assertion logic (replace the equality check using the expected
array and logs) to validate per-import properties instead: assert there are five
"Starting import N" lines (for N=1..5), assert for each N that "Import N
completed" appears and that an "Access N: someArray,someFunction" follows that
completion (i.e., for each N the completion line index < access line index), and
do not assert any ordering between different N values; use the existing logs
array and the expected labels ("Starting import", "Import N completed", "Access
N: someArray,someFunction") to locate and validate each import’s sequence.
In `@JSTests/modules/concurrent-imports/module.js`:
- Line 1: Replace the host-dependent sleep in module.js: change the line using
await new Promise(r => setTimeout(r, 10)) to a microtask resolution using await
Promise.resolve() so the module uses host-independent async evaluation; ensure
the surrounding module initialization logic (the awaited expression) remains the
same and only the Promise creation is replaced.
In `@JSTests/modules/sync-from-async.js`:
- Around line 3-5: The comment in JSTests/modules/sync-from-async.js
inaccurately states the ReferenceError is "caught and asserted" here; update the
comment to say this file merely triggers module evaluation via import and that
the actual assertion/check is performed in JSTests/modules/sync-from-async/b.js
so triage isn't confused; reference the test file name sync-from-async.js and
the assertion location b.js in the revised wording.
In `@JSTests/modules/tla-cycle.js`:
- Around line 1-7: Replace the two string throws with Error objects: change the
post-import throw "Expected an exception" to throw new Error("Expected an
exception") and change the throw "Incorrect exception message" inside the catch
to throw new Error("Incorrect exception message"); keep the existing catch(e)
check (e.message !== "C failed") unchanged so the code still compares the error
message string.
In `@JSTests/stress/iterator-prototype-includes.js`:
- Line 1: The unscoped skip directive ("//@ skip if $architecture == \"x86_64\"
and $hostOS == \"linux\"") disables the whole stress test for a major platform;
update that directive to be specific or documented: either narrow the condition
to the exact failing configuration (e.g., add additional guards like $buildType,
$compiler, or a specific test flag) or replace/augment the skip with an inline
comment containing a bug/issue tracker ID and explicit removal criteria (what
must be fixed and when to remove the skip) so future reviewers can understand
and remove it when resolved.
In `@JSTests/stress/iterator-prototype-join.js`:
- Around line 111-114: The isDone flag is never updated so assertions on isDone
in this test are ineffective; inside each iterator implementation (the object
with properties value, isClosed, isDone and its next() method) set this.isDone =
true at the point you return a { done: true } result and set this.isDone = false
when the iterator is initialized or when yielding a live value, and ensure any
early-close path (where isClosed is set) also sets this.isDone = true so
assertions referring to isDone will be meaningful (update the next()
implementations and any close/return branches that currently only touch
isClosed).
- Around line 129-134: Replace the manual try/catch blocks that call
iterator.join(Symbol(42)) and assert on the caught error with the test helper
shouldThrow to make the expectation explicit; specifically, call shouldThrow(()
=> iterator.join(Symbol(42)), TypeError, "Cannot convert a symbol to a string")
(or the project's shouldThrow signature) instead of using try/catch + sameValue
checks, and update the second identical block (the other
iterator.join(Symbol(42)) occurrence) the same way to remove duplicated
error-handling code.
In `@JSTests/stress/module-loader-security-deep-chain-tampered.js`:
- Around line 16-17: The leak-detection list stored in the variable types
currently checks for ["JSSourceCode", "ModuleRegistryEntry",
"ModuleLoadingContext", "ModuleGraphLoadingState", "ModuleLoaderPayload"] but
misses the new loader internals; update the types array declaration (variable
name types) to include "ModuleMap" alongside the existing type names so leaks of
ModuleMap are also detected.
- Around line 32-49: The wrapper uses truthiness checks for
onFulfilled/onRejected (wrappedFulfilled and wrappedRejected) which can try to
call non-callable truthy values; change the condition to test callability (e.g.,
typeof onFulfilled === "function" or an existing IsCallable utility) and only
create the wrapper when the handler is callable, otherwise leave
onFulfilled/onRejected untouched; ensure you refer to the same identifiers
(wrappedFulfilled, wrappedRejected, onFulfilled, onRejected) and preserve the
existing logic that inspects describe(...) and isInternalType(...) inside the
wrappers.
In `@JSTests/stress/module-loader-security-failure-tampered.js`:
- Around line 33-49: The wrappers wrappedFulfilled and wrappedRejected currently
decide to wrap based on truthiness of onFulfilled/onRejected which can cause
non-callable truthy values to be invoked; change the guards to test callability
using typeof onFulfilled === "function" and typeof onRejected === "function" so
only actual functions are wrapped and invoked, leaving non-functions unchanged;
keep the existing internal logic that uses describe(...) and isInternalType(...)
to push into leakedValues and return the original handlers when not callable.
In `@JSTests/stress/module-loader-security-reimport-tampered.js`:
- Around line 40-57: The wrapper uses truthy checks when creating
wrappedFulfilled and wrappedRejected which can treat non-callable truthy values
as functions and cause runtime errors; update the conditionals to check
callability with typeof onFulfilled === "function" and typeof onRejected ===
"function" when creating wrappedFulfilled and wrappedRejected (keep the existing
behavior of returning the original onFulfilled/onRejected when not a function),
and ensure the rest of the logic that calls describe, isInternalType, and pushes
into leakedValues remains unchanged.
In `@JSTests/stress/promise-isPromise.js`:
- Line 20: The rejected promise created for the assertion (Promise.reject()) has
no rejection handler and can trigger unhandled-rejection warnings; update the
call used with Promise.isPromise so the rejected promise has a no-op rejection
handler (e.g., attach .catch(() => {}) or equivalent) while preserving the
assertion, referencing the Promise.isPromise and Promise.reject usage so the
test still verifies isPromise(true) but avoids unhandled rejections.
In `@JSTests/stress/yarr-jit-paren-context-head-uaf.js`:
- Around line 8-11: The current shouldBe function uses JSON.stringify for
comparison which collapses undefined to null in arrays and can hide mismatches
of regex capture groups; update shouldBe to perform a strict deep equality check
that preserves undefined (e.g., use Node's assert.deepStrictEqual or implement a
recursive deepEqual that uses === for primitives and compares array lengths and
elements including undefined) and throw the same Error when they differ; modify
the shouldBe function to call that deep-equality routine instead of
JSON.stringify so unmatched capture groups are not treated as equal to null.
In `@JSTests/wasm/stress/ipint-multimem-oob.js`:
- Around line 102-103: The tests currently catch all exceptions (e.g., in the
try around inst.exports.scalarLoad(PAGE - 3)) which can hide unexpected
failures; update each catch block (the ones guarding inst.exports.scalarLoad and
similar OOB ops) to rethrow any error that is not a WebAssembly.RuntimeError by
replacing "catch (e) { }" with "catch (e) { if (!(e instanceof
WebAssembly.RuntimeError)) throw e; }" so only expected WebAssembly runtime
traps are swallowed and other errors surface.
In `@JSTests/wasm/stress/jspi-stack-traces.js`:
- Around line 65-71: The test assumes at least three frames after finding
captureStack but may index past the array; add an explicit length guard on
frames before accessing frames[captureIdx + 1] and frames[captureIdx + 2] (use
frames.length and captureIdx) and assert the stack is long enough with a clear
message referencing capturedStack, captureStack, and frames; only then perform
the existing checks that the subsequent frames include "wasm-function" to avoid
a generic TypeError when the stack is shorter than expected.
In `@JSTests/wasm/stress/memory64-atomics.js`:
- Around line 42-49: The file-level comment incorrectly states the test uses
"memory64 (i64 addresses) with shared memory" while the atomic block uses a
memory32 shared declaration `(memory (export "memory") 1 1 shared)`; either
change that atomic block to a memory64 shared declaration `(memory (export
"memory") i64 1 1 shared)` to match the top comment, or update the file-level
comment to state that the file tests memory64 non-atomic behavior separately and
uses memory32 shared for the atomic block; locate the module with `(memory
(export "memory") 1 1 shared)` and adjust it or edit the top-of-file comment
accordingly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: b2fd4c6f-c8d9-410f-b4a7-4c5be3500072
📒 Files selected for processing (300)
.claude/plugins/git-webkit/skills/find/SKILL.mdCMakeLists.txtCMakePresets.jsonConfigurations/CommonBase.xcconfigConfigurations/Sanitizers.xcconfigConfigurations/WebKitTargetConditionals.xcconfigDockerfileJSTests/microbenchmarks/array-from-derived-object-func.jsJSTests/microbenchmarks/array-from-object-func.jsJSTests/microbenchmarks/array-length-reset-double.jsJSTests/microbenchmarks/bigint64-array-index-of-large.jsJSTests/microbenchmarks/bigint64-array-index-of-medium.jsJSTests/microbenchmarks/bigint64-array-index-of-small.jsJSTests/microbenchmarks/biguint64-array-index-of-large.jsJSTests/microbenchmarks/biguint64-array-index-of-medium.jsJSTests/microbenchmarks/biguint64-array-index-of-small.jsJSTests/microbenchmarks/float32-array-index-of-large.jsJSTests/microbenchmarks/float32-array-index-of-medium.jsJSTests/microbenchmarks/float32-array-index-of-small.jsJSTests/microbenchmarks/float64-array-index-of-large.jsJSTests/microbenchmarks/float64-array-index-of-medium.jsJSTests/microbenchmarks/float64-array-index-of-small.jsJSTests/microbenchmarks/get-private-name.jsJSTests/microbenchmarks/int32-array-index-of-large.jsJSTests/microbenchmarks/int32-array-index-of-medium.jsJSTests/microbenchmarks/int32-array-index-of-small.jsJSTests/microbenchmarks/internal-promise-internal-all.jsJSTests/microbenchmarks/jquery-todomvc-regexp.jsJSTests/microbenchmarks/json-stringify-int32-array.jsJSTests/microbenchmarks/large-empty-array-join.jsJSTests/microbenchmarks/loop-unrolling-array-clone-big.jsJSTests/microbenchmarks/loop-unrolling-array-clone-small.jsJSTests/microbenchmarks/loop-unrolling-constant-small.jsJSTests/microbenchmarks/loop-unrolling-variable-large.jsJSTests/microbenchmarks/loop-unrolling-variable-medium-dep.jsJSTests/microbenchmarks/loop-unrolling-variable-medium.jsJSTests/microbenchmarks/loop-unrolling-variable-small.jsJSTests/microbenchmarks/lots-of-fields.jsJSTests/microbenchmarks/mul-immediate-sub.jsJSTests/microbenchmarks/put-by-val-direct-large-index.jsJSTests/microbenchmarks/set-delete-add.jsJSTests/microbenchmarks/string-index-of-10000001-404.jsJSTests/microbenchmarks/string-index-of-10000001-beg.jsJSTests/microbenchmarks/string-index-of-10000001-end.jsJSTests/microbenchmarks/string-index-of-10000001-mid.jsJSTests/microbenchmarks/string-index-of-1000001-404.jsJSTests/microbenchmarks/string-index-of-1000001-beg.jsJSTests/microbenchmarks/string-index-of-1000001-end.jsJSTests/microbenchmarks/string-index-of-1000001-mid.jsJSTests/microbenchmarks/string-index-of-100001-404.jsJSTests/microbenchmarks/string-index-of-100001-beg.jsJSTests/microbenchmarks/string-index-of-100001-end.jsJSTests/microbenchmarks/string-index-of-100001-mid.jsJSTests/microbenchmarks/string-index-of-10001-404.jsJSTests/microbenchmarks/string-index-of-10001-beg.jsJSTests/microbenchmarks/string-index-of-10001-end.jsJSTests/microbenchmarks/string-index-of-10001-mid.jsJSTests/microbenchmarks/string-index-of-1001-404.jsJSTests/microbenchmarks/string-index-of-1001-beg.jsJSTests/microbenchmarks/string-index-of-1001-end.jsJSTests/microbenchmarks/string-index-of-1001-mid.jsJSTests/microbenchmarks/string-index-of-101-404.jsJSTests/microbenchmarks/string-index-of-101-beg.jsJSTests/microbenchmarks/string-index-of-101-end.jsJSTests/microbenchmarks/string-index-of-101-mid.jsJSTests/microbenchmarks/string-index-of-11-404.jsJSTests/microbenchmarks/string-index-of-11-beg.jsJSTests/microbenchmarks/string-index-of-11-end.jsJSTests/microbenchmarks/string-index-of-11-mid.jsJSTests/microbenchmarks/typed-array-from-array.jsJSTests/microbenchmarks/u16-string-index-of-10000001-404.jsJSTests/microbenchmarks/u16-string-index-of-10000001-beg.jsJSTests/microbenchmarks/u16-string-index-of-10000001-end.jsJSTests/microbenchmarks/u16-string-index-of-10000001-mid.jsJSTests/microbenchmarks/wasm-udiv-by-constant.jsJSTests/modules/bare-resolution-failure.jsJSTests/modules/bare-resolution-failure/a/x.jsJSTests/modules/bare-resolution-failure/b/y.jsJSTests/modules/concurrent-imports.jsJSTests/modules/concurrent-imports/module.jsJSTests/modules/module-var-resolve-scope-osr-availability-in-async-finally.jsJSTests/modules/module-var-resolve-scope-osr-availability-in-async-finally/h.jsJSTests/modules/sync-from-async.jsJSTests/modules/sync-from-async/a.jsJSTests/modules/sync-from-async/b.jsJSTests/modules/tla-cycle.jsJSTests/modules/tla-cycle/a.jsJSTests/modules/tla-cycle/b.jsJSTests/modules/tla-cycle/c.jsJSTests/mozilla/mozilla-tests.yamlJSTests/slowMicrobenchmarks/dense-set.jsJSTests/slowMicrobenchmarks/function-constructor-with-huge-strings.jsJSTests/slowMicrobenchmarks/map-constant-key.jsJSTests/stress/PrintStream-truncation-for-extremely-long-strings.jsJSTests/stress/StringObject-define-length-getter-rope-string-oom.jsJSTests/stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.jsJSTests/stress/array-length-store-ic-double-noncow.jsJSTests/stress/array-length-store-ic-double-then-int32.jsJSTests/stress/array-prototype-concat-of-long-spliced-arrays.jsJSTests/stress/array-prototype-concat-of-long-spliced-arrays2.jsJSTests/stress/array-reverse-doesnt-clobber.jsJSTests/stress/array-sink-materialize-cycle-break-in-exit-invalid.jsJSTests/stress/atob-btoa-oom-check.jsJSTests/stress/big-int-constructor-oom.jsJSTests/stress/big-wasm-memory-grow-no-max.jsJSTests/stress/big-wasm-memory-grow.jsJSTests/stress/big-wasm-memory.jsJSTests/stress/bigdecimal-identifiers-fail-on-oom.jsJSTests/stress/bigint-can-throw-oom.jsJSTests/stress/bounds-checking-in-cold-loop.jsJSTests/stress/btoa-string-overflow.jsJSTests/stress/call-varargs-inlining-should-not-clobber-previous-to-free-register.jsJSTests/stress/check-is-constant-non-cell-should-not-array-profile-during-osr-exit.jsJSTests/stress/check-stack-overflow-before-value-profiling-arguments.jsJSTests/stress/codeblock-destructor-access-unlinkedcodeblock.jsJSTests/stress/constructFunctionSkippingEvalEnabledCheck-should-throw-out-of-memory-error.jsJSTests/stress/create-error-out-of-memory-rope-string.jsJSTests/stress/data-view-byte-length-oob-exit.jsJSTests/stress/dataview-byte-length-large-array-oob-baseline.jsJSTests/stress/dataview-byte-length-large-array-oob.jsJSTests/stress/dataview-byte-length-large-array.jsJSTests/stress/dataview-constructor-bug-311903-weird-bytelength-detach-buffer.jsJSTests/stress/dataview-constructor-bug-311903-weird-byteoffset-detach-buffer.jsJSTests/stress/describe-huge-strings.jsJSTests/stress/dont-reserve-huge-capacity-lexer.jsJSTests/stress/eval-huge-big-int-memory-overflow.jsJSTests/stress/exception-checks-before-and-after-viewwithunderlyingstring.jsJSTests/stress/exhaust-gigacage-and-allocate-vm.jsJSTests/stress/fast-stringifier-check-string-length.jsJSTests/stress/force-string-array-or-string.jsJSTests/stress/function-name-too-long-to-reify.jsJSTests/stress/get-array-length-reuse.jsJSTests/stress/get-own-property-descriptors-oom.jsJSTests/stress/has-own-property-name-cache-string-keys.jsJSTests/stress/has-own-property-name-cache-symbol-keys.jsJSTests/stress/incremental-marking-should-not-dead-lock-in-new-property-transition.jsJSTests/stress/internal-promise-constructor-not-confusing.jsJSTests/stress/internal-promise-is-not-exposed.jsJSTests/stress/intl-canonicalize-locale-list-error-oom.jsJSTests/stress/intl-data-time-format-string-overflow.jsJSTests/stress/iterator-prototype-includes.jsJSTests/stress/iterator-prototype-join.jsJSTests/stress/joined-strings-should-not-exceed-max-string-length.jsJSTests/stress/js-fixed-array-out-of-memory.jsJSTests/stress/json-stringified-overflow-2.jsJSTests/stress/json-stringified-overflow.jsJSTests/stress/json-stringify-out-of-memory.jsJSTests/stress/json-stringify-stack-overflow.jsJSTests/stress/json-stringify-string-builder-overflow.jsJSTests/stress/large-string-should-not-crash-error-creation.jsJSTests/stress/large-unshift-splice.jsJSTests/stress/literal-parser-error-message-oom.jsJSTests/stress/make-large-string-jit-strcat.jsJSTests/stress/make-large-string-jit.jsJSTests/stress/make-large-string-strcat.jsJSTests/stress/make-large-string.jsJSTests/stress/make-rope-overflow-nested-catch.jsJSTests/stress/make-rope-overflow-nested.jsJSTests/stress/many-substrings-of-rope-shouldnt-use-excessive-memory.jsJSTests/stress/map-forEach.jsJSTests/stress/map-rehash-oom.jsJSTests/stress/max-typed-array-length-toString.jsJSTests/stress/missing-exception-check-in-JSValue-toWTFStringSlowCase.jsJSTests/stress/missing-exception-check-in-json-stringifier-gap.jsJSTests/stress/module-loader-object-prototype-then-no-promise-tamper.jsJSTests/stress/module-loader-promise-then-reassigned-same-value.jsJSTests/stress/module-loader-promise-then-tampered-no-deps.jsJSTests/stress/module-loader-promise-then-tampered.jsJSTests/stress/module-loader-security-deep-chain-tampered.jsJSTests/stress/module-loader-security-defineproperty-then.jsJSTests/stress/module-loader-security-failure-tampered.jsJSTests/stress/module-loader-security-proxy-then.jsJSTests/stress/module-loader-security-reimport-tampered.jsJSTests/stress/module-loader-security-thenable-namespace-tampered.jsJSTests/stress/module-loader-security-thenable-namespace.jsJSTests/stress/module-loader-security-tla-tampered-then.jsJSTests/stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.jsJSTests/stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings.jsJSTests/stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings2.jsJSTests/stress/out-of-memory-handle-in-join.jsJSTests/stress/out-of-memory-in-globalFuncUnescape.jsJSTests/stress/out-of-memory-in-intl-segmenter.jsJSTests/stress/out-of-memory-making-error-string-in-literal-parser.jsJSTests/stress/out-of-memory-while-constructing-BytecodeGenerator.jsJSTests/stress/out-of-memory-while-describing-symbol-for-error.jsJSTests/stress/own-property-names-oom.jsJSTests/stress/pretty-print-oom.jsJSTests/stress/promise-isPromise.jsJSTests/stress/race-to-add-opaque-roots-in-ConcurrentPtrHashSet.jsJSTests/stress/re-enter-resolve-rope-string.jsJSTests/stress/regexp-accumulatedResult-overflow.jsJSTests/stress/regexp-bol-optimize-out-of-stack.jsJSTests/stress/regexp-escape-oom.jsJSTests/stress/regexp-huge-oom.jsJSTests/stress/regexp-quantify-atom-copy-term-out-of-stack.jsJSTests/stress/regress-109102631.jsJSTests/stress/regress-178385.jsJSTests/stress/regress-185888.jsJSTests/stress/regress-189132.jsJSTests/stress/regress-190187.jsJSTests/stress/regress-191563.jsJSTests/stress/regress-192717.jsJSTests/stress/regress-84402043.jsJSTests/stress/resources/module-loader-promise-then-tampered-dep.jsJSTests/stress/resources/module-loader-promise-then-tampered-no-deps.jsJSTests/stress/resources/module-loader-promise-then-tampered-target.jsJSTests/stress/resources/module-loader-security-deep-a.jsJSTests/stress/resources/module-loader-security-deep-b.jsJSTests/stress/resources/module-loader-security-deep-c.jsJSTests/stress/resources/module-loader-security-thenable-namespace-module.jsJSTests/stress/resources/module-loader-security-tla-module.jsJSTests/stress/sampling-profiler-richards.jsJSTests/stress/scoped-arguments-table-should-be-tolerant-for-oom.jsJSTests/stress/set-rehash-oom.jsJSTests/stress/short-circuit-assignment-readonly-local.jsJSTests/stress/splay-flash-access-1ms.jsJSTests/stress/splay-flash-access.jsJSTests/stress/stack-frame-code-block-offset.jsJSTests/stress/stack-overflow-in-scope-with-catch.jsJSTests/stress/stack-overflow-regexp.jsJSTests/stress/stress-agent.jsJSTests/stress/string-16bit-repeat-overflow.jsJSTests/stress/string-joining-long-strings-should-not-crash.jsJSTests/stress/string-overflow-createError-builder.jsJSTests/stress/string-overflow-createError-fit.jsJSTests/stress/string-overflow-createError.jsJSTests/stress/string-overflow-in-dfg-graph-dump.jsJSTests/stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.jsJSTests/stress/string-regexp-replace-oom.jsJSTests/stress/test-exception-assert-in-ExceptionHelpers-createError.jsJSTests/stress/test-out-of-memory.jsJSTests/stress/too-large-base64-string.jsJSTests/stress/try-get-value-without-gc.jsJSTests/stress/typed-array-always-large.jsJSTests/stress/typed-array-eventually-large.jsJSTests/stress/typed-array-filter-oom.jsJSTests/stress/typed-array-large-eventually-oob.jsJSTests/stress/typed-array-large-slice.jsJSTests/stress/typed-array-oom-in-buffer-accessor.jsJSTests/stress/typed-array-set.jsJSTests/stress/typed-array-subarray-can-throw-oom-error.jsJSTests/stress/typedarray-constructor-bug-311903-weird-bytelength-detach-buffer.jsJSTests/stress/typedarray-constructor-bug-311903-weird-byteoffset-detach-buffer.jsJSTests/stress/typedarray-sort-out-of-memory.jsJSTests/stress/unlinked-code-block-destructor.jsJSTests/stress/unshiftCountSlowCase-correct-postCapacity.jsJSTests/stress/v8-deltablue-strict.jsJSTests/stress/var-injection-cache-invalidation.jsJSTests/stress/verify-can-gc-node-index.jsJSTests/stress/watchdog-fire-while-in-forEachInIterable.jsJSTests/stress/weakblock-trigger-gc.jsJSTests/stress/yarr-jit-paren-context-head-uaf.jsJSTests/test262/expectations.yamlJSTests/wasm.yamlJSTests/wasm/debugger/tests/tests.pyJSTests/wasm/function-tests/grow-memory-cause-gc.jsJSTests/wasm/gc/array_new_data.jsJSTests/wasm/ipint-tests/ipint-test-leb-decode.jsJSTests/wasm/ipint-tests/ipint-test-simd-memory.jsJSTests/wasm/ipint-tests/ipint-test-simd-multi-byte-leb.jsJSTests/wasm/js-api/test_memory_constructor.jsJSTests/wasm/memory64-spec-tests/address64.wast.jsJSTests/wasm/memory64-spec-tests/align64.wast.jsJSTests/wasm/memory64-spec-tests/binary_leb128_64.wast.jsJSTests/wasm/memory64-spec-tests/bulk64.wast.jsJSTests/wasm/memory64-spec-tests/call_indirect64.wast.jsJSTests/wasm/memory64-spec-tests/endianness64.wast.jsJSTests/wasm/memory64-spec-tests/float_memory64.wast.jsJSTests/wasm/memory64-spec-tests/load64.wast.jsJSTests/wasm/memory64-spec-tests/memory64-imports.wast.jsJSTests/wasm/memory64-spec-tests/memory64.wast.jsJSTests/wasm/memory64-spec-tests/memory_copy64.wast.jsJSTests/wasm/memory64-spec-tests/memory_fill64.wast.jsJSTests/wasm/memory64-spec-tests/memory_grow64.wast.jsJSTests/wasm/memory64-spec-tests/memory_init64.wast.jsJSTests/wasm/memory64-spec-tests/memory_redundancy64.wast.jsJSTests/wasm/memory64-spec-tests/memory_trap64.wast.jsJSTests/wasm/memory64-spec-tests/table64.wast.jsJSTests/wasm/memory64-spec-tests/table_copy64.wast.jsJSTests/wasm/memory64-spec-tests/table_copy_mixed.wast.jsJSTests/wasm/memory64-spec-tests/table_fill64.wast.jsJSTests/wasm/memory64-spec-tests/table_get64.wast.jsJSTests/wasm/memory64-spec-tests/table_grow64.wast.jsJSTests/wasm/memory64-spec-tests/table_init64.wast.jsJSTests/wasm/memory64-spec-tests/table_set64.wast.jsJSTests/wasm/memory64-spec-tests/table_size64.wast.jsJSTests/wasm/references/multitable.jsJSTests/wasm/stress/array-element-creation.jsJSTests/wasm/stress/atomic-cmpxchg-large-offset.jsJSTests/wasm/stress/block_end_aliasing.jsJSTests/wasm/stress/block_end_aliasing_2.jsJSTests/wasm/stress/catch-pinned-registers.jsJSTests/wasm/stress/enumerator-oom.jsJSTests/wasm/stress/externref-result-tuple.jsJSTests/wasm/stress/initialize-100k-functions.jsJSTests/wasm/stress/inline-simd-function.jsJSTests/wasm/stress/ipint-multimem-oob.jsJSTests/wasm/stress/jspi-stack-traces.jsJSTests/wasm/stress/memory64-atomics.jsJSTests/wasm/stress/memory64-load-and-store.js
💤 Files with no reviewable changes (5)
- JSTests/stress/internal-promise-is-not-exposed.js
- JSTests/microbenchmarks/internal-promise-internal-all.js
- JSTests/stress/internal-promise-constructor-not-confusing.js
- Configurations/WebKitTargetConditionals.xcconfig
- JSTests/test262/expectations.yaml
| # Guard against cache poisoning: if CMAKE_Swift_COMPILER already IS the | ||
| # wrapper (from a previous configure), find the real compiler via 'which'. | ||
| set(_swift_wrapper "${CMAKE_SOURCE_DIR}/Tools/Scripts/swift/swiftc-wrapper.sh") | ||
| if (CMAKE_Swift_COMPILER STREQUAL _swift_wrapper) |
There was a problem hiding this comment.
Missing variable dereference in comparison.
The comparison CMAKE_Swift_COMPILER STREQUAL _swift_wrapper compares against the literal string "_swift_wrapper" rather than the value of _swift_wrapper. This will cause the cache poisoning guard to never trigger, defeating the purpose of this fix.
🐛 Proposed fix
- if (CMAKE_Swift_COMPILER STREQUAL _swift_wrapper)
+ if (CMAKE_Swift_COMPILER STREQUAL "${_swift_wrapper}")📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (CMAKE_Swift_COMPILER STREQUAL _swift_wrapper) | |
| if (CMAKE_Swift_COMPILER STREQUAL "${_swift_wrapper}") |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CMakeLists.txt` at line 31, The if-statement currently compares the variable
CMAKE_Swift_COMPILER against the literal string "_swift_wrapper" which never
matches the intended variable value; update the comparison to use the value of
the _swift_wrapper variable (i.e., dereference/expand _swift_wrapper in the
comparison) so the cache-poisoning guard actually triggers when
CMAKE_Swift_COMPILER equals the value held in _swift_wrapper.
| unset(_swift_wrapper) | ||
| unset(_real_swiftc) |
There was a problem hiding this comment.
Incomplete cleanup of temporary variables.
_which_retcode is created on line 32 but not unset along with the other temporary variables.
🧹 Proposed fix
unset(_swift_wrapper)
unset(_real_swiftc)
+ unset(_which_retcode)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| unset(_swift_wrapper) | |
| unset(_real_swiftc) | |
| unset(_swift_wrapper) | |
| unset(_real_swiftc) | |
| unset(_which_retcode) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CMakeLists.txt` around lines 42 - 43, Add cleanup for the remaining temporary
variable by unsetting _which_retcode alongside the existing unsets for
_swift_wrapper and _real_swiftc; locate the block that calls
unset(_swift_wrapper) and unset(_real_swiftc) and add unset(_which_retcode) so
all temporary variables (_which_retcode, _swift_wrapper, _real_swiftc) are
removed after use.
|
|
||
| // rdar://170129992: remove -track-system-dependencies when resolved | ||
| OTHER_SWIFT_FLAGS = $(inherited) -Werror ExistentialAny -enable-upcoming-feature ExistentialAny $(WK_SWIFT_MEMORY_SAFETY_FLAGS) $(WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS) $(WK_SWIFT_CLANG_DEPLOYMENT_TARGET) $(WK_SANITIZER_OTHER_SWIFT_FLAGS) -enable-upcoming-feature InternalImportsByDefault -enable-upcoming-feature MemberImportVisibility -track-system-dependencies; | ||
| OTHER_SWIFT_FLAGS = $(inherited) -Werror ExistentialAny -enable-upcoming-feature ExistentialAny $(WK_SWIFT_MEMORY_SAFETY_FLAGS) $(WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS) $(WK_SWIFT_CLANG_DEPLOYMENT_TARGET) $(WK_SANITIZER_OTHER_SWIFT_FLAGS) -enable-upcoming-feature InternalImportsByDefault -enable-upcoming-feature MemberImportVisibility -track-system-dependencies -enable-experimental-feature ImportCxxMembersLazily; |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Swift ImportCxxMembersLazily experimental feature status
💡 Result:
No evidence found of an experimental Swift compiler feature named "ImportCxxMembersLazily". Searches across Swift GitHub repositories, official documentation, evolution proposals, and compiler option definitions (FrontendOptions.td) returned no matches for this exact flag. Related findings: - Lazy C++ member importing was implemented in 2021 via PR #38675 ("Lazily import members of clang namespaces and records via requests"), merged without an associated experimental flag. - Recent C++ interop experimental flags exist, e.g., "ImportNonPublicCxxMembers" (PR #79728, merged March 2025). - Lazy importing enhancements for import-as-member in PRs #71320 and #72023 (2024), with workaround flag "-disable-named-lazy-import-as-member-loading". - Current C++ interop enabled via "-cxx-interoperability-mode=default" (no "ImportCxxMembersLazily"). The feature appears to be enabled by default in modern Swift (post-Swift 5.9 C++ interop support) without a specific toggle, or the name may be incorrect/misremembered.
Citations:
- 1: [cxx-interop] Lazily import members of clang namespaces and records via requests. swiftlang/swift#38675
- 2: [cxx-interop] Make experimental flag ImportNonPublicCxxMembers swiftlang/swift#79728
- 3: https://github.com/apple/swift/blob/main/include/swift/Option/FrontendOptions.td
- 4: Add workaround flag for lazy import-as-member swiftlang/swift#72023
- 5: [ClangImporter] Support lazy member loading for import-as-member globals in extensions swiftlang/swift#71320
- 6: https://github.com/swiftlang/swift/blob/36b5090a/include/swift/Option/FrontendOptions.td
- 7: https://www.swift.org/documentation/cxx-interop/status
- 8: https://swift.org/documentation/cxx-interop/project-build-setup/
Remove the non-existent -enable-experimental-feature ImportCxxMembersLazily flag.
The flag does not exist in Swift's compiler options. This will likely cause build failures or silent ignorance by the compiler. If lazy C++ member importing was intended, it is enabled by default in modern Swift's C++ interop support (post-Swift 5.9). Remove this flag or replace it with the correct flag name if a specific feature was intended.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Configurations/CommonBase.xcconfig` at line 124, The OTHER_SWIFT_FLAGS entry
currently includes a non-existent compiler option "-enable-experimental-feature
ImportCxxMembersLazily"; remove that flag from the OTHER_SWIFT_FLAGS assignment
(or replace it with the correct, supported flag if you intended a different
Swift C++ interop feature) so the compiler line containing OTHER_SWIFT_FLAGS no
longer references "-enable-experimental-feature ImportCxxMembersLazily".
| @@ -1,4 +1,4 @@ | |||
| //@ skip if $memoryLimited | |||
| //@ memoryHog! | |||
There was a problem hiding this comment.
Incorrect memoryHog! classification for small array.
This test allocates only a 16-element BigInt64Array (~128 bytes). The memoryHog! marker is inappropriate here—this is the "small" variant and has minimal memory footprint. Consider reverting to a simple skip directive or removing the memory-related marker entirely.
🔍 Verification: Compare with medium/large variants
#!/bin/bash
# Description: Check array sizes across the indexOf benchmark family
rg -n "let size = " JSTests/microbenchmarks/bigint64-array-index-of-*.js🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/microbenchmarks/bigint64-array-index-of-small.js` at line 1, The test
file bigint64-array-index-of-small.js incorrectly uses the heavyweight marker
"//@ memoryHog!"; remove that marker (or replace it with a simple skip directive
if the test framework requires it) so this small 16-element BigInt64Array test
is not classified as a memory hog. Locate the "//@ memoryHog!" token in
bigint64-array-index-of-small.js and delete it (or change it to the appropriate
skip/comment directive), leaving the rest of the test (the array allocation and
any "let size = 16" logic) unchanged.
| @@ -1,4 +1,4 @@ | |||
| //@skip if $memoryLimited | |||
| //@ memoryHog! | |||
There was a problem hiding this comment.
Incorrect memoryHog! classification for small array.
Despite the "big" in the filename, this test allocates only a 20-element array with 10k iterations. The memory footprint is negligible, making memoryHog! inappropriate. The "big" likely refers to loop-unrolling size rather than data size.
🔍 Verification: Check related loop-unrolling benchmarks
#!/bin/bash
# Description: Compare array sizes across loop-unrolling benchmarks
rg -n "Array\([0-9]+\)" JSTests/microbenchmarks/loop-unrolling-*.js
rg -n "memoryHog!" JSTests/microbenchmarks/loop-unrolling-*.js🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/microbenchmarks/loop-unrolling-array-clone-big.js` at line 1, Remove
the incorrect "memoryHog!" tag from the test header in
JSTests/microbenchmarks/loop-unrolling-array-clone-big.js since the test only
allocates a 20-element array across 10k iterations (negligible memory); replace
it with either no tag or a clarifying comment that "big" refers to
loop-unrolling size rather than data size so the test is not misclassified by
memory-sensitive tooling.
| shouldBe(Promise.isPromise(Promise.prototype), false); | ||
| shouldBe(Promise.isPromise(new Promise(() => {})), true); | ||
| shouldBe(Promise.isPromise(Promise.resolve()), true); | ||
| shouldBe(Promise.isPromise(Promise.reject()), true); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -nP --type=js -C2 '\bPromise\.reject\s*\(\s*\)(?!\s*\.catch\s*\()' JSTests/stress/promise-isPromise.jsRepository: oven-sh/WebKit
Length of output: 299
Attach a rejection handler to prevent unhandled-rejection warnings.
Line 20 creates a rejected promise with no .catch() handler, which can trigger unhandled rejection warnings in some test harness configurations, causing flaky test results.
Proposed fix
-shouldBe(Promise.isPromise(Promise.reject()), true);
+const rejectedPromise = Promise.reject();
+shouldBe(Promise.isPromise(rejectedPromise), true);
+rejectedPromise.catch(() => {});📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| shouldBe(Promise.isPromise(Promise.reject()), true); | |
| const rejectedPromise = Promise.reject(); | |
| shouldBe(Promise.isPromise(rejectedPromise), true); | |
| rejectedPromise.catch(() => {}); |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/stress/promise-isPromise.js` at line 20, The rejected promise created
for the assertion (Promise.reject()) has no rejection handler and can trigger
unhandled-rejection warnings; update the call used with Promise.isPromise so the
rejected promise has a no-op rejection handler (e.g., attach .catch(() => {}) or
equivalent) while preserving the assertion, referencing the Promise.isPromise
and Promise.reject usage so the test still verifies isPromise(true) but avoids
unhandled rejections.
| function shouldBe(actual, expected, message) { | ||
| if (JSON.stringify(actual) !== JSON.stringify(expected)) | ||
| throw new Error(message + ": expected " + JSON.stringify(expected) + " but got " + JSON.stringify(actual)); | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
In JavaScript, how does JSON.stringify treat undefined values in arrays versus objects, and does it preserve a distinction between undefined and null in array elements?
💡 Result:
In JavaScript, JSON.stringify treats undefined values differently in arrays versus objects. In arrays, undefined values are converted to null in the output JSON string. In objects, properties with undefined values are entirely omitted from the output. It does not preserve a distinction between undefined and null in array elements: both undefined and null become "null" in the JSON string. For example: JSON.stringify({ x: [10, undefined, function {}, Symbol("")] }); // '{"x":[10,null,null,null]}' JSON.stringify({ x: undefined, y: Object, z: Symbol("") }); // '{}' This behavior is specified in the ECMAScript standard: unrepresentable values like undefined in arrays become null, while in objects the property is excluded.
Citations:
- 1: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
- 2: https://stackoverflow.com/questions/31284216/why-does-json-stringify-ignore-keys-whose-values-are-undefined
- 3: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
- 4: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
- 5: https://mdn2.netlify.app/en-us/docs/web/javascript/reference/global_objects/json/stringify/
Strengthen shouldBe equality to avoid false-positive capture assertions
Line 9 uses JSON.stringify, which converts undefined to null in arrays. This can mask regressions in unmatched capture-group values, since regex capture groups return undefined when unmatched—if this were incorrectly changed to null, the comparison would still pass.
Proposed fix
function shouldBe(actual, expected, message) {
- if (JSON.stringify(actual) !== JSON.stringify(expected))
- throw new Error(message + ": expected " + JSON.stringify(expected) + " but got " + JSON.stringify(actual));
+ function deepEqual(a, b) {
+ if (a === b)
+ return true;
+ if (!a || !b)
+ return a === b;
+ if (!Array.isArray(a) || !Array.isArray(b))
+ return false;
+ if (a.length !== b.length)
+ return false;
+ for (var i = 0; i < a.length; i++) {
+ if ((i in a) !== (i in b))
+ return false;
+ if (!deepEqual(a[i], b[i]))
+ return false;
+ }
+ return true;
+ }
+ if (!deepEqual(actual, expected))
+ throw new Error(message + ": expected " + JSON.stringify(expected) + " but got " + JSON.stringify(actual));
}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/stress/yarr-jit-paren-context-head-uaf.js` around lines 8 - 11, The
current shouldBe function uses JSON.stringify for comparison which collapses
undefined to null in arrays and can hide mismatches of regex capture groups;
update shouldBe to perform a strict deep equality check that preserves undefined
(e.g., use Node's assert.deepStrictEqual or implement a recursive deepEqual that
uses === for primitives and compares array lengths and elements including
undefined) and throw the same Error when they differ; modify the shouldBe
function to call that deep-equality routine instead of JSON.stringify so
unmatched capture groups are not treated as equal to null.
| try { inst.exports.scalarLoad(PAGE - 3); $vm.abort(); } catch (e) {} | ||
|
|
There was a problem hiding this comment.
Narrow trap handling to avoid false-positive passes.
Line 102, Line 106, and Line 110 catch any exception; unexpected errors would still pass the test. Validate WebAssembly.RuntimeError (or rethrow unknown errors).
Proposed fix
+function expectOOBTrap(fn) {
+ try {
+ fn();
+ $vm.abort();
+ } catch (e) {
+ if (!(e instanceof WebAssembly.RuntimeError))
+ throw e;
+ }
+}
+
// i32.load: 4 bytes -> last valid addr = PAGE-4, first invalid = PAGE-3
inst.exports.scalarLoad(PAGE - 4);
-try { inst.exports.scalarLoad(PAGE - 3); $vm.abort(); } catch (e) {}
+expectOOBTrap(() => inst.exports.scalarLoad(PAGE - 3));
// v128.load: 16 bytes -> last valid addr = PAGE-16, first invalid = PAGE-15
inst.exports.simdLoad(PAGE - 16);
-try { inst.exports.simdLoad(PAGE - 15); $vm.abort(); } catch (e) {}
+expectOOBTrap(() => inst.exports.simdLoad(PAGE - 15));
// v128.load64_lane: 8 bytes -> last valid addr = PAGE-8, first invalid = PAGE-7
inst.exports.simdLane64Load(PAGE - 8);
-try { inst.exports.simdLane64Load(PAGE - 7); $vm.abort(); } catch (e) {}
+expectOOBTrap(() => inst.exports.simdLane64Load(PAGE - 7));Also applies to: 106-107, 110-110
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/wasm/stress/ipint-multimem-oob.js` around lines 102 - 103, The tests
currently catch all exceptions (e.g., in the try around
inst.exports.scalarLoad(PAGE - 3)) which can hide unexpected failures; update
each catch block (the ones guarding inst.exports.scalarLoad and similar OOB ops)
to rethrow any error that is not a WebAssembly.RuntimeError by replacing "catch
(e) { }" with "catch (e) { if (!(e instanceof WebAssembly.RuntimeError)) throw
e; }" so only expected WebAssembly runtime traps are swallowed and other errors
surface.
| // Verify the expected frame structure: captureStack -> callImport (wasm) -> wasmEntry (wasm) | ||
| let captureIdx = frames.findIndex(f => f.startsWith("captureStack@")); | ||
| assert.truthy(captureIdx >= 0, "Should find captureStack frame in: " + capturedStack); | ||
| assert.truthy(frames[captureIdx + 1].includes("wasm-function"), | ||
| "Frame after captureStack should be wasm callImport, got: " + frames[captureIdx + 1]); | ||
| assert.truthy(frames[captureIdx + 2].includes("wasm-function"), | ||
| "Frame after callImport should be wasm wasmEntry, got: " + frames[captureIdx + 2]); |
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
Add explicit frame-length guard before indexed frame checks.
The current checks can throw a generic TypeError if the stack is shorter than expected, which obscures the real regression signal.
Suggested patch
let captureIdx = frames.findIndex(f => f.startsWith("captureStack@"));
assert.truthy(captureIdx >= 0, "Should find captureStack frame in: " + capturedStack);
+ assert.truthy(captureIdx + 2 < frames.length,
+ "Stack too short to validate wasm frame ordering: " + capturedStack);
assert.truthy(frames[captureIdx + 1].includes("wasm-function"),
"Frame after captureStack should be wasm callImport, got: " + frames[captureIdx + 1]);
assert.truthy(frames[captureIdx + 2].includes("wasm-function"),
"Frame after callImport should be wasm wasmEntry, got: " + frames[captureIdx + 2]);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // Verify the expected frame structure: captureStack -> callImport (wasm) -> wasmEntry (wasm) | |
| let captureIdx = frames.findIndex(f => f.startsWith("captureStack@")); | |
| assert.truthy(captureIdx >= 0, "Should find captureStack frame in: " + capturedStack); | |
| assert.truthy(frames[captureIdx + 1].includes("wasm-function"), | |
| "Frame after captureStack should be wasm callImport, got: " + frames[captureIdx + 1]); | |
| assert.truthy(frames[captureIdx + 2].includes("wasm-function"), | |
| "Frame after callImport should be wasm wasmEntry, got: " + frames[captureIdx + 2]); | |
| // Verify the expected frame structure: captureStack -> callImport (wasm) -> wasmEntry (wasm) | |
| let captureIdx = frames.findIndex(f => f.startsWith("captureStack@")); | |
| assert.truthy(captureIdx >= 0, "Should find captureStack frame in: " + capturedStack); | |
| assert.truthy(captureIdx + 2 < frames.length, | |
| "Stack too short to validate wasm frame ordering: " + capturedStack); | |
| assert.truthy(frames[captureIdx + 1].includes("wasm-function"), | |
| "Frame after captureStack should be wasm callImport, got: " + frames[captureIdx + 1]); | |
| assert.truthy(frames[captureIdx + 2].includes("wasm-function"), | |
| "Frame after callImport should be wasm wasmEntry, got: " + frames[captureIdx + 2]); |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/wasm/stress/jspi-stack-traces.js` around lines 65 - 71, The test
assumes at least three frames after finding captureStack but may index past the
array; add an explicit length guard on frames before accessing frames[captureIdx
+ 1] and frames[captureIdx + 2] (use frames.length and captureIdx) and assert
the stack is long enough with a clear message referencing capturedStack,
captureStack, and frames; only then perform the existing checks that the
subsequent frames include "wasm-function" to avoid a generic TypeError when the
stack is shorter than expected.
| // Test atomics with shared memory (memory32) and a large offset to exercise | ||
| // the offset metadata path. | ||
| { | ||
| const offset = 256; | ||
|
|
||
| let wat = ` | ||
| (module | ||
| (memory (export "memory") 1 1 shared) |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Does WebAssembly memory64 proposal support shared memory with atomics?
💡 Result:
Yes, the WebAssembly memory64 proposal supports shared memory with atomics. The memory64 proposal extends the atomic memory instructions from the threads proposal to use 64-bit address operands when operating on a 64-bit memory. Specifically, atomic load/store, read-modify-write (e.g., i32.atomic.rmw, i64.atomic.rmw), compare-exchange, and wait/notify operations (memory.atomic.wait32/64, memory.atomic.notify) all support 64-bit indexing on memory64. Shared memory is defined in the separate threads proposal, which allows memories to be marked as shared, and memory64 builds on this by adapting the atomics for 64-bit addresses. There are no restrictions mentioned preventing shared memory64 with atomics; the instructions are compatible across both proposals.
Citations:
- 1: https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md
- 2: https://github.com/WebAssembly/memory64/blob/main/proposals/memory64/Overview.md
- 3: https://github.com/WebAssembly/spec/blob/main/proposals/memory64/Overview.md
🏁 Script executed:
fd -t f "memory64-atomics.js" --exec wc -l {} \;Repository: oven-sh/WebKit
Length of output: 103
🏁 Script executed:
cat -n JSTests/wasm/stress/memory64-atomics.js | head -80Repository: oven-sh/WebKit
Length of output: 5146
🏁 Script executed:
cat -n JSTests/wasm/stress/memory64-atomics.js | head -10Repository: oven-sh/WebKit
Length of output: 585
🏁 Script executed:
cat -n JSTests/wasm/stress/memory64-atomics.js | sed -n '42,100p'Repository: oven-sh/WebKit
Length of output: 4212
The file-level comment (lines 6-8) inaccurately describes what the test actually does.
The comment claims the test uses "memory64 (i64 addresses) with shared memory," but the atomic operations in the second block use memory32 shared (memory 1 1 shared). Since WebAssembly memory64 supports shared atomics, either:
- Update the atomic block to use memory64 shared:
(memory (export "memory") i64 1 1 shared)to match the file-level comment's intent, or - Fix the file-level comment to clarify that the file tests memory64 non-atomic operations separately from memory32 shared atomics.
The second block's line 42 comment correctly identifies "(memory32)," so updating lines 6-8 to match would resolve the confusion.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@JSTests/wasm/stress/memory64-atomics.js` around lines 42 - 49, The file-level
comment incorrectly states the test uses "memory64 (i64 addresses) with shared
memory" while the atomic block uses a memory32 shared declaration `(memory
(export "memory") 1 1 shared)`; either change that atomic block to a memory64
shared declaration `(memory (export "memory") i64 1 1 shared)` to match the top
comment, or update the file-level comment to state that the file tests memory64
non-atomic behavior separately and uses memory32 shared for the atomic block;
locate the module with `(memory (export "memory") 1 1 shared)` and adjust it or
edit the top-of-file comment accordingly.
Preview Builds
|
The previous approach ran each settled-promise reaction via direct re-entry into runInternalMicrotask, which produced O(module-count) C++ recursion through hostLoadImportedModule -> moduleLoadStep -> loadRequestedModules. With ~500 modules that blew past the recorded stack top and tripped sanitizeStackForVM. VM now exposes a SynchronousModuleTask vector pointer; while non-null, performPromiseThenWithInternalMicrotask and triggerPromiseReactions append instead of recurse. loadModuleSync allocates the vector on the C stack (so conservative scanning keeps the JSValues rooted) and drains it FIFO after kicking off loadModule. Exposed drainSynchronousModuleQueue so Bun can wrap its eager provideFetch the same way.
…oading When require(esm) reaches a dependency whose registry entry is Fetching (the surrounding async load already kicked off transpilation but the ModuleRegistryFetchSettled microtask has not run yet), the synchronous queue would stall on that entry's pending modulePromise. In hostLoadImportedModule under sync mode, if the entry is Fetching with a still-pending modulePromise: re-issue the fetch through the embedder's synchronous path and force-settle fetchPromise, or, if fetchPromise is already fulfilled, replay the makeModule + fetchComplete step inline. Guard moduleRegistryFetchSettled and PromiseFulfillWithoutHandlerJob against an already-settled target so the queued normal-microtask copy becomes a no-op once it eventually drains.
…e short-circuit The block introduced in c8ca4c7 sat after the existing-loadPromise early return, so a dependency that the surrounding async graph had already created a loadPromise for (still Pending, since its ModuleRegistryFetchSettled microtask hadn't run) was returned as-is and the synchronous queue stalled. Moving the block above that check lets it force-settle the entry's fetch/module promises before the short-circuit, which makes the cached loadPromise resolve through the sync queue.
…ers to specifier-only - loadModuleSync was returning after drainSynchronousModuleQueue without releasing/re-checking the throw scope, tripping the unchecked-exception verifier on debug ASAN. - registryEntry/removeEntry now ignore ScriptFetchParameters::Type and match every (specifier, *) bucket. Bun's old JS loader keyed the registry by specifier alone; the new (specifier, type) key collapsed Bun's HostDefined import-attribute types (text/file/sqlite/...) onto a single bucket, so delete require.cache[path] was leaving the entry in place and the next import returned the previous attribute's payload.
Merges upstream WebKit
d550dd3c808einto Bun's fork.Highlights
CyclicModuleRecord,ModuleRegistryEntry,ModuleGraphLoadingState,ModuleLoaderPayload,ModuleLoadingContext,ModuleMap.JSModuleLoaderis now aJSCell(wasJSNonFinalObject); theregistryJSMap is gone.GlobalObjectMethodTable::moduleLoaderImportModule/Fetchnow returnJSPromise*;moduleLoaderResolvegains a trailingbool useImportMap.JSTypevalues inserted beforeObjectType.Bun-fork additions in this branch
VM::m_synchronousModuleLoadingDepth+JSModuleLoader::loadModuleSync: when set, settled-promise reactions inperformPromiseThenWithInternalMicrotask/triggerPromiseReactionsrun inline instead of queueing a microtask. This preserves Bun's synchronousrequire(esm)semantics on the new pipeline.JSModuleLoader::registryEntry/removeEntry/clearAll/moduleMapaccessors so Bun can inspect/clear the C++ module map (replaces the old JSMap registry access).makeModule: handleSourceProviderSourceType::SyntheticandBunTranspiledModule; report parsed source memory cost to the heap; add an exception check aftererror.toErrorObject.CyclicModuleRecord::initializeEnvironment: ported Bun's TypeScript-import tolerance (ImportEntryType::SingleTypeScript) and Node-style error messages.loadModule/moduleLoadTopSettled: preserve the originalScriptFetchParametersacross the pipeline soHostDefinedimport-attribute types don't trip the single-argcreate(Type)assert.The full upstream JSC changelog (47 commits) is in the companion Bun PR description.