Skip to content

Commit 1bce38a

Browse files
committed
Updated OSX WebView to use the new Base class
1 parent e2bdcf5 commit 1bce38a

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

Example Apps/ExampleApp-OSX.xcodeproj/project.pbxproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
0ECB01491A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */; };
11+
0ECB014A1A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */; };
1012
2C136A2517641106004C7401 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C136A2417641106004C7401 /* Cocoa.framework */; };
1113
2C136A2F17641106004C7401 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2C136A2D17641106004C7401 /* InfoPlist.strings */; };
1214
2C136A3117641106004C7401 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C136A3017641106004C7401 /* main.m */; };
@@ -20,6 +22,10 @@
2022
/* End PBXBuildFile section */
2123

2224
/* Begin PBXFileReference section */
25+
0ECB01451A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = "<group>"; };
26+
0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = "<group>"; };
27+
0ECB01471A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = "<group>"; };
28+
0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = "<group>"; };
2329
2C136A2117641106004C7401 /* ExampleApp-OSX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ExampleApp-OSX.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2430
2C136A2417641106004C7401 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
2531
2C136A2717641106004C7401 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -118,6 +124,10 @@
118124
2C1562C1176BA9FF00B4AE50 /* WebViewJavascriptBridge */ = {
119125
isa = PBXGroup;
120126
children = (
127+
0ECB01451A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.h */,
128+
0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */,
129+
0ECB01471A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.h */,
130+
0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */,
121131
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */,
122132
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt */,
123133
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */,
@@ -192,6 +202,8 @@
192202
isa = PBXSourcesBuildPhase;
193203
buildActionMask = 2147483647;
194204
files = (
205+
0ECB01491A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m in Sources */,
206+
0ECB014A1A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m in Sources */,
195207
2C136A3117641106004C7401 /* main.m in Sources */,
196208
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */,
197209
2C136A3817641106004C7401 /* AppDelegate.m in Sources */,

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,15 @@ - (NSString*) _evaluateJavascript:(NSString*)javascriptCommand
9292
#if defined WVJB_PLATFORM_OSX
9393

9494
- (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)messageHandler resourceBundle:(NSBundle*)bundle{
95-
_messageHandler = messageHandler;
9695
_webView = webView;
9796
_webViewDelegate = webViewDelegate;
98-
_messageHandlers = [NSMutableDictionary dictionary];
9997

10098
_webView.frameLoadDelegate = self;
10199
_webView.resourceLoadDelegate = self;
102100
_webView.policyDelegate = self;
103101

104-
_resourceBundle = bundle;
102+
_base = [[WebViewJavascriptBridgeBase alloc] initWithWebViewType:@"WebView" handler:(WVJBHandler)messageHandler resourceBundle:(NSBundle*)bundle];
103+
_base.delegate = self;
105104
}
106105

107106
- (void) _platformSpecificDealloc {
@@ -114,19 +113,11 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
114113
{
115114
if (webView != _webView) { return; }
116115

117-
if (![[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
118-
NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle];
119-
NSString *filePath = [bundle pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
120-
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
121-
[webView stringByEvaluatingJavaScriptFromString:js];
116+
if (![[webView stringByEvaluatingJavaScriptFromString:[_base webViewJavascriptCheckCommand]] isEqualToString:@"true"]) {
117+
[_base injectJavascriptFile:NO];
122118
}
123119

124-
if (_startupMessageQueue) {
125-
for (id queuedMessage in _startupMessageQueue) {
126-
[self _dispatchMessage:queuedMessage];
127-
}
128-
_startupMessageQueue = nil;
129-
}
120+
[_base dispatchStartUpMessageQueue];
130121

131122
if (_webViewDelegate && [_webViewDelegate respondsToSelector:@selector(webView:didFinishLoadForFrame:)]) {
132123
[_webViewDelegate webView:webView didFinishLoadForFrame:frame];
@@ -146,11 +137,12 @@ - (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary
146137
if (webView != _webView) { return; }
147138

148139
NSURL *url = [request URL];
149-
if ([[url scheme] isEqualToString:kCustomProtocolScheme]) {
150-
if ([[url host] isEqualToString:kQueueHasMessage]) {
151-
[self _flushMessageQueue];
140+
if ([_base correctProcotocolScheme:url]) {
141+
if ([_base correctHost:url]) {
142+
NSString *messageQueueString = [self _evaluateJavascript:[_base webViewJavascriptFetchQueyCommand]];
143+
[_base _flushMessageQueue:messageQueueString];
152144
} else {
153-
NSLog(@"WebViewJavascriptBridge: WARNING: Received unknown WebViewJavascriptBridge command %@://%@", kCustomProtocolScheme, [url path]);
145+
[_base logUnkownMessage:url];
154146
}
155147
[listener ignore];
156148
} else if (_webViewDelegate && [_webViewDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:request:frame:decisionListener:)]) {

0 commit comments

Comments
 (0)