Skip to content

Conversation

@imgbot
Copy link

@imgbot imgbot bot commented Apr 18, 2022

Beep boop. Your images are optimized!

Your image file size has been reduced by 33% 🎉

Details
File Before After Percent reduction
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 22.02kb 0.88kb 96.00%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 14.03kb 0.87kb 93.83%
/engine/src/flutter/shell/platform/embedder/fixtures/external_texture_metal.png 3.18kb 0.34kb 89.36%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 23.74kb 2.55kb 89.24%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 23.44kb 2.56kb 89.08%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 14.80kb 1.71kb 88.45%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 14.76kb 1.71kb 88.42%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 25.20kb 3.08kb 87.78%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 24.94kb 3.44kb 86.22%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_root_surface_xformation.png 9.26kb 1.33kb 85.63%
/engine/src/flutter/shell/platform/embedder/fixtures/impeller_test.png 3.20kb 0.48kb 85.00%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_iPhone SE (3rd generation)_17.0_simulator.png 25.95kb 4.00kb 84.57%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 25.67kb 3.96kb 84.57%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_iPhone SE (3rd generation)_17.0_simulator.png 25.75kb 4.06kb 84.24%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 17.49kb 3.06kb 82.49%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 16.97kb 3.10kb 81.71%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 17.87kb 3.29kb 81.58%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 15.80kb 3.02kb 80.88%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png 21.21kb 4.42kb 79.15%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 16.98kb 3.65kb 78.50%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_impeller_iPhone SE (3rd generation)_17.0_simulator.png 16.93kb 3.66kb 78.37%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_impeller_iPhone SE (3rd generation)_17.0_simulator.png 17.01kb 3.70kb 78.26%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 25.87kb 5.80kb 77.59%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_impeller_iPhone SE (3rd generation)_17.0_simulator.png 18.02kb 4.04kb 77.56%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png 18.36kb 4.32kb 76.45%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone SE (3rd generation)_17.0_simulator.png 17.94kb 4.29kb 76.08%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 27.60kb 7.12kb 74.19%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_impeller_iPhone SE (3rd generation)_17.0_simulator.png 23.71kb 6.35kb 73.23%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_iPhone SE (3rd generation)_17.0_simulator.png 28.08kb 7.55kb 73.11%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_iPhone SE (3rd generation)_17.0_simulator.png 22.68kb 6.18kb 72.73%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_spawn_engine_works_iPhone SE (3rd generation)_17.0_simulator.png 22.68kb 6.18kb 72.73%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone SE (3rd generation)_17.0_simulator.png 27.51kb 7.63kb 72.25%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.83kb 6.35kb 72.18%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_spawn_engine_works_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.83kb 6.35kb 72.18%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 31.46kb 9.00kb 71.39%
/engine/src/flutter/shell/platform/embedder/fixtures/gradient_metal.png 44.36kb 12.82kb 71.11%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.58kb 6.65kb 70.54%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_with_root_layer_only.png 1.37kb 0.41kb 70.09%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_platform_layer_with_no_overlay.png 2.31kb 0.73kb 68.60%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_iPhone SE (3rd generation)_17.0_simulator.png 29.21kb 9.20kb 68.50%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.09kb 6.99kb 68.34%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone SE (3rd generation)_17.0_simulator.png 23.09kb 7.38kb 68.05%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.62kb 7.50kb 66.84%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 27.62kb 9.26kb 66.48%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_iPhone SE (3rd generation)_17.0_simulator.png 30.76kb 10.31kb 66.48%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone SE (3rd generation)_17.0_simulator.png 21.66kb 7.39kb 65.86%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_darwin_system_font_iPhone SE (3rd generation)_17.0_simulator.png 30.72kb 10.55kb 65.67%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_impeller_iPhone SE (3rd generation)_17.0_simulator.png 30.85kb 10.62kb 65.58%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone SE (3rd generation)_17.0_simulator.png 30.85kb 10.62kb 65.58%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_darwin_system_font_impeller_iPhone SE (3rd generation)_17.0_simulator.png 30.90kb 10.67kb 65.49%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_impeller_iPhone SE (3rd generation)_17.0_simulator.png 31.97kb 11.13kb 65.17%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 18.30kb 6.38kb 65.14%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 18.98kb 6.62kb 65.11%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png 19.71kb 7.15kb 63.72%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png 20.62kb 7.55kb 63.37%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png 20.29kb 7.46kb 63.26%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 22.59kb 8.32kb 63.15%
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.69.png 22.81kb 8.45kb 62.96%
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.69.png 22.79kb 8.45kb 62.94%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_iPhone SE (3rd generation)_17.0_simulator.png 32.77kb 12.15kb 62.92%
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.67.png 22.62kb 8.42kb 62.77%
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.67.png 22.60kb 8.42kb 62.75%
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.68.png 22.58kb 8.41kb 62.74%
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.68.png 22.57kb 8.41kb 62.72%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png 21.14kb 8.08kb 61.76%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png 26.24kb 10.08kb 61.57%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png 20.76kb 7.99kb 61.50%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_with_platform_layer_on_bottom.png 1.42kb 0.55kb 61.02%
/engine/src/flutter/testing/resources/performance_overlay_gold_60fps.png 16.15kb 6.53kb 59.54%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png 26.84kb 10.88kb 59.47%
/engine/src/flutter/testing/resources/performance_overlay_gold_90fps.png 15.88kb 6.46kb 59.33%
/engine/src/flutter/testing/resources/performance_overlay_gold_120fps.png 15.88kb 6.49kb 59.14%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 20.33kb 8.37kb 58.81%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png 31.09kb 13.14kb 57.73%
/engine/src/flutter/shell/platform/embedder/fixtures/scene_without_custom_compositor_with_xform.png 2.39kb 1.02kb 57.17%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_impeller_iPhone SE (3rd generation)_17.0_simulator.png 20.09kb 8.64kb 57.01%
/dev/tools/vitool/test_assets/empty_svg_2_100x50.svg 0.18kb 0.08kb 56.04%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_impeller_iPhone SE (3rd generation)_17.0_simulator.png 23.35kb 10.29kb 55.91%
/engine/src/flutter/shell/platform/embedder/fixtures/scene_without_custom_compositor.png 2.57kb 1.14kb 55.73%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_software.png 2.55kb 1.14kb 55.54%
/engine/src/flutter/shell/platform/embedder/fixtures/compositor.png 2.55kb 1.14kb 55.51%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_iPhone SE (3rd generation)_17.0_simulator.png 41.39kb 19.49kb 52.92%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png 23.96kb 11.30kb 52.83%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone SE (3rd generation)_17.0_simulator.png 24.59kb 11.68kb 52.52%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone SE (3rd generation)_17.0_simulator.png 23.54kb 11.31kb 51.94%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone SE (3rd generation)_17.0_simulator.png 23.46kb 11.29kb 51.87%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png 26.71kb 13.13kb 50.84%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png 26.89kb 13.25kb 50.71%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png 30.33kb 15.40kb 49.23%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png 27.09kb 14.11kb 47.92%
/engine/src/flutter/shell/platform/embedder/fixtures/dpr_xform.png 56.25kb 29.47kb 47.61%
/engine/src/flutter/shell/platform/embedder/fixtures/vk_gradient.png 69.55kb 37.59kb 45.95%
/engine/src/flutter/shell/platform/embedder/fixtures/gradient.png 69.55kb 37.59kb 45.95%
/engine/src/flutter/shell/platform/embedder/fixtures/gradient_xform.png 70.80kb 38.90kb 45.06%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png 30.40kb 16.95kb 44.24%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone SE (3rd generation)_17.0_simulator.png 32.89kb 18.58kb 43.51%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png 34.21kb 19.47kb 43.09%
/engine/src/flutter/shell/platform/embedder/fixtures/vk_dpr_noxform.png 61.96kb 35.42kb 42.83%
/engine/src/flutter/shell/platform/embedder/fixtures/dpr_noxform.png 61.97kb 35.43kb 42.82%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png 41.10kb 23.71kb 42.31%
/engine/src/flutter/shell/platform/embedder/fixtures/arc_end_caps.png 5.87kb 3.40kb 42.00%
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png 46.56kb 27.80kb 40.30%
/engine/src/flutter/shell/platform/embedder/fixtures/verifyb143464703_soft_noxform.png 15.38kb 9.92kb 35.47%
/engine/src/flutter/shell/platform/embedder/fixtures/impeller_text_test.png 3.25kb 2.15kb 33.86%
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png 14.45kb 9.69kb 32.93%
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png 45.89kb 31.58kb 31.18%
/engine/src/flutter/docs/rbe/luci.png 98.61kb 70.27kb 28.73%
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png 1.40kb 1.00kb 28.62%
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png 5.79kb 4.27kb 26.23%
/engine/src/flutter/lib/ui/fixtures/DashInNooglerHat.jpg 346.37kb 257.43kb 25.68%
/engine/src/flutter/lib/ui/fixtures/DashInNooglerHat%20WithSpace.jpg 346.37kb 257.43kb 25.68%
/engine/src/flutter/shell/platform/embedder/fixtures/verifyb143464703.png 9.24kb 6.89kb 25.48%
/engine/src/flutter/lib/web_ui/test/ui/image/sample_image1.png 14.40kb 10.83kb 24.76%
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png 3.20kb 2.60kb 18.77%
/engine/src/flutter/docs/flutter_logo.png 4.16kb 3.53kb 15.18%
/dev/tools/vitool/test_assets/illegal_svg_multiple_roots.svg 0.10kb 0.09kb 12.87%
/dev/tools/vitool/test_assets/empty_svg_1_48x48.svg 0.09kb 0.08kb 12.77%
/dev/tools/vitool/test_assets/bar_group_opacity.svg 0.22kb 0.20kb 11.01%
/dev/tools/vitool/test_assets/bars_group.svg 0.30kb 0.26kb 10.86%
/engine/src/flutter/lib/ui/fixtures/Horizontal.jpg 11.08kb 9.90kb 10.60%
/dev/tools/vitool/test_assets/bar_group_scale.svg 0.23kb 0.21kb 9.62%
/dev/tools/vitool/test_assets/bar_group_translate.svg 0.24kb 0.21kb 9.50%
/dev/tools/vitool/test_assets/leading_space_path_command.svg 0.13kb 0.12kb 9.49%
/dev/tools/vitool/test_assets/illegal_transform.svg 0.24kb 0.22kb 9.39%
/engine/src/flutter/lib/ui/fixtures/DisplayP3Logo.jpg 4.77kb 4.33kb 9.19%
/dev/tools/vitool/test_assets/bar_group_rotate_scale.svg 0.25kb 0.23kb 8.98%
/dev/tools/vitool/test_assets/illegal_path.svg 0.14kb 0.13kb 8.33%
/engine/src/flutter/lib/ui/fixtures/four_frame_with_reuse_end.png 0.50kb 0.46kb 7.78%
/engine/src/flutter/lib/ui/fixtures/DisplayP3Logo.png 2.95kb 2.73kb 7.44%
/dev/tools/vitool/test_assets/horizontal_bar.svg 0.18kb 0.17kb 7.14%
/dev/tools/vitool/test_assets/horizontal_bar_relative.svg 0.18kb 0.17kb 7.10%
/dev/tools/vitool/test_assets/close_path_in_middle.svg 0.19kb 0.18kb 6.60%
/engine/src/flutter/lib/ui/fixtures/four_frame_with_reuse.gif 1.95kb 1.84kb 5.46%
/engine/src/flutter/lib/ui/fixtures/impeller_four_frame_with_reuse_end.png 0.49kb 0.46kb 5.39%
/engine/src/flutter/impeller/fixtures/monkey.png 603.17kb 572.78kb 5.04%
/engine/src/flutter/shell/common/fixtures/hello_loop_2.gif 28.64kb 27.36kb 4.46%
/engine/src/flutter/lib/ui/fixtures/hello_loop_2.gif 28.64kb 27.36kb 4.46%
/engine/src/flutter/impeller/fixtures/blend_mode_src.png 33.71kb 32.51kb 3.55%
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_blue_square.png 2.10kb 2.05kb 2.19%
/engine/src/flutter/lib/ui/fixtures/heart_end.png 38.64kb 37.81kb 2.17%
/engine/src/flutter/lib/ui/fixtures/impeller_heart_end.png 38.63kb 37.81kb 2.14%
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_red_square.png 2.41kb 2.37kb 1.82%
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_green_square.png 3.22kb 3.17kb 1.61%
/engine/src/flutter/lib/ui/fixtures/Horizontal.png 24.98kb 24.63kb 1.37%
/engine/src/flutter/shell/common/fixtures/shelltest_screenshot.png 0.31kb 0.31kb 0.63%
/engine/src/flutter/docs/dart_split_aot_compilation.svg 107.78kb 107.31kb 0.43%
/engine/src/flutter/impeller/fixtures/blend_mode_dst.png 170.59kb 170.13kb 0.27%
/engine/src/flutter/docs/deferred_components_architecture.svg 298.78kb 297.96kb 0.27%
/engine/src/flutter/docs/deferred_components_call_lifecycle.svg 251.94kb 251.49kb 0.18%
/engine/src/flutter/docs/flutter_overview.svg 185.94kb 185.80kb 0.08%
/engine/src/flutter/impeller/fixtures/kalimba.jpg 66.47kb 66.46kb 0.01%
/examples/image_list/images/coast.jpg 197.60kb 197.60kb 0.00%
/engine/src/flutter/impeller/fixtures/airplane.jpg 69.71kb 69.71kb 0.00%
Total : 5,986.87kb 4,024.88kb 32.77%

📝 docs | :octocat: repo | 🙋🏾 issues | 🏪 marketplace

~Imgbot - Part of Optimole family

bernaferrari pushed a commit that referenced this pull request May 25, 2022
flutter#104110)

* Reland "Fix Backbutton is not displayed when there is a endDrawer (flutter#102093)"

This reverts commit a4a8e73.

* add todos
bernaferrari pushed a commit that referenced this pull request Jun 12, 2023
…extMenuBuilder (flutter#128114)

Close flutter#128113 

Fun fact: This is caught by monkey testing I have written (will soon be open sourced as well) that runs on my app!

Without the fix, the test fails as expected:

<details>

```
(base) �  flutter git:(feat/text-field-npe) /Volumes/MyExternal/ExternalRefCode/flutter/bin/flutter test test/material/text_field_test.dart --name 'changes from default'
00:06 +0: context menu contextMenuBuilder changes from default to null                                                                
��� EXCEPTION CAUGHT BY WIDGETS LIBRARY ������������������������������������������������������������
The following _TypeError was thrown building
_OverlayEntryWidget-[LabeledGlobalKey<_OverlayEntryWidgetState>#e3717](state:
_OverlayEntryWidgetState#7666a):
Null check operator used on a null value

When the exception was thrown, this was the stack:
#0      EditableTextState._createSelectionOverlay.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:3331:43)
#1      SelectionOverlay.showToolbar.<anonymous closure> (package:flutter/src/widgets/text_selection.dart:1357:36)
#2      ContextMenuController.show.<anonymous closure> (package:flutter/src/widgets/context_menu_controller.dart:65:54)
#3      _OverlayEntryWidgetState.build (package:flutter/src/widgets/overlay.dart:351:36)
#4      StatefulElement.build (package:flutter/src/widgets/framework.dart:5198:27)
#5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5086:15)
#6      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
#7      Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#8      StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#9      Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#10     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:6093:32)
flutter#11     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6595:17)
flutter#12     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#13     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#14     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#15     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#16     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#17     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#18     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#19     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#20     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#21     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#22     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#23     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#24     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#25     _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#26     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#27     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#28     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#29     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#30     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#31     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#32     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#33     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#34     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#35     _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#36     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#37     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#38     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#39     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#40     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#41     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#42     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#43     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#44     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#45     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#46     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#47     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#48     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#49     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#50     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#51     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#52     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#53     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#54     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#55     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#56     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#57     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#58     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#59     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#60     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#61     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#62     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#63     _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#64     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#65     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#66     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#67     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#68     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#69     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#70     StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#71     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#72     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#73     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#74     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#75     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#76     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#77     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#78     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#79     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#80     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#81     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#82     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#83     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#84     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#85     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#86     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#87     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#88     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#89     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#90     StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#91     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#93     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#94     ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#95     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#96     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#97     Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#98     StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#99     Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#100    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#101    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#102    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#103    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#104    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#105    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#106    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#107    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#108    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#109    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#110    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#111    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#112    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#113    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#114    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#115    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#116    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#117    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#118    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#119    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#120    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#121    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#122    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#123    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#124    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#125    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#126    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#127    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#128    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#129    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#130    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#131    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#132    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#133    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#134    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#135    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#136    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#137    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#138    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#139    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#140    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#141    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#142    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#143    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#144    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#145    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#146    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#147    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#148    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#149    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#150    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#151    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#152    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#153    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#154    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#155    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#156    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#157    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#158    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#159    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#160    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#161    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#162    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#163    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#164    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#165    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#166    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#167    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#168    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#169    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#170    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#171    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#172    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#173    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#174    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#175    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#176    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#177    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#178    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#179    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#180    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#181    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#182    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#183    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#184    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#185    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#186    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#187    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#188    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#189    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#190    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#191    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#192    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#193    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#194    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#195    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#196    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#197    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#198    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#199    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#200    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#201    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#202    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#203    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#204    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#205    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#206    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#207    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#208    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#209    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#210    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#211    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#212    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#213    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#214    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#215    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#216    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#217    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#218    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#219    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#220    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#221    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#222    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#223    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#224    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#225    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#226    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#227    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#228    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#229    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#230    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#231    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#232    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#233    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#234    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#235    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#236    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#237    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#238    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#239    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#240    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#241    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#242    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#243    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#244    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#245    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#246    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#247    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#248    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#249    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#250    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#251    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#252    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#253    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#254    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#255    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#256    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#257    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#258    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#259    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#260    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#261    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#262    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#263    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#264    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#265    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#266    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#267    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#268    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#269    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#270    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#271    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#272    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#273    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#274    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#275    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#276    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#277    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6442:14)
flutter#278    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#279    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#280    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#281    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#282    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
flutter#283    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#284    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#285    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#286    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#287    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#288    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#289    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#290    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#291    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#292    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#293    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#294    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#295    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#296    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#297    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#298    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#299    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#300    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#301    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#302    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#303    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#304    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#305    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#306    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#307    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
flutter#308    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#309    StatefulElement.update (package:flutter/src/widgets/framework.dart:5274:5)
flutter#310    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#311    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#312    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#313    ProxyElement.update (package:flutter/src/widgets/framework.dart:5417:5)
flutter#314    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#315    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
flutter#316    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#317    StatelessElement.update (package:flutter/src/widgets/framework.dart:5162:5)
flutter#318    Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
flutter#319    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1253:16)
flutter#320    RenderObjectToWidgetElement.update (package:flutter/src/widgets/binding.dart:1230:5)
flutter#321    RenderObjectToWidgetElement.performRebuild (package:flutter/src/widgets/binding.dart:1244:7)
flutter#322    Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
flutter#323    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2780:19)
flutter#324    AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1396:19)
flutter#325    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
flutter#326    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
flutter#327    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
flutter#328    AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1246:9)
flutter#331    TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
flutter#332    AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1232:27)
flutter#333    WidgetTester._pumpWidget (package:flutter_test/src/widget_tester.dart:587:20)
flutter#334    WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:572:14)
flutter#337    TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
flutter#338    WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:571:27)
flutter#339    main.<anonymous closure>.<anonymous closure> (file:///Volumes/MyExternal/ExternalRefCode/flutter/packages/flutter/test/material/text_field_test.dart:15687:20)
<asynchronous suspension>
<asynchronous suspension>
(elided 5 frames from dart:async and package:stack_trace)

����������������������������������������������������������������������������������������������������
00:06 +0 -1: context menu contextMenuBuilder changes from default to null [E]                                                         
  Test failed. See exception logs above.
  The test description was: contextMenuBuilder changes from default to null
  
To run this test again: /Volumes/MyExternal/ExternalRefCode/flutter/bin/cache/dart-sdk/bin/dart test /Volumes/MyExternal/ExternalRefCode/flutter/packages/flutter/test/material/text_field_test.dart -p vm --plain-name 'context menu contextMenuBuilder changes from default to null'
00:06 +0 -1: Some tests failed.                                                                                                       
(base) �  flutter git:(feat/text-field-npe) 

```

</details>
bernaferrari pushed a commit that referenced this pull request Aug 8, 2023
This is a follow up to the following pull requests:
- flutter#124514

I was finally able to reproduce this bug and found out why it was happening. Consider this code:

```dart
GestureDetector(
  behavior: HitTestBehavior.translucent,
  // Note: Make sure onTap is not null to ensure events
  // are captured by `GestureDetector`
  onTap: () {},
  child: _shouldShowSlider
    ? Slider(value: _value, onChanged: _handleSlide)
    : const SizedBox.shrink().
)
```

Runtime exception happens when:

1. User taps and holds the Slider (drag callback captured by `GestureDetector`)
2. `_shouldShowSlider` changes to false, Slider disappears and unmounts, and unregisters `_handleSlide`. But the callback is still registered by `GestureDetector`
3. Users moves finger as if Slider were still there
4. Drag callback is invoked, `_SliderState.showValueIndicator` is called
5. Exception - Slider is already disposed

This pull request fixes it by adding a mounted check inside `_SliderState.showValueIndicator` to ensure the Slider is actually mounted at the time of invoking drag event callback. I've added a unit test that will fail without this change.

The error stack trace is:

```
The following assertion was thrown while handling a gesture:
This widget has been unmounted, so the State no longer has a context (and should be considered
defunct).
Consider canceling any active work during "dispose" or using the "mounted" getter to determine if
the State is still active.

When the exception was thrown, this was the stack:
#0      State.context.<anonymous closure> (package:flutter/src/widgets/framework.dart:950:9)
#1      State.context (package:flutter/src/widgets/framework.dart:956:6)
#2      _SliderState.showValueIndicator (package:flutter/src/material/slider.dart:968:18)
#3      _RenderSlider._startInteraction (package:flutter/src/material/slider.dart:1487:12)
#4      _RenderSlider._handleDragStart (package:flutter/src/material/slider.dart:1541:5)
#5      DragGestureRecognizer._checkStart.<anonymous closure> (package:flutter/src/gestures/monodrag.dart:531:53)
#6      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:275:24)
#7      DragGestureRecognizer._checkStart (package:flutter/src/gestures/monodrag.dart:531:7)
flutter#8      DragGestureRecognizer._checkDrag (package:flutter/src/gestures/monodrag.dart:498:5)
flutter#9      DragGestureRecognizer.acceptGesture (package:flutter/src/gestures/monodrag.dart:431:7)
flutter#10     _CombiningGestureArenaMember.acceptGesture (package:flutter/src/gestures/team.dart:45:14)
flutter#11     GestureArenaManager._resolveInFavorOf (package:flutter/src/gestures/arena.dart:281:12)
flutter#12     GestureArenaManager._resolve (package:flutter/src/gestures/arena.dart:239:9)
flutter#13     GestureArenaEntry.resolve (package:flutter/src/gestures/arena.dart:53:12)
flutter#14     _CombiningGestureArenaMember._resolve (package:flutter/src/gestures/team.dart:85:15)
flutter#15     _CombiningGestureArenaEntry.resolve (package:flutter/src/gestures/team.dart:19:15)
flutter#16     OneSequenceGestureRecognizer.resolve (package:flutter/src/gestures/recognizer.dart:375:13)
flutter#17     DragGestureRecognizer.handleEvent (package:flutter/src/gestures/monodrag.dart:414:13)
flutter#18     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
flutter#19     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:143:9)
flutter#20     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:625:13)
flutter#21     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
flutter#22     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
flutter#23     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:488:19)
flutter#24     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:468:22)
flutter#25     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:439:11)
flutter#26     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:413:7)
flutter#27     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:376:5)
flutter#28     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:323:7)
flutter#29     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:292:9)
flutter#30     _invoke1 (dart:ui/hooks.dart:186:13)
flutter#31     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:433:7)
flutter#32     _dispatchPointerDataPacket (dart:ui/hooks.dart:119:31)

Handler: "onStart"
Recognizer:
  HorizontalDragGestureRecognizer#a5df2
```

*List which issues are fixed by this PR. You must list at least one issue.*

Internal bug: b/273666179, b/192329942

*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
bernaferrari pushed a commit that referenced this pull request Oct 30, 2023
flutter#137242)

This reverts commit d36a843
(flutter#136809)

This fails even tho golden files were approved and `golden test` pending
was cleared and green and `autosubmit` successfully merged the PR.


```console
02:42 +4618 ~5: C:/b/s/w/ir/x/w/flutter/packages/flutter/test/material/outlined_button_test.dart: Material3 - OutlinedButton, OutlinedButton.icon defaults
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following SkiaException was thrown while running async test code:
Skia Gold received an unapproved image in post-submit
testing. Golden file images in flutter/flutter are triaged
in pre-submit during code review for the given PR.

Visit https://flutter-gold.skia.org/ to view and approve
the image(s), or revert the associated change. For more
information, visit the wiki:
https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter

Debug information for Gold --------------------------------
stdout: Given image with hash 37275e74c51f98d7abd7f301c5c94ac1 for test
material.outlined_button.ink_sparkle.default
Expectation for test: 531f5fa74908d2e6db2b8fd86a6b8662 (positive)
Expectation for test: 683e368ff51d947a3d63c2a5f4568cf6 (positive)
Expectation for test: 749241ff0fa21595b2c6cb551fd40b68 (positive)
Expectation for test: aaf9ac1328614d6c9f4540308bc86f62 (positive)
Expectation for test: b31a50440c7dd31b10cacd9e7b5c6b86 (positive)
Expectation for test: c0a7c8c625b69ddc695a770f28abd403 (positive)
Expectation for test: f1f66ce931c2ef33ebcb699a637025a6 (positive)
Expectation for test: 2d32e34efc1d7ca4cd12965402fb76ff (positive)
Untriaged or negative image:
https://flutter-gold.skia.org/detail?grouping=name%3Dmaterial.outlined_button.ink_sparkle.default%26source_type%3Dflutter&digest=37275e74c51f98d7abd7f301c5c94ac1


stderr: Test: material.outlined_button.ink_sparkle.default FAIL


result-state.json: No result file found.

When the exception was thrown, this was the stack:
#0      SkiaGoldClient.imgtestAdd (package:flutter_goldens_client/skia_client.dart:243:7)
<asynchronous suspension>
#1      MatchesGoldenFile.matchAsync.<anonymous closure> (package:flutter_test/src/_matchers_io.dart:118:32)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from dart:async)

The exception was caught asynchronously.
════════════════════════════════════════════════════════════════════════════════════════════════════
02:42 +4618 ~5 -1: C:/b/s/w/ir/x/w/flutter/packages/flutter/test/material/menu_anchor_test.dart: Menu functions keyboard directional traversal works
02:42 +4618 ~5 -1: C:/b/s/w/ir/x/w/flutter/packages/flutter/test/material/outlined_button_test.dart: Material3 - OutlinedButton, OutlinedButton.icon defaults [E]
  Test failed. See exception logs above.
  The test description was: Material3 - OutlinedButton, OutlinedButton.icon defaults
  
02:42 +4619 ~5 -1: C:/b/s/w/ir/x/w/flutter/packages/flutter/test/material/menu_anchor_test.dart: Menu functions keyboard directional traversal works
```

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
bernaferrari pushed a commit that referenced this pull request Mar 16, 2024
A test was failing silently because of this (see
flutter#144353 and fixed in
flutter#144709). The failure went
undetected for months. Ideally, this should have been a regular
non-silent failure. This change makes that so. `package:test` can
properly handle reported exceptions outside of test cases. With this
change, the test fails as follows:

```
00:03 +82: Smoke test material/color_scheme/dynamic_content_color.0.dart
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following assertion was thrown running a test (but after the test had completed):
setState() called after dispose(): _DynamicColorExampleState#1cd37(lifecycle state: defunct, not
mounted)
This error happens if you call setState() on a State object for a widget that no longer appears in
the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error
can occur when code calls setState() from a timer or an animation callback.
The preferred solution is to cancel the timer or stop listening to the animation in the dispose()
callback. Another solution is to check the "mounted" property of this object before calling
setState() to ensure the object is still in the tree.
This error might indicate a memory leak if setState() is being called because another object is
retaining a reference to this State object after it has been removed from the tree. To avoid memory
leaks, consider breaking the reference to this object during dispose().

When the exception was thrown, this was the stack:
#0      State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1167:9)
#1      State.setState (package:flutter/src/widgets/framework.dart:1202:6)
#2      _DynamicColorExampleState._updateImage (package:flutter_api_samples/material/color_scheme/dynamic_content_color.0.dart:191:5)
<asynchronous suspension>
════════════════════════════════════════════════════════════════════════════════════════════════════
00:03 +81 -1: Smoke test material/context_menu/context_menu_controller.0.dart
00:03 +81 -1: Smoke test material/color_scheme/dynamic_content_color.0.dart [E]
  Test failed. See exception logs above.
  The test description was: Smoke test material/color_scheme/dynamic_content_color.0.dart
  
  This test failed after it had already completed.
  Make sure to use a matching library which informs the test runner
  of pending async work.
```
bernaferrari pushed a commit that referenced this pull request Mar 16, 2024
…r#144706)" (flutter#144970)

Reverts: flutter#144706
Initiated by: gspencergoog
Reason for reverting: This has broken the tree because some tests are still failing post completion. This particular one looks like it might have to do with a gold image not existing.
Original PR Author: goderbauer

Reviewed By: {Piinks}

This change reverts the following previous change:
A test was failing silently because of this (see flutter#144353 and fixed in flutter#144709). The failure went undetected for months. Ideally, this should have been a regular non-silent failure. This change makes that so. `package:test` can properly handle reported exceptions outside of test cases. With this change, the test fails as follows:

```
00:03 +82: Smoke test material/color_scheme/dynamic_content_color.0.dart
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following assertion was thrown running a test (but after the test had completed):
setState() called after dispose(): _DynamicColorExampleState#1cd37(lifecycle state: defunct, not
mounted)
This error happens if you call setState() on a State object for a widget that no longer appears in
the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error
can occur when code calls setState() from a timer or an animation callback.
The preferred solution is to cancel the timer or stop listening to the animation in the dispose()
callback. Another solution is to check the "mounted" property of this object before calling
setState() to ensure the object is still in the tree.
This error might indicate a memory leak if setState() is being called because another object is
retaining a reference to this State object after it has been removed from the tree. To avoid memory
leaks, consider breaking the reference to this object during dispose().

When the exception was thrown, this was the stack:
#0      State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1167:9)
#1      State.setState (package:flutter/src/widgets/framework.dart:1202:6)
#2      _DynamicColorExampleState._updateImage (package:flutter_api_samples/material/color_scheme/dynamic_content_color.0.dart:191:5)
<asynchronous suspension>
════════════════════════════════════════════════════════════════════════════════════════════════════
00:03 +81 -1: Smoke test material/context_menu/context_menu_controller.0.dart
00:03 +81 -1: Smoke test material/color_scheme/dynamic_content_color.0.dart [E]
  Test failed. See exception logs above.
  The test description was: Smoke test material/color_scheme/dynamic_content_color.0.dart
  
  This test failed after it had already completed.
  Make sure to use a matching library which informs the test runner
  of pending async work.
```
bernaferrari pushed a commit that referenced this pull request Aug 13, 2024
New analyze error in an unrelated PR 
```
╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════
║ /b/s/w/ir/x/w/flutter/CODEOWNERS:13: trailing U+0020 space character
╚═══════════════════════════════════════════════════════════════════════════════
```

https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8744032390138579057/+/u/run_test.dart_for_analyze_shard_and_subshard_None/stdout

On this commit 

flutter@2537b49
bernaferrari pushed a commit that referenced this pull request Sep 21, 2024
When attempting to release the Flutter 3.24.1 hotfix, Flutter framework post submits failed due to the following error:

```
���ERROR #1���������������������������������������������������������������������
� UNEXPECTED ERROR!
� Exception: Found unexpected binary in cache: /Volumes/Work/s/w/ir/x/w/flutter/bin/cache/artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64_x86_64-simulator/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter
� #0      verifyExist (file:///Volumes/Work/s/w/ir/x/w/flutter/dev/bots/suite_runners/run_verify_binaries_codesigned_tests.dart:150:12)
� <asynchronous suspension>
� #1      verifyCodesignedTestRunner (file:///Volumes/Work/s/w/ir/x/w/flutter/dev/bots/suite_runners/run_verify_binaries_codesigned_tests.dart:28:3)
� <asynchronous suspension>
� #2      _runFromList (file:///Volumes/Work/s/w/ir/x/w/flutter/dev/bots/utils.dart:601:5)
� <asynchronous suspension>
� #3      main (file:///Volumes/Work/s/w/ir/x/w/flutter/dev/bots/test.dart:125:5)
� <asynchronous suspension>
� 
� The test.dart script should be corrected to catch this error and call foundError().
� Some tests are likely to have been skipped.
��������������������������������������������������������������������������������
```

I've updated the tests to include the listed artifact.  

### Open questions
1. Is it possible that the test failed only on the first binary?
2. Do we expect a need to add the remainder of the [entitlement changes](flutter/engine@c9b9d57)?
3. I am under the assumption that the bots pull from master and are not branch specific, is this a correct assumption?

CC @christopherfujino @cbracken
bernaferrari pushed a commit that referenced this pull request Sep 21, 2024
…lutter#154715)

Fixes: flutter#154580
Previous PR: flutter#154677
More info: flutter#154580 (comment)

The errors described in the original issue [are still occurring](flutter#154580 (comment)) after flutter#154677. Before this change, the repro [broken_demo](https://github.com/rajveermalviya/broken_demo) mentioned in the original issue logs:

```shell-session
$ flutter run --release
Launching lib/main.dart on sdk gphone64 arm64 in release mode...
Running Gradle task 'assembleRelease'...                           14.5s
� Built build/app/outputs/flutter-apk/app-release.apk (7.4MB)
Installing build/app/outputs/flutter-apk/app-release.apk...        739ms

Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
W/FlutterEngineCxnRegstry(13284): Attempted to register plugin (a0.a@53b33b6) but it was already registered with this FlutterEngine (d0.c@8baa8b7).
E/flutter (13284): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
E/flutter (13284): #0      PathProviderApi.getApplicationSupportPath (package:path_provider_android/messages.g.dart:65)
E/flutter (13284): <asynchronous suspension>
E/flutter (13284): #1      getApplicationSupportDirectory (package:path_provider/path_provider.dart:78)
E/flutter (13284): <asynchronous suspension>
E/flutter (13284): #2      _BorkenDemoHomePageState.build.<anonymous closure> (package:broken_demo/main.dart:44)
E/flutter (13284): <asynchronous suspension>
E/flutter (13284): 
```

After this change:
```shell-session
$ flutter run --release
Launching lib/main.dart on sdk gphone64 arm64 in release mode...
Running Gradle task 'assembleRelease'...                           15.2s
� Built build/app/outputs/flutter-apk/app-release.apk (7.4MB)
Installing build/app/outputs/flutter-apk/app-release.apk...        857ms

Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
I/flutter (13040): path_provider: Directory: '/data/user/0/com.example.broken_demo/files'
```
bernaferrari pushed a commit that referenced this pull request Sep 21, 2024
flutter#154645)

### Problem

Enabling the Swift Package Manager feature caused post-submit tests to fail on Mac x64 hosts:

<details>
<summary>Example error...</summary>

https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20rrect_blur_perf_ios__timeline_summary/575/overview

```
� ... flutter --verbose assemble ... -dIosArchs=x86_64 ... profile_unpack_ios

Target profile_unpack_ios failed:
Exception: Binary ... build/ios/Profile-iphoneos/Flutter.framework/Flutter does not contain x86_64.

Running lipo -info:
Non-fat file: ... build/ios/Profile-iphoneos/Flutter.framework/Flutter is architecture: arm64

#0      UnpackIOS._thinFramework (package:flutter_tools/src/build_system/targets/ios.dart:351:7)
<asynchronous suspension>
#1      UnpackIOS.build (package:flutter_tools/src/build_system/targets/ios.dart:298:5)
<asynchronous suspension>
...
```

</details>

### Reproduction

On a mac x64 host:

1. Switch to the latest master channel: `flutter channel master ; flutter upgrade`
1. Disable the Swift Package Manager feature: `flutter config --no-enable-swift-package-manager`
2. Create a Flutter project
2. [Edit the Xcode project manually to add the prepare pre-action](https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-app-developers#step-2-add-run-prepare-flutter-framework-script-pre-action)
3. Run `flutter run` (`flutter build ios` does not reproduce this issue).

### Background

Previously, the Flutter framework was unpacked in the Xcode target's build. Unfortunately, this happens after Swift packages are built; this prevented Swift packages from using the Flutter framework.

To fix this, we added an Xcode pre-action that unpacks the Flutter framework _before_ Swift Package Manager builds packages. The Xcode target still runs the Flutter framework unpack step, but this step no-ops if the unpack step has the exact same inputs. 

```mermaid
flowchart LR
  A[flutter run -d iphone] --> B(Build Xcode project)
  B --> C(Xcode 'prepare framework' pre-action)
  B --> G[Build Swift packages]
  B --> D(Build 'Runner' target)
  C --> E[Unpack Flutter framework #1]
  D --> F["
  Unpack Flutter framework #2
  (No-ops if inputs are same as #1)
  "]
```

flutter#150052 added an optimization that made it more likely the second unpack step no-ops by fixing a case where the target architecture input could be different:

> When using SwiftPM, we use `flutter assemble` in an Xcode Pre-action to run the `debug_unpack_macos` (or profile/release) target. This target is also later used in a Run Script build phase. Depending on `ARCHS` build setting, the Flutter/FlutterMacOS binary is thinned. In the Run Script build phase, `ARCHS` is filtered to the active arch. However, in the Pre-action it doesn't always filter to the active arch. As a workaround, assume arm64 if the [`NATIVE_ARCH`](https://developer.apple.com/documentation/xcode/build-settings-reference/#NATIVEARCH) is arm, otherwise assume x86_64.

This optimization is only applied if [`ONLY_ACTIVE_ARCH`](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW157) is `YES`.

> [!IMPORTANT]
> [`ONLY_ACTIVE_ARCH`](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW157)'s name is misleading. It specifies whether the product includes only object code for the native architecture.
>
> A value of `YES` means the product includes only code for the native architecture ([NATIVE_ARCH](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW59)).
>
> A value of `NO` means the product includes code for the architectures specified in [ARCHS (Architectures)](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW62).

### Problem

`buildXcodeProject` incorrectly always sets `ONLY_ACTIVE_ARCH` to `YES` if the Xcode built is for a single architecture:

https://github.com/flutter/flutter/blob/6abef222514e8039bde5c47ab7864abbc4caf7e8/packages/flutter_tools/lib/src/ios/mac.dart#L353-L361

This is incorrect! If the host architecture is `x64` but the target architecture is `arm64`, [`ONLY_ACTIVE_ARCH`](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW157) should be `NO`.

This caused the prepare pre-action to incorrectly use x64 as the target architecture for arm64 devices on an x64 host, which in turn caused builds to fail if Swift Package Manager was enabled.

### Solution

This change updates `buildXcodeProject` to set `ONLY_ACTIVE_ARCH` correctly.

This change also updates the prepare pre-action's to be more conservative in applying the optimization that filters the target architecture. This ensures that the build still works (but without the optimization) if `ONLY_ACTIVE_ARCH` is incorrectly set.

Follow-up PR: flutter#154649

This unblocks: flutter#151567

### DeviceLab test

This problem reproduces if you `flutter run` to an iPhone Arm64 device from an x64 mac host with the Swift Package Manager feature enabled.

I ran an affected DeviceLab test to verify the fix works as expected:

Description | CI test | Result
-- | -- | --
SwiftPM enabled without this fix: flutter#154750 | [Link](https://ci.chromium.org/ui/p/flutter/builders/try.shadow/Mac_ios%20rrect_blur_perf_ios__timeline_summary/7/overview) | � 
SwiftPM enabled with this fix: flutter#154749 | [Link](https://ci.chromium.org/ui/p/flutter/builders/try.shadow/Mac_ios%20rrect_blur_perf_ios__timeline_summary/8/overview) | â�
bernaferrari and others added 2 commits December 20, 2024 17:50
*Total -- 5,986.87kb -> 4,024.88kb (32.77%)

/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 22.02kb -> 0.88kb (96%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 14.03kb -> 0.87kb (93.83%)
/engine/src/flutter/shell/platform/embedder/fixtures/external_texture_metal.png -- 3.18kb -> 0.34kb (89.36%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 23.74kb -> 2.55kb (89.24%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 23.44kb -> 2.56kb (89.08%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 14.80kb -> 1.71kb (88.45%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 14.76kb -> 1.71kb (88.42%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 25.20kb -> 3.08kb (87.78%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 24.94kb -> 3.44kb (86.22%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_root_surface_xformation.png -- 9.26kb -> 1.33kb (85.63%)
/engine/src/flutter/shell/platform/embedder/fixtures/impeller_test.png -- 3.20kb -> 0.48kb (85%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_iPhone SE (3rd generation)_17.0_simulator.png -- 25.95kb -> 4.00kb (84.57%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 25.67kb -> 3.96kb (84.57%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_iPhone SE (3rd generation)_17.0_simulator.png -- 25.75kb -> 4.06kb (84.24%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 17.49kb -> 3.06kb (82.49%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 16.97kb -> 3.10kb (81.71%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 17.87kb -> 3.29kb (81.58%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 15.80kb -> 3.02kb (80.88%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 21.21kb -> 4.42kb (79.15%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 16.98kb -> 3.65kb (78.5%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_after_moved_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 16.93kb -> 3.66kb (78.37%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 17.01kb -> 3.70kb (78.26%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 25.87kb -> 5.80kb (77.59%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rect_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 18.02kb -> 4.04kb (77.56%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 18.36kb -> 4.32kb (76.45%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone SE (3rd generation)_17.0_simulator.png -- 17.94kb -> 4.29kb (76.08%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 27.60kb -> 7.12kb (74.19%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 23.71kb -> 6.35kb (73.23%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_iPhone SE (3rd generation)_17.0_simulator.png -- 28.08kb -> 7.55kb (73.11%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_iPhone SE (3rd generation)_17.0_simulator.png -- 22.68kb -> 6.18kb (72.73%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_spawn_engine_works_iPhone SE (3rd generation)_17.0_simulator.png -- 22.68kb -> 6.18kb (72.73%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone SE (3rd generation)_17.0_simulator.png -- 27.51kb -> 7.63kb (72.25%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.83kb -> 6.35kb (72.18%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_spawn_engine_works_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.83kb -> 6.35kb (72.18%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 31.46kb -> 9.00kb (71.39%)
/engine/src/flutter/shell/platform/embedder/fixtures/gradient_metal.png -- 44.36kb -> 12.82kb (71.11%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.58kb -> 6.65kb (70.54%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_with_root_layer_only.png -- 1.37kb -> 0.41kb (70.09%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_platform_layer_with_no_overlay.png -- 2.31kb -> 0.73kb (68.6%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_iPhone SE (3rd generation)_17.0_simulator.png -- 29.21kb -> 9.20kb (68.5%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.09kb -> 6.99kb (68.34%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone SE (3rd generation)_17.0_simulator.png -- 23.09kb -> 7.38kb (68.05%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.62kb -> 7.50kb (66.84%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 27.62kb -> 9.26kb (66.48%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_iPhone SE (3rd generation)_17.0_simulator.png -- 30.76kb -> 10.31kb (66.48%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone SE (3rd generation)_17.0_simulator.png -- 21.66kb -> 7.39kb (65.86%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_darwin_system_font_iPhone SE (3rd generation)_17.0_simulator.png -- 30.72kb -> 10.55kb (65.67%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 30.85kb -> 10.62kb (65.58%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_background_foreground_iPhone SE (3rd generation)_17.0_simulator.png -- 30.85kb -> 10.62kb (65.58%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_darwin_system_font_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 30.90kb -> 10.67kb (65.49%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 31.97kb -> 11.13kb (65.17%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 18.30kb -> 6.38kb (65.14%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 18.98kb -> 6.62kb (65.11%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 19.71kb -> 7.15kb (63.72%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 20.62kb -> 7.55kb (63.37%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 20.29kb -> 7.46kb (63.26%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 22.59kb -> 8.32kb (63.15%)
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.69.png -- 22.81kb -> 8.45kb (62.96%)
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.69.png -- 22.79kb -> 8.45kb (62.94%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_iPhone SE (3rd generation)_17.0_simulator.png -- 32.77kb -> 12.15kb (62.92%)
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.67.png -- 22.62kb -> 8.42kb (62.77%)
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.67.png -- 22.60kb -> 8.42kb (62.75%)
/engine/src/flutter/lib/ui/fixtures/2_dispose_op_restore_previous.apng.68.png -- 22.58kb -> 8.41kb (62.74%)
/engine/src/flutter/lib/ui/fixtures/impeller_2_dispose_op_restore_previous.apng.68.png -- 22.57kb -> 8.41kb (62.72%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png -- 21.14kb -> 8.08kb (61.76%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 26.24kb -> 10.08kb (61.57%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png -- 20.76kb -> 7.99kb (61.5%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_with_platform_layer_on_bottom.png -- 1.42kb -> 0.55kb (61.02%)
/engine/src/flutter/testing/resources/performance_overlay_gold_60fps.png -- 16.15kb -> 6.53kb (59.54%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_with_transform_iPhone SE (3rd generation)_17.0_simulator.png -- 26.84kb -> 10.88kb (59.47%)
/engine/src/flutter/testing/resources/performance_overlay_gold_90fps.png -- 15.88kb -> 6.46kb (59.33%)
/engine/src/flutter/testing/resources/performance_overlay_gold_120fps.png -- 15.88kb -> 6.49kb (59.14%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 20.33kb -> 8.37kb (58.81%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_multiple_clips_iPhone SE (3rd generation)_17.0_simulator.png -- 31.09kb -> 13.14kb (57.73%)
/engine/src/flutter/shell/platform/embedder/fixtures/scene_without_custom_compositor_with_xform.png -- 2.39kb -> 1.02kb (57.17%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 20.09kb -> 8.64kb (57.01%)
/dev/tools/vitool/test_assets/empty_svg_2_100x50.svg -- 0.18kb -> 0.08kb (56.04%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_path_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 23.35kb -> 10.29kb (55.91%)
/engine/src/flutter/shell/platform/embedder/fixtures/scene_without_custom_compositor.png -- 2.57kb -> 1.14kb (55.73%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor_software.png -- 2.55kb -> 1.14kb (55.54%)
/engine/src/flutter/shell/platform/embedder/fixtures/compositor.png -- 2.55kb -> 1.14kb (55.51%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_iPhone SE (3rd generation)_17.0_simulator.png -- 41.39kb -> 19.49kb (52.92%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_large_cliprrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 23.96kb -> 11.30kb (52.83%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_rotate_iPhone SE (3rd generation)_17.0_simulator.png -- 24.59kb -> 11.68kb (52.52%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone SE (3rd generation)_17.0_simulator.png -- 23.54kb -> 11.31kb (51.94%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_non_full_screen_flutter_view_platform_view_iPhone SE (3rd generation)_17.0_simulator.png -- 23.46kb -> 11.29kb (51.87%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_multiple_clips_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 26.71kb -> 13.13kb (50.84%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 26.89kb -> 13.25kb (50.71%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_negative_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png -- 30.33kb -> 15.40kb (49.23%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 27.09kb -> 14.11kb (47.92%)
/engine/src/flutter/shell/platform/embedder/fixtures/dpr_xform.png -- 56.25kb -> 29.47kb (47.61%)
/engine/src/flutter/shell/platform/embedder/fixtures/vk_gradient.png -- 69.55kb -> 37.59kb (45.95%)
/engine/src/flutter/shell/platform/embedder/fixtures/gradient.png -- 69.55kb -> 37.59kb (45.95%)
/engine/src/flutter/shell/platform/embedder/fixtures/gradient_xform.png -- 70.80kb -> 38.90kb (45.06%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_with_other_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png -- 30.40kb -> 16.95kb (44.24%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone SE (3rd generation)_17.0_simulator.png -- 32.89kb -> 18.58kb (43.51%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_view_clip_rrect_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 34.21kb -> 19.47kb (43.09%)
/engine/src/flutter/shell/platform/embedder/fixtures/vk_dpr_noxform.png -- 61.96kb -> 35.42kb (42.83%)
/engine/src/flutter/shell/platform/embedder/fixtures/dpr_noxform.png -- 61.97kb -> 35.43kb (42.82%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_impeller_iPhone SE (3rd generation)_17.0_simulator.png -- 41.10kb -> 23.71kb (42.31%)
/engine/src/flutter/shell/platform/embedder/fixtures/arc_end_caps.png -- 5.87kb -> 3.40kb (42%)
/engine/src/flutter/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_two_platform_views_with_other_backdrop_filter_iPhone SE (3rd generation)_17.0_simulator.png -- 46.56kb -> 27.80kb (40.3%)
/engine/src/flutter/shell/platform/embedder/fixtures/verifyb143464703_soft_noxform.png -- 15.38kb -> 9.92kb (35.47%)
/engine/src/flutter/shell/platform/embedder/fixtures/impeller_text_test.png -- 3.25kb -> 2.15kb (33.86%)
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -- 14.45kb -> 9.69kb (32.93%)
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -- 45.89kb -> 31.58kb (31.18%)
/engine/src/flutter/docs/rbe/luci.png -- 98.61kb -> 70.27kb (28.73%)
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -- 1.40kb -> 1.00kb (28.62%)
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -- 5.79kb -> 4.27kb (26.23%)
/engine/src/flutter/lib/ui/fixtures/DashInNooglerHat.jpg -- 346.37kb -> 257.43kb (25.68%)
/engine/src/flutter/lib/ui/fixtures/DashInNooglerHat%20WithSpace.jpg -- 346.37kb -> 257.43kb (25.68%)
/engine/src/flutter/shell/platform/embedder/fixtures/verifyb143464703.png -- 9.24kb -> 6.89kb (25.48%)
/engine/src/flutter/lib/web_ui/test/ui/image/sample_image1.png -- 14.40kb -> 10.83kb (24.76%)
/examples/hello_world/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/examples/api/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/dev/integration_tests/flutter_gallery/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/examples/image_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/dev/integration_tests/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/dev/a11y_assessments/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/dev/manual_tests/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -- 3.20kb -> 2.60kb (18.77%)
/engine/src/flutter/docs/flutter_logo.png -- 4.16kb -> 3.53kb (15.18%)
/dev/tools/vitool/test_assets/illegal_svg_multiple_roots.svg -- 0.10kb -> 0.09kb (12.87%)
/dev/tools/vitool/test_assets/empty_svg_1_48x48.svg -- 0.09kb -> 0.08kb (12.77%)
/dev/tools/vitool/test_assets/bar_group_opacity.svg -- 0.22kb -> 0.20kb (11.01%)
/dev/tools/vitool/test_assets/bars_group.svg -- 0.30kb -> 0.26kb (10.86%)
/engine/src/flutter/lib/ui/fixtures/Horizontal.jpg -- 11.08kb -> 9.90kb (10.6%)
/dev/tools/vitool/test_assets/bar_group_scale.svg -- 0.23kb -> 0.21kb (9.62%)
/dev/tools/vitool/test_assets/bar_group_translate.svg -- 0.24kb -> 0.21kb (9.5%)
/dev/tools/vitool/test_assets/leading_space_path_command.svg -- 0.13kb -> 0.12kb (9.49%)
/dev/tools/vitool/test_assets/illegal_transform.svg -- 0.24kb -> 0.22kb (9.39%)
/engine/src/flutter/lib/ui/fixtures/DisplayP3Logo.jpg -- 4.77kb -> 4.33kb (9.19%)
/dev/tools/vitool/test_assets/bar_group_rotate_scale.svg -- 0.25kb -> 0.23kb (8.98%)
/dev/tools/vitool/test_assets/illegal_path.svg -- 0.14kb -> 0.13kb (8.33%)
/engine/src/flutter/lib/ui/fixtures/four_frame_with_reuse_end.png -- 0.50kb -> 0.46kb (7.78%)
/engine/src/flutter/lib/ui/fixtures/DisplayP3Logo.png -- 2.95kb -> 2.73kb (7.44%)
/dev/tools/vitool/test_assets/horizontal_bar.svg -- 0.18kb -> 0.17kb (7.14%)
/dev/tools/vitool/test_assets/horizontal_bar_relative.svg -- 0.18kb -> 0.17kb (7.1%)
/dev/tools/vitool/test_assets/close_path_in_middle.svg -- 0.19kb -> 0.18kb (6.6%)
/engine/src/flutter/lib/ui/fixtures/four_frame_with_reuse.gif -- 1.95kb -> 1.84kb (5.46%)
/engine/src/flutter/lib/ui/fixtures/impeller_four_frame_with_reuse_end.png -- 0.49kb -> 0.46kb (5.39%)
/engine/src/flutter/impeller/fixtures/monkey.png -- 603.17kb -> 572.78kb (5.04%)
/engine/src/flutter/shell/common/fixtures/hello_loop_2.gif -- 28.64kb -> 27.36kb (4.46%)
/engine/src/flutter/lib/ui/fixtures/hello_loop_2.gif -- 28.64kb -> 27.36kb (4.46%)
/engine/src/flutter/impeller/fixtures/blend_mode_src.png -- 33.71kb -> 32.51kb (3.55%)
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_blue_square.png -- 2.10kb -> 2.05kb (2.19%)
/engine/src/flutter/lib/ui/fixtures/heart_end.png -- 38.64kb -> 37.81kb (2.17%)
/engine/src/flutter/lib/ui/fixtures/impeller_heart_end.png -- 38.63kb -> 37.81kb (2.14%)
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_red_square.png -- 2.41kb -> 2.37kb (1.82%)
/engine/src/flutter/testing/skia_gold_client/tool/e2e_fixtures/solid_green_square.png -- 3.22kb -> 3.17kb (1.61%)
/engine/src/flutter/lib/ui/fixtures/Horizontal.png -- 24.98kb -> 24.63kb (1.37%)
/engine/src/flutter/shell/common/fixtures/shelltest_screenshot.png -- 0.31kb -> 0.31kb (0.63%)
/engine/src/flutter/docs/dart_split_aot_compilation.svg -- 107.78kb -> 107.31kb (0.43%)
/engine/src/flutter/impeller/fixtures/blend_mode_dst.png -- 170.59kb -> 170.13kb (0.27%)
/engine/src/flutter/docs/deferred_components_architecture.svg -- 298.78kb -> 297.96kb (0.27%)
/engine/src/flutter/docs/deferred_components_call_lifecycle.svg -- 251.94kb -> 251.49kb (0.18%)
/engine/src/flutter/docs/flutter_overview.svg -- 185.94kb -> 185.80kb (0.08%)
/engine/src/flutter/impeller/fixtures/kalimba.jpg -- 66.47kb -> 66.46kb (0.01%)
/examples/image_list/images/coast.jpg -- 197.60kb -> 197.60kb (0%)
/engine/src/flutter/impeller/fixtures/airplane.jpg -- 69.71kb -> 69.71kb (0%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
bernaferrari pushed a commit that referenced this pull request Feb 28, 2025
The crash indicates that FlutterJNI is returning a nullptr
SurfaceControl.Transaction. That likely indicates that we're trying to
rasterize a frame before the platform view controller is setup.
Potentially a startup race?

At any rate, if the PVC is null that means there is no platform views -
so it should be safe to create a tx on the fly. Interestingly I cannot
repro this locally even on the same device.

```
[2025-02-11 21:50:37.462356] [STDOUT] stdout: [ +173 ms] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
[2025-02-11 21:50:37.462539] [STDOUT] stdout: [        ] Build fingerprint: 'google/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keys'
[2025-02-11 21:50:37.462564] [STDOUT] stdout: [        ] Revision: 'MP1.0'
[2025-02-11 21:50:37.463914] [STDOUT] stdout: [   +1 ms] ABI: 'arm64'
[2025-02-11 21:50:37.463946] [STDOUT] stdout: [        ] Timestamp: 2025-02-11 21:57:42.183302140-0800
[2025-02-11 21:50:37.463959] [STDOUT] stdout: [        ] Process uptime: 3s
[2025-02-11 21:50:37.464054] [STDOUT] stdout: [        ] Cmdline: dev.benchmarks.platform_views_layout
[2025-02-11 21:50:37.464174] [STDOUT] stdout: [        ] pid: 15185, tid: 15246, name: 1.raster  >>> dev.benchmarks.platform_views_layout <<<
[2025-02-11 21:50:37.464354] [STDOUT] stdout: [        ] uid: 10250
[2025-02-11 21:50:37.464398] [STDOUT] stdout: [        ] tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
[2025-02-11 21:50:37.464440] [STDOUT] stdout: [        ] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000000
[2025-02-11 21:50:37.464602] [STDOUT] stdout: [        ] Cause: null pointer dereference
[2025-02-11 21:50:37.464651] [STDOUT] stdout: [        ]     x0  b400007b82ff2e70  x1  000000000000002d  x2  b400007c3309f370  x3  0000007abbcc6a23
[2025-02-11 21:50:37.464745] [STDOUT] stdout: [        ]     x4  0000007a30d286b0  x5  0000007a4f6dd47b  x6  0000000000000000  x7  61686b4b11ff3a78
[2025-02-11 21:50:37.464831] [STDOUT] stdout: [        ]     x8  0000000000000000  x9  1417c2bd490e1f78  x10 0000000000000010  x11 000000000000009c
[2025-02-11 21:50:37.464933] [STDOUT] stdout: [        ]     x12 0000000000000adb  x13 b400007ba2fe9510  x14 0000000000000e6b  x15 b400007ba2fe9510
[2025-02-11 21:50:37.465012] [STDOUT] stdout: [        ]     x16 0000000000000001  x17 0000000000000067  x18 0000007a2f996000  x19 b400007b82ff2e70
[2025-02-11 21:50:37.465082] [STDOUT] stdout: [        ]     x20 000000000000002d  x21 b400007ae3064b60  x22 b400007af30d0fa8  x23 0000000000000001
[2025-02-11 21:50:37.465155] [STDOUT] stdout: [        ]     x24 0000007a30d2a000  x25 b400007b73028fb0  x26 0000007a3a22da20  x27 000000003b9bf6c8
[2025-02-11 21:50:37.465235] [STDOUT] stdout: [        ]     x28 b400007af30d0fa8  x29 b400007ad3022cd0
[2025-02-11 21:50:37.465318] [STDOUT] stdout: [        ]     lr  0000007a3a8c7918  sp  0000007a30d28940  pc  0000000000000000  pst 0000000040001000
[2025-02-11 21:50:37.465401] [STDOUT] stdout: [        ] backtrace:
[2025-02-11 21:50:37.465491] [STDOUT] stdout: [        ]       #00 pc 0000000000000000  <unknown>
[2025-02-11 21:50:37.465596] [STDOUT] stdout: [        ]       #1 pc 000000000088b914  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (flutter::PlatformViewAndroidJNIImpl::createTransaction()+104) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.465688] [STDOUT] stdout: [        ]       #2 pc 000000000087f738  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (std::_fl::__function::__func<flutter::AndroidSurfaceVKImpeller::SetNativeWindow(fml::RefPtr<flutter::AndroidNativeWindow>, std::_fl::shared_ptr<flutter::PlatformViewAndroidJNI> const&)::$_0, std::_fl::allocator<flutter::AndroidSurfaceVKImpeller::SetNativeWindow(fml::RefPtr<flutter::AndroidNativeWindow>, std::_fl::shared_ptr<flutter::PlatformViewAndroidJNI> const&)::$_0>, impeller::android::SurfaceTransaction ()>::operator()()+16) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.465785] [STDOUT] stdout: [        ]       #3 pc 0000000000bdbf1c  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (std::_fl::__function::__func<impeller::AHBSwapchainImplVK::AcquireNextDrawable()::$_0, std::_fl::allocator<impeller::AHBSwapchainImplVK::AcquireNextDrawable()::$_0>, bool ()>::operator()()+1716) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.465874] [STDOUT] stdout: [        ]       #4 pc 0000000000b1d180  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (flutter::SurfaceFrame::Submit()+148) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.465989] [STDOUT] stdout: [        ]       #5 pc 0000000000beb2b4  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (flutter::Rasterizer::DrawToSurfacesUnsafe(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> >, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> > > >)+1284) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466400] [STDOUT] stdout: [        ]       #6 pc 0000000000beac58  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (flutter::Rasterizer::DrawToSurfaces(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> >, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> > > >)+112) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466444] [STDOUT] stdout: [        ]       #7 pc 0000000000bec144  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (std::_fl::__function::__func<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> > const&)::$_0, std::_fl::allocator<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> > const&)::$_0>, void (std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem> >)>::operator()(std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem> >&&)+192) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466468] [STDOUT] stdout: [        ]       flutter#8 pc 0000000000bebc48  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> > const&)+360) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466521] [STDOUT] stdout: [        ]       flutter#9 pc 0000000000bf9f7c  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (std::_fl::__function::__func<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> >)::$_0>, std::_fl::allocator<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> >)::$_0> >, void ()>::operator()()+84) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466543] [STDOUT] stdout: [        ]       flutter#10 pc 00000000008a09ec  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (fml::MessageLoopImpl::RunExpiredTasksNow()+728) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466667] [STDOUT] stdout: [        ]       flutter#11 pc 00000000008a4600  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::__invoke(int, int, void*)+84) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466746] [STDOUT] stdout: [        ]       flutter#12 pc 0000000000011178  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+808) (BuildId: 0b4a793fa8045c04066d988c68bac8bb)
[2025-02-11 21:50:37.466784] [STDOUT] stdout: [        ]       flutter#13 pc 00000000000185e4  /system/lib64/libandroid.so (ALooper_pollOnce+100) (BuildId: 682dab490c18361d5d6527bcdd86cdfa)
[2025-02-11 21:50:37.466865] [STDOUT] stdout: [        ]       flutter#14 pc 00000000008a470c  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (fml::MessageLoopAndroid::Run()+28) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466903] [STDOUT] stdout: [        ]       flutter#15 pc 00000000008a283c  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (std::_fl::__function::__func<fml::Thread::Thread(std::_fl::function<void (fml::Thread::ThreadConfig const&)> const&, fml::Thread::ThreadConfig const&)::$_0, std::_fl::allocator<fml::Thread::Thread(std::_fl::function<void (fml::Thread::ThreadConfig const&)> const&, fml::Thread::ThreadConfig const&)::$_0>, void ()>::operator()()+116) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.466943] [STDOUT] stdout: [        ]       flutter#16 pc 00000000008a2670  /data/app/~~u9nRjz4bI1GoKFecw6gtbg==/dev.benchmarks.platform_views_layout-RoPBoOldhc38L7sINb2Vgg==/lib/arm64/libflutter.so (fml::ThreadHandle::ThreadHandle(std::_fl::function<void ()>&&)::$_0::__invoke(void*)+8) (BuildId: 8fab16f9507483301ef418db2c91ed06689696b1)
[2025-02-11 21:50:37.467002] [STDOUT] stdout: [        ]       flutter#17 pc 00000000000c226c  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) (BuildId: dc4001c2ef2dfc23467040797a96840c)
[2025-02-11 21:50:37.467058] [STDOUT] stdout: [        ]       flutter#18 pc 0000000000054a30  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: dc4001c2ef2dfc23467040797a96840c)
[2025-02-11 21:50:37.525275] [STDOUT] stdout: [  +57 ms] 00:00 �[32m+0�[0m�[31m -1�[0m: scrolling performance test (setUpAll) �[1m�[31m[E]�[0m�[0m
```
bernaferrari pushed a commit that referenced this pull request Jun 4, 2025
Currently when using a `CustomScrollView`, screen readers cannot list or
move focus to elements that are outside the current Viewport and cache
extent because we do not create semantic nodes for these elements.

This change introduces `SliverEnsureSemantics` which ensures its sliver
child is included in the semantics tree, whether or not it is currently
visible on the screen or within the cache extent. This way screen
readers are aware the elements are there and can navigate to them /
create accessibility traversal menus with this information.
* Under the hood a new flag has been added to `RenderSliver` called
`ensureSemantics`. `RenderViewportBase` uses this in its
`visitChildrenForSemantics` to ensure a sliver is visited when creating
the semantics tree. Previously a sliver was not visited if it was not
visible or within the cache extent. `RenderViewportBase` also uses this
in `describeSemanticsClip` and `describeApproximatePaintClip` to ensure
a sliver child that wants to "ensure semantics" is not clipped out if it
is not currently visible in the viewport or outside the cache extent.
* `RenderSliverMultiBoxAdaptor.semanticBounds` now leverages its first
child as an anchor for assistive technologies to be able to reach it if
the Sliver is a child of `SliverEnsureSemantics`. If not it will still
be dropped from the semantics tree.
* `RenderProxySliver` now considers child overrides of `semanticBounds`.

On the engine side we move from using a joystick method to scroll with
`SemanticsAction.scrollUp` and `SemanticsAction.scrollDown` to using
`SemanticsAction.scrollToOffset` completely letting the browser drive
the scrolling with its current dom scroll position "scrollTop" or
"scrollLeft". This is possible by calculating the total quantity of
content under the scrollable and sizing the scroll element based on
that.

<details open><summary>Code sample</summary>

```dart
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

/// Flutter code sample for [SliverEnsureSemantics].

void main() => runApp(const SliverEnsureSemanticsExampleApp());

class SliverEnsureSemanticsExampleApp extends StatelessWidget {
  const SliverEnsureSemanticsExampleApp({super.key});

  @OverRide
  Widget build(BuildContext context) {
    return const MaterialApp(home: SliverEnsureSemanticsExample());
  }
}

class SliverEnsureSemanticsExample extends StatefulWidget {
  const SliverEnsureSemanticsExample({super.key});

  @OverRide
  State<SliverEnsureSemanticsExample> createState() =>
      _SliverEnsureSemanticsExampleState();
}

class _SliverEnsureSemanticsExampleState
    extends State<SliverEnsureSemanticsExample> {
  @OverRide
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: theme.colorScheme.inversePrimary,
        title: const Text('SliverEnsureSemantics Demo'),
      ),
      body: Center(
        child: CustomScrollView(
          semanticChildCount: 106,
          slivers: <Widget>[
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 0,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Steps to reproduce',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          const Text('Issue description'),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Expected Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Actual Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Code Sample',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Screenshots',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Logs',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverFixedExtentList(
              itemExtent: 44.0,
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  return Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text('Item $index'),
                    ),
                  );
                },
                childCount: 50,
                semanticIndexOffset: 1,
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 51,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 1'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 52,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 2'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 53,
                  child: Semantics(link: true, child: const Text('Link #1')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 54,
                  child: OverflowBar(
                    children: <Widget>[
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 1'),
                      ),
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 2'),
                      ),
                    ],
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 55,
                  child: Semantics(link: true, child: const Text('Link #2')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverSemanticsList(
                sliver: SliverFixedExtentList(
                  itemExtent: 44.0,
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                      return Semantics(
                        role: SemanticsRole.listItem,
                        child: Card(
                          child: Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Text('Second List Item $index'),
                          ),
                        ),
                      );
                    },
                    childCount: 50,
                    semanticIndexOffset: 56,
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 107,
                  child: Semantics(link: true, child: const Text('Link #3')),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

// A sliver that assigns the role of SemanticsRole.list to its sliver child.
class SliverSemanticsList extends SingleChildRenderObjectWidget {
  const SliverSemanticsList({super.key, required Widget sliver})
    : super(child: sliver);

  @OverRide
  RenderSliverSemanticsList createRenderObject(BuildContext context) =>
      RenderSliverSemanticsList();
}

class RenderSliverSemanticsList extends RenderProxySliver {
  @OverRide
  void describeSemanticsConfiguration(SemanticsConfiguration config) {
    super.describeSemanticsConfiguration(config);
    config.role = SemanticsRole.list;
  }
}
```
</details>

Fixes: flutter#160217

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

---------

Co-authored-by: Renzo Olivares <roliv@google.com>
bernaferrari pushed a commit that referenced this pull request Jun 4, 2025
<!-- start_original_pr_link -->
Reverts: flutter#165589
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: Renzo-Olivares
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: breaking internal tests
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: Renzo-Olivares
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {Piinks}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Currently when using a `CustomScrollView`, screen readers cannot list or
move focus to elements that are outside the current Viewport and cache
extent because we do not create semantic nodes for these elements.

This change introduces `SliverEnsureSemantics` which ensures its sliver
child is included in the semantics tree, whether or not it is currently
visible on the screen or within the cache extent. This way screen
readers are aware the elements are there and can navigate to them /
create accessibility traversal menus with this information.
* Under the hood a new flag has been added to `RenderSliver` called
`ensureSemantics`. `RenderViewportBase` uses this in its
`visitChildrenForSemantics` to ensure a sliver is visited when creating
the semantics tree. Previously a sliver was not visited if it was not
visible or within the cache extent. `RenderViewportBase` also uses this
in `describeSemanticsClip` and `describeApproximatePaintClip` to ensure
a sliver child that wants to "ensure semantics" is not clipped out if it
is not currently visible in the viewport or outside the cache extent.
* `RenderSliverMultiBoxAdaptor.semanticBounds` now leverages its first
child as an anchor for assistive technologies to be able to reach it if
the Sliver is a child of `SliverEnsureSemantics`. If not it will still
be dropped from the semantics tree.
* `RenderProxySliver` now considers child overrides of `semanticBounds`.

On the engine side we move from using a joystick method to scroll with
`SemanticsAction.scrollUp` and `SemanticsAction.scrollDown` to using
`SemanticsAction.scrollToOffset` completely letting the browser drive
the scrolling with its current dom scroll position "scrollTop" or
"scrollLeft". This is possible by calculating the total quantity of
content under the scrollable and sizing the scroll element based on
that.

<details open><summary>Code sample</summary>

```dart
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

/// Flutter code sample for [SliverEnsureSemantics].

void main() => runApp(const SliverEnsureSemanticsExampleApp());

class SliverEnsureSemanticsExampleApp extends StatelessWidget {
  const SliverEnsureSemanticsExampleApp({super.key});

  @OverRide
  Widget build(BuildContext context) {
    return const MaterialApp(home: SliverEnsureSemanticsExample());
  }
}

class SliverEnsureSemanticsExample extends StatefulWidget {
  const SliverEnsureSemanticsExample({super.key});

  @OverRide
  State<SliverEnsureSemanticsExample> createState() =>
      _SliverEnsureSemanticsExampleState();
}

class _SliverEnsureSemanticsExampleState
    extends State<SliverEnsureSemanticsExample> {
  @OverRide
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: theme.colorScheme.inversePrimary,
        title: const Text('SliverEnsureSemantics Demo'),
      ),
      body: Center(
        child: CustomScrollView(
          semanticChildCount: 106,
          slivers: <Widget>[
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 0,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Steps to reproduce',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          const Text('Issue description'),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Expected Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Actual Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Code Sample',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Screenshots',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Logs',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverFixedExtentList(
              itemExtent: 44.0,
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  return Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text('Item $index'),
                    ),
                  );
                },
                childCount: 50,
                semanticIndexOffset: 1,
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 51,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 1'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 52,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 2'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 53,
                  child: Semantics(link: true, child: const Text('Link #1')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 54,
                  child: OverflowBar(
                    children: <Widget>[
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 1'),
                      ),
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 2'),
                      ),
                    ],
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 55,
                  child: Semantics(link: true, child: const Text('Link #2')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverSemanticsList(
                sliver: SliverFixedExtentList(
                  itemExtent: 44.0,
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                      return Semantics(
                        role: SemanticsRole.listItem,
                        child: Card(
                          child: Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Text('Second List Item $index'),
                          ),
                        ),
                      );
                    },
                    childCount: 50,
                    semanticIndexOffset: 56,
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 107,
                  child: Semantics(link: true, child: const Text('Link #3')),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

// A sliver that assigns the role of SemanticsRole.list to its sliver child.
class SliverSemanticsList extends SingleChildRenderObjectWidget {
  const SliverSemanticsList({super.key, required Widget sliver})
    : super(child: sliver);

  @OverRide
  RenderSliverSemanticsList createRenderObject(BuildContext context) =>
      RenderSliverSemanticsList();
}

class RenderSliverSemanticsList extends RenderProxySliver {
  @OverRide
  void describeSemanticsConfiguration(SemanticsConfiguration config) {
    super.describeSemanticsConfiguration(config);
    config.role = SemanticsRole.list;
  }
}
```
</details>

Fixes: flutter#160217

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
bernaferrari pushed a commit that referenced this pull request Jun 4, 2025
Fixes error found in rolling to google.

```
[☠] Android toolchain - develop for Android devices (the doctor check crashed)
    ✗ Due to an error, the doctor check did not complete. If the error message
      below is not helpful, please let us know about this issue at
      https://github.com/flutter/flutter/issues.
    ✗ type 'Null' is not a subtype of type 'String' of 'executable'
    • #0      LocalProcessManager.canRun
      (package:process/src/interface/local_process_manager.dart:124)
      #1      getEmulatorVersion
      (package:flutter_tools/src/android/android_workflow.dart:64)
      #2      AndroidValidator.validateImpl
      (package:flutter_tools/src/android/android_workflow.dart:200)
      #3      DoctorValidator.validate
      (package:flutter_tools/src/doctor_validator.dart:58)
      #4      Doctor.startValidatorTasks.<anonymous closure>
      (package:flutter_tools/src/doctor.dart:244)
      #5      asyncGuard.<anonymous closure>
      (package:flutter_tools/src/base/async_guard.dart:109)
      #6      _rootRun (dart:async/zone.dart:1525)
      #7      _CustomZone.run (dart:async/zone.dart:1422)
      flutter#8      _runZoned (dart:async/zone.dart:2033)
      flutter#9      runZonedGuarded (dart:async/zone.dart:2019)
      flutter#10     runZoned (dart:async/zone.dart:1952)
      flutter#11     asyncGuard (package:flutter_tools/src/base/async_guard.dart:106)
      flutter#12     Doctor.startValidatorTasks
      (package:flutter_tools/src/doctor.dart:234)
      flutter#13     Doctor.diagnose (package:flutter_tools/src/doctor.dart:372)
      flutter#14     DoctorCommand.runCommand
      (package:flutter_tools/src/commands/doctor.dart:59)
      flutter#15     FlutterCommand.verifyThenRunCommand
      (package:flutter_tools/src/runner/flutter_command.dart:1897)
      <asynchronous suspension>
      flutter#16     FlutterCommand.run.<anonymous closure>
      (package:flutter_tools/src/runner/flutter_command.dart:1551)
      <asynchronous suspension>
      flutter#17     AppContext.run.<anonymous closure>
      (package:flutter_tools/src/base/context.dart:154)
      <asynchronous suspension>
      flutter#18     CommandRunner.runCommand (package:args/command_runner.dart:212)
      <asynchronous suspension>
      flutter#19     FlutterCommandRunner.runCommand.<anonymous closure>
      (package:flutter_tools/src/runner/flutter_command_runner.dart:501)
      <asynchronous suspension>
      flutter#20     AppContext.run.<anonymous closure>
      (package:flutter_tools/src/base/context.dart:154)
      <asynchronous suspension>
      flutter#21     FlutterCommandRunner.runCommand
      (package:flutter_tools/src/runner/flutter_command_runner.dart:438)
      <asynchronous suspension>
      flutter#22     run.<anonymous closure>.<anonymous closure>
      (package:flutter_tools/runner.dart:98)
      <asynchronous suspension>
      flutter#23     AppContext.run.<anonymous closure>
      (package:flutter_tools/src/base/context.dart:154)
      <asynchronous suspension>
      flutter#24     AppContext.run.<anonymous closure>
      (package:flutter_tools/src/base/context.dart:154)
      <asynchronous suspension>
      flutter#25     run (package:mobile.flutter.cli/flutter_tools.dart:106)
      <asynchronous suspension>
      flutter#26     main (google3:///mobile/flutter/cli/bin/cli_usage_aot.dart:4)
```

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
bernaferrari pushed a commit that referenced this pull request Aug 19, 2025
…er#172783)" (flutter#172900)

<!-- start_original_pr_link -->
Reverts: flutter#172783
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: jtmcdole
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Failing in post submit tests:

```
╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════
║ UNEXPECTED ERROR!
║ Exception: Found unexpected binary in cache: /Volumes/Work/s/w/ir/x/w/flutter/bin/cache/dart-sdk/bin/dartvm
║ #0      verifyExist (file:///Volumes/Work/s/w/ir/x/w/flutter/dev/bots/suite_runners/run_verify_binaries_codesigned_tests.dart:198:9)
║ <asynchron
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: a-siva
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {jason-simmons}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
https://dart.googlesource.com/sdk.git/+log/5ede85aff798..14ea8d342149

https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-36.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-35.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-34.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-33.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-32.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-31.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-30.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-29.0.dev
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
bernaferrari pushed a commit that referenced this pull request Nov 2, 2025
When building
https://github.com/flutter/samples/tree/main/add_to_app/multiple_flutters,
the `[CP-User] Run Flutter Build multiple_flutters_module Script` step
failed with:
```
Showing Recent Messages
[   +3 ms] Improperly formatted define flag: 
[        ] 
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:34:3)
           #1      AssembleCommand._parseDefines (package:flutter_tools/src/commands/assemble.dart:279:9)
```

the command was:
```
 /Users/<User>/flutter/bin/flutter --verbose assemble --no-version-check --output=/Users/<User>/Library/Developer/Xcode/DerivedData/MultipleFluttersIos-<Hash>/Build/Products/Debug-iphonesimulator/ -dTargetPlatform=ios -dTargetFile=lib/main.dart -dBuildMode=debug -dConfiguration=Debug -dIosArchs=arm64 -dSdkRoot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator26.0.sdk -dSplitDebugInfo= -dTreeShakeIcons=false -dTrackWidgetCreation=true -dDartObfuscation=false -dAction=build -dFrontendServerStarterPath= --ExtraGenSnapshotOptions= --DartDefines= --ExtraFrontEndOptions= -dSrcRoot=/Users/<User>/flutter_debug/samples/add_to_app/multiple_flutters/multiple_flutters_ios -dTargetDeviceOSVersion=26.0 -dCodesignIdentity=- debug_ios_bundle_flutter_assets
```

the empty `--DartDefines=` comes from
https://github.com/flutter/flutter/blob/68cddc9bf5c449d5a55fe48ebb9b446ef76ae6b0/packages/flutter_tools/bin/xcode_backend.dart#L660

This PR makes `_parseDefines` ignore these empty dart defines.

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
bernaferrari pushed a commit that referenced this pull request Nov 4, 2025
This test passes when run locally as instructed in the README for the
devicelab
```
../../bin/cache/dart-sdk/bin/dart bin/test_runner.dart test -t android_verified_input_test
```

but fails on CI:

https://ci.chromium.org/ui/p/flutter/builders/staging/Linux_pixel_7pro%20android_verified_input_test/106/overview
```
[2025-11-03 11:08:04.090018] [STDOUT] stdout: [        ]   Original error: ext.flutter.driver: (-32000) Service connection disposed
[2025-11-03 11:08:04.090156] [STDOUT] stdout: [        ]   Original stack trace:
[2025-11-03 11:08:04.090199] [STDOUT] stdout: [        ]   #0      new _OutstandingRequest (package:vm_service/src/vm_service.dart:268:34)
[2025-11-03 11:08:04.091572] [STDOUT] stdout: [        ]   #1      VmService._call.<anonymous closure> (package:vm_service/src/vm_service.dart:1950:25)
[2025-11-03 11:08:04.091647] [STDOUT] stdout: [        ]   #2      VmService._call (package:vm_service/src/vm_service.dart:1962:8)
[2025-11-03 11:08:04.091674] [STDOUT] stdout: [        ]   #3      VmService.callServiceExtension (package:vm_service/src/vm_service.dart:1901:14)
[2025-11-03 11:08:04.091693] [STDOUT] stdout: [        ]   #4      VMServiceFlutterDriver.sendCommand (package:flutter_driver/src/driver/vmservice_driver.dart:327:12)
[2025-11-03 11:08:04.091713] [STDOUT] stdout: [        ]   #5      FlutterDriver.requestData (package:flutter_driver/src/driver/driver.dart:573:13)
[2025-11-03 11:08:04.091733] [STDOUT] stdout: [        ]   #6      main.<anonymous closure> (file:///opt/s/w/ir/x/w/rc/tmpv6pcbna2/flutter%20sdk/dev/integration_tests/android_verified_input/test_driver/main_test.dart:28:57)
[2025-11-03 11:08:04.091750] [STDOUT] stdout: [        ]   <asynchronous suspension>
[2025-11-03 11:08:04.091767] [STDOUT] stdout: [        ]   #7      Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:242:9)
[2025-11-03 11:08:04.091784] [STDOUT] stdout: [        ]   <asynchronous suspension>
[2025-11-03 11:08:04.092408] [STDOUT] stdout: [        ]   flutter#8      Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:240:7)
[2025-11-03 11:08:04.092472] [STDOUT] stdout: [        ]   <asynchronous suspension>
[2025-11-03 11:08:04.092502] [STDOUT] stdout: [        ]   flutter#9      Invoker._waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:282:9)
```

Try copying this configuration used by other tests as a speculative fix.
I can't get this test to kick off in presubmit, so I suppose we will
just try this. The test is marked bringup anyways so it won't block the
tree if this doesn't help.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Gray Mackall <mackall@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants