Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

[android_webview_controller] Fixes bug where an AndroidController couldn't be reused #6910

Merged
merged 3 commits into from
Jan 14, 2023

Conversation

bparrishMines
Copy link
Contributor

@bparrishMines bparrishMines commented Jan 3, 2023

Bug is fixed by not calling destroy() when the widget is disposed.

This shouldn't cause a regression since we were calling it incorrectly in 4.0 and pre 4.0 anyways. We could consider offering a AndroidWebViewController.destoryWebView() if the community shows interest in using this method.

Fixes the issue flutter/flutter#117887 for WebView

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
  • I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added p: webview_flutter Edits files for a webview_flutter plugin platform-android labels Jan 3, 2023
@bparrishMines bparrishMines changed the title the fix [android_webview_controller] Fixes bug where an AndroidController couldn't be reused Jan 4, 2023
Copy link
Contributor

@stuartmorgan stuartmorgan left a comment

Choose a reason for hiding this comment

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

It doesn't look like anything else is calling destroy(); won't this leak the WebView internals?

@bparrishMines
Copy link
Contributor Author

Hmmm, I was actually curious as to how important it was to call destroy on a WebView, but I couldn't find any extensive documentation on it. However, it is probably better to be safe than sorry. I considered adding the AndroidWebViewController.destroyWebView method for users who wanted it, but ended up adding the call to WebView.destroy when the Dart WebView is garbage collected and subsequently disposes the strong reference in the Java InstanceManager.

Copy link
Contributor

@stuartmorgan stuartmorgan left a comment

Choose a reason for hiding this comment

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

LGTM, thanks! (I agree the docs aren't very helpful about this method; it sounds to me like calling it is necessary, but it's not actually that clear, nor does it explain why.)

@bparrishMines bparrishMines added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 14, 2023
@auto-submit auto-submit bot merged commit f36fa64 into flutter:main Jan 14, 2023
@bparrishMines bparrishMines deleted the android_destroy branch January 14, 2023 00:39
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jan 16, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jan 16, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jan 17, 2023
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jan 17, 2023
* d607cd910 Roll Flutter from 0d91c03 to 2201698 (28 revisions) (flutter/plugins#6953)

* e2d174ca1 [tool] Check for search paths in Swift plugins (flutter/plugins#6954)

* f80aabf03 [shared_preferences] Revert recent iOS example changes (flutter/plugins#6955)

* f36fa6407 [android_webview_controller] Fixes bug where an `AndroidController` couldn't be reused (flutter/plugins#6910)

* b751ff166 [webview_flutter_android] Fixes crash when the Java `InstanceManager` was used after plugin was removed from engine (flutter/plugins#6943)

* 1efd51837 Roll Flutter from 2201698 to 68dd63d (9 revisions) (flutter/plugins#6956)

* eda98cddb Roll Flutter from 68dd63d to 1220245 (4 revisions) (flutter/plugins#6957)

* 4e5cf2d2d Roll Flutter from 1220245 to 8c2fdb8 (2 revisions) (flutter/plugins#6979)
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
…#118624)

* d607cd910 Roll Flutter from 0d91c03 to 2201698 (28 revisions) (flutter/plugins#6953)

* e2d174ca1 [tool] Check for search paths in Swift plugins (flutter/plugins#6954)

* f80aabf03 [shared_preferences] Revert recent iOS example changes (flutter/plugins#6955)

* f36fa6407 [android_webview_controller] Fixes bug where an `AndroidController` couldn't be reused (flutter/plugins#6910)

* b751ff166 [webview_flutter_android] Fixes crash when the Java `InstanceManager` was used after plugin was removed from engine (flutter/plugins#6943)

* 1efd51837 Roll Flutter from 2201698 to 68dd63d (9 revisions) (flutter/plugins#6956)

* eda98cddb Roll Flutter from 68dd63d to 1220245 (4 revisions) (flutter/plugins#6957)

* 4e5cf2d2d Roll Flutter from 1220245 to 8c2fdb8 (2 revisions) (flutter/plugins#6979)
mauricioluz pushed a commit to mauricioluz/plugins that referenced this pull request Jan 26, 2023
…ouldn't be reused (flutter#6910)

* the fix

* change location of setting pageLoaded

* destroy webview when removed from system
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: webview_flutter Edits files for a webview_flutter plugin platform-android
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants