| 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 '../../pkg/unittest/lib/unittest.dart'; | |
| 7 import '../../pkg/unittest/lib/html_config.dart'; | |
| 8 import 'dart:async'; | |
| 9 import 'dart:html'; | |
| 10 import 'dart:isolate'; | |
| 11 | |
| 12 injectSource(code) { | |
| 13 final script = new ScriptElement(); | |
| 14 script.type = 'text/javascript'; | |
| 15 script.innerHtml = code; | |
| 16 document.body.append(script); | |
| 17 } | |
| 18 | |
| 19 var jsToDart = """ | |
| 20 var fun1 = window.lookupPort('fun1'); | |
| 21 var result = fun1.callSync({'a': 'Hello', 'b': 'World', c: 42}); | |
| 22 | |
| 23 var fun2 = window.lookupPort('fun2'); | |
| 24 fun2.callSync(result); | |
| 25 """; | |
| 26 | |
| 27 main() { | |
| 28 useHtmlConfiguration(); | |
| 29 | |
| 30 test('js-to-dart', () { | |
| 31 var fun1 = (message) { | |
| 32 expect(message['a'], 'Hello'); | |
| 33 expect(message['b'], 'World'); | |
| 34 expect(message['c'], 42); | |
| 35 expect(message.keys.length, 3); | |
| 36 return 42; | |
| 37 }; | |
| 38 | |
| 39 var port1 = new ReceivePortSync(); | |
| 40 port1.receive(fun1); | |
| 41 window.registerPort('fun1', port1.toSendPort()); | |
| 42 | |
| 43 // TODO(vsm): Investigate why this needs to be called asynchronously. | |
| 44 var done = expectAsync0(() {}); | |
| 45 var fun2 = (message) { | |
| 46 expect(message, 42); | |
| 47 Timer.run(done); | |
| 48 }; | |
| 49 | |
| 50 var port2 = new ReceivePortSync(); | |
| 51 port2.receive(fun2); | |
| 52 window.registerPort('fun2', port2.toSendPort()); | |
| 53 | |
| 54 injectSource(jsToDart); | |
| 55 }); | |
| 56 } | |
| OLD | NEW |