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

[webview_flutter] add gesture navigation for iOS #2339

Merged
merged 3 commits into from
Dec 13, 2019

Conversation

wwwdata
Copy link
Contributor

@wwwdata wwwdata commented Dec 4, 2019

Description

This introduces a boolean for the allowsBackForwardNavigationGestures setting of the WKWebView in iOS. It has no effect on Android.

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (flutter analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
  • I updated CHANGELOG.md to add a description of the change.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
  • No, this is not a breaking change.

@wwwdata wwwdata requested a review from amirh as a code owner December 4, 2019 10:37
@ened
Copy link
Contributor

ened commented Dec 6, 2019

Hi @wwwdata - thank you for the PR!
It seems like useful addition to the web view plugin.
Could you please rebase & also add a e2e test. You can find the existing e2e test suite in example/test_driver/webview_flutter_e2e.dart.
Once both done, we can proceed to the next step. Thank you once again!

@wwwdata wwwdata force-pushed the webview_allow_gesture_navigation branch 2 times, most recently from bfced84 to e71294a Compare December 6, 2019 11:11
@wwwdata
Copy link
Contributor Author

wwwdata commented Dec 6, 2019

@ened thanks for the fast response. I am a bit confused about the e2e tests. As far as I see it currently, they are basically running some quick unit tests but using the real platform for that, correct? What could I in my case add as a test? In order to test whether it works, I would really have to launch a WebView in iOS then find a link to tap on, which navigates forward, after that use a swipe gesture to navigate back again.

For now, I just added a test that is launching the WebView with my new feature to see that nothing crashes

@ened
Copy link
Contributor

ened commented Dec 6, 2019

@wwwdata That will do it for the moment. Among other behaviour, the key issue is to check whether the native component will load properly and received the right configuration.

Something I'm not sure yet is whether it's ok to no-op the test on Android. Understood it's a non-supported feature on Android, but if it ever will be in the future, the test may be missed.

Besides, the underlying platform implementation should not ignore parameters it doesn't know about.

@wwwdata
Copy link
Contributor Author

wwwdata commented Dec 6, 2019

Something I'm not sure yet is whether it's ok to no-op the test on Android. Understood it's a non-supported feature on Android, but if it ever will be in the future, the test may be missed.

You're right will remove the no-op. It should go through and really test that nothing bad happens.

@wwwdata wwwdata force-pushed the webview_allow_gesture_navigation branch 3 times, most recently from a06f513 to 04571b3 Compare December 10, 2019 12:34
Copy link
Contributor

@ened ened left a comment

Choose a reason for hiding this comment

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

LGTM - thank you.

@wwwdata wwwdata force-pushed the webview_allow_gesture_navigation branch from 04571b3 to f67b848 Compare December 11, 2019 16:00
This introduces a boolean for the allowsBackForwardNavigationGestures
setting of the WKWebView in iOS. It has no effect on Android.
@wwwdata wwwdata force-pushed the webview_allow_gesture_navigation branch from f67b848 to c94f270 Compare December 12, 2019 12:41
@ened
Copy link
Contributor

ened commented Dec 12, 2019

@wwwdata After reading this a few more times, would you agree that gestureNavigationEnabled is more concise & clear to the developer that will use the webview widget?
It also seems to be in line with debuggingEnabled, style wise.

I can see how this property shadows the iOS name, but I'm not sure if we want to change the name in the future, if other platforms allow for this kind of navigation in a webview. @collinjackson, WDYT?

@collinjackson
Copy link
Contributor

I agree with @ened that gestureNavigationEnabled works better as a cross-platform name.

@wwwdata
Copy link
Contributor Author

wwwdata commented Dec 12, 2019

Ok. New name makes sense! Thanks for already making the change.

@ened ened merged commit 79aa082 into flutter:master Dec 13, 2019
sanekyy pushed a commit to sanekyy/plugins that referenced this pull request Dec 21, 2019
hjc22 pushed a commit to hjc22/plugins that referenced this pull request Jan 8, 2020
…acheing-01-08

* flutterPlugin/master: (30 commits)
  Update Gradle version (flutter#2448)
  [image_picker] support android V2 embedding (flutter#2430)
  [webview_flutter] Setup XCTests (flutter#2445)
  [video_player] Fixes video initialization future stall. (flutter#2134)
  [ci] Upgrade to Xcode 11.3 (flutter#2435)
  [In_app_purchases] migrate to Play Billing Library 2.0. (flutter#2287)
  Migrate away from deprecated `BinaryMessages` (flutter#2444)
  [google_sign_in]Update google_sign_in_example name in pubspec.yaml (flutter#2335)
  [ios_platform_images] Removed android support from the pubspec. (flutter#2432)
  [google_sign_in] Expose network error (flutter#2398)
  [battery] cleanup for Android embedding post 1.12 (flutter#2400)
  [flutter_webview] Raise min Flutter SDK to stable (flutter#2425)
  re-enable stable CI (flutter#2402)
  [in_app_purchase]Change a comment. (flutter#2329)
  [google_sign_in] Pass the client id to the platform interface. (flutter#2427)
  [ios_platform_images] Made ios_platform_images set the correct image scale. (flutter#2414)
  [url_launcher_platform_interface] use non static token for platform interface (flutter#2418)
  [plugin_platform_interface] Don't use const Object as a token (flutter#2417)
  Update endorsed macos plugins readme and update others (flutter#2407)
  [webview_flutter] add gesture navigation for iOS (flutter#2339)
  ...

# Conflicts:
#	packages/video_player/video_player/CHANGELOG.md
#	packages/video_player/video_player/pubspec.yaml
FlutterSu pushed a commit to FlutterSu/flutter-plugins that referenced this pull request Nov 20, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants