{
  "commits": {
    "320460@main": {
      "author": "Elliott Williams",
      "avatar": "https://www.gravatar.com/avatar/4086acbe078d65242df929cb51298130?d=identicon\u0026s=64",
      "cl": "320460@main",
      "clUrl": "https://commits.webkit.org/320460@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322859\nrdar://186102248\n\nReviewed by Geoffrey Garen.\n\nIn CMake builds, we compile each Swift target as a single invocation of\nthe driver. This means that ninja sees one long task for e.g.\n`WebKit.swiftmodule`, which in turn is a driver invocation that performs\nmany parallel compilations. It's useful to visualize how the work breaks\ndown to measure oversubscription and check for duplicated work such as\nmodule cache invalidations.\n\nAdd a `ninja_build_trace.py` tool to the tree, which reads ninja's log\nformat and combines it with information from an instrumented swift\ninvocation (`swiftc_job_recorder.py`). Configuring the build with\n`-DSWIFT_NINJA_TRACE=ON` will build with the instrumentation enabled,\nand a final step analyzes the data and produces a trace that can be\ndropped into Perfetto.\n\nWorkflow looks like:\n\n    cmake --preset mac-release -DSWIFT_NINJA_TRACE=ON\n    cmake --build --preset mac-release --clean-first\n    WebKitBuild/cmake-mac/Release/swift-trace-finalize.sh -o trace.json\n\nAdd a suite of unit tests for the tracing code, and add\n`Tools/Scripts/swift` to the testwebkitpy tree.\n\n* CMakeLists.txt:\n* Source/cmake/OptionsCommon.cmake:\n* Tools/Scripts/swift/__init__.py: Added.\n* Tools/Scripts/swift/ninja_build_trace.py: Added.\n(NinjaEdge):\n(NinjaEdge.dur_ms):\n(NinjaEdge.anchor_ms):\n(NinjaEdge.label):\n(parse_ninja_log):\n(NinjaRun):\n(NinjaRun.spread_ms):\n(NinjaRun.window_ms):\n(group_runs):\n(FrontendJob):\n(FrontendJob.end_us):\n(FrontendJob.label):\n(load_stats_dir):\n(_find_wall_usec):\n(RecordedJob):\n(RecordedJob.dur_us):\n(RecordedJob.label):\n(RecordedJob.builds_a_dependency):\n(DriverInvocation):\n(DriverInvocation.outputs):\n(load_jobs_log):\n(_recorded_job):\n(attribute_invocations):\n(anchor_from_invocations):\n(refine_anchor):\n(_merge_spans):\n(is_swift_edge):\n(_match_score):\n(attribute):\n(within_run):\n(partition_within_run):\n(Span):\n(Span.end_us):\n(_stats_args):\n(_output_names):\n(spans_for_edge):\n(pack_lanes):\n(TidAllocator):\n(TidAllocator.__init__):\n(TidAllocator.assign):\n(Row):\n(_edge_span):\n(build_rows):\n(process_spans):\n(emit_trace):\n(build_trace):\n(validate_trace):\n(_metadata):\n(spawning_edge_ids):\n(_load_transitions):\n(_counter_events):\n(_counter):\n(summarize):\n(main):\n(merge_runs):\n(anchor_is_plausible):\n(select_run):\n(_select_run):\n(_select_run.contained):\n(NinjaEdge.anchor_bounds_ms):\n(clean_name):\n(collapse_batches):\n(_whole_microseconds):\n* Tools/Scripts/swift/ninja_build_trace_unittest.py: Added.\n(write_stats):\n(ninja_log):\n(write_jobs_log):\n(framed):\n(make_job):\n(ScratchDirectoryTest):\n(ScratchDirectoryTest.setUp):\n(NinjaLogParsingTest):\n(NinjaLogParsingTest.test_multi_output_records_fold_into_one_edge):\n(NinjaLogParsingTest.test_header_and_malformed_lines_are_skipped):\n(NinjaLogParsingTest.test_edge_anchor_uses_freshest_output_mtime):\n(RunSplittingTest):\n(RunSplittingTest.test_runs_are_split_by_anchor_gap):\n(RunSplittingTest.test_undated_edges_are_held_back_from_every_run):\n(RunSplittingTest.test_merge_runs_rebases_each_invocation_to_its_own_wall_time):\n(StatsLoadingTest):\n(StatsLoadingTest.test_load_stats_dir_reads_start_and_duration):\n(StatsLoadingTest.test_whole_module_job_is_labelled_by_module):\n(StatsLoadingTest.test_missing_wall_timer_falls_back_to_one_microsecond):\n(StatsLoadingTest.test_non_stats_files_are_ignored):\n(ClockAlignmentTest):\n(ClockAlignmentTest.test_refine_anchor_recovers_a_shifted_anchor):\n(ClockAlignmentTest.test_refine_anchor_corrects_a_stale_restat_mtime):\n(ClockAlignmentTest.test_refine_anchor_is_a_noop_without_data):\n(ClockAlignmentTest.test_jobs_outside_the_run_window_are_separated):\n(AttributionTest):\n(AttributionTest.test_attribute_prefers_the_edge_naming_the_module):\n(AttributionTest.test_attribute_reports_jobs_with_no_containing_edge):\n(AttributionTest.test_identical_sources_in_several_targets_go_to_their_own_edges):\n(AttributionTest.test_a_containing_clang_edge_does_not_claim_a_swift_job):\n(AttributionTest.test_sibling_swift_edges_do_not_pool_two_modules):\n(AttributionTest.test_whole_module_job_matches_its_swiftmodule_edge):\n(AttributionTest.test_is_swift_edge_recognizes_swift_outputs):\n(RecordedJobsTest):\n(RecordedJobsTest.test_load_jobs_log_pairs_began_with_finished):\n(RecordedJobsTest.test_an_interrupted_recorder_keeps_its_span_and_in_flight_jobs):\n(RecordedJobsTest.test_load_jobs_log_separates_concurrent_recorders):\n(RecordedJobsTest.test_load_jobs_log_survives_a_torn_line):\n(RecordedJobsTest.test_anchor_from_invocations_ignores_a_misleading_mtime):\n(RecordedJobsTest.test_anchor_from_invocations_reports_nothing_without_a_match):\n(RecordedJobsTest.test_attribute_invocations_matches_on_resolved_output_paths):\n(RecordedJobsTest.test_recorded_and_stats_views_of_one_process_do_not_double_count):\n(RecordedJobsTest.test_the_in_process_dependency_scan_is_kept):\n(RecordedJobsTest.test_module_jobs_reach_the_trace_and_count_as_load):\n(TraceEmissionTest):\n(TraceEmissionTest.test_pack_lanes_reuses_a_lane_once_it_is_free):\n(TraceEmissionTest.test_pack_lanes_handles_fully_concurrent_spans):\n(TraceEmissionTest.test_edges_that_spawned_frontends_are_not_counted_twice):\n(TraceEmissionTest.test_counter_track_returns_to_zero):\n(TraceEmissionTest.test_rows_for_the_same_module_are_disambiguated_by_edge):\n(TraceEmissionTest.test_no_tid_doubles_as_a_pid):\n(TraceEmissionTest.test_validate_trace_catches_a_shared_track):\n(TraceEmissionTest.test_validate_trace_catches_a_pid_used_as_a_tid):\n(TraceEmissionTest.test_validate_trace_passes_a_clean_trace):\n(TraceEmissionTest.test_no_tid_is_shared_by_two_processes):\n(TraceEmissionTest.test_lanes_get_thread_names):\n(TraceEmissionTest.test_trace_shape_is_a_valid_catapult_object):\n(TraceEmissionTest.test_relative_and_absolute_timestamps_differ_by_the_anchor):\n(MainTest):\n(MainTest.test_main_writes_a_trace):\n(MainTest.test_main_errors_on_an_empty_log):\n(RecorderTest):\n(RecorderTest.test_recorder_consumes_its_own_flags):\n(RecorderTest.test_recorder_defaults_to_swiftc_on_path):\n(RecorderTest.test_recorder_reads_framed_messages_and_passes_text_through):\n(RecorderTest.test_recorder_first_output_reads_the_path):\n(NinjaLogParsingTest.test_edge_anchor_subtracts_the_start_not_the_end):\n(RunSplittingTest.test_a_restat_edge_stays_with_its_own_invocation):\n(AttributionTest.test_attribute_matches_a_source_whose_name_swift_sanitized):\n(RecordedJobsTest.test_batch_constituents_collapse_into_one_process):\n(RecordedJobsTest.test_batch_constituents_collapse_into_one_process.began):\n(RecordedJobsTest.test_a_sanitized_stats_name_still_merges_with_the_recorded_job):\n(TraceEmissionTest.test_emitted_timestamps_are_whole_microseconds):\n(RecorderTest.test_batch_key_names_the_process_a_quasi_pid_job_ran_in):\n* Tools/Scripts/swift/swiftc_job_recorder.py: Added.\n(log_line):\n(first_output):\n(read_messages):\n(parse_args):\n(main):\n(main.on_message):\n(main.on_text):\n(batch_key):\n* Tools/Scripts/webkitpy/test/main.py:\n(main):\n\nCanonical link: https://commits.webkit.org/320460@main",
      "email": "emw@apple.com",
      "hash": "c7920bb4d79695c39c594708667389641397bb60",
      "subject": "[CMake] Add swiftc+ninja tracing tool"
    },
    "320461@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320461@main",
      "clUrl": "https://commits.webkit.org/320461@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323168\nrdar://problem/186413478\n\nReviewed by Antti Koivisto.\n\n280433@main renders disclosure triangles with system-ui rather than with the font the marker inherited.\nIt gave RenderListMarker a font cascade of its own, built at paint time, and used it for painting,\nbut not for the marker box's height or its layout bounds, which stayed with the inherited font.\n\nMake the font part of the ::marker style instead, so that the glyph is measured with the font it is drawn with.\n\nTests: imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-at-rule/disclosure-line-height-ref.html\n       imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-at-rule/disclosure-line-height.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-at-rule/disclosure-line-height-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-at-rule/disclosure-line-height-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-at-rule/disclosure-line-height.html: Added.\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::RenderListItem::computeMarkerStyle const):\n* Source/WebCore/rendering/RenderListMarker.cpp:\n(WebCore::RenderListMarker::paint):\n(WebCore::RenderListMarker::computeIntrinsicLogicalWidthContributions):\n(WebCore::RenderListMarker::relativeMarkerRect):\n(WebCore::disclosureMarkerFontCascade): Deleted.\n(WebCore::RenderListMarker::paintDisclosureMarker): Deleted.\n* Source/WebCore/rendering/RenderListMarker.h:\n* LayoutTests/fast/html/details-add-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-child-2-expected.txt:\n* LayoutTests/fast/html/details-add-details-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-details-child-2-expected.txt:\n* LayoutTests/fast/html/details-add-summary-10-expected.txt:\n* LayoutTests/fast/html/details-add-summary-6-expected.txt:\n* LayoutTests/fast/html/details-add-summary-7-expected.txt:\n* LayoutTests/fast/html/details-add-summary-8-expected.txt:\n* LayoutTests/fast/html/details-add-summary-9-expected.txt:\n* LayoutTests/fast/html/details-add-summary-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-summary-child-2-expected.txt:\n* LayoutTests/fast/html/details-nested-1-expected.txt:\n* LayoutTests/fast/html/details-nested-2-expected.txt:\n* LayoutTests/fast/html/details-no-summary2-expected.txt:\n* LayoutTests/fast/html/details-open6-expected.txt:\n* LayoutTests/fast/html/details-remove-child-1-expected.txt:\n* LayoutTests/fast/html/details-remove-child-2-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-4-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-5-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-6-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-child-1-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-child-2-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-no-summary4-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open-javascript-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open2-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open4-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-replace-summary-child-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-replace-text-expected.txt:\n* LayoutTests/platform/mac/fast/css-generated-content/details-summary-before-after-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-1-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-10-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-2-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-2-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-3-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-4-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-4-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-5-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-5-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-6-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-7-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-8-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-9-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-marker-style-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-marker-style-mixed-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-no-summary1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-no-summary3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open5-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-position-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-1-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-2-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-2-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-3-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-4-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-5-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-6-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-writing-mode-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-writing-mode-mixed-expected.txt:\n\nCanonical link: https://commits.webkit.org/320461@main",
      "email": "zalan@apple.com",
      "hash": "ffffaa2b2c717ed716eb66afe6b596ace506bfb8",
      "subject": "[list-marker] Opening a \u003cdetails\u003e makes its summary one pixel shorter"
    },
    "320462@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320462@main",
      "clUrl": "https://commits.webkit.org/320462@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323294\nrdar://186544360\n\nReviewed by Jer Noble.\n\nsetActionHandler() called document() once inside the ENABLE(MEDIA_STREAM)\nguard and again in an if-init statement that shadowed the first local, with\neach document() call dereferencing m_navigator-\u003ewindow() twice. Hoist a\nsingle RefPtr document to the top of the function (outside the MEDIA_STREAM\nguard, so it is used in every build) and reuse it.\n\nNo change in behavior.\n\n* Source/WebCore/Modules/mediasession/MediaSession.cpp:\n(WebCore::MediaSession::setActionHandler):\n\nCanonical link: https://commits.webkit.org/320462@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "09cf0cb360d81842e3aea21528537db8dd891c7b",
      "subject": "MediaSession::setActionHandler() looks up the document multiple times and shadows a local"
    },
    "320463@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320463@main",
      "clUrl": "https://commits.webkit.org/320463@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323288\nrdar://186540356\n\nReviewed by Abrar Rahman Protyasha.\n\nThese five members are declared in the header but never defined or\ncalled. Remove the stale declarations. No behavior change.\n\n* Source/WebCore/loader/ResourceMonitorThrottler.h:\n\nCanonical link: https://commits.webkit.org/320463@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "d9f0af20a0d11b23f2b3a3c80c976be1751742a3",
      "subject": "Remove dead declared-but-undefined member functions from ResourceMonitorThrottler"
    },
    "320464@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "320464@main",
      "clUrl": "https://commits.webkit.org/320464@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323355\nrdar://186475042\n\nReviewed by Abrar Rahman Protyasha and Richard Robinson.\n\nOverride several mouse, hover and pointer-related media queries to behave more like Mac in the case\nwhere:\n\n- Background text extraction is enabled\n- The client requests desktop content mode\n\nInstead of `(pointer: coarse)` and `(hover: none)`, we'll instead get `(pointer: fine)` and\n`(hover: hover)`.\n\nTest: TextExtractionTests.DesktopClassHardwareEmulationInDesktopContentMode\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n* Source/WebCore/css/query/MediaQueryFeatures.cpp:\n(WebCore::MQ::Features::anyHoverFeatureSchema):\n(WebCore::MQ::Features::anyPointerFeatureSchema):\n(WebCore::MQ::Features::hoverFeatureSchema):\n(WebCore::MQ::Features::pointerFeatureSchema):\n* Source/WebKit/Shared/WebsitePoliciesData.cpp:\n(WebKit::WebsitePoliciesData::applyToSettings):\n(WebKit::WebsitePoliciesData::applyToDocumentLoader):\n* Source/WebKit/Shared/WebsitePoliciesData.h:\n* Source/WebKit/Shared/WebsitePoliciesData.serialization.in:\n* Source/WebKit/UIProcess/API/APIWebsitePolicies.h:\n* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:\n(WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n\nCanonical link: https://commits.webkit.org/320464@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "ae4e64022c2f5abe9db96726c5f066812875a375",
      "subject": "[Text Extraction] iOS: Override several mouse-related media queries when loading desktop-class content with background text extraction"
    },
    "320465@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "320465@main",
      "clUrl": "https://commits.webkit.org/320465@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323311\n\u003crdar://problem/186558544\u003e\n\nReviewed by Aakash Jain.\n\nWhen `run-api-tests` fails twice with the change, `ReRunAPITests.doOnFailure`\nqueues the revert, a rebuild and a clean-tree run, and only afterwards does\n`AnalyzeAPITestsResults` ask the results database whether those failures were\nflaky all along. `API-Tests-macOS-EWS` build 164902 spent 85 minutes on that\nladder before excusing a test the database records at a 98% pass rate.\n\nAsk at the point the ladder would be queued instead. Both runs with the change\nhave reported their `BetweenStepsDirtyTree` evidence by then, so no evidence the\nquery depends on is lost. The first run still cannot ask: `run-api-tests` has no\n`--treat-failing-as-flaky`, so it records one outcome per test, and a first-run\nverdict would empty the failure list, pass the step, and prevent the rerun that\nwrites the only evidence API can produce.\n\nCandidates are the failures both dirty runs share, taken from the same\n`_filtered` properties `AnalyzeAPITestsResults` reads and falling back the same\nway, so the two steps cannot disagree about what is excusable. When every\ncandidate has a verdict in `INCLUDED_FLAKY_VERDICTS` the build finishes green\nthrough `force_build_success` and skips the revert, the rebuild, the clean-tree\nrun and the analyze step. One unexplained failure queues the ladder unchanged.\n\nThe early exit reports those candidates itself. `parse_and_set_failures` reports\nonly the symmetric difference of the two runs, and the intersection was reported\nby `AnalyzeAPITestsResults`, which never runs on this path, so without a report\nhere the results-database rows for exactly the tests being excused would be\nlost. The two reports remain disjoint, so nothing is written twice.\n\n`flaky_new_failures_using_results_db` and `INCLUDED_FLAKY_VERDICTS` move to\n`ResultsDBReportMixin`, which both callers now share.\n\n* Tools/CISupport/ews-build/steps.py:\n(ResultsDBReportMixin):\n(ResultsDBReportMixin.flaky_new_failures_using_results_db):\n(RunAPITests.__init__):\n(RunAPITests.run):\n(ReRunAPITests.failures_in_both_dirty_runs):\n(ReRunAPITests):\n(ReRunAPITests.doOnFailure):\n(AnalyzeAPITestsResults):\n(AnalyzeAPITestsResults.run):\n(AnalyzeAPITestsResults.flaky_new_failures_using_results_db): Deleted.\n* Tools/CISupport/ews-build/steps_unittest.py:\n\nCanonical link: https://commits.webkit.org/320465@main",
      "email": "issacroy05@gmail.com",
      "hash": "9e098ca11b8f8de1ffc6bcd45ea2aabae15d7912",
      "subject": "[EWS] API EWS runs the whole retry ladder for an already-known flaky failure"
    },
    "320466@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320466@main",
      "clUrl": "https://commits.webkit.org/320466@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323335\nrdar://186579669\n\nReviewed by Chris Fleizach.\n\nEach of these asserts that stepping forward to a unit's end and back to its start\nreturns to where it started, from any position inside the unit. The existing tests\nwalk one direction and dump what they see, so a drift moving both directions equally\nreads as correct. Each covers a hard line break and a soft wrap, since a line break of\neither kind is what most often moves a boundary.\n\nline-boundary-round-trip.html:\nAXNextLineEndTextMarkerForTextMarker and AXPreviousLineStartTextMarkerForTextMarker\neach had tests, but nothing asserted they round-trip. Covers lines broken by a br element\nand lines broken only by wrapping.\n\nword-boundary-round-trip.html:\nSame round trip testing for word APIs.\n\nsentence-boundary-round-trip.html:\nSame round trip testing for sentence APIs.\n\n* LayoutTests/accessibility/isolated-tree/mac/line-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/line-boundary-round-trip.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/sentence-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/sentence-boundary-round-trip.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/word-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/word-boundary-round-trip.html: Added.\n* LayoutTests/accessibility/mac/line-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/mac/line-boundary-round-trip.html: Added.\n* LayoutTests/accessibility/mac/sentence-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/mac/sentence-boundary-round-trip.html: Added.\n* LayoutTests/accessibility/mac/word-boundary-round-trip-expected.txt: Added.\n* LayoutTests/accessibility/mac/word-boundary-round-trip.html: Added.\n\nCanonical link: https://commits.webkit.org/320466@main",
      "email": "tyler_w@apple.com",
      "hash": "7d9b535a65731303029650179df74902e0828281",
      "subject": "AX: Add layout tests for line / sentence / word text marker boundary round trips"
    },
    "320467@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320467@main",
      "clUrl": "https://commits.webkit.org/320467@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323343\nrdar://186583544\n\nReviewed by Chris Fleizach.\n\nscroll-view-contents.html:\nAXContents had zero tests prior to this one.\n\ntab-list-tabs.html:\nAXTabs had zero tests prior to this one.\n\ndesign-mode-editable-ancestor.html:\nAXEditableAncestor and AXHighestEditableAncestor had two tests each, so unlike the two\nabove the attribute is not new here -- the branch is. editableAncestor() matches an\nancestor that is either a text control or an editable web area, and document.designMode\nis the only way to reach the second without contenteditable. No existing test does this.\n\n* LayoutTests/accessibility/isolated-tree/mac/design-mode-editable-ancestor-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/design-mode-editable-ancestor.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/scroll-view-contents-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/scroll-view-contents.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/tab-list-tabs-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/tab-list-tabs.html: Added.\n* LayoutTests/accessibility/mac/design-mode-editable-ancestor-expected.txt: Added.\n* LayoutTests/accessibility/mac/design-mode-editable-ancestor.html: Added.\n* LayoutTests/accessibility/mac/scroll-view-contents-expected.txt: Added.\n* LayoutTests/accessibility/mac/scroll-view-contents.html: Added.\n* LayoutTests/accessibility/mac/tab-list-tabs-expected.txt: Added.\n* LayoutTests/accessibility/mac/tab-list-tabs.html: Added.\n\nCanonical link: https://commits.webkit.org/320467@main",
      "email": "tyler_w@apple.com",
      "hash": "4b594da11bb25377198f0a4a47617f8cf7085d90",
      "subject": "AX: Add layout tests for accessibility attributes that had none (AXContents, AXTabs), and new coverage for editable design-mode web areas"
    },
    "320468@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320468@main",
      "clUrl": "https://commits.webkit.org/320468@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323356\nrdar://186598685\n\nReviewed by Chris Fleizach.\n\nrequired-control-invalid-status.html:\nNo test called checkValidity(). Asserts AXInvalid and checkValidity() agree on the same\ncontrol, and that aria-invalid wins over the native state (a branch that was untested).\n\ncustom-validity-invalid-status.html:\nNo test called setCustomValidity() and verified AXInvalid changed to match.\n\nfieldset-disabled-propagation.html:\nNo test both used a disabled fieldset and asserted the enabled state it propagates.\nCovers HTML's first-legend exemption, the rule most likely to be lost in a refactor.\n\n* LayoutTests/accessibility/isolated-tree/mac/custom-validity-invalid-status-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/custom-validity-invalid-status.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/fieldset-disabled-propagation-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/fieldset-disabled-propagation.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/required-control-invalid-status-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/required-control-invalid-status.html: Added.\n* LayoutTests/accessibility/mac/custom-validity-invalid-status-expected.txt: Added.\n* LayoutTests/accessibility/mac/custom-validity-invalid-status.html: Added.\n* LayoutTests/accessibility/mac/fieldset-disabled-propagation-expected.txt: Added.\n* LayoutTests/accessibility/mac/fieldset-disabled-propagation.html: Added.\n* LayoutTests/accessibility/mac/required-control-invalid-status-expected.txt: Added.\n* LayoutTests/accessibility/mac/required-control-invalid-status.html: Added.\n\nCanonical link: https://commits.webkit.org/320468@main",
      "email": "tyler_w@apple.com",
      "hash": "0491e835aaeb89231f2ee5bd0ea3396e5c9535f7",
      "subject": "AX: Add layout tests for form control state reaching accessibility"
    },
    "320469@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "320469@main",
      "clUrl": "https://commits.webkit.org/320469@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323344\n\u003crdar://problem/186585819\u003e\n\nReviewed by Sam Sneddon.\n\n`/documentation` describes every results-database endpoint except the three EWS\nones. `/upload/ews`, `/results-ews` and `/results-ews/tests` have no entry, so\nthe only way to learn that its `results` is a flat map rather than a trie, that\n`flaky_type` decides which table an upload lands in, or that a query with no\nmatches answers 404 rather than an empty list is to read `ews_controller.py`.\n\nDocument the three, including the behaviours a caller cannot guess from the\nshape of a response: `limit` is applied per test rather than shared across the\nbatch, so a 50-test request can return 50 times the limit; `MAX_TESTS_PER_QUERY`\ncaps a request at 100 names, but the names travel in the query string, so long\ntest paths overflow the request line well before that cap; a `timestamp` may\nbackfill an older result but not one more than five minutes ahead; and\n`/results-ews/tests` defaults to 100 names, which makes a default-length answer\na sample rather than the whole catalog.\n\n* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:\n\nCanonical link: https://commits.webkit.org/320469@main",
      "email": "issacroy05@gmail.com",
      "hash": "b6fb7aad68ce9f58d7c1c3a9f345ea7cb9ea0015",
      "subject": "[resultsdbpy] The EWS upload and query endpoints are missing from /documentation"
    },
    "320470@main": {
      "author": "Mike Wyrzykowski",
      "avatar": "https://www.gravatar.com/avatar/4b1bc9e238714f95e22d5d2454c07066?d=identicon\u0026s=64",
      "cl": "320470@main",
      "clUrl": "https://commits.webkit.org/320470@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323379\nrdar://186614058\n\nReviewed by Alex Christensen.\n\nThis has been mispelled for ~5 years so it got missed when\nDestinationColorSpace was renamed to ColorSpace.\n\n* Source/WebCore/platform/graphics/cg/IOSurfacePool.h:\n\nCanonical link: https://commits.webkit.org/320470@main",
      "email": "mwyrzykowski@apple.com",
      "hash": "0927bf2fe3887f4103703b82f2f7d3cbc30c7260",
      "subject": "fix typo in IOSurfacePool.h"
    },
    "320471@main": {
      "author": "Anthony Tarbinian",
      "avatar": "https://www.gravatar.com/avatar/e2fb942081a29714985c48f402fa1788?d=identicon\u0026s=64",
      "cl": "320471@main",
      "clUrl": "https://commits.webkit.org/320471@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321029\nrdar://184063194\n\nReviewed by Sihui Liu.\n\nWith site isolation enabled, there is a race where two concurrent navigations to\nthe same site can create two different web processes. It is expected that\nnavigations to the same site should be in the same process.\n\nBoth navigations reach WebProcessPool::processForNavigation and notice that\nBrowsingContextGroup::m_processMap doesn't have an existing process entry for\ntheir site. So, they both create a new web process for themselves, creating two\nprocesses for the same site.\n\nThe entry isn't added until ProvisionalPageProxy::initializeWebPage runs, and\nfor a main frame navigation that is on the far side of the\naddAllowedFirstPartyForCookies IPC in prepareProcessForNavigation. Any\nnavigation that reaches prepareProcessForNavigation during that gap\nsees an empty process map for the same site.\n\nIn this patch, I reserve a process before that hop, in\nprepareProcessForNavigation. This also keeps the reservation up to date\nsince prepareProcessForNavigation is called multiple times to retry\nprocess selection if the chosen process dies during the\n`addAllowedFirstPartyForCookies` IPC.\nTo perform the reservation I call BrowsingContextGroup::ensureProcessForSite there,\nthen register the site and inject page context for the group's other pages,\nexactly as initializeWebPage does.\n\nm_processMap only holds the FrameProcess weakly, so something has to keep it\nalive in the meantime. I capture a strong reference in the completion handler\nused for the retry attempts, so the reservation lasts exactly until that\nhandler has run. By then continueNavigationInNewProcess has created the\nProvisionalPageProxy that owns the FrameProcess, or the navigation was abandoned\nand nobody needs it. I don't store it in API::Navigation, because a navigation\noutlives the frames using its process. That was the leak 319916@main fixed by\ndeleting the equivalent reference for the shared process.\n\nThis patch only handles main frame navigations. Subframe navigations return\nfrom processForNavigation synchronously and create the ProvisionalFrameProxy\nthat registers the site in the same task, so two of them can never both find\nthe site unregistered.\n\nTests: http/tests/site-isolation/concurrent-same-site-navigations-use-same-process.html\n       TestWebKitAPI.SiteIsolation.ConcurrentPopupNavigationsToSameSiteShareProcessWhenOneFails\n\n* LayoutTests/http/tests/site-isolation/concurrent-same-site-navigations-use-same-process-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/concurrent-same-site-navigations-use-same-process.html: Added.\n* Source/WebKit/UIProcess/WebProcessPool.cpp:\n(WebKit::WebProcessPool::processForNavigation):\n(WebKit::WebProcessPool::prepareProcessForNavigation):\n* Source/WebKit/UIProcess/WebProcessPool.h:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:\n(TestWebKitAPI::TEST(SiteIsolation, ConcurrentPopupNavigationsToSameSiteShareProcessWhenOneFails)):\n\nCanonical link: https://commits.webkit.org/320471@main",
      "email": "atar137h@gmail.com",
      "hash": "7b5f5df9aba3f2e84f450068496c3ec50fd89d23",
      "subject": "[Site Isolation] Concurrent navigations to the same site should share the same process"
    },
    "320472@main": {
      "author": "Harrison Weinerman",
      "avatar": "https://www.gravatar.com/avatar/aa5de22bf3c20e0ca33ed5d223946f4b?d=identicon\u0026s=64",
      "cl": "320472@main",
      "clUrl": "https://commits.webkit.org/320472@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323353\nrdar://186229850\n\nReviewed by Abrar Rahman Protyasha.\n\nClients may need a notification when an Apple Pay transaction completes, which does not currently exist.\n\n* Source/WebKit/UIProcess/API/APIUIClient.h:\n(API::UIClient::didCompleteApplePayPayment):\n* Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:\n* Source/WebKit/UIProcess/Cocoa/UIDelegate.h:\n* Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:\n(WebKit::UIDelegate::setDelegate):\n(WebKit::UIDelegate::UIClient::didCompleteApplePayPayment):\n* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:\n(WebKit::WebPageProxy::didCompleteApplePayPayment):\n* Source/WebKit/UIProcess/WebPageProxy.h:\n* Source/WebKit/UIProcess/WebPageProxy.messages.in:\n* Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp:\n(WebKit::WebPaymentCoordinator::completePaymentSession):\n\nCanonical link: https://commits.webkit.org/320472@main",
      "email": "hmw@apple.com",
      "hash": "c0646476dd4967d5dd33b22586b0d0842c0ec388",
      "subject": "Add callback for completed Apple Pay transactions"
    },
    "320473@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320473@main",
      "clUrl": "https://commits.webkit.org/320473@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=272318\nrdar://130595406\n\nReviewed by Matt Woodrow.\n\nREGRESSION (249828@main, 254746@main).\n\nWhen a layer has negative z-order children and isn't yet composited, we push a speculative\ncompositing container onto the overlap map (254746@main, bug 244543), which keeps those children\nfrom polluting the overlap map and causing unnecessary compositing of later siblings. However,\noverlapsLayers() then returned false unconditionally while the speculative stack was live, which\nprevents negative z-index children from detecting genuine overlap with layers that were already\ncomposited earlier in paint order.\n\nThis means a negative z-index child inside a z-index: 1 stacking context that geometrically\noverlaps a composited layer (z-index: auto/0) outside the stacking context never gets\ncomposited for overlap, so it paints into the root backing store behind the composited\nlayer's GraphicsLayer - wrong stacking order.\n\nThe fix is to test against m_overlapStack.last() instead of returning false. While a speculative\ncontainer is live, m_overlapStack.last() holds exactly the overlap state as of the speculative\npush: add() only ever writes to m_overlapStack[size - 2], and no container can be pushed or popped\nwithout first confirming or discarding the speculative stack. Negative z-order children therefore\nsee the bounds of already-composited layers, but nothing contributed by the speculative traversal\nitself, so they still don't force each other to composite and the fix for bug 244543 is preserved.\nno-compositing-for-overlapping-negative-z-siblings.html covers that half of the behavior, which a\nreference test cannot: two overlapping negative z-order children inside a composited (non-root)\nancestor, overlapping nothing composited, must not create any layers.\n\nNote the composited box in the reference tests is offset horizontally from the stacking context:\nthe stacking contexts in these tests have no in-flow content, so their overlap rect is an empty\nrect inflated to 1x1 at their origin, and a composited box covering that point would promote the\nstacking context itself for overlap before its negative z-order children are visited, making the\ntests pass with or without this change.\n\n* Source/WebCore/rendering/LayerOverlapMap.cpp:\n(WebCore::LayerOverlapMap::overlapsLayers const):\n* LayoutTests/compositing/layer-creation/no-compositing-for-overlapping-negative-z-siblings-expected.txt: Added.\n* LayoutTests/compositing/layer-creation/no-compositing-for-overlapping-negative-z-siblings.html: Added.\n* LayoutTests/compositing/z-order/multiple-negative-z-in-stacking-context-above-composited-expected.html: Added.\n* LayoutTests/compositing/z-order/multiple-negative-z-in-stacking-context-above-composited.html: Added.\n* LayoutTests/compositing/z-order/negative-z-in-stacking-context-above-composited-expected.html: Added.\n* LayoutTests/compositing/z-order/negative-z-in-stacking-context-above-composited.html: Added.\n* LayoutTests/compositing/z-order/negative-z-overlap-and-non-overlap-with-composited-expected.html: Added.\n* LayoutTests/compositing/z-order/negative-z-overlap-and-non-overlap-with-composited.html: Added.\n\nCanonical link: https://commits.webkit.org/320473@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "1f4a1bf5458ebec31d9a3fb2f67504f9c4d92513",
      "subject": "Negative z-index layer inside stacking context fails to composite when overlapping external composited layer"
    },
    "320474@main": {
      "author": "Alex Christensen",
      "avatar": "https://www.gravatar.com/avatar/b087c5dfcb1233e80cad9105fd5a1ac6?d=identicon\u0026s=64",
      "cl": "320474@main",
      "clUrl": "https://commits.webkit.org/320474@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323053\nrdar://182493844\n\nReviewed by Chris Dumez.\n\n_WKUserStyleSheet can be used to load a font very early in the document creation process.\nIt was loading before the firstPartyForCookies was set, then later the firstPartyForCookies\nwas being updated, which caused inconsistent state in the memory cache which hit the\nrelease assertion.\n\nThis adds a missing call to updateFirstPartyForCookies to update earlier if necessary.\nThe test also hit the debug assertion in FrameLoader::applyUserAgentIfNeeded because\nthe user agent was null.  I move the user agent setting to earlier in the WebPage constructor\nto avoid calling initWithCoreMainFrame with a null user agent, which caused the debug assert.\n\nI added a layout test that hits the MemoryCache issue, but it doesn't hit the user agent\nissue, so I also added an API test that does.\n\nTests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MemoryCachePartitioning.mm\n       Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SecurityFlags.mm\n       http/tests/cache/memory-cache-partition-drift.html\n\n* Source/WebCore/loader/FrameLoader.h:\n* Source/WebCore/page/LocalFrame.cpp:\n(WebCore::LocalFrame::setDocument):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::WebPage):\n(WebKit::m_allowsImmersiveEnvironments):\n* Tools/TestWebKitAPI/SourcesCocoa.txt:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/MemoryCachePartitioning.mm: Added.\n(TestWebKitAPI::TEST(MemoryCache, FontFromUserStyleSheetKeepsCachePartition)):\n* LayoutTests/http/tests/cache/memory-cache-partition-drift-expected.txt: Added.\n* LayoutTests/http/tests/cache/memory-cache-partition-drift.html: Added.\n* LayoutTests/http/tests/cache/resources/memory-cache-partition-drift-frame.html: Added.\n* LayoutTests/http/tests/cache/resources/no-store-font.py: Added.\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/WebKitTestRunner/TestController.cpp:\n(WTR::TestController::resetPreferencesToConsistentValues):\n* Tools/WebKitTestRunner/TestOptions.cpp:\n(WTR::TestOptions::defaults):\n(WTR::TestOptions::keyTypeMapping):\n* Tools/WebKitTestRunner/TestOptions.h:\n(WTR::TestOptions::blockThirdPartyStorage const):\n\nCanonical link: https://commits.webkit.org/320474@main",
      "email": "achristensen@apple.com",
      "hash": "0d58b764f34b86ecf520ac7954b7aa1ded15cc5e",
      "subject": "Fix crash in MemoryCache::add after 315967@main"
    },
    "320475@main": {
      "author": "Yusuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/3455d9081295e3e740c1ffa901217d9b?d=identicon\u0026s=64",
      "cl": "320475@main",
      "clUrl": "https://commits.webkit.org/320475@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323368\nrdar://186606262\n\nReviewed by Marcus Plutowski.\n\nThis patch adds \"dc zva\" zero-fill code for sanitizeStackForVM.\nClearing stack can be dramatically large, and \"dc zva\" loop can be\nfaster to zero-fill these region. Currently we only allow it when\ndczid_el0 is configured to be 4 in OS.\nAlso, for smaller size, stp is faster than stnp, so now \"dc zva\" handles\nlarge region and stp will fill the gap.\n\nWe may apply the same to zero-filling locals at the top of interpreter,\nand potentially using it in JIT as well as a subsequent change.\n\n* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:\n\nCanonical link: https://commits.webkit.org/320475@main",
      "email": "ysuzuki@apple.com",
      "hash": "a0042af348458a9d9de2ec3f1636424c20163818",
      "subject": "[JSC] Add \"dc zva\" zero-fill loop for sanitizeStackForVM"
    },
    "320476@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320476@main",
      "clUrl": "https://commits.webkit.org/320476@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323292\nrdar://186543781\n\nReviewed by Chris Dumez.\n\nThe reportingObservers local was computed and immediately discarded via\nUNUSED_VARIABLE, serving no purpose. Remove it.\n\n* Source/WebCore/Modules/reporting/ReportingScope.cpp:\n(WebCore::ReportingScope::notifyReportObservers):\n\nCanonical link: https://commits.webkit.org/320476@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f492fdc1e11419bcc5693266ceed6f518d9fef0c",
      "subject": "Remove dead reportingObservers local in ReportingScope::notifyReportObservers()"
    },
    "320477@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320477@main",
      "clUrl": "https://commits.webkit.org/320477@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323306\nrdar://186553836\n\nReviewed by Chris Dumez.\n\nWhile mapping m_itemPromises (a Vector\u003cKeyValuePair\u003cString, Ref\u003cDOMPromise\u003e\u003e\u003e)\nto item type loaders, collectDataForWriting() made a redundant copy of each\nentry's key and value. The String key was copied into a local even though it\nis only passed to ClipboardItemTypeLoader::create(), which takes a const\nString\u0026, before being captured by copy into the whenSettledWithResult()\ncallback; the inner capture is the only copy actually required. The\nRef\u003cDOMPromise\u003e value was copied into a local (an atomic refcount bump) even\nthough it is only used once to invoke promise-\u003ewhenSettledWithResult() and is\nnever captured.\n\nBind both by reference instead, dropping one String copy and one\nRef\u003cDOMPromise\u003e refcount round-trip per clipboard item written.\n\n* Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:\n(WebCore::ClipboardItemBindingsDataSource::collectDataForWriting):\n\nCanonical link: https://commits.webkit.org/320477@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "635ad039f2d9ff604dbce90e1ef72e293ab4f182",
      "subject": "Avoid per-item String and Ref\u003cDOMPromise\u003e copies in ClipboardItemBindingsDataSource::collectDataForWriting()"
    },
    "320478@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320478@main",
      "clUrl": "https://commits.webkit.org/320478@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=281540\nrdar://138005652\n\nReviewed by Chris Dumez.\n\nThis adds an early return when the element is not focusable in\n'SVGAElement::isKeyboardFocusable', matching 'HTMLAnchorElement::isKeyboardFocusable',\nand then removes the now-redundant 'isFocusable()' from the following condition in\nboth functions, since it is already guaranteed by the early return above it.\n\nThis is not a change in behavior. 'Element::isKeyboardFocusable', which both of these\noverride and call through to, already returns false when 'isFocusable()' is false, and\nthe two intermediate early returns ('!frame' and 'isLink() \u0026\u0026 !tabsToLinks()') return\nfalse as well, so every path already returned false for a non-focusable element. The\nearly return just avoids the frame lookup and the 'tabsToLinks()' query, neither of\nwhich has an observable side effect. No new tests, since no behavior change is\nobservable from content.\n\n* Source/WebCore/html/HTMLAnchorElement.cpp:\n(WebCore::HTMLAnchorElement::isKeyboardFocusable const):\n* Source/WebCore/svg/SVGAElement.cpp:\n(WebCore::SVGAElement::isKeyboardFocusable const):\n\nCanonical link: https://commits.webkit.org/320478@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "7c509707e29d40a0e194ac5fe89f796da4f05e7a",
      "subject": "Add early-return to `SVGAElement::isKeyboardFocusable` and drop redundant `isFocusable()` checks"
    },
    "320479@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320479@main",
      "clUrl": "https://commits.webkit.org/320479@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323395\nrdar://186627178\n\nReviewed by Chris Dumez.\n\nDOMAudioSession::type() tested the document twice, once implicitly and once\nexplicitly, both returning Type::Auto. Collapse them into the single guard\nthat state() already uses correctly. No change in behavior, so no new tests.\n\n* Source/WebCore/Modules/audiosession/DOMAudioSession.cpp:\n(WebCore::DOMAudioSession::type const):\n\nCanonical link: https://commits.webkit.org/320479@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "fcfb4293170de8c5de572164a5ab42b0a48a8780",
      "subject": "DOMAudioSession::type() redundantly tests the document twice against the same fallback"
    },
    "320480@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320480@main",
      "clUrl": "https://commits.webkit.org/320480@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323363\nrdar://186603909\n\nReviewed by Chris Dumez.\n\nClipboardItemBindingsDataSource::ClipboardItemTypeLoader::m_data is a\nVariant\u003cString, Ref\u003cSharedBuffer\u003e\u003e, but it was hand-decoded with\nstd::holds_alternative + std::get pairs in three places. Besides being\nverbose, the form in invokeCompletionHandler() only rejected an\nunexpected alternative via a catch-all else, so an added variant\nalternative could silently fall through elsewhere.\n\nReplace the manual decoding with WTF::switchOn, which is exhaustive over\nthe variant's alternatives and lets the compiler enforce that every\nalternative is handled. No change in behavior: invokeCompletionHandler()\nstill rejects on a null String, and both dataAsString() and the image/png\nsanitization path resolve to the same values as before.\n\n* Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:\n(WebCore::ClipboardItemBindingsDataSource::invokeCompletionHandler):\n(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::dataAsString const):\n(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):\n\nCanonical link: https://commits.webkit.org/320480@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "dc774f0cde658499d412683a1f9e69e061b0ff97",
      "subject": "Use WTF::switchOn for the BufferOrString variant in ClipboardItemBindingsDataSource"
    },
    "320481@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320481@main",
      "clUrl": "https://commits.webkit.org/320481@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323394\nrdar://186626780\n\nReviewed by Chris Dumez.\n\nClipboard::getType() handled the \"image/png\" and \"image/svg+xml\" content\ntypes with two byte-identical blocks: each constructed a\nClipboardImageReader, read the active pasteboard, took the resulting blob,\nrevalidated the session via updateSessionValidity(), and resolved or\nrejected the promise. Collapse them into a single branch guarded by both\ntype checks. No behavior change.\n\n* Source/WebCore/Modules/async-clipboard/Clipboard.cpp:\n(WebCore::Clipboard::getType):\n\nCanonical link: https://commits.webkit.org/320481@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f2edbf67293a4f7ab9551a9012b169508e862a75",
      "subject": "Deduplicate identical image/png and image/svg+xml read branches in Clipboard::getType"
    },
    "320482@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320482@main",
      "clUrl": "https://commits.webkit.org/320482@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323299\nrdar://186547640\n\nReviewed by Chris Dumez.\n\nThe three code paths handling an icon's \"purpose\" member each duplicated\nthe `currentIcon.purposes = purposes;` assignment, nested two levels deep.\nHoist that assignment to a single statement after the branches and flatten\nthe else-if chain. No behavior change: a missing or non-string \"purpose\"\nstill defaults to Any, valid keywords are still collected, and an icon whose\n\"purpose\" contains no valid keywords is still dropped.\n\n* Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:\n(WebCore::ApplicationManifestParser::parseIcons):\n\nCanonical link: https://commits.webkit.org/320482@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "f8e5626fddd9625271f3eb084950be6ba42b74b1",
      "subject": "Simplify icon \"purpose\" parsing in ApplicationManifestParser"
    },
    "320483@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "320483@main",
      "clUrl": "https://commits.webkit.org/320483@main",
      "description": "rdar://186388202\nhttps://bugs.webkit.org/show_bug.cgi?id=323125\n\nReviewed by Alex Christensen.\n\nCachedCSSStyleSheet::sheetText signals error by setting the passed in\nboolean pointers, if they're set. This is inelegant, and particularly\nthere's a bug where the booleans only get set when an error occur.\n\nTake this opportunity to refactor CachedCSSStyleSheet::sheetText to\nreturn std::expected. If an error occurs, then it returns an Error\nenum, otherwise it returns the CSS text.\n\nRefactoring, tested by existing test suite.\n\n* Source/WebCore/css/StyleSheetContents.cpp:\n(WebCore::StyleSheetContents::parseAuthorStyleSheet):\n* Source/WebCore/dom/ProcessingInstruction.cpp:\n(WebCore::ProcessingInstruction::setCSSStyleSheet):\n* Source/WebCore/inspector/InspectorResourceUtilities.cpp:\n(Inspector::ResourceUtilities::cachedResourceContent):\n* Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp:\n(WebCore::CachedCSSStyleSheet::sheetText const):\n(WebCore::CachedCSSStyleSheet::canUseSheet const):\n* Source/WebCore/loader/cache/CachedCSSStyleSheet.h:\n\nCanonical link: https://commits.webkit.org/320483@main",
      "email": "kiet.ho@apple.com",
      "hash": "b7794d481cec9bcf56e76492f68d4d44e0686cfd",
      "subject": "Refactor CachedCSSStyleSheet::sheetText to return std::expected"
    },
    "320484@main": {
      "author": "Jessica Lee",
      "avatar": "https://www.gravatar.com/avatar/fc717c99321d09f31fb9187418a8ffc5?d=identicon\u0026s=64",
      "cl": "320484@main",
      "clUrl": "https://commits.webkit.org/320484@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322870\nrdar://186116994\n\nReviewed by Alex Christensen.\n\nCurrently, m_topLoadingFrame is tracked per-process in the InjectedBundle which means it is\nshared by all the WKBundlePages of InjectedBundle. Because it's per process, it can end\nup tracking the wrong load of the various pages. In webtiming-cross-origin-and-back1.html's case,\nit was an abandoned provisional load from a redirect. For tests with pop-ups, the pop-up can overwrite\nthe opener's m_topLoadingFrame. WebKit relies on m_topLoadingFrame to match the load's\nframe to properly notify the test runner. If the loading frame does not match m_topLoadingFrame,\nthe test runner is never notified and the test times out.\n\nThe fix is to have each page track its own m_topLoadingFrame so that provisional loads for\npages in the shared process don't overwrite the primary page's (ie InjectedBundle::page())\nm_topLoadingFrame. We additionally check that the page being loaded is the primary page. If not,\nwe don't notify the test runner and exit early.\n\nhttp/tests/misc/webtiming-cross-origin-and-back1.html is the relevant test.\n\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:\n(WTR::InjectedBundle::didReceiveMessageToPage):\n(WTR::InjectedBundle::done):\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:\n(WTR::InjectedBundle::topLoadingFrame): Deleted.\n(WTR::InjectedBundle::setTopLoadingFrame): Deleted.\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:\n(WTR::InjectedBundlePage::resetAfterTest):\n(WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):\n(WTR::InjectedBundlePage::frameDidChangeLocation):\n(WTR::InjectedBundlePage::notifyDone):\n* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:\n(WTR::InjectedBundlePage::topLoadingFrame):\n(WTR::InjectedBundlePage::setTopLoadingFrame):\n\nCanonical link: https://commits.webkit.org/320484@main",
      "email": "jlee53@apple.com",
      "hash": "edd9fe9dbe988d809ee9819e78bc0f4c1668f0d2",
      "subject": "[Site Isolation] http/tests/misc/webtiming-cross-origin-and-back1.html is a timeout"
    },
    "320485@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "320485@main",
      "clUrl": "https://commits.webkit.org/320485@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323400\n\nUnreviewed gardening.\n\n* LayoutTests/platform/wpe/TestExpectations:\n\nCanonical link: https://commits.webkit.org/320485@main",
      "email": "csaavedra@igalia.com",
      "hash": "e6874d76293912ded70cac7adceb2877bb9122d1",
      "subject": "[WPE] Gardening of WPE arm64 flakies"
    },
    "320486@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320486@main",
      "clUrl": "https://commits.webkit.org/320486@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323366\nrdar://186604627\n\nReviewed by Rupin Mittal.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/a1e944e7a879854494e1a041a8ad1e4a8ae28ab1\n\n* LayoutTests/imported/w3c/web-platform-tests/cookies/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/httponly-overwrite.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/httponly-overwrite.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/httponly-overwrite.https.window.js: Added.\n(async setCookieViaHTTP.const.set encodeURIComponent):\n(async getCookieHeader):\n(async isHttpOnly):\n(cookieTest):\n(async cookieTest):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/resources/path/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/resources/pathfakeout/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/attributes/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/domain/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/domain/support/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/domain/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/encoding/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/name/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/name/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/ordering/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/ordering/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/origin-bound-cookies/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/origin-bound-cookies/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/partitioned-cookies-a-b-a-embed.tentative.https-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/partitioned-cookies-a-b-a-embed.tentative.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/resources/ancestor-chain-cross-site-embed.html:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/resources/ancestor-chain-same-site-embed.html:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/partitioned-cookies/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-percent-encoded.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-percent-encoded.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-percent-encoded.https.window.js: Added.\n(cookieValue):\n(probeAtPath):\n(set assert_true):\n(async setCookieViaHTTP):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-segment-boundaries.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-segment-boundaries.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/match-segment-boundaries.https.window.js: Added.\n(async setCookieViaHTTP.const.set encodeURIComponent):\n(async cookieHeaderAtTarget):\n(cookieValue):\n(pathTest):\n(async setCookieViaHTTP.set assert_true):\n(async setCookieViaHTTP):\n(async pathTest):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/non-ascii-path-attribute.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/non-ascii-path-attribute.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/non-ascii-path-attribute.https.window.js: Added.\n(async cookieValueAtTarget):\n(async cookieValueAtDefaultPath):\n(cookieTest):\n(async cookieTest):\n(set assert_true):\n(async setCookieViaHTTP):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/resources/echo.py: Added.\n(main):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/resources/probe/sw.js: Added.\n(event.url.pathname.endsWith):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/resources/probe/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/cookies/encoding/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/cookies/encoding/w3c-import.log.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/path/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/prefix/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/prefix/__host.explicit-path.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/prefix/__host.explicit-path.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/prefix/__host.explicit-path.https.window.js: Added.\n(loadRootDocument):\n(rootDocumentTest):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/prefix/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/samesite-none-secure/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/samesite/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/samesite/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/samesite/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/schemeful-same-site/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/schemeful-same-site/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/schemeful-same-site/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/secure/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/secure/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/size/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/size/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/third-party-cookies/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/third-party-cookies/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/third-party-cookies/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/value/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/value/value-overwrite.https.window-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/value/value-overwrite.https.window.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/cookies/value/value-overwrite.https.window.js: Added.\n(async setCookiesViaHTTP.const.set encodeURIComponent):\n(async getCookiesViaHTTP):\n(cookieValue):\n(overwriteTest):\n(async setCookiesViaHTTP.set assert_true):\n(async setCookiesViaHTTP):\n(async const):\n(const.attributes.of.attributeSets.filter.a.a.includes):\n* LayoutTests/imported/w3c/web-platform-tests/cookies/value/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/cookies/w3c-import.log:\n* LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookies/path/match-percent-encoded.https.window-expected.txt: Added.\n\nCanonical link: https://commits.webkit.org/320486@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "7f4b74c9b84081d0a733e471f506d2480c43b89f",
      "subject": "Resync `cookies` from WPT Upstream"
    },
    "320487@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "320487@main",
      "clUrl": "https://commits.webkit.org/320487@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322689\n\nReviewed by Yusuke Suzuki.\n\nRegExp#test on a non-constant RegExp (routes held in an array, as\npath-to-regexp routers do) always goes through the operation, RegExp::match\nand the Yarr JIT prologue, only for the first Yarr instruction to reject an\ninput shorter than the pattern's minimum size.\n\nYarr already computes that minimum (PatternDisjunction::m_minimumSize) but\nkeeps it only in the transient YarrPattern. Keep a copy in RegExp (it fits in\nexisting padding), filled in once the pattern has compiled so that a pattern\nwhose bytecode compilation fails still enters compilation and throws, and\ncompare against it in RegExp::matchInline and inline in DFG / FTL RegExpTest.\nGlobal and sticky patterns are excluded from the inline check since they\nstart at lastIndex and reset it on failure.\n\n                                                   Baseline                  Patched\n\nregexp-test-non-constant-minimum-length        53.1873+-1.0025     ^     10.5381+-1.0628        ^ definitely 5.0471x faster\nregexp-prototype-match-short-string            17.4101+-0.1716     ^     16.8127+-0.2799        ^ definitely 1.0355x faster\n\nTests: JSTests/microbenchmarks/regexp-test-non-constant-minimum-length.js\n       JSTests/stress/regexp-test-minimum-length-filter.js\n\n* JSTests/microbenchmarks/regexp-test-non-constant-minimum-length.js: Added.\n(dispatch):\n* JSTests/stress/regexp-test-minimum-length-filter.js: Added.\n(shouldBe):\n(testUntyped):\n(shortObject.toString):\n(longObject.toString):\n(nonConstantString):\n(rope):\n(testConstantUnicode):\n(testConstantGlobal):\n(testConstantZeroMinimum):\n(testHoisted):\n(shouldThrow):\n(testUncompilable):\n* Source/JavaScriptCore/b3/B3AbstractHeapRepository.h:\n* Source/JavaScriptCore/dfg/DFGGraph.cpp:\n(JSC::DFG::constantRegExpFor):\n(JSC::DFG::Graph::tryGetConstantRegExpFirstCharacterBitmap):\n(JSC::DFG::Graph::tryGetConstantRegExpTestMinimumSize):\n* Source/JavaScriptCore/dfg/DFGGraph.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::compileRegExpTest):\n(JSC::DFG::SpeculativeJIT::emitRegExpTestWithFilter):\n(JSC::DFG::SpeculativeJIT::tryEmitRegExpTestFirstCharacterFilter): Deleted.\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:\n(JSC::DFG::SpeculativeJIT::emitRegExpMinimumLengthFilterGuards):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):\n* Source/JavaScriptCore/runtime/RegExp.cpp:\n(JSC::RegExp::finishCreation):\n(JSC::RegExp::compile):\n(JSC::RegExp::compileMatchOnly):\n(JSC::RegExp::deleteCode):\n* Source/JavaScriptCore/runtime/RegExp.h:\n* Source/JavaScriptCore/runtime/RegExpInlines.h:\n(JSC::RegExp::matchInline):\n\nCanonical link: https://commits.webkit.org/320487@main",
      "email": "sosuke@bun.sh",
      "hash": "34141654c7a5bedfa41619da1f9513b39a8dd694",
      "subject": "[JSC] `RegExp#test` should fast-fail on an input shorter than the pattern's minimum size"
    },
    "320488@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "320488@main",
      "clUrl": "https://commits.webkit.org/320488@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323192\n\nReviewed by Yusuke Suzuki.\n\nDFG and FTL compile ArrayIndexOf / ArrayIncludes on Int32 and Double arrays\ninto a scalar loop, while the C++ paths for Int32 arrays already scan the\nbutterfly with the vectorized WTF::find64. On a long array the JIT-compiled\ncode was slower per element than the interpreter, about 1.8x slower than V8.\n\nWhen at least 32 elements remain, the JIT now calls a NOEXCEPT operation that\nruns WTF::find64 / WTF::findDouble and keeps the inline loop for shorter scans;\nthe threshold is where the call overhead stops mattering on Apple Silicon.\nfindDouble is rewritten to share find64's unrolled kernel, since its aligned\nvariant was slower than the scalar loop, and the remaining scalar double\nsearches in the runtime call it too.\n\n                                                   baseline                  patched\n\narray-prototype-indexOf-int32-from-contiguous\n                                               13.2918+-0.4091           13.0476+-0.3309          might be 1.0187x faster\narray-prototype-includes-int32-from-contiguous\n                                               12.9337+-0.0922           12.8622+-0.4050\narray-prototype-includes-int32-miss           285.7966+-0.9708     ^     85.4147+-1.1408        ^ definitely 3.3460x faster\narray-prototype-includes-double                12.5542+-0.5818     ^      6.5374+-0.1602        ^ definitely 1.9204x faster\narray-prototype-includes-int32                148.5482+-2.2786     ^     53.7430+-0.5775        ^ definitely 2.7640x faster\narray-prototype-indexOf-int32                 148.3728+-2.5853     ^     53.8890+-0.9227        ^ definitely 2.7533x faster\narray-prototype-includes-double-from-contiguous\n                                               32.8554+-1.6434     ?     32.8829+-1.2574        ?\narray-prototype-indexOf-double-long           153.0529+-4.8413     ^     62.5287+-1.7941        ^ definitely 2.4477x faster\n\nTests: JSTests/microbenchmarks/array-prototype-includes-int32-miss.js\n       JSTests/microbenchmarks/array-prototype-indexOf-double-long.js\n       JSTests/stress/array-indexof-includes-long-int32-double.js\n\n* JSTests/microbenchmarks/array-prototype-includes-int32-miss.js: Added.\n(test):\n* JSTests/microbenchmarks/array-prototype-indexOf-double-long.js: Added.\n(test):\n* JSTests/stress/array-indexof-includes-long-int32-double.js: Added.\n(shouldBe):\n(int32IndexOf):\n(int32IndexOfFrom):\n(int32Includes):\n(int32IncludesFrom):\n(doubleIndexOf):\n(doubleIndexOfFrom):\n(doubleIncludes):\n(doubleIncludesFrom):\n(makeInt32Array):\n(makeDoubleArray):\n(let.length.of.lengths.3):\n(let.length.of.lengths.0.5):\n* Source/JavaScriptCore/dfg/DFGOperations.cpp:\n(JSC::DFG::arrayIncludesDouble):\n(JSC::DFG::arrayIndexOfDouble):\n(JSC::DFG::JSC_DEFINE_NOEXCEPT_JIT_OPERATION):\n* Source/JavaScriptCore/dfg/DFGOperations.h:\n* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:\n(JSC::DFG::SpeculativeJIT::compileArrayIndexOfOrArrayIncludes):\n* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:\n(JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOfOrArrayIncludes):\n* Source/JavaScriptCore/runtime/ArrayPrototype.cpp:\n(JSC::fastIndexOf):\n* Source/JavaScriptCore/runtime/JSArray.cpp:\n(JSC::JSArray::fastIncludes):\n* Source/WTF/wtf/SIMDHelpers.h:\n(WTF::SIMD::splatDouble):\n(WTF::SIMD::splat):\n* Source/WTF/wtf/text/StringCommon.cpp:\n(WTF::findFloatAlignedImpl):\n(WTF::findDoubleAlignedImpl): Deleted.\n* Source/WTF/wtf/text/StringCommon.h:\n(WTF::find64BitLaneImpl):\n(WTF::find64):\n(WTF::findDouble):\n\nCanonical link: https://commits.webkit.org/320488@main",
      "email": "sosuke@bun.sh",
      "hash": "0d6cf47c3b1211a20135cc74ae54768dbeb1aa93",
      "subject": "[JSC] Vectorize `Array#indexOf` and `Array#includes` on long Int32 and Double arrays"
    },
    "320489@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320489@main",
      "clUrl": "https://commits.webkit.org/320489@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323398\nrdar://186630818\n\nReviewed by Chris Dumez.\n\nReplace the index-based loop in isValidPathSegment() with a range-based\nfor loop over StringView::codeUnits(). This avoids re-evaluating\nsegment.length() on every iteration and the per-index operator[] access,\nand reads more clearly. No change in behavior.\n\n* Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:\n(WebCore::isValidPathSegment):\n\nCanonical link: https://commits.webkit.org/320489@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "8d57bce3aacce4281565e492d1b4e6bf377ed314",
      "subject": "Modernize isValidPathSegment() to use a range-based for loop over code units"
    },
    "320490@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "320490@main",
      "clUrl": "https://commits.webkit.org/320490@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323260\n\nReviewed by Carlos Garcia Campos.\n\nLayer tiles are always drawn with SkFilterMode::kNearest. That is fine as long as\neach pixel of the tile ends up on exactly one screen pixel, at the same size and\nwithout any rotation. Once the layer is shifted by a fraction of a pixel, every\nscreen pixel still takes its color from a single source pixel, rather than from a\nmix of the two it now falls inbetween. Edges lose their smoothness and visibly\n\"snap\" from one pixel to the next. TextureMapper does not have this problem,\nbecause its GL path always uses GL_LINEAR.\n\nThe fix is to choose nearest or linear for each draw, depending on whether the\ntransform still maps tile pixels 1:1 onto screen pixels. Layers whose content\nis a single image, already performed this test before they are drawn, so move\nthat functionality into a shared place and use it for backing store tiles as well.\nAudit all other places that hardcoded linear vs. nearest and fast vs\nstrict srcRect constraint.\n\nimported/w3c/web-platform-tests/css/css-animations/transform-animation-under-large-scale.html\nloses its glib specific [ Pass ] override and falls back to the generic ImageOnlyFailure of\nwebkit.org/b/225407. The test scales a layer by 100 without re-rasterizing its contents at\nthat scale, since GraphicsLayerCoordinated keeps the root relative scale factor updates\nturned off. Nearest sampling replicated each of the two content rows into a sharp block,\nwhich happened to match the reference. Linear sampling blurs the magnified tile, the same\nresult all other ports produce.\n\nLinear sampling reaches past the source rect, which only matters for a tile whose\ntexture is padded past its logical size (super-tiled textures) - keep\nthat into account when deciding which sampling strategy to use.\n\n* LayoutTests/platform/glib/TestExpectations:\n* Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:\n(WebCore::SkiaBackingStore::processPendingTileUpdates):\n(WebCore::SkiaBackingStore::samplingOptionsForMatrix const):\n(WebCore::SkiaBackingStore::paintToCanvas):\n(WebCore::SkiaBackingStore::Tile::isPadded const):\n* Source/WebCore/platform/graphics/skia/SkiaBackingStore.h:\n(WebCore::SkiaBackingStore::requiresStrictSourceConstraint const):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::paintContents):\n(WebCore::SkiaCompositingLayer::paintWithIntermediateSurface):\n(WebCore::SkiaCompositingLayer::paintWithMaskAndBackdrop):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.cpp:\n(WebCore::SkiaCompositingLayerImageSetBatch::samplingOptionsForImage const):\n(WebCore::SkiaCompositingLayerImageSetBatch::samplingOptionsForBackingStore const):\n(WebCore::SkiaCompositingLayerImageSetBatch::addImageSet):\n(WebCore::SkiaCompositingLayerImageSetBatch::addImage):\n(WebCore::SkiaCompositingLayerImageSetBatch::imageRequiresLinearSampling const): Deleted.\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.h:\n(WebCore::SkiaCompositingLayerImageSetBatch::planRestrictedDraw):\n(WebCore::SkiaCompositingLayerImageSetBatch::drawOutsideBatch):\n* Source/WebCore/platform/graphics/skia/SkiaUtilities.h:\n(WebCore::SkiaUtilities::samplingOptionsForMatrix):\n(WebCore::SkiaUtilities::samplingOptionsForImageDraw):\n\nCanonical link: https://commits.webkit.org/320490@main",
      "email": "nzimmermann@igalia.com",
      "hash": "f42e74f7147c7a1d2dfc69021d103dcd85ff9c03",
      "subject": "[GTK][WPE] Skia compositor: backing store tiles ignore the layer transform when picking sampling options"
    },
    "320491@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320491@main",
      "clUrl": "https://commits.webkit.org/320491@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323402\nrdar://186636449\n\nReviewed by Anne van Kesteren.\n\nNine tests under LayoutTests/imported/blink/ are byte-identical and both the\ntest and its expected baseline - to tests already present elsewhere in\nLayoutTests/. They add no coverage over the native copies, so remove the\nredundant imported/blink duplicates.\n\nEach removed test is byte-identical to the existing WebKit test noted below:\n\n- imported/blink/css3/calc/calc-with-percent-and-number-in-line-height-crash.html\n  (= fast/css/calc-with-percent-and-number-in-line-height-crash.html)\n- imported/blink/fast/multicol/unbreakable-content-taller-than-height-crash.html\n  (= fast/multicol/unbreakable-content-taller-than-height-crash.html)\n- imported/blink/svg/text/text-decoration-propagation-2.html\n  (= svg/text/text-decoration-propagation-2.html)\n- imported/blink/fast/block/positioning/abspos-auto-left-auto-top-inside-auto-margins.html\n  (= fast/block/positioning/abspos-auto-left-auto-top-inside-auto-margins.html)\n- imported/blink/fast/block/positioning/abspos-auto-left-and-width-change-parent-margin-left.html\n  (= fast/block/positioning/abspos-auto-left-and-width-change-parent-margin-left.html)\n- imported/blink/fast/box-shadow/normal-box-shadow-with-background-image.html\n  (= fast/box-shadow/normal-box-shadow-with-background-image.html)\n- imported/blink/fast/css/style-preferred-stylesheet-02.html\n  (= fast/css/style-preferred-stylesheet-02.html)\n- imported/blink/fast/parser/badurl-base-preloader-crash.html\n  (= fast/parser/badurl-base-preloader-crash.html)\n- imported/blink/fast/table/overflowScroll-display-block.html\n  (= fast/table/overflowScroll-display-block.html)\n\n* LayoutTests/imported/blink/css3/calc/calc-with-percent-and-number-in-line-height-crash-expected.txt: Removed.\n* LayoutTests/imported/blink/css3/calc/calc-with-percent-and-number-in-line-height-crash.html: Removed.\n* LayoutTests/imported/blink/fast/block/positioning/abspos-auto-left-and-width-change-parent-margin-left-expected.html: Removed.\n* LayoutTests/imported/blink/fast/block/positioning/abspos-auto-left-and-width-change-parent-margin-left.html: Removed.\n* LayoutTests/imported/blink/fast/block/positioning/abspos-auto-left-auto-top-inside-auto-margins-expected.html: Removed.\n* LayoutTests/imported/blink/fast/block/positioning/abspos-auto-left-auto-top-inside-auto-margins.html: Removed.\n* LayoutTests/imported/blink/fast/box-shadow/normal-box-shadow-with-background-image-expected-mismatch.html: Removed.\n* LayoutTests/imported/blink/fast/box-shadow/normal-box-shadow-with-background-image.html: Removed.\n* LayoutTests/imported/blink/fast/css/style-preferred-stylesheet-02-expected.html: Removed.\n* LayoutTests/imported/blink/fast/css/style-preferred-stylesheet-02.html: Removed.\n* LayoutTests/imported/blink/fast/multicol/unbreakable-content-taller-than-height-crash-expected.txt: Removed.\n* LayoutTests/imported/blink/fast/multicol/unbreakable-content-taller-than-height-crash.html: Removed.\n* LayoutTests/imported/blink/fast/parser/badurl-base-preloader-crash-expected.txt: Removed.\n* LayoutTests/imported/blink/fast/parser/badurl-base-preloader-crash.html: Removed.\n* LayoutTests/imported/blink/fast/table/overflowScroll-display-block-expected.html: Removed.\n* LayoutTests/imported/blink/fast/table/overflowScroll-display-block.html: Removed.\n* LayoutTests/imported/blink/svg/text/text-decoration-propagation-2-expected.html: Removed.\n* LayoutTests/imported/blink/svg/text/text-decoration-propagation-2.html: Removed.\n\nCanonical link: https://commits.webkit.org/320491@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "63337facdaadf7a2388cab5838048c3e9f5fca99",
      "subject": "Remove duplicate Blink-imported tests that are byte-identical to existing WebKit tests"
    },
    "320492@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "320492@main",
      "clUrl": "https://commits.webkit.org/320492@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322692\n\nReviewed by Daniel Liu.\n\nThis is the second step of the plan in 319067@main. The interpreter now\nmatches a lookbehind the way the JIT does: from a copy of its disjunction with\nthe terms in match order, so that only the input reading primitives know\nabout the direction.\n\nUntil now the interpreter handled the direction term by term: each matching\nfunction had a Forward implementation and a separate Backward one. Those\nBackward implementations each re-derived the surrogate pair rules, and the\nones that got them wrong are where the interpreter-only lookbehind bugs in /u\nmode came from. With one set of primitives whose Backward form is the mirror\nof the Forward one, the following are fixed without a case-by-case change, and\neach gets its own test:\n\n1. /(?\u003c=[\\u{1F600}a])b/u on \"x😀b\" returned null.\n2. /(?\u003c=\\u{1F600}{2})x/u on \"😀😀x\" returned null.\n3. /(?\u003c=$.*)/su on \"😁\" matched at index 1, inside the surrogate pair.\n4. /(?\u003c=\\uD83D)/u on \"😀\" matched at index 1.\n\nThe diff is large because most of it is deletion: every Backward\nimplementation and the Backward-specific bookkeeping in the bytecode compiler\nare gone. The forward bytecode and the JIT's machine code are unchanged.\n\nTests: JSTests/stress/regexp-interpreter-lookbehind-character-class-non-bmp.js\n       JSTests/stress/regexp-interpreter-lookbehind-fixed-count-non-bmp-character.js\n       JSTests/stress/regexp-interpreter-lookbehind-greedy-class-backtrack-non-bmp.js\n       JSTests/stress/regexp-interpreter-lookbehind-surrogate-half.js\n       JSTests/stress/regexp-interpreter-lookbehind.js\n\n* JSTests/stress/regexp-interpreter-lookbehind-character-class-non-bmp.js: Added.\n(shouldBe):\n(stringify):\n(shouldMatch):\n* JSTests/stress/regexp-interpreter-lookbehind-fixed-count-non-bmp-character.js: Added.\n(shouldBe):\n(stringify):\n(shouldMatch):\n* JSTests/stress/regexp-interpreter-lookbehind-greedy-class-backtrack-non-bmp.js: Added.\n(shouldBe):\n(stringify):\n(shouldMatch):\n* JSTests/stress/regexp-interpreter-lookbehind-surrogate-half.js: Added.\n(shouldBe):\n(stringify):\n(shouldMatch):\n* JSTests/stress/regexp-interpreter-lookbehind.js: Added.\n(shouldBe):\n(stringify):\n(shouldMatch):\n* Source/JavaScriptCore/yarr/YarrInterpreter.cpp:\n(JSC::Yarr::Interpreter::InputStream::characterIndex):\n(JSC::Yarr::Interpreter::InputStream::readChecked):\n(JSC::Yarr::Interpreter::InputStream::readCheckedDontAdvance):\n(JSC::Yarr::Interpreter::InputStream::readSurrogatePairChecked):\n(JSC::Yarr::Interpreter::InputStream::readCodePoint):\n(JSC::Yarr::Interpreter::InputStream::reread):\n(JSC::Yarr::Interpreter::InputStream::positionAt):\n(JSC::Yarr::Interpreter::InputStream::checkInput):\n(JSC::Yarr::Interpreter::InputStream::uncheckInput):\n(JSC::Yarr::Interpreter::InputStream::uncheckCodePoint):\n(JSC::Yarr::Interpreter::InputStream::isValidNegativeInputOffset):\n(JSC::Yarr::Interpreter::checkCharacter):\n(JSC::Yarr::Interpreter::checkSurrogatePair):\n(JSC::Yarr::Interpreter::checkCasedCharacter):\n(JSC::Yarr::Interpreter::checkCharacterClass):\n(JSC::Yarr::Interpreter::checkCharacterClassDontAdvanceInputForNonBMP):\n(JSC::Yarr::Interpreter::tryConsumeBackReference):\n(JSC::Yarr::Interpreter::matchAssertionBOL):\n(JSC::Yarr::Interpreter::matchAssertionEOL):\n(JSC::Yarr::Interpreter::matchAssertionBOI):\n(JSC::Yarr::Interpreter::matchAssertionEOI):\n(JSC::Yarr::Interpreter::matchAssertionWordBoundary):\n(JSC::Yarr::Interpreter::matchFixedCount):\n(JSC::Yarr::Interpreter::matchGreedy):\n(JSC::Yarr::Interpreter::backtrackNonGreedy):\n(JSC::Yarr::Interpreter::backtrackPatternCharacter):\n(JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):\n(JSC::Yarr::Interpreter::matchCharacterClass):\n(JSC::Yarr::Interpreter::backtrackCharacterClass):\n(JSC::Yarr::Interpreter::matchBackReference):\n(JSC::Yarr::Interpreter::backtrackBackReference):\n(JSC::Yarr::Interpreter::matchPatternCharacterFixed):\n(JSC::Yarr::Interpreter::matchPatternCharacterGreedy):\n(JSC::Yarr::Interpreter::matchPatternCasedCharacterFixed):\n(JSC::Yarr::Interpreter::matchPatternCasedCharacterGreedy):\n(JSC::Yarr::Interpreter::recordParenthesesMatch):\n(JSC::Yarr::Interpreter::matchParenthesesOnceBegin):\n(JSC::Yarr::Interpreter::matchParenthesesOnceEnd):\n(JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):\n(JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):\n(JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):\n(JSC::Yarr::Interpreter::matchDisjunction):\n(JSC::Yarr::ByteCompiler::checkInput):\n(JSC::Yarr::ByteCompiler::assertionBOL):\n(JSC::Yarr::ByteCompiler::assertionEOL):\n(JSC::Yarr::ByteCompiler::assertionBOI):\n(JSC::Yarr::ByteCompiler::assertionEOI):\n(JSC::Yarr::ByteCompiler::atomPatternCharacter):\n(JSC::Yarr::ByteCompiler::atomCharacterClass):\n(JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):\n(JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):\n(JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):\n(JSC::Yarr::ByteCompiler::emitDisjunction):\n(JSC::Yarr::ByteTermDumper::dumpTerm):\n(JSC::Yarr::Interpreter::InputStream::rewind): Deleted.\n(JSC::Yarr::Interpreter::InputStream::read): Deleted.\n(JSC::Yarr::Interpreter::InputStream::readForCharacterDump): Deleted.\n(JSC::Yarr::Interpreter::InputStream::tryReadBackward): Deleted.\n(JSC::Yarr::Interpreter::InputStream::prev): Deleted.\n(JSC::Yarr::Interpreter::InputStream::atStart): Deleted.\n(JSC::Yarr::Interpreter::InputStream::tryUncheckInput): Deleted.\n(JSC::Yarr::ByteCompiler::uncheckInput): Deleted.\n(JSC::Yarr::ByteCompiler::haveCheckedInput): Deleted.\n* Source/JavaScriptCore/yarr/YarrInterpreter.h:\n(JSC::Yarr::ByteTerm::directed):\n(JSC::Yarr::ByteTerm::ByteTerm):\n(JSC::Yarr::ByteTerm::BOL):\n(JSC::Yarr::ByteTerm::BOI):\n(JSC::Yarr::ByteTerm::CheckInput):\n(JSC::Yarr::ByteTerm::EOL):\n(JSC::Yarr::ByteTerm::EOI):\n(JSC::Yarr::ByteTerm::WordBoundary):\n(JSC::Yarr::ByteTerm::BackReference):\n(JSC::Yarr::ByteTerm::ParentheticalAssertionBegin):\n(JSC::Yarr::ByteTerm::ParentheticalAssertionEnd):\n(JSC::Yarr::ByteTerm::isCharacterType):\n(JSC::Yarr::ByteTerm::isCasedCharacterType):\n(JSC::Yarr::ByteTerm::isCharacterClass):\n(JSC::Yarr::ByteTerm::isBackReference):\n(JSC::Yarr::ByteTerm::parentMatchDirection):\n(JSC::Yarr::ByteTerm::UncheckInput): Deleted.\n(JSC::Yarr::ByteTerm::HaveCheckedInput): Deleted.\n* Source/JavaScriptCore/yarr/YarrJIT.cpp:\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::YarrPattern::copyDisjunctionInMatchOrder):\n* Source/JavaScriptCore/yarr/YarrPattern.h:\n\nCanonical link: https://commits.webkit.org/320492@main",
      "email": "sosuke@bun.sh",
      "hash": "956f6fb49678a6f6b0116325be5b5357df948970",
      "subject": "[YARR] Match lookbehinds in the interpreter from a copy of the disjunction in match order"
    },
    "320493@main": {
      "author": "Antti Koivisto",
      "avatar": "https://www.gravatar.com/avatar/07965eed55d4b41ea2b394599b17f7cd?d=identicon\u0026s=64",
      "cl": "320493@main",
      "clUrl": "https://commits.webkit.org/320493@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323319\nrdar://186564084\n\nReviewed by Alan Baradlay.\n\nThey should work per https://github.com/w3c/csswg-drafts/issues/10982.\n\nTwo things stopped them. They were rejected at parse time by a currentProperty test standing in for\n\"no element to resolve against\", which a container query condition does have. Replace it with an\nexplicit treeCountingFunctionsAllowed. Media queries keep rejecting them, which is what makes them\nevaluate to unknown.\n\nResolving one also needs a BuilderState and ContainerQueryEvaluator built its conversion data\nwithout one. Make it for the container and take the conversion data from that, like\nIfConditionEvaluator does. The style() declaration form was already doing this the long way around\nwith a Builder of its own, which is why that form worked and nothing else did.\n\nInvalidation on sibling changes is still missing.\n\nTest: imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-if-style-query.html\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-container-query-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-container-query-invalidation-expected.txt:\n\nStill failing, but later: the queries now match, they just don't invalidate.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-container-query.html:\n\nCover the style() range form too, which nothing tested.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-if-style-query-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-values/tree-counting/sibling-function-if-style-query.html: Added.\n* Source/WebCore/css/MediaQueryParserContext.h:\n* Source/WebCore/css/calc/CSSCalcTree+Parser.cpp:\n(WebCore::CSSCalc::parseCalcFunction):\n* Source/WebCore/css/parser/CSSPropertyParserState.h:\n* Source/WebCore/css/query/ContainerQueryFeatures.cpp:\n(WebCore::CQ::Features::evaluateStyleRangeValue):\n(WebCore::CQ::Features::StyleFeatureSchema::localPropertyRegistry):\n\nBoth evaluators that reach a style() feature have a builder state now, so stop testing for it.\n\n* Source/WebCore/css/query/ContainerQueryParser.cpp:\n(WebCore::CQ::ContainerQueryParser::consumeContainerCondition):\n* Source/WebCore/css/query/GenericMediaQueryParser.cpp:\n(WebCore::MQ::consumeValue):\n* Source/WebCore/style/ContainerQueryEvaluator.cpp:\n(WebCore::Style::ContainerQueryEvaluator::featureEvaluationContextForCondition const):\n* Source/WebCore/style/ContainerQueryEvaluator.h:\n\nCanonical link: https://commits.webkit.org/320493@main",
      "email": "antti@apple.com",
      "hash": "a2b3ca6b9e95d8b94200d874fd95e3dd36f873ab",
      "subject": "[css-values-5] Support tree counting functions in container queries"
    },
    "320494@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "320494@main",
      "clUrl": "https://commits.webkit.org/320494@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321993\n\nReviewed by Carlos Garcia Campos.\n\nTake the last animation value after animation ended as well as\nTextureMapperLayer does. This has no effect for web, but only for \"flush\nrepaint\" feature of WebInspector.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:\n(WebCore::SkiaCompositingLayer::localTransform const):\n(WebCore::SkiaCompositingLayer::futureLocalTransform const):\n(WebCore::SkiaCompositingLayer::opacityForAnimationsState const):\n(WebCore::SkiaCompositingLayer::filter const):\n\nCanonical link: https://commits.webkit.org/320494@main",
      "email": "fujii@igalia.com",
      "hash": "4af7b773e279f8908b804e342c74ffe11139c1f1",
      "subject": "SkiaCompositingLayer: Take the last animation value after animation ended"
    },
    "320495@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "320495@main",
      "clUrl": "https://commits.webkit.org/320495@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323244\n\nReviewed by Yusuke Suzuki.\n\nJSBigInt multiplies with O(n^2) schoolbook / Comba loops only, so the time per\nproduct grows quadratically with the operand size: 1000 x 1000 digits takes\n336 us and 4000 x 4000 takes 5.3 ms. Add Karatsuba multiplication for products\nwhose smaller operand has at least 44 digits, which brings the growth to\nO(n^1.58). This is a port of V8's implementation [1], itself based on Go's\nmath/big [2].\n\nThe threshold is 44 rather than V8's 34 because JSC's Comba base case is faster\nthan V8's schoolbook: balanced shapes win from 40 digits, but for a long x the\nlength rounding pads an odd smaller operand by a digit, and at 41 or 43 digits\nthat padding costs the 2-3% Karatsuba would gain. At 44 no measured shape\nregresses. Sizes below the threshold keep the existing paths, and allocation,\nsign and normalization in multiplyImpl are unchanged.\n\nTime per product (us, 64-bit digits, Apple M4, best of 3 x 7 rounds):\n\ndigits          Before      After\n\n40 x 40          0.647      0.652\n43 x 43          0.738      0.738\n44 x 44          0.762      0.714\n64 x 64          1.658      1.406\n100 x 100        3.987      2.872\n256 x 256       23.901     13.113\n1000 x 1000    335.548    122.562\n4000 x 4000   5337.000   1110.688\n1000 x 43       16.089     16.447\n1000 x 45       16.870     16.677\n10000 x 45     163.054    164.321\n10000 x 100    352.316    276.342\n\n                                   Baseline                  Patched\n\nbigint-mul-large              249.7296+-0.6119     ^    140.1950+-0.4092        ^ definitely 1.7813x faster\nbigint-mul-large-unequal      371.3519+-0.7129     ^    299.9962+-0.7217        ^ definitely 1.2379x faster\n\n[1]: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/bigint/mul-karatsuba.cc\n[2]: https://go.dev/src/math/big/nat.go\n\nTests: JSTests/microbenchmarks/bigint-mul-large-unequal.js\n       JSTests/microbenchmarks/bigint-mul-large.js\n       JSTests/stress/bigint-multiply-karatsuba.js\n\n* JSTests/microbenchmarks/bigint-mul-large-unequal.js: Added.\n(test):\n(next):\n* JSTests/microbenchmarks/bigint-mul-large.js: Added.\n(test):\n(next):\n* JSTests/stress/bigint-multiply-karatsuba.js: Added.\n(shouldBe):\n(refMul):\n(makeOperand):\n(makeSparseOperand):\n(check):\n* Source/JavaScriptCore/runtime/JSBigInt.cpp:\n(JSC::karatsubaRoundUpLength):\n(JSC::karatsubaLength):\n(JSC::clampedSubspan):\n(JSC::JSBigInt::inplaceAddAndPropagate):\n(JSC::JSBigInt::inplaceSubAndPropagate):\n(JSC::JSBigInt::karatsubaAbsoluteDifference):\n(JSC::JSBigInt::multiplyZeroPadded):\n(JSC::JSBigInt::karatsubaMain):\n(JSC::JSBigInt::karatsubaChunk):\n(JSC::JSBigInt::karatsubaStart):\n(JSC::JSBigInt::multiplyKaratsuba):\n(JSC::JSBigInt::multiplyDigitsInto):\n* Source/JavaScriptCore/runtime/JSBigInt.h:\n\nCanonical link: https://commits.webkit.org/320495@main",
      "email": "sosuke@bun.sh",
      "hash": "cbd15fc88bdeffb4618a464681e03ef1f25bc5b6",
      "subject": "[JSC] Add Karatsuba multiplication to `JSBigInt`"
    },
    "320496@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320496@main",
      "clUrl": "https://commits.webkit.org/320496@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323305\nrdar://186553823\n\nReviewed by Wenson Hsieh and Chris Dumez.\n\nClipboard::ItemWriter::write() copied every clipboard payload twice while\nbuilding the Vector\u003cPasteboardCustomData\u003e handed to the pasteboard: once by\niterating dataToWrite by value, and once more via customData.append(*data).\nPasteboardCustomData owns the actual clipboard buffers, so each copy is a\nfull deep copy of the payload.\n\ndataToWrite is already a std::exchange'd local that is discarded when the\nloop ends, so nothing needs the originals afterward. Iterate over it as an\nrvalue (WTF::move) to make the destructive intent explicit and move each\nitem into customData instead, taking the per-item cost from two full copies\ndown to a single move.\n\n* Source/WebCore/Modules/async-clipboard/Clipboard.cpp:\n(WebCore::Clipboard::ItemWriter::didSetAllData):\n\nCanonical link: https://commits.webkit.org/320496@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "57303f8073605d181ef2070be13c8e359a0bdd51",
      "subject": "Avoid redundant PasteboardCustomData copies when writing clipboard items"
    },
    "320497@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "320497@main",
      "clUrl": "https://commits.webkit.org/320497@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322884\nrdar://186132455\n\nReviewed by Abrar Rahman Protyasha.\n\nAdd a JavaScriptEvaluationGraphDecoder to decode JavaScript evaluation results into Swift.\nCurrently, this only supports decoding `Bool`.\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/JavaScriptEvaluationTests.swift\n\n* Source/WebKit/Shared/JavaScriptEvaluationArrayDecoder.swift: Added.\n(JavaScriptEvaluationArrayDecoder.createDecoder(_:)):\n* Source/WebKit/Shared/JavaScriptEvaluationCodableValue.swift: Added.\n* Source/WebKit/Shared/JavaScriptEvaluationDecodingGraph.swift: Added.\n(JavaScriptEvaluationDecodingGraph.map):\n* Source/WebKit/Shared/JavaScriptEvaluationFieldDecoder.swift: Added.\n(JavaScriptEvaluationFieldDecoder.string):\n(JavaScriptEvaluationFieldDecoder.matches(_:)):\n* Source/WebKit/Shared/JavaScriptEvaluationGraphDecoder.swift: Added.\n(JavaScriptEvaluationGraphDecoder.decode(_:)):\n(JavaScriptEvaluationGraphDecoder.decodeNil() throws(CodingError.Decoding:)):\n(JavaScriptEvaluationGraphDecoder.decodeOptional(_:)):\n* Source/WebKit/Shared/JavaScriptEvaluationObjectDecoder.swift: Added.\n(JavaScriptEvaluationObjectDecoder.keyName(_:)):\n(JavaScriptEvaluationObjectDecoder.valueDecoder(_:name:)):\n(JavaScriptEvaluationObjectDecoder.keyDecoder(_:name:)):\n* Source/WebKit/Shared/JavaScriptEvaluationResultCxxInteropSupport.h: Added.\n(WebKit::JavaScriptEvaluationOwnedResult::JavaScriptEvaluationOwnedResult):\n(WebKit::JavaScriptEvaluationOwnedResult::begin const):\n(WebKit::JavaScriptEvaluationOwnedResult::end const):\n(WebKit::JavaScriptEvaluationResultCxxInteropSupport::takeValue):\n(WebKit::CxxInteropSupport::alternativeForVariant):\n(WebKit::CxxInteropSupport::alternativeIndexForJavaScriptEvaluationResultValue):\n(WebKit::CxxInteropSupport::jsObjectIDRawValue):\n* Source/WebKit/Shared/JavaScriptEvaluationResultDecoder.swift: Added.\n* Source/WebKit/UIProcess/API/Swift/WebPage+NewCodable.swift: Copied from Source/WebKit/UIProcess/WebPageProxy.swift.\n* Source/WebKit/WebKit.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/JavaScriptEvaluationTests.swift: Copied from Source/WebKit/UIProcess/WebPageProxy.swift.\n(JavaScriptEvaluationTests.evaluateBool):\n\nCanonical link: https://commits.webkit.org/320497@main",
      "email": "richard_robinson2@apple.com",
      "hash": "bce916c0709c34e188946fa60d1f210cbb132b1f",
      "subject": "[NewCodable] Add an initial implementation of a Swift decoder for JS evaluation"
    },
    "320498@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "320498@main",
      "clUrl": "https://commits.webkit.org/320498@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323370\nrdar://186605623\n\nReviewed by Elliott Williams.\n\nThis section in PlatformEnable.h depends on a valid -target\nargument, which was supplied to clang but not to swiftc's built-in clang importer.\n\n  #if PLATFORM(MAC) \u0026\u0026 __MAC_OS_X_VERSION_MIN_REQUIRED \u003e= 270000\n  #define ENABLE_SCROLL_POCKET_IN_FULLSCREEN 1\n  #endif\n\nThis resulted in a differing layout of WebPageProxy based on fields such\nas m_windowIsInNativeFullScreen which were predicated on this condition.\nThis resulted in a runtime crash related to BrowsingContextGroup which was\na result of the different object layout interpretations.\n\nThis happens only when the deployment target is less than the SDK version.\n\nSolve by informing Swift of th correct clang target to use.\n\n* Source/cmake/WebKitMacros.cmake:\n\nCanonical link: https://commits.webkit.org/320498@main",
      "email": "adrian_taylor@apple.com",
      "hash": "1bcccddc7c00bb163950a5707e9b18c4a2861609",
      "subject": "Fix test failures using cmake and most recent MacOS SDK"
    },
    "320499@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "320499@main",
      "clUrl": "https://commits.webkit.org/320499@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323388\nrdar://186618132\n\nReviewed by Chris Dumez.\n\nDrop `NODELETE` from function that destroys objects since it is a lie.\n\n* Source/WebCore/dom/Document.h:\n* Source/WebCore/dom/Element.cpp:\n(WebCore::Element::attributeChanged):\n\nCanonical link: https://commits.webkit.org/320499@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "c9d3d549bac56327218522180949faaeb1966ef1",
      "subject": "Remove incorrect `NODELETE` annotation from `Document::invalidateAccessKeyCacheSlowCase()`"
    },
    "320500@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "320500@main",
      "clUrl": "https://commits.webkit.org/320500@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323304\nrdar://186553847\n\nReviewed by Aakash Jain.\n\nEvery successful report dumps the whole upload payload into the\nresults-db log as pretty-printed JSON, then the whole response body\nafter it, burying the one line saying which tests were reported under\nhundreds. Remove both, as the FIXME above them asked once reporting had\nbeen validated against the deployed database. A failed report still logs\nthe response body.\n\n* Tools/CISupport/ews-build/results_db.py:\n(ResultsDatabase.report_ews):\n* Tools/CISupport/ews-build/steps_unittest.py:\n(TestResultsDatabaseFailureHandling.test_report_ews_logs_the_request_without_the_api_key):\n\nCanonical link: https://commits.webkit.org/320500@main",
      "email": "issacroy05@gmail.com",
      "hash": "772a91ace41a493b5eaa051c702a4ddfcee122c0",
      "subject": "[EWS] results-db log contains a JSON dump of everything reported to results.webkit.org"
    },
    "320501@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "320501@main",
      "clUrl": "https://commits.webkit.org/320501@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323387\nrdar://186616569\n\nReviewed by Aakash Jain.\n\nThe layout, API and JSC test steps all report to the results database\nthrough `ResultsDBReportMixin`, but each carried its own log name, its\nown copy of the query constants, its own copy of the configuration a\nquery is built from, its own copy of the lookup deciding which commit to\nask about, and its own copy of the classifier deciding which new\nfailures the database already knew were flaky. A change to any of it had\nto be made three times, and a step that drifted from the others drew no\ncomplaint. Hoist the lookup as `resolve_identifier_for_results_db`, the\nclassifier as `pre_existing_flakes_using_results_db`, the two sentences\nnaming ignored evidence as `results_db_ignore_message` and\n`results_db_ignore_counts_message`, and `NUM_FAILURES_TO_DISPLAY`, and\ndrop the duplicate constants. `RunWebKitTests` keeps its own\n`MAX_FAILURES_TO_CHECK_RESULTS_DB`, since it asks about 60 failures\nrather than the shared 50.\n\nThe classifier names the properties it writes from `prefix`, so layout\ngains `prefix = 'first_run_'` on `RunWebKitTests` and `'second_run_'` on\n`ReRunWebKitTests` in place of the names it spelled out. Every\n`results-db_` property keeps the name it had, which matters because\nbuilds are ingested by keying on those strings, so a rename loses data\nrather than failing. The `pre_existing` property stays written at each\ncall site, since the API steps build that one name from `suffix` and\nfolding it in would rename four of them.\n\nLayout excused a `BetweenBuilds` verdict that carried no\n`intra_build_evidence`, and the shared classifier does not, so layout is\ntightened to agree with API and JSC. A test failing only in that shape\nis now blamed on the change rather than ignored.\n\nSome text a reader sees changes with the sharing. The JSC log line gains\nthe trailing newline it was missing and reads \"failing tests\" like the\nothers rather than \"failing JSC tests\". The API step's ignored-evidence\nline reads \"Ignored pre-existing failures\" rather than \"Ignored\npre-existing failure\", and can now name ignored flakes as well.\n\nThe two ignored-evidence sentences change shape as well. A `; ` joined the\ntwo halves under one leading \"Ignored\", so the flaky half read as a\ncontinuation of the failure half; each half now carries its own \"Ignored\"\nand they are joined by a newline, which means `build_summary` and\n`descriptionDone` can hold two lines where they held one. \"flaky tests\"\nbecomes \"pre-existing flakes\", the name the attribute and the property\nalready use, and the trailing \"based on results-db\" goes from all three\nsentences — a reader who cares which database answered is already reading\nthe results-db log.\n\n`preexisting_failures_in_results_db` and `flaky_failures_in_results_db`\nbecome `pre_existing_failures_in_results_db` and\n`pre_existing_flakes_in_results_db`. A flake found this way is\npre-existing in the sense the failures are, and `pre_existing` with the\nunderscore is the spelling `is_test_pre_existing_failure` and the\nproperty names already use.\n\n`FindUnexpectedStaticAnalyzerResults` already declared\n`results_db_log_name` and `suite` but not the mixin that defines them,\nwhich is why it could not reach the shared query configuration until it\nlisted the mixin among its bases.\n\nA row the results database returns did not know which test it described,\nso the lines saying which evidence was ignored — whether a row was\nrecorded by the change's own pull request, carried no `flaky_type`, or\nfell below the clean-tree bar — named no test at all. A build with\nseveral failing tests therefore produced a log whose lines could not be\nattributed to any of them. Carry the test name on `EWSRow` and print it\non each of those lines.\n\n* Tools/CISupport/ews-build/results_db.py:\n(EWSRow):\n(EWSRow.from_json):\n(ResultsDatabase):\n(ResultsDatabase._is_intra_build_flake):\n(ResultsDatabase._is_inter_build_flake):\n* Tools/CISupport/ews-build/steps.py:\n(ResultsDBReportMixin):\n(ResultsDBReportMixin.resolve_identifier_for_results_db):\n(RunJavaScriptCoreTests):\n(RunJavaScriptCoreTests.filter_failures_using_results_db):\n(RunWebKitTests):\n(RunWebKitTests.filter_failures_using_results_db):\n(RunAPITests):\n(RunAPITests.filter_api_test_failures_using_results_db):\n(AnalyzeAPITestsResults):\n(ResultsDBReportMixin.results_db_ignore_message):\n(ResultsDBReportMixin.results_db_ignore_counts_message):\n(ResultsDBReportMixin.pre_existing_flakes_using_results_db):\n(RunJavaScriptCoreTests.__init__):\n(RunJavaScriptCoreTests.runCommand):\n(RunJavaScriptCoreTests.evaluateCommand):\n(RunJavaScriptCoreTests._check_for_pre_existing_failures):\n(RunJavaScriptCoreTests.getResultSummary):\n(AnalyzeJSCTestsResults):\n(RunWebKitTests.__init__):\n(RunWebKitTests.runCommand):\n(RunWebKitTests.evaluateCommand):\n(RunWebKitTests.getResultSummary):\n(ReRunWebKitTests):\n(ReRunWebKitTests.evaluateCommand):\n(ReRunWebKitTests.runCommand):\n(AnalyzeLayoutTestsResults):\n(RunAPITests.__init__):\n(RunAPITests.run):\n(RunAPITests.analyze_failures_using_results_db):\n(ReRunAPITests.doOnFailure):\n(AnalyzeAPITestsResults.run):\n(FindUnexpectedStaticAnalyzerResults):\n(FindUnexpectedStaticAnalyzerResults.filter_results_using_results_db):\n(ResultsDBReportMixin.flaky_new_failures_using_results_db): Deleted.\n(RunJavaScriptCoreTests._check_for_preexisting_failures): Deleted.\n* Tools/CISupport/ews-build/steps_unittest.py:\n(TestFilterLayoutTestFailuresUsingResultsDB._check_order):\n(TestFilterLayoutTestFailuresUsingResultsDB.test_a_verdict_in_the_included_set_removes_the_failure):\n(TestFilterLayoutTestFailuresUsingResultsDB.test_a_verdict_outside_the_included_set_is_recorded_without_ignoring_the_failure):\n(TestFilterLayoutTestFailuresUsingResultsDB):\n(TestFilterLayoutTestFailuresUsingResultsDB.test_a_between_builds_verdict_with_no_intra_build_evidence_is_not_excused):\n(TestFilterLayoutTestFailuresUsingResultsDB.test_a_test_with_no_verdict_is_not_treated_as_sound):\n(TestFilterLayoutTestFailuresUsingResultsDB.test_ignoring_every_failure_sets_the_property_set_build_summary_reads):\n(TestJSCTestStepsReportAsTheyRun.configureRunStep.fake_filter):\n(TestLayoutTestStepsReportAsTheyRun):\n(TestLayoutTestStepsReportAsTheyRun.configureStep.fake_filter):\n(TestLayoutTestStepsReportAsTheyRun.test_the_first_run_exports_the_verdicts_it_relied_on):\n(TestLayoutTestStepsReportAsTheyRun.test_the_rerun_exports_the_verdicts_it_relied_on_under_its_own_prefix):\n(TestLayoutTestStepsReportAsTheyRun.test_the_first_run_exports_the_verdicts_it_relied_on.fake_filter): Deleted.\n\nCanonical link: https://commits.webkit.org/320501@main",
      "email": "issacroy05@gmail.com",
      "hash": "ab9b56ad6cc1a19caccdfb252dc3408030f237c6",
      "subject": "[EWS] Each results-database test step carries its own copy of the shared reporting behaviour"
    },
    "320502@main": {
      "author": "Claudio Saavedra",
      "avatar": "https://www.gravatar.com/avatar/376a6edb56b8e52de407ea171c869bcf?d=identicon\u0026s=64",
      "cl": "320502@main",
      "clUrl": "https://commits.webkit.org/320502@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322277\n\nReviewed by Carlos Garcia Campos.\n\nThis walks through writing a WPE platform implementation concept by\nconcept — the WPEDisplay/WPEView/WPEToplevel subclasses, rendering,\ninput, and module registration — using the public API and the built-in\nimplementations as examples.\n\n* Source/WebKit/WPEPlatform/docs/tutorial-platform.md:\n\nCanonical link: https://commits.webkit.org/320502@main",
      "email": "csaavedra@igalia.com",
      "hash": "bd286f7751a8ad8c5ba5aac4528782c571f8b10c",
      "subject": "[WPE] Add a tutorial about writing a WPE platform implementation"
    },
    "320503@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "320503@main",
      "clUrl": "https://commits.webkit.org/320503@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322778\n\nReviewed by Yusuke Suzuki.\n\nCover memory 0 fill/copy bounds, overlapping copies, grow, and\nMemory64.\n\n* JSTests/wasm/stress/memory-fill-copy.js: Added.\n\nCanonical link: https://commits.webkit.org/320503@main",
      "email": "chi187@gmail.com",
      "hash": "272c82948c1a6819398410db92ea34d7ff6a1d74",
      "subject": "[JSC][Wasm] Add memory.fill and memory.copy stress tests"
    },
    "320504@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320504@main",
      "clUrl": "https://commits.webkit.org/320504@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323223\nrdar://problem/186468752\n\nReviewed by Antti Koivisto.\n\nAn inside marker is inline content of its list item: css-lists-3 says it is \"inline content at the beginning of the\nprincipal box\", so the ::marker's own text properties are supposed to act on it the way they act on any other inline\ncontent.\nWebKit instead uses a RenderListMarker, an atomic inline level box where unicode-bidi, direction, hyphens, text-emphasis, text-shadow\ndo not apply properly.\n\nLet's build the inside marker as an anonymous inline box (a RenderInline carrying the ::marker style)\nholding the marker's own renderers: a RenderText for counter style text, a RenderImage for a list-style-image, or the generated content\nrenderers for 'content' (RenderListMarker is left building only the outside markers it positions itself).\n\n* LayoutTests/TestExpectations:\n* LayoutTests/fast/css/001-expected.txt:\n* LayoutTests/fast/html/details-add-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-child-2-expected.txt:\n* LayoutTests/fast/html/details-add-details-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-details-child-2-expected.txt:\n* LayoutTests/fast/html/details-add-summary-10-expected.txt:\n* LayoutTests/fast/html/details-add-summary-6-expected.txt:\n* LayoutTests/fast/html/details-add-summary-7-expected.txt:\n* LayoutTests/fast/html/details-add-summary-8-expected.txt:\n* LayoutTests/fast/html/details-add-summary-9-expected.txt:\n* LayoutTests/fast/html/details-add-summary-child-1-expected.txt:\n* LayoutTests/fast/html/details-add-summary-child-2-expected.txt:\n* LayoutTests/fast/html/details-nested-1-expected.txt:\n* LayoutTests/fast/html/details-nested-2-expected.txt:\n* LayoutTests/fast/html/details-no-summary2-expected.txt:\n* LayoutTests/fast/html/details-open6-expected.txt:\n* LayoutTests/fast/html/details-remove-child-1-expected.txt:\n* LayoutTests/fast/html/details-remove-child-2-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-4-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-5-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-6-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-child-1-expected.txt:\n* LayoutTests/fast/html/details-remove-summary-child-2-expected.txt:\n* LayoutTests/fast/lists/004-expected.txt:\n* LayoutTests/fast/lists/inline-before-content-after-list-marker-expected.txt:\n* LayoutTests/fast/repaint/list-marker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-no-summary4-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open-javascript-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open2-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-open4-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-replace-summary-child-expected.txt:\n* LayoutTests/platform/mac-wk2/fast/html/details-replace-text-expected.txt:\n* LayoutTests/platform/mac/fast/css-generated-content/details-summary-before-after-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-1-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-10-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-2-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-2-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-3-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-4-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-4-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-5-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-5-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-6-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-7-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-8-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-add-summary-9-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-marker-style-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-marker-style-mixed-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-no-summary1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-no-summary3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-open5-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-position-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-1-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-1-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-2-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-2-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-3-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-3-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-4-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-5-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-remove-summary-6-and-click-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-writing-mode-expected.txt:\n* LayoutTests/platform/mac/fast/html/details-writing-mode-mixed-expected.txt:\n* LayoutTests/platform/mac/fast/lists/008-expected.txt:\n* LayoutTests/platform/mac/fast/lists/008-vertical-expected.txt:\n* LayoutTests/platform/mac/fast/lists/009-expected.txt:\n* LayoutTests/platform/mac/fast/lists/009-vertical-expected.txt:\n* LayoutTests/platform/mac/fast/lists/li-br-expected.txt:\n* LayoutTests/platform/mac/fast/lists/markers-in-selection-expected.txt:\n* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:\n(WebCore::AccessibilityNodeObject::stitchGroups const):\n* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:\n(WebCore::AccessibilityRenderObject::textUnderElement const):\n* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:\n(WebCore::Layout::InlineFormattingUtils::isAtSoftWrapOpportunity const):\n* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:\n(WebCore::Layout::Line::appendText):\n(WebCore::Layout::Line::hasContentOrDecoration const):\n(WebCore::Layout::Line::Run::isListMarkerOrItsContent const):\n(WebCore::Layout::Line::appendTextFast):\n(WebCore::Layout::toLineRunType):\n* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:\n(WebCore::Layout::Line::hasContent const):\n(WebCore::Layout::Line::Run::isListMarker const):\n(WebCore::Layout::Line::Run::isListMarkerInside const): Deleted.\n(WebCore::Layout::Line::Run::isListMarkerOutside const): Deleted.\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:\n(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):\n(WebCore::Layout::LineBoxBuilder::adjustOutsideListMarkersPosition):\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:\n(WebCore::Layout::LineBuilder::handleInlineContent):\n(WebCore::Layout::LineBuilder::processLineBreakingResult):\n(WebCore::Layout::LineBuilder::placeInlineAndFloatContent):\n(WebCore::Layout::LineBuilder::handleBlockContent):\n* Source/WebCore/layout/formattingContexts/inline/InlineQuirks.cpp:\n(WebCore::Layout::InlineQuirks::shouldCollapseLineBoxHeight const):\n* Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.cpp:\n(WebCore::Layout::IntrinsicWidthHandler::computedIntrinsicWidthForConstraint):\n* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:\n(WebCore::LayoutIntegration::BoxGeometryUpdater::setListMarkerOffsetForMarkerOutside):\n(WebCore::LayoutIntegration::BoxGeometryUpdater::updateBoxGeometry):\n(WebCore::LayoutIntegration::BoxGeometryUpdater::updateBoxGeometryAfterIntegrationLayout):\n* Source/WebCore/layout/integration/LayoutIntegrationBoxTreeUpdater.cpp:\n(WebCore::LayoutIntegration::calculateListMarkerAttribute):\n(WebCore::LayoutIntegration::markerTextSynthesizesGlyph):\n* Source/WebCore/layout/layouttree/LayoutElementBox.h:\n(WebCore::Layout::ElementBox::isListMarkerImage const):\n(WebCore::Layout::ElementBox::isListMarkerOutside const): Deleted.\n* Source/WebCore/rendering/RenderElement.cpp:\n(WebCore::RenderElement::referenceBoxRect const):\n* Source/WebCore/style/computed/StyleComputedStyleBase+GettersInlines.h:\n(WebCore::Style::ComputedStyleBase::isListMarkerStyle const):\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/rendering/RenderBlock.cpp:\n(WebCore::RenderBlock::firstLetterAndContainer):\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::RenderListItem::computeMarkerStyle const):\n(WebCore::RenderListItem::updateValue):\n(WebCore::RenderListItem::updateMarkerContent):\n(WebCore::RenderListItem::styleDidChange):\n(WebCore::RenderListItem::excludedMarker const):\n(WebCore::RenderListItem::markerBox const):\n(WebCore::RenderListItem::usedCounterDirectivesChanged):\n(WebCore::RenderListItem::firstFormattedLineRootFor):\n* Source/WebCore/rendering/RenderListItem.h:\n* Source/WebCore/rendering/RenderListMarker.cpp:\n(WebCore::RenderListMarker::updateInlineMargins):\n(WebCore::RenderListMarker::isInside const): Deleted.\n(WebCore::listMarkerIsDisclosure):\n* Source/WebCore/rendering/RenderListMarker.h:\n* Source/WebCore/rendering/RenderObject.cpp:\n(WebCore::RenderObject::nodeForHitTest const):\n(WebCore::RenderObject::isExcludedMarker const):\n* Source/WebCore/rendering/line/BreakingContext.h:\n(WebCore::BreakingContext::commitAndUpdateLineBreakIfNeeded):\n* Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp:\n(WebCore::isExcludedMarker):\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:\n(WebCore::adjustStyleForInlineMarker):\n(WebCore::parentCandidateForMarker):\n(WebCore::RenderTreeBuilder::List::updateItemMarker):\n(WebCore::parentForInlineMarker):\n(WebCore::RenderTreeBuilder::List::buildInlineMarker):\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.h:\n* LayoutTests/css1/classification/list_style_position-expected.txt:\n* LayoutTests/css2.1/t1205-c565-list-pos-00-b-expected.txt:\n* LayoutTests/css2.1/t1205-c566-list-stl-00-e-ag-expected.txt:\n* LayoutTests/platform/glib/css1/classification/list_style-expected.txt:\n* LayoutTests/platform/glib/css1/classification/list_style_position-expected.txt:\n* LayoutTests/platform/glib/css2.1/t1205-c561-list-displ-00-b-expected.txt:\n* LayoutTests/platform/glib/css2.1/t1205-c565-list-pos-00-b-expected.txt:\n* LayoutTests/platform/glib/css2.1/t1205-c566-list-stl-00-e-ag-expected.txt:\n* LayoutTests/platform/glib/fast/css-generated-content/details-summary-before-after-expected.txt:\n* LayoutTests/platform/glib/fast/css/001-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-child-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-child-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-details-child-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-details-child-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-1-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-10-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-2-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-3-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-4-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-5-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-6-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-7-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-8-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-9-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-child-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-add-summary-child-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-marker-style-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-marker-style-mixed-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-nested-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-nested-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-no-summary2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-open6-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-child-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-child-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-1-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-2-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-3-and-click-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-4-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-5-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-6-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-child-1-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-remove-summary-child-2-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-writing-mode-expected.txt:\n* LayoutTests/platform/glib/fast/html/details-writing-mode-mixed-expected.txt:\n* LayoutTests/platform/glib/fast/lists/004-expected.txt:\n* LayoutTests/platform/glib/fast/lists/008-expected.txt:\n* LayoutTests/platform/glib/fast/lists/008-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/lists/009-expected.txt:\n* LayoutTests/platform/glib/fast/lists/009-vertical-expected.txt:\n* LayoutTests/platform/glib/fast/lists/li-br-expected.txt:\n* LayoutTests/platform/glib/fast/lists/markers-in-selection-expected.txt:\n* LayoutTests/platform/glib/fast/repaint/list-marker-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-1-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-10-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-2-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-3-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-4-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-5-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-6-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-7-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-8-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-add-summary-9-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-no-summary1-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-no-summary3-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-no-summary4-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open-javascript-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open1-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open2-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open3-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open4-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-open5-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-position-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-1-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-2-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-3-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-4-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-5-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-remove-summary-6-and-click-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-replace-summary-child-expected.txt:\n* LayoutTests/platform/gtk/fast/html/details-replace-text-expected.txt:\n* LayoutTests/platform/gtk/tables/mozilla/bugs/bug30692-expected.txt:\n* LayoutTests/platform/ios/css1/classification/list_style-expected.txt:\n* LayoutTests/platform/ios/css2.1/t1205-c561-list-displ-00-b-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-child-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-child-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-details-child-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-details-child-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-1-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-10-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-10-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-2-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-3-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-3-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-4-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-4-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-5-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-5-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-6-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-6-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-7-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-7-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-8-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-8-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-9-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-9-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-child-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-add-summary-child-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-marker-style-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-marker-style-mixed-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-nested-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-nested-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-no-summary1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-no-summary2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-no-summary3-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-open1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-open3-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-open5-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-open6-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-position-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-child-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-child-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-1-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-2-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-3-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-3-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-4-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-4-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-5-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-5-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-6-and-click-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-6-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-child-1-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-remove-summary-child-2-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-writing-mode-expected.txt:\n* LayoutTests/platform/ios/fast/html/details-writing-mode-mixed-expected.txt:\n* LayoutTests/platform/ios/fast/lists/008-expected.txt:\n* LayoutTests/platform/ios/fast/lists/008-vertical-expected.txt:\n* LayoutTests/platform/ios/fast/lists/009-expected.txt:\n* LayoutTests/platform/ios/fast/lists/009-vertical-expected.txt:\n* LayoutTests/platform/ios/fast/lists/li-br-expected.txt:\n* LayoutTests/platform/ios/fast/lists/markers-in-selection-expected.txt:\n* LayoutTests/platform/ios/tables/mozilla/bugs/bug30692-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-no-summary4-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-open-javascript-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-open2-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-open4-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-replace-summary-child-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/fast/html/details-replace-text-expected.txt:\n* LayoutTests/platform/mac-sequoia-wk2/tables/mozilla/bugs/bug30692-expected.txt:\n* LayoutTests/platform/mac-wk2/tables/mozilla/bugs/bug30692-expected.txt:\n* LayoutTests/platform/mac/css1/classification/list_style-expected.txt:\n* LayoutTests/platform/mac/css2.1/t1205-c561-list-displ-00-b-expected.txt:\n\nCanonical link: https://commits.webkit.org/320504@main",
      "email": "zalan@apple.com",
      "hash": "87c72505aec52b2072b1ead1caac9aaed6a02a49",
      "subject": "[list-marker] unicode-bidi and direction on ::marker have no effect on an inside marker"
    },
    "320505@main": {
      "author": "Alejandro G. Castro",
      "avatar": "https://www.gravatar.com/avatar/c8c6e17acbdf0549b05d6f7fc2c1c4dc?d=identicon\u0026s=64",
      "cl": "320505@main",
      "clUrl": "https://commits.webkit.org/320505@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323340\n\nReviewed by Adrian Perez de Castro.\n\n320146@main moved two includes behind USE(TEXTURE_MAPPER), and with them\nthe only declarations that two files were relying on when GBM is also\ndisabled. It broke the Android compilation.\n\n* Source/WebCore/platform/graphics/egl/BitmapTexture.h:\n* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.cpp:\n\nCanonical link: https://commits.webkit.org/320505@main",
      "email": "alex@igalia.com",
      "hash": "2ce849b5d2f2e55dbb9dffa1fd8f139bbf88a76b",
      "subject": "[GTK][WPE] REGRESSION(320146@main): build is broken with USE_TEXTURE_MAPPER=OFF and USE_GBM=OFF"
    },
    "320506@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320506@main",
      "clUrl": "https://commits.webkit.org/320506@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323360\nrdar://186603195\n\nReviewed by Chris Fleizach.\n\nbounds-for-range-multibyte-glyphs.html already captures the code unit span of a joined\nemoji and a variation-selector emoji, by asserting the rect boundsForRange returns for\neach. It never reads the string and never uses the index APIs, so what is new below is\nthe index round trip and the presence of the invisible characters themselves.\n\ntext-marker-index-regional-indicators.html:\nNo accessibility test contains a regional indicator. A flag is four code units and two\ncode points in one glyph, stressing surrogate pairs and cluster boundaries together.\n\ntext-marker-index-zwj-sequence.html:\nAsserts the zero width joiner survives into the accessibility text at its own index.\nThe bounds test shows an eleven code unit span is treated as one glyph but cannot show\nthe joiner is still in the string. Without it, an assistive technology reconstructing\nthe sequence from character offsets gets two unrelated emoji.\n\ntext-marker-index-variation-selector.html:\nSame for a variation selector, which is invisible and only changes how the preceding\ncharacter is drawn. Asserting its code point is the only way to tell it was preserved\nrather than folded into the character it modifies.\n\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-regional-indicators-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-regional-indicators.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-variation-selector-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-variation-selector.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-zwj-sequence-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-zwj-sequence.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-regional-indicators-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-regional-indicators.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-variation-selector-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-variation-selector.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-zwj-sequence-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-zwj-sequence.html: Added.\n\nCanonical link: https://commits.webkit.org/320506@main",
      "email": "tyler_w@apple.com",
      "hash": "9977e3c2b4c81fbf2aecf8b7762cb9bea1322b9c",
      "subject": "AX: Add layout tests for the text marker index space over emoji and invisible characters"
    },
    "320507@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320507@main",
      "clUrl": "https://commits.webkit.org/320507@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323362\nrdar://186603868\n\nReviewed by Chris Fleizach.\n\ntext-marker-index-mixed-direction.html:\ntext-marker-bidi-inline-cite.html already covers a dir=auto paragraph holding nested\ndir=rtl and dir=ltr runs, and asserts the extracted string and range length. It uses no\nindex API, so the round trip across the direction boundaries, and the offset of the\nembedded left-to-right run, are what this adds.\n\ntext-marker-index-rtl-attribute.html:\nSame gap for dir=rtl. Left-to-right words in a right-to-left paragraph are a distinct\ncase from right-to-left characters. The words reverse while the letters inside them do\nnot, and an index space built from drawn order would still contain the right characters.\n\ndynamic-rtl-children-order.html:\nNo accessibility test sets direction at runtime at all. Asserts the drawn order actually\nreverses before re-checking the reported order, so it cannot pass against a tree that\nnever updated.\n\ndynamic-rtl-string-content.html:\nLikewise. The text is replaced in the same turn as the flip, so a stale isolated-tree\nread cannot satisfy the assertion.\n\n* LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-children-order-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-children-order.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-string-content-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-string-content.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-mixed-direction-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-mixed-direction.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-rtl-attribute-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-rtl-attribute.html: Added.\n* LayoutTests/accessibility/mac/dynamic-rtl-children-order-expected.txt: Added.\n* LayoutTests/accessibility/mac/dynamic-rtl-children-order.html: Added.\n* LayoutTests/accessibility/mac/dynamic-rtl-string-content-expected.txt: Added.\n* LayoutTests/accessibility/mac/dynamic-rtl-string-content.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-mixed-direction-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-mixed-direction.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-rtl-attribute-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-rtl-attribute.html: Added.\n\nCanonical link: https://commits.webkit.org/320507@main",
      "email": "tyler_w@apple.com",
      "hash": "5eee8c0ae0310c78ad07f24b6532d9e10398bf75",
      "subject": "AX: Add layout tests for bidirectional text and runtime text direction changes"
    },
    "320508@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320508@main",
      "clUrl": "https://commits.webkit.org/320508@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323359\nrdar://186602375\n\nReviewed by Chris Fleizach.\n\nAXIndexForTextMarker and AXTextMarkerForIndex describe a character offset space, and\ncheckRoundTripAllTextMarkerIndicesWithinContainer measures two invariants over it:\n\n  1. Every index round-trips through a marker\n  2. The string from the container start to an index is as long as that index.\n\nExisting bidi and multibyte tests assert the extracted string but use no index API, so\nadd tests verifying index-based roundtrips work in these cases.\n\ntext-marker-index-hebrew.html:\ntext-marker-bidi-element-hebrew.html already asserts that mixed Hebrew and English\ncomes back in logical order, across six unicode-bidi values. It reads only\nstringForTextMarkerRange and boundsForRange, never the index APIs.\n\ntext-marker-index-combining-marks.html:\nNo accessibility test contains a combining mark at all. Two code units per grapheme\ncluster is where an index counting clusters would drift from one counting code units.\n\ntext-marker-index-indic.html:\nNo accessibility test contains Devanagari or Tamil. A vowel sign renders left of the\nconsonant it follows and a virama fuses two consonants, so glyph order and code unit\norder disagree, making it an interesting and novel test.\n\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-combining-marks-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-combining-marks.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-hebrew-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-hebrew.html: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-indic-expected.txt: Added.\n* LayoutTests/accessibility/isolated-tree/mac/text-marker-index-indic.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-combining-marks-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-combining-marks.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-hebrew-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-hebrew.html: Added.\n* LayoutTests/accessibility/mac/text-marker-index-indic-expected.txt: Added.\n* LayoutTests/accessibility/mac/text-marker-index-indic.html: Added.\n\nCanonical link: https://commits.webkit.org/320508@main",
      "email": "tyler_w@apple.com",
      "hash": "5e2f8ed9bc169adb88ca7adabf0528f00cf22868",
      "subject": "AX: Add layout tests for the text marker index space over non-Latin scripts"
    },
    "320509@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320509@main",
      "clUrl": "https://commits.webkit.org/320509@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323226\nrdar://problem/186472147\n\nReviewed by Antti Koivisto.\n\nAn inside marker is built as an anonymous inline box now, so this renderer is only ever created for\nlist-style-position: outside: the marker the list item excludes from its content and positions itself. Name it for\nwhat it is.\n\nrenderName() keeps returning \"RenderListMarker\" so that no expected results move; the name in the render tree dumps\nis what the marker is called in CSS terms, not the class name.\n\nNo change in behavior.\n\n* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:\n* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/accessibility/AXObjectCache.cpp:\n(WebCore::AXObjectCache::onTextRunsChanged):\n* Source/WebCore/accessibility/AXTextMarker.cpp:\n(WebCore::AXTextMarkerRange::toString const):\n* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:\n(WebCore::AccessibilityNodeObject::canHaveChildren const):\n(WebCore::AccessibilityNodeObject::stitchGroups const):\n(WebCore::AccessibilityNodeObject::stringValue const):\n* Source/WebCore/accessibility/AccessibilityObject.cpp:\n* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:\n(WebCore::AccessibilityRenderObject::parentObject const):\n(WebCore::AccessibilityRenderObject::textUnderElement const):\n(WebCore::AccessibilityRenderObject::stringValue const):\n(WebCore::AccessibilityRenderObject::boundingBoxRect const):\n(WebCore::AccessibilityRenderObject::computeIsIgnored const):\n(WebCore::AccessibilityRenderObject::listMarkerText const):\n(WebCore::AccessibilityRenderObject::determineAccessibilityRole):\n(WebCore::AccessibilityRenderObject::addChildren):\n* Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:\n(WebCore::AccessibilityObjectAtspi::textAttributes const):\n* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:\n(WebCore::LayoutIntegration::BoxGeometryUpdater::setListMarkerOffsetForMarkerOutside):\n(WebCore::LayoutIntegration::baselineForBox):\n(WebCore::LayoutIntegration::setIntegrationBaseline):\n(WebCore::LayoutIntegration::BoxGeometryUpdater::updateBoxGeometryAfterIntegrationLayout):\n(WebCore::LayoutIntegration::BoxGeometryUpdater::updateBoxGeometry):\n* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.h:\n* Source/WebCore/layout/integration/LayoutIntegrationBoxTreeUpdater.cpp:\n(WebCore::LayoutIntegration::elementAttributes):\n(WebCore::LayoutIntegration::calculateListMarkerAttribute):\n(WebCore::LayoutIntegration::BoxTreeUpdater::createLayoutBox):\n(WebCore::LayoutIntegration::BoxTreeUpdater::updateStyle):\n* Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp:\n(WebCore::LayoutIntegration::canUseForIntrinsicWidthComputation):\n* Source/WebCore/layout/integration/inline/InlineIteratorLineBox.cpp:\n(WebCore::InlineIterator::closestBoxForHorizontalPosition):\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:\n* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:\n(WebCore::ListItemExcludedMarkerScope::ListItemExcludedMarkerScope):\n* Source/WebCore/page/LocalFrameViewLayoutContext.h:\n* Source/WebCore/rendering/LegacyInlineIterator.h:\n(WebCore::LegacyInlineIterator::direction const):\n* Source/WebCore/rendering/OutlinePainter.cpp:\n(WebCore::OutlinePainter::collectFocusRingRectsForInline):\n* Source/WebCore/rendering/RenderBlock.cpp:\n* Source/WebCore/rendering/RenderBlockFlow.cpp:\n(WebCore::RenderBlockFlow::computeInlineIntrinsicLogicalWidths const):\n* Source/WebCore/rendering/RenderBox.cpp:\n(WebCore::RenderBox::lineHeight const):\n* Source/WebCore/rendering/RenderElementInlines.h:\n(WebCore::RenderElement::isAnonymousBlock const):\n* Source/WebCore/rendering/RenderInline.cpp:\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::RenderListItem::excludedMarker const):\n(WebCore::RenderListItem::markerBox const):\n(WebCore::RenderListItem::placeExcludedMarker):\n(WebCore::RenderListItem::excludedMarkersForContainer):\n* Source/WebCore/rendering/RenderListItem.h:\n* Source/WebCore/rendering/RenderObject.cpp:\n(WebCore::RenderObject::isExcludedMarker const):\n* Source/WebCore/rendering/RenderObject.h:\n(WebCore::RenderObject::isRenderListOutsideMarker const):\n(WebCore::RenderObject::isRenderListMarker const): Deleted.\n* Source/WebCore/rendering/RenderText.cpp:\n(WebCore::RenderText::setRenderedText):\n* Source/WebCore/rendering/RenderTreeAsText.cpp:\n(WebCore::RenderTreeAsText::writeRenderObject):\n(WebCore::write):\n(WebCore::markerTextForListItem):\n* Source/WebCore/rendering/TextAutoSizing.cpp:\n(WebCore::TextAutoSizingValue::adjustTextNodeSizes):\n* Source/WebCore/rendering/line/BreakingContext.h:\n(WebCore::BreakingContext::commitAndUpdateLineBreakIfNeeded):\n* Source/WebCore/rendering/updating/RenderTreeBuilder.h:\n* Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp:\n(WebCore::isExcludedMarker):\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:\n(WebCore::firstNonMarkerChild):\n(WebCore::parentCandidateForMarker):\n(WebCore::RenderTreeBuilder::List::updateItemMarker):\n(WebCore::RenderTreeBuilder::List::buildMarkerContentRenderers):\n* Source/WebCore/rendering/updating/RenderTreeBuilderList.h:\n* Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp:\n(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):\n* Source/WebCore/style/Styleable.cpp:\n* Source/WebCore/rendering/RenderListOutsideMarker.cpp: Renamed from Source/WebCore/rendering/RenderListMarker.cpp.\n(WebCore::RenderListOutsideMarker::RenderListOutsideMarker):\n(WebCore::RenderListOutsideMarker::willBeDestroyed):\n(WebCore::adjustedStyleDifference):\n(WebCore::RenderListOutsideMarker::styleWillChange):\n(WebCore::RenderListOutsideMarker::styleDidChange):\n(WebCore::RenderListOutsideMarker::isImage const):\n(WebCore::RenderListOutsideMarker::hasContentProperty const):\n(WebCore::RenderListOutsideMarker::textNeedsBidiResolution const):\n(WebCore::RenderListOutsideMarker::needsContentContainer const):\n(WebCore::RenderListOutsideMarker::contentContainer const):\n(WebCore::RenderListOutsideMarker::localSelectionRect):\n(WebCore::RenderListOutsideMarker::paint):\n(WebCore::RenderListOutsideMarker::parentBox):\n(WebCore::RenderListOutsideMarker::layout):\n(WebCore::RenderListOutsideMarker::layoutContentContainer):\n(WebCore::RenderListOutsideMarker::imageChanged):\n(WebCore::RenderListOutsideMarker::updateInlineMarginsAndContent):\n(WebCore::RenderListOutsideMarker::updateContent):\n(WebCore::RenderListOutsideMarker::updateContentContainerText):\n(WebCore::RenderListOutsideMarker::computeIntrinsicLogicalWidthContributions):\n(WebCore::RenderListOutsideMarker::updateInlineMargins):\n(WebCore::RenderListOutsideMarker::isDisclosureMarker const):\n(WebCore::RenderListOutsideMarker::listItem const):\n(WebCore::RenderListOutsideMarker::setExcludedPosition):\n(WebCore::RenderListOutsideMarker::invalidateExcludedMarkerContainer):\n(WebCore::RenderListOutsideMarker::nodeForHitTest const):\n(WebCore::RenderListOutsideMarker::relativeMarkerRect):\n(WebCore::RenderListOutsideMarker::selectionRectForRepaint):\n(WebCore::RenderListOutsideMarker::counterStyle const):\n(WebCore::RenderListOutsideMarker::synthesizesGlyph const):\n(WebCore::RenderListOutsideMarker::layoutBoundForTextContent const):\n* Source/WebCore/rendering/RenderListOutsideMarker.h: Renamed from Source/WebCore/rendering/RenderListMarker.h.\n\nCanonical link: https://commits.webkit.org/320509@main",
      "email": "zalan@apple.com",
      "hash": "10ace68e7cd8d81ef2da87b682e4df3ca7e67637",
      "subject": "[list-marker] Rename RenderListMarker to RenderListOutsideMarker"
    },
    "320510@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320510@main",
      "clUrl": "https://commits.webkit.org/320510@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323405\nrdar://186640624\n\nReviewed by Gerald Squelart.\n\nboundingNeighbors() classifies the bottom row with\n\n    pixelIndex \u003e (size.height() - 1) * size.width()\n\nbut the last row spans indices [(H-1)*W, H*W-1], so the test should be\n\"\u003e=\". With \"\u003e\", the bottom-left pixel (pixelIndex == (H-1)*W) is not\nrecognized as being in the bottom row, and consequently not recognized\nas the bottom-left corner. The top-row check on the line above already\nuses the correct \"\u003c\" form; this makes the bottom-row check symmetric.\n\nThis has no observable effect on output: the misclassified pixel falls\ninto the left-column branch, whose below-neighbor is out of bounds, so\nareColorsRelated() returns false and the bounding colors stay at their\ndefaults -- identical to what the corner early-return produces. It also\ndoes not trip the isIndexInBounds() assertion, because the out-of-bounds\nbelow-index equals bufferSize exactly and the \"+ 3\" probe is\nshort-circuited. This is a correctness/clarity fix; no test is added\nbecause the pixel output is byte-for-byte unchanged and any test would\npass without the fix.\n\n* Source/WebCore/html/CanvasNoiseInjection.cpp:\n(WebCore::boundingNeighbors):\n\nCanonical link: https://commits.webkit.org/320510@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "3c0232a5d33e17eeec3db8c24e5f7bf171cf8742",
      "subject": "CanvasNoiseInjection misclassifies the bottom-left pixel due to an off-by-one in the bottom-row check"
    },
    "320511@main": {
      "author": "Adrian Taylor",
      "avatar": "https://www.gravatar.com/avatar/d2acb8ad2e2670ff74ae0d65fb27014c?d=identicon\u0026s=64",
      "cl": "320511@main",
      "clUrl": "https://commits.webkit.org/320511@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323430\nrdar://186653895\n\nReviewed by Mike Wyrzykowski.\n\nIn the cmake build, previously ENABLE_WEBGPU_SWIFT was only being defined for\nthe Swift clang importer, not for regular C++ clang compiles. This currently\ncaused no problems, but if we ever added a type whose layout depended on that\nifdef, then Swift and C++ would see different offsets/layouts in that type.\nPromote ENABLE_WEBGPU_SWIFT to being a normal option.\n\nNote that in theory this could harm build performance by causing us to build\nmultiple copies of PCM files (per the comment just above the change in\nWebKitMacros.cmake). In practice, we already build several PCMs for many modules\nso the rationale in that comment no longer really holds. A follow-up commit\nwill attempt to reduce that down again to improve build speed.\n\nCanonical link: https://commits.webkit.org/320511@main",
      "email": "adrian_taylor@apple.com",
      "hash": "56d21bcfd6717fd472ee2ba7d73776e6a9eb6e0d",
      "subject": "[cmake] Set ENABLE_WEBGPU_SWIFT correctly"
    },
    "320512@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320512@main",
      "clUrl": "https://commits.webkit.org/320512@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323404\nrdar://186639923\n\nReviewed by Tim Nguyen.\n\nThe ScriptExecutionContext overload of parseColor() constructed an\nidentical CSSParserContext(HTMLStandardMode) twice: once for the\nparseColorRawSimple() fast path, and again for parseColorRawGeneral()\non the fall-through slow path. CSSParserContext is a heavy struct, so\nthis was a redundant build whenever the simple parse failed.\n\nHoist it into a single local reused by both calls, matching the sibling\nCanvasBase overload which already binds the context once.\n\n* Source/WebCore/html/canvas/CanvasStyle.cpp:\n(WebCore::parseColor):\n\nCanonical link: https://commits.webkit.org/320512@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "1bf94f1c0c462bef841fca9877c167bf4bc769b3",
      "subject": "[Canvas] parseColor() constructs CSSParserContext(HTMLStandardMode) twice"
    },
    "320513@main": {
      "author": "Zak Ridouh",
      "avatar": "https://www.gravatar.com/avatar/d9b65ef530b9cbbfc6dff1ca158faace?d=identicon\u0026s=64",
      "cl": "320513@main",
      "clUrl": "https://commits.webkit.org/320513@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322203\nrdar://185442169\n\nReviewed by David Kilzer.\n\nWebPage::dumpHistoryForTesting() and Internals::getReferencedFilePaths()\ndereferenced a nullable history item without checking it.\n\nIn dumpHistoryForTesting(), itemAtIndex() takes an offset relative to the\ncurrent item, so the range of valid offsets is [-backCount(), forwardCount()]\ninclusive. backCount() and forwardCount() are served from a cached value in\nWebBackForwardListProxy, while itemAtIndex() is a separate synchronous message\nto the UI process, so the bounds and the items are sampled at different times\nand itemAtIndex() can return null at an offset the bounds include. Skip those\nentries. A page with no current item at all has nothing to dump, so return\nearly: WebKitTestRunner dumps every page it knows about, and a page created by\nwindow.open() has no current item until its initial load commits.\n\nIn getReferencedFilePaths(), only the frame was checked.\nHistoryController::currentItem() is null until a load commits, and\nsaveDocumentAndScrollState() does not create an item.\n\nBoth are only reachable from test infrastructure, so this replaces a WebContent\nprocess crash with a skipped entry.\n\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::getReferencedFilePaths const):\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::dumpHistoryForTesting):\n\nCanonical link: https://commits.webkit.org/320513@main",
      "email": "zakr@apple.com",
      "hash": "2a20415140e222bcb09da19d5f36494c26c4d715",
      "subject": "Null-check history items in history dumping testing code"
    },
    "320514@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320514@main",
      "clUrl": "https://commits.webkit.org/320514@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323287\n\u003crdar://problem/186614663\u003e\n\nReviewed by Antti Koivisto.\n\nIn quirks mode the line-height quirk applies to line break boxes too, since a \u003cbr\u003e has no text content.\n310839@main made a \u003cbr\u003e with a non-normal line-height stretch the line box unconditionally, so a line-height\ninherited from an ancestor started stretching lines that have other content on them. Now the \u003cbr\u003e only\nstretches the line box when there's nothing else on the line to do it.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/br-line-height-inherited-quirks-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/br-line-height-inherited-quirks-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/br-line-height-inherited-quirks.html: Added.\n* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:\n(WebCore::Layout::InlineFormattingUtils::inlineLevelBoxAffectsLineBox const):\n* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h:\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp:\n(WebCore::Layout::LineBoxVerticalAligner::computeLineBoxLogicalHeight const):\n(WebCore::Layout::LineBoxVerticalAligner::computeRootInlineBoxVerticalPosition const):\n(WebCore::Layout::LineBoxVerticalAligner::layoutBoundsForInlineBoxSubtree const):\n(WebCore::Layout::LineBoxVerticalAligner::alignInlineLevelBoxes const):\n* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxVerticalAligner.h:\n* Source/WebCore/layout/formattingContexts/inline/InlineQuirks.cpp:\n(WebCore::Layout::InlineQuirks::lineBreakBoxIsOnlyContentOnLine):\n(WebCore::Layout::InlineQuirks::lineBreakBoxAffectsParentInlineBox):\n* Source/WebCore/layout/formattingContexts/inline/InlineQuirks.h:\n\nCanonical link: https://commits.webkit.org/320514@main",
      "email": "zalan@apple.com",
      "hash": "5204a1a34fa4baaf679a4f39ae0895f393fae67a",
      "subject": "REGRESSION (Safari 27): line-height quirk not applied inside inline-block"
    },
    "320516@main": {
      "author": "Sergey Rubanov",
      "avatar": "https://www.gravatar.com/avatar/d04164fa4e06ce85533085f24c766e17?d=identicon\u0026s=64",
      "cl": "320516@main",
      "clUrl": "https://commits.webkit.org/320516@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323374\n\nReviewed by Yusuke Suzuki.\n\nThe wasm-to-wasm restore-frame copy loop does loadPair64, storePair64\nat base minus restoreFrameSize, then addPtr 16. ARM64 already has\nloadPair64(PostIndexAddress). Fold the increment into the load and\nstore at the adjusted negative offset. Other architectures keep the\nadd.\n\n* Source/JavaScriptCore/wasm/WasmIRGeneratorHelpers.h:\n\nCanonical link: https://commits.webkit.org/320516@main",
      "email": "chi187@gmail.com",
      "hash": "0ddad2a1c101e319e5a7fcc89f59855438a3e646",
      "subject": "[JSC][Wasm] Use ARM64 post-index in the restore-frame copy"
    },
    "320517@main": {
      "author": "Antti Koivisto",
      "avatar": "https://www.gravatar.com/avatar/07965eed55d4b41ea2b394599b17f7cd?d=identicon\u0026s=64",
      "cl": "320517@main",
      "clUrl": "https://commits.webkit.org/320517@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323413\nrdar://186644511\n\nReviewed by Sam Weinig.\n\nIt is almost just CSSParserContext.\n\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/WebCoreJSBindingsPrefix.h:\n* Source/WebCore/css/MediaList.h:\n* Source/WebCore/css/MediaQueryMatcher.cpp:\n* Source/WebCore/css/MediaQueryParserContext.cpp: Removed.\n* Source/WebCore/css/MediaQueryParserContext.h: Removed.\n* Source/WebCore/css/StyleRuleImport.cpp:\n* Source/WebCore/css/parser/CSSParser.cpp:\n* Source/WebCore/css/parser/SizesAttributeParser.cpp:\n* Source/WebCore/css/query/ContainerQueryParser.cpp:\n(WebCore::CQ::consumeStyleRangeFeature):\n(WebCore::CQ::consumeStyleFeature):\n(WebCore::CQ::ContainerQueryParser::consumeContainerQuery):\n(WebCore::CQ::ContainerQueryParser::consumeContainerCondition):\n(WebCore::CQ::ContainerQueryParser::schemaForFeatureName):\n(WebCore::CQ::ContainerQueryParser::consumeAndValidateFeature):\n* Source/WebCore/css/query/ContainerQueryParser.h:\n* Source/WebCore/css/query/GenericMediaQueryParser.cpp:\n(WebCore::MQ::FeatureParser::consumeFeature):\n(WebCore::MQ::FeatureParser::consumeCustomPropertyValue):\n(WebCore::MQ::consumeValue):\n(WebCore::MQ::FeatureParser::consumeBooleanOrPlainFeature):\n(WebCore::MQ::FeatureParser::consumeRangeFeature):\n\nPass EnumSet of parsing options to FeatureParser functions to replace treeCountingFunctionsAllowed\nbit in MediaQueryParserContext.\n\n* Source/WebCore/css/query/GenericMediaQueryParser.h:\n(WebCore::MQ::GenericMediaQueryParser::consumeCondition):\n(WebCore::MQ::GenericMediaQueryParser\u003cConcreteParser\u003e::consumeCondition):\n(WebCore::MQ::GenericMediaQueryParser\u003cConcreteParser\u003e::consumeQueryInParens):\n(WebCore::MQ::GenericMediaQueryParser\u003cConcreteParser\u003e::consumeAndValidateFeature):\n(WebCore::MQ::GenericMediaQueryParser\u003cConcreteParser\u003e::validateFeature):\n(WebCore::MQ::GenericMediaQueryParser\u003cConcreteParser\u003e::schemaForFeatureName):\n* Source/WebCore/css/query/MediaQueryParser.h:\n* Source/WebCore/dom/InlineStyleSheetOwner.cpp:\n* Source/WebCore/dom/ProcessingInstruction.cpp:\n* Source/WebCore/html/HTMLLinkElement.cpp:\n(WebCore::HTMLLinkElement::initializeStyleSheet):\n(WebCore::HTMLLinkElement::setCSSStyleSheet):\n* Source/WebCore/html/HTMLLinkElement.h:\n* Source/WebCore/html/HTMLMetaElement.cpp:\n* Source/WebCore/html/HTMLSourceElement.cpp:\n* Source/WebCore/html/HTMLStyleElement.cpp:\n* Source/WebCore/style/IfConditionEvaluator.cpp:\n(WebCore::Style::IfConditionEvaluator::evaluate):\n\nCanonical link: https://commits.webkit.org/320517@main",
      "email": "antti@apple.com",
      "hash": "67c4317c42825ceaa90d2ed409a5ccc00e7b0137",
      "subject": "Remove MediaQueryParserContext"
    },
    "320518@main": {
      "author": "Brent Fulgham",
      "avatar": "https://www.gravatar.com/avatar/c6989a65afef0d015b55c65406e37ccc?d=identicon\u0026s=64",
      "cl": "320518@main",
      "clUrl": "https://commits.webkit.org/320518@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323386\nrdar://186615759\n\nReviewed by Tim Nguyen.\n\nEach frame's injected WebAutomationSessionProxy.js keeps its own map of node handles.\n_nodeForIdentifier() throws NodeNotFound whenever a handle is absent from that map, which\nconflates two different situations:\n(1) the node was in this frame and has since been detached (a stale handle)\n(2) the node was never in this frame, because it belongs to a different frame or window\n\nCommandResult.cpp maps NodeNotFound to StaleElementReference, so both report stale element\nreference. Per the spec, the second case is no such element (or no such shadow root for a\nshadow root reference).\n\n_clearStaleNodes() already knows the difference: it evicts only those handles whose node\nis no longer rooted in this document. Recording what it evicts lets _nodeForIdentifier()\nthrow a distinct StaleNode error for the detached case and keep NodeNotFound for the\nforeign one.\n\nTests: webdriver/tests/classic/execute_script/arguments.py\n       webdriver/tests/classic/execute_async_script/arguments.py\n\n* Source/WebDriver/CommandResult.cpp:\n(WebDriver::CommandResult::CommandResult):\n* Source/WebKit/UIProcess/Automation/Automation.json:\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:\n(WebKit::evaluateJavaScriptCallback):\n* Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:\n(let.AutomationSessionProxy):\n(let.AutomationSessionProxy.prototype._nodeForIdentifier):\n(let.AutomationSessionProxy.prototype._clearStaleNodes):\n\nCanonical link: https://commits.webkit.org/320518@main",
      "email": "bfulgham@apple.com",
      "hash": "f56eb24b31957067cad7f5fec90ee8f8f486f090",
      "subject": "WebDriver reports \"stale element reference\" for a node reference from a different browsing context"
    },
    "320519@main": {
      "author": "Alejandro G. Castro",
      "avatar": "https://www.gravatar.com/avatar/c8c6e17acbdf0549b05d6f7fc2c1c4dc?d=identicon\u0026s=64",
      "cl": "320519@main",
      "clUrl": "https://commits.webkit.org/320519@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323435\n\nReviewed by Carlos Garcia Campos.\n\nTools/TestWebKitAPI/Tests/IPC has 244 tests covering Connection,\nStreamClientConnection, StreamServerConnection, StreamConnectionWorkQueue,\nStreamConnectionBuffer and IPC::Event/Signal, and none of them are built on any\nLinux port. A change to the IPC layer can only be validated through layout\ntests, we are trying to check the semaphore implementation for the\nGPUProcess, we need more validation activating these tests.\n\nThree tests assert Cocoa specific semantics and are guarded, each where the\nbehavior actually differs rather than at the file level:\n\n- IPCEventTests.SignalDoesNotBlockWhenNotWaitedFor expects the Event to hold one\n  signal and drop the rest. A Mach notification port coalesces; the non-Cocoa\n  implementation is a counting semaphore pair, so it keeps them. Only that one\n  assertion is Cocoa only, and the remaining signals are drained so the rest of\n  the test still means something.\n- EventTestABBA.InterruptOnDestruct expects destroying the Signal to interrupt a\n  wait. That is a property of the Mach send and receive right pair, and\n  IPCEvent.h already carries a FIXME saying the non-Cocoa implementation does\n  not have it. IPCEventTests.cpp already guards the equivalent tests; this one\n  was missed because it could not be run. Without the guard it waits forever\n  rather than failing.\n- ConnectionTestABBA.UnopenedAAndInvalidateDoesNotDeliverBDidClose expects a\n  peer not to be told when an unopened connection is invalidated. Invalidating\n  it closes the socket, so a peer on Unix domain sockets sees the end of file\n  and reports didClose, where a Mach based peer is never told.\n\nThe result is 244 tests passing on WPE. Nothing changes for the Apple ports:\nevery guarded test stays inside its #if PLATFORM(COCOA), and no non-test code is\ntouched.\n\n* Tools/TestWebKitAPI/CMakeLists.txt:\n* Tools/TestWebKitAPI/PlatformWPE.cmake:\n* Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp:\n* Tools/TestWebKitAPI/Tests/IPC/EventTests.cpp:\n* Tools/TestWebKitAPI/Tests/IPC/IPCEventTests.cpp:\n\nCanonical link: https://commits.webkit.org/320519@main",
      "email": "alex@igalia.com",
      "hash": "9f7bc0710176d1924e73f6d1c2ed00262b6f81be",
      "subject": "[GTK][WPE] Build and run the IPC API tests on Linux"
    },
    "320520@main": {
      "author": "Kristian Monsen",
      "avatar": "https://www.gravatar.com/avatar/d9b02ca94d143b7dd6118be4dbc4aa06?d=identicon\u0026s=64",
      "cl": "320520@main",
      "clUrl": "https://commits.webkit.org/320520@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323282\nrdar://186254356\n\nReviewed by Youenn Fablet.\n\nNetworkRTCProvider::createUDPSocket on Cocoa would crash when passed a socket address with a\nhostname longer than 1023 characters. nw_endpoint_create_host_with_numeric_port cannot represent\nsuch a hostname and returns null, so nw_endpoint_get_hostname returns null, and constructing a\nwebrtc::SocketAddress from it traps in the std::string_view constructor's libc++ hardening check.\n\nThe fix rejects addresses whose hostname cannot be a valid DNS name, alongside the existing empty\naddress check, and notifies the caller with signalSocketIsClosed instead of crashing.\n\nTest: ipc/webrtc-create-socket-long-hostname-crash.html\n\n* LayoutTests/ipc/webrtc-create-socket-long-hostname-crash-expected.txt: Added.\n* LayoutTests/ipc/webrtc-create-socket-long-hostname-crash.html: Added.\n* Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:\n(WebKit::isInvalidRTCAddress):\n(WebKit::NetworkRTCProvider::sendToSocket):\n(WebKit::NetworkRTCProvider::createUDPSocket):\n(WebKit::NetworkRTCProvider::createClientTCPSocket):\n(WebKit::isEmptyRTCAddress): Deleted.\n* Source/WebKit/NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:\n(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):\n\nCanonical link: https://commits.webkit.org/320520@main",
      "email": "k_monsen@apple.com",
      "hash": "4a2069dce8984504a6eb97526a135c90166f2467",
      "subject": "Reject WebRTC socket creation with overlong hostname to fix crash"
    },
    "320521@main": {
      "author": "Anand Srinivasan",
      "avatar": "https://www.gravatar.com/avatar/84643a20c269974c2df6681742daf0a4?d=identicon\u0026s=64",
      "cl": "320521@main",
      "clUrl": "https://commits.webkit.org/320521@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=313499\nrdar://173777534\n\nReviewed by Yusuke Suzuki.\n\nWhen deleteAllCode runs while an async generator is suspended, the generator\nbody's CodeBlock is cleared and later re-created from re-parsed source. The\nnew CodeBlock's constant pool gets a fresh SymbolTable clone with fresh\nWatchpointSets, but the suspended activation still references the original.\nA subsequent ResolvedClosureVar put_to_scope on the new CodeBlock fires\ntouch() against the fresh clone's WatchpointSet, which the DFG is not\nwatching, so DFG code that constant-folded the captured variable never\ndeoptimizes and returns stale values.\n\nTreat ResolvedClosureVar writes inside suspendable bodies the same way\nClosureVar writes are already treated: invalidate the WatchpointSet at\nlink time. Sibling closures using ClosureVar already pay this cost;\nextending it to the declaring function eliminates the only remaining\nruntime path that relies on SymbolTable identity across re-link.\n\nTests: JSTests/stress/watchpoint-async-generator-code-deletion.js\n       JSTests/stress/watchpoint-closure-not-affected.js\n\n* JSTests/stress/watchpoint-async-generator-code-deletion.js: Added.\n(async sleepAsync):\n(async main.opt):\n(async main):\n* JSTests/stress/watchpoint-closure-not-affected.js: Added.\n(async sleepAsync):\n(async test.):\n(async test.obj):\n* Source/JavaScriptCore/bytecode/CodeBlock.cpp:\n(JSC::CodeBlock::finishCreation):\n\nOriginally-landed-as: 305413.1026@safari-7624.5-branch (1af72a6f5454). rdar://185366656\nCanonical link: https://commits.webkit.org/320521@main",
      "email": "anand_srinivasan@apple.com",
      "hash": "e6507c8f6aa83fb37b02d3c4ceaf7e4f4eb661d3",
      "subject": "Pre-invalidate captured-variable WatchpointSets in generator and async function bodies"
    },
    "320522@main": {
      "author": "Brady Eidson",
      "avatar": "https://www.gravatar.com/avatar/31bed81d6d8ef517f93b30add03f5651?d=identicon\u0026s=64",
      "cl": "320522@main",
      "clUrl": "https://commits.webkit.org/320522@main",
      "description": "rdar://174287004\n\nReviewed by Chris Dumez.\n\nWe mean for app provided custom URL schemes to participate in CORS, but our implementation had a few holes.\n- The network process was never informed of the custom scheme registrations\n- Some types of requests that would never hit the network process skipped needed checks in the web process.\n\nA lot of care was taken to make sure app-provided content still works with custom schemes as it always had.\n\nThis patch makes those changes and tests them.\n\nTests: Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm\n       Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm\n       Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm\n\n* Source/WebCore/loader/DocumentThreadableLoader.cpp:\n(WebCore::DocumentThreadableLoader::loadRequest):\n* Source/WebCore/loader/cache/CachedResourceLoader.cpp:\n(WebCore::CachedResourceLoader::canRequest):\n(WebCore::CachedResourceLoader::canRequestAfterRedirection const):\n(WebCore::CachedResourceLoader::isNoCorsCrossOriginRequestToURLSchemeHandler const):\n* Source/WebCore/loader/cache/CachedResourceLoader.h:\n* Source/WebCore/platform/LegacySchemeRegistry.cpp:\n(WebCore::LegacySchemeRegistry::isBuiltInWebKitHandledScheme):\n(WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):\n* Source/WebCore/platform/LegacySchemeRegistry.h:\n* Source/WebKit/NetworkProcess/NetworkProcess.h:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::registerURLSchemeHandler):\n* Source/WebKit/WebProcess/WebProcess.cpp:\n(WebKit::WebProcess::registerURLSchemeAsCORSEnabled):\n* Source/WebKit/WebProcess/WebProcess.h:\n* Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm:\n(TestWebKitAPI::(WebArchive, CreateCustomScheme)):\n* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:\n(TEST(URLSchemeHandler, BasicWithHTTPS)):\n((URLSchemeHandler, DisableCORSCanvas)):\n((URLSchemeHandler, SameSchemeSubresourcesAllowed)):\n((URLSchemeHandler, CrossOriginNoCorsSubresourcesBlocked)):\n((URLSchemeHandler, CrossOriginIframeCORSEnforcementForCustomScheme)):\n* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:\n\nOriginally-landed-as: 305413.959@safari-7624-branch (1011610c6800). rdar://184744641\nCanonical link: https://commits.webkit.org/320522@main",
      "email": "beidson@apple.com",
      "hash": "f2a07be9fb7478e9b44a6ed50a7b9f07b8c793b1",
      "subject": "WKWebView does not enforce CORS response header validation for apps' custom schemes after registerURLSchemeAsCORSEnabled()"
    },
    "320523@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "320523@main",
      "clUrl": "https://commits.webkit.org/320523@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323397\nrdar://186483543\n\nReviewed by Abrar Rahman Protyasha.\n\nThe stale node resolution heuristic (for Safari MCP, Automatically Fix Passwords, etc.) currently\nallows agents to interact with stale node `uid`s, as long as the stale node `uid` can be mapped to a\nnode in the DOM that appeared in a later extraction with matching self-and-surrounding context. This\nis achieved by maintaining a sliding window of recent text extraction results on the web view, such\nthat we're able to both:\n\n1.  Detect when the agent tries to interact with a stale `uid` that no longer corresponds to\n    anything in the current page.\n\n2.  Check if anything in the later text extraction looks (nearly) identical to the old context\n    (ignoring differences in `uid` and some other transient attributes), and instead of failing,\n    handle the interaction as if the agent tried to interact with that newer node `uid`.\n\nThis is especially crucial to keep weaker models from consistently failing to issue valid tool calls\nwhen reasoning about long-horizon tasks, if it tries to interact with stale nodes. However, this\nmechanism currently doesn't check that this newer resolved node isn't (itself) stale; as a result,\nthe interaction result and description can end up confusing agents even further (\"node uid `X` was\nstale, so we resolved it to `Y`\", followed by \"Failed to interact with `Y` because `Y` was stale\").\n\nTo fix this, we add one final sanity check to ensure that the node we end up resolving the stale uid\nto isn't also stale. `resolve()` now returns the remapping candidates in order of preference, and we\nask the web process for the first one that's still connected before committing to it. If none of\nthem are, we report the original failure as a stale uid and tell the agent to re-extract the page\nrather than interacting with a node we already know is gone.\n\nTest:   TextExtractionTests.InteractionDebugDescriptionWithUnresolvableNodeIdentifier\n        TextExtractionTests.InteractionDebugDescriptionWithoutTargetElement\n        TextExtractionTests.InteractionReportsStaleNodeWhenRemapCandidateIsAlsoStale\n\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::interactionDescription):\n* Source/WebCore/page/text-extraction/TextExtractionTypes.h:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView+TextExtraction.mm:\n(noteForRemappedStaleNode):\n(findFirstConnectedRemapCandidate):\n(-[WKWebView _performInteraction:inFrame:actionType:staleNodeResolution:completionHandler:]):\n(-[WKWebView _retryInteractionWithConnectedRemapCandidate:actionType:requestedNodeIdentifier:remapCandidates:failureDescription:completionHandler:]):\n(-[WKWebView _describeInteraction:completionHandler:]):\n(-[WKWebView _describeInteraction:inFrame:staleNodeResolution:completionHandler:]):\n(-[WKWebView _retryDescribingInteractionWithConnectedRemapCandidate:requestedNodeIdentifier:remapCandidates:completionHandler:]):\n(-[WKWebView _performInteraction:inFrame:actionType:nodeIdentifier:staleNodeNote:shouldResolveStaleNodeIdentifier:completionHandler:]): Deleted.\n(-[WKWebView _describeInteraction:inFrame:nodeIdentifier:staleNodeNote:shouldResolveStaleNodeIdentifier:completionHandler:]): Deleted.\n* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:\n(-[WKWebView _performInteraction:completionHandler:]):\n* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:\n* Source/WebKit/UIProcess/TextExtractionCache.cpp:\n(WebKit::TextExtractionCache::resolve const):\n* Source/WebKit/UIProcess/TextExtractionCache.h:\n(WebKit::StaleNodeResolutionState::didRemap const):\n* Source/WebKit/UIProcess/WebFrameProxy.cpp:\n(WebKit::WebFrameProxy::findFirstConnectedNode):\n* Source/WebKit/UIProcess/WebFrameProxy.h:\n* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:\n(WebKit::WebFrame::describeTextExtractionInteraction):\n(WebKit::WebFrame::findFirstConnectedNode):\n* Source/WebKit/WebProcess/WebPage/WebFrame.h:\n* Source/WebKit/WebProcess/WebPage/WebFrame.messages.in:\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/TextExtractionTests.mm:\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionDebugDescriptionWithStaleNodeIdentifier)):\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionDebugDescriptionWithoutTargetElement)):\n(TestWebKitAPI::TEST(TextExtractionTests, InteractionReportsStaleNodeWhenRemapCandidateIsAlsoStale)):\n\nCanonical link: https://commits.webkit.org/320523@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "1207e682053fff75cd104d5ae8a02f138c50f72a",
      "subject": "[Text Extraction] Stale node UID resolution heuristic should surface failure in the case where the resolved node is stale"
    },
    "320524@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320524@main",
      "clUrl": "https://commits.webkit.org/320524@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323401\nrdar://186636105\n\nReviewed by Youenn Fablet.\n\nDOMCache::remove() and DOMCache::keys() called requestFromInfo() without the\nrequestValidationFailed out-parameter and resolved the promise with an empty\nresult (false / an empty array) on any exception. As a result a genuine\nTypeError thrown while constructing the Request from a string — e.g. a URL\nthat is invalid or contains credentials — was silently turned into an empty\nresolve instead of rejecting the promise.\n\nThe Cache specification requires the exception to propagate. For\nCache.delete() [1]:\n\n    \"Else if request is a string, then:\n     Set r to the associated request of the result of invoking the initial\n     value of Request as constructor with request as its argument. If this\n     throws an exception, return a promise rejected with that exception.\"\n\nand identically for Cache.keys() [2]:\n\n    \"Else if request is a string, then:\n     Set r to the associated request of the result of invoking the initial\n     value of Request as constructor with request as its argument. If this\n     throws an exception, return a promise rejected with that exception.\"\n\nOnly a Request object whose method is not `GET` (without ignoreMethod) resolves\nwith an empty result. doMatch() and matchAll() already distinguish these two\ncases via the requestValidationFailed bool; make remove() and keys() do the\nsame. Chrome and Firefox already reject in this case.\n\n[1] https://w3c.github.io/ServiceWorker/#cache-delete\n[2] https://w3c.github.io/ServiceWorker/#cache-keys\n\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-delete.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-delete.https.any.js:\n(cache_test):\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-delete.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-delete.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-delete.https.any.worker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-keys.https.any-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-keys.https.any.js:\n(cache_test):\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-keys.https.any.serviceworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-keys.https.any.sharedworker-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/cache-keys.https.any.worker-expected.txt:\n* Source/WebCore/Modules/cache/DOMCache.cpp:\n(WebCore::DOMCache::remove):\n(WebCore::DOMCache::keys):\n\nCanonical link: https://commits.webkit.org/320524@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "946a6c01843cc7da0b446fffbae6c9b1c152a303",
      "subject": "Cache.delete() and Cache.keys() swallow exceptions thrown while constructing a Request from a URL string"
    },
    "320525@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "320525@main",
      "clUrl": "https://commits.webkit.org/320525@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322932\nrdar://186193259\n\nReviewed by Wenson Hsieh.\n\nDecode numbers and strings and optionals too!\n\nTest: Tools/TestWebKitAPI/Tests/WebKit/WebPage/JavaScriptEvaluationTests.swift\n\n* Source/WebKit/Shared/JavaScriptEvaluationCodableValue.swift:\n* Source/WebKit/Shared/JavaScriptEvaluationGraphDecoder.swift:\n(JavaScriptEvaluationGraphDecoder.decode(_:)):\n(JavaScriptEvaluationGraphDecoder.codableValue() throws(CodingError.Decoding:)):\n(JavaScriptEvaluationGraphDecoder.decodeNil() throws(CodingError.Decoding:)):\n(JavaScriptEvaluationGraphDecoder.decodeOptional(_:)):\n* Source/WebKit/Shared/JavaScriptEvaluationResultCxxInteropSupport.h:\n(WebKit::CxxInteropSupport::alternativeForVariant):\n* Tools/TestWebKitAPI/Tests/WebKit/WebPage/JavaScriptEvaluationTests.swift:\n(JavaScriptEvaluationTests.decodingBool):\n(JavaScriptEvaluationTests.decodingDouble):\n(JavaScriptEvaluationTests.decodingFloat):\n(JavaScriptEvaluationTests.decodingInt):\n(JavaScriptEvaluationTests.decodingSignedIntegers):\n(JavaScriptEvaluationTests.decodingUnsignedIntegers):\n(JavaScriptEvaluationTests.decodingString):\n(JavaScriptEvaluationTests.decodingNonASCIIString):\n(JavaScriptEvaluationTests.decodingOptional):\n(JavaScriptEvaluationTests.evaluateBool): Deleted.\n\nCanonical link: https://commits.webkit.org/320525@main",
      "email": "richard_robinson2@apple.com",
      "hash": "2d6042742a7eb23c1b092e2d2235857c116f712c",
      "subject": "[NewCodable] Add the ability to decode more primitive types"
    },
    "320526@main": {
      "author": "Richard Robinson",
      "avatar": "https://www.gravatar.com/avatar/a0d2f862985ed0fd47887be66f5a3e4f?d=identicon\u0026s=64",
      "cl": "320526@main",
      "clUrl": "https://commits.webkit.org/320526@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323454\nrdar://186682706\n\nReviewed by Abrar Rahman Protyasha.\n\nAdd Copyable to Vector, and add Escapable \u0026 Copyable to HashMap and Variant.\n\n* Source/WTF/wtf/HashMap.h:\n* Source/WTF/wtf/Variant.h:\n* Source/WTF/wtf/Vector.h:\n* Source/WTF/wtf/module.modulemap:\n\nCanonical link: https://commits.webkit.org/320526@main",
      "email": "richard_robinson2@apple.com",
      "hash": "7e1a50ea089419edd8fd798542ea34445c30bbce",
      "subject": "[Swift in WebKit] Annotate a few more WTF container types as Escapable \u0026 Copyable"
    },
    "320527@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "320527@main",
      "clUrl": "https://commits.webkit.org/320527@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=322891\nrdar://186143008\n\nReviewed by Chris Dumez and Simon Fraser.\n\nScrollingStateNode keeps its children in a Vector. When insertNode() moves an\nexisting node to a new index it called removeChild() (a linear scan plus a tail\nmemmove) followed by insertChild()/appendChild() (another tail memmove). Since\nregisterScrollingNodeID() runs this once per layer during every compositing\nupdate, a parent with N children that need reordering does more shifting than\nnecessary.\n\nAdd Vector::moveTo(), which relocates the element at one index to another by\nlifting it out, shifting only the elements between the current and target\npositions into the gap with Vector's own TypeOperations::moveOverlapping(), and\ndropping it back at its new home. Every element outside that range stays put.\nScrollingStateTree::insertNode() now finds the node once and calls moveTo()\ninstead of remove + insert.\n\nThis is a constant-factor improvement, not an asymptotic one: the find() is\nstill O(n) and moveTo() shifts O(distance) elements, so a full reordering of N\nsiblings remains O(n^2) in the worst case. What it removes is the redundant\nwork each reorder did before -- one bounded shift instead of a full-length\nremove memmove plus a full-length insert memmove -- and, in the common case\nwhere a node moves only a short distance, the shift touches just the elements\nin between rather than the whole tail.\n\nThe reorder path is unchanged behaviorally, so it stays covered by existing\ntests. A childIndex of notFound (or otherwise past the end) still means\n\"append\": it is clamped to the last slot, preserving the tolerance\ninsertChild() has long needed for the out-of-range indices that crash data\nshows do occur, rather than tripping moveTo()'s bounds assertion. moveTo()\nitself gets direct coverage in TestWebKitAPI, including same-position and\nmove-only element cases.\n\n* Source/WTF/wtf/Vector.h:\n(WTF::Vector::moveTo):\n* Source/WebCore/page/scrolling/ScrollingStateTree.cpp:\n(WebCore::ScrollingStateTree::insertNode):\n* Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:\n(TestWebKitAPI::TEST):\n\nCanonical link: https://commits.webkit.org/320527@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "da79705ade01755efb0bf2144b1636e4e744a592",
      "subject": "ScrollingStateTree::insertNode does redundant work reordering children on pages with many sibling scrolling nodes"
    },
    "320528@main": {
      "author": "Ben Nham",
      "avatar": "https://www.gravatar.com/avatar/dc0914eabf69047ee3397794c2d17bf7?d=identicon\u0026s=64",
      "cl": "320528@main",
      "clUrl": "https://commits.webkit.org/320528@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323375\nrdar://problem/186609673\n\nReviewed by Alex Christensen.\n\nIn 318269@main and 319536@main, we introduced new fields in RemoteFrameLayoutInfo in order to fix\nthe way exposedContentRect (which controls tile coverage) and windowClipRect (which controls various\nvisibility-based heuristics like hidden frame throttling) work in remote frames.\n\nThere are two problems with these fields:\n\n1. windowClipRectInParent is the viewport in the parent frame's content coordinate space, so it\n   changes on every frame when the parent frame scrolls. We don't want these values to change on\n   every frame. Instead, they should only change when necessary (like when the remote frame\n   intersects the edges of the viewport). This allows us to make future perf optimizations to avoid\n   sending a FrameGeometry IPC if it matches a previously sent value.\n\n2. On the receiver side, we bailed out of mapping the rects into the remote frame's view space for\n   any non-affine transform, causing us to fall back to non-optimal fallback behavior for remote\n   frames with 3D transforms (e.g. tiling the entire frame and never throttling it).\n\nTo address this, this patch makes it so that on the sender side, Page::syncLocalFrameInfoToRemote\nnow sends rects in the child frame's view coordinate space instead of the parent frame's content\ncoordinate space. This is accomplished via a new mapAbsoluteToChildFrameViewRect function in\nLocalFrameView, which uses projectQuad rather than mapRect so that the non-affine case works.\n\nOn the receiver side, we no longer need to map the rect into our own view coordinate space, so we\ncan just intersect the rects with the frame's size and use them directly as inputs into the\nexposedContentRect and windowClipRect computations.\n\nMost of these paths had very little testing, so I added tests for both exposedContentRect and\nwindowClipRect which check that these values are correct for both same-site and cross-site iframes.\nThis needed new internals accessors for both rects, plus delegatesScrollingToNativeView, since\nwhether a clip rect in window coordinates has had the scroll position taken out of it differs\nbetween macOS and iOS.\n\nTests: http/tests/site-isolation/ios/exposed-content-rect-3d-transformed.html\n       http/tests/site-isolation/ios/exposed-content-rect-nested.html\n       http/tests/site-isolation/ios/exposed-content-rect.html\n       http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-3d-transformed-cross-origin-iframe.html\n       http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-cross-origin-iframe.html\n       http/tests/site-isolation/window-clip-rect-3d-transformed.html\n       http/tests/site-isolation/window-clip-rect-nested.html\n       http/tests/site-isolation/window-clip-rect.html\n\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect-3d-transformed-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect-3d-transformed.html: Added.\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect-nested-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect-nested.html: Added.\n* LayoutTests/http/tests/site-isolation/ios/exposed-content-rect.html: Added.\n* LayoutTests/http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-3d-transformed-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-3d-transformed-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-cross-origin-iframe-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/request-animation-frame-throttling-scrolled-out-cross-origin-iframe.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-child-cross-site.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-frame-with-same-site-child.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-frame.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-grandchild-same-site.html: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-reporter.js: Added.\n* LayoutTests/http/tests/site-isolation/resources/frame-geometry-test.js: Added.\n* LayoutTests/http/tests/site-isolation/resources/request-animation-frame-throttling-frame.html:\n* LayoutTests/http/tests/site-isolation/window-clip-rect-3d-transformed-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/window-clip-rect-3d-transformed.html: Added.\n* LayoutTests/http/tests/site-isolation/window-clip-rect-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/window-clip-rect-nested-expected.txt: Added.\n* LayoutTests/http/tests/site-isolation/window-clip-rect-nested.html: Added.\n* LayoutTests/http/tests/site-isolation/window-clip-rect.html: Added.\n* LayoutTests/platform/ios/TestExpectations:\n* Source/WebCore/page/FrameTree.h:\n* Source/WebCore/page/LocalFrameView.cpp:\n(WebCore::LocalFrameView::mapAbsoluteToChildFrameViewRect const):\n(WebCore::LocalFrameView::mapAbsoluteToChildFrameViewRect):\n* Source/WebCore/page/LocalFrameView.h:\n* Source/WebCore/page/Page.cpp:\n(WebCore::Page::syncLocalFrameInfoToRemote):\n* Source/WebCore/page/RemoteFrameLayoutInfo.cpp:\n(WebCore::RemoteFrameLayoutInfo::RemoteFrameLayoutInfo):\n(WebCore::operator\u003c\u003c):\n(WebCore::RemoteFrameLayoutInfo::mapParentContentsToChildWindow const): Deleted.\n* Source/WebCore/page/RemoteFrameLayoutInfo.h:\n(WebCore::RemoteFrameLayoutInfo::onScreenRectInChildView const):\n(WebCore::RemoteFrameLayoutInfo::exposedContentRectInChildView const):\n(WebCore::RemoteFrameLayoutInfo::windowClipRectInParent const): Deleted.\n(WebCore::RemoteFrameLayoutInfo::exposedContentRectInParent const): Deleted.\n* Source/WebCore/testing/Internals.cpp:\n(WebCore::Internals::windowClipRect):\n(WebCore::Internals::exposedContentRect):\n(WebCore::Internals::delegatesScrollingToNativeView):\n* Source/WebCore/testing/Internals.h:\n* Source/WebCore/testing/Internals.idl:\n* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:\n* Source/WebKit/WebProcess/WebPage/WebPage.cpp:\n(WebKit::WebPage::updateChildFrameVisibleRectsFromParent):\n\nCanonical link: https://commits.webkit.org/320528@main",
      "email": "nham@apple.com",
      "hash": "bd7861b451f226a255358c8310321eae3e6c88f8",
      "subject": "[Site Isolation] Change coordinate space for cross-process frame geometry"
    },
    "320529@main": {
      "author": "Tim Nguyen",
      "avatar": "https://www.gravatar.com/avatar/208c05ac2decdf818a4a08ada568328e?d=identicon\u0026s=64",
      "cl": "320529@main",
      "clUrl": "https://commits.webkit.org/320529@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323446\nrdar://186678078\n\nReviewed by Rupin Mittal.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/0588f3896e0caef44bc33ad6efb9522b0fe97a5b\n\n* LayoutTests/TestExpectations:\n* LayoutTests/imported/w3c/resources/resource-files.json:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-iteration-with-modifications-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-iteration-with-modifications.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-maplike-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-maplike.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-escaped-star-001-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-escaped-star-001.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-deep-chain-001.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-deep-chain-001.tentative-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-deep-chain-001.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-inheritance-001.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-inheritance-001.tentative-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-inheritance-001.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-no-named-rule-001.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-no-named-rule-001.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-no-named-rule-002.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-no-named-rule-002.tentative-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-no-named-rule-002.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-001-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-001.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-001.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-002.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-002.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-003.tentative-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-003.tentative-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-painting-003.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-parsing-and-computed-style.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/custom-highlight-universal-parsing-and-computed-style.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-pseudo-parsing-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/highlight-pseudo-parsing.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-below-grammar.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-user-select-none-expected.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-user-select-none.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/painting/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/w3c-import.log:\n\nCanonical link: https://commits.webkit.org/320529@main",
      "email": "ntim@apple.com",
      "hash": "d257d675f4fe6aa7e8d29fd691e8662cc40cf30c",
      "subject": "Re-import css/css-highlight-api WPT"
    },
    "320530@main": {
      "author": "Issac Roy",
      "avatar": "https://www.gravatar.com/avatar/dad994528f617bf59fe005077d0fa8f3?d=identicon\u0026s=64",
      "cl": "320530@main",
      "clUrl": "https://commits.webkit.org/320530@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323392\nrdar://186619043\n\nReviewed by Tim Nguyen and Sam Weinig.\n\nAdds flex-line-count as \u003cinteger [1,∞]\u003e, initial value 1, per css-flexbox-2\n§6.1. Storage, parsing and computed-style serialization only; the value does not\naffect layout yet, which is bug 323240.\n\nThe property is gated on the existing CSSFlexWrapBalanceEnabled setting rather\nthan a new one, because it only has an effect on a balanced container — see\nbalance-min-line-count-007 and -008, which assert it changes nothing under\nflex-wrap: wrap and nowrap. That setting is already status: testable, so the WPT\nsyntax tests run with it enabled and stay byte-identical to upstream.\n\nStyle::FlexLineCount is Integer\u003cCSS::Positive\u003e, and CSS::Positive is Range { 1,\nRange::infinity }, which is exactly the grammar's range. It is a value member of\nFlexibleBoxData next to flexBasis, not a bitfield, so calc() results wider than\na few bits round-trip.\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/balance/flex-line-count-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/balance/flex-line-count-valid-expected.txt:\n* Source/WebCore/Headers.cmake:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/style/computed/StyleComputedStyleBase.h:\n* Source/WebCore/style/computed/data/StyleFlexibleBoxData.cpp:\n* Source/WebCore/style/computed/data/StyleFlexibleBoxData.h:\n* Source/WebCore/style/values/flexbox/StyleFlexLineCount.h: Added.\n\nCanonical link: https://commits.webkit.org/320530@main",
      "email": "issacroy05@gmail.com",
      "hash": "1be505b36f434138574ce6db35417577c7c44146",
      "subject": "[Flex Wrap Balance] Add parsing support for flex-line-count"
    },
    "320531@main": {
      "author": "Justin Michaud",
      "avatar": "https://www.gravatar.com/avatar/36e0433ee725a08f7e1122a6bc584b57?d=identicon\u0026s=64",
      "cl": "320531@main",
      "clUrl": "https://commits.webkit.org/320531@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321752\n\nReviewed by Patrick Griffis and Claudio Saavedra.\n\nGIFImageDecoder::initFrameBuffer() clamped a frame rect that extends past the\ncanvas by subtracting the frame's offset from the canvas extent. A GIF's logical\nscreen size is only published for the first frame, so a later frame's offset can\nitself be past the canvas, which made that subtraction negative and left the\nbacking store with a frame rect of negative width or height. Intersect with the\ncanvas instead, which clamps to an empty rect.\n\n* LayoutTests/fast/images/gif-frame-outside-logical-screen-expected.txt: Added.\n* LayoutTests/fast/images/gif-frame-outside-logical-screen.html: Added.\n* LayoutTests/fast/images/resources/gif-frame-outside-logical-screen.gif: Added.\n* Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:\n(WebCore::GIFImageDecoder::initFrameBuffer):\n\nCanonical link: https://commits.webkit.org/320531@main",
      "email": "jmichaud@igalia.com",
      "hash": "e513b5fcd8573e7226108b3bb1caca5b21d92dd6",
      "subject": "[non-cocoa][fuzz] GIF image decoder should not have negative width/height"
    },
    "320532@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320532@main",
      "clUrl": "https://commits.webkit.org/320532@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323445\nrdar://problem/186676835\n\nReviewed by Antti Koivisto.\n\nAn outside marker is positioned against a line (RenderListItem::placeExcludedMarker) and takes no part in the inline\ncontent of that line. align-content moves the lines after they are built, and LineLayout::shiftLinesByInBlockDirection\nmoves the lines and the renderers of the boxes on them, so the marker stayed where the unshifted line was.\n\nMove the position the marker was given by the same amount.\n\nTest: imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-align-content.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-align-content-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-align-content-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-align-content.html: Added.\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:\n(WebCore::LayoutIntegration::LineLayout::shiftLinesByInBlockDirection):\n* Source/WebCore/rendering/RenderListItem.cpp:\n(WebCore::RenderListItem::excludedMarkerAnchoredTo):\n* Source/WebCore/rendering/RenderListItem.h:\n\nCanonical link: https://commits.webkit.org/320532@main",
      "email": "zalan@apple.com",
      "hash": "65dd1d3fccd053730b9e2881484c1694a6a2d794",
      "subject": "[list-marker] align-content leaves the list marker behind"
    },
    "320533@main": {
      "author": "Alan Baradlay",
      "avatar": "https://www.gravatar.com/avatar/788d66417db806c567552cfa1ae89f77?d=identicon\u0026s=64",
      "cl": "320533@main",
      "clUrl": "https://commits.webkit.org/320533@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323448\nrdar://problem/186678552\n\nReviewed by Antti Koivisto.\n\ntext-indent is a margin on the line box, so the line's inline start edge already includes it and the marker hung off\nthat edge moved in with the text. Take the indent off first.\n\nTest: imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-text-indent.html\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-text-indent-expected.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-text-indent-ref.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-text-indent.html: Added.\n* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:\n(WebCore::Layout::InlineFormattingUtils::computedTextIndentForFirstLine):\n* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h:\n* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:\n(WebCore::LayoutIntegration::LineLayout::setExcludedMarkerPositions):\n\nCanonical link: https://commits.webkit.org/320533@main",
      "email": "zalan@apple.com",
      "hash": "67bf126de00740d0aa051144d4c4a23ef7482bec",
      "subject": "[list-marker] text-indent moves the list marker with the text"
    },
    "320534@main": {
      "author": "Abrar Rahman Protyasha",
      "avatar": "https://www.gravatar.com/avatar/fce5b3c4e9f3c59a4873e08c9f03c3b1?d=identicon\u0026s=64",
      "cl": "320534@main",
      "clUrl": "https://commits.webkit.org/320534@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323418\nrdar://186648332\n\nReviewed by Aditya Keerthi.\n\nAppKit consults -validateUserInterfaceItem: when constructing its edit\nmenu. When inquired about @selector(copy:), isEditingCommandEnabled()\nsays yes if there is an active selection in the PDF. However, this is\nonly necessary and not sufficient for a copy operation, since the\nunderlying document itself must allow copying. In this patch, we teach\nour editing command validity check in the plugin to respect that\nattribute of the PDF document.\n\nFor test coverage, we retrofit the existing edit action validity check\nperformed by CopyMenuItemDisabledWithNoSelection.\n\nTest: WKWebViewEditActions.CopyMenuItemDisabledInCopyDisallowedPDF\n\n* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:\n(WebKit::UnifiedPDFPlugin::isEditingCommandEnabled):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewEditActions.mm:\n(TestWebKitAPI::validateCopyMenuItem):\n(TestWebKitAPI::TEST(WKWebViewEditActions, CopyMenuItemDisabledWithNoSelection)):\n(TestWebKitAPI::TEST(WKWebViewEditActions, CopyMenuItemDisabledInCopyDisallowedPDF)):\n\nCanonical link: https://commits.webkit.org/320534@main",
      "email": "a_protyasha@apple.com",
      "hash": "054171fd6f8625e6cabc883518caa42c025a6d2e",
      "subject": "[macOS] \"Copy\" option is enabled in edit menu after selecting text in PDF with copying disallowed"
    },
    "320535@main": {
      "author": "Kiet Ho",
      "avatar": "https://www.gravatar.com/avatar/d9058b37006dce1f55f91b8ccc82f9a3?d=identicon\u0026s=64",
      "cl": "320535@main",
      "clUrl": "https://commits.webkit.org/320535@main",
      "description": "rdar://186415342\nhttps://bugs.webkit.org/show_bug.cgi?id=323170\n\nReviewed by Yusuke Suzuki.\n\nAs defined in the HTML spec [1], when loading a module script, there's a check to\nensure the module script type is allowed (understood as \"supported by the environment\").\nThis wasn't needed before, as the available module script types (JS/WASM, JSON, text)\nare always supported by JSC. But CSS is a DOM concept, so CSS module scripts can only\nbe loaded in DOM environments (not worker/worklets or non-DOM.) Therefore to implement\nCSS module scripts, the type check must be present to avoid loading CSS modules in\nunsupported environments.\n\nThe check is implemented in both JSC and host. First, JSC checks if it's one of\nJS/WASM/JSON/text, which it supports. If it's not, JSC vends it out to the host through\nthe new moduleTypeIsAllowed method in the global object method table. A host should\nimplement this method if it can handle other module types not supported by JSC. For\nexample, a DOM host can indicate it supports CSS module scripts.\n\nThis will be tested by CSS module script tests once it's fully implemented.\n\n[1]: https://html.spec.whatwg.org/multipage/webappapis.html#module-type-allowed\n\n* Source/JavaScriptCore/API/JSAPIGlobalObject.cpp:\n(JSC::JSAPIGlobalObject::globalObjectMethodTable):\n* Source/JavaScriptCore/API/JSAPIGlobalObject.h:\n* Source/JavaScriptCore/API/JSAPIGlobalObject.mm:\n(JSC::JSAPIGlobalObject::globalObjectMethodTable):\n* Source/JavaScriptCore/jsc.cpp:\n* Source/JavaScriptCore/runtime/GlobalObjectMethodTable.h:\n* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:\n(JSC::JSGlobalObject::baseGlobalObjectMethodTable):\n* Source/JavaScriptCore/runtime/JSModuleLoader.cpp:\n(JSC::moduleTypeIsAllowed):\n(JSC::JSModuleLoader::importModule):\n(JSC::JSModuleLoader::fetch):\n(JSC::JSModuleLoader::hostLoadImportedModule):\n* Source/WebCore/bindings/js/JSDOMWindowBase.cpp:\n(WebCore::JSDOMWindowBase::globalObjectMethodTable):\n* Source/WebCore/bindings/js/JSShadowRealmGlobalScopeBase.cpp:\n(WebCore::JSShadowRealmGlobalScopeBase::globalObjectMethodTable):\n* Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:\n(WebCore::JSWorkerGlobalScopeBase::globalObjectMethodTable):\n* Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:\n(WebCore::JSWorkletGlobalScopeBase::globalObjectMethodTable):\n\nCanonical link: https://commits.webkit.org/320535@main",
      "email": "kiet.ho@apple.com",
      "hash": "64168e4d90c4f106867471495b7842b5995990a6",
      "subject": "[CSS Module Scripts] Verify if a module type is allowed before fetching"
    },
    "320536@main": {
      "author": "Jonas Devlieghere",
      "avatar": "https://www.gravatar.com/avatar/f8188f53314f9e07a60cedadae3dfecb?d=identicon\u0026s=64",
      "cl": "320536@main",
      "clUrl": "https://commits.webkit.org/320536@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323123\n\nReviewed by Yijia Huang.\n\nA Wasm global belongs to a module instance, not to a frame. The global\nindex space is per instance, and DW_OP_WASM_location's global operand\nindexes the index space of the instance whose code is being evaluated.\nqWasmGlobal took a frame index and used it as a proxy for that instance,\nwhich left the globals of an instance with no active frame out of reach:\na page loading several modules could only inspect whichever one it\nhappened to be stopped inside.\n\nLLDB has since landed a form that names the instance directly:\n\n    qWasmGlobal:\u003cglobal-index\u003e;instance:\u003cinstance-id\u003e\n\n    https://github.com/llvm/llvm-project/pull/213176\n    resolving https://github.com/llvm/llvm-project/issues/212833\n\nThis PR adds support for the new packet variant. The id is the module id\nalready carried in bits 61:32 of a Wasm virtual address. A stub opts in\nby advertising qWasmInstance+ in its qSupported reply, which covers any\nWasm query whose scope is an instance rather than a frame. A client that\ndoes not opt in keeps getting the frame form, and the two are told apart\nby the presence of the instance: key.\n\nBesides that, I had to make the following changes:\n\n- Because the id is a module id it cannot distinguish two instances of\n  one module, which have separate globals.\n  ModuleManager::soleInstanceOfModule() answers only when the module has\n  exactly one live instance, and QueryHandler::instanceForModule()\n  additionally accepts a module the debuggee is stopped in, where the\n  stop itself picks the instance. Anything else replies with an error\n  rather than guessing, since a wrong value is indistinguishable from a\n  right one on the wire.\n\n- Also stop qWasmLocal from defaulting an unparsable field to zero.\n  parseDecimal() returns 0 for a field that is not a number, so a client\n  sending a field this packet does not have read local 0 of frame 0 and\n  got a plausible wrong answer instead of an error. This matters more\n  now that a second packet shape exists.\n\n- Module::debugId() becomes JS_EXPORT_PRIVATE so the new test can link\n  against it.\n\n- On the test side, setBreakpointsAtAllFunctionEntries() now visits each\n  module once rather than once per instance. Breakpoints patch module\n  bytecode, which every instance of a module shares, and patching twice\n  records the breakpoint opcode itself as the original bytecode. That\n  was unreachable until a script held two instances of one module.\n\nTest: MultiVMMultipleInstancesPerModule exercises both the sole-instance\n\nand ambiguous paths; testSoleInstanceOfModule derives its expectation\nfrom the instances actually registered, so it holds for every script.\n\n* Source/JavaScriptCore/wasm/WasmModule.h:\n* Source/JavaScriptCore/wasm/debugger/README.md:\n* Source/JavaScriptCore/wasm/debugger/WasmModuleManager.cpp:\n(JSC::Wasm::ModuleManager::soleInstanceOfModule):\n* Source/JavaScriptCore/wasm/debugger/WasmModuleManager.h:\n* Source/JavaScriptCore/wasm/debugger/WasmQueryHandler.cpp:\n(JSC::Wasm::QueryHandler::handleSupported):\n(JSC::Wasm::QueryHandler::handleWasmLocal):\n(JSC::Wasm::QueryHandler::instanceForModule):\n(JSC::Wasm::QueryHandler::instanceForFrame):\n(JSC::Wasm::QueryHandler::handleWasmGlobal):\n* Source/JavaScriptCore/wasm/debugger/WasmQueryHandler.h:\n* Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerTest.cpp:\n(ExecutionHandlerTest::setBreakpointsAtAllFunctionEntries):\n(ExecutionHandlerTest::testSoleInstanceOfModule):\n(ExecutionHandlerTest::setupScriptAndWaitForVMs):\n(ExecutionHandlerTest::runTests):\n* Source/JavaScriptCore/wasm/debugger/tests/TestScripts.cpp:\n* Source/JavaScriptCore/wasm/debugger/tests/TestScripts.h:\n* JSTests/wasm/debugger/lib/environment.py:\n(WebKitEnvironment.__init__):\n* JSTests/wasm/debugger/lib/session.py:\n(_source_map_command):\n(DebugSession.__init__):\n* JSTests/wasm/debugger/test-wasm-debugger.py:\n(main):\n\nCanonical link: https://commits.webkit.org/320536@main",
      "email": "jonas@devlieghere.com",
      "hash": "ca158eb19b753004c61c9405265669ccfdd8557a",
      "subject": "[JSC] Adopt the instance-scoped qWasmGlobal packet form"
    },
    "320537@main": {
      "author": "Cole Carley",
      "avatar": "https://www.gravatar.com/avatar/091dd5641909acc46e581355f491ed34?d=identicon\u0026s=64",
      "cl": "320537@main",
      "clUrl": "https://commits.webkit.org/320537@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323285\nrdar://186539998\n\nReviewed by Brent Fulgham.\n\n320338@main removed compile flags from the Quirk table and created a single\nsource of truth for which Quirks are available on each platform. There are still\ncompile flags in the Quirk accessors in Quirks.cpp. This patch removes those\nredundant compile flags.\n\n* Source/WebCore/page/QuirkTable.cpp:\n(WebCore::SiteSpecificQuirks::isAvailable):\n* Source/WebCore/page/Quirks.cpp:\n\nCanonical link: https://commits.webkit.org/320537@main",
      "email": "ccarley2@apple.com",
      "hash": "e8639fda964b5ba082cd441adabda472426e20b2",
      "subject": "[Quirks] Remove additional compile flags in the Quirk accessor functions"
    },
    "320538@main": {
      "author": "Ian Gower",
      "avatar": "https://www.gravatar.com/avatar/cc2e677bc728b92e5463660d8b8d9ed8?d=identicon\u0026s=64",
      "cl": "320538@main",
      "clUrl": "https://commits.webkit.org/320538@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=297739\nrdar://154439054\n\nReviewed by Brent Fulgham.\n\nFeature work for Local Network Access (https://wicg.github.io/local-network-access/).\nSection 3.2 (https://wicg.github.io/local-network-access/#integration-with-mixed-content)\namends both mixed-content algorithms so a request whose target IP address space is local is\nneither upgraded nor blocked. Without it an https page can never reach a local device over\nhttp, and the Local Network Access permission never gets the chance to decide.\n\nOnly fetch() sets a target address space on its request, so MixedContentChecker derives one\nfrom the URL for every other load, and CachedResourceLoader and DocumentThreadableLoader thread\nthe request's declared value through to it. Deriving from the URL covers IP literals and .local\nnames; a hostname that resolves to a private address still reads as public and stays blocked,\nsince no peer address exists this early in the load. The derivation is gated on the\nLocalNetworkAccess setting, so with the feature off nothing escapes an upgrade or block that did\nnot already.\n\nThis exempts loopback as well as local, where the spec exempts only local. Section 3.1.1\nleaves loopback out on the grounds that a loopback URL is already potentially trustworthy and\nso never reaches these checks; exempting it explicitly means the rule does not depend on that\nholding.\n\n* Source/WebCore/loader/DocumentLoader.cpp:\n(WebCore::DocumentLoader::willSendRequest):\n* Source/WebCore/loader/DocumentThreadableLoader.cpp:\n(WebCore::DocumentThreadableLoader::loadRequest):\n* Source/WebCore/loader/MixedContentChecker.cpp:\n(WebCore::effectiveTargetAddressSpace):\n(WebCore::MixedContentChecker::shouldUpgradeInsecureContent):\n(WebCore::MixedContentChecker::canModifyRequest):\n(WebCore::MixedContentChecker::shouldBlockRequest):\n* Source/WebCore/loader/MixedContentChecker.h:\n* Source/WebCore/loader/cache/CachedResourceLoader.cpp:\n(WebCore::CachedResourceLoader::requestImage):\n(WebCore::CachedResourceLoader::checkInsecureContent const):\n(WebCore::CachedResourceLoader::canRequest):\n(WebCore::CachedResourceLoader::canRequestAfterRedirection const):\n(WebCore::CachedResourceLoader::updateRequestAfterRedirection):\n(WebCore::CachedResourceLoader::requestResource):\n* Source/WebCore/loader/cache/CachedResourceLoader.h:\n* Tools/TestWebKitAPI/Tests/WebCore/MixedContentChecker.cpp:\n\nCanonical link: https://commits.webkit.org/320538@main",
      "email": "i_gower@apple.com",
      "hash": "66d43bea8153d9b8fd36876a06fcf2bd15e6f902",
      "subject": "Revised Mixed Content rules to match LNA spec"
    },
    "320539@main": {
      "author": "Mark Lam",
      "avatar": "https://www.gravatar.com/avatar/87a4219a10aeda88757492c63da746de?d=identicon\u0026s=64",
      "cl": "320539@main",
      "clUrl": "https://commits.webkit.org/320539@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323456\nrdar://185783006\n\nReviewed by Marcus Plutowski.\n\nThis means:\n1. non-\"try\" allocators should crash on failure to allocate memory.\n2. \"try\" allocators just return a nullptr on failure to allocate memory.  See exception in (3) below.\n3. For iso_try_reallocate allocators, existing SystemHeap-disabled allocators will also set errno\n   to ENOMEM in addition to returning nullptr.  Make the SystemHeap-enabled path do the same\n\nNo new tests because failures to allocate memory is not a condition we can force, and the expected\nbehavior is to crash in some cases (which is not testable).\n\n* Source/bmalloc/libpas/src/libpas/bmalloc_heap_flex_internal.h:\n(bmalloc_try_reallocate_flex_inline):\n(bmalloc_reallocate_flex_inline):\n* Source/bmalloc/libpas/src/libpas/bmalloc_heap_inlines.h:\n(bmalloc_try_reallocate_auxiliary_inline):\n(bmalloc_reallocate_auxiliary_inline):\n(bmalloc_try_reallocate_inline):\n(bmalloc_reallocate_inline):\n* Source/bmalloc/libpas/src/libpas/bmalloc_heap_iso_internal.h:\n(bmalloc_try_iso_reallocate_array_by_size_inline):\n(bmalloc_iso_reallocate_array_by_size_inline):\n(bmalloc_try_iso_reallocate_array_by_count_inline):\n(bmalloc_iso_reallocate_array_by_count_inline):\n* Source/bmalloc/libpas/src/libpas/hotbit_heap_inlines.h:\n(hotbit_try_reallocate_inline):\n* Source/bmalloc/libpas/src/libpas/iso_heap_inlines.h:\n(iso_try_reallocate_common_primitive_inline):\n(iso_reallocate_common_primitive_inline):\n(iso_try_reallocate_array_by_count_inline):\n(iso_reallocate_array_by_count_inline):\n(iso_try_reallocate_primitive_inline):\n(iso_reallocate_primitive_inline):\n* Source/bmalloc/libpas/src/libpas/pas_local_allocator_inlines.h:\n(pas_local_allocator_try_allocate):\n* Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h:\n(pas_try_allocate_intrinsic_impl_casual_case):\n* Source/bmalloc/libpas/src/libpas/pas_try_reallocate.h:\n(pas_try_reallocate):\n(pas_try_reallocate_intrinsic):\n(pas_try_reallocate_single):\n(pas_try_reallocate_array_by_size):\n(pas_try_reallocate_array_by_count):\n(pas_try_reallocate_primitive):\n* Source/bmalloc/libpas/src/libpas/tagged_bmalloc_heap_inlines.h:\n(tagged_bmalloc_try_reallocate_inline):\n(tagged_bmalloc_reallocate_inline):\n* Source/bmalloc/libpas/src/libpas/thingy_heap.c:\n(thingy_try_reallocate_primitive):\n(thingy_try_reallocate_array):\n\nCanonical link: https://commits.webkit.org/320539@main",
      "email": "mark.lam@apple.com",
      "hash": "c0121e11c12f57c279705344e09bc1270491df97",
      "subject": "Make SystemHeap-enabled failure actions equivalent to SystemHeap-disabled failure actions."
    },
    "320540@main": {
      "author": "WebKit CI Build Triage",
      "avatar": "https://www.gravatar.com/avatar/e6ac53640d27e8fb7b0886aee0e20343?d=identicon\u0026s=64",
      "cl": "320540@main",
      "clUrl": "https://commits.webkit.org/320540@main",
      "description": "Unreviewed build fix.\n* Source/WTF/wtf/SwiftBridging.h:\n\nCanonical link: https://commits.webkit.org/320540@main",
      "email": "noreply@webkit.org",
      "hash": "79282f6ac8df43e0e630547207f82308c9310a1f",
      "subject": "Fix a build issue after 320526@main"
    },
    "320541@main": {
      "author": "Tyler Wilcock",
      "avatar": "https://www.gravatar.com/avatar/9545082e6bed96158a9f52dac6e4b869?d=identicon\u0026s=64",
      "cl": "320541@main",
      "clUrl": "https://commits.webkit.org/320541@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=323365\nrdar://186604502\n\nReviewed by Dominic Mazzoni.\n\nnameOf() focused a button and then read accessibilityController.focusedElement in\nthe same turn. With the isolated tree that returns the previously focused button,\nbecause setFocusedNodeID() writes into the tree's working changes and the new\nfocus isn't visible to the accessibility thread until the next commit is applied\n(which happens before the focused-element-changed notification is sent out to the AT).\n\nEvery name after the first came out one button behind:\n\n    FAIL nameOf('counter-button') should be Reply Item B. Was Reply Item A.\n\nChange the test to wait for the notification before reading the AX\nfocused element, mirroring actual AT behavior and allowing the test to\npass in ITM.\n\n* LayoutTests/accessibility/isolated-tree/list-marker-content-renderers-text-expected.txt: Copied from LayoutTests/accessibility/list-marker-content-renderers-text-expected.txt.\n* LayoutTests/accessibility/isolated-tree/list-marker-content-renderers-text.html: Added.\n* LayoutTests/accessibility/list-marker-content-renderers-text-expected.txt:\n* LayoutTests/accessibility/list-marker-content-renderers-text.html:\n\nCanonical link: https://commits.webkit.org/320541@main",
      "email": "tyler_w@apple.com",
      "hash": "ceed1b6b79e820afac817dd8bd4f0dd751476818",
      "subject": "AX: list-marker-content-renderers-text.html fails in ITM because it queries focus synchronously after changing it (prior to a notification, thus not acting like an AT)"
    }
  },
  "date": "2026-09-04",
  "days": 1,
  "generatedAt": "2026-09-04T22:06:16Z",
  "markdown": "## Highlights\n- **Security** Custom CORS-enabled app schemes in WKWebView now enforce response header validation, closing a real cross-origin policy gap for embedders. [commit 320522@main](https://commits.webkit.org/320522@main)\n- **Web Platform** Mixed Content behavior was revised to match the Local Network Access spec, tightening how insecure subresources are classified and blocked. [commit 320538@main](https://commits.webkit.org/320538@main)\n- **Rendering** Site Isolation changed cross-process frame geometry to a new coordinate space, an important plumbing shift for correctness across out-of-process frames. [commit 320528@main](https://commits.webkit.org/320528@main)\n- **V8** JavaScriptCore added Karatsuba multiplication for `JSBigInt`, improving large integer arithmetic throughput. [commit 320495@main](https://commits.webkit.org/320495@main)\n- **V8** JavaScriptCore vectorized `Array#indexOf` and `Array#includes` for long Int32 and Double arrays, speeding common hot paths. [commit 320488@main](https://commits.webkit.org/320488@main)\n- **Security** WebRTC now rejects overlong hostnames when creating sockets, fixing a crashable input validation bug. [commit 320520@main](https://commits.webkit.org/320520@main)\n- **Web Platform** CSS module scripts now verify whether a module type is allowed before fetch, aligning fetch behavior with spec expectations. [commit 320535@main](https://commits.webkit.org/320535@main)\n- **Rendering** WebKit landed support for tree counting functions in container queries and parsing for `flex-line-count`, pushing CSS Values 5 and flex balancing forward. [commit 320493@main](https://commits.webkit.org/320493@main) [commit 320530@main](https://commits.webkit.org/320530@main)\n- **Perf** ScrollingStateTree avoids redundant child reordering work on pages with many sibling scrolling nodes, reducing scroll tree overhead on complex pages. [commit 320527@main](https://commits.webkit.org/320527@main)\n- **Media** Apple Pay gained a callback for completed transactions, extending payment lifecycle observability for clients. [commit 320472@main](https://commits.webkit.org/320472@main)\n\n## What landed by area\n\n### CSS and layout\n- **Rendering** `text-indent` on list items now moves the marker with the text instead of leaving it behind. [commit 320533@main](https://commits.webkit.org/320533@main)\n- **Rendering** `align-content` no longer leaves list markers stranded during layout. [commit 320532@main](https://commits.webkit.org/320532@main)\n- **Rendering** `unicode-bidi` and `direction` now affect inside `::marker` content correctly. [commit 320504@main](https://commits.webkit.org/320504@main)\n- **Rendering** Opening a `\u003cdetails\u003e` element no longer makes its `\u003csummary\u003e` one pixel shorter. [commit 320461@main](https://commits.webkit.org/320461@main)\n- **Rendering** A Safari 27 regression was fixed so the line-height quirk applies again inside inline-block. [commit 320514@main](https://commits.webkit.org/320514@main)\n- **Refactor** `RenderListMarker` was renamed to `RenderListOutsideMarker`, clarifying the model around marker placement. [commit 320509@main](https://commits.webkit.org/320509@main)\n- **Web Platform** Container queries now support tree counting functions from css-values-5. [commit 320493@main](https://commits.webkit.org/320493@main)\n- **Web Platform** Parsing support landed for `flex-line-count` as part of Flex Wrap Balance work. [commit 320530@main](https://commits.webkit.org/320530@main)\n- **Refactor** `MediaQueryParserContext` was removed, simplifying CSS parsing internals. [commit 320517@main](https://commits.webkit.org/320517@main)\n- **Refactor** `CachedCSSStyleSheet::sheetText` now returns `std::expected`, cleaning up stylesheet fetch error handling. [commit 320483@main](https://commits.webkit.org/320483@main)\n\n### JavaScriptCore and Wasm\n- **V8** SystemHeap-enabled failure actions now behave the same as SystemHeap-disabled ones, reducing mode-specific runtime differences. [commit 320539@main](https://commits.webkit.org/320539@main)\n- **V8** Generator and async function bodies now pre-invalidate captured-variable WatchpointSets, fixing a subtle JIT correctness issue. [commit 320521@main](https://commits.webkit.org/320521@main)\n- **V8** Wasm adopted the instance-scoped qWasmGlobal packet form. [commit 320536@main](https://commits.webkit.org/320536@main)\n- **V8** ARM64 Wasm restore-frame copying now uses post-index addressing for tighter codegen. [commit 320516@main](https://commits.webkit.org/320516@main)\n- **V8** Stress tests were added for Wasm `memory.fill` and `memory.copy`. [commit 320503@main](https://commits.webkit.org/320503@main)\n- **V8** `JSBigInt` gained Karatsuba multiplication for faster large-number math. [commit 320495@main](https://commits.webkit.org/320495@main)\n- **V8** YARR now matches lookbehinds in the interpreter from a copied disjunction in match order, fixing regex correctness edge cases. [commit 320492@main](https://commits.webkit.org/320492@main)\n- **V8** `Array#indexOf` and `Array#includes` are now vectorized on long Int32 and Double arrays. [commit 320488@main](https://commits.webkit.org/320488@main)\n- **V8** `RegExp#test` now fast-fails when the input is shorter than the pattern's minimum size. [commit 320487@main](https://commits.webkit.org/320487@main)\n- **V8** `sanitizeStackForVM` got a `dc zva` zero-fill loop on ARM64 for faster stack scrubbing. [commit 320475@main](https://commits.webkit.org/320475@main)\n\n### Site isolation, frames, and process model\n- **Rendering** Cross-process frame geometry now uses a different coordinate space, reducing mismatch risk in out-of-process frame plumbing. [commit 320528@main](https://commits.webkit.org/320528@main)\n- **Perf** Concurrent navigations to the same site now share the same process under Site Isolation, improving process reuse. [commit 320471@main](https://commits.webkit.org/320471@main)\n- **Refactor** A Site Isolation timeout in `webtiming-cross-origin-and-back1.html` was addressed with test-side stabilization work. [commit 320484@main](https://commits.webkit.org/320484@main)\n\n### Networking, fetch, storage, and security\n- **Web Platform** CSS module scripts now reject disallowed module types before fetch begins. [commit 320535@main](https://commits.webkit.org/320535@main)\n- **Security** Mixed Content handling was updated to match the Local Network Access spec. [commit 320538@main](https://commits.webkit.org/320538@main)\n- **Security** WKWebView now validates CORS response headers for app-defined schemes registered as CORS-enabled. [commit 320522@main](https://commits.webkit.org/320522@main)\n- **Security** WebRTC socket creation now rejects overlong hostnames instead of crashing. [commit 320520@main](https://commits.webkit.org/320520@main)\n- **Web Platform** `Cache.delete()` and `Cache.keys()` no longer swallow exceptions thrown while building a `Request` from a URL string. [commit 320524@main](https://commits.webkit.org/320524@main)\n- **Perf** `MemoryCache::add` was fixed after a prior regression that could crash cache insertion. [commit 320474@main](https://commits.webkit.org/320474@main)\n- **Web Platform** WPT cookies coverage was resynced from upstream. [commit 320486@main](https://commits.webkit.org/320486@main)\n- **Refactor** Dead declared-but-undefined functions were removed from `ResourceMonitorThrottler`. [commit 320463@main](https://commits.webkit.org/320463@main)\n- **Refactor** A dead local was removed from `ReportingScope::notifyReportObservers()`. [commit 320476@main](https://commits.webkit.org/320476@main)\n\n### Graphics, compositing, scrolling, and canvas\n- **Perf** `ScrollingStateTree::insertNode` now skips redundant child reordering on pages with many sibling scrolling nodes. [commit 320527@main](https://commits.webkit.org/320527@main)\n- **Rendering** Negative z-index layers inside a stacking context now composite correctly when overlapping an external composited layer. [commit 320473@main](https://commits.webkit.org/320473@main)\n- **GPU** Skia compositing now keeps the last animation value after an animation ends. [commit 320494@main](https://commits.webkit.org/320494@main)\n- **GPU** On GTK and WPE, the Skia compositor now accounts for layer transforms when choosing backing-store tile sampling options. [commit 320490@main](https://commits.webkit.org/320490@main)\n- **Privacy** Canvas noise injection fixed an off-by-one that misclassified the bottom-left pixel. [commit 320510@main](https://commits.webkit.org/320510@main)\n- **Perf** `Canvas::parseColor()` no longer constructs `CSSParserContext(HTMLStandardMode)` twice. [commit 320512@main](https://commits.webkit.org/320512@main)\n- **Security** The non-Cocoa GIF decoder now rejects negative width and height values under fuzzed input. [commit 320531@main](https://commits.webkit.org/320531@main)\n\n### Accessibility and text extraction\n- **A11y** A flaky AX test was fixed by avoiding synchronous focus queries before the expected notification path. [commit 320541@main](https://commits.webkit.org/320541@main)\n- **A11y** Added layout tests for text marker index handling over non-Latin scripts. [commit 320508@main](https://commits.webkit.org/320508@main)\n- **A11y** Added layout tests for bidirectional text and runtime text direction changes. [commit 320507@main](https://commits.webkit.org/320507@main)\n- **A11y** Added layout tests for emoji and invisible characters in the text marker index space. [commit 320506@main](https://commits.webkit.org/320506@main)\n- **A11y** Added layout tests covering form control state propagation into accessibility. [commit 320468@main](https://commits.webkit.org/320468@main)\n- **A11y** Added tests for previously uncovered accessibility attributes including AXContents and AXTabs, plus editable design-mode web areas. [commit 320467@main](https://commits.webkit.org/320467@main)\n- **A11y** Added layout tests for line, sentence, and word text marker boundary round trips. [commit 320466@main](https://commits.webkit.org/320466@main)\n- **A11y** `SVGAElement::isKeyboardFocusable` now uses an early return and drops redundant focusability checks. [commit 320478@main](https://commits.webkit.org/320478@main)\n- **Rendering** Text extraction now surfaces failure when stale-node UID resolution lands on another stale node. [commit 320523@main](https://commits.webkit.org/320523@main)\n- **Mobile** On iOS, background text extraction for desktop-class content now overrides several mouse-related media queries. [commit 320464@main](https://commits.webkit.org/320464@main)\n\n### Clipboard, app APIs, media, and manifests\n- **Perf** Clipboard writes now avoid redundant `PasteboardCustomData` copies. [commit 320496@main](https://commits.webkit.org/320496@main)\n- **Refactor** `Clipboard::getType` deduplicated identical `image/png` and `image/svg+xml` read branches. [commit 320481@main](https://commits.webkit.org/320481@main)\n- **Refactor** `ClipboardItemBindingsDataSource` now uses `WTF::switchOn` for its `BufferOrString` variant. [commit 320480@main](https://commits.webkit.org/320480@main)\n- **Perf** Clipboard item collection now avoids per-item `String` and `Ref\u003cDOMPromise\u003e` copies while writing. [commit 320477@main](https://commits.webkit.org/320477@main)\n- **Media** Apple Pay gained a callback for completed transactions. [commit 320472@main](https://commits.webkit.org/320472@main)\n- **Refactor** Manifest icon `purpose` parsing was simplified in `ApplicationManifestParser`. [commit 320482@main](https://commits.webkit.org/320482@main)\n- **Refactor** `DOMAudioSession::type()` no longer redundantly tests the same document fallback twice. [commit 320479@main](https://commits.webkit.org/320479@main)\n- **Refactor** `MediaSession::setActionHandler()` no longer repeats document lookups or shadows a local. [commit 320462@main](https://commits.webkit.org/320462@main)\n\n### Swift, Codable, and bindings infrastructure\n- **Build** More WTF container types were annotated as Escapable and Copyable for Swift in WebKit. [commit 320526@main](https://commits.webkit.org/320526@main)\n- **Build** NewCodable can now decode more primitive types. [commit 320525@main](https://commits.webkit.org/320525@main)\n- **Build** NewCodable gained an initial Swift decoder for JavaScript evaluation. [commit 320497@main](https://commits.webkit.org/320497@main)\n- **Build** CMake gained a `swiftc+ninja` tracing tool. [commit 320460@main](https://commits.webkit.org/320460@main)\n\n### Build, ports, and test infrastructure\n- **Build** A follow-up fixed the build after the Swift container annotation change. [commit 320540@main](https://commits.webkit.org/320540@main)\n- **Build** Linux GTK and WPE now build and run the IPC API tests. [commit 320519@main](https://commits.webkit.org/320519@main)\n- **Build** GTK and WPE fixed a regression when both `USE_TEXTURE_MAPPER=OFF` and `USE_GBM=OFF`. [commit 320505@main](https://commits.webkit.org/320505@main)\n- **Build** CMake picked up more clang target support. [commit 320498@main](https://commits.webkit.org/320498@main)\n- **Build** CMake now sets `ENABLE_WEBGPU_SWIFT` correctly. [commit 320511@main](https://commits.webkit.org/320511@main)\n- **Build** Test failures with CMake and the latest macOS SDK were fixed. [commit 320498@main](https://commits.webkit.org/320498@main)\n- **Build** EWS results-db test steps now carry their own copy of shared reporting behavior. [commit 320501@main](https://commits.webkit.org/320501@main)\n- **Build** EWS logs now include a JSON dump of everything reported to results.webkit.org. [commit 320500@main](https://commits.webkit.org/320500@main)\n- **Build** The API EWS retry ladder now stops wasting work on already-known flaky failures. [commit 320465@main](https://commits.webkit.org/320465@main)\n- **Build** `resultsdbpy` documentation now includes the EWS upload and query endpoints. [commit 320469@main](https://commits.webkit.org/320469@main)\n- **Build** History-dumping test code now null-checks history items. [commit 320513@main](https://commits.webkit.org/320513@main)\n- **Build** WPE arm64 flake gardening continued with targeted stabilization work. [commit 320485@main](https://commits.webkit.org/320485@main)\n- **Build** A WPE tutorial was added for writing a platform implementation. [commit 320502@main](https://commits.webkit.org/320502@main)\n- **Refactor** An incorrect `NODELETE` annotation was removed from `Document::invalidateAccessKeyCacheSlowCase()`. [commit 320499@main](https://commits.webkit.org/320499@main)\n- **Refactor** Duplicate Blink-imported tests that were byte-identical to existing WebKit tests were removed. [commit 320491@main](https://commits.webkit.org/320491@main)\n- **Refactor** `isValidPathSegment()` was modernized to use a range-based for loop over code units. [commit 320489@main](https://commits.webkit.org/320489@main)\n- **Build** A typo was fixed in `IOSurfacePool.h`. [commit 320470@main](https://commits.webkit.org/320470@main)\n- **Refactor** Quirk accessor functions dropped extra compile flags. [commit 320537@main](https://commits.webkit.org/320537@main)\n\n### Web APIs and automation\n- **Web Platform** WebDriver now reports \"stale element reference\" when a node reference comes from a different browsing context. [commit 320518@main](https://commits.webkit.org/320518@main)\n\n## Reverts \u0026 Reapplies\n\nNo reverts or reapplies landed in this window.",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [],
  "since": "2026-09-04",
  "totals": {
    "commits": 82,
    "features": 82,
    "rolls": 0
  },
  "until": "2026-09-04"
}