Skip to content

Commit f6b983b

Browse files
[webview_flutter] Update iOS to Pigeon 13 (#5271)
Updates to Pigeon 13, which includes breaking changes for primitive values in the Obj-C generator.
1 parent 86b1168 commit f6b983b

37 files changed

+1647
-855
lines changed

packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.9.4
2+
3+
* Updates to Pigeon 13.
4+
15
## 3.9.3
26

37
* Fixes `use_build_context_synchronously` lint violations in the example app.

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFDataConvertersTests.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ - (void)testFWFWKUserScriptFromScriptData {
4949
makeWithSource:@"mySource"
5050
injectionTime:[FWFWKUserScriptInjectionTimeEnumData
5151
makeWithValue:FWFWKUserScriptInjectionTimeEnumAtDocumentStart]
52-
isMainFrameOnly:@NO]);
52+
isMainFrameOnly:NO]);
5353

5454
XCTAssertEqualObjects(userScript.source, @"mySource");
5555
XCTAssertEqual(userScript.injectionTime, WKUserScriptInjectionTimeAtDocumentStart);
@@ -94,7 +94,7 @@ - (void)testFWFWKFrameInfoDataFromWKFrameInfo {
9494
OCMStub([mockFrameInfo isMainFrame]).andReturn(YES);
9595

9696
FWFWKFrameInfoData *targetFrameData = FWFWKFrameInfoDataFromNativeWKFrameInfo(mockFrameInfo);
97-
XCTAssertEqualObjects(targetFrameData.isMainFrame, @YES);
97+
XCTAssertEqual(targetFrameData.isMainFrame, YES);
9898
}
9999

100100
- (void)testFWFNSErrorDataFromNSError {
@@ -104,7 +104,7 @@ - (void)testFWFNSErrorDataFromNSError {
104104
userInfo:@{@"a" : @"b", @"c" : unsupportedType}];
105105

106106
FWFNSErrorData *data = FWFNSErrorDataFromNativeNSError(error);
107-
XCTAssertEqualObjects(data.code, @23);
107+
XCTAssertEqual(data.code, 23);
108108
XCTAssertEqualObjects(data.domain, @"domain");
109109

110110
NSDictionary *userInfo = @{
@@ -133,7 +133,7 @@ - (void)testFWFWKSecurityOriginDataFromWKSecurityOrigin {
133133
FWFWKSecurityOriginData *data =
134134
FWFWKSecurityOriginDataFromNativeWKSecurityOrigin(mockSecurityOrigin);
135135
XCTAssertEqualObjects(data.host, @"host");
136-
XCTAssertEqualObjects(data.port, @(2));
136+
XCTAssertEqual(data.port, 2);
137137
XCTAssertEqualObjects(data.protocol, @"protocol");
138138
}
139139

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFHTTPCookieStoreHostApiTests.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ - (void)testCreateFromWebsiteDataStoreWithIdentifier {
2222
[instanceManager addDartCreatedInstance:mockDataStore withIdentifier:0];
2323

2424
FlutterError *error;
25-
[hostAPI createFromWebsiteDataStoreWithIdentifier:@1 dataStoreIdentifier:@0 error:&error];
25+
[hostAPI createFromWebsiteDataStoreWithIdentifier:1 dataStoreIdentifier:0 error:&error];
2626
WKHTTPCookieStore *cookieStore = (WKHTTPCookieStore *)[instanceManager instanceForIdentifier:1];
2727
XCTAssertTrue([cookieStore isKindOfClass:[WKHTTPCookieStore class]]);
2828
XCTAssertNil(error);
@@ -42,7 +42,7 @@ - (void)testSetCookie {
4242
makeWithValue:FWFNSHttpCookiePropertyKeyEnumName] ]
4343
propertyValues:@[ @"hello" ]];
4444
FlutterError *__block blockError;
45-
[hostAPI setCookieForStoreWithIdentifier:@0
45+
[hostAPI setCookieForStoreWithIdentifier:0
4646
cookie:cookieData
4747
completion:^(FlutterError *error) {
4848
blockError = error;

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ - (void)testCreateWithIdentifier {
5151
instanceManager:instanceManager];
5252

5353
FlutterError *error;
54-
[hostAPI createWithIdentifier:@0 error:&error];
54+
[hostAPI createWithIdentifier:0 error:&error];
5555
FWFNavigationDelegate *navigationDelegate =
5656
(FWFNavigationDelegate *)[instanceManager instanceForIdentifier:0];
5757

@@ -74,8 +74,8 @@ - (void)testDidFinishNavigation {
7474
[instanceManager addDartCreatedInstance:mockWebView withIdentifier:1];
7575

7676
[mockDelegate webView:mockWebView didFinishNavigation:OCMClassMock([WKNavigation class])];
77-
OCMVerify([mockFlutterAPI didFinishNavigationForDelegateWithIdentifier:@0
78-
webViewIdentifier:@1
77+
OCMVerify([mockFlutterAPI didFinishNavigationForDelegateWithIdentifier:0
78+
webViewIdentifier:1
7979
URL:@"https://flutter.dev/"
8080
completion:OCMOCK_ANY]);
8181
}
@@ -97,8 +97,8 @@ - (void)testDidStartProvisionalNavigation {
9797
[mockDelegate webView:mockWebView
9898
didStartProvisionalNavigation:OCMClassMock([WKNavigation class])];
9999
OCMVerify([mockFlutterAPI
100-
didStartProvisionalNavigationForDelegateWithIdentifier:@0
101-
webViewIdentifier:@1
100+
didStartProvisionalNavigationForDelegateWithIdentifier:0
101+
webViewIdentifier:1
102102
URL:@"https://flutter.dev/"
103103
completion:OCMOCK_ANY]);
104104
}
@@ -125,8 +125,8 @@ - (void)testDecidePolicyForNavigationAction {
125125
OCMStub([mockNavigationAction targetFrame]).andReturn(mockFrameInfo);
126126

127127
OCMStub([mockFlutterAPI
128-
decidePolicyForNavigationActionForDelegateWithIdentifier:@0
129-
webViewIdentifier:@1
128+
decidePolicyForNavigationActionForDelegateWithIdentifier:0
129+
webViewIdentifier:1
130130
navigationAction:
131131
[OCMArg isKindOfClass:[FWFWKNavigationActionData
132132
class]]
@@ -164,8 +164,8 @@ - (void)testDidFailNavigation {
164164
didFailNavigation:OCMClassMock([WKNavigation class])
165165
withError:[NSError errorWithDomain:@"domain" code:0 userInfo:nil]];
166166
OCMVerify([mockFlutterAPI
167-
didFailNavigationForDelegateWithIdentifier:@0
168-
webViewIdentifier:@1
167+
didFailNavigationForDelegateWithIdentifier:0
168+
webViewIdentifier:1
169169
error:[OCMArg isKindOfClass:[FWFNSErrorData class]]
170170
completion:OCMOCK_ANY]);
171171
}
@@ -187,8 +187,8 @@ - (void)testDidFailProvisionalNavigation {
187187
didFailProvisionalNavigation:OCMClassMock([WKNavigation class])
188188
withError:[NSError errorWithDomain:@"domain" code:0 userInfo:nil]];
189189
OCMVerify([mockFlutterAPI
190-
didFailProvisionalNavigationForDelegateWithIdentifier:@0
191-
webViewIdentifier:@1
190+
didFailProvisionalNavigationForDelegateWithIdentifier:0
191+
webViewIdentifier:1
192192
error:[OCMArg isKindOfClass:[FWFNSErrorData
193193
class]]
194194
completion:OCMOCK_ANY]);
@@ -209,8 +209,8 @@ - (void)testWebViewWebContentProcessDidTerminate {
209209

210210
[mockDelegate webViewWebContentProcessDidTerminate:mockWebView];
211211
OCMVerify([mockFlutterAPI
212-
webViewWebContentProcessDidTerminateForDelegateWithIdentifier:@0
213-
webViewIdentifier:@1
212+
webViewWebContentProcessDidTerminateForDelegateWithIdentifier:0
213+
webViewIdentifier:1
214214
completion:OCMOCK_ANY]);
215215
}
216216
@end

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFObjectHostApiTests.m

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ - (void)testAddObserver {
5757

5858
FlutterError *error;
5959
[hostAPI
60-
addObserverForObjectWithIdentifier:@0
61-
observerIdentifier:@1
60+
addObserverForObjectWithIdentifier:0
61+
observerIdentifier:1
6262
keyPath:@"myKey"
6363
options:@[
6464
[FWFNSKeyValueObservingOptionsEnumData
@@ -88,8 +88,8 @@ - (void)testRemoveObserver {
8888
[instanceManager addDartCreatedInstance:observerObject withIdentifier:1];
8989

9090
FlutterError *error;
91-
[hostAPI removeObserverForObjectWithIdentifier:@0
92-
observerIdentifier:@1
91+
[hostAPI removeObserverForObjectWithIdentifier:0
92+
observerIdentifier:1
9393
keyPath:@"myKey"
9494
error:&error];
9595
OCMVerify([mockObject removeObserver:observerObject forKeyPath:@"myKey"]);
@@ -106,7 +106,7 @@ - (void)testDispose {
106106
[[FWFObjectHostApiImpl alloc] initWithInstanceManager:instanceManager];
107107

108108
FlutterError *error;
109-
[hostAPI disposeObjectWithIdentifier:@0 error:&error];
109+
[hostAPI disposeObjectWithIdentifier:0 error:&error];
110110
// Only the strong reference is removed, so the weak reference will remain until object is set to
111111
// nil.
112112
object = nil;
@@ -130,18 +130,17 @@ - (void)testObserveValueForKeyPath {
130130
change:@{NSKeyValueChangeOldKey : @"key"}
131131
context:nil];
132132
OCMVerify([mockFlutterAPI
133-
observeValueForObjectWithIdentifier:@0
133+
observeValueForObjectWithIdentifier:0
134134
keyPath:@"keyPath"
135-
objectIdentifier:@1
135+
objectIdentifier:1
136136
changeKeys:[OCMArg checkWithBlock:^BOOL(
137137
NSArray<FWFNSKeyValueChangeKeyEnumData *>
138138
*value) {
139139
return value[0].value == FWFNSKeyValueChangeKeyEnumOldValue;
140140
}]
141141
changeValues:[OCMArg checkWithBlock:^BOOL(id value) {
142142
FWFObjectOrIdentifier *object = (FWFObjectOrIdentifier *)value[0];
143-
return !object.isIdentifier.boolValue &&
144-
[@"key" isEqual:object.value];
143+
return !object.isIdentifier && [@"key" isEqual:object.value];
145144
}]
146145
completion:OCMOCK_ANY]);
147146
}
@@ -165,17 +164,17 @@ - (void)testObserveValueForKeyPathWithIdentifier {
165164
change:@{NSKeyValueChangeOldKey : returnedObject}
166165
context:nil];
167166
OCMVerify([mockFlutterAPI
168-
observeValueForObjectWithIdentifier:@0
167+
observeValueForObjectWithIdentifier:0
169168
keyPath:@"keyPath"
170-
objectIdentifier:@1
169+
objectIdentifier:1
171170
changeKeys:[OCMArg checkWithBlock:^BOOL(
172171
NSArray<FWFNSKeyValueChangeKeyEnumData *>
173172
*value) {
174173
return value[0].value == FWFNSKeyValueChangeKeyEnumOldValue;
175174
}]
176175
changeValues:[OCMArg checkWithBlock:^BOOL(id value) {
177176
FWFObjectOrIdentifier *object = (FWFObjectOrIdentifier *)value[0];
178-
return object.isIdentifier.boolValue && [@(2) isEqual:object.value];
177+
return object.isIdentifier && [@(2) isEqual:object.value];
179178
}]
180179
completion:OCMOCK_ANY]);
181180
}

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFPreferencesHostApiTests.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ - (void)testCreateFromWebViewConfigurationWithIdentifier {
2020
[instanceManager addDartCreatedInstance:[[WKWebViewConfiguration alloc] init] withIdentifier:0];
2121

2222
FlutterError *error;
23-
[hostAPI createFromWebViewConfigurationWithIdentifier:@1 configurationIdentifier:@0 error:&error];
23+
[hostAPI createFromWebViewConfigurationWithIdentifier:1 configurationIdentifier:0 error:&error];
2424
WKPreferences *preferences = (WKPreferences *)[instanceManager instanceForIdentifier:1];
2525
XCTAssertTrue([preferences isKindOfClass:[WKPreferences class]]);
2626
XCTAssertNil(error);
@@ -36,7 +36,7 @@ - (void)testSetJavaScriptEnabled {
3636
[[FWFPreferencesHostApiImpl alloc] initWithInstanceManager:instanceManager];
3737

3838
FlutterError *error;
39-
[hostAPI setJavaScriptEnabledForPreferencesWithIdentifier:@0 isEnabled:@YES error:&error];
39+
[hostAPI setJavaScriptEnabledForPreferencesWithIdentifier:0 isEnabled:YES error:&error];
4040
OCMVerify([mockPreferences setJavaScriptEnabled:YES]);
4141
XCTAssertNil(error);
4242
}

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFScriptMessageHandlerHostApiTests.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ - (void)testCreateWithIdentifier {
5050
instanceManager:instanceManager];
5151

5252
FlutterError *error;
53-
[hostAPI createWithIdentifier:@0 error:&error];
53+
[hostAPI createWithIdentifier:0 error:&error];
5454

5555
FWFScriptMessageHandler *scriptMessageHandler =
5656
(FWFScriptMessageHandler *)[instanceManager instanceForIdentifier:0];
@@ -78,8 +78,8 @@ - (void)testDidReceiveScriptMessageForHandler {
7878
[mockHandler userContentController:userContentController
7979
didReceiveScriptMessage:mockScriptMessage];
8080
OCMVerify([mockFlutterAPI
81-
didReceiveScriptMessageForHandlerWithIdentifier:@0
82-
userContentControllerIdentifier:@1
81+
didReceiveScriptMessageForHandlerWithIdentifier:0
82+
userContentControllerIdentifier:1
8383
message:[OCMArg isKindOfClass:[FWFWKScriptMessageData
8484
class]]
8585
completion:OCMOCK_ANY]);

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFScrollViewHostApiTests.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ - (void)testGetContentOffset {
2424

2525
FlutterError *error;
2626
NSArray<NSNumber *> *expectedValue = @[ @1.0, @2.0 ];
27-
XCTAssertEqualObjects([hostAPI contentOffsetForScrollViewWithIdentifier:@0 error:&error],
27+
XCTAssertEqualObjects([hostAPI contentOffsetForScrollViewWithIdentifier:0 error:&error],
2828
expectedValue);
2929
XCTAssertNil(error);
3030
}
@@ -40,7 +40,7 @@ - (void)testScrollBy {
4040
[[FWFScrollViewHostApiImpl alloc] initWithInstanceManager:instanceManager];
4141

4242
FlutterError *error;
43-
[hostAPI scrollByForScrollViewWithIdentifier:@0 x:@1 y:@2 error:&error];
43+
[hostAPI scrollByForScrollViewWithIdentifier:0 x:1 y:2 error:&error];
4444
XCTAssertEqual(scrollView.contentOffset.x, 2);
4545
XCTAssertEqual(scrollView.contentOffset.y, 4);
4646
XCTAssertNil(error);
@@ -56,7 +56,7 @@ - (void)testSetContentOffset {
5656
[[FWFScrollViewHostApiImpl alloc] initWithInstanceManager:instanceManager];
5757

5858
FlutterError *error;
59-
[hostAPI setContentOffsetForScrollViewWithIdentifier:@0 toX:@1 y:@2 error:&error];
59+
[hostAPI setContentOffsetForScrollViewWithIdentifier:0 toX:1 y:2 error:&error];
6060
XCTAssertEqual(scrollView.contentOffset.x, 1);
6161
XCTAssertEqual(scrollView.contentOffset.y, 2);
6262
XCTAssertNil(error);

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFUIDelegateHostApiTests.m

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@import Flutter;
66
@import XCTest;
77
@import webview_flutter_wkwebview;
8+
@import webview_flutter_wkwebview.Test;
89

910
#import <OCMock/OCMock.h>
1011

@@ -50,7 +51,7 @@ - (void)testCreateWithIdentifier {
5051
instanceManager:instanceManager];
5152

5253
FlutterError *error;
53-
[hostAPI createWithIdentifier:@0 error:&error];
54+
[hostAPI createWithIdentifier:0 error:&error];
5455
FWFUIDelegate *delegate = (FWFUIDelegate *)[instanceManager instanceForIdentifier:0];
5556

5657
XCTAssertTrue([delegate conformsToProtocol:@protocol(WKUIDelegate)]);
@@ -70,12 +71,8 @@ - (void)testOnCreateWebViewForDelegateWithIdentifier {
7071

7172
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
7273
id mockConfigurationFlutterApi = OCMPartialMock(mockFlutterAPI.webViewConfigurationFlutterApi);
73-
NSNumber *__block configurationIdentifier;
74-
OCMStub([mockConfigurationFlutterApi createWithIdentifier:[OCMArg checkWithBlock:^BOOL(id value) {
75-
configurationIdentifier = value;
76-
return YES;
77-
}]
78-
completion:OCMOCK_ANY]);
74+
OCMStub([mockConfigurationFlutterApi createWithIdentifier:0 completion:OCMOCK_ANY])
75+
.ignoringNonObjectArgs();
7976

8077
WKNavigationAction *mockNavigationAction = OCMClassMock([WKNavigationAction class]);
8178
OCMStub([mockNavigationAction request])
@@ -85,13 +82,16 @@ - (void)testOnCreateWebViewForDelegateWithIdentifier {
8582
OCMStub([mockFrameInfo isMainFrame]).andReturn(YES);
8683
OCMStub([mockNavigationAction targetFrame]).andReturn(mockFrameInfo);
8784

85+
// Creating the webview will create a configuration on the host side, using the next available
86+
// identifier, so save that for checking against later.
87+
NSInteger configurationIdentifier = instanceManager.nextIdentifier;
8888
[mockDelegate webView:mockWebView
8989
createWebViewWithConfiguration:configuration
9090
forNavigationAction:mockNavigationAction
9191
windowFeatures:OCMClassMock([WKWindowFeatures class])];
9292
OCMVerify([mockFlutterAPI
93-
onCreateWebViewForDelegateWithIdentifier:@0
94-
webViewIdentifier:@1
93+
onCreateWebViewForDelegateWithIdentifier:0
94+
webViewIdentifier:1
9595
configurationIdentifier:configurationIdentifier
9696
navigationAction:[OCMArg
9797
isKindOfClass:[FWFWKNavigationActionData class]]
@@ -125,8 +125,8 @@ - (void)testRequestMediaCapturePermissionForOrigin API_AVAILABLE(ios(15.0)) {
125125
}];
126126

127127
OCMVerify([mockFlutterAPI
128-
requestMediaCapturePermissionForDelegateWithIdentifier:@0
129-
webViewIdentifier:@1
128+
requestMediaCapturePermissionForDelegateWithIdentifier:0
129+
webViewIdentifier:1
130130
origin:[OCMArg isKindOfClass:
131131
[FWFWKSecurityOriginData
132132
class]]

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFUIViewHostApiTests.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ - (void)testSetBackgroundColor {
2222
[[FWFUIViewHostApiImpl alloc] initWithInstanceManager:instanceManager];
2323

2424
FlutterError *error;
25-
[hostAPI setBackgroundColorForViewWithIdentifier:@0 toValue:@123 error:&error];
25+
[hostAPI setBackgroundColorForViewWithIdentifier:0 toValue:@123 error:&error];
2626

2727
OCMVerify([mockUIView setBackgroundColor:[UIColor colorWithRed:(123 >> 16 & 0xff) / 255.0
2828
green:(123 >> 8 & 0xff) / 255.0
@@ -41,7 +41,7 @@ - (void)testSetOpaque {
4141
[[FWFUIViewHostApiImpl alloc] initWithInstanceManager:instanceManager];
4242

4343
FlutterError *error;
44-
[hostAPI setOpaqueForViewWithIdentifier:@0 isOpaque:@YES error:&error];
44+
[hostAPI setOpaqueForViewWithIdentifier:0 isOpaque:YES error:&error];
4545
OCMVerify([mockUIView setOpaque:YES]);
4646
XCTAssertNil(error);
4747
}

packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLTests.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ - (void)testAbsoluteString {
2424
instanceManager:instanceManager];
2525

2626
FlutterError *error;
27-
XCTAssertEqualObjects([hostApi absoluteStringForNSURLWithIdentifier:@(0) error:&error],
27+
XCTAssertEqualObjects([hostApi absoluteStringForNSURLWithIdentifier:0 error:&error],
2828
@"https://www.google.com");
2929
XCTAssertNil(error);
3030
}
@@ -43,6 +43,6 @@ - (void)testFlutterApiCreate {
4343
}];
4444

4545
long identifier = [instanceManager identifierWithStrongReferenceForInstance:url];
46-
OCMVerify([flutterApi.api createWithIdentifier:@(identifier) completion:OCMOCK_ANY]);
46+
OCMVerify([flutterApi.api createWithIdentifier:identifier completion:OCMOCK_ANY]);
4747
}
4848
@end

0 commit comments

Comments
 (0)