Skip to content

Commit ff0ea9d

Browse files
committed
Don't assume that the webview delegate has implemented all the WebViewDelegate protocol selectors
1 parent f3e90bf commit ff0ea9d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,14 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
198198
self.startupMessageQueue = nil;
199199
}
200200

201-
if (self.webViewDelegate) {
201+
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webViewDidFinishLoad:)]) {
202202
[self.webViewDelegate webViewDidFinishLoad:webView];
203203
}
204204
}
205205

206206
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
207207
if (webView != _webView) { return; }
208-
if (self.webViewDelegate) {
208+
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) {
209209
[self.webViewDelegate webView:_webView didFailLoadWithError:error];
210210
}
211211
}
@@ -220,7 +220,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
220220
NSLog(@"WebViewJavascriptBridge: WARNING: Received unknown WebViewJavascriptBridge command %@://%@", CUSTOM_PROTOCOL_SCHEME, [url path]);
221221
}
222222
return NO;
223-
} else if (self.webViewDelegate) {
223+
} else if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webView:shouldStartLoadWithRequest:navigationType:)]) {
224224
return [self.webViewDelegate webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
225225
} else {
226226
return YES;
@@ -229,7 +229,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
229229

230230
- (void)webViewDidStartLoad:(UIWebView *)webView {
231231
if (webView != _webView) { return; }
232-
if (self.webViewDelegate) {
232+
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webViewDidStartLoad:)]) {
233233
[self.webViewDelegate webViewDidStartLoad:webView];
234234
}
235235
}

0 commit comments

Comments
 (0)