Skip to content

Conversation

@bparrishMines
Copy link
Contributor

@bparrishMines bparrishMines commented Oct 28, 2025

Fixes flutter/flutter#173326

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 3

@bparrishMines bparrishMines changed the title fix crash [webview_flutter_wkwebview] Fixes crash when running WKNavigationResponse tests on Xcode 26 Oct 28, 2025
Copy link

@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 addresses a crash that occurs during testing by introducing a singleton pattern for TestNavigationResponse. By using a static instance, it prevents premature deallocation of WKNavigationResponse objects within the test environment, which was causing the crash. The changes are correctly applied across the test files.

To align with the repository's contribution guidelines, please update the pull request title to include the package name (e.g., [webview_flutter_wkwebview] Fix crash in tests) and fill out the PR description with the necessary details, including the checklist and a link to the issue this PR resolves.

I have one suggestion to make the singleton implementation more robust.

Comment on lines +35 to +36
static let instance = TestNavigationResponse()

Choose a reason for hiding this comment

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

medium

To fully enforce the singleton pattern and prevent accidental creation of new TestNavigationResponse instances elsewhere in the tests, it's a good practice to make the initializer private. This will prevent reintroducing the deallocation crash in the future.

  static let instance = TestNavigationResponse()

  private override init() {
    super.init()
  }

@bparrishMines bparrishMines requested a review from jmagman October 28, 2025 22:31
@stuartmorgan-g stuartmorgan-g added the triage-ios Should be looked at in iOS triage label Nov 18, 2025
@okorohelijah okorohelijah requested review from LongCatIsLooong and removed request for LouiseHsu and jmagman November 24, 2025 19:41
Copy link
Contributor

@LongCatIsLooong LongCatIsLooong left a comment

Choose a reason for hiding this comment

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

I'm guessing this is only deferring the crash to when the program terminates (instead of at the end of the test), now that the instance is made static.

The documentation says

You don’t create WKNavigationResponse objects directly.

So I guess that explains why it is tricky to create WKNavigationResponse mocks. Someone actually had the exact same crash stacktrace here: https://developer.apple.com/forums/thread/804615, and they said they were able to workaround the crash (without preventing the mocks from deallocating).

@bparrishMines bparrishMines added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 4, 2025
@auto-submit auto-submit bot merged commit a4898b6 into flutter:main Dec 4, 2025
80 checks passed
@bparrishMines bparrishMines deleted the response_dealloc branch December 4, 2025 01:07
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 4, 2025
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Dec 4, 2025
flutter/packages@8cb4903...d39e481

2025-12-04 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 okorohelijah@google.com fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 10687576+bparrishMines@users.noreply.github.com
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 15619084+vashworth@users.noreply.github.com Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 stuartmorgan@google.com [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 engine-flutter-autoroll@skia.org Roll Flutter from
e274574 to 69d8710 (5 revisions) (flutter/packages#10558)
2025-12-03 engine-flutter-autoroll@skia.org Roll Flutter from
5545bb3 to e274574 (17 revisions) (flutter/packages#10554)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
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
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
…r#179451)

flutter/packages@8cb4903...d39e481

2025-12-04 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 okorohelijah@google.com fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 10687576+bparrishMines@users.noreply.github.com
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 15619084+vashworth@users.noreply.github.com Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 stuartmorgan@google.com [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 engine-flutter-autoroll@skia.org Roll Flutter from
e274574 to 69d8710 (5 revisions) (flutter/packages#10558)
2025-12-03 engine-flutter-autoroll@skia.org Roll Flutter from
5545bb3 to e274574 (17 revisions) (flutter/packages#10554)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
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

autosubmit Merge PR when tree becomes green via auto submit App p: webview_flutter platform-ios platform-macos triage-ios Should be looked at in iOS triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

webview_flutter_wkwebview tests crash during -[WKNavigationResponse dealloc] on Xcode 26 beta 4

3 participants