@@ -25,6 +25,8 @@ @implementation WebViewJavascriptBridge {
25
25
long _uniqueId;
26
26
WVJBHandler _messageHandler;
27
27
28
+ NSBundle *_resourceBundle;
29
+
28
30
#if defined WVJB_PLATFORM_IOS
29
31
NSUInteger _numRequestsLoading;
30
32
#endif
@@ -42,8 +44,13 @@ + (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView handler:(WVJBHandle
42
44
}
43
45
44
46
+ (instancetype )bridgeForWebView : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler : (WVJBHandler)messageHandler {
47
+ return [self bridgeForWebView: webView webViewDelegate: webViewDelegate handler: messageHandler resourceBundle: nil ];
48
+ }
49
+
50
+ + (instancetype )bridgeForWebView : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler : (WVJBHandler)messageHandler resourceBundle : (NSBundle *)bundle
51
+ {
45
52
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc ] init ];
46
- [bridge _platformSpecificSetup: webView webViewDelegate: webViewDelegate handler: messageHandler];
53
+ [bridge _platformSpecificSetup: webView webViewDelegate: webViewDelegate handler: messageHandler resourceBundle: bundle ];
47
54
[bridge reset ];
48
55
return bridge;
49
56
}
@@ -222,7 +229,7 @@ - (void)_log:(NSString *)action json:(id)json {
222
229
**********************************/
223
230
#if defined WVJB_PLATFORM_OSX
224
231
225
- - (void ) _platformSpecificSetup : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler : (WVJBHandler)messageHandler {
232
+ - (void ) _platformSpecificSetup : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler : (WVJBHandler)messageHandler resourceBundle : ( NSBundle *) bundle {
226
233
_messageHandler = messageHandler;
227
234
_webView = webView;
228
235
_webViewDelegate = webViewDelegate;
@@ -231,6 +238,8 @@ - (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJ
231
238
_webView.frameLoadDelegate = self;
232
239
_webView.resourceLoadDelegate = self;
233
240
_webView.policyDelegate = self;
241
+
242
+ _resourceBundle = bundle;
234
243
}
235
244
236
245
- (void ) _platformSpecificDealloc {
@@ -244,7 +253,8 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
244
253
if (webView != _webView) { return ; }
245
254
246
255
if (![[webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
247
- NSString *filePath = [[NSBundle mainBundle ] pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
256
+ NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle ];
257
+ NSString *filePath = [bundle pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
248
258
NSString *js = [NSString stringWithContentsOfFile: filePath encoding: NSUTF8StringEncoding error: nil ];
249
259
[webView stringByEvaluatingJavaScriptFromString: js];
250
260
}
@@ -312,12 +322,13 @@ - (NSURLRequest *)webView:(WebView *)webView resource:(id)identifier willSendReq
312
322
**********************************/
313
323
#elif defined WVJB_PLATFORM_IOS
314
324
315
- - (void ) _platformSpecificSetup : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (id <UIWebViewDelegate>)webViewDelegate handler : (WVJBHandler)messageHandler {
325
+ - (void ) _platformSpecificSetup : (WVJB_WEBVIEW_TYPE*)webView webViewDelegate : (id <UIWebViewDelegate>)webViewDelegate handler : (WVJBHandler)messageHandler resourceBundle : ( NSBundle *) bundle {
316
326
_messageHandler = messageHandler;
317
327
_webView = webView;
318
328
_webViewDelegate = webViewDelegate;
319
329
_messageHandlers = [NSMutableDictionary dictionary ];
320
330
_webView.delegate = self;
331
+ _resourceBundle = bundle;
321
332
}
322
333
323
334
- (void ) _platformSpecificDealloc {
@@ -330,7 +341,8 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
330
341
_numRequestsLoading--;
331
342
332
343
if (_numRequestsLoading == 0 && ![[webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
333
- NSString *filePath = [[NSBundle mainBundle ] pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
344
+ NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle ];
345
+ NSString *filePath = [bundle pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
334
346
NSString *js = [NSString stringWithContentsOfFile: filePath encoding: NSUTF8StringEncoding error: nil ];
335
347
[webView stringByEvaluatingJavaScriptFromString: js];
336
348
}
0 commit comments