| 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 |