Skip to content

Commit 82ef902

Browse files
author
Peyton Randolph
committed
add OS X support
1 parent 61b8536 commit 82ef902

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

WebViewJavascriptBridge_OSX/WebViewJavascriptBridge_OSX.m

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#import "WebViewJavascriptBridge_OSX.h"
22

3+
@interface WebViewJavascriptBridge ()
4+
5+
@property (nonatomic, assign) NSUInteger numRequestsLoading;
6+
7+
@end
8+
39
@implementation WebViewJavascriptBridge
410

511
+ (id)bridgeForWebView:(WebView *)webView handler:(WVJBHandler)handler {
@@ -17,15 +23,17 @@ + (id)bridgeForWebView:(WebView *)webView webViewDelegate:(id)webViewDelegate ha
1723
bridge.webView.frameLoadDelegate = bridge;
1824
bridge.webView.resourceLoadDelegate = bridge;
1925
bridge.webView.policyDelegate = bridge;
20-
26+
2127
return bridge;
2228
}
2329

2430
- (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
2531
{
2632
if (webView != self.webView) { return; }
2733

28-
if (![[self.webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
34+
self.numRequestsLoading--;
35+
36+
if (self.numRequestsLoading == 0 && ![[self.webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
2937
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
3038
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
3139
[self.webView stringByEvaluatingJavaScriptFromString:js];
@@ -45,6 +53,9 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
4553

4654
- (void)webView:(WebView *)webView didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
4755
if (webView != self.webView) { return; }
56+
57+
self.numRequestsLoading--;
58+
4859
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webView:didFailLoadWithError:forFrame:)]) {
4960
[self.webViewDelegate webView:self.webView didFailLoadWithError:error forFrame:frame];
5061
}
@@ -78,6 +89,9 @@ - (void)webView:(WebView *)webView didCommitLoadForFrame:(WebFrame *)frame {
7889

7990
- (NSURLRequest *)webView:(WebView *)webView resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource {
8091
if (webView != self.webView) { return request; }
92+
93+
self.numRequestsLoading++;
94+
8195
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webView:resource:willSendRequest:redirectResponse:fromDataSource:)]) {
8296
return [self.webViewDelegate webView:webView resource:identifier willSendRequest:request redirectResponse:redirectResponse fromDataSource:dataSource];
8397
}

WebViewJavascriptBridge_iOS/WebViewJavascriptBridge_iOS.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,13 @@ + (id)bridgeForWebView:(UIWebView *)webView webViewDelegate:(id<UIWebViewDelegat
2323
[bridge reset];
2424

2525
[webView setDelegate:bridge];
26-
27-
bridge.numRequestsLoading = 0;
28-
26+
2927
return bridge;
3028
}
3129

3230
- (void)webViewDidFinishLoad:(UIWebView *)webView {
3331
if (webView != self.webView) { return; }
32+
3433
self.numRequestsLoading--;
3534

3635
if (self.numRequestsLoading == 0 && ![[self.webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {

0 commit comments

Comments
 (0)