OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file |
| 4 |
| 5 #library('JsInterop3Test'); |
| 6 #import('../../lib/unittest/unittest.dart'); |
| 7 #import('../../lib/unittest/html_config.dart'); |
| 8 #import('dart:html'); |
| 9 #import('dart:isolate'); |
| 10 |
| 11 injectSource(code) { |
| 12 final script = new ScriptElement(); |
| 13 script.type = 'text/javascript'; |
| 14 script.innerHTML = code; |
| 15 document.body.nodes.add(script); |
| 16 } |
| 17 |
| 18 var jsToDart = """ |
| 19 var fun1 = window.lookupPort('fun1'); |
| 20 var result = fun1.callSync({'a': 'Hello', 'b': 'World', c: 42}); |
| 21 |
| 22 var fun2 = window.lookupPort('fun2'); |
| 23 fun2.callSync(result); |
| 24 """; |
| 25 |
| 26 main() { |
| 27 useHtmlConfiguration(); |
| 28 |
| 29 test('js-to-dart', () { |
| 30 var done = expectAsync0(() {}); |
| 31 |
| 32 var fun1 = (message) { |
| 33 Expect.equals('Hello', message['a']); |
| 34 Expect.equals('World', message['b']); |
| 35 Expect.equals(42, message['c']); |
| 36 Expect.equals(3, message.getKeys().length); |
| 37 return 42; |
| 38 }; |
| 39 |
| 40 var port1 = new ReceivePortSync(); |
| 41 port1.receive(fun1); |
| 42 window.registerPort('fun1', port1.toSendPort()); |
| 43 |
| 44 var fun2 = (message) { |
| 45 Expect.equals(42, message); |
| 46 |
| 47 // TODO(vsm): Investigate why this needs to be called asynchronously. |
| 48 window.setTimeout(done, 0); |
| 49 }; |
| 50 |
| 51 var port2 = new ReceivePortSync(); |
| 52 port2.receive(fun2); |
| 53 window.registerPort('fun2', port2.toSendPort()); |
| 54 |
| 55 injectSource(jsToDart); |
| 56 }); |
| 57 } |
OLD | NEW |