99#import < XCTest/XCTest.h>
1010
1111#import " WebViewJavascriptBridge.h"
12- #import " WKWebViewJavascriptBridge.h"
1312#import " AppDelegate.h"
1413
1514static NSString *const echoHandler = @" echoHandler" ;
@@ -21,8 +20,7 @@ @interface BridgeTests : XCTestCase
2120@implementation BridgeTests {
2221 UIWebView *_uiWebView;
2322 WKWebView *_wkWebView;
24- WebViewJavascriptBridge* _uiWebViewBridge;
25- WKWebViewJavascriptBridge* _wkWebViewBridge;
23+ NSMutableArray * _bridgeRefs;
2624}
2725
2826- (void )setUp {
@@ -38,6 +36,8 @@ - (void)setUp {
3836 _wkWebView = [[WKWebView alloc ] initWithFrame: frame];
3937 _wkWebView.backgroundColor = [UIColor redColor ];
4038 [rootVC.view addSubview: _wkWebView];
39+
40+ _bridgeRefs = [NSMutableArray array ];
4141}
4242
4343- (void )tearDown {
@@ -46,14 +46,10 @@ - (void)tearDown {
4646 [_wkWebView removeFromSuperview ];
4747}
4848
49- - (WebViewJavascriptBridge*)bridgeForCls : (Class )cls webView : (id )webView {
50- if (cls == [WebViewJavascriptBridge class ]) {
51- _uiWebViewBridge = [WebViewJavascriptBridge bridgeForWebView: webView];
52- return _uiWebViewBridge;
53- } else {
54- _wkWebViewBridge = [WKWebViewJavascriptBridge bridgeForWebView: _wkWebView];
55- return (WebViewJavascriptBridge*) _wkWebViewBridge;
56- }
49+ - (WebViewJavascriptBridge*)bridgeForWebView : (id )webView {
50+ WebViewJavascriptBridge* bridge = [WebViewJavascriptBridge bridgeForWebView: webView];
51+ [_bridgeRefs addObject: bridge];
52+ return bridge;
5753}
5854
5955static void loadEchoSample (id webView) {
@@ -64,13 +60,13 @@ static void loadEchoSample(id webView) {
6460const NSTimeInterval timeoutSec = 100 ;
6561
6662- (void )testInitialization {
67- [self classSpecificTestInitialization: [WebViewJavascriptBridge class ] webView: _uiWebView];
68- [self classSpecificTestInitialization: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
63+ [self classSpecificTestInitialization: _uiWebView];
64+ [self classSpecificTestInitialization: _wkWebView];
6965 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
7066}
71- - (void )classSpecificTestInitialization : (Class ) cls webView : ( id )webView {
67+ - (void )classSpecificTestInitialization : (id )webView {
7268 XCTestExpectation *startup = [self expectationWithDescription: @" Startup completed" ];
73- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
69+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
7470 [bridge registerHandler: @" Greet" handler: ^(id data, WVJBResponseCallback responseCallback) {
7571 XCTAssertEqualObjects (data, @" Hello world" );
7672 [startup fulfill ];
@@ -81,12 +77,12 @@ - (void)classSpecificTestInitialization:(Class)cls webView:(id)webView {
8177}
8278
8379- (void )testEchoHandler {
84- [self classSpecificTestEchoHandler: [WebViewJavascriptBridge class ] webView: _uiWebView];
85- [self classSpecificTestEchoHandler: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
80+ [self classSpecificTestEchoHandler: _uiWebView];
81+ [self classSpecificTestEchoHandler: _wkWebView];
8682 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
8783}
88- - (void )classSpecificTestEchoHandler : (Class ) cls webView : ( id )webView {
89- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
84+ - (void )classSpecificTestEchoHandler : (id )webView {
85+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
9086
9187 XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
9288 [bridge callHandler: echoHandler data: @" testEchoHandler" responseCallback: ^(id responseData) {
@@ -98,12 +94,12 @@ - (void)classSpecificTestEchoHandler:(Class)cls webView:(id)webView {
9894}
9995
10096- (void )testEchoHandlerAfterSetup {
101- [self classSpecificTestEchoHandlerAfterSetup: [WebViewJavascriptBridge class ] webView: _uiWebView];
102- [self classSpecificTestEchoHandlerAfterSetup: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
97+ [self classSpecificTestEchoHandlerAfterSetup: _uiWebView];
98+ [self classSpecificTestEchoHandlerAfterSetup: _wkWebView];
10399 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
104100}
105- - (void )classSpecificTestEchoHandlerAfterSetup : (Class ) cls webView : ( id )webView {
106- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
101+ - (void )classSpecificTestEchoHandlerAfterSetup : (id )webView {
102+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
107103
108104 XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
109105 loadEchoSample (webView);
@@ -116,12 +112,12 @@ - (void)classSpecificTestEchoHandlerAfterSetup:(Class)cls webView:(id)webView {
116112}
117113
118114- (void )testObjectEncoding {
119- [self classSpecificTestObjectEncoding: [WebViewJavascriptBridge class ] webView: _uiWebView];
120- [self classSpecificTestObjectEncoding: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
115+ [self classSpecificTestObjectEncoding: _uiWebView];
116+ [self classSpecificTestObjectEncoding: _wkWebView];
121117 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
122118}
123- - (void )classSpecificTestObjectEncoding : (Class ) cls webView : ( id )webView {
124- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
119+ - (void )classSpecificTestObjectEncoding : (id )webView {
120+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
125121
126122 void (^echoObject)(id ) = ^void (id object) {
127123 XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
@@ -140,12 +136,12 @@ - (void)classSpecificTestObjectEncoding:(Class)cls webView:(id)webView {
140136}
141137
142138- (void )testJavascriptReceiveResponse {
143- [self classSpecificTestJavascriptReceiveResponse: [WebViewJavascriptBridge class ] webView: _uiWebView];
144- [self classSpecificTestJavascriptReceiveResponse: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
139+ [self classSpecificTestJavascriptReceiveResponse: _uiWebView];
140+ [self classSpecificTestJavascriptReceiveResponse: _wkWebView];
145141 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
146142}
147- - (void )classSpecificTestJavascriptReceiveResponse : (Class ) cls webView : ( id )webView {
148- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
143+ - (void )classSpecificTestJavascriptReceiveResponse : (id )webView {
144+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
149145 loadEchoSample (webView);
150146 XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
151147 [bridge registerHandler: @" objcEchoToJs" handler: ^(id data, WVJBResponseCallback responseCallback) {
@@ -158,12 +154,12 @@ - (void)classSpecificTestJavascriptReceiveResponse:(Class)cls webView:(id)webVie
158154}
159155
160156- (void )testJavascriptReceiveResponseWithoutSafetyTimeout {
161- [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: [WebViewJavascriptBridge class ] webView: _uiWebView];
162- [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
157+ [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: _uiWebView];
158+ [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: _wkWebView];
163159 [self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
164160}
165- - (void )classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout : (Class ) cls webView : ( id )webView {
166- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
161+ - (void )classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout : (id )webView {
162+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
167163 [bridge disableJavscriptAlertBoxSafetyTimeout ];
168164 loadEchoSample (webView);
169165 XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
0 commit comments