OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 <script src="../resources/mojo-helpers.js"></script> | 4 <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></scr
ipt> |
| 5 <script src="file:///gen/mojo/public/interfaces/bindings/tests/sample_interfaces
.mojom.js"></script> |
| 6 <script src="file:///gen/mojo/public/interfaces/bindings/tests/sample_service.mo
jom.js"></script> |
5 <script> | 7 <script> |
6 'use strict'; | 8 'use strict'; |
7 | 9 |
8 setup({ explicit_done: true }); | 10 promise_test(async () => { |
| 11 function ServiceImpl() { |
| 12 } |
9 | 13 |
10 define([ | 14 ServiceImpl.prototype.frobinate = function(foo, baz, port) { |
11 'mojo/public/js/bindings', | 15 assert_equals(foo.name, "Example name"); |
12 'mojo/public/js/core', | 16 assert_equals(baz, sample.Service.BazOptions.REGULAR); |
13 'mojo/public/interfaces/bindings/tests/sample_interfaces.mojom', | 17 assert_true(port.ptr.isBound()); |
14 'mojo/public/interfaces/bindings/tests/sample_service.mojom', | 18 port.ptr.reset(); |
15 ], function(bindings, core, sample_interfaces, sample_service) { | |
16 | 19 |
17 promise_test(async () => { | 20 return Promise.resolve({result: 42}); |
18 function ServiceImpl() { | 21 }; |
19 } | |
20 | 22 |
21 ServiceImpl.prototype.frobinate = function(foo, baz, port) { | 23 var service = new sample.ServicePtr(); |
22 assert_equals(foo.name, "Example name"); | 24 var serviceBinding = new mojo.Binding( |
23 assert_equals(baz, sample_service.Service.BazOptions.REGULAR); | 25 sample.Service, new ServiceImpl(), mojo.makeRequest(service)); |
24 assert_true(port.ptr.isBound()); | 26 var sourcePipe = Mojo.createMessagePipe(); |
25 port.ptr.reset(); | 27 var port = new sample.PortPtr(); |
| 28 var portRequest = mojo.makeRequest(port); |
26 | 29 |
27 return Promise.resolve({result: 42}); | 30 var foo = new sample.Foo(); |
28 }; | 31 foo.bar = new sample.Bar(); |
| 32 foo.name = "Example name"; |
| 33 foo.source = sourcePipe.handle0; |
29 | 34 |
30 var service = new sample_service.ServicePtr(); | 35 assert_equals((await service.frobinate( |
31 var serviceBinding = new bindings.Binding(sample_service.Service, | 36 foo, sample.Service.BazOptions.REGULAR, port)).result, 42); |
32 new ServiceImpl(), | |
33 bindings.makeRequest(service)); | |
34 var sourcePipe = core.createMessagePipe(); | |
35 var port = new sample_service.PortPtr(); | |
36 var portRequest = bindings.makeRequest(port); | |
37 | 37 |
38 var foo = new sample_service.Foo(); | 38 service.ptr.reset(); |
39 foo.bar = new sample_service.Bar(); | 39 serviceBinding.close(); |
40 foo.name = "Example name"; | |
41 foo.source = sourcePipe.handle0; | |
42 | 40 |
43 assert_equals((await service.frobinate( | 41 // sourcePipe.handle1 hasn't been closed yet. |
44 foo, sample_service.Service.BazOptions.REGULAR, port)).result, 42); | 42 sourcePipe.handle1.close(); |
45 | 43 |
46 service.ptr.reset(); | 44 // portRequest.handle hasn't been closed yet. |
47 serviceBinding.close(); | 45 portRequest.handle.close(); |
| 46 }, 'client server'); |
48 | 47 |
49 // sourcePipe.handle1 hasn't been closed yet. | 48 promise_test(async () => { |
50 assert_equals(core.close(sourcePipe.handle1), core.RESULT_OK); | 49 var service = new sample.ServicePtr(); |
| 50 // Discard the interface request. |
| 51 var interfaceRequest = mojo.makeRequest(service); |
| 52 interfaceRequest.close(); |
51 | 53 |
52 // portRequest.handle hasn't been closed yet. | 54 try { |
53 assert_equals(core.close(portRequest.handle), core.RESULT_OK); | 55 await service.frobinate(null, sample.Service.BazOptions.REGULAR, null); |
54 }, 'client server'); | 56 assert_unreached(); |
| 57 } catch (e) { |
| 58 assert_not_equals(e, null); |
| 59 } |
| 60 }, 'write to closed pipe'); |
55 | 61 |
56 promise_test(async () => { | 62 promise_test(async () => { |
57 var service = new sample_service.ServicePtr(); | 63 function ProviderImpl() { |
58 // Discard the interface request. | 64 } |
59 var interfaceRequest = bindings.makeRequest(service); | |
60 interfaceRequest.close(); | |
61 | 65 |
62 try { | 66 ProviderImpl.prototype.echoString = function(a) { |
63 await service.frobinate( | 67 return Promise.resolve({a: a}); |
64 null, sample_service.Service.BazOptions.REGULAR, null); | 68 }; |
65 assert_unreached(); | |
66 } catch (e) { | |
67 assert_not_equals(e, null); | |
68 } | |
69 }, 'write to closed pipe'); | |
70 | 69 |
71 promise_test(async () => { | 70 ProviderImpl.prototype.echoStrings = function(a, b) { |
72 function ProviderImpl() { | 71 return Promise.resolve({a: a, b: b}); |
73 } | 72 }; |
74 | 73 |
75 ProviderImpl.prototype.echoString = function(a) { | 74 var provider = new sample.ProviderPtr(); |
76 return Promise.resolve({a: a}); | 75 var providerBinding = new mojo.Binding( |
77 }; | 76 sample.Provider, new ProviderImpl(), mojo.makeRequest(provider)); |
| 77 assert_equals((await provider.echoString("hello")).a, "hello"); |
| 78 var response = await provider.echoStrings("hello", "world"); |
| 79 assert_equals(response.a, "hello"); |
| 80 assert_equals(response.b, "world"); |
| 81 }, 'request response'); |
78 | 82 |
79 ProviderImpl.prototype.echoStrings = function(a, b) { | |
80 return Promise.resolve({a: a, b: b}); | |
81 }; | |
82 | |
83 var provider = new sample_interfaces.ProviderPtr(); | |
84 var providerBinding = new bindings.Binding(sample_interfaces.Provider, | |
85 new ProviderImpl(), | |
86 bindings.makeRequest(provider)); | |
87 assert_equals((await provider.echoString("hello")).a, "hello"); | |
88 var response = await provider.echoStrings("hello", "world"); | |
89 assert_equals(response.a, "hello"); | |
90 assert_equals(response.b, "world"); | |
91 }, 'request response'); | |
92 | |
93 done(); | |
94 }); | |
95 </script> | 83 </script> |
OLD | NEW |