Skip to content

refactor(web): Unify ui.Path code for CanvasKit and Skwasm#187331

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
harryterkelsen:web-unify-path
Jun 3, 2026
Merged

refactor(web): Unify ui.Path code for CanvasKit and Skwasm#187331
auto-submit[bot] merged 3 commits into
flutter:masterfrom
harryterkelsen:web-unify-path

Conversation

@harryterkelsen
Copy link
Copy Markdown
Contributor

This is the first in a series of PRs to unify the dart:ui primitive types for the two backends.

The rough plan is to have 4 layers of objects for the primitives.

  1. dart:ui types: these are the types in dart:ui like Path, Paint, Picture, etc.
  2. Engine-prefixed types: these are the concrete implementations of the dart:ui types, but with extra web-specific logic. For instance, they know that they are backed objects in WASM memory, and are responsible for disposing those objects. They are backed by Backend-prefixed types.
  3. Backend-prefixed types: these are the types that the backends (CanvasKit and Skwasm) actually implement.
  4. The Sk (or Dl) types in WASM. These are the actual Skia or DisplayList types.

The end goal is that the Backend types are a bare minimum API that just forward method calls directly to the underlying WASM objects. The Web engine will handle things like memory management, platform views, etc.

I started with Path because the LazyPath code was already mostly unified, and was a "leaf" node in the Skia object hierarchy.

Pre-launch Checklist

Starts towards #175630

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 29, 2026
@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. platform-web Web applications specifically labels May 29, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the Web UI path implementation by renaming 'LazyPath' to 'EnginePath' and replacing 'DisposablePath' abstractions with 'BackendPath' equivalents. It structures these path and path metric abstractions into new files under 'engine/primitives' and 'engine/backend'. Feedback indicates that a temporary backup file 'path_metrics.dart.orig' was committed and should be deleted.

Comment thread engine/src/flutter/lib/web_ui/lib/src/engine/primitives/path_metrics.dart.orig Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label May 29, 2026
@harryterkelsen harryterkelsen added the CICD Run CI/CD label May 29, 2026
@harryterkelsen harryterkelsen requested a review from mdebbar May 29, 2026 23:20
mdebbar
mdebbar previously approved these changes Jun 1, 2026
Copy link
Copy Markdown
Contributor

@mdebbar mdebbar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread engine/src/flutter/lib/web_ui/lib/src/engine/primitives/path_metrics.dart Outdated
Comment thread engine/src/flutter/lib/web_ui/lib/src/engine/primitives/path.dart Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 1, 2026
@harryterkelsen harryterkelsen added the CICD Run CI/CD label Jun 1, 2026
@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 2, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 2, 2026
@auto-submit
Copy link
Copy Markdown
Contributor

auto-submit Bot commented Jun 2, 2026

autosubmit label was removed for flutter/flutter/187331, because - The status or check suite Linux linux_fuchsia_tests has failed. Please fix the issues identified (or deflake) before re-applying this label.

@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 2, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 2, 2026
@auto-submit
Copy link
Copy Markdown
Contributor

auto-submit Bot commented Jun 2, 2026

autosubmit label was removed for flutter/flutter/187331, because - The status or check suite Linux linux_fuchsia_tests has failed. Please fix the issues identified (or deflake) before re-applying this label.

@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 2, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue Jun 2, 2026
Merged via the queue into flutter:master with commit b8634d9 Jun 3, 2026
215 of 216 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 3, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jun 3, 2026
…11832)

Manual roll requested by tarrinneal@google.com

flutter/flutter@701665b...2ba5420

2026-06-03 engine-flutter-autoroll@skia.org Roll Packages from 818b310 to b11504f (8 revisions) (flutter/flutter#187511)
2026-06-03 mdebbar@google.com Add new file patterns for team-web labeler (flutter/flutter#187397)
2026-06-03 engine-flutter-autoroll@skia.org Roll Skia from 279b17fe9fc1 to d625048c853a (12 revisions) (flutter/flutter#187483)
2026-06-03 chris@bracken.jp [SwiftPM] Fix prefer_initializing_formals lint (flutter/flutter#187502)
2026-06-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from q27k7_um1GvVrySZS... to ap7MhLX4TdpWRrLS_... (flutter/flutter#187478)
2026-06-03 bkonyi@google.com [SwiftPM] Fix concurrent directory/file/symlink creation crashes (flutter/flutter#186953)
2026-06-03 flar@google.com [Impeller] Fix positioning of text shadow masks (flutter/flutter#187460)
2026-06-02 burak.karahan@mail.ru Remove Material imports from painting tests (flutter/flutter#186937)
2026-06-02 awolff@google.com Add android_hardware_smoke_test integration tests (flutter/flutter#187130)
2026-06-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#187471)
2026-06-02 pq@users.noreply.github.com [flutter tool] propagate analytics env to sub-tools (flutter/flutter#186780)
2026-06-02 30870216+gaaclarke@users.noreply.github.com Adds macro for fragment shaders to support flutter <= 3.44 (flutter/flutter#187316)
2026-06-02 116356835+AbdeMohlbi@users.noreply.github.com Small clean-up in different java files under `engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/` (flutter/flutter#186631)
2026-06-02 1961493+harryterkelsen@users.noreply.github.com refactor(web): Unify ui.Path code for CanvasKit and Skwasm (flutter/flutter#187331)
2026-06-02 engine-flutter-autoroll@skia.org Roll Packages from f5d50ca to 818b310 (2 revisions) (flutter/flutter#187441)
2026-06-02 faheemabbas766@gmail.com Allow selecting multi-digit device options (flutter/flutter#186184)
2026-06-02 puneetkukreja98@gmail.com Improve error message for type mismatch in Navigator.pop and maybePop. (flutter/flutter#186571)
2026-06-02 sanaullah.383@hotmail.com Remove semantics_tester import from material_button_test.dart (flutter/flutter#184807)
2026-06-02 bkonyi@google.com [flutter_tools] Refactor hostPlatform to use Abi.current() (flutter/flutter#185369)
2026-06-02 mvincentong@gmail.com Clean up avoid_type_to_string suppressions (flutter/flutter#186869)
2026-06-02 202459002+Lukes-Lair@users.noreply.github.com Update Flutter documentation links in flutter_console.bat (flutter/flutter#187354)
2026-06-02 154381524+flutteractionsbot@users.noreply.github.com Revert "[Impeller] Allow attaching specific texture mip levels and slices" (flutter/flutter#187445)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com,tarrinneal@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD engine flutter/engine related. See also e: labels. platform-web Web applications specifically

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants