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

Commit 1fe19f1

Browse files
authored
[webview_flutter] Bump minimum Flutter version and iOS deployment target (#4361)
1 parent 1751746 commit 1fe19f1

File tree

9 files changed

+48
-67
lines changed

9 files changed

+48
-67
lines changed

packages/webview_flutter/webview_flutter/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.14
2+
3+
* Update minimum Flutter SDK to 2.5 and iOS deployment target to 9.0.
4+
15
## 2.0.13
26

37
* Send URL of File to download to the NavigationDelegate on Android just like it is already done on iOS.

packages/webview_flutter/webview_flutter/example/ios/Flutter/AppFrameworkInfo.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
<key>CFBundleVersion</key>
2222
<string>1.0</string>
2323
<key>MinimumOSVersion</key>
24-
<string>8.0</string>
24+
<string>9.0</string>
2525
</dict>
2626
</plist>

packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@
547547
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
548548
GCC_WARN_UNUSED_FUNCTION = YES;
549549
GCC_WARN_UNUSED_VARIABLE = YES;
550-
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
550+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
551551
MTL_ENABLE_DEBUG_INFO = YES;
552552
ONLY_ACTIVE_ARCH = YES;
553553
SDKROOT = iphoneos;
@@ -597,7 +597,7 @@
597597
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
598598
GCC_WARN_UNUSED_FUNCTION = YES;
599599
GCC_WARN_UNUSED_VARIABLE = YES;
600-
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
600+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
601601
MTL_ENABLE_DEBUG_INFO = NO;
602602
SDKROOT = iphoneos;
603603
TARGETED_DEVICE_FAMILY = "1,2";

packages/webview_flutter/webview_flutter/example/ios/RunnerTests/FLTWKNavigationDelegateTests.m

+8-11
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,14 @@ - (void)setUp {
2525
}
2626

2727
- (void)testWebViewWebContentProcessDidTerminateCallsRecourseErrorChannel {
28-
if (@available(iOS 9.0, *)) {
29-
// `webViewWebContentProcessDidTerminate` is only available on iOS 9.0 and above.
30-
WKWebView *webview = OCMClassMock(WKWebView.class);
31-
[self.navigationDelegate webViewWebContentProcessDidTerminate:webview];
32-
OCMVerify([self.mockMethodChannel
33-
invokeMethod:@"onWebResourceError"
34-
arguments:[OCMArg checkWithBlock:^BOOL(NSDictionary *args) {
35-
XCTAssertEqualObjects(args[@"errorType"], @"webContentProcessTerminated");
36-
return true;
37-
}]]);
38-
}
28+
WKWebView *webview = OCMClassMock(WKWebView.class);
29+
[self.navigationDelegate webViewWebContentProcessDidTerminate:webview];
30+
OCMVerify([self.mockMethodChannel invokeMethod:@"onWebResourceError"
31+
arguments:[OCMArg checkWithBlock:^BOOL(NSDictionary *args) {
32+
XCTAssertEqualObjects(args[@"errorType"],
33+
@"webContentProcessTerminated");
34+
return true;
35+
}]]);
3936
}
4037

4138
@end

packages/webview_flutter/webview_flutter/example/pubspec.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ description: Demonstrates how to use the webview_flutter plugin.
33
publish_to: none
44

55
environment:
6-
sdk: ">=2.12.0 <3.0.0"
6+
sdk: ">=2.14.0 <3.0.0"
7+
flutter: ">=2.5.0"
78

89
dependencies:
910
flutter:

packages/webview_flutter/webview_flutter/ios/Classes/FLTCookieManager.m

+14-19
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,20 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
2525
}
2626

2727
- (void)clearCookies:(FlutterResult)result {
28-
if (@available(iOS 9.0, *)) {
29-
NSSet<NSString *> *websiteDataTypes = [NSSet setWithObject:WKWebsiteDataTypeCookies];
30-
WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
31-
32-
void (^deleteAndNotify)(NSArray<WKWebsiteDataRecord *> *) =
33-
^(NSArray<WKWebsiteDataRecord *> *cookies) {
34-
BOOL hasCookies = cookies.count > 0;
35-
[dataStore removeDataOfTypes:websiteDataTypes
36-
forDataRecords:cookies
37-
completionHandler:^{
38-
result(@(hasCookies));
39-
}];
40-
};
41-
42-
[dataStore fetchDataRecordsOfTypes:websiteDataTypes completionHandler:deleteAndNotify];
43-
} else {
44-
// support for iOS8 tracked in https://github.com/flutter/flutter/issues/27624.
45-
NSLog(@"Clearing cookies is not supported for Flutter WebViews prior to iOS 9.");
46-
}
28+
NSSet<NSString *> *websiteDataTypes = [NSSet setWithObject:WKWebsiteDataTypeCookies];
29+
WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
30+
31+
void (^deleteAndNotify)(NSArray<WKWebsiteDataRecord *> *) =
32+
^(NSArray<WKWebsiteDataRecord *> *cookies) {
33+
BOOL hasCookies = cookies.count > 0;
34+
[dataStore removeDataOfTypes:websiteDataTypes
35+
forDataRecords:cookies
36+
completionHandler:^{
37+
result(@(hasCookies));
38+
}];
39+
};
40+
41+
[dataStore fetchDataRecordsOfTypes:websiteDataTypes completionHandler:deleteAndNotify];
4742
}
4843

4944
@end

packages/webview_flutter/webview_flutter/ios/Classes/FlutterWebView.m

+13-29
Original file line numberDiff line numberDiff line change
@@ -272,19 +272,14 @@ - (void)onRemoveJavaScriptChannels:(FlutterMethodCall*)call result:(FlutterResul
272272
}
273273

274274
- (void)clearCache:(FlutterResult)result {
275-
if (@available(iOS 9.0, *)) {
276-
NSSet* cacheDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
277-
WKWebsiteDataStore* dataStore = [WKWebsiteDataStore defaultDataStore];
278-
NSDate* dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
279-
[dataStore removeDataOfTypes:cacheDataTypes
280-
modifiedSince:dateFrom
281-
completionHandler:^{
282-
result(nil);
283-
}];
284-
} else {
285-
// support for iOS8 tracked in https://github.com/flutter/flutter/issues/27624.
286-
NSLog(@"Clearing cache is not supported for Flutter WebViews prior to iOS 9.");
287-
}
275+
NSSet* cacheDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
276+
WKWebsiteDataStore* dataStore = [WKWebsiteDataStore defaultDataStore];
277+
NSDate* dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
278+
[dataStore removeDataOfTypes:cacheDataTypes
279+
modifiedSince:dateFrom
280+
completionHandler:^{
281+
result(nil);
282+
}];
288283
}
289284

290285
- (void)onGetTitle:(FlutterResult)result {
@@ -391,25 +386,18 @@ - (void)updateAutoMediaPlaybackPolicy:(NSNumber*)policy
391386
case 0: // require_user_action_for_all_media_types
392387
if (@available(iOS 10.0, *)) {
393388
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAll;
394-
} else if (@available(iOS 9.0, *)) {
395-
configuration.requiresUserActionForMediaPlayback = true;
396389
} else {
397-
#pragma clang diagnostic push
398-
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
399-
configuration.mediaPlaybackRequiresUserAction = true;
400-
#pragma clang diagnostic pop
390+
configuration.requiresUserActionForMediaPlayback = true;
401391
}
402392
break;
403393
case 1: // always_allow
404394
if (@available(iOS 10.0, *)) {
405-
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
406-
} else if (@available(iOS 9.0, *)) {
407-
configuration.requiresUserActionForMediaPlayback = false;
408-
} else {
409395
#pragma clang diagnostic push
410396
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
411-
configuration.mediaPlaybackRequiresUserAction = false;
397+
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
412398
#pragma clang diagnostic pop
399+
} else {
400+
configuration.requiresUserActionForMediaPlayback = false;
413401
}
414402
break;
415403
default:
@@ -468,11 +456,7 @@ - (void)registerJavaScriptChannels:(NSSet*)channelNames
468456
}
469457

470458
- (void)updateUserAgent:(NSString*)userAgent {
471-
if (@available(iOS 9.0, *)) {
472-
[_webView setCustomUserAgent:userAgent];
473-
} else {
474-
NSLog(@"Updating UserAgent is not supported for Flutter WebViews prior to iOS 9.");
475-
}
459+
[_webView setCustomUserAgent:userAgent];
476460
}
477461

478462
#pragma mark WKUIDelegate

packages/webview_flutter/webview_flutter/ios/webview_flutter.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ Downloaded by pub (not CocoaPods).
1818
s.public_header_files = 'Classes/**/*.h'
1919
s.dependency 'Flutter'
2020

21-
s.platform = :ios, '8.0'
21+
s.platform = :ios, '9.0'
2222
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
2323
end

packages/webview_flutter/webview_flutter/pubspec.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ name: webview_flutter
22
description: A Flutter plugin that provides a WebView widget on Android and iOS.
33
repository: https://github.com/flutter/plugins/tree/master/packages/webview_flutter/webview_flutter
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
5-
version: 2.0.13
5+
version: 2.0.14
66

77
environment:
8-
sdk: ">=2.12.0 <3.0.0"
9-
flutter: ">=2.0.0"
8+
sdk: ">=2.14.0 <3.0.0"
9+
flutter: ">=2.5.0"
1010

1111
flutter:
1212
plugin:

0 commit comments

Comments
 (0)