Skip to content

Commit 7da8103

Browse files
author
Peyton Randolph
committed
fix conflicts
2 parents e563c4a + 82ef902 commit 7da8103

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-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
+ (instancetype)bridgeForWebView:(WebView *)webView handler:(WVJBHandler)handler {
@@ -17,15 +23,17 @@ + (instancetype)bridgeForWebView:(WebView *)webView webViewDelegate:(id)webViewD
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: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#import "WebViewJavascriptBridge_iOS.h"
22

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

511
#pragma mark UIWebViewDelegate
@@ -9,22 +15,24 @@ + (instancetype)bridgeForWebView:(UIWebView *)webView handler:(WVJBHandler)handl
915
}
1016

1117
+ (instancetype)bridgeForWebView:(UIWebView *)webView webViewDelegate:(id<UIWebViewDelegate>)webViewDelegate handler:(WVJBHandler)messageHandler {
12-
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc] init];
18+
WebViewJavascriptBridge* bridge = [[[self class] alloc] init];
1319
bridge.messageHandler = messageHandler;
1420
bridge.webView = webView;
1521
bridge.webViewDelegate = webViewDelegate;
1622
bridge.messageHandlers = [NSMutableDictionary dictionary];
1723
[bridge reset];
1824

1925
[webView setDelegate:bridge];
20-
26+
2127
return bridge;
2228
}
2329

2430
- (void)webViewDidFinishLoad:(UIWebView *)webView {
2531
if (webView != self.webView) { return; }
2632

27-
if (![[self.webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
33+
self.numRequestsLoading--;
34+
35+
if (self.numRequestsLoading == 0 && ![[self.webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
2836
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
2937
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
3038
[self.webView stringByEvaluatingJavaScriptFromString:js];
@@ -44,6 +52,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
4452

4553
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
4654
if (webView != self.webView) { return; }
55+
self.numRequestsLoading--;
4756
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) {
4857
[self.webViewDelegate webView:self.webView didFailLoadWithError:error];
4958
}
@@ -68,6 +77,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
6877

6978
- (void)webViewDidStartLoad:(UIWebView *)webView {
7079
if (webView != self.webView) { return; }
80+
self.numRequestsLoading++;
7181
if (self.webViewDelegate && [self.webViewDelegate respondsToSelector:@selector(webViewDidStartLoad:)]) {
7282
[self.webViewDelegate webViewDidStartLoad:webView];
7383
}

0 commit comments

Comments
 (0)