Skip to content

Commit 343355f

Browse files
committed
The Javascript source string constant is now always built into the .m file.
1 parent b541394 commit 343355f

File tree

6 files changed

+146
-146
lines changed

6 files changed

+146
-146
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
2C136A3817641106004C7401 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C136A3717641106004C7401 /* AppDelegate.m */; };
1515
2C136A4217641236004C7401 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C136A4117641236004C7401 /* WebKit.framework */; };
1616
2C136A5A17642704004C7401 /* ExampleApp.html in Resources */ = {isa = PBXBuildFile; fileRef = 2C136A5917642704004C7401 /* ExampleApp.html */; };
17-
2C1562C5176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt */; };
17+
2C1562C5176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h */; };
1818
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */; };
1919
2CF17F5317D8AACF006E828B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2CF17F5217D8AACF006E828B /* MainMenu.xib */; };
2020
/* End PBXBuildFile section */
@@ -35,7 +35,7 @@
3535
2C136A4117641236004C7401 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
3636
2C136A5917642704004C7401 /* ExampleApp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ExampleApp.html; sourceTree = SOURCE_ROOT; };
3737
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = "<group>"; };
38-
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebViewJavascriptBridge.js.txt; sourceTree = "<group>"; };
38+
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.js.h; sourceTree = "<group>"; };
3939
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
4040
2CF17F5217D8AACF006E828B /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
4141
/* End PBXFileReference section */
@@ -119,7 +119,7 @@
119119
isa = PBXGroup;
120120
children = (
121121
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */,
122-
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt */,
122+
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h */,
123123
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */,
124124
);
125125
name = WebViewJavascriptBridge;
@@ -177,7 +177,7 @@
177177
isa = PBXResourcesBuildPhase;
178178
buildActionMask = 2147483647;
179179
files = (
180-
2C1562C5176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */,
180+
2C1562C5176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h in Resources */,
181181
2C136A2F17641106004C7401 /* InfoPlist.strings in Resources */,
182182
2C136A3517641106004C7401 /* Credits.rtf in Resources */,
183183
2C136A5A17642704004C7401 /* ExampleApp.html in Resources */,

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

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

99
/* Begin PBXBuildFile section */
10-
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */; };
10+
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h */; };
1111
2C1562C0176BA63500B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */; };
1212
2C45CA2C1884AD520002A4E2 /* ExampleAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */; };
1313
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045B717117439006DEE8B /* InfoPlist.strings */; };
@@ -23,7 +23,7 @@
2323
/* Begin PBXFileReference section */
2424
2C1562A8176B9F6200B4AE50 /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = "<group>"; };
2525
2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
26-
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebViewJavascriptBridge.js.txt; sourceTree = "<group>"; };
26+
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.js.h; sourceTree = "<group>"; };
2727
2C45CA2A1884AD520002A4E2 /* ExampleAppViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleAppViewController.h; sourceTree = "<group>"; };
2828
2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleAppViewController.m; sourceTree = "<group>"; };
2929
2CA045B817117439006DEE8B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -57,7 +57,7 @@
5757
2C1562A7176B9F5400B4AE50 /* WebViewJavascriptBridge */ = {
5858
isa = PBXGroup;
5959
children = (
60-
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */,
60+
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h */,
6161
2C1562A8176B9F6200B4AE50 /* WebViewJavascriptBridge.h */,
6262
2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */,
6363
);
@@ -169,7 +169,7 @@
169169
isa = PBXResourcesBuildPhase;
170170
buildActionMask = 2147483647;
171171
files = (
172-
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */,
172+
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h in Resources */,
173173
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */,
174174
2CA0465C1711AC8E006DEE8B /* ExampleApp.html in Resources */,
175175
2CAB869B1727684300BD9ED1 /* Default-568h@2x.png in Resources */,

WebViewJavascriptBridge/WebViewJavascriptBridge.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
3030

3131
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView handler:(WVJBHandler)handler;
3232
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler;
33-
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler resourceBundle:(NSBundle*)bundle;
3433
+ (void)enableLogging;
3534

3635
- (void)send:(id)message;
@@ -40,4 +39,5 @@ typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
4039
- (void)callHandler:(NSString*)handlerName data:(id)data;
4140
- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback;
4241

42+
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler resourceBundle:(NSBundle*)bundle __attribute__((deprecated));
4343
@end
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
#ifdef _______STRINGIFY
2+
#error _______STRINGIFY already defined!
3+
#endif
4+
#define _______STRINGIFY(x) #x
5+
_______STRINGIFY(
6+
;(function() {
7+
if (window.WebViewJavascriptBridge) { return; }
8+
var messagingIframe;
9+
var sendMessageQueue = [];
10+
var receiveMessageQueue = [];
11+
var messageHandlers = {};
12+
13+
var CUSTOM_PROTOCOL_SCHEME = 'wvjbscheme';
14+
var QUEUE_HAS_MESSAGE = '__WVJB_QUEUE_MESSAGE__';
15+
16+
var responseCallbacks = {};
17+
var uniqueId = 1;
18+
19+
function _createQueueReadyIframe(doc) {
20+
messagingIframe = doc.createElement('iframe');
21+
messagingIframe.style.display = 'none';
22+
messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;
23+
doc.documentElement.appendChild(messagingIframe);
24+
}
25+
26+
function init(messageHandler) {
27+
if (WebViewJavascriptBridge._messageHandler) { throw new Error('WebViewJavascriptBridge.init called twice'); }
28+
WebViewJavascriptBridge._messageHandler = messageHandler;
29+
var receivedMessages = receiveMessageQueue;
30+
receiveMessageQueue = null;
31+
for (var i=0; i<receivedMessages.length; i++) {
32+
_dispatchMessageFromObjC(receivedMessages[i]);
33+
}
34+
}
35+
36+
function send(data, responseCallback) {
37+
_doSend({ data:data }, responseCallback);
38+
}
39+
40+
function registerHandler(handlerName, handler) {
41+
messageHandlers[handlerName] = handler;
42+
}
43+
44+
function callHandler(handlerName, data, responseCallback) {
45+
_doSend({ handlerName:handlerName, data:data }, responseCallback);
46+
}
47+
48+
function _doSend(message, responseCallback) {
49+
if (responseCallback) {
50+
var callbackId = 'cb_'+(uniqueId++)+'_'+new Date().getTime();
51+
responseCallbacks[callbackId] = responseCallback;
52+
message['callbackId'] = callbackId;
53+
}
54+
sendMessageQueue.push(message);
55+
messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;
56+
}
57+
58+
function _fetchQueue() {
59+
var messageQueueString = JSON.stringify(sendMessageQueue);
60+
sendMessageQueue = [];
61+
return messageQueueString;
62+
}
63+
64+
function _dispatchMessageFromObjC(messageJSON) {
65+
setTimeout(function _timeoutDispatchMessageFromObjC() {
66+
var message = JSON.parse(messageJSON);
67+
var messageHandler;
68+
var responseCallback;
69+
70+
if (message.responseId) {
71+
responseCallback = responseCallbacks[message.responseId];
72+
if (!responseCallback) { return; }
73+
responseCallback(message.responseData);
74+
delete responseCallbacks[message.responseId];
75+
} else {
76+
if (message.callbackId) {
77+
var callbackResponseId = message.callbackId;
78+
responseCallback = function(responseData) {
79+
_doSend({ responseId:callbackResponseId, responseData:responseData });
80+
}
81+
}
82+
83+
var handler = WebViewJavascriptBridge._messageHandler;
84+
if (message.handlerName) {
85+
handler = messageHandlers[message.handlerName];
86+
}
87+
88+
try {
89+
handler(message.data, responseCallback);
90+
} catch(exception) {
91+
if (typeof console != 'undefined') {
92+
console.log("WebViewJavascriptBridge: WARNING: javascript handler threw.", message, exception);
93+
}
94+
}
95+
}
96+
})
97+
}
98+
99+
function _handleMessageFromObjC(messageJSON) {
100+
if (receiveMessageQueue) {
101+
receiveMessageQueue.push(messageJSON);
102+
} else {
103+
_dispatchMessageFromObjC(messageJSON);
104+
}
105+
}
106+
107+
window.WebViewJavascriptBridge = {
108+
init: init,
109+
send: send,
110+
registerHandler: registerHandler,
111+
callHandler: callHandler,
112+
_fetchQueue: _fetchQueue,
113+
_handleMessageFromObjC: _handleMessageFromObjC
114+
};
115+
116+
var doc = document;
117+
_createQueueReadyIframe(doc);
118+
var readyEvent = doc.createEvent('Events');
119+
readyEvent.initEvent('WebViewJavascriptBridgeReady');
120+
readyEvent.bridge = WebViewJavascriptBridge;
121+
doc.dispatchEvent(readyEvent);
122+
})();
123+
)
124+
#undef _______STRINGIFY

WebViewJavascriptBridge/WebViewJavascriptBridge.js.txt

Lines changed: 0 additions & 117 deletions
This file was deleted.

0 commit comments

Comments
 (0)