OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 2 <!-- Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
3 -- for details. All rights reserved. Use of this source code is governed by a | 3 -- for details. All rights reserved. Use of this source code is governed by a |
4 -- BSD-style license that can be found in the LICENSE file. | 4 -- BSD-style license that can be found in the LICENSE file. |
5 --> | 5 --> |
6 <html lang="en"> | 6 <html lang="en"> |
7 <head> | 7 <head> |
8 <title>incremental_compilation_update_test.html</title> | 8 <title>incremental_compilation_update_test.html</title> |
9 <meta charset="UTF-8"> | 9 <meta charset="UTF-8"> |
10 </head> | 10 </head> |
11 <body> | 11 <body> |
12 <h1>incremental_compilation_update_test.html</h1> | 12 <h1>incremental_compilation_update_test.html</h1> |
13 <pre id="console"></pre> | 13 <pre id="console"></pre> |
14 <script type="application/javascript" src="print.js"></script> | 14 <script type="application/javascript" src="print.js"></script> |
15 <script type="application/javascript"> | 15 <script type="application/javascript"> |
16 /// Invoked by JavaScript code generated by dart2js when the program is ready | 16 (function() { |
17 /// to invoke main. | 17 var dartMainClosure; |
18 function dartMainRunner(main) { | |
19 // Invoke the "main" method of the Dart program. | |
20 main(); | |
21 | 18 |
22 // Let the sandbox embedder know that main is done running. | 19 /// Invoked by JavaScript code generated by dart2js when the program is ready |
23 window.parent.postMessage('iframe-dart-main-done', '*'); | 20 /// to invoke main. |
24 } | 21 self.dartMainRunner = function dartMainRunner(main) { |
25 (function() { | 22 dartMainClosure = main; |
| 23 |
| 24 // Invoke the "main" method of the Dart program. |
| 25 main(); |
| 26 |
| 27 // Let the sandbox embedder know that main is done running. |
| 28 window.parent.postMessage('iframe-dart-main-done', '*'); |
| 29 } |
26 | 30 |
27 /// Invoked when a 'message' event is received. Message events are generated | 31 /// Invoked when a 'message' event is received. Message events are generated |
28 /// with Window.postMessage and used to communicate between this iframe and | 32 /// with Window.postMessage and used to communicate between this iframe and |
29 /// its embedding parent page. | 33 /// its embedding parent page. |
30 function onMessage(e) { | 34 function onMessage(e) { |
31 if (e.data[0] === 'add-script') { | 35 if (e.data[0] === 'add-script') { |
32 // Received a message on the form ['add-script', uri]. | 36 // Received a message on the form ['add-script', uri]. |
33 // Install a new script tag with the uri. | 37 // Install a new script tag with the uri. |
34 var script = document.createElement('script'); | 38 var script = document.createElement('script'); |
35 script.src = e.data[1]; | 39 script.src = e.data[1]; |
36 script.type = 'application/javascript'; | 40 script.type = 'application/javascript'; |
37 document.body.appendChild(script); | 41 document.body.appendChild(script); |
| 42 } else if (e.data[0] === 'apply-update') { |
| 43 self.$dart_unsafe_eval.patch(e.data[1]); |
| 44 |
| 45 dartMainClosure(); |
| 46 |
| 47 // Let the sandbox embedder know that main is done running. |
| 48 window.parent.postMessage('iframe-dart-updated-main-done', '*'); |
38 } else { | 49 } else { |
39 // Other messages are just logged. | 50 // Other messages are just logged. |
40 console.log(e); | 51 console.log(e); |
41 } | 52 } |
42 } | 53 } |
43 window.addEventListener('message', onMessage, false); | 54 window.addEventListener('message', onMessage, false); |
44 | 55 |
45 // Let the sandbox embedder know that this iframe is ready, that is, | 56 // Let the sandbox embedder know that this iframe is ready, that is, |
46 // listening for messages. | 57 // listening for messages. |
47 window.parent.postMessage('iframe-ready', '*'); | 58 window.parent.postMessage('iframe-ready', '*'); |
48 | 59 |
49 })(); | 60 })(); |
50 </script> | 61 </script> |
51 </body> | 62 </body> |
52 </html> | 63 </html> |
OLD | NEW |