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

[webview_flutter_wkwebview] Add support for cookie manager #5203

Merged
merged 6 commits into from
Apr 12, 2022

Conversation

bparrishMines
Copy link
Contributor

@bparrishMines bparrishMines commented Apr 7, 2022

No version change:
Part of flutter/flutter#93732 and doesn't make any changes to the current implementation.

No CHANGELOG change: Incremental unused code doesn't need to be noted in the CHANGELOG.

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-ios labels Apr 7, 2022
@bparrishMines bparrishMines changed the title add cookie manager [webview_flutter_wkwebview] Add support for cookie manager Apr 11, 2022
@@ -1,5 +1,5 @@
// Mocks generated by Mockito 5.1.0 from annotations
// in webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart.
// in webview_flutter_wkwebview/example/ios/.symlinks/plugins/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I still don't know why it uses symlinks sometimes :(

Future<void> removeDataOfTypes(
///
/// Returns whether any data was removed.
Future<bool> removeDataOfTypes(
Copy link
Contributor Author

@bparrishMines bparrishMines Apr 11, 2022

Choose a reason for hiding this comment

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

This Objective-C method doesn't return a bool, but I decided to just add this feature for simplicity of adding CookieManager.setCookie.

import 'package:webview_flutter_wkwebview/src/web_kit/web_kit.dart';

/// Handles all cookie operations for the WebView platform.
class WebKitCookieManager extends WebViewCookieManagerPlatform {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@stuartmorgan @mvanbeusekom

In the WebKit library, the clearCookies and setCookies methods can be called for a single WKWebView by changing the WKWebViewConfiguration.websiteDatastore. For Android there is only a single global CookieManager instance. To accommodate platforms like WebKit, I think the new interface should move both of these methods to WebViewController or there should be an instanced WebViewController.cookieManager.

Copy link
Contributor

@stuartmorgan-g stuartmorgan-g left a comment

Choose a reason for hiding this comment

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

LGTM with nit.

return false;
}
}
return true;
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: This can just be written as:

return !path.codeUnits.any((int char) => (char < 0x20 || char > 0x3A) && (char < 0x3C || char > 0x7E));

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
p: webview_flutter Edits files for a webview_flutter plugin platform-ios
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants