From 9fa26ed15993e589e1a55b42b950f1f77e190ba7 Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 09:38:39 +0100 Subject: [PATCH 1/7] Move the iOS9 code back into the @available block to reduce compiler warnings. --- .../ios/Classes/FLTCookieManager.m | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/webview_flutter/ios/Classes/FLTCookieManager.m b/packages/webview_flutter/ios/Classes/FLTCookieManager.m index 4e48501e1a74..71d66f424201 100644 --- a/packages/webview_flutter/ios/Classes/FLTCookieManager.m +++ b/packages/webview_flutter/ios/Classes/FLTCookieManager.m @@ -26,28 +26,25 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result - (void)clearCookies:(FlutterResult)result { if (@available(iOS 9.0, *)) { - [self clearCookiesIos9AndLater:result]; + NSSet *websiteDataTypes = [NSSet setWithArray:@[ WKWebsiteDataTypeCookies ]]; + WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore]; + + void (^deleteAndNotify)(NSArray *) = + ^(NSArray *cookies) { + BOOL hasCookies = cookies.count > 0; + [dataStore removeDataOfTypes:websiteDataTypes + forDataRecords:cookies + completionHandler:^{ + result(@(hasCookies)); + }]; + }; + + [dataStore fetchDataRecordsOfTypes:websiteDataTypes completionHandler:deleteAndNotify]; } else { // support for iOS8 tracked in https://github.com/flutter/flutter/issues/27624. NSLog(@"Clearing cookies is not supported for Flutter WebViews prior to iOS 9."); } } -- (void)clearCookiesIos9AndLater:(FlutterResult)result { - NSSet *websiteDataTypes = [NSSet setWithArray:@[ WKWebsiteDataTypeCookies ]]; - WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore]; - - void (^deleteAndNotify)(NSArray *) = - ^(NSArray *cookies) { - BOOL hasCookies = cookies.count > 0; - [dataStore removeDataOfTypes:websiteDataTypes - forDataRecords:cookies - completionHandler:^{ - result(@(hasCookies)); - }]; - }; - - [dataStore fetchDataRecordsOfTypes:websiteDataTypes completionHandler:deleteAndNotify]; -} @end From 7c160f41a3ea5eb893423e5b1aaf3ff095e9ae02 Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 09:39:13 +0100 Subject: [PATCH 2/7] Update example project files to latest XCode recommendation. --- .../example/ios/Runner.xcodeproj/project.pbxproj | 15 ++++++++------- .../xcshareddata/xcschemes/Runner.xcscheme | 4 +--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 61ee7d2d4093..82377c5fc615 100644 --- a/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -13,7 +13,6 @@ 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -177,7 +176,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1030; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -187,7 +186,7 @@ }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -210,7 +209,6 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); @@ -253,12 +251,9 @@ files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -323,6 +318,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -332,12 +328,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -377,6 +375,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -386,12 +385,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 1263ac84b105..036fdb7b317a 100644 --- a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -46,7 +45,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From c763540f59727630080b6af2a4149e5bd33f7b3c Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 09:40:34 +0100 Subject: [PATCH 3/7] update changelog --- packages/webview_flutter/CHANGELOG.md | 5 +++++ packages/webview_flutter/pubspec.yaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 38b344d88f34..1ac4f2bbcfc2 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.3.11+4 + +* Reduce compiler warnings regarding iOS9 compatibility by moving a single + method back into a `@available` block. + ## 0.3.11+3 * Apply the display listeners workaround that was shipped in 0.3.11+1 on diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index d2f6aa0e81e1..83e360187e55 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 0.3.11+3 +version: 0.3.11+4 author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter From 52b3a30489cf07642346a4f5d4130a478f550db1 Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 09:40:34 +0100 Subject: [PATCH 4/7] update changelog --- packages/webview_flutter/CHANGELOG.md | 5 +++++ packages/webview_flutter/pubspec.yaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 38b344d88f34..1ac4f2bbcfc2 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.3.11+4 + +* Reduce compiler warnings regarding iOS9 compatibility by moving a single + method back into a `@available` block. + ## 0.3.11+3 * Apply the display listeners workaround that was shipped in 0.3.11+1 on diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index d2f6aa0e81e1..83e360187e55 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 0.3.11+3 +version: 0.3.11+4 author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter From acbbfe12f9ab08ee3777485162c9f2f88a9c70d3 Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 11:47:48 +0100 Subject: [PATCH 5/7] formatting --- packages/webview_flutter/ios/Classes/FLTCookieManager.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/ios/Classes/FLTCookieManager.m b/packages/webview_flutter/ios/Classes/FLTCookieManager.m index 71d66f424201..6c9f90f78163 100644 --- a/packages/webview_flutter/ios/Classes/FLTCookieManager.m +++ b/packages/webview_flutter/ios/Classes/FLTCookieManager.m @@ -30,14 +30,14 @@ - (void)clearCookies:(FlutterResult)result { WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore]; void (^deleteAndNotify)(NSArray *) = - ^(NSArray *cookies) { + ^(NSArray *cookies) { BOOL hasCookies = cookies.count > 0; [dataStore removeDataOfTypes:websiteDataTypes forDataRecords:cookies completionHandler:^{ result(@(hasCookies)); }]; - }; + }; [dataStore fetchDataRecordsOfTypes:websiteDataTypes completionHandler:deleteAndNotify]; } else { From 30345098a9c1a00a3b42d13e795e3b6c8ccb954f Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 14:33:47 +0100 Subject: [PATCH 6/7] formatting once again --- packages/webview_flutter/ios/Classes/FLTCookieManager.m | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/webview_flutter/ios/Classes/FLTCookieManager.m b/packages/webview_flutter/ios/Classes/FLTCookieManager.m index 6c9f90f78163..f950d64d3d09 100644 --- a/packages/webview_flutter/ios/Classes/FLTCookieManager.m +++ b/packages/webview_flutter/ios/Classes/FLTCookieManager.m @@ -46,5 +46,4 @@ - (void)clearCookies:(FlutterResult)result { } } - @end From 50ac0a41fd9bf2c3e17821d6257a196247dfec9f Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Wed, 14 Aug 2019 22:27:54 +0100 Subject: [PATCH 7/7] NSSet setWithObject instead of implicit array creation --- packages/webview_flutter/ios/Classes/FLTCookieManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/ios/Classes/FLTCookieManager.m b/packages/webview_flutter/ios/Classes/FLTCookieManager.m index f950d64d3d09..47948bf6b9f0 100644 --- a/packages/webview_flutter/ios/Classes/FLTCookieManager.m +++ b/packages/webview_flutter/ios/Classes/FLTCookieManager.m @@ -26,7 +26,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result - (void)clearCookies:(FlutterResult)result { if (@available(iOS 9.0, *)) { - NSSet *websiteDataTypes = [NSSet setWithArray:@[ WKWebsiteDataTypeCookies ]]; + NSSet *websiteDataTypes = [NSSet setWithObject:WKWebsiteDataTypeCookies]; WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore]; void (^deleteAndNotify)(NSArray *) =