Skip to content

Make sure that a CupertinoDesktopTextSelectionToolbarButton doesn't c… - #173894

Merged
auto-submit[bot] merged 5 commits into
flutter:masterfrom
ahmedsameha1:handle#6537-CupertinoDesktopTextSelectionToolbarButton
Sep 25, 2025
Merged

auto-submit[bot] merged 5 commits into
flutter:masterfrom
ahmedsameha1:handle#6537-CupertinoDesktopTextSelectionToolbarButton

Conversation

@ahmedsameha1

Copy link
Copy Markdown
Contributor

This is my attempt to handle #6537 for the CupertinoDesktopTextSelectionToolbarButton UI control.

@github-actions github-actions Bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. p: cupertino_ui cupertino_ui package in flutter/packages labels Aug 16, 2025

@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 adds a regression test for an issue where CupertinoDesktopTextSelectionToolbarButton would crash when rendered in a zero-sized area. The added test correctly reproduces the scenario. My feedback focuses on improving the test's robustness by adding an assertion, as recommended by the Flutter testing guidelines.

Comment on lines +134 to +140
await tester.pumpWidget(
const CupertinoApp(
home: SizedBox.shrink(
child: CupertinoDesktopTextSelectionToolbarButton(onPressed: null, child: Text('X')),
),
),
);

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.

medium

While this test is great for catching crashes, it's missing an assertion. The Flutter testing guide states that every test should have at least one expect call.1 This ensures the test is actually verifying what it's supposed to and doesn't pass vacuously if the widget isn't rendered at all.

Adding a simple expect to check for the widget's presence would make this test more complete.

    await tester.pumpWidget(
      const CupertinoApp(
        home: SizedBox.shrink(
          child: CupertinoDesktopTextSelectionToolbarButton(onPressed: null, child: Text('X')),
        ),
      ),
    );
    expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), findsOneWidget);

Style Guide References

Footnotes

  1. Flutter Style Guide, line 10: Writing Effective Tests. ↩

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.

Either way is good IMO.

@justinmc justinmc 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.

LGTM 👍

Comment on lines +134 to +140
await tester.pumpWidget(
const CupertinoApp(
home: SizedBox.shrink(
child: CupertinoDesktopTextSelectionToolbarButton(onPressed: null, child: Text('X')),
),
),
);

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.

Either way is good IMO.

@ahmedsameha1
ahmedsameha1 force-pushed the handle#6537-CupertinoDesktopTextSelectionToolbarButton branch from b84737e to 86e646d Compare August 27, 2025 07:45

@dkwingsmt dkwingsmt 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.

Checklist:

  • The test is in the correct file
  • The test name goes “does not crash at zero area”
  • The target widget is wrapped by Center (or is fullscreen)
  • The target widget does not have an overlay, or the overlay is tested
  • The target widget is expected to have a size of exactly Size.zero

),
),
);
expect(tester.getSize(find.byType(CupertinoDesktopTextSelectionToolbarButton)).isEmpty, isTrue);

@dkwingsmt dkwingsmt Sep 18, 2025 •

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.

Suggested change
expect(tester.getSize(find.byType(CupertinoDesktopTextSelectionToolbarButton)).isEmpty, isTrue);
expect(tester.getSize(find.byType(CupertinoDesktopTextSelectionToolbarButton)), Size.zero);

@dkwingsmt dkwingsmt 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.

Checklist:

  • The test is in the correct file
  • The test name goes “does not crash at zero area”
  • The target widget is wrapped by Center (or is fullscreen)
  • The target widget does not have an overlay, or the overlay is tested
  • The target widget is expected to have a size of exactly Size.zero

@dkwingsmt dkwingsmt added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 23, 2025
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 23, 2025
@auto-submit

auto-submit Bot commented Sep 23, 2025

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/173894, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@justinmc justinmc added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 25, 2025
@auto-submit
auto-submit Bot added this pull request to the merge queue Sep 25, 2025
Merged via the queue into flutter:master with commit 3764b0b Sep 25, 2025
77 of 78 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 25, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 26, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 26, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 26, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 26, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 26, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 27, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 27, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2025
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Sep 29, 2025
Roll Flutter from 6cc976e to 96fe3b3 (32 revisions)

flutter/flutter@6cc976e...96fe3b3

2025-09-29 [email protected] Roll Packages from 389c678 to 34eec78 (6 revisions) (flutter/flutter#176205)
2025-09-29 [email protected] Roll Skia from 9b2b942d1eb1 to bb3b6bd4be0d (4 revisions) (flutter/flutter#176201)
2025-09-29 [email protected] [ Widget Preview ] Improve IDE integration support (flutter/flutter#176114)
2025-09-29 [email protected] Fix name of driver file (flutter/flutter#176186)
2025-09-29 [email protected] Roll Skia from beb673968802 to 9b2b942d1eb1 (3 revisions) (flutter/flutter#176190)
2025-09-28 [email protected] Roll Fuchsia Linux SDK from 0Z45OXT_Wb8aWI3a0... to 8zjcJic_DtvB2Bo2x... (flutter/flutter#176158)
2025-09-28 [email protected] Revert "[Impeller] Optimize scale translate rectangle transforms" (flutter/flutter#176161)
2025-09-27 [email protected] Roll Skia from 2e5da5c0a9cd to beb673968802 (1 revision) (flutter/flutter#176145)
2025-09-27 [email protected] [Impeller] Optimize scale translate rectangle transforms (flutter/flutter#176123)
2025-09-27 [email protected] Roll Skia from d8422aaf8f89 to 2e5da5c0a9cd (2 revisions) (flutter/flutter#176141)
2025-09-27 [email protected] [web] Remove mention of non-existent `canvaskit_lock.yaml` (flutter/flutter#176108)
2025-09-27 [email protected] Roll Skia from 96b73f61fe61 to d8422aaf8f89 (2 revisions) (flutter/flutter#176118)
2025-09-27 [email protected] [a11y] Add `expanded` flag support to Android. (flutter/flutter#174981)
2025-09-26 [email protected] Make sure that a DesktopTextSelectionToolbar doesn't crash in 0x0 env… (flutter/flutter#173928)
2025-09-26 [email protected] Roll Dart SDK from 899c7340cc4c to af31d2637b6b (11 revisions) (flutter/flutter#176056)
2025-09-26 [email protected] Update java version ranges with the top end limitation for java pre 17 (flutter/flutter#176049)
2025-09-26 [email protected] Add warn java evaluation to android_workflow (flutter/flutter#176097)
2025-09-26 [email protected] Removes type annotations in templates (flutter/flutter#176106)
2025-09-26 [email protected] Marks Linux_pixel_7pro static_path_stroke_tessellation_perf__timeline_summary to be unflaky (flutter/flutter#175917)
2025-09-26 [email protected] Add kotlin/kgp 2.2.* evaluation criteria.  (flutter/flutter#176094)
2025-09-26 [email protected] Migrate to `WidgetStateMouseCursor` (flutter/flutter#175981)
2025-09-26 [email protected] Roll Packages from 117bf63 to 389c678 (4 revisions) (flutter/flutter#176092)
2025-09-26 [email protected] Fix link to .gclient setup instructions (flutter/flutter#176046)
2025-09-26 [email protected] Implement Regular Windows for the win32 framework + add an example application for regular windows (flutter/flutter#173715)
2025-09-26 [email protected] Roll Skia from 5d99c3fc7c83 to 96b73f61fe61 (3 revisions) (flutter/flutter#176075)
2025-09-26 [email protected] Roll Fuchsia Linux SDK from naeytagBIBEpKgZNZ... to 0Z45OXT_Wb8aWI3a0... (flutter/flutter#176068)
2025-09-26 [email protected] Add itemClipBehavior property for CarouselView's children (flutter/flutter#175324)
2025-09-26 [email protected] Roll Skia from 55436d87e414 to 5d99c3fc7c83 (4 revisions) (flutter/flutter#176060)
2025-09-26 [email protected] Revert "[Impeller] Optimize scale translate rectangle transforms" (flutter/flutter#176061)
2025-09-25 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reapply "Update the AccessibilityPlugin::Announce method to account f… (#174365)" (flutter/flutter#176059)
2025-09-25 [email protected] Make sure that a CupertinoDesktopTextSelectionToolbarButton doesn't c… (flutter/flutter#173894)
2025-09-25 [email protected] Improve code quality in `SensitiveContentPluginTest.java` (flutter/flutter#175721)

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 [email protected] 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
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
flutter#173894)

This is my attempt to handle
flutter#6537 for the
CupertinoDesktopTextSelectionToolbarButton UI control.

---------

Co-authored-by: Victor Sanni <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
Roll Flutter from 6cc976e to 96fe3b3 (32 revisions)

flutter/flutter@6cc976e...96fe3b3

2025-09-29 [email protected] Roll Packages from 389c678 to 34eec78 (6 revisions) (flutter/flutter#176205)
2025-09-29 [email protected] Roll Skia from 9b2b942d1eb1 to bb3b6bd4be0d (4 revisions) (flutter/flutter#176201)
2025-09-29 [email protected] [ Widget Preview ] Improve IDE integration support (flutter/flutter#176114)
2025-09-29 [email protected] Fix name of driver file (flutter/flutter#176186)
2025-09-29 [email protected] Roll Skia from beb673968802 to 9b2b942d1eb1 (3 revisions) (flutter/flutter#176190)
2025-09-28 [email protected] Roll Fuchsia Linux SDK from 0Z45OXT_Wb8aWI3a0... to 8zjcJic_DtvB2Bo2x... (flutter/flutter#176158)
2025-09-28 [email protected] Revert "[Impeller] Optimize scale translate rectangle transforms" (flutter/flutter#176161)
2025-09-27 [email protected] Roll Skia from 2e5da5c0a9cd to beb673968802 (1 revision) (flutter/flutter#176145)
2025-09-27 [email protected] [Impeller] Optimize scale translate rectangle transforms (flutter/flutter#176123)
2025-09-27 [email protected] Roll Skia from d8422aaf8f89 to 2e5da5c0a9cd (2 revisions) (flutter/flutter#176141)
2025-09-27 [email protected] [web] Remove mention of non-existent `canvaskit_lock.yaml` (flutter/flutter#176108)
2025-09-27 [email protected] Roll Skia from 96b73f61fe61 to d8422aaf8f89 (2 revisions) (flutter/flutter#176118)
2025-09-27 [email protected] [a11y] Add `expanded` flag support to Android. (flutter/flutter#174981)
2025-09-26 [email protected] Make sure that a DesktopTextSelectionToolbar doesn't crash in 0x0 env… (flutter/flutter#173928)
2025-09-26 [email protected] Roll Dart SDK from 899c7340cc4c to af31d2637b6b (11 revisions) (flutter/flutter#176056)
2025-09-26 [email protected] Update java version ranges with the top end limitation for java pre 17 (flutter/flutter#176049)
2025-09-26 [email protected] Add warn java evaluation to android_workflow (flutter/flutter#176097)
2025-09-26 [email protected] Removes type annotations in templates (flutter/flutter#176106)
2025-09-26 [email protected] Marks Linux_pixel_7pro static_path_stroke_tessellation_perf__timeline_summary to be unflaky (flutter/flutter#175917)
2025-09-26 [email protected] Add kotlin/kgp 2.2.* evaluation criteria.  (flutter/flutter#176094)
2025-09-26 [email protected] Migrate to `WidgetStateMouseCursor` (flutter/flutter#175981)
2025-09-26 [email protected] Roll Packages from 117bf63 to 389c678 (4 revisions) (flutter/flutter#176092)
2025-09-26 [email protected] Fix link to .gclient setup instructions (flutter/flutter#176046)
2025-09-26 [email protected] Implement Regular Windows for the win32 framework + add an example application for regular windows (flutter/flutter#173715)
2025-09-26 [email protected] Roll Skia from 5d99c3fc7c83 to 96b73f61fe61 (3 revisions) (flutter/flutter#176075)
2025-09-26 [email protected] Roll Fuchsia Linux SDK from naeytagBIBEpKgZNZ... to 0Z45OXT_Wb8aWI3a0... (flutter/flutter#176068)
2025-09-26 [email protected] Add itemClipBehavior property for CarouselView's children (flutter/flutter#175324)
2025-09-26 [email protected] Roll Skia from 55436d87e414 to 5d99c3fc7c83 (4 revisions) (flutter/flutter#176060)
2025-09-26 [email protected] Revert "[Impeller] Optimize scale translate rectangle transforms" (flutter/flutter#176061)
2025-09-25 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reapply "Update the AccessibilityPlugin::Announce method to account f… (#174365)" (flutter/flutter#176059)
2025-09-25 [email protected] Make sure that a CupertinoDesktopTextSelectionToolbarButton doesn't c… (flutter/flutter#173894)
2025-09-25 [email protected] Improve code quality in `SensitiveContentPluginTest.java` (flutter/flutter#175721)

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 [email protected] 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

a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. p: cupertino_ui cupertino_ui package in flutter/packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants