public
Description: OpenLaszlo utilities: flash bridge, ajax, etc.
Clone URL: git://github.com/osteele/lzosutils.git
test case for security; factor out logging
osteele (author)
Sun Apr 13 10:47:09 -0700 2008
commit  8b5a293938564d5c5660c328d60158ac5d313d47
tree    64032a916513358108fdd5e52b8babb0289c0cc5
parent  10ac35ab280530c7652bdbaaaa668da4244aaf20
...
47
48
49
 
 
 
 
50
51
52
...
91
92
93
94
 
 
 
 
95
96
97
...
47
48
49
50
51
52
53
54
55
56
...
95
96
97
 
98
99
100
101
102
103
104
0
@@ -47,6 +47,10 @@ FlashBridge.secure = function() {
0
     };
0
 }
0
 
0
+FlashBridge.allow = function(name) {
0
+ this.registeredCallbacks[name] = true;
0
+}
0
+
0
 FlashBridge.call = function(fname) {
0
     var args = Array.slice(arguments, 1),
0
         callbacks = this.callbacks,
0
@@ -91,7 +95,10 @@ FlashBridge.handleException = function(sequenceNumber, result) {
0
 }
0
 
0
 FlashBridge.handleCall = function(path) {
0
- if (this.secured && !this.secured(path[0])) return;
0
+ if (this.secured && !this.secured(path[0])) {
0
+ console.error('FlashBridge: denied access to ' + path[0]);
0
+ return;
0
+ }
0
     var object = _root;
0
     while (path.length > 1)
0
         object = object[path.shift()];
...
3
4
5
 
6
7
8
...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
46
47
48
...
3
4
5
6
7
8
9
...
22
23
24
 
25
26
27
 
28
29
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
32
33
34
0
@@ -3,6 +3,7 @@
0
     <title>FlashBridge: Test Callbacks</title>
0
     <script type="text/javascript" src="swfobject.js"></script>
0
     <script type="text/javascript" src="../../lib/flashbridge-browser.js"></script>
0
+ <script type="text/javascript" src="log-calls.js"></script>
0
   </head>
0
   <body>
0
     <h2>Calls from the applet into the browser:</h2>
0
@@ -21,28 +22,13 @@
0
       // Set up an object for the applet to call
0
       var gBrowserObject = {
0
         add: function(a, b) {
0
- logCall('gBrowserObject.add', arguments);
0
           return a+b;
0
         },
0
         error: function(msg) {
0
- logCall('gBrowserObject.error', arguments);
0
           throw msg;
0
         }
0
       };
0
- FlashBridge.call('run');
0
-
0
- // Logging, so we can see the output
0
- function log() {
0
- var msg = Array.prototype.join.call(arguments, ' '),
0
- div = document.createElement('div');
0
- div.innerHTML = msg.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quote;');
0
- document.getElementById('output').appendChild(div);
0
- }
0
- function logCall(fname, args) {
0
- var args = Array.prototype.slice.call(args, 0);
0
- args.unshift(fname);
0
- log.apply(null, args);
0
- }
0
+ traceMethods('gBrowserObject');
0
     //]]></script>
0
   </body>
0
 </html>
...
4
5
6
7
8
9
10
11
12
13
14
 
 
 
 
 
 
15
16
...
4
5
6
 
 
 
 
 
 
 
 
7
8
9
10
11
12
13
14
0
@@ -4,13 +4,11 @@
0
   <script>
0
     var gBrowserObject = FlashBridge.createRemoteProxy('gBrowserObject',
0
       ['add', 'error']);
0
- function run() {
0
- gBrowserObject.add(1, 2).onreturn(function(value) {
0
- console.info('1 + 2 -> ' + value);
0
- });
0
- gBrowserObject.error('error msg').onexception(function(value) {
0
- console.info('error !> ' + value);
0
- });
0
- }
0
+ gBrowserObject.add(1, 2).onreturn(function(value) {
0
+ console.info('1 + 2 -> ' + value);
0
+ });
0
+ gBrowserObject.error('error msg').onexception(function(value) {
0
+ console.info('error !> ' + value);
0
+ });
0
   </script>
0
 </canvas>
...
3
4
5
 
6
7
8
...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
...
3
4
5
6
7
8
9
...
32
33
34
 
 
 
 
 
 
 
 
 
 
 
 
 
35
36
37
0
@@ -3,6 +3,7 @@
0
     <title>FlashBridge: Test Proxy Objects</title>
0
     <script type="text/javascript" src="swfobject.js"></script>
0
     <script type="text/javascript" src="../../lib/flashbridge-browser.js"></script>
0
+ <script type="text/javascript" src="log-calls.js"></script>
0
   </head>
0
   <body>
0
     <h2>Calls from the browser into the applet:</h2>
0
@@ -31,19 +32,6 @@
0
       gAppletObject.f(1, 2);
0
       gAppletObject.g(3);
0
       gAppletObject.f(4);
0
-
0
- // Logging, so we can see the output
0
- function log() {
0
- var msg = Array.prototype.join.call(arguments, ' '),
0
- div = document.createElement('div');
0
- div.innerHTML = msg.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quote;');
0
- document.getElementById('output').appendChild(div);
0
- }
0
- function logCall(fname, args) {
0
- var args = Array.prototype.slice.call(args, 0);
0
- args.unshift(fname);
0
- log.apply(null, args);
0
- }
0
     //]]></script>
0
   </body>
0
 </html>
...
3
4
5
 
6
7
8
9
10
11
 
 
 
12
13
14
15
16
17
18
19
20
 
21
22
23
...
31
32
33
34
35
36
37
38
39
40
...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
22
23
24
25
26
27
...
35
36
37
 
 
 
 
38
39
40
0
@@ -3,21 +3,25 @@
0
     <title>FlashBridge: Test Slow Page Load</title>
0
     <script type="text/javascript" src="swfobject.js"></script>
0
     <script type="text/javascript" src="../../lib/flashbridge-browser.js"></script>
0
+ <script type="text/javascript" src="log-calls.js"></script>
0
   </head>
0
   <body>
0
     <h2 id="countdown">Loading Applet</h2>
0
     <div id="applet">
0
       <p>The applet didn't load.</p>
0
     </div>
0
+ <h2>Browser log:</h2>
0
+ <div id="output" style="font-family:monospace">
0
+ </div>
0
     <script type="text/javascript">//<![CDATA[
0
       var swfUrl = "test-slow-page-load.lzx?lzt=swf&lzr=swf8";
0
       swfobject.embedSWF(swfUrl, "applet", '100%', '50%', '8.0.0');
0
       log('swfobject.embedSWF');
0
       
0
       function add(a, b) {
0
- log('add');
0
   return a+b;
0
       }
0
+ traceFunction('add');
0
       
0
       var seconds = 30,
0
           startTime = new Date;
0
@@ -31,10 +35,6 @@
0
         FlashBridge.initialize('applet');
0
         log('FlashBridge.initialize');
0
       }, 1000);
0
-
0
- function log(message) {
0
- console && console.info && console.info(new Date, message);
0
- }
0
     //]]></script>
0
   </body>
0
 </html>

Comments

    No one has commented yet.