Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!DOCTYPE html> | |
| 2 <script src="../resources/testharness.js"></script> | |
| 3 <script src="../resources/testharnessreport.js"></script> | |
| 4 <script src="../resources/mojo-helpers.js"></script> | |
| 5 <script> | |
| 6 'use strict'; | |
| 7 | |
| 8 setup({ explicit_done: true }); | |
| 9 | |
| 10 define([ | |
| 11 "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom", | |
| 12 "mojo/public/js/associated_bindings", | |
| 13 "mojo/public/js/bindings", | |
| 14 ], function(testAssociatedInterfaces, associatedBindings, bindings) { | |
| 15 | |
| 16 function SenderImpl(callback) { | |
| 17 this.callback = callback; | |
| 18 } | |
| 19 | |
| 20 SenderImpl.prototype.echo = function(value) { | |
| 21 return Promise.resolve({value: value}); | |
| 22 }; | |
| 23 | |
| 24 SenderImpl.prototype.send = function(value) { | |
| 25 if (this.callback) { | |
| 26 this.callback(value); | |
| 27 } | |
| 28 }; | |
| 29 | |
| 30 var IntegerSenderImpl = SenderImpl; | |
| 31 | |
| 32 function IntegerSenderConnectionImpl() { | |
| 33 this.integerSenderBindings = new associatedBindings.AssociatedBindingSet( | |
| 34 testAssociatedInterfaces.IntegerSender); | |
| 35 } | |
| 36 | |
| 37 IntegerSenderConnectionImpl.prototype.getSender = function( | |
| 38 integerSenderRequest) { | |
| 39 this.integerSenderBindings.addBinding(new IntegerSenderImpl(), | |
| 40 integerSenderRequest); | |
| 41 }; | |
| 42 | |
| 43 promise_test(async () => { | |
| 44 var integerSenderConnection = | |
| 45 new testAssociatedInterfaces.IntegerSenderConnectionPtr(); | |
| 46 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl(); | |
| 47 var integerSenderConnectionBinding = new bindings.Binding( | |
| 48 testAssociatedInterfaces.IntegerSenderConnection, | |
| 49 integerSenderConnectionImpl, | |
| 50 bindings.makeRequest(integerSenderConnection)); | |
| 51 | |
| 52 // AssociatedInterfaceRequest for integerSender. | |
| 53 var integerSenderPtrInfo0 = | |
| 54 new associatedBindings.AssociatedInterfacePtrInfo(); | |
| 55 var integerSenderRequest0 = associatedBindings.makeRequest( | |
| 56 integerSenderPtrInfo0); | |
| 57 var integerSender0 = | |
| 58 new testAssociatedInterfaces.AssociatedIntegerSenderPtr( | |
| 59 integerSenderPtrInfo0); | |
| 60 | |
| 61 var integerSenderPtrInfo1 = | |
| 62 new associatedBindings.AssociatedInterfacePtrInfo(); | |
| 63 var integerSenderRequest1 = associatedBindings.makeRequest( | |
| 64 integerSenderPtrInfo1); | |
| 65 var integerSender1 = | |
| 66 new testAssociatedInterfaces.AssociatedIntegerSenderPtr( | |
| 67 integerSenderPtrInfo1); | |
| 68 | |
| 69 integerSenderConnection.getSender(integerSenderRequest0); | |
| 70 integerSenderConnection.getSender(integerSenderRequest1); | |
| 71 | |
| 72 // Master Binding close triggers connection error handler on | |
| 73 // interface endpoint clients for all associated endpoints. | |
| 74 var connectionErrorHandler0 = new Promise((resolve, reject) => { | |
| 75 integerSender0.ptr.setConnectionErrorHandler(() => { | |
| 76 resolve(); | |
| 77 }); | |
| 78 }); | |
| 79 | |
| 80 var connectionErrorHandler1 = new Promise((resolve, reject) => { | |
| 81 integerSender1.ptr.setConnectionErrorHandler(() => { | |
| 82 resolve(); | |
| 83 }); | |
| 84 }); | |
| 85 | |
| 86 setTimeout(integerSenderConnectionBinding.close.bind( | |
|
yzshen1
2017/04/27 17:28:38
Would you please explain this line?
wangjimmy
2017/04/27 20:26:49
Fixed.
| |
| 87 integerSenderConnection.ptr), 0); | |
| 88 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]); | |
| 89 }, 'all endpoints connectionErrorHandler called on master binding close'); | |
| 90 | |
| 91 promise_test(async () => { | |
| 92 var integerSenderConnection = | |
| 93 new testAssociatedInterfaces.IntegerSenderConnectionPtr(); | |
| 94 var integerSenderConnectionImpl = new IntegerSenderConnectionImpl(); | |
| 95 var integerSenderConnectionBinding = new bindings.Binding( | |
| 96 testAssociatedInterfaces.IntegerSenderConnection, | |
| 97 integerSenderConnectionImpl, | |
| 98 bindings.makeRequest(integerSenderConnection)); | |
| 99 | |
| 100 // AssociatedInterfaceRequest for integerSender. | |
| 101 var integerSenderPtrInfo0 = | |
|
yzshen1
2017/04/27 17:28:38
Please use a for loop to do the work, instead of d
wangjimmy
2017/04/27 20:26:49
Done.
| |
| 102 new associatedBindings.AssociatedInterfacePtrInfo(); | |
| 103 var integerSenderRequest0 = associatedBindings.makeRequest( | |
| 104 integerSenderPtrInfo0); | |
| 105 var integerSender0 = | |
| 106 new testAssociatedInterfaces.AssociatedIntegerSenderPtr( | |
| 107 integerSenderPtrInfo0); | |
| 108 | |
| 109 var integerSenderPtrInfo1 = | |
| 110 new associatedBindings.AssociatedInterfacePtrInfo(); | |
| 111 var integerSenderRequest1 = associatedBindings.makeRequest( | |
| 112 integerSenderPtrInfo1); | |
| 113 var integerSender1 = | |
| 114 new testAssociatedInterfaces.AssociatedIntegerSenderPtr( | |
| 115 integerSenderPtrInfo1); | |
| 116 | |
| 117 var integerSenderPtrInfo2 = | |
| 118 new associatedBindings.AssociatedInterfacePtrInfo(); | |
| 119 var integerSenderRequest2 = associatedBindings.makeRequest( | |
| 120 integerSenderPtrInfo2); | |
| 121 var integerSender2 = | |
| 122 new testAssociatedInterfaces.AssociatedIntegerSenderPtr( | |
| 123 integerSenderPtrInfo2); | |
| 124 | |
| 125 integerSenderConnection.getSender(integerSenderRequest0); | |
| 126 integerSenderConnection.getSender(integerSenderRequest1); | |
| 127 integerSenderConnection.getSender(integerSenderRequest2); | |
| 128 | |
| 129 // Wait for integerSenderConnection getSender message to be received by | |
| 130 // integerSenderConnection's binding side and all integerSender bindings | |
| 131 // to be created. | |
| 132 assert_equals((await integerSender0.echo(3)).value, 3); | |
| 133 assert_equals((await integerSender1.echo(4)).value, 4); | |
| 134 assert_equals((await integerSender2.echo(5)).value, 5); | |
| 135 | |
| 136 await new Promise((resolve, reject) => { | |
| 137 integerSenderConnectionImpl.integerSenderBindings | |
| 138 .setConnectionErrorHandler(() => {resolve();}); | |
| 139 integerSender0.ptr.reset(); | |
| 140 }); | |
| 141 | |
| 142 await new Promise((resolve, reject) => { | |
| 143 integerSenderConnectionImpl.integerSenderBindings | |
| 144 .setConnectionErrorHandler(function({custom_reason, description}) { | |
| 145 assert_equals(custom_reason, 32); | |
| 146 assert_equals(description, 'goodbye'); | |
| 147 resolve(); | |
| 148 }); | |
| 149 integerSender1.ptr.resetWithReason({custom_reason: 32, | |
| 150 description: 'goodbye'}); | |
| 151 }); | |
| 152 | |
| 153 // integerSender2's binding should still exist. | |
| 154 assert_equals((await integerSender2.echo(11)).value, 11); | |
| 155 | |
| 156 integerSenderConnectionImpl.integerSenderBindings.closeAllBindings(); | |
| 157 assert_true(integerSenderConnectionImpl.integerSenderBindings.isEmpty()); | |
| 158 }, 'associated binding set'); | |
| 159 | |
| 160 done(); | |
| 161 }); | |
| 162 | |
| 163 </script> | |
| OLD | NEW |