Skip to content

[web] Fix several WebParagraph bugs#186403

Merged
auto-submit[bot] merged 15 commits into
flutter:masterfrom
mdebbar:webparagraph_fixes
May 16, 2026
Merged

[web] Fix several WebParagraph bugs#186403
auto-submit[bot] merged 15 commits into
flutter:masterfrom
mdebbar:webparagraph_fixes

Conversation

@mdebbar

@mdebbar mdebbar commented May 12, 2026

Copy link
Copy Markdown
Contributor
  • Any zoom level other than 100% was throwing assertions.
  • In some cases, one paragraph was bleeding into other paragraphs.
  • Paragraph image cache was stale in many cases.
  • Paragraph image cache was leaking after the paragraph is disposed.
  • maxIntrinsicWidth was calculated incorrectly.
  • Paint canvas was not sized correctly.
  • Few methods weren't used anywhere.

Part of #172561

@mdebbar mdebbar requested a review from Rusino May 12, 2026 16:38
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 12, 2026
@flutter-dashboard

Copy link
Copy Markdown

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. platform-web Web applications specifically labels May 12, 2026

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

Copy link
Copy Markdown
Contributor

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 paragraph painting logic to implement a centralized image caching system and updates the calculation of intrinsic widths. Significant changes include the introduction of a generateParagraphImage callback for cache population, the simplification of the Painter interface, and the migration of _maxIntrinsicWidth logic to a dedicated method in TextWrapper. A high-severity issue was identified where background blocks are drawn to the output canvas instead of the offscreen buffer during cache generation, leading to missing backgrounds on cache hits.

@github-actions github-actions Bot removed the CICD Run CI/CD label May 12, 2026
@mdebbar mdebbar added the CICD Run CI/CD label May 12, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label May 13, 2026
@mdebbar mdebbar added the CICD Run CI/CD label May 13, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label May 13, 2026
@mdebbar mdebbar added the CICD Run CI/CD label May 13, 2026
Rusino
Rusino previously approved these changes May 14, 2026
Comment thread engine/src/flutter/lib/web_ui/test/webparagraph/paragraph_queries_test.dart Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label May 14, 2026
@mdebbar mdebbar added the CICD Run CI/CD label May 14, 2026
@mdebbar mdebbar added the autosubmit Merge PR when tree becomes green via auto submit App label May 14, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 14, 2026
@auto-submit

auto-submit Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

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

@mdebbar mdebbar added the autosubmit Merge PR when tree becomes green via auto submit App label May 15, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue May 15, 2026
Merged via the queue into flutter:master with commit c68d6ed May 16, 2026
205 of 206 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 16, 2026
@mdebbar mdebbar deleted the webparagraph_fixes branch May 18, 2026 14:37
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request May 18, 2026
flutter/flutter@1ceffd1...3598686

2026-05-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from G9xv1qcMhvXOy-9pk... to 5Ki-dBY4SpWdQMF_3... (flutter/flutter#186636)
2026-05-17 bdero@google.com [Impeller] Canonicalize uniform block instance names for the GL backends (flutter/flutter#186394)
2026-05-16 srawlins@google.com [widgets] Use super parameters in missed spots (flutter/flutter#186198)
2026-05-16 120367427+master-wayne7@users.noreply.github.com refactor: Remove material imports from Widget tests  (flutter/flutter#185078)
2026-05-16 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#186602)
2026-05-16 chris@bracken.jp [gn] Fix typo in comment (flutter/flutter#186549)
2026-05-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from y6uQHA5xUN83IF395... to G9xv1qcMhvXOy-9pk... (flutter/flutter#186599)
2026-05-15 30870216+gaaclarke@users.noreply.github.com Removes bringup from passing macos/sdf tests (flutter/flutter#186527)
2026-05-15 mdebbar@google.com [web] Fix several WebParagraph bugs (flutter/flutter#186403)
2026-05-15 alex.medinsh@gmail.com Display the team ID and name when selecting a signing certificate (flutter/flutter#184665)
2026-05-15 chris@bracken.jp [iOS] Improve documentation on FlutterVSyncClient and FlutterDisplayLink (flutter/flutter#186456)
2026-05-15 jason-simmons@users.noreply.github.com Increase the run time of text field integration tests to 10 seconds (flutter/flutter#186475)
2026-05-15 155553833+MatejLNCD@users.noreply.github.com Fix web-server hot restart/reload not applying changes for entrypoints outside lib (flutter/flutter#183838)
2026-05-15 1063596+reidbaker@users.noreply.github.com Update dart_skills_lint dependency to e449787 and optimize skills validation test (flutter/flutter#186528)
2026-05-15 engine-flutter-autoroll@skia.org Roll Packages from 2ec2236 to 32c84d6 (3 revisions) (flutter/flutter#186583)
2026-05-15 53112208+BilalRehman08@users.noreply.github.com Dispose TextEditingController in IndexedStack example (flutter/flutter#186375)
2026-05-15 34465683+rkishan516@users.noreply.github.com refactor: update filename for sliver semantic widget (flutter/flutter#185917)

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 bmparr@google.com,stuartmorgan@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
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11724)

flutter/flutter@1ceffd1...3598686

2026-05-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from G9xv1qcMhvXOy-9pk... to 5Ki-dBY4SpWdQMF_3... (flutter/flutter#186636)
2026-05-17 bdero@google.com [Impeller] Canonicalize uniform block instance names for the GL backends (flutter/flutter#186394)
2026-05-16 srawlins@google.com [widgets] Use super parameters in missed spots (flutter/flutter#186198)
2026-05-16 120367427+master-wayne7@users.noreply.github.com refactor: Remove material imports from Widget tests  (flutter/flutter#185078)
2026-05-16 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#186602)
2026-05-16 chris@bracken.jp [gn] Fix typo in comment (flutter/flutter#186549)
2026-05-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from y6uQHA5xUN83IF395... to G9xv1qcMhvXOy-9pk... (flutter/flutter#186599)
2026-05-15 30870216+gaaclarke@users.noreply.github.com Removes bringup from passing macos/sdf tests (flutter/flutter#186527)
2026-05-15 mdebbar@google.com [web] Fix several WebParagraph bugs (flutter/flutter#186403)
2026-05-15 alex.medinsh@gmail.com Display the team ID and name when selecting a signing certificate (flutter/flutter#184665)
2026-05-15 chris@bracken.jp [iOS] Improve documentation on FlutterVSyncClient and FlutterDisplayLink (flutter/flutter#186456)
2026-05-15 jason-simmons@users.noreply.github.com Increase the run time of text field integration tests to 10 seconds (flutter/flutter#186475)
2026-05-15 155553833+MatejLNCD@users.noreply.github.com Fix web-server hot restart/reload not applying changes for entrypoints outside lib (flutter/flutter#183838)
2026-05-15 1063596+reidbaker@users.noreply.github.com Update dart_skills_lint dependency to e449787 and optimize skills validation test (flutter/flutter#186528)
2026-05-15 engine-flutter-autoroll@skia.org Roll Packages from 2ec2236 to 32c84d6 (3 revisions) (flutter/flutter#186583)
2026-05-15 53112208+BilalRehman08@users.noreply.github.com Dispose TextEditingController in IndexedStack example (flutter/flutter#186375)
2026-05-15 34465683+rkishan516@users.noreply.github.com refactor: update filename for sliver semantic widget (flutter/flutter#185917)

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 bmparr@google.com,stuartmorgan@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