Skip to content

[google_sign_in_ios] Add Swift seams + ExceptionCatcher - #3

Closed
victogomez-cs wants to merge 1 commit into
mainfrom
google_sign_in_swift_pr1_seams
Closed

victogomez-cs wants to merge 1 commit into
mainfrom
google_sign_in_swift_pr1_seams

Conversation

@victogomez-cs

Copy link
Copy Markdown
Owner

Introduce leaf Swift types and the Obj-C exception helper ahead of the plugin cutover. Packaging still uses the existing Obj-C implementation.

Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.

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

Pre-Review Checklist

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

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

Introduce leaf Swift types and the Obj-C exception helper ahead of the
plugin cutover. Packaging still uses the existing Obj-C implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
@victogomez-cs
victogomez-cs force-pushed the google_sign_in_swift_pr1_seams branch from 92dc5a0 to 6b4a16a Compare August 12, 2026 16:03
@victogomez-cs
victogomez-cs deleted the google_sign_in_swift_pr1_seams branch August 13, 2026 18:44
danielleon-cmd pushed a commit that referenced this pull request Aug 27, 2026
…r#12619)

Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions)

flutter/flutter@9a82789...15d8908

2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734)
2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702)
2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723)
2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701)
2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641)
2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633)
2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597)
2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614)
2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217)
2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343)
2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360)
2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333)
2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673)
2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936)
2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588)
2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356)
2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389)
2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328)
2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218)
2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586)
2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434)
2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180)
2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494)
2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442)
2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952)
2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253)
2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579)
2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577)

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

...
danielleon-cmd pushed a commit that referenced this pull request Aug 27, 2026
…r#12619)

Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions)

flutter/flutter@9a82789...15d8908

2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734)
2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702)
2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723)
2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701)
2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641)
2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642)
2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633)
2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597)
2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621)
2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614)
2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217)
2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343)
2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360)
2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333)
2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673)
2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936)
2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588)
2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356)
2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389)
2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328)
2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218)
2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586)
2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434)
2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180)
2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494)
2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442)
2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952)
2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253)
2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579)
2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577)

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

...
victogomez-cs pushed a commit that referenced this pull request Sep 29, 2026
…lBarrier (flutter#12353)

Shell chrome painted before a `ShellRoute` or `StatefulShellRoute` navigator (a side rail, or an app bar in a `Row`/`Column` based shell) disappears from the semantics tree. Screen readers cannot reach it at all: the nodes are not merely unnamed, they do not exist.

The mechanism: every `ModalRoute` builds a `ModalBarrier` wrapped in `BlockSemantics`, which drops the semantics of everything painted before it up to the nearest semantics boundary. The nested `Navigator` that go_router builds for shell routes does not establish such a boundary, so the block escapes the shell's navigator and prunes the shell's own chrome. Bottom-nav shells are unaffected only because `Scaffold` happens to paint its body before its bars.

This PR wraps the navigator built for `ShellRoute`/`StatefulShellRoute` branches in `Semantics(container: true)`, which contains the block. The root navigator is left unwrapped, since it has no earlier-painted siblings by construction. This is the workaround a framework team member confirmed on the linked issue; applying it inside go_router fixes it for every shell consumer without app-side patches.

Semantics tree of a minimal repro (a `Row` shell: 220px sidebar with three nav buttons, routed content on the right), before and after, captured with `debugDumpSemanticsTree`:

<details>
<summary>Before: 6 nodes, the entire sidebar subtree is missing</summary>

```
SemanticsNode#0
 │ Rect.fromLTRB(0.0, 0.0, 2400.0, 1800.0)
 │
 └─SemanticsNode#1
   │ Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) scaled by 3.0x
   │ textDirection: ltr
   │ sortKey: OrdinalSortKey#39327(order: 0.0)
   │
   └─SemanticsNode#2
     │ Rect.fromLTRB(0.0, 0.0, 800.0, 600.0)
     │ flags: scopesRoute
     │
     └─SemanticsNode#3
       │ Rect.fromLTRB(221.0, 0.0, 800.0, 600.0)
       │ sortKey: OrdinalSortKey#39327(order: 0.0)
       │
       └─SemanticsNode#4
         │ Rect.fromLTRB(0.0, 0.0, 579.0, 600.0)
         │ flags: scopesRoute
         │
         └─SemanticsNode#5
             Rect.fromLTRB(85.5, 284.0, 493.5, 316.0)
             label: "Dashboard content"
             textDirection: ltr
```

Node `#3` starts at `x=221`, right of the 220px sidebar plus a 1px divider. There is no node anywhere for the sidebar: no title, no navigation container, no buttons. The sidebar is painted before the `/dashboard` route (`#4`, `scopesRoute`) inside the same enclosing semantics scope, which is exactly what that route's `BlockSemantics` drops.

</details>

<details>
<summary>After: sidebar fully present, routed content unchanged (two nodes for the repro's own toggle switch omitted for brevity)</summary>

```
SemanticsNode#0
 │ Rect.fromLTRB(0.0, 0.0, 2400.0, 1800.0)
 │
 └─SemanticsNode#1
   │ Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) scaled by 3.0x
   │ textDirection: ltr
   │ sortKey: OrdinalSortKey#39327(order: 0.0)
   │
   └─SemanticsNode#2
     │ Rect.fromLTRB(0.0, 0.0, 800.0, 600.0)
     │ flags: scopesRoute
     │
     ├─SemanticsNode#3
     │   Rect.fromLTRB(16.0, 16.0, 204.0, 76.0)
     │   label: "Nested Navigator Semantics"
     │   textDirection: ltr
     │
     ├─SemanticsNode#4
     │ │ Rect.fromLTRB(0.0, 92.0, 220.0, 260.0)
     │ │ label: "Main navigation"
     │ │ textDirection: ltr
     │ │
     │ ├─SemanticsNode#5
     │ │   Rect.fromLTRB(0.0, 0.0, 220.0, 56.0)
     │ │   actions: focus, tap
     │ │   flags: isSelected, isButton, hasEnabledState, isEnabled,
     │ │     isFocusable, hasSelectedState
     │ │   label: "Dashboard"
     │ │   textDirection: ltr
     │ │
     │ ├─SemanticsNode#6
     │ │   Rect.fromLTRB(0.0, 56.0, 220.0, 112.0)
     │ │   actions: focus, tap
     │ │   flags: isButton, hasEnabledState, isEnabled, isFocusable,
     │ │     hasSelectedState
     │ │   label: "Settings"
     │ │   textDirection: ltr
     │ │
     │ └─SemanticsNode#7
     │     Rect.fromLTRB(0.0, 112.0, 220.0, 168.0)
     │     actions: focus, tap
     │     flags: isButton, hasEnabledState, isEnabled, isFocusable,
     │       hasSelectedState
     │     label: "Reports"
     │     textDirection: ltr
     │
     └─SemanticsNode#10
       │ Rect.fromLTRB(221.0, 0.0, 800.0, 600.0)
       │ sortKey: OrdinalSortKey#39327(order: 0.0)
       │
       └─SemanticsNode#11
         │ Rect.fromLTRB(0.0, 0.0, 579.0, 600.0)
         │ flags: scopesRoute
         │
         └─SemanticsNode#12
             Rect.fromLTRB(85.5, 284.0, 493.5, 316.0)
             label: "Dashboard content"
             textDirection: ltr
```

The routed content node ("Dashboard content") is byte-identical in both dumps. The fix does not change the routed content's semantics, only whether the chrome painted before the shell navigator survives alongside it.

</details>

Notes for review:

- Tests: the fix commit adds a `Shell navigator semantics boundary` group to `builder_test.dart` (chrome survives, structural wrap present, root navigator not wrapped), and a second commit adds a `StatefulShellRoute.indexedStack` regression test covering branch switching. Removing the wrap makes the chrome tests fail with `Found 0 widgets with a semantics label`.
- Version/CHANGELOG: go_router uses batch release, so this PR adds a file under `pending_changelogs/` (`version: patch`) instead of touching `pubspec.yaml` or `CHANGELOG.md`.
- Interaction with flutter/flutter#181519 (replacing `BlockSemantics` in modal routes with `AccessibilityFocusBlockType.blockSubtree`): the fix establishes a semantics container boundary at the shell navigator, which is where a nested navigator should scope its routes' blocking regardless of the blocking mechanism. If that migration later makes the containment unnecessary, the wrap stays harmless.

Fixes flutter/flutter#135656
Related: flutter/flutter#55758, flutter/flutter#150978

## Pre-Review Checklist

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
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.

1 participant