Skip to content

Commit 9feff62

Browse files
authored
Merge pull request #513 from charafau/reload_webview_headers
Reload webview headers, ios clear cookies
2 parents 24abc82 + cd0437e commit 9feff62

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,13 @@ private void reload(MethodCall call, MethodChannel.Result result) {
204204
private void reloadUrl(MethodCall call, MethodChannel.Result result) {
205205
if (webViewManager != null) {
206206
String url = call.argument("url");
207-
webViewManager.reloadUrl(url);
207+
Map<String, String> headers = call.argument("headers");
208+
if (headers != null) {
209+
webViewManager.reloadUrl(url, headers);
210+
} else {
211+
webViewManager.reloadUrl(url);
212+
}
213+
208214
}
209215
result.success(null);
210216
}

android/src/main/java/com/flutter_webview_plugin/WebviewManager.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,10 @@ void openUrl(
373373
webView.getSettings().setUseWideViewPort(useWideViewPort);
374374

375375
// Handle debugging
376-
webView.setWebContentsDebuggingEnabled(debuggingEnabled);
377-
376+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
377+
webView.setWebContentsDebuggingEnabled(debuggingEnabled);
378+
}
379+
378380
webViewClient.updateInvalidUrlRegex(invalidUrlRegex);
379381

380382
if (geolocationEnabled) {
@@ -416,6 +418,10 @@ void reloadUrl(String url) {
416418
webView.loadUrl(url);
417419
}
418420

421+
void reloadUrl(String url, Map<String, String> headers) {
422+
webView.loadUrl(url, headers);
423+
}
424+
419425
void close(MethodCall call, MethodChannel.Result result) {
420426
if (webView != null) {
421427
ViewGroup vg = (ViewGroup) (webView.getParent());

ios/Classes/FlutterWebviewPlugin.m

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,18 @@ - (void)initWebview:(FlutterMethodCall*)call {
9292
}
9393

9494
if (clearCookies != (id)[NSNull null] && [clearCookies boolValue]) {
95-
[[NSURLSession sharedSession] resetWithCompletionHandler:^{
96-
}];
95+
if (@available(iOS 9.0, *)) {
96+
NSSet *websiteDataTypes
97+
= [NSSet setWithArray:@[
98+
WKWebsiteDataTypeCookies,
99+
]];
100+
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
101+
102+
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
103+
}];
104+
} else {
105+
// Fallback on earlier versions
106+
}
97107
}
98108

99109
if (userAgent != (id)[NSNull null]) {
@@ -217,7 +227,13 @@ - (void)closeWebView {
217227
- (void)reloadUrl:(FlutterMethodCall*)call {
218228
if (self.webview != nil) {
219229
NSString *url = call.arguments[@"url"];
220-
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
230+
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
231+
NSDictionary *headers = call.arguments[@"headers"];
232+
233+
if (headers != nil) {
234+
[request setAllHTTPHeaderFields:headers];
235+
}
236+
221237
[self.webview loadRequest:request];
222238
}
223239
}

lib/src/base.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,11 @@ class FlutterWebviewPlugin {
202202
Future<Null> show() async => await _channel.invokeMethod('show');
203203

204204
// Reload webview with a url
205-
Future<Null> reloadUrl(String url) async {
206-
final args = <String, String>{'url': url};
205+
Future<Null> reloadUrl(String url, {Map<String, String> headers}) async {
206+
final args = <String, dynamic>{'url': url};
207+
if (headers != null) {
208+
args['headers'] = headers;
209+
}
207210
await _channel.invokeMethod('reloadUrl', args);
208211
}
209212

0 commit comments

Comments
 (0)