Skip to content

Commit d3341c7

Browse files
committed
Tightened up the Javascript Source String Generation.
1 parent e57ae96 commit d3341c7

File tree

6 files changed

+34
-22
lines changed

6 files changed

+34
-22
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
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.h in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h */; };
1817
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */; };
1918
2CF17F5317D8AACF006E828B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2CF17F5217D8AACF006E828B /* MainMenu.xib */; };
19+
AA9B44271AE979A800E48BA0 /* WebViewJavascriptBridge_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = AA9B44261AE979A800E48BA0 /* WebViewJavascriptBridge_Private.m */; };
2020
/* End PBXBuildFile section */
2121

2222
/* Begin PBXFileReference section */
@@ -35,9 +35,10 @@
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.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.js.h; sourceTree = "<group>"; };
3938
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
4039
2CF17F5217D8AACF006E828B /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
40+
AA9B44251AE979A800E48BA0 /* WebViewJavascriptBridge_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_Private.h; sourceTree = "<group>"; };
41+
AA9B44261AE979A800E48BA0 /* WebViewJavascriptBridge_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_Private.m; sourceTree = "<group>"; };
4142
/* End PBXFileReference section */
4243

4344
/* Begin PBXFrameworksBuildPhase section */
@@ -119,8 +120,9 @@
119120
isa = PBXGroup;
120121
children = (
121122
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */,
122-
2C1562C3176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h */,
123123
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */,
124+
AA9B44251AE979A800E48BA0 /* WebViewJavascriptBridge_Private.h */,
125+
AA9B44261AE979A800E48BA0 /* WebViewJavascriptBridge_Private.m */,
124126
);
125127
name = WebViewJavascriptBridge;
126128
path = ../../WebViewJavascriptBridge;
@@ -177,7 +179,6 @@
177179
isa = PBXResourcesBuildPhase;
178180
buildActionMask = 2147483647;
179181
files = (
180-
2C1562C5176BA9FF00B4AE50 /* WebViewJavascriptBridge.js.h in Resources */,
181182
2C136A2F17641106004C7401 /* InfoPlist.strings in Resources */,
182183
2C136A3517641106004C7401 /* Credits.rtf in Resources */,
183184
2C136A5A17642704004C7401 /* ExampleApp.html in Resources */,
@@ -193,6 +194,7 @@
193194
buildActionMask = 2147483647;
194195
files = (
195196
2C136A3117641106004C7401 /* main.m in Sources */,
197+
AA9B44271AE979A800E48BA0 /* WebViewJavascriptBridge_Private.m in Sources */,
196198
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */,
197199
2C136A3817641106004C7401 /* AppDelegate.m in Sources */,
198200
);

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

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

99
/* Begin PBXBuildFile section */
10-
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h */; };
1110
2C1562C0176BA63500B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */; };
1211
2C45CA2C1884AD520002A4E2 /* ExampleAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */; };
1312
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045B717117439006DEE8B /* InfoPlist.strings */; };
@@ -18,12 +17,12 @@
1817
2CEB3EC01602563600548120 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EBF1602563600548120 /* UIKit.framework */; };
1918
2CEB3EC21602563600548120 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EC11602563600548120 /* Foundation.framework */; };
2019
2CEB3EC41602563600548120 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EC31602563600548120 /* CoreGraphics.framework */; };
20+
AA9B44241AE9761700E48BA0 /* WebViewJavascriptBridge_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = AA9B44221AE9761700E48BA0 /* WebViewJavascriptBridge_Private.m */; };
2121
/* End PBXBuildFile section */
2222

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.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.js.h; sourceTree = "<group>"; };
2726
2C45CA2A1884AD520002A4E2 /* ExampleAppViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleAppViewController.h; sourceTree = "<group>"; };
2827
2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleAppViewController.m; sourceTree = "<group>"; };
2928
2CA045B817117439006DEE8B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -38,6 +37,8 @@
3837
2CEB3EBF1602563600548120 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
3938
2CEB3EC11602563600548120 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
4039
2CEB3EC31602563600548120 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
40+
AA9B44221AE9761700E48BA0 /* WebViewJavascriptBridge_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_Private.m; sourceTree = "<group>"; };
41+
AA9B44231AE9761700E48BA0 /* WebViewJavascriptBridge_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_Private.h; sourceTree = "<group>"; };
4142
/* End PBXFileReference section */
4243

4344
/* Begin PBXFrameworksBuildPhase section */
@@ -57,9 +58,10 @@
5758
2C1562A7176B9F5400B4AE50 /* WebViewJavascriptBridge */ = {
5859
isa = PBXGroup;
5960
children = (
60-
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h */,
6161
2C1562A8176B9F6200B4AE50 /* WebViewJavascriptBridge.h */,
6262
2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */,
63+
AA9B44221AE9761700E48BA0 /* WebViewJavascriptBridge_Private.m */,
64+
AA9B44231AE9761700E48BA0 /* WebViewJavascriptBridge_Private.h */,
6365
);
6466
name = WebViewJavascriptBridge;
6567
path = ../../WebViewJavascriptBridge;
@@ -169,7 +171,6 @@
169171
isa = PBXResourcesBuildPhase;
170172
buildActionMask = 2147483647;
171173
files = (
172-
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.h in Resources */,
173174
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */,
174175
2CA0465C1711AC8E006DEE8B /* ExampleApp.html in Resources */,
175176
2CAB869B1727684300BD9ED1 /* Default-568h@2x.png in Resources */,
@@ -183,6 +184,7 @@
183184
isa = PBXSourcesBuildPhase;
184185
buildActionMask = 2147483647;
185186
files = (
187+
AA9B44241AE9761700E48BA0 /* WebViewJavascriptBridge_Private.m in Sources */,
186188
2C1562C0176BA63500B4AE50 /* WebViewJavascriptBridge.m in Sources */,
187189
2C45CA2C1884AD520002A4E2 /* ExampleAppViewController.m in Sources */,
188190
2CA045C217117439006DEE8B /* ExampleAppDelegate.m in Sources */,

WebViewJavascriptBridge.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
1111
s.osx.platform = :osx
1212
s.ios.source_files = 'WebViewJavascriptBridge/*.{h,m}'
1313
s.osx.source_files = 'WebViewJavascriptBridge/*.{h,m}'
14-
s.private_header_files = "WebViewJavascriptBridge/Private/WebViewJavascriptBridge.js.h"
14+
s.private_header_files = 'WebViewJavascriptBridge/*_Private.h'
1515
s.ios.framework = 'UIKit'
1616
s.osx.framework = 'WebKit'
1717
end

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
//
88

99
#import "WebViewJavascriptBridge.h"
10-
11-
static NSString * WebViewJavascriptBridge_js = @
12-
#include "Private/WebViewJavascriptBridge.js.h"
13-
;
10+
#import "WebViewJavascriptBridge_Private.h"
1411

1512
#if __has_feature(objc_arc_weak)
1613
#define WVJB_WEAK __weak
@@ -256,7 +253,7 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
256253
if (webView != _webView) { return; }
257254

258255
if (![[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
259-
[webView stringByEvaluatingJavaScriptFromString:WebViewJavascriptBridge_js];
256+
[webView stringByEvaluatingJavaScriptFromString:WebViewJavascriptBridge_js()];
260257
}
261258

262259
if (_startupMessageQueue) {
@@ -340,7 +337,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
340337
_numRequestsLoading--;
341338

342339
if (_numRequestsLoading == 0 && ![[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
343-
[webView stringByEvaluatingJavaScriptFromString:WebViewJavascriptBridge_js];
340+
[webView stringByEvaluatingJavaScriptFromString:WebViewJavascriptBridge_js()];
344341
}
345342

346343
if (_startupMessageQueue) {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#import <Foundation/Foundation.h>
2+
3+
NSString * WebViewJavascriptBridge_js();

WebViewJavascriptBridge/Private/WebViewJavascriptBridge.js.h renamed to WebViewJavascriptBridge/WebViewJavascriptBridge_Private.m

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
#ifdef _______STRINGIFY
2-
#error _______STRINGIFY already defined!
3-
#endif
1+
2+
#import "WebViewJavascriptBridge_Private.h"
3+
4+
NSString * WebViewJavascriptBridge_js() {
5+
// Create a unique preprocessor symbol that last only the duration of this function
6+
#define __func__(x) #x
47

58
// The preprocessor will remove line-endings so you MUST use semi-colons to denote the end of a line.
9+
10+
static NSString * source = @__func__(
611

7-
#define _______STRINGIFY(x) #x
8-
_______STRINGIFY(
912
;(function() {
1013
if (window.WebViewJavascriptBridge) { return; }
1114
var messagingIframe;
@@ -123,5 +126,10 @@ _______STRINGIFY(
123126
readyEvent.bridge = WebViewJavascriptBridge;
124127
doc.dispatchEvent(readyEvent);
125128
})();
126-
)
127-
#undef _______STRINGIFY
129+
130+
);
131+
132+
#undef __func__
133+
134+
return source;
135+
};

0 commit comments

Comments
 (0)